@tscircuit/props 0.0.248 → 0.0.249
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 +42 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/lib/components/group.ts +15 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2897,6 +2897,7 @@ interface AutorouterConfig {
|
|
|
2897
2897
|
groupMode?: "sequential-trace" | "subcircuit";
|
|
2898
2898
|
local?: boolean;
|
|
2899
2899
|
algorithmFn?: (simpleRouteJson: any) => Promise<any>;
|
|
2900
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud";
|
|
2900
2901
|
}
|
|
2901
2902
|
type AutorouterProp = AutorouterConfig | "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud";
|
|
2902
2903
|
declare const autorouterConfig: z.ZodObject<{
|
|
@@ -2908,6 +2909,7 @@ declare const autorouterConfig: z.ZodObject<{
|
|
|
2908
2909
|
traceClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
2909
2910
|
groupMode: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit"]>>;
|
|
2910
2911
|
algorithmFn: z.ZodOptional<z.ZodType<(simpleRouteJson: any) => Promise<any>, z.ZodTypeDef, (simpleRouteJson: any) => Promise<any>>>;
|
|
2912
|
+
preset: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit", "auto", "auto-local", "auto-cloud"]>>;
|
|
2911
2913
|
local: z.ZodOptional<z.ZodBoolean>;
|
|
2912
2914
|
}, "strip", z.ZodTypeAny, {
|
|
2913
2915
|
serverUrl?: string | undefined;
|
|
@@ -2918,6 +2920,7 @@ declare const autorouterConfig: z.ZodObject<{
|
|
|
2918
2920
|
traceClearance?: number | undefined;
|
|
2919
2921
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
2920
2922
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
2923
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
2921
2924
|
local?: boolean | undefined;
|
|
2922
2925
|
}, {
|
|
2923
2926
|
serverUrl?: string | undefined;
|
|
@@ -2928,6 +2931,7 @@ declare const autorouterConfig: z.ZodObject<{
|
|
|
2928
2931
|
traceClearance?: string | number | undefined;
|
|
2929
2932
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
2930
2933
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
2934
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
2931
2935
|
local?: boolean | undefined;
|
|
2932
2936
|
}>;
|
|
2933
2937
|
declare const autorouterProp: z.ZodUnion<[z.ZodObject<{
|
|
@@ -2939,6 +2943,7 @@ declare const autorouterProp: z.ZodUnion<[z.ZodObject<{
|
|
|
2939
2943
|
traceClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
2940
2944
|
groupMode: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit"]>>;
|
|
2941
2945
|
algorithmFn: z.ZodOptional<z.ZodType<(simpleRouteJson: any) => Promise<any>, z.ZodTypeDef, (simpleRouteJson: any) => Promise<any>>>;
|
|
2946
|
+
preset: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit", "auto", "auto-local", "auto-cloud"]>>;
|
|
2942
2947
|
local: z.ZodOptional<z.ZodBoolean>;
|
|
2943
2948
|
}, "strip", z.ZodTypeAny, {
|
|
2944
2949
|
serverUrl?: string | undefined;
|
|
@@ -2949,6 +2954,7 @@ declare const autorouterProp: z.ZodUnion<[z.ZodObject<{
|
|
|
2949
2954
|
traceClearance?: number | undefined;
|
|
2950
2955
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
2951
2956
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
2957
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
2952
2958
|
local?: boolean | undefined;
|
|
2953
2959
|
}, {
|
|
2954
2960
|
serverUrl?: string | undefined;
|
|
@@ -2959,6 +2965,7 @@ declare const autorouterProp: z.ZodUnion<[z.ZodObject<{
|
|
|
2959
2965
|
traceClearance?: string | number | undefined;
|
|
2960
2966
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
2961
2967
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
2968
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
2962
2969
|
local?: boolean | undefined;
|
|
2963
2970
|
}>, z.ZodLiteral<"sequential-trace">, z.ZodLiteral<"subcircuit">, z.ZodLiteral<"auto">, z.ZodLiteral<"auto-local">, z.ZodLiteral<"auto-cloud">]>;
|
|
2964
2971
|
interface SubcircuitGroupProps extends BaseGroupProps {
|
|
@@ -3918,6 +3925,7 @@ declare const subcircuitGroupProps: z.ZodObject<z.objectUtil.extendShape<z.objec
|
|
|
3918
3925
|
traceClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
3919
3926
|
groupMode: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit"]>>;
|
|
3920
3927
|
algorithmFn: z.ZodOptional<z.ZodType<(simpleRouteJson: any) => Promise<any>, z.ZodTypeDef, (simpleRouteJson: any) => Promise<any>>>;
|
|
3928
|
+
preset: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit", "auto", "auto-local", "auto-cloud"]>>;
|
|
3921
3929
|
local: z.ZodOptional<z.ZodBoolean>;
|
|
3922
3930
|
}, "strip", z.ZodTypeAny, {
|
|
3923
3931
|
serverUrl?: string | undefined;
|
|
@@ -3928,6 +3936,7 @@ declare const subcircuitGroupProps: z.ZodObject<z.objectUtil.extendShape<z.objec
|
|
|
3928
3936
|
traceClearance?: number | undefined;
|
|
3929
3937
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
3930
3938
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
3939
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
3931
3940
|
local?: boolean | undefined;
|
|
3932
3941
|
}, {
|
|
3933
3942
|
serverUrl?: string | undefined;
|
|
@@ -3938,6 +3947,7 @@ declare const subcircuitGroupProps: z.ZodObject<z.objectUtil.extendShape<z.objec
|
|
|
3938
3947
|
traceClearance?: string | number | undefined;
|
|
3939
3948
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
3940
3949
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
3950
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
3941
3951
|
local?: boolean | undefined;
|
|
3942
3952
|
}>, z.ZodLiteral<"sequential-trace">, z.ZodLiteral<"subcircuit">, z.ZodLiteral<"auto">, z.ZodLiteral<"auto-local">, z.ZodLiteral<"auto-cloud">]>>;
|
|
3943
3953
|
}>, "strip", z.ZodTypeAny, {
|
|
@@ -4099,6 +4109,7 @@ declare const subcircuitGroupProps: z.ZodObject<z.objectUtil.extendShape<z.objec
|
|
|
4099
4109
|
traceClearance?: number | undefined;
|
|
4100
4110
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
4101
4111
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
4112
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
4102
4113
|
local?: boolean | undefined;
|
|
4103
4114
|
} | undefined;
|
|
4104
4115
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -4267,6 +4278,7 @@ declare const subcircuitGroupProps: z.ZodObject<z.objectUtil.extendShape<z.objec
|
|
|
4267
4278
|
traceClearance?: string | number | undefined;
|
|
4268
4279
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
4269
4280
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
4281
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
4270
4282
|
local?: boolean | undefined;
|
|
4271
4283
|
} | undefined;
|
|
4272
4284
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -4711,6 +4723,7 @@ declare const subcircuitGroupPropsWithBool: z.ZodObject<z.objectUtil.extendShape
|
|
|
4711
4723
|
traceClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
4712
4724
|
groupMode: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit"]>>;
|
|
4713
4725
|
algorithmFn: z.ZodOptional<z.ZodType<(simpleRouteJson: any) => Promise<any>, z.ZodTypeDef, (simpleRouteJson: any) => Promise<any>>>;
|
|
4726
|
+
preset: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit", "auto", "auto-local", "auto-cloud"]>>;
|
|
4714
4727
|
local: z.ZodOptional<z.ZodBoolean>;
|
|
4715
4728
|
}, "strip", z.ZodTypeAny, {
|
|
4716
4729
|
serverUrl?: string | undefined;
|
|
@@ -4721,6 +4734,7 @@ declare const subcircuitGroupPropsWithBool: z.ZodObject<z.objectUtil.extendShape
|
|
|
4721
4734
|
traceClearance?: number | undefined;
|
|
4722
4735
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
4723
4736
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
4737
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
4724
4738
|
local?: boolean | undefined;
|
|
4725
4739
|
}, {
|
|
4726
4740
|
serverUrl?: string | undefined;
|
|
@@ -4731,6 +4745,7 @@ declare const subcircuitGroupPropsWithBool: z.ZodObject<z.objectUtil.extendShape
|
|
|
4731
4745
|
traceClearance?: string | number | undefined;
|
|
4732
4746
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
4733
4747
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
4748
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
4734
4749
|
local?: boolean | undefined;
|
|
4735
4750
|
}>, z.ZodLiteral<"sequential-trace">, z.ZodLiteral<"subcircuit">, z.ZodLiteral<"auto">, z.ZodLiteral<"auto-local">, z.ZodLiteral<"auto-cloud">]>>;
|
|
4736
4751
|
}>, {
|
|
@@ -4895,6 +4910,7 @@ declare const subcircuitGroupPropsWithBool: z.ZodObject<z.objectUtil.extendShape
|
|
|
4895
4910
|
traceClearance?: number | undefined;
|
|
4896
4911
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
4897
4912
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
4913
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
4898
4914
|
local?: boolean | undefined;
|
|
4899
4915
|
} | undefined;
|
|
4900
4916
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -5064,6 +5080,7 @@ declare const subcircuitGroupPropsWithBool: z.ZodObject<z.objectUtil.extendShape
|
|
|
5064
5080
|
traceClearance?: string | number | undefined;
|
|
5065
5081
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
5066
5082
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
5083
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
5067
5084
|
local?: boolean | undefined;
|
|
5068
5085
|
} | undefined;
|
|
5069
5086
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -6002,6 +6019,7 @@ declare const groupProps: z.ZodDiscriminatedUnion<"subcircuit", [z.ZodObject<z.o
|
|
|
6002
6019
|
traceClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
6003
6020
|
groupMode: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit"]>>;
|
|
6004
6021
|
algorithmFn: z.ZodOptional<z.ZodType<(simpleRouteJson: any) => Promise<any>, z.ZodTypeDef, (simpleRouteJson: any) => Promise<any>>>;
|
|
6022
|
+
preset: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit", "auto", "auto-local", "auto-cloud"]>>;
|
|
6005
6023
|
local: z.ZodOptional<z.ZodBoolean>;
|
|
6006
6024
|
}, "strip", z.ZodTypeAny, {
|
|
6007
6025
|
serverUrl?: string | undefined;
|
|
@@ -6012,6 +6030,7 @@ declare const groupProps: z.ZodDiscriminatedUnion<"subcircuit", [z.ZodObject<z.o
|
|
|
6012
6030
|
traceClearance?: number | undefined;
|
|
6013
6031
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
6014
6032
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
6033
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
6015
6034
|
local?: boolean | undefined;
|
|
6016
6035
|
}, {
|
|
6017
6036
|
serverUrl?: string | undefined;
|
|
@@ -6022,6 +6041,7 @@ declare const groupProps: z.ZodDiscriminatedUnion<"subcircuit", [z.ZodObject<z.o
|
|
|
6022
6041
|
traceClearance?: string | number | undefined;
|
|
6023
6042
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
6024
6043
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
6044
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
6025
6045
|
local?: boolean | undefined;
|
|
6026
6046
|
}>, z.ZodLiteral<"sequential-trace">, z.ZodLiteral<"subcircuit">, z.ZodLiteral<"auto">, z.ZodLiteral<"auto-local">, z.ZodLiteral<"auto-cloud">]>>;
|
|
6027
6047
|
}>, {
|
|
@@ -6186,6 +6206,7 @@ declare const groupProps: z.ZodDiscriminatedUnion<"subcircuit", [z.ZodObject<z.o
|
|
|
6186
6206
|
traceClearance?: number | undefined;
|
|
6187
6207
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
6188
6208
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
6209
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
6189
6210
|
local?: boolean | undefined;
|
|
6190
6211
|
} | undefined;
|
|
6191
6212
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -6355,6 +6376,7 @@ declare const groupProps: z.ZodDiscriminatedUnion<"subcircuit", [z.ZodObject<z.o
|
|
|
6355
6376
|
traceClearance?: string | number | undefined;
|
|
6356
6377
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
6357
6378
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
6379
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
6358
6380
|
local?: boolean | undefined;
|
|
6359
6381
|
} | undefined;
|
|
6360
6382
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -6813,6 +6835,7 @@ declare const boardProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.exte
|
|
|
6813
6835
|
traceClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
6814
6836
|
groupMode: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit"]>>;
|
|
6815
6837
|
algorithmFn: z.ZodOptional<z.ZodType<(simpleRouteJson: any) => Promise<any>, z.ZodTypeDef, (simpleRouteJson: any) => Promise<any>>>;
|
|
6838
|
+
preset: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit", "auto", "auto-local", "auto-cloud"]>>;
|
|
6816
6839
|
local: z.ZodOptional<z.ZodBoolean>;
|
|
6817
6840
|
}, "strip", z.ZodTypeAny, {
|
|
6818
6841
|
serverUrl?: string | undefined;
|
|
@@ -6823,6 +6846,7 @@ declare const boardProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.exte
|
|
|
6823
6846
|
traceClearance?: number | undefined;
|
|
6824
6847
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
6825
6848
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
6849
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
6826
6850
|
local?: boolean | undefined;
|
|
6827
6851
|
}, {
|
|
6828
6852
|
serverUrl?: string | undefined;
|
|
@@ -6833,6 +6857,7 @@ declare const boardProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.exte
|
|
|
6833
6857
|
traceClearance?: string | number | undefined;
|
|
6834
6858
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
6835
6859
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
6860
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
6836
6861
|
local?: boolean | undefined;
|
|
6837
6862
|
}>, z.ZodLiteral<"sequential-trace">, z.ZodLiteral<"subcircuit">, z.ZodLiteral<"auto">, z.ZodLiteral<"auto-local">, z.ZodLiteral<"auto-cloud">]>>;
|
|
6838
6863
|
}>, {
|
|
@@ -7011,6 +7036,7 @@ declare const boardProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.exte
|
|
|
7011
7036
|
traceClearance?: number | undefined;
|
|
7012
7037
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
7013
7038
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
7039
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
7014
7040
|
local?: boolean | undefined;
|
|
7015
7041
|
} | undefined;
|
|
7016
7042
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -7185,6 +7211,7 @@ declare const boardProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.exte
|
|
|
7185
7211
|
traceClearance?: string | number | undefined;
|
|
7186
7212
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
7187
7213
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
7214
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
7188
7215
|
local?: boolean | undefined;
|
|
7189
7216
|
} | undefined;
|
|
7190
7217
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -7644,6 +7671,7 @@ declare const breakoutProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.e
|
|
|
7644
7671
|
traceClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
7645
7672
|
groupMode: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit"]>>;
|
|
7646
7673
|
algorithmFn: z.ZodOptional<z.ZodType<(simpleRouteJson: any) => Promise<any>, z.ZodTypeDef, (simpleRouteJson: any) => Promise<any>>>;
|
|
7674
|
+
preset: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit", "auto", "auto-local", "auto-cloud"]>>;
|
|
7647
7675
|
local: z.ZodOptional<z.ZodBoolean>;
|
|
7648
7676
|
}, "strip", z.ZodTypeAny, {
|
|
7649
7677
|
serverUrl?: string | undefined;
|
|
@@ -7654,6 +7682,7 @@ declare const breakoutProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.e
|
|
|
7654
7682
|
traceClearance?: number | undefined;
|
|
7655
7683
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
7656
7684
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
7685
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
7657
7686
|
local?: boolean | undefined;
|
|
7658
7687
|
}, {
|
|
7659
7688
|
serverUrl?: string | undefined;
|
|
@@ -7664,6 +7693,7 @@ declare const breakoutProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.e
|
|
|
7664
7693
|
traceClearance?: string | number | undefined;
|
|
7665
7694
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
7666
7695
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
7696
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
7667
7697
|
local?: boolean | undefined;
|
|
7668
7698
|
}>, z.ZodLiteral<"sequential-trace">, z.ZodLiteral<"subcircuit">, z.ZodLiteral<"auto">, z.ZodLiteral<"auto-local">, z.ZodLiteral<"auto-cloud">]>>;
|
|
7669
7699
|
}>, {
|
|
@@ -7831,6 +7861,7 @@ declare const breakoutProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.e
|
|
|
7831
7861
|
traceClearance?: number | undefined;
|
|
7832
7862
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
7833
7863
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
7864
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
7834
7865
|
local?: boolean | undefined;
|
|
7835
7866
|
} | undefined;
|
|
7836
7867
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -7999,6 +8030,7 @@ declare const breakoutProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.e
|
|
|
7999
8030
|
traceClearance?: string | number | undefined;
|
|
8000
8031
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
8001
8032
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
8033
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
8002
8034
|
local?: boolean | undefined;
|
|
8003
8035
|
} | undefined;
|
|
8004
8036
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -14685,6 +14717,7 @@ declare const stampboardProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil
|
|
|
14685
14717
|
traceClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
14686
14718
|
groupMode: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit"]>>;
|
|
14687
14719
|
algorithmFn: z.ZodOptional<z.ZodType<(simpleRouteJson: any) => Promise<any>, z.ZodTypeDef, (simpleRouteJson: any) => Promise<any>>>;
|
|
14720
|
+
preset: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit", "auto", "auto-local", "auto-cloud"]>>;
|
|
14688
14721
|
local: z.ZodOptional<z.ZodBoolean>;
|
|
14689
14722
|
}, "strip", z.ZodTypeAny, {
|
|
14690
14723
|
serverUrl?: string | undefined;
|
|
@@ -14695,6 +14728,7 @@ declare const stampboardProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil
|
|
|
14695
14728
|
traceClearance?: number | undefined;
|
|
14696
14729
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
14697
14730
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
14731
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
14698
14732
|
local?: boolean | undefined;
|
|
14699
14733
|
}, {
|
|
14700
14734
|
serverUrl?: string | undefined;
|
|
@@ -14705,6 +14739,7 @@ declare const stampboardProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil
|
|
|
14705
14739
|
traceClearance?: string | number | undefined;
|
|
14706
14740
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
14707
14741
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
14742
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
14708
14743
|
local?: boolean | undefined;
|
|
14709
14744
|
}>, z.ZodLiteral<"sequential-trace">, z.ZodLiteral<"subcircuit">, z.ZodLiteral<"auto">, z.ZodLiteral<"auto-local">, z.ZodLiteral<"auto-cloud">]>>;
|
|
14710
14745
|
}>, {
|
|
@@ -14898,6 +14933,7 @@ declare const stampboardProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil
|
|
|
14898
14933
|
traceClearance?: number | undefined;
|
|
14899
14934
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
14900
14935
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
14936
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
14901
14937
|
local?: boolean | undefined;
|
|
14902
14938
|
} | undefined;
|
|
14903
14939
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -15082,6 +15118,7 @@ declare const stampboardProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil
|
|
|
15082
15118
|
traceClearance?: string | number | undefined;
|
|
15083
15119
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
15084
15120
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
15121
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
15085
15122
|
local?: boolean | undefined;
|
|
15086
15123
|
} | undefined;
|
|
15087
15124
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -19343,6 +19380,7 @@ declare const subcircuitProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil
|
|
|
19343
19380
|
traceClearance: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
19344
19381
|
groupMode: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit"]>>;
|
|
19345
19382
|
algorithmFn: z.ZodOptional<z.ZodType<(simpleRouteJson: any) => Promise<any>, z.ZodTypeDef, (simpleRouteJson: any) => Promise<any>>>;
|
|
19383
|
+
preset: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit", "auto", "auto-local", "auto-cloud"]>>;
|
|
19346
19384
|
local: z.ZodOptional<z.ZodBoolean>;
|
|
19347
19385
|
}, "strip", z.ZodTypeAny, {
|
|
19348
19386
|
serverUrl?: string | undefined;
|
|
@@ -19353,6 +19391,7 @@ declare const subcircuitProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil
|
|
|
19353
19391
|
traceClearance?: number | undefined;
|
|
19354
19392
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
19355
19393
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
19394
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
19356
19395
|
local?: boolean | undefined;
|
|
19357
19396
|
}, {
|
|
19358
19397
|
serverUrl?: string | undefined;
|
|
@@ -19363,6 +19402,7 @@ declare const subcircuitProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil
|
|
|
19363
19402
|
traceClearance?: string | number | undefined;
|
|
19364
19403
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
19365
19404
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
19405
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
19366
19406
|
local?: boolean | undefined;
|
|
19367
19407
|
}>, z.ZodLiteral<"sequential-trace">, z.ZodLiteral<"subcircuit">, z.ZodLiteral<"auto">, z.ZodLiteral<"auto-local">, z.ZodLiteral<"auto-cloud">]>>;
|
|
19368
19408
|
}>, "strip", z.ZodTypeAny, {
|
|
@@ -19524,6 +19564,7 @@ declare const subcircuitProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil
|
|
|
19524
19564
|
traceClearance?: number | undefined;
|
|
19525
19565
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
19526
19566
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
19567
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
19527
19568
|
local?: boolean | undefined;
|
|
19528
19569
|
} | undefined;
|
|
19529
19570
|
schAutoLayoutEnabled?: boolean | undefined;
|
|
@@ -19692,6 +19733,7 @@ declare const subcircuitProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil
|
|
|
19692
19733
|
traceClearance?: string | number | undefined;
|
|
19693
19734
|
groupMode?: "sequential-trace" | "subcircuit" | undefined;
|
|
19694
19735
|
algorithmFn?: ((simpleRouteJson: any) => Promise<any>) | undefined;
|
|
19736
|
+
preset?: "sequential-trace" | "subcircuit" | "auto" | "auto-local" | "auto-cloud" | undefined;
|
|
19695
19737
|
local?: boolean | undefined;
|
|
19696
19738
|
} | undefined;
|
|
19697
19739
|
schAutoLayoutEnabled?: boolean | undefined;
|
package/dist/index.js
CHANGED
|
@@ -375,6 +375,13 @@ var autorouterConfig = z22.object({
|
|
|
375
375
|
algorithmFn: z22.custom(
|
|
376
376
|
(v) => typeof v === "function" || v === void 0
|
|
377
377
|
).optional(),
|
|
378
|
+
preset: z22.enum([
|
|
379
|
+
"sequential-trace",
|
|
380
|
+
"subcircuit",
|
|
381
|
+
"auto",
|
|
382
|
+
"auto-local",
|
|
383
|
+
"auto-cloud"
|
|
384
|
+
]).optional(),
|
|
378
385
|
local: z22.boolean().optional()
|
|
379
386
|
});
|
|
380
387
|
var autorouterProp = z22.union([
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/typecheck.ts","../lib/common/direction.ts","../lib/common/portHints.ts","../lib/common/layout.ts","../lib/common/cadModel.ts","../lib/common/point3.ts","../lib/common/footprintProp.ts","../lib/common/schematicOrientation.ts","../lib/common/schematicPinDefinitions.ts","../lib/common/schematicPinStyle.ts","../lib/components/board.ts","../lib/common/point.ts","../lib/components/group.ts","../lib/manual-edits/manual-edit-events/base_manual_edit_event.ts","../lib/manual-edits/manual-edit-events/edit_pcb_component_location_event.ts","../lib/manual-edits/manual-edit-events/edit_trace_hint_event.ts","../lib/manual-edits/manual-edit-events/edit_schematic_component_location_event.ts","../lib/manual-edits/manual-edit-events/edit_pcb_group_location_event.ts","../lib/manual-edits/manual-edit-events/edit_schematic_group_location_event.ts","../lib/manual-edits/manual_edit_event.ts","../lib/manual-edits/manual_edits_file.ts","../lib/manual-edits/manual_pcb_placement.ts","../lib/manual-edits/manual_trace_hint.ts","../lib/manual-edits/manual_schematic_placement.ts","../lib/components/breakout.ts","../lib/components/chip.ts","../lib/components/jumper.ts","../lib/common/connectionsProp.ts","../lib/components/solderjumper.ts","../lib/components/connector.ts","../lib/components/fuse.ts","../lib/components/platedhole.ts","../lib/components/resistor.ts","../lib/components/potentiometer.ts","../lib/components/crystal.ts","../lib/components/resonator.ts","../lib/components/stampboard.ts","../lib/components/capacitor.ts","../lib/components/net.ts","../lib/components/constrainedlayout.ts","../lib/common/distance.ts","../lib/components/constraint.ts","../lib/components/cutout.ts","../lib/components/smtpad.ts","../lib/components/solderpaste.ts","../lib/components/hole.ts","../lib/components/trace.ts","../lib/components/footprint.ts","../lib/components/battery.ts","../lib/components/pin-header.ts","../lib/components/netalias.ts","../lib/components/netlabel.ts","../lib/components/push-button.ts","../lib/components/subcircuit.ts","../lib/components/transistor.ts","../lib/components/mosfet.ts","../lib/components/inductor.ts","../lib/components/diode.ts","../lib/components/led.ts","../lib/components/switch.ts","../lib/components/fabrication-note-text.ts","../lib/components/fabrication-note-path.ts","../lib/components/pcb-trace.ts","../lib/components/via.ts","../lib/components/testpoint.ts","../lib/components/breakoutpoint.ts","../lib/components/pcb-keepout.ts","../lib/components/power-source.ts","../lib/components/schematic-box.ts","../lib/common/ninePointAnchor.ts","../lib/components/schematic-line.ts","../lib/components/schematic-text.ts","../lib/common/fivePointAnchor.ts","../lib/components/schematic-path.ts","../lib/components/silkscreen-text.ts","../lib/components/silkscreen-path.ts","../lib/components/silkscreen-line.ts","../lib/components/silkscreen-rect.ts","../lib/components/silkscreen-circle.ts","../lib/components/trace-hint.ts","../lib/components/port.ts","../lib/platformConfig.ts"],"sourcesContent":["import type { TypeEqual } from \"ts-expect\"\n\ntype IsNever<T> = [T] extends [never] ? true : false\n\ntype GetMismatchedProps<T1, T2> = {\n [K in keyof T1 & keyof T2]: T1[K] extends T2[K]\n ? T2[K] extends T1[K]\n ? never\n : K\n : K\n}[keyof T1 & keyof T2]\n\nexport const expectTypesMatch = <\n const T1,\n const T2,\n T3 = Exclude<keyof T1, keyof T2>,\n T4 = Exclude<keyof T2, keyof T1>,\n T5 = GetMismatchedProps<T1, T2>,\n>(\n shouldBe: IsNever<T3> extends true\n ? IsNever<T4> extends true\n ? IsNever<T5> extends true\n ? TypeEqual<T1, T2>\n : `property ${T5 extends string ? T5 : \"\"} has mismatched types`\n : `extra props ${T4 extends string ? T4 : \"\"}`\n : `missing props ${T3 extends string ? T3 : \"\"}`,\n): void => {}\n\n// ------ TESTS -------\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n b: number\n }\n>(\"extra props b\")\n\nexpectTypesMatch<\n {\n a: number\n b: number\n },\n {\n a: number\n }\n>(\"missing props b\")\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n }\n>(true)\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: string\n }\n>(\"property a has mismatched types\")\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 {\n type LayerRefInput,\n distance,\n layer_ref,\n rotation,\n supplier_name,\n} from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { type CadModelProp, cadModelProp } from \"./cadModel\"\nimport { type FootprintProp, footprintProp } from \"./footprintProp\"\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?: FootprintProp\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 type SupplierPartNumbers = { [k in SupplierName]?: string[] }\nexport interface SupplierProps {\n supplierPartNumbers?: SupplierPartNumbers\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<PinLabel extends string = string>\n extends CommonLayoutProps {\n key?: any\n name: string\n pinAttributes?: Record<PinLabel, Record<string, any>>\n supplierPartNumbers?: SupplierPartNumbers\n cadModel?: CadModelProp\n children?: any\n symbolName?: string\n doNotPlace?: boolean\n}\n\nexport const commonComponentProps = commonLayoutProps\n .merge(supplierProps)\n .extend({\n key: z.any().optional(),\n name: z.string(),\n cadModel: cadModelProp.optional(),\n children: z.any().optional(),\n symbolName: z.string().optional(),\n doNotPlace: z.boolean().optional(),\n pinAttributes: z\n .record(z.string(), z.record(z.string(), z.any()))\n .optional(),\n })\n\ntype InferredCommonComponentProps = z.input<typeof commonComponentProps>\nexpectTypesMatch<CommonComponentProps, InferredCommonComponentProps>(true)\n\nexport const componentProps = commonComponentProps\nexport type ComponentProps = z.input<typeof componentProps>\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 { 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 =\n | null\n | string\n | CadModelStl\n | CadModelObj\n | CadModelJscad\n\nexport const cadModelProp = z.union([\n z.null(),\n z.string(),\n cadModelStl,\n cadModelObj,\n cadModelJscad,\n])\n\ntype InferredCadModelProp = z.input<typeof cadModelProp>\nexpectTypesMatch<CadModelProp, InferredCadModelProp>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n","import type { LayerRef } from \"circuit-json\"\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 FootprintProp = string | ReactElement | FootprintSoupElements[]\nexport const footprintProp = z.custom<FootprintProp>((v) => true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const schematicOrientation = z\n .enum([\n \"vertical\",\n \"horizontal\",\n \"pos_top\",\n \"pos_bottom\",\n \"pos_left\",\n \"pos_right\",\n \"neg_top\",\n \"neg_bottom\",\n \"neg_left\",\n \"neg_right\",\n ])\n .describe(\n \"horizontal means pins go 1->2 rightward and vertical means pins go 1->2 downward (generally, positive on top)\",\n )\n\nexport type SchematicOrientation =\n | \"vertical\"\n | \"horizontal\"\n | \"pos_top\"\n | \"pos_bottom\"\n | \"pos_left\"\n | \"pos_right\"\n | \"neg_top\"\n | \"neg_bottom\"\n | \"neg_left\"\n | \"neg_right\"\n\nexpectTypesMatch<SchematicOrientation, z.infer<typeof schematicOrientation>>(\n true,\n)\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: Array<number | string>\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 interface SchematicPortArrangement\n extends SchematicPortArrangementWithSizes,\n SchematicPortArrangementWithSides,\n SchematicPortArrangementWithPinCounts {}\n\nexport type SchematicPinArrangement = SchematicPortArrangement\nexport type SchematicPinArrangementWithSizes = SchematicPortArrangementWithSizes\nexport type SchematicPinArrangementWithSides = SchematicPortArrangementWithSides\nexport type SchematicPinArrangementWithPinCounts =\n SchematicPortArrangementWithPinCounts\n\nexport const explicitPinSideDefinition = z.object({\n pins: z.array(z.union([z.number(), z.string()])),\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\n/**\n * @deprecated Use schematicPinArrangement instead.\n */\nexport const schematicPortArrangement = z.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.number().optional().describe(\"@deprecated, use bottomPinCount\"),\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n leftSide: explicitPinSideDefinition.optional(),\n rightSide: explicitPinSideDefinition.optional(),\n topSide: explicitPinSideDefinition.optional(),\n bottomSide: explicitPinSideDefinition.optional(),\n})\n\nexport const schematicPinArrangement = schematicPortArrangement\n\nexpectTypesMatch<\n SchematicPortArrangement,\n z.input<typeof schematicPortArrangement>\n>(true)\n","import { distance } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type SchematicPinStyle = Record<\n string,\n {\n marginTop?: number | string\n marginRight?: number | string\n marginBottom?: number | string\n marginLeft?: number | string\n\n /** @deprecated use marginLeft */\n leftMargin?: number | string\n /** @deprecated use marginRight */\n rightMargin?: number | string\n /** @deprecated use marginTop */\n topMargin?: number | string\n /** @deprecated use marginBottom */\n bottomMargin?: number | string\n }\n>\n\nexport const schematicPinStyle = z.record(\n z.object({\n marginLeft: distance.optional(),\n marginRight: distance.optional(),\n marginTop: distance.optional(),\n marginBottom: distance.optional(),\n\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 type { LayoutBuilder, ManualEditFile } from \"@tscircuit/layout\"\nimport { distance } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport { type Point, point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { subcircuitGroupProps, type SubcircuitGroupProps } from \"./group\"\n\nexport interface BoardProps extends Omit<SubcircuitGroupProps, \"subcircuit\"> {\n width?: number | string\n height?: number | string\n outline?: Point[]\n outlineOffsetX?: number | string\n outlineOffsetY?: number | string\n material?: \"fr4\" | \"fr1\"\n}\n\nexport const boardProps = subcircuitGroupProps.extend({\n width: distance.optional(),\n height: distance.optional(),\n outline: z.array(point).optional(),\n outlineOffsetX: distance.optional(),\n outlineOffsetY: distance.optional(),\n material: z.enum([\"fr4\", \"fr1\"]).default(\"fr4\"),\n})\n\ntype InferredBoardProps = z.input<typeof boardProps>\nexpectTypesMatch<BoardProps, InferredBoardProps>(true)\n","import { distance } from \"circuit-json\"\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 type { LayoutBuilder } from \"@tscircuit/layout\"\nimport { layer_ref, length } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport {\n type CommonLayoutProps,\n commonLayoutProps,\n type SupplierPartNumbers,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport type { AnySourceComponent, PcbTrace } from \"circuit-json\"\nimport {\n manual_edits_file,\n type ManualEditsFile,\n type ManualEditsFileInput,\n} from \"lib/manual-edits\"\n\nexport const layoutConfig = z.object({\n layoutMode: z.enum([\"grid\", \"flex\", \"match-adapt\", \"none\"]).optional(),\n position: z.enum([\"absolute\", \"relative\"]).optional(),\n\n grid: z.boolean().optional(),\n gridCols: z.number().or(z.string()).optional(),\n gridRows: z.number().or(z.string()).optional(),\n gridTemplateRows: z.string().optional(),\n gridTemplateColumns: z.string().optional(),\n gridTemplate: z.string().optional(),\n gridGap: z.number().or(z.string()).optional(),\n\n flex: z.boolean().or(z.string()).optional(),\n flexDirection: z.enum([\"row\", \"column\"]).optional(),\n alignItems: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n justifyContent: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n flexRow: z.boolean().optional(),\n flexColumn: z.boolean().optional(),\n gap: z.number().or(z.string()).optional(),\n\n padding: length.optional(),\n paddingLeft: length.optional(),\n paddingRight: length.optional(),\n paddingTop: length.optional(),\n paddingBottom: length.optional(),\n paddingX: length.optional(),\n paddingY: length.optional(),\n\n width: length.optional(),\n height: length.optional(),\n\n matchAdapt: z.boolean().optional(),\n matchAdaptTemplate: z.any().optional(),\n})\n\nexport interface LayoutConfig {\n layoutMode?: \"grid\" | \"flex\" | \"match-adapt\" | \"none\"\n position?: \"absolute\" | \"relative\"\n\n grid?: boolean\n gridCols?: number | string\n gridRows?: number | string\n gridTemplateRows?: string\n gridTemplateColumns?: string\n gridTemplate?: string\n gridGap?: number | string\n\n flex?: boolean | string\n flexDirection?: \"row\" | \"column\"\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\"\n justifyContent?: \"start\" | \"center\" | \"end\" | \"stretch\"\n flexRow?: boolean\n flexColumn?: boolean\n gap?: number | string\n\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n paddingX?: Distance\n paddingY?: Distance\n\n width?: Distance\n height?: Distance\n\n matchAdapt?: boolean\n matchAdaptTemplate?: any\n}\n\nexpectTypesMatch<LayoutConfig, z.input<typeof layoutConfig>>(true)\n\nexport interface Border {\n strokeWidth?: Distance\n dashed?: boolean\n solid?: boolean\n}\n\nexport const border = z.object({\n strokeWidth: length.optional(),\n dashed: z.boolean().optional(),\n solid: z.boolean().optional(),\n})\n\nexport interface BaseGroupProps extends CommonLayoutProps, LayoutConfig {\n name?: string\n key?: any\n children?: any\n\n /**\n * Title to display above this group in the schematic view\n */\n schTitle?: string\n\n pcbWidth?: Distance\n pcbHeight?: Distance\n schWidth?: Distance\n schHeight?: Distance\n\n pcbLayout?: LayoutConfig\n schLayout?: LayoutConfig\n cellBorder?: Border | null\n border?: Border | null\n schPadding?: Distance\n schPaddingLeft?: Distance\n schPaddingRight?: Distance\n schPaddingTop?: Distance\n schPaddingBottom?: Distance\n}\n\nexport type PartsEngine = {\n findPart: (params: {\n sourceComponent: AnySourceComponent\n footprinterString?: string\n }) => Promise<SupplierPartNumbers> | SupplierPartNumbers\n}\n\nexport interface PcbRouteCache {\n pcbTraces: PcbTrace[]\n cacheKey: string\n}\n\nexport interface AutorouterConfig {\n serverUrl?: string\n inputFormat?: \"simplified\" | \"circuit-json\"\n serverMode?: \"job\" | \"solve-endpoint\"\n serverCacheEnabled?: boolean\n cache?: PcbRouteCache\n traceClearance?: Distance\n groupMode?: \"sequential-trace\" | \"subcircuit\"\n local?: boolean\n algorithmFn?: (simpleRouteJson: any) => Promise<any>\n}\n\nexport type AutorouterProp =\n | AutorouterConfig\n | \"sequential-trace\"\n | \"subcircuit\"\n | \"auto\"\n | \"auto-local\"\n | \"auto-cloud\"\n\nexport const autorouterConfig = z.object({\n serverUrl: z.string().optional(),\n inputFormat: z.enum([\"simplified\", \"circuit-json\"]).optional(),\n serverMode: z.enum([\"job\", \"solve-endpoint\"]).optional(),\n serverCacheEnabled: z.boolean().optional(),\n cache: z.custom<PcbRouteCache>((v) => true).optional(),\n traceClearance: length.optional(),\n groupMode: z.enum([\"sequential-trace\", \"subcircuit\"]).optional(),\n algorithmFn: z\n .custom<(simpleRouteJson: any) => Promise<any>>(\n (v) => typeof v === \"function\" || v === undefined,\n )\n .optional(),\n local: z.boolean().optional(),\n})\n\nexport const autorouterProp = z.union([\n autorouterConfig,\n z.literal(\"sequential-trace\"),\n z.literal(\"subcircuit\"),\n z.literal(\"auto\"),\n z.literal(\"auto-local\"),\n z.literal(\"auto-cloud\"),\n])\n\nexport interface SubcircuitGroupProps extends BaseGroupProps {\n layout?: LayoutBuilder\n manualEdits?: ManualEditsFileInput\n routingDisabled?: boolean\n defaultTraceWidth?: Distance\n minTraceWidth?: Distance\n pcbRouteCache?: PcbRouteCache\n\n autorouter?: AutorouterProp\n\n /**\n * If true, we'll automatically layout the schematic for this group. Must be\n * a subcircuit (currently). This is eventually going to be replaced with more\n * sophisticated layout options/modes and will be enabled by default.\n */\n schAutoLayoutEnabled?: boolean\n\n /**\n * If true, net labels will automatically be created for complex traces\n */\n schTraceAutoLabelEnabled?: boolean\n\n partsEngine?: PartsEngine\n}\n\nexport interface SubcircuitGroupPropsWithBool extends SubcircuitGroupProps {\n subcircuit: true\n}\n\nexport interface NonSubcircuitGroupProps extends BaseGroupProps {\n subcircuit?: false | undefined\n}\n\nexport type GroupProps = SubcircuitGroupPropsWithBool | NonSubcircuitGroupProps\n\nexport const baseGroupProps = commonLayoutProps.extend({\n name: z.string().optional(),\n children: z.any().optional(),\n schTitle: z.string().optional(),\n key: z.any().optional(),\n\n ...layoutConfig.shape,\n pcbWidth: length.optional(),\n pcbHeight: length.optional(),\n schWidth: length.optional(),\n schHeight: length.optional(),\n pcbLayout: layoutConfig.optional(),\n schLayout: layoutConfig.optional(),\n cellBorder: border.nullable().optional(),\n border: border.nullable().optional(),\n schPadding: length.optional(),\n schPaddingLeft: length.optional(),\n schPaddingRight: length.optional(),\n schPaddingTop: length.optional(),\n schPaddingBottom: length.optional(),\n})\n\nexport const partsEngine = z.custom<PartsEngine>((v) => \"findPart\" in v)\n\nexport const subcircuitGroupProps = baseGroupProps.extend({\n layout: z.custom<LayoutBuilder>((v) => true).optional(),\n manualEdits: manual_edits_file.optional(),\n schAutoLayoutEnabled: z.boolean().optional(),\n schTraceAutoLabelEnabled: z.boolean().optional(),\n routingDisabled: z.boolean().optional(),\n defaultTraceWidth: length.optional(),\n minTraceWidth: length.optional(),\n partsEngine: partsEngine.optional(),\n pcbRouteCache: z.custom<PcbRouteCache>((v) => true).optional(),\n autorouter: autorouterProp.optional(),\n})\n\nexport const subcircuitGroupPropsWithBool = subcircuitGroupProps.extend({\n subcircuit: z.literal(true),\n})\n\nexport const groupProps = z.discriminatedUnion(\"subcircuit\", [\n baseGroupProps.extend({ subcircuit: z.literal(false).optional() }),\n subcircuitGroupPropsWithBool,\n])\n\ntype InferredBaseGroupProps = z.input<typeof baseGroupProps>\ntype InferredSubcircuitGroupPropsWithBool = z.input<\n typeof subcircuitGroupPropsWithBool\n>\n\nexpectTypesMatch<BaseGroupProps, InferredBaseGroupProps>(true)\nexpectTypesMatch<\n SubcircuitGroupPropsWithBool,\n InferredSubcircuitGroupPropsWithBool\n>(true)\n\ntype InferredGroupProps = z.input<typeof groupProps>\nexpectTypesMatch<GroupProps, InferredGroupProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const base_manual_edit_event = z.object({\n edit_event_id: z.string(),\n in_progress: z.boolean().optional(),\n created_at: z.number(),\n})\n\nexport interface BaseManualEditEvent {\n edit_event_id: string\n in_progress?: boolean\n created_at: number\n}\n\nexport type BaseManualEditEventInput = z.input<typeof base_manual_edit_event>\n\nexpectTypesMatch<BaseManualEditEvent, z.infer<typeof base_manual_edit_event>>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_pcb_component_location_event = base_manual_edit_event.extend({\n pcb_edit_event_type: z\n .literal(\"edit_component_location\")\n .describe(\"deprecated\"),\n edit_event_type: z.literal(\"edit_pcb_component_location\"),\n pcb_component_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n})\n\n/** @deprecated use edit_pcb_component_location_event instead */\nexport const edit_component_location_event = edit_pcb_component_location_event\n\nexport interface EditPcbComponentLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_pcb_component_location\"\n /** @deprecated */\n pcb_edit_event_type: \"edit_component_location\"\n pcb_component_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditPcbComponentLocationEventInput = z.input<\n typeof edit_pcb_component_location_event\n>\n\nexpectTypesMatch<\n EditPcbComponentLocationEvent,\n z.infer<typeof edit_pcb_component_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_trace_hint_event = base_manual_edit_event.extend({\n pcb_edit_event_type: z.literal(\"edit_trace_hint\").describe(\"deprecated\"),\n edit_event_type: z.literal(\"edit_pcb_trace_hint\").optional(),\n pcb_port_id: z.string(),\n pcb_trace_hint_id: z.string().optional(),\n route: z.array(\n z.object({ x: z.number(), y: z.number(), via: z.boolean().optional() }),\n ),\n})\n\nexport interface EditTraceHintEvent extends BaseManualEditEvent {\n /** @deprecated */\n pcb_edit_event_type: \"edit_trace_hint\"\n edit_event_type?: \"edit_pcb_trace_hint\"\n pcb_port_id: string\n pcb_trace_hint_id?: string\n route: Array<{ x: number; y: number; via?: boolean }>\n}\n\nexport type EditTraceHintEventInput = z.input<typeof edit_trace_hint_event>\n\nexpectTypesMatch<EditTraceHintEvent, z.infer<typeof edit_trace_hint_event>>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_schematic_component_location_event =\n base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_schematic_component_location\"),\n schematic_component_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n })\n\nexport interface EditSchematicComponentLocationEvent\n extends BaseManualEditEvent {\n edit_event_type: \"edit_schematic_component_location\"\n schematic_component_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditSchematicComponentLocationEventInput = z.input<\n typeof edit_schematic_component_location_event\n>\n\nexpectTypesMatch<\n EditSchematicComponentLocationEvent,\n z.infer<typeof edit_schematic_component_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_pcb_group_location_event = base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_pcb_group_location\"),\n pcb_group_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n})\n\nexport interface EditPcbGroupLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_pcb_group_location\"\n pcb_group_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditPcbGroupLocationEventInput = z.input<\n typeof edit_pcb_group_location_event\n>\n\nexpectTypesMatch<\n EditPcbGroupLocationEvent,\n z.infer<typeof edit_pcb_group_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_schematic_group_location_event =\n base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_schematic_group_location\"),\n schematic_group_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n })\n\nexport interface EditSchematicGroupLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_schematic_group_location\"\n schematic_group_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditSchematicGroupLocationEventInput = z.input<\n typeof edit_schematic_group_location_event\n>\n\nexpectTypesMatch<\n EditSchematicGroupLocationEvent,\n z.infer<typeof edit_schematic_group_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n edit_pcb_component_location_event,\n type EditPcbComponentLocationEvent,\n} from \"./manual-edit-events/edit_pcb_component_location_event\"\nimport {\n edit_schematic_component_location_event,\n type EditSchematicComponentLocationEvent,\n} from \"./manual-edit-events/edit_schematic_component_location_event\"\nimport {\n edit_trace_hint_event,\n type EditTraceHintEvent,\n} from \"./manual-edit-events/edit_trace_hint_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type ManualEditEvent =\n | EditPcbComponentLocationEvent\n | EditTraceHintEvent\n | EditSchematicComponentLocationEvent\n\nexport const manual_edit_event = z.union([\n edit_pcb_component_location_event,\n edit_trace_hint_event,\n edit_schematic_component_location_event,\n])\n\nexport type ManualEditEventInput = z.input<typeof manual_edit_event>\ntype InferredManualEditEvent = z.infer<typeof manual_edit_event>\n\nexpectTypesMatch<ManualEditEvent, InferredManualEditEvent>(true)\n","import { z } from \"zod\"\nimport {\n manual_pcb_placement,\n type ManualPcbPlacement,\n} from \"./manual_pcb_placement\"\nimport { manual_edit_event } from \"./manual_edit_event\"\nimport { manual_trace_hint, type ManualTraceHint } from \"./manual_trace_hint\"\nimport {\n manual_schematic_placement,\n type ManualSchematicPlacement,\n} from \"./manual_schematic_placement\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_edits_file = z.object({\n pcb_placements: z.array(manual_pcb_placement).optional(),\n manual_trace_hints: z.array(manual_trace_hint).optional(),\n schematic_placements: z.array(manual_schematic_placement).optional(),\n})\n\nexport interface ManualEditsFile {\n pcb_placements?: ManualPcbPlacement[]\n manual_trace_hints?: ManualTraceHint[]\n schematic_placements?: ManualSchematicPlacement[]\n}\n\nexport type ManualEditsFileInput = z.input<typeof manual_edits_file>\n\nexpectTypesMatch<ManualEditsFile, z.infer<typeof manual_edits_file>>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_pcb_placement = z.object({\n selector: z.string(),\n relative_to: z\n .string()\n .optional()\n .default(\"group_center\")\n .describe(\"Can be a selector or 'group_center'\"),\n center: point,\n})\n\nexport interface ManualPcbPlacement {\n selector: string\n relative_to: string\n center: Point\n}\n\nexport type ManualPcbPlacementInput = z.input<typeof manual_pcb_placement>\ntype InferredManualPcbPlacement = z.infer<typeof manual_pcb_placement>\n\nexpectTypesMatch<ManualPcbPlacement, InferredManualPcbPlacement>(true)\n","import { z } from \"zod\"\nimport { layer_ref, route_hint_point, type RouteHintPoint } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_trace_hint = z.object({\n pcb_port_selector: z.string(),\n offsets: z.array(route_hint_point),\n})\n\nexport interface ManualTraceHint {\n pcb_port_selector: string\n offsets: Array<RouteHintPoint>\n}\n\nexport type ManualTraceHintInput = z.input<typeof manual_trace_hint>\n\nexpectTypesMatch<ManualTraceHint, z.infer<typeof manual_trace_hint>>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_schematic_placement = z.object({\n selector: z.string(),\n relative_to: z\n .string()\n .optional()\n .default(\"group_center\")\n .describe(\"Can be a selector or 'group_center'\"),\n center: point,\n})\n\nexport interface ManualSchematicPlacement {\n selector: string\n relative_to: string\n center: Point\n}\n\nexport type ManualSchematicPlacementInput = z.input<\n typeof manual_schematic_placement\n>\ntype InferredManualSchematicPlacement = z.infer<\n typeof manual_schematic_placement\n>\n\nexpectTypesMatch<ManualSchematicPlacement, InferredManualSchematicPlacement>(\n true,\n)\n","import { distance } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { subcircuitGroupProps, type SubcircuitGroupProps } from \"./group\"\n\nexport interface BreakoutProps\n extends Omit<SubcircuitGroupProps, \"subcircuit\"> {\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n}\n\nexport const breakoutProps = subcircuitGroupProps.extend({\n padding: distance.optional(),\n paddingLeft: distance.optional(),\n paddingRight: distance.optional(),\n paddingTop: distance.optional(),\n paddingBottom: distance.optional(),\n})\n\ntype InferredBreakoutProps = z.input<typeof breakoutProps>\nexpectTypesMatch<BreakoutProps, InferredBreakoutProps>(true)\n","import { distance, supplier_name } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n type SupplierPartNumbers,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement as schematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport type PinLabelsProp<\n PinNumber extends string = string,\n PinLabel extends string = string,\n> = Record<PinNumber, PinLabel | readonly PinLabel[] | PinLabel[]>\n\nexport type PinLabelFromPinLabelMap<PinLabelMap extends PinLabelsProp> =\n PinLabelMap extends PinLabelsProp<infer PinNumber, infer PinLabel>\n ? PinLabel\n : never\n\nexport interface PinCompatibleVariant {\n manufacturerPartNumber?: string\n supplierPartNumber?: SupplierPartNumbers\n}\n\nexport interface ChipPropsSU<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n manufacturerPartNumber?: string\n pinLabels?: PinLabelsProp<string, PinLabel>\n /**\n * Whether to show pin aliases in the schematic\n */\n showPinAliases?: boolean\n schPinArrangement?: SchematicPortArrangement\n /** @deprecated Use schPinArrangement instead. */\n schPortArrangement?: SchematicPortArrangement\n pinCompatibleVariants?: PinCompatibleVariant[]\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: Distance\n schWidth?: Distance\n schHeight?: Distance\n noSchematicRepresentation?: boolean\n internallyConnectedPins?: string[][]\n externallyConnectedPins?: string[][]\n connections?: Connections<PinLabel>\n}\n\nexport type ChipProps<PinLabelMap extends PinLabelsProp | string = string> =\n ChipPropsSU<\n PinLabelMap extends PinLabelsProp\n ? PinLabelFromPinLabelMap<PinLabelMap>\n : PinLabelMap\n >\n\n/**\n * Get the pin labels for a component\n *\n * const pinLabels = { pin1: \"VCC\", pin2: \"GND\", pin3: \"DATA\" } as const\n * export const MyChip = (props: ChipProps<typeof pinLabels>) => {\n * // ...\n * }\n * type MyChipPinLabels = ChipPinLabels<typeof MyChip>\n * // MyChipPinLabels is \"VCC\" | \"GND\" | \"DATA\"\n *\n */\nexport type ChipPinLabels<T extends (props: ChipProps<any>) => any> =\n T extends (props: infer Props) => any\n ? Props extends ChipProps<infer PinLabelMap>\n ? PinLabelMap extends PinLabelsProp\n ? PinLabelFromPinLabelMap<PinLabelMap>\n : PinLabelMap extends string\n ? PinLabelMap\n : never\n : never\n : never\n\n/**\n * Get the connection prop type for a component\n *\n * const pinLabels = { pin1: \"VCC\", pin2: \"GND\", pin3: \"DATA\" } as const\n * export const MyChip = (props: ChipProps<typeof pinLabels>) => {\n * // ...\n * }\n * const connections: ChipConnections<typeof MyChip> = {\n * VCC: \"...\",\n * GND: \"...\",\n * DATA: \"...\",\n * }\n *\n */\nexport type ChipConnections<T extends (props: ChipProps<any>) => any> = {\n [K in ChipPinLabels<T>]: string\n}\n\nconst connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nconst connectionsProp = z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n\nexport const pinLabelsProp = z.record(\n z.string(),\n z.string().or(z.array(z.string()).readonly()).or(z.array(z.string())),\n)\n\nexpectTypesMatch<PinLabelsProp, z.input<typeof pinLabelsProp>>(true)\n\nexport const pinCompatibleVariant = z.object({\n manufacturerPartNumber: z.string().optional(),\n supplierPartNumber: z.record(supplier_name, z.array(z.string())).optional(),\n})\n\nexport const chipProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: pinLabelsProp.optional(),\n showPinAliases: z.boolean().optional(),\n internallyConnectedPins: z.array(z.array(z.string())).optional(),\n externallyConnectedPins: z.array(z.array(z.string())).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPortArrangement: schematicPinArrangement.optional(),\n pinCompatibleVariants: z.array(pinCompatibleVariant).optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n noSchematicRepresentation: z.boolean().optional(),\n connections: connectionsProp.optional(),\n})\n\n/**\n * @deprecated Use ChipProps instead.\n */\nexport const bugProps = chipProps\nexport type InferredChipProps = z.input<typeof chipProps>\n\n// Chip props are too complex to match up with zod types, we typecheck\n// them separately in the test files\nexpectTypesMatch<InferredChipProps, ChipPropsSU<string>>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface JumperProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, 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 * Number of pins on the jumper (2 or 3)\n */\n pinCount?: 2 | 3\n /**\n * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: string[][]\n /**\n * Connections to other components\n */\n connections?: Connections<string>\n}\n\nexport const jumperProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(z.number().or(z.string()), z.string().or(z.array(z.string())))\n .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 pinCount: z.union([z.literal(2), z.literal(3)]).optional(),\n internallyConnectedPins: z.array(z.array(z.string())).optional(),\n connections: z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n})\n\ntype InferredJumperProps = z.input<typeof jumperProps>\nexpectTypesMatch<JumperProps, InferredJumperProps>(true)\n","import { z } from \"zod\"\n\nexport const connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nexport const createConnectionsProp = <T extends readonly [string, ...string[]]>(\n labels: T,\n) => {\n return z.record(z.enum(labels), connectionTarget)\n}\n","import { jumperProps, type JumperProps } from \"./jumper\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface SolderJumperProps extends JumperProps {\n /**\n * Pins that are bridged with solder by default\n */\n bridgedPins?: string[][]\n /**\n * If true, all pins are connected with cuttable traces\n */\n bridged?: boolean\n}\n\nexport const solderjumperProps = jumperProps.extend({\n bridgedPins: z.array(z.array(z.string())).optional(),\n bridged: z.boolean().optional(),\n})\n\ntype InferredSolderJumperProps = z.input<typeof solderjumperProps>\nexpectTypesMatch<SolderJumperProps, InferredSolderJumperProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ConnectorProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, 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 * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: string[][]\n /**\n * Connector standard, e.g. usb_c, m2\n */\n standard?: \"usb_c\" | \"m2\"\n}\n\nexport const connectorProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(z.number().or(z.string()), z.string().or(z.array(z.string())))\n .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 internallyConnectedPins: z.array(z.array(z.string())).optional(),\n standard: z.enum([\"usb_c\", \"m2\"]).optional(),\n})\n\ntype InferredConnectorProps = z.input<typeof connectorProps>\nexpectTypesMatch<ConnectorProps, InferredConnectorProps>(true)\n","import { z } from \"zod\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\n\n/**\n * Pin labels for fuse component\n */\nexport const fusePinLabels = [\"pin1\", \"pin2\"] as const\n\nexport type FusePinLabels = (typeof fusePinLabels)[number]\n\nexport interface FuseProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n /**\n * Current rating of the fuse in amperes\n */\n currentRating: number | string\n\n /**\n * Voltage rating of the fuse\n */\n voltageRating?: number | string\n\n /**\n * Whether to show ratings on schematic\n */\n schShowRatings?: boolean\n\n schOrientation?: SchematicOrientation\n\n /**\n * Connections to other components\n */\n connections?: Connections<PinLabel>\n}\n\n/**\n * Schema for validating fuse props\n */\nexport const fuseProps = commonComponentProps.extend({\n currentRating: z.union([z.number(), z.string()]),\n voltageRating: z.union([z.number(), z.string()]).optional(),\n schShowRatings: z.boolean().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: z\n .record(\n z.string(),\n z.union([\n z.string(),\n z.array(z.string()).readonly(),\n z.array(z.string()),\n ]),\n )\n .optional(),\n})\n\nexport type InferredFuseProps = z.input<typeof fuseProps>\n","import { distance } from \"circuit-json\"\nimport type { PcbLayoutProps } from \"lib/common/layout\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { type PortHints, portHints } from \"lib/common/portHints\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface CirclePlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"circle\"\n holeDiameter: number | string\n outerDiameter: number | string\n portHints?: PortHints\n}\n\nexport interface OvalPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"oval\"\n outerWidth: number | string\n outerHeight: number | string\n holeWidth: number | string\n holeHeight: number | string\n portHints?: PortHints\n\n /** @deprecated use holeWidth */\n innerWidth?: number | string\n /** @deprecated use holeHeight */\n innerHeight?: number | string\n}\n\nexport interface PillPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"pill\"\n outerWidth: number | string\n outerHeight: number | string\n holeWidth: number | string\n holeHeight: number | string\n\n /** @deprecated use holeWidth */\n innerWidth?: number | string\n /** @deprecated use holeHeight */\n innerHeight?: number | string\n\n portHints?: PortHints\n}\n\nexport interface CircularHoleWithRectPlatedProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"circular_hole_with_rect_pad\"\n holeDiameter: number | string\n rectPadWidth: number | string\n rectPadHeight: number | string\n holeShape?: \"circle\"\n padShape?: \"rect\"\n portHints?: PortHints\n}\n\nexport interface PillWithRectPadPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"pill_hole_with_rect_pad\"\n holeShape: \"pill\"\n padShape: \"rect\"\n holeWidth: number | string\n holeHeight: number | string\n rectPadWidth: number | string\n rectPadHeight: number | string\n portHints?: PortHints\n}\n\nexport type PlatedHoleProps =\n | CirclePlatedHoleProps\n | OvalPlatedHoleProps\n | PillPlatedHoleProps\n | CircularHoleWithRectPlatedProps\n | PillWithRectPadPlatedHoleProps\n\nconst distanceHiddenUndefined = z\n .custom<z.input<typeof distance>>()\n .transform((a) => {\n if (a === undefined) return undefined\n return distance.parse(a)\n })\n\nexport const platedHoleProps = z\n .discriminatedUnion(\"shape\", [\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(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 connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"oval\"),\n outerWidth: distance,\n outerHeight: distance,\n holeWidth: distanceHiddenUndefined,\n holeHeight: distanceHiddenUndefined,\n innerWidth: distance.optional().describe(\"DEPRECATED use holeWidth\"),\n innerHeight: distance.optional().describe(\"DEPRECATED use holeHeight\"),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"pill\"),\n outerWidth: distance,\n outerHeight: distance,\n holeWidth: distanceHiddenUndefined,\n holeHeight: distanceHiddenUndefined,\n innerWidth: distance.optional().describe(\"DEPRECATED use holeWidth\"),\n innerHeight: distance.optional().describe(\"DEPRECATED use holeHeight\"),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"circular_hole_with_rect_pad\"),\n holeDiameter: distance,\n rectPadWidth: distance,\n rectPadHeight: distance,\n holeShape: z.literal(\"circle\").optional(),\n padShape: z.literal(\"rect\").optional(),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"pill_hole_with_rect_pad\"),\n holeShape: z.literal(\"pill\"),\n padShape: z.literal(\"rect\"),\n holeWidth: distance,\n holeHeight: distance,\n rectPadWidth: distance,\n rectPadHeight: distance,\n portHints: portHints.optional(),\n }),\n ])\n .refine((a) => {\n if (\"innerWidth\" in a && a.innerWidth !== undefined) {\n a.holeWidth ??= a.innerWidth\n }\n if (\"innerHeight\" in a && a.innerHeight !== undefined) {\n a.holeHeight ??= a.innerHeight\n }\n return a\n })\n\ntype InferredPlatedHoleProps = z.input<typeof platedHoleProps>\n\nexpectTypesMatch<PlatedHoleProps, InferredPlatedHoleProps>(true)\n","import { resistance } from \"circuit-json\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport const resistorPinLabels = [\"pin1\", \"pin2\", \"pos\", \"neg\"] as const\nexport type ResistorPinLabels = (typeof resistorPinLabels)[number]\n\nexport interface ResistorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n resistance: number | string\n pullupFor?: string\n pullupTo?: string\n pulldownFor?: string\n pulldownTo?: string\n schOrientation?: SchematicOrientation\n connections?: Connections<ResistorPinLabels>\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\n schOrientation: schematicOrientation.optional(),\n\n connections: createConnectionsProp(resistorPinLabels).optional(),\n})\nexport const resistorPins = lrPins\n\ntype InferredResistorProps = z.input<typeof resistorProps>\nexpectTypesMatch<ResistorProps, InferredResistorProps>(true)\n","import { resistance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type PotentiometerPinVariant = \"two_pin\" | \"three_pin\"\n\nexport interface PotentiometerProps extends CommonComponentProps {\n maxResistance: number | string\n pinVariant?: PotentiometerPinVariant\n}\n\nexport const potentiometerProps = commonComponentProps.extend({\n maxResistance: resistance,\n pinVariant: z.enum([\"two_pin\", \"three_pin\"]).optional(),\n})\n\ntype InferredPotentiometerProps = z.input<typeof potentiometerProps>\nexpectTypesMatch<PotentiometerProps, InferredPotentiometerProps>(true)\n","import { frequency, capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type PinVariant = \"two_pin\" | \"four_pin\"\n\nexport interface CrystalProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n frequency: number | string\n loadCapacitance: number | string\n pinVariant?: PinVariant\n schOrientation?: SchematicOrientation\n}\n\nexport const crystalProps = commonComponentProps.extend({\n frequency: frequency,\n loadCapacitance: capacitance,\n pinVariant: z.enum([\"two_pin\", \"four_pin\"]).optional(),\n schOrientation: schematicOrientation.optional(),\n})\nexport const crystalPins = lrPins\nexport type CrystalPinLabels = (typeof crystalPins)[number]\n\ntype InferredCrystalProps = z.input<typeof crystalProps>\nexpectTypesMatch<CrystalProps, InferredCrystalProps>(true)\n","import { frequency, capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type ResonatorPinVariant = \"no_ground\" | \"ground_pin\" | \"two_ground_pins\"\n\nexport interface ResonatorProps extends CommonComponentProps {\n frequency: number | string\n loadCapacitance: number | string\n pinVariant?: ResonatorPinVariant\n}\n\nexport const resonatorProps = commonComponentProps.extend({\n frequency: frequency,\n loadCapacitance: capacitance,\n pinVariant: z.enum([\"no_ground\", \"ground_pin\", \"two_ground_pins\"]).optional(),\n})\n\ntype InferredResonatorProps = z.input<typeof resonatorProps>\nexpectTypesMatch<ResonatorProps, InferredResonatorProps>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { boardProps, type BoardProps } from \"lib/components/board\"\n\nexport interface StampboardProps extends BoardProps {\n leftPinCount?: number\n rightPinCount?: number\n topPinCount?: number\n bottomPinCount?: number\n leftPins?: string[]\n rightPins?: string[]\n topPins?: string[]\n bottomPins?: string[]\n pinPitch?: number | string\n innerHoles?: boolean\n}\n\nexport const stampboardProps = boardProps.extend({\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n leftPins: z.array(z.string()).optional(),\n rightPins: z.array(z.string()).optional(),\n topPins: z.array(z.string()).optional(),\n bottomPins: z.array(z.string()).optional(),\n pinPitch: distance.optional(),\n innerHoles: z.boolean().optional(),\n})\n\ntype InferredStampboardProps = z.input<typeof stampboardProps>\nexpectTypesMatch<StampboardProps, InferredStampboardProps>(true)\n","import { capacitance, voltage } from \"circuit-json\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport const capacitorPinLabels = [\n \"pin1\",\n \"pin2\",\n \"pos\",\n \"neg\",\n \"anode\",\n \"cathode\",\n] as const\nexport type CapacitorPinLabels = (typeof capacitorPinLabels)[number]\n\nexport interface CapacitorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n capacitance: number | string\n maxVoltageRating?: number | string\n schShowRatings?: boolean\n polarized?: boolean\n decouplingFor?: string\n decouplingTo?: string\n bypassFor?: string\n bypassTo?: string\n maxDecouplingTraceLength?: number\n schOrientation?: SchematicOrientation\n connections?: Connections<CapacitorPinLabels>\n}\n\nexport const capacitorProps = commonComponentProps.extend({\n capacitance,\n maxVoltageRating: voltage.optional(),\n schShowRatings: z.boolean().optional().default(false),\n polarized: z.boolean().optional().default(false),\n decouplingFor: z.string().optional(),\n decouplingTo: z.string().optional(),\n bypassFor: z.string().optional(),\n bypassTo: z.string().optional(),\n maxDecouplingTraceLength: z.number().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: createConnectionsProp(capacitorPinLabels).optional(),\n})\nexport const capacitorPins = lrPolarPins\n\nexpectTypesMatch<CapacitorProps, z.input<typeof capacitorProps>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface NetProps {\n name: string\n connectsTo?: string | string[]\n}\n\nexport const netProps = z.object({\n name: z.string(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\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, length } from \"circuit-json\"\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 { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { point, type Point } from \"lib/common/point\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n}\n\nexport const rectCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n })\nexpectTypesMatch<RectCutoutProps, z.input<typeof rectCutoutProps>>(true)\n\nexport interface CircleCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"circle\"\n radius: Distance\n}\n\nexport const circleCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n radius: distance,\n })\nexpectTypesMatch<CircleCutoutProps, z.input<typeof circleCutoutProps>>(true)\n\nexport interface PolygonCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"polygon\"\n points: Point[]\n}\n\nexport const polygonCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n })\nexpectTypesMatch<PolygonCutoutProps, z.input<typeof polygonCutoutProps>>(true)\n\nexport type CutoutProps =\n | RectCutoutProps\n | CircleCutoutProps\n | PolygonCutoutProps\n\nexport const cutoutProps = z.discriminatedUnion(\"shape\", [\n rectCutoutProps,\n circleCutoutProps,\n polygonCutoutProps,\n])\n\nexport type CutoutPropsInput = z.input<typeof cutoutProps>\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 { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n portHints?: PortHints\n}\n\nexport interface RotatedRectSmtPadProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"rotated_rect\"\n width: Distance\n height: Distance\n ccwRotation: number\n portHints?: PortHints\n}\n\nexport interface CircleSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"circle\"\n radius: Distance\n portHints?: PortHints\n}\n\nexport interface PillSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"pill\"\n width: Distance\n height: Distance\n radius: Distance\n portHints?: PortHints\n}\n\nexport interface PolygonSmtPadProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"polygon\"\n points: Point[]\n portHints?: PortHints\n}\n\nexport type SmtPadProps =\n | RectSmtPadProps\n | CircleSmtPadProps\n | RotatedRectSmtPadProps\n | PillSmtPadProps\n | PolygonSmtPadProps\n\n// ----------------------------------------------------------------------------\n// Zod\n// ----------------------------------------------------------------------------\n\nexport const rectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\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 rotatedRectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rotated_rect\"),\n width: distance,\n height: distance,\n ccwRotation: z.number(),\n portHints: portHints.optional(),\n })\ntype InferredRotatedRectSmtPadProps = z.input<typeof rotatedRectSmtPadProps>\nexpectTypesMatch<InferredRotatedRectSmtPadProps, RotatedRectSmtPadProps>(true)\n\nexport const circleSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\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 pillSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"pill\"),\n width: distance,\n height: distance,\n radius: distance,\n portHints: portHints.optional(),\n })\ntype InferredPillSmtPadProps = z.input<typeof pillSmtPadProps>\nexpectTypesMatch<InferredPillSmtPadProps, PillSmtPadProps>(true)\n\nexport const polygonSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n portHints: portHints.optional(),\n })\ntype InferredPolygonSmtPadProps = z.input<typeof polygonSmtPadProps>\nexpectTypesMatch<InferredPolygonSmtPadProps, PolygonSmtPadProps>(true)\n\nexport const smtPadProps = z.discriminatedUnion(\"shape\", [\n circleSmtPadProps,\n rectSmtPadProps,\n rotatedRectSmtPadProps,\n pillSmtPadProps,\n polygonSmtPadProps,\n])\n\nexport type InferredSmtPadProps = z.input<typeof smtPadProps>\nexpectTypesMatch<InferredSmtPadProps, SmtPadProps>(true)\n","import { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { boolean, string, z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSolderPasteProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"rect\"\n width: Distance\n height: Distance\n}\n\nexport interface CircleSolderPasteProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"circle\"\n radius: Distance\n}\n\nexport type SolderPasteProps = RectSolderPasteProps | CircleSolderPasteProps\n\n// zod\n\nexport const rectSolderPasteProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n })\ntype InferredRectSolderPasteProps = z.input<typeof rectSolderPasteProps>\nexpectTypesMatch<InferredRectSolderPasteProps, RectSolderPasteProps>(true)\n\nexport const circleSolderPasteProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n })\ntype InferredCircleSolderPasteProps = z.input<typeof circleSolderPasteProps>\nexpectTypesMatch<InferredCircleSolderPasteProps, CircleSolderPasteProps>(true)\n\nexport const solderPasteProps = z.union([\n circleSolderPasteProps,\n rectSolderPasteProps,\n])\n\nexport type InferredSolderPasteProps = z.input<typeof solderPasteProps>\nexpectTypesMatch<InferredSolderPasteProps, SolderPasteProps>(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","import { distance, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const portRef = z.union([\n z.string(),\n z.custom<{ getPortSelector: () => string }>((v) =>\n Boolean(v.getPortSelector),\n ),\n])\n\nconst baseTraceProps = z.object({\n key: z.string().optional(),\n thickness: distance.optional(),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n schDisplayLabel: z.string().optional(),\n maxLength: distance.optional(),\n})\n\nexport const traceProps = z.union([\n baseTraceProps.extend({\n path: z.array(portRef),\n }),\n baseTraceProps.extend({\n from: portRef,\n to: portRef,\n }),\n])\n\nexport type TraceProps = z.input<typeof traceProps>\n","import { type LayerRef, layer_ref } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface FootprintProps {\n /**\n * The layer that the footprint is designed for. If you set this to \"top\"\n * then it means the children were intended to represent the top layer. If\n * the <chip /> with this footprint is moved to the bottom layer, then the\n * components will be mirrored.\n *\n * Generally, you shouldn't set this except where it can help prevent\n * confusion because you have a complex multi-layer footprint. Default is\n * \"top\" and this is most intuitive.\n */\n originalLayer?: LayerRef\n}\n\nexport const footprintProps = z.object({\n originalLayer: layer_ref.default(\"top\").optional(),\n})\n\nexport type FootprintPropsInput = z.input<typeof footprintProps>\ntype InferredFootprintProps = z.infer<typeof footprintProps>\nexpectTypesMatch<InferredFootprintProps, FootprintProps>(true)\n","import { z } from \"zod\"\nimport {\n commonComponentProps,\n lrPins,\n lrPolarPins,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\n/** @deprecated use battery_capacity from circuit-json when circuit-json is updated */\nconst capacity = z\n .number()\n .or(z.string().endsWith(\"mAh\"))\n .transform((v) => {\n if (typeof v === \"string\") {\n const valString = v.replace(\"mAh\", \"\")\n const num = Number.parseFloat(valString)\n if (Number.isNaN(num)) {\n throw new Error(\"Invalid capacity\")\n }\n return num\n }\n return v\n })\n .describe(\"Battery capacity in mAh\")\n\nexport interface BatteryProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n capacity?: number | string\n schOrientation?: SchematicOrientation\n}\n\nexport const batteryProps = commonComponentProps.extend({\n capacity: capacity.optional(),\n schOrientation: schematicOrientation.optional(),\n})\nexport const batteryPins = lrPolarPins\nexport type BatteryPinLabels = (typeof batteryPins)[number]\n\nexpectTypesMatch<BatteryProps, z.input<typeof batteryProps>>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPinArrangement,\n type SchematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PinHeaderProps extends CommonComponentProps {\n /**\n * Number of pins in the header\n */\n pinCount: number\n\n /**\n * Distance between pins\n */\n pitch?: number | string\n\n /**\n * Schematic facing direction\n */\n schFacingDirection?: \"up\" | \"down\" | \"left\" | \"right\"\n\n /**\n * Whether the header is male or female\n */\n gender?: \"male\" | \"female\"\n\n /**\n * Whether to show pin labels in silkscreen\n */\n showSilkscreenPinLabels?: boolean\n\n /**\n * Whether the header has two rows of pins\n */\n doubleRow?: boolean\n\n /**\n * Diameter of the through-hole for each pin\n */\n holeDiameter?: number | string\n\n /**\n * Diameter of the plated area around each hole\n */\n platedDiameter?: number | string\n\n /**\n * Labels for each pin\n */\n pinLabels?: string[]\n\n /**\n * Connections to other components\n */\n connections?: Connections<string>\n\n /**\n * Direction the header is facing\n */\n facingDirection?: \"left\" | \"right\"\n\n /**\n * Pin arrangement in schematic view\n */\n schPinArrangement?: SchematicPinArrangement\n\n /**\n * Schematic pin style (margins, etc)\n */\n schPinStyle?: SchematicPinStyle\n\n /**\n * Schematic pin spacing\n */\n schPinSpacing?: number | string\n\n /**\n * Schematic width\n */\n schWidth?: number | string\n\n /**\n * Schematic height\n */\n schHeight?: number | string\n}\n\nexport const pinHeaderProps = commonComponentProps.extend({\n pinCount: z.number(),\n pitch: distance.optional(),\n schFacingDirection: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n gender: z.enum([\"male\", \"female\"]).optional().default(\"male\"),\n showSilkscreenPinLabels: z.boolean().optional(),\n doubleRow: z.boolean().optional(),\n holeDiameter: distance.optional(),\n platedDiameter: distance.optional(),\n pinLabels: z.array(z.string()).optional(),\n connections: z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n facingDirection: z.enum([\"left\", \"right\"]).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n})\n\ntype InferredPinHeaderProps = z.input<typeof pinHeaderProps>\nexpectTypesMatch<PinHeaderProps, InferredPinHeaderProps>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance } from \"lib/common/distance\"\nimport { rotation } from \"circuit-json\"\n\n/**\n * @deprecated Use NetLabelProps instead.\n */\nexport interface NetAliasProps {\n net?: string\n connection?: string\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"top\" | \"right\" | \"bottom\"\n}\n\n/** @deprecated Use netLabelProps instead. */\nexport const netAliasProps = z.object({\n net: z.string().optional(),\n connection: z.string().optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"top\", \"right\", \"bottom\"]).optional(),\n})\n\ntype InferredNetAliasProps = z.input<typeof netAliasProps>\nexpectTypesMatch<NetAliasProps, InferredNetAliasProps>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance } from \"lib/common/distance\"\nimport { rotation } from \"circuit-json\"\n\nexport interface NetLabelProps {\n net?: string\n connection?: string\n connectsTo?: string | string[]\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"top\" | \"right\" | \"bottom\"\n}\n\nexport const netLabelProps = z.object({\n net: z.string().optional(),\n connection: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"top\", \"right\", \"bottom\"]).optional(),\n})\n\ntype InferredNetLabelProps = z.input<typeof netLabelProps>\nexpectTypesMatch<NetLabelProps, InferredNetLabelProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { chipProps, type ChipProps, type PinLabelsProp } from \"./chip\"\n\nexport type PushButtonProps<T extends PinLabelsProp | string = string> =\n ChipProps<T>\n\nexport const pushButtonProps = chipProps.extend({})\n\nexpectTypesMatch<PushButtonProps, z.input<typeof pushButtonProps>>(true)\n","import type { SubcircuitGroupProps } from \"./group\"\nimport { subcircuitGroupProps } from \"./group\"\nimport type { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type SubcircuitProps = SubcircuitGroupProps\n\nexport const subcircuitProps = subcircuitGroupProps\n\ntype InferredSubcircuitProps = z.input<typeof subcircuitProps>\nexpectTypesMatch<SubcircuitProps, InferredSubcircuitProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface TransistorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n type: \"npn\" | \"pnp\" | \"bjt\" | \"jfet\" | \"mosfet\" | \"igbt\"\n}\n\nexport const transistorProps = commonComponentProps.extend({\n type: z.enum([\"npn\", \"pnp\", \"bjt\", \"jfet\", \"mosfet\", \"igbt\"]),\n})\n\nexport const transistorPins = [\n \"pin1\",\n \"emitter\",\n \"pin2\",\n \"collector\",\n \"pin3\",\n \"base\",\n] as const\nexport type TransistorPinLabels = (typeof transistorPins)[number]\n\ntype InferredTransistorProps = z.input<typeof transistorProps>\nexpectTypesMatch<TransistorProps, InferredTransistorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"../common/layout\"\nimport { expectTypesMatch } from \"../typecheck\"\nimport { z } from \"zod\"\n\nexport interface MosfetProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n channelType: \"n\" | \"p\"\n mosfetMode: \"enhancement\" | \"depletion\"\n}\n\nexport const mosfetProps = commonComponentProps.extend({\n channelType: z.enum([\"n\", \"p\"]),\n mosfetMode: z.enum([\"enhancement\", \"depletion\"]),\n})\n\nexport const mosfetPins = [\n \"pin1\",\n \"drain\",\n \"pin2\",\n \"source\",\n \"pin3\",\n \"gate\",\n] as const\nexport type MosfetPinLabels = (typeof mosfetPins)[number]\n\ntype InferredMosfetProps = z.input<typeof mosfetProps>\nexpectTypesMatch<MosfetProps, InferredMosfetProps>(true)\n","import { inductance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface InductorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n inductance: number | string\n maxCurrentRating?: number | string\n schOrientation?: SchematicOrientation\n}\n\nexport const inductorProps = commonComponentProps.extend({\n inductance,\n maxCurrentRating: z.union([z.string(), z.number()]).optional(),\n schOrientation: schematicOrientation.optional(),\n})\n\nexport const inductorPins = lrPins\nexport type InductorPinLabels = (typeof inductorPins)[number]\n\ntype InferredInductorProps = z.input<typeof inductorProps>\n\nexpectTypesMatch<InductorProps, InferredInductorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\n\nconst diodeConnectionKeys = z.enum([\n \"anode\",\n \"cathode\",\n \"pin1\",\n \"pin2\",\n \"pos\",\n \"neg\",\n])\n\nconst connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nconst connectionsProp = z.record(diodeConnectionKeys, connectionTarget)\n\nconst diodeVariant = z.enum([\"standard\", \"schottky\", \"zener\", \"photo\", \"tvs\"])\n\nexport const diodeProps = commonComponentProps\n .extend({\n connections: connectionsProp.optional(),\n variant: diodeVariant.optional().default(\"standard\"),\n standard: z.boolean().optional(),\n schottky: z.boolean().optional(),\n zener: z.boolean().optional(),\n photo: z.boolean().optional(),\n tvs: z.boolean().optional(),\n schOrientation: schematicOrientation.optional(),\n })\n .superRefine((data, ctx) => {\n // Check if multiple boolean flags are set directly\n const enabledFlags = [\n data.standard,\n data.schottky,\n data.zener,\n data.photo,\n data.tvs,\n ].filter(Boolean).length\n\n if (enabledFlags > 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Exactly one diode variant must be enabled\",\n path: [],\n })\n return z.INVALID\n }\n })\n .transform((data) => {\n // Set all variant flags to false initially\n const result = {\n ...data,\n standard: false,\n schottky: false,\n zener: false,\n photo: false,\n tvs: false,\n }\n\n if (data.standard) result.standard = true\n else if (data.schottky) result.schottky = true\n else if (data.zener) result.zener = true\n else if (data.photo) result.photo = true\n else if (data.tvs) result.tvs = true\n else {\n switch (data.variant) {\n case \"standard\":\n result.standard = true\n break\n case \"schottky\":\n result.schottky = true\n break\n case \"zener\":\n result.zener = true\n break\n case \"photo\":\n result.photo = true\n break\n case \"tvs\":\n result.tvs = true\n break\n default:\n result.standard = true\n }\n }\n\n return result\n })\n\nexport const diodePins = lrPolarPins\nexport type DiodePinLabels = (typeof diodePins)[number]\n\nexport interface DiodeProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n connections?: {\n anode?: string | string[] | readonly string[]\n cathode?: string | string[] | readonly string[]\n pin1?: string | string[] | readonly string[]\n pin2?: string | string[] | readonly string[]\n pos?: string | string[] | readonly string[]\n neg?: string | string[] | readonly string[]\n }\n variant?: \"standard\" | \"schottky\" | \"zener\" | \"photo\" | \"tvs\"\n standard?: boolean\n schottky?: boolean\n zener?: boolean\n photo?: boolean\n tvs?: boolean\n schOrientation?: SchematicOrientation\n}\n\nexport type InferredDiodeProps = z.input<typeof diodeProps>\nexpectTypesMatch<InferredDiodeProps, DiodeProps>(true)\n","import { commonComponentProps, lrPolarPins } from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { z } from \"zod\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\n\nexport type LedPinLabels = (typeof lrPolarPins)[number]\n\nexport const ledProps = commonComponentProps.extend({\n color: z.string().optional(),\n wavelength: z.string().optional(),\n schDisplayValue: z.string().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: createConnectionsProp(lrPolarPins).optional(),\n})\nexport const ledPins = lrPolarPins\nexport type LedProps = z.input<typeof ledProps>\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nimport { z } from \"zod\"\n\nexport interface SwitchProps extends CommonComponentProps {\n type?: \"spst\" | \"spdt\" | \"dpst\" | \"dpdt\"\n isNormallyClosed?: boolean\n spdt?: boolean\n spst?: boolean\n dpst?: boolean\n dpdt?: boolean\n}\n\nexport const switchProps = commonComponentProps\n .extend({\n type: z.enum([\"spst\", \"spdt\", \"dpst\", \"dpdt\"]).optional(),\n isNormallyClosed: z.boolean().optional().default(false),\n spst: z.boolean().optional(),\n spdt: z.boolean().optional(),\n dpst: z.boolean().optional(),\n dpdt: z.boolean().optional(),\n })\n .transform((props) => {\n const updatedProps: SwitchProps = { ...props }\n\n if (updatedProps.dpdt) {\n updatedProps.type = \"dpdt\"\n } else if (updatedProps.spst) {\n updatedProps.type = \"spst\"\n } else if (updatedProps.spdt) {\n updatedProps.type = \"spdt\"\n } else if (updatedProps.dpst) {\n updatedProps.type = \"dpst\"\n }\n\n switch (updatedProps.type) {\n case \"spdt\":\n updatedProps.spdt = true\n break\n case \"spst\":\n updatedProps.spst = true\n break\n case \"dpst\":\n updatedProps.dpst = true\n break\n case \"dpdt\":\n updatedProps.dpdt = true\n break\n }\n\n return updatedProps\n })\n\nexport type InferredSwitchProps = z.infer<typeof switchProps>\nexpectTypesMatch<SwitchProps, InferredSwitchProps>(true)\n","import { length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\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","import { length, route_hint_point } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\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 { distance, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\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","import { distance, layer_ref, type LayerRefInput } from \"circuit-json\"\nimport { commonLayoutProps, type CommonLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ViaProps extends CommonLayoutProps {\n name?: string\n fromLayer: LayerRefInput\n toLayer: LayerRefInput\n holeDiameter: number | string\n outerDiameter: number | string\n connectsTo?: string | string[]\n}\n\nexport const viaProps = commonLayoutProps.extend({\n name: z.string().optional(),\n fromLayer: layer_ref,\n toLayer: layer_ref,\n holeDiameter: distance,\n outerDiameter: distance,\n connectsTo: z.string().or(z.array(z.string())).optional(),\n})\nexport type InferredViaProps = z.input<typeof viaProps>\nexpectTypesMatch<ViaProps, InferredViaProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface TestpointProps extends CommonComponentProps {\n /**\n * The footprint variant of the testpoint either a surface pad or through-hole\n */\n footprintVariant?: \"pad\" | \"through_hole\"\n /**\n * The shape of the pad if using a pad variant\n */\n padShape?: \"rect\" | \"circle\"\n /**\n * Diameter of the copper pad (applies to both SMD pads and plated holes)\n */\n padDiameter?: number | string\n /**\n * Diameter of the hole if using a through-hole testpoint\n */\n holeDiameter?: number | string\n /**\n * Width of the pad when padShape is rect\n */\n width?: number | string\n /**\n * Height of the pad when padShape is rect\n */\n height?: number | string\n}\n\nexport const testpointProps = commonComponentProps\n .extend({\n footprintVariant: z.enum([\"pad\", \"through_hole\"]).optional(),\n padShape: z.enum([\"rect\", \"circle\"]).optional().default(\"circle\"),\n padDiameter: distance.optional(),\n holeDiameter: distance.optional(),\n width: distance.optional(),\n height: distance.optional(),\n })\n .refine(\n (props) =>\n props.footprintVariant !== \"through_hole\" ||\n props.holeDiameter !== undefined,\n { message: \"holeDiameter is required for through_hole testpoints\" },\n )\n\nexport type InferredTestpointProps = z.input<typeof testpointProps>\nexpectTypesMatch<TestpointProps, InferredTestpointProps>(true)\n","import { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface BreakoutPointProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n connection: string\n}\n\nexport const breakoutPointProps = pcbLayoutProps\n .omit({ pcbRotation: true, layer: true })\n .extend({\n connection: z.string(),\n })\n\ntype InferredBreakoutPointProps = z.input<typeof breakoutPointProps>\nexpectTypesMatch<BreakoutPointProps, InferredBreakoutPointProps>(true)\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\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","import { voltage } from \"circuit-json\"\nimport { commonComponentProps } from \"lib/common/layout\"\nimport type { z } from \"zod\"\n\nexport const powerSourceProps = commonComponentProps.extend({\n voltage,\n})\nexport type PowerSourceProps = z.input<typeof powerSourceProps>\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\n\nexport const schematicBoxProps = z\n .object({\n schX: distance.optional(),\n schY: distance.optional(),\n width: distance.optional(),\n height: distance.optional(),\n overlay: z.array(z.string()).optional(),\n\n padding: distance.optional(),\n paddingLeft: distance.optional(),\n paddingRight: distance.optional(),\n paddingTop: distance.optional(),\n paddingBottom: distance.optional(),\n\n title: z.string().optional(),\n titleAlignment: ninePointAnchor.default(\"top_left\"),\n titleColor: z.string().optional(),\n titleFontSize: distance.optional(),\n titleInside: z.boolean().default(false),\n strokeStyle: z.enum([\"solid\", \"dashed\"]).default(\"solid\"),\n })\n .refine(\n (elm) =>\n (elm.width !== undefined && elm.height !== undefined) ||\n (Array.isArray(elm.overlay) && elm.overlay.length > 0),\n {\n message:\n \"Must provide either both `width` and `height`, or a non-empty `overlay` array.\",\n },\n )\n .refine(\n (elm) =>\n !(\n elm.width !== undefined &&\n elm.height !== undefined &&\n Array.isArray(elm.overlay) &&\n elm.overlay.length > 0\n ),\n {\n message:\n \"Cannot provide both `width`/`height` and `overlay` at the same time.\",\n },\n )\nexport type SchematicBoxProps = z.input<typeof schematicBoxProps>\n","import { z } from \"zod\"\n\nexport const ninePointAnchor = z.enum([\n \"top_left\",\n \"top_center\",\n \"top_right\",\n \"center_left\",\n \"center\",\n \"center_right\",\n \"bottom_left\",\n \"bottom_center\",\n \"bottom_right\",\n])\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\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","import { distance, rotation } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { fivePointAnchor } from \"lib/common/fivePointAnchor\"\n\nexport const schematicTextProps = z.object({\n schX: distance.optional(),\n schY: distance.optional(),\n text: z.string(),\n fontSize: z.number().default(1),\n anchor: z\n .union([fivePointAnchor.describe(\"legacy\"), ninePointAnchor])\n .default(\"center\"),\n color: z.string().default(\"#000000\"),\n schRotation: rotation.default(0),\n})\nexport type SchematicTextProps = z.input<typeof schematicTextProps>\n","import { z } from \"zod\"\n\nexport const fivePointAnchor = z.enum([\n \"center\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n])\n","import { point } from \"circuit-json\"\nimport { z } from \"zod\"\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","import { length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { z } from \"zod\"\n\nexport const silkscreenTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: ninePointAnchor.default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type SilkscreenTextProps = z.input<typeof silkscreenTextProps>\n","import { length, route_hint_point } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\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","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport type { z } from \"zod\"\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","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n filled: z.boolean().default(true).optional(),\n stroke: z.enum([\"dashed\", \"solid\", \"none\"]).optional(),\n strokeWidth: distance.optional(),\n width: distance,\n height: distance,\n })\nexport type SilkscreenRectProps = z.input<typeof silkscreenRectProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\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","import { distance, layer_ref, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\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","import { direction } from \"lib/common/direction\"\nimport { commonLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\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","import {\n autorouterProp,\n type AutorouterProp,\n type PartsEngine,\n partsEngine,\n} from \"./components/group\"\nimport { expectTypesMatch } from \"./typecheck\"\nimport { z } from \"zod\"\n\nexport interface PlatformConfig {\n partsEngine?: PartsEngine\n\n autorouter?: AutorouterProp\n\n // TODO this follows a subset of the localStorage interface\n localCacheEngine?: any\n\n registryApiUrl?: string\n\n cloudAutorouterUrl?: string\n\n projectName?: string\n version?: string\n url?: string\n printBoardInformationToSilkscreen?: boolean\n\n pcbDisabled?: boolean\n schematicDisabled?: boolean\n partsEngineDisabled?: boolean\n\n footprintLibraryMap?: Record<\n string,\n Record<\n string,\n | any[]\n | ((path: string) => Promise<{\n footprintCircuitJson: any[]\n }>)\n >\n >\n}\n\nconst unvalidatedCircuitJson = z.array(z.any()).describe(\"Circuit JSON\")\nconst pathToCircuitJsonFn = z\n .function()\n .args(z.string())\n .returns(z.promise(z.object({ footprintCircuitJson: z.array(z.any()) })))\n .describe(\"A function that takes a path and returns Circuit JSON\")\n\nexport const platformConfig = z.object({\n partsEngine: partsEngine.optional(),\n autorouter: autorouterProp.optional(),\n registryApiUrl: z.string().optional(),\n cloudAutorouterUrl: z.string().optional(),\n projectName: z.string().optional(),\n version: z.string().optional(),\n url: z.string().optional(),\n printBoardInformationToSilkscreen: z.boolean().optional(),\n localCacheEngine: z.any().optional(),\n pcbDisabled: z.boolean().optional(),\n schematicDisabled: z.boolean().optional(),\n partsEngineDisabled: z.boolean().optional(),\n footprintLibraryMap: z\n .record(\n z.string(),\n z.record(\n z.string(),\n z.union([unvalidatedCircuitJson, pathToCircuitJsonFn]),\n ),\n )\n .optional(),\n}) as z.ZodType<PlatformConfig>\n\nexpectTypesMatch<PlatformConfig, z.infer<typeof platformConfig>>(true)\n"],"mappings":"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","names":["z","z","distance","z","z","z","z","z","z","distance","z","z","distance","z","distance","distance","distance","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","point","z","point","z","z","z","point","z","point","z","z","distance","z","distance","distance","distance","supplier_name","z","supplier_name","distance","distance","z","connectionTarget","z","distance","connectionTarget","z","distance","z","distance","z","z","distance","z","distance","z","resistance","z","resistance","z","frequency","capacitance","z","frequency","capacitance","distance","z","z","distance","capacitance","z","capacitance","z","z","z","distance","length","z","distance","z","z","distance","z","z","distance","z","z","distance","z","z","distance","distance","route_hint_point","z","z","distance","route_hint_point","layer_ref","z","layer_ref","z","z","distance","z","distance","connectionTarget","z","rotation","z","distance","z","rotation","z","distance","z","z","z","z","z","connectionTarget","connectionsProp","z","z","z","length","z","length","length","route_hint_point","z","route_hint_point","length","distance","route_hint_point","z","distance","layer_ref","z","layer_ref","distance","distance","z","distance","z","distance","z","distance","voltage","voltage","distance","z","z","z","distance","distance","z","distance","rotation","z","z","z","distance","rotation","point","z","length","z","length","length","route_hint_point","z","route_hint_point","length","distance","distance","distance","z","distance","distance","z","distance","distance","layer_ref","route_hint_point","z","z","z"]}
|
|
1
|
+
{"version":3,"sources":["../lib/typecheck.ts","../lib/common/direction.ts","../lib/common/portHints.ts","../lib/common/layout.ts","../lib/common/cadModel.ts","../lib/common/point3.ts","../lib/common/footprintProp.ts","../lib/common/schematicOrientation.ts","../lib/common/schematicPinDefinitions.ts","../lib/common/schematicPinStyle.ts","../lib/components/board.ts","../lib/common/point.ts","../lib/components/group.ts","../lib/manual-edits/manual-edit-events/base_manual_edit_event.ts","../lib/manual-edits/manual-edit-events/edit_pcb_component_location_event.ts","../lib/manual-edits/manual-edit-events/edit_trace_hint_event.ts","../lib/manual-edits/manual-edit-events/edit_schematic_component_location_event.ts","../lib/manual-edits/manual-edit-events/edit_pcb_group_location_event.ts","../lib/manual-edits/manual-edit-events/edit_schematic_group_location_event.ts","../lib/manual-edits/manual_edit_event.ts","../lib/manual-edits/manual_edits_file.ts","../lib/manual-edits/manual_pcb_placement.ts","../lib/manual-edits/manual_trace_hint.ts","../lib/manual-edits/manual_schematic_placement.ts","../lib/components/breakout.ts","../lib/components/chip.ts","../lib/components/jumper.ts","../lib/common/connectionsProp.ts","../lib/components/solderjumper.ts","../lib/components/connector.ts","../lib/components/fuse.ts","../lib/components/platedhole.ts","../lib/components/resistor.ts","../lib/components/potentiometer.ts","../lib/components/crystal.ts","../lib/components/resonator.ts","../lib/components/stampboard.ts","../lib/components/capacitor.ts","../lib/components/net.ts","../lib/components/constrainedlayout.ts","../lib/common/distance.ts","../lib/components/constraint.ts","../lib/components/cutout.ts","../lib/components/smtpad.ts","../lib/components/solderpaste.ts","../lib/components/hole.ts","../lib/components/trace.ts","../lib/components/footprint.ts","../lib/components/battery.ts","../lib/components/pin-header.ts","../lib/components/netalias.ts","../lib/components/netlabel.ts","../lib/components/push-button.ts","../lib/components/subcircuit.ts","../lib/components/transistor.ts","../lib/components/mosfet.ts","../lib/components/inductor.ts","../lib/components/diode.ts","../lib/components/led.ts","../lib/components/switch.ts","../lib/components/fabrication-note-text.ts","../lib/components/fabrication-note-path.ts","../lib/components/pcb-trace.ts","../lib/components/via.ts","../lib/components/testpoint.ts","../lib/components/breakoutpoint.ts","../lib/components/pcb-keepout.ts","../lib/components/power-source.ts","../lib/components/schematic-box.ts","../lib/common/ninePointAnchor.ts","../lib/components/schematic-line.ts","../lib/components/schematic-text.ts","../lib/common/fivePointAnchor.ts","../lib/components/schematic-path.ts","../lib/components/silkscreen-text.ts","../lib/components/silkscreen-path.ts","../lib/components/silkscreen-line.ts","../lib/components/silkscreen-rect.ts","../lib/components/silkscreen-circle.ts","../lib/components/trace-hint.ts","../lib/components/port.ts","../lib/platformConfig.ts"],"sourcesContent":["import type { TypeEqual } from \"ts-expect\"\n\ntype IsNever<T> = [T] extends [never] ? true : false\n\ntype GetMismatchedProps<T1, T2> = {\n [K in keyof T1 & keyof T2]: T1[K] extends T2[K]\n ? T2[K] extends T1[K]\n ? never\n : K\n : K\n}[keyof T1 & keyof T2]\n\nexport const expectTypesMatch = <\n const T1,\n const T2,\n T3 = Exclude<keyof T1, keyof T2>,\n T4 = Exclude<keyof T2, keyof T1>,\n T5 = GetMismatchedProps<T1, T2>,\n>(\n shouldBe: IsNever<T3> extends true\n ? IsNever<T4> extends true\n ? IsNever<T5> extends true\n ? TypeEqual<T1, T2>\n : `property ${T5 extends string ? T5 : \"\"} has mismatched types`\n : `extra props ${T4 extends string ? T4 : \"\"}`\n : `missing props ${T3 extends string ? T3 : \"\"}`,\n): void => {}\n\n// ------ TESTS -------\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n b: number\n }\n>(\"extra props b\")\n\nexpectTypesMatch<\n {\n a: number\n b: number\n },\n {\n a: number\n }\n>(\"missing props b\")\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n }\n>(true)\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: string\n }\n>(\"property a has mismatched types\")\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 {\n type LayerRefInput,\n distance,\n layer_ref,\n rotation,\n supplier_name,\n} from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { type CadModelProp, cadModelProp } from \"./cadModel\"\nimport { type FootprintProp, footprintProp } from \"./footprintProp\"\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?: FootprintProp\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 type SupplierPartNumbers = { [k in SupplierName]?: string[] }\nexport interface SupplierProps {\n supplierPartNumbers?: SupplierPartNumbers\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<PinLabel extends string = string>\n extends CommonLayoutProps {\n key?: any\n name: string\n pinAttributes?: Record<PinLabel, Record<string, any>>\n supplierPartNumbers?: SupplierPartNumbers\n cadModel?: CadModelProp\n children?: any\n symbolName?: string\n doNotPlace?: boolean\n}\n\nexport const commonComponentProps = commonLayoutProps\n .merge(supplierProps)\n .extend({\n key: z.any().optional(),\n name: z.string(),\n cadModel: cadModelProp.optional(),\n children: z.any().optional(),\n symbolName: z.string().optional(),\n doNotPlace: z.boolean().optional(),\n pinAttributes: z\n .record(z.string(), z.record(z.string(), z.any()))\n .optional(),\n })\n\ntype InferredCommonComponentProps = z.input<typeof commonComponentProps>\nexpectTypesMatch<CommonComponentProps, InferredCommonComponentProps>(true)\n\nexport const componentProps = commonComponentProps\nexport type ComponentProps = z.input<typeof componentProps>\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 { 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 =\n | null\n | string\n | CadModelStl\n | CadModelObj\n | CadModelJscad\n\nexport const cadModelProp = z.union([\n z.null(),\n z.string(),\n cadModelStl,\n cadModelObj,\n cadModelJscad,\n])\n\ntype InferredCadModelProp = z.input<typeof cadModelProp>\nexpectTypesMatch<CadModelProp, InferredCadModelProp>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n","import type { LayerRef } from \"circuit-json\"\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 FootprintProp = string | ReactElement | FootprintSoupElements[]\nexport const footprintProp = z.custom<FootprintProp>((v) => true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const schematicOrientation = z\n .enum([\n \"vertical\",\n \"horizontal\",\n \"pos_top\",\n \"pos_bottom\",\n \"pos_left\",\n \"pos_right\",\n \"neg_top\",\n \"neg_bottom\",\n \"neg_left\",\n \"neg_right\",\n ])\n .describe(\n \"horizontal means pins go 1->2 rightward and vertical means pins go 1->2 downward (generally, positive on top)\",\n )\n\nexport type SchematicOrientation =\n | \"vertical\"\n | \"horizontal\"\n | \"pos_top\"\n | \"pos_bottom\"\n | \"pos_left\"\n | \"pos_right\"\n | \"neg_top\"\n | \"neg_bottom\"\n | \"neg_left\"\n | \"neg_right\"\n\nexpectTypesMatch<SchematicOrientation, z.infer<typeof schematicOrientation>>(\n true,\n)\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: Array<number | string>\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 interface SchematicPortArrangement\n extends SchematicPortArrangementWithSizes,\n SchematicPortArrangementWithSides,\n SchematicPortArrangementWithPinCounts {}\n\nexport type SchematicPinArrangement = SchematicPortArrangement\nexport type SchematicPinArrangementWithSizes = SchematicPortArrangementWithSizes\nexport type SchematicPinArrangementWithSides = SchematicPortArrangementWithSides\nexport type SchematicPinArrangementWithPinCounts =\n SchematicPortArrangementWithPinCounts\n\nexport const explicitPinSideDefinition = z.object({\n pins: z.array(z.union([z.number(), z.string()])),\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\n/**\n * @deprecated Use schematicPinArrangement instead.\n */\nexport const schematicPortArrangement = z.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.number().optional().describe(\"@deprecated, use bottomPinCount\"),\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n leftSide: explicitPinSideDefinition.optional(),\n rightSide: explicitPinSideDefinition.optional(),\n topSide: explicitPinSideDefinition.optional(),\n bottomSide: explicitPinSideDefinition.optional(),\n})\n\nexport const schematicPinArrangement = schematicPortArrangement\n\nexpectTypesMatch<\n SchematicPortArrangement,\n z.input<typeof schematicPortArrangement>\n>(true)\n","import { distance } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type SchematicPinStyle = Record<\n string,\n {\n marginTop?: number | string\n marginRight?: number | string\n marginBottom?: number | string\n marginLeft?: number | string\n\n /** @deprecated use marginLeft */\n leftMargin?: number | string\n /** @deprecated use marginRight */\n rightMargin?: number | string\n /** @deprecated use marginTop */\n topMargin?: number | string\n /** @deprecated use marginBottom */\n bottomMargin?: number | string\n }\n>\n\nexport const schematicPinStyle = z.record(\n z.object({\n marginLeft: distance.optional(),\n marginRight: distance.optional(),\n marginTop: distance.optional(),\n marginBottom: distance.optional(),\n\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 type { LayoutBuilder, ManualEditFile } from \"@tscircuit/layout\"\nimport { distance } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport { type Point, point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { subcircuitGroupProps, type SubcircuitGroupProps } from \"./group\"\n\nexport interface BoardProps extends Omit<SubcircuitGroupProps, \"subcircuit\"> {\n width?: number | string\n height?: number | string\n outline?: Point[]\n outlineOffsetX?: number | string\n outlineOffsetY?: number | string\n material?: \"fr4\" | \"fr1\"\n}\n\nexport const boardProps = subcircuitGroupProps.extend({\n width: distance.optional(),\n height: distance.optional(),\n outline: z.array(point).optional(),\n outlineOffsetX: distance.optional(),\n outlineOffsetY: distance.optional(),\n material: z.enum([\"fr4\", \"fr1\"]).default(\"fr4\"),\n})\n\ntype InferredBoardProps = z.input<typeof boardProps>\nexpectTypesMatch<BoardProps, InferredBoardProps>(true)\n","import { distance } from \"circuit-json\"\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 type { LayoutBuilder } from \"@tscircuit/layout\"\nimport { layer_ref, length } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport {\n type CommonLayoutProps,\n commonLayoutProps,\n type SupplierPartNumbers,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport type { AnySourceComponent, PcbTrace } from \"circuit-json\"\nimport {\n manual_edits_file,\n type ManualEditsFile,\n type ManualEditsFileInput,\n} from \"lib/manual-edits\"\n\nexport const layoutConfig = z.object({\n layoutMode: z.enum([\"grid\", \"flex\", \"match-adapt\", \"none\"]).optional(),\n position: z.enum([\"absolute\", \"relative\"]).optional(),\n\n grid: z.boolean().optional(),\n gridCols: z.number().or(z.string()).optional(),\n gridRows: z.number().or(z.string()).optional(),\n gridTemplateRows: z.string().optional(),\n gridTemplateColumns: z.string().optional(),\n gridTemplate: z.string().optional(),\n gridGap: z.number().or(z.string()).optional(),\n\n flex: z.boolean().or(z.string()).optional(),\n flexDirection: z.enum([\"row\", \"column\"]).optional(),\n alignItems: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n justifyContent: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n flexRow: z.boolean().optional(),\n flexColumn: z.boolean().optional(),\n gap: z.number().or(z.string()).optional(),\n\n padding: length.optional(),\n paddingLeft: length.optional(),\n paddingRight: length.optional(),\n paddingTop: length.optional(),\n paddingBottom: length.optional(),\n paddingX: length.optional(),\n paddingY: length.optional(),\n\n width: length.optional(),\n height: length.optional(),\n\n matchAdapt: z.boolean().optional(),\n matchAdaptTemplate: z.any().optional(),\n})\n\nexport interface LayoutConfig {\n layoutMode?: \"grid\" | \"flex\" | \"match-adapt\" | \"none\"\n position?: \"absolute\" | \"relative\"\n\n grid?: boolean\n gridCols?: number | string\n gridRows?: number | string\n gridTemplateRows?: string\n gridTemplateColumns?: string\n gridTemplate?: string\n gridGap?: number | string\n\n flex?: boolean | string\n flexDirection?: \"row\" | \"column\"\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\"\n justifyContent?: \"start\" | \"center\" | \"end\" | \"stretch\"\n flexRow?: boolean\n flexColumn?: boolean\n gap?: number | string\n\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n paddingX?: Distance\n paddingY?: Distance\n\n width?: Distance\n height?: Distance\n\n matchAdapt?: boolean\n matchAdaptTemplate?: any\n}\n\nexpectTypesMatch<LayoutConfig, z.input<typeof layoutConfig>>(true)\n\nexport interface Border {\n strokeWidth?: Distance\n dashed?: boolean\n solid?: boolean\n}\n\nexport const border = z.object({\n strokeWidth: length.optional(),\n dashed: z.boolean().optional(),\n solid: z.boolean().optional(),\n})\n\nexport interface BaseGroupProps extends CommonLayoutProps, LayoutConfig {\n name?: string\n key?: any\n children?: any\n\n /**\n * Title to display above this group in the schematic view\n */\n schTitle?: string\n\n pcbWidth?: Distance\n pcbHeight?: Distance\n schWidth?: Distance\n schHeight?: Distance\n\n pcbLayout?: LayoutConfig\n schLayout?: LayoutConfig\n cellBorder?: Border | null\n border?: Border | null\n schPadding?: Distance\n schPaddingLeft?: Distance\n schPaddingRight?: Distance\n schPaddingTop?: Distance\n schPaddingBottom?: Distance\n}\n\nexport type PartsEngine = {\n findPart: (params: {\n sourceComponent: AnySourceComponent\n footprinterString?: string\n }) => Promise<SupplierPartNumbers> | SupplierPartNumbers\n}\n\nexport interface PcbRouteCache {\n pcbTraces: PcbTrace[]\n cacheKey: string\n}\n\nexport interface AutorouterConfig {\n serverUrl?: string\n inputFormat?: \"simplified\" | \"circuit-json\"\n serverMode?: \"job\" | \"solve-endpoint\"\n serverCacheEnabled?: boolean\n cache?: PcbRouteCache\n traceClearance?: Distance\n groupMode?: \"sequential-trace\" | \"subcircuit\"\n local?: boolean\n algorithmFn?: (simpleRouteJson: any) => Promise<any>\n preset?:\n | \"sequential-trace\"\n | \"subcircuit\"\n | \"auto\"\n | \"auto-local\"\n | \"auto-cloud\"\n}\n\nexport type AutorouterProp =\n | AutorouterConfig\n | \"sequential-trace\"\n | \"subcircuit\"\n | \"auto\"\n | \"auto-local\"\n | \"auto-cloud\"\n\nexport const autorouterConfig = z.object({\n serverUrl: z.string().optional(),\n inputFormat: z.enum([\"simplified\", \"circuit-json\"]).optional(),\n serverMode: z.enum([\"job\", \"solve-endpoint\"]).optional(),\n serverCacheEnabled: z.boolean().optional(),\n cache: z.custom<PcbRouteCache>((v) => true).optional(),\n traceClearance: length.optional(),\n groupMode: z.enum([\"sequential-trace\", \"subcircuit\"]).optional(),\n algorithmFn: z\n .custom<(simpleRouteJson: any) => Promise<any>>(\n (v) => typeof v === \"function\" || v === undefined,\n )\n .optional(),\n preset: z\n .enum([\n \"sequential-trace\",\n \"subcircuit\",\n \"auto\",\n \"auto-local\",\n \"auto-cloud\",\n ])\n .optional(),\n local: z.boolean().optional(),\n})\n\nexport const autorouterProp = z.union([\n autorouterConfig,\n z.literal(\"sequential-trace\"),\n z.literal(\"subcircuit\"),\n z.literal(\"auto\"),\n z.literal(\"auto-local\"),\n z.literal(\"auto-cloud\"),\n])\n\nexport interface SubcircuitGroupProps extends BaseGroupProps {\n layout?: LayoutBuilder\n manualEdits?: ManualEditsFileInput\n routingDisabled?: boolean\n defaultTraceWidth?: Distance\n minTraceWidth?: Distance\n pcbRouteCache?: PcbRouteCache\n\n autorouter?: AutorouterProp\n\n /**\n * If true, we'll automatically layout the schematic for this group. Must be\n * a subcircuit (currently). This is eventually going to be replaced with more\n * sophisticated layout options/modes and will be enabled by default.\n */\n schAutoLayoutEnabled?: boolean\n\n /**\n * If true, net labels will automatically be created for complex traces\n */\n schTraceAutoLabelEnabled?: boolean\n\n partsEngine?: PartsEngine\n}\n\nexport interface SubcircuitGroupPropsWithBool extends SubcircuitGroupProps {\n subcircuit: true\n}\n\nexport interface NonSubcircuitGroupProps extends BaseGroupProps {\n subcircuit?: false | undefined\n}\n\nexport type GroupProps = SubcircuitGroupPropsWithBool | NonSubcircuitGroupProps\n\nexport const baseGroupProps = commonLayoutProps.extend({\n name: z.string().optional(),\n children: z.any().optional(),\n schTitle: z.string().optional(),\n key: z.any().optional(),\n\n ...layoutConfig.shape,\n pcbWidth: length.optional(),\n pcbHeight: length.optional(),\n schWidth: length.optional(),\n schHeight: length.optional(),\n pcbLayout: layoutConfig.optional(),\n schLayout: layoutConfig.optional(),\n cellBorder: border.nullable().optional(),\n border: border.nullable().optional(),\n schPadding: length.optional(),\n schPaddingLeft: length.optional(),\n schPaddingRight: length.optional(),\n schPaddingTop: length.optional(),\n schPaddingBottom: length.optional(),\n})\n\nexport const partsEngine = z.custom<PartsEngine>((v) => \"findPart\" in v)\n\nexport const subcircuitGroupProps = baseGroupProps.extend({\n layout: z.custom<LayoutBuilder>((v) => true).optional(),\n manualEdits: manual_edits_file.optional(),\n schAutoLayoutEnabled: z.boolean().optional(),\n schTraceAutoLabelEnabled: z.boolean().optional(),\n routingDisabled: z.boolean().optional(),\n defaultTraceWidth: length.optional(),\n minTraceWidth: length.optional(),\n partsEngine: partsEngine.optional(),\n pcbRouteCache: z.custom<PcbRouteCache>((v) => true).optional(),\n autorouter: autorouterProp.optional(),\n})\n\nexport const subcircuitGroupPropsWithBool = subcircuitGroupProps.extend({\n subcircuit: z.literal(true),\n})\n\nexport const groupProps = z.discriminatedUnion(\"subcircuit\", [\n baseGroupProps.extend({ subcircuit: z.literal(false).optional() }),\n subcircuitGroupPropsWithBool,\n])\n\ntype InferredBaseGroupProps = z.input<typeof baseGroupProps>\ntype InferredSubcircuitGroupPropsWithBool = z.input<\n typeof subcircuitGroupPropsWithBool\n>\n\nexpectTypesMatch<BaseGroupProps, InferredBaseGroupProps>(true)\nexpectTypesMatch<\n SubcircuitGroupPropsWithBool,\n InferredSubcircuitGroupPropsWithBool\n>(true)\n\ntype InferredGroupProps = z.input<typeof groupProps>\nexpectTypesMatch<GroupProps, InferredGroupProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const base_manual_edit_event = z.object({\n edit_event_id: z.string(),\n in_progress: z.boolean().optional(),\n created_at: z.number(),\n})\n\nexport interface BaseManualEditEvent {\n edit_event_id: string\n in_progress?: boolean\n created_at: number\n}\n\nexport type BaseManualEditEventInput = z.input<typeof base_manual_edit_event>\n\nexpectTypesMatch<BaseManualEditEvent, z.infer<typeof base_manual_edit_event>>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_pcb_component_location_event = base_manual_edit_event.extend({\n pcb_edit_event_type: z\n .literal(\"edit_component_location\")\n .describe(\"deprecated\"),\n edit_event_type: z.literal(\"edit_pcb_component_location\"),\n pcb_component_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n})\n\n/** @deprecated use edit_pcb_component_location_event instead */\nexport const edit_component_location_event = edit_pcb_component_location_event\n\nexport interface EditPcbComponentLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_pcb_component_location\"\n /** @deprecated */\n pcb_edit_event_type: \"edit_component_location\"\n pcb_component_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditPcbComponentLocationEventInput = z.input<\n typeof edit_pcb_component_location_event\n>\n\nexpectTypesMatch<\n EditPcbComponentLocationEvent,\n z.infer<typeof edit_pcb_component_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_trace_hint_event = base_manual_edit_event.extend({\n pcb_edit_event_type: z.literal(\"edit_trace_hint\").describe(\"deprecated\"),\n edit_event_type: z.literal(\"edit_pcb_trace_hint\").optional(),\n pcb_port_id: z.string(),\n pcb_trace_hint_id: z.string().optional(),\n route: z.array(\n z.object({ x: z.number(), y: z.number(), via: z.boolean().optional() }),\n ),\n})\n\nexport interface EditTraceHintEvent extends BaseManualEditEvent {\n /** @deprecated */\n pcb_edit_event_type: \"edit_trace_hint\"\n edit_event_type?: \"edit_pcb_trace_hint\"\n pcb_port_id: string\n pcb_trace_hint_id?: string\n route: Array<{ x: number; y: number; via?: boolean }>\n}\n\nexport type EditTraceHintEventInput = z.input<typeof edit_trace_hint_event>\n\nexpectTypesMatch<EditTraceHintEvent, z.infer<typeof edit_trace_hint_event>>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_schematic_component_location_event =\n base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_schematic_component_location\"),\n schematic_component_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n })\n\nexport interface EditSchematicComponentLocationEvent\n extends BaseManualEditEvent {\n edit_event_type: \"edit_schematic_component_location\"\n schematic_component_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditSchematicComponentLocationEventInput = z.input<\n typeof edit_schematic_component_location_event\n>\n\nexpectTypesMatch<\n EditSchematicComponentLocationEvent,\n z.infer<typeof edit_schematic_component_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_pcb_group_location_event = base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_pcb_group_location\"),\n pcb_group_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n})\n\nexport interface EditPcbGroupLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_pcb_group_location\"\n pcb_group_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditPcbGroupLocationEventInput = z.input<\n typeof edit_pcb_group_location_event\n>\n\nexpectTypesMatch<\n EditPcbGroupLocationEvent,\n z.infer<typeof edit_pcb_group_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_schematic_group_location_event =\n base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_schematic_group_location\"),\n schematic_group_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n })\n\nexport interface EditSchematicGroupLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_schematic_group_location\"\n schematic_group_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditSchematicGroupLocationEventInput = z.input<\n typeof edit_schematic_group_location_event\n>\n\nexpectTypesMatch<\n EditSchematicGroupLocationEvent,\n z.infer<typeof edit_schematic_group_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n edit_pcb_component_location_event,\n type EditPcbComponentLocationEvent,\n} from \"./manual-edit-events/edit_pcb_component_location_event\"\nimport {\n edit_schematic_component_location_event,\n type EditSchematicComponentLocationEvent,\n} from \"./manual-edit-events/edit_schematic_component_location_event\"\nimport {\n edit_trace_hint_event,\n type EditTraceHintEvent,\n} from \"./manual-edit-events/edit_trace_hint_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type ManualEditEvent =\n | EditPcbComponentLocationEvent\n | EditTraceHintEvent\n | EditSchematicComponentLocationEvent\n\nexport const manual_edit_event = z.union([\n edit_pcb_component_location_event,\n edit_trace_hint_event,\n edit_schematic_component_location_event,\n])\n\nexport type ManualEditEventInput = z.input<typeof manual_edit_event>\ntype InferredManualEditEvent = z.infer<typeof manual_edit_event>\n\nexpectTypesMatch<ManualEditEvent, InferredManualEditEvent>(true)\n","import { z } from \"zod\"\nimport {\n manual_pcb_placement,\n type ManualPcbPlacement,\n} from \"./manual_pcb_placement\"\nimport { manual_edit_event } from \"./manual_edit_event\"\nimport { manual_trace_hint, type ManualTraceHint } from \"./manual_trace_hint\"\nimport {\n manual_schematic_placement,\n type ManualSchematicPlacement,\n} from \"./manual_schematic_placement\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_edits_file = z.object({\n pcb_placements: z.array(manual_pcb_placement).optional(),\n manual_trace_hints: z.array(manual_trace_hint).optional(),\n schematic_placements: z.array(manual_schematic_placement).optional(),\n})\n\nexport interface ManualEditsFile {\n pcb_placements?: ManualPcbPlacement[]\n manual_trace_hints?: ManualTraceHint[]\n schematic_placements?: ManualSchematicPlacement[]\n}\n\nexport type ManualEditsFileInput = z.input<typeof manual_edits_file>\n\nexpectTypesMatch<ManualEditsFile, z.infer<typeof manual_edits_file>>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_pcb_placement = z.object({\n selector: z.string(),\n relative_to: z\n .string()\n .optional()\n .default(\"group_center\")\n .describe(\"Can be a selector or 'group_center'\"),\n center: point,\n})\n\nexport interface ManualPcbPlacement {\n selector: string\n relative_to: string\n center: Point\n}\n\nexport type ManualPcbPlacementInput = z.input<typeof manual_pcb_placement>\ntype InferredManualPcbPlacement = z.infer<typeof manual_pcb_placement>\n\nexpectTypesMatch<ManualPcbPlacement, InferredManualPcbPlacement>(true)\n","import { z } from \"zod\"\nimport { layer_ref, route_hint_point, type RouteHintPoint } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_trace_hint = z.object({\n pcb_port_selector: z.string(),\n offsets: z.array(route_hint_point),\n})\n\nexport interface ManualTraceHint {\n pcb_port_selector: string\n offsets: Array<RouteHintPoint>\n}\n\nexport type ManualTraceHintInput = z.input<typeof manual_trace_hint>\n\nexpectTypesMatch<ManualTraceHint, z.infer<typeof manual_trace_hint>>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_schematic_placement = z.object({\n selector: z.string(),\n relative_to: z\n .string()\n .optional()\n .default(\"group_center\")\n .describe(\"Can be a selector or 'group_center'\"),\n center: point,\n})\n\nexport interface ManualSchematicPlacement {\n selector: string\n relative_to: string\n center: Point\n}\n\nexport type ManualSchematicPlacementInput = z.input<\n typeof manual_schematic_placement\n>\ntype InferredManualSchematicPlacement = z.infer<\n typeof manual_schematic_placement\n>\n\nexpectTypesMatch<ManualSchematicPlacement, InferredManualSchematicPlacement>(\n true,\n)\n","import { distance } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { subcircuitGroupProps, type SubcircuitGroupProps } from \"./group\"\n\nexport interface BreakoutProps\n extends Omit<SubcircuitGroupProps, \"subcircuit\"> {\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n}\n\nexport const breakoutProps = subcircuitGroupProps.extend({\n padding: distance.optional(),\n paddingLeft: distance.optional(),\n paddingRight: distance.optional(),\n paddingTop: distance.optional(),\n paddingBottom: distance.optional(),\n})\n\ntype InferredBreakoutProps = z.input<typeof breakoutProps>\nexpectTypesMatch<BreakoutProps, InferredBreakoutProps>(true)\n","import { distance, supplier_name } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n type SupplierPartNumbers,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement as schematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport type PinLabelsProp<\n PinNumber extends string = string,\n PinLabel extends string = string,\n> = Record<PinNumber, PinLabel | readonly PinLabel[] | PinLabel[]>\n\nexport type PinLabelFromPinLabelMap<PinLabelMap extends PinLabelsProp> =\n PinLabelMap extends PinLabelsProp<infer PinNumber, infer PinLabel>\n ? PinLabel\n : never\n\nexport interface PinCompatibleVariant {\n manufacturerPartNumber?: string\n supplierPartNumber?: SupplierPartNumbers\n}\n\nexport interface ChipPropsSU<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n manufacturerPartNumber?: string\n pinLabels?: PinLabelsProp<string, PinLabel>\n /**\n * Whether to show pin aliases in the schematic\n */\n showPinAliases?: boolean\n schPinArrangement?: SchematicPortArrangement\n /** @deprecated Use schPinArrangement instead. */\n schPortArrangement?: SchematicPortArrangement\n pinCompatibleVariants?: PinCompatibleVariant[]\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: Distance\n schWidth?: Distance\n schHeight?: Distance\n noSchematicRepresentation?: boolean\n internallyConnectedPins?: string[][]\n externallyConnectedPins?: string[][]\n connections?: Connections<PinLabel>\n}\n\nexport type ChipProps<PinLabelMap extends PinLabelsProp | string = string> =\n ChipPropsSU<\n PinLabelMap extends PinLabelsProp\n ? PinLabelFromPinLabelMap<PinLabelMap>\n : PinLabelMap\n >\n\n/**\n * Get the pin labels for a component\n *\n * const pinLabels = { pin1: \"VCC\", pin2: \"GND\", pin3: \"DATA\" } as const\n * export const MyChip = (props: ChipProps<typeof pinLabels>) => {\n * // ...\n * }\n * type MyChipPinLabels = ChipPinLabels<typeof MyChip>\n * // MyChipPinLabels is \"VCC\" | \"GND\" | \"DATA\"\n *\n */\nexport type ChipPinLabels<T extends (props: ChipProps<any>) => any> =\n T extends (props: infer Props) => any\n ? Props extends ChipProps<infer PinLabelMap>\n ? PinLabelMap extends PinLabelsProp\n ? PinLabelFromPinLabelMap<PinLabelMap>\n : PinLabelMap extends string\n ? PinLabelMap\n : never\n : never\n : never\n\n/**\n * Get the connection prop type for a component\n *\n * const pinLabels = { pin1: \"VCC\", pin2: \"GND\", pin3: \"DATA\" } as const\n * export const MyChip = (props: ChipProps<typeof pinLabels>) => {\n * // ...\n * }\n * const connections: ChipConnections<typeof MyChip> = {\n * VCC: \"...\",\n * GND: \"...\",\n * DATA: \"...\",\n * }\n *\n */\nexport type ChipConnections<T extends (props: ChipProps<any>) => any> = {\n [K in ChipPinLabels<T>]: string\n}\n\nconst connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nconst connectionsProp = z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n\nexport const pinLabelsProp = z.record(\n z.string(),\n z.string().or(z.array(z.string()).readonly()).or(z.array(z.string())),\n)\n\nexpectTypesMatch<PinLabelsProp, z.input<typeof pinLabelsProp>>(true)\n\nexport const pinCompatibleVariant = z.object({\n manufacturerPartNumber: z.string().optional(),\n supplierPartNumber: z.record(supplier_name, z.array(z.string())).optional(),\n})\n\nexport const chipProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: pinLabelsProp.optional(),\n showPinAliases: z.boolean().optional(),\n internallyConnectedPins: z.array(z.array(z.string())).optional(),\n externallyConnectedPins: z.array(z.array(z.string())).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPortArrangement: schematicPinArrangement.optional(),\n pinCompatibleVariants: z.array(pinCompatibleVariant).optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n noSchematicRepresentation: z.boolean().optional(),\n connections: connectionsProp.optional(),\n})\n\n/**\n * @deprecated Use ChipProps instead.\n */\nexport const bugProps = chipProps\nexport type InferredChipProps = z.input<typeof chipProps>\n\n// Chip props are too complex to match up with zod types, we typecheck\n// them separately in the test files\nexpectTypesMatch<InferredChipProps, ChipPropsSU<string>>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface JumperProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, 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 * Number of pins on the jumper (2 or 3)\n */\n pinCount?: 2 | 3\n /**\n * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: string[][]\n /**\n * Connections to other components\n */\n connections?: Connections<string>\n}\n\nexport const jumperProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(z.number().or(z.string()), z.string().or(z.array(z.string())))\n .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 pinCount: z.union([z.literal(2), z.literal(3)]).optional(),\n internallyConnectedPins: z.array(z.array(z.string())).optional(),\n connections: z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n})\n\ntype InferredJumperProps = z.input<typeof jumperProps>\nexpectTypesMatch<JumperProps, InferredJumperProps>(true)\n","import { z } from \"zod\"\n\nexport const connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nexport const createConnectionsProp = <T extends readonly [string, ...string[]]>(\n labels: T,\n) => {\n return z.record(z.enum(labels), connectionTarget)\n}\n","import { jumperProps, type JumperProps } from \"./jumper\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface SolderJumperProps extends JumperProps {\n /**\n * Pins that are bridged with solder by default\n */\n bridgedPins?: string[][]\n /**\n * If true, all pins are connected with cuttable traces\n */\n bridged?: boolean\n}\n\nexport const solderjumperProps = jumperProps.extend({\n bridgedPins: z.array(z.array(z.string())).optional(),\n bridged: z.boolean().optional(),\n})\n\ntype InferredSolderJumperProps = z.input<typeof solderjumperProps>\nexpectTypesMatch<SolderJumperProps, InferredSolderJumperProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ConnectorProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, 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 * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: string[][]\n /**\n * Connector standard, e.g. usb_c, m2\n */\n standard?: \"usb_c\" | \"m2\"\n}\n\nexport const connectorProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(z.number().or(z.string()), z.string().or(z.array(z.string())))\n .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 internallyConnectedPins: z.array(z.array(z.string())).optional(),\n standard: z.enum([\"usb_c\", \"m2\"]).optional(),\n})\n\ntype InferredConnectorProps = z.input<typeof connectorProps>\nexpectTypesMatch<ConnectorProps, InferredConnectorProps>(true)\n","import { z } from \"zod\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\n\n/**\n * Pin labels for fuse component\n */\nexport const fusePinLabels = [\"pin1\", \"pin2\"] as const\n\nexport type FusePinLabels = (typeof fusePinLabels)[number]\n\nexport interface FuseProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n /**\n * Current rating of the fuse in amperes\n */\n currentRating: number | string\n\n /**\n * Voltage rating of the fuse\n */\n voltageRating?: number | string\n\n /**\n * Whether to show ratings on schematic\n */\n schShowRatings?: boolean\n\n schOrientation?: SchematicOrientation\n\n /**\n * Connections to other components\n */\n connections?: Connections<PinLabel>\n}\n\n/**\n * Schema for validating fuse props\n */\nexport const fuseProps = commonComponentProps.extend({\n currentRating: z.union([z.number(), z.string()]),\n voltageRating: z.union([z.number(), z.string()]).optional(),\n schShowRatings: z.boolean().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: z\n .record(\n z.string(),\n z.union([\n z.string(),\n z.array(z.string()).readonly(),\n z.array(z.string()),\n ]),\n )\n .optional(),\n})\n\nexport type InferredFuseProps = z.input<typeof fuseProps>\n","import { distance } from \"circuit-json\"\nimport type { PcbLayoutProps } from \"lib/common/layout\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { type PortHints, portHints } from \"lib/common/portHints\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface CirclePlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"circle\"\n holeDiameter: number | string\n outerDiameter: number | string\n portHints?: PortHints\n}\n\nexport interface OvalPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"oval\"\n outerWidth: number | string\n outerHeight: number | string\n holeWidth: number | string\n holeHeight: number | string\n portHints?: PortHints\n\n /** @deprecated use holeWidth */\n innerWidth?: number | string\n /** @deprecated use holeHeight */\n innerHeight?: number | string\n}\n\nexport interface PillPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"pill\"\n outerWidth: number | string\n outerHeight: number | string\n holeWidth: number | string\n holeHeight: number | string\n\n /** @deprecated use holeWidth */\n innerWidth?: number | string\n /** @deprecated use holeHeight */\n innerHeight?: number | string\n\n portHints?: PortHints\n}\n\nexport interface CircularHoleWithRectPlatedProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"circular_hole_with_rect_pad\"\n holeDiameter: number | string\n rectPadWidth: number | string\n rectPadHeight: number | string\n holeShape?: \"circle\"\n padShape?: \"rect\"\n portHints?: PortHints\n}\n\nexport interface PillWithRectPadPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"pill_hole_with_rect_pad\"\n holeShape: \"pill\"\n padShape: \"rect\"\n holeWidth: number | string\n holeHeight: number | string\n rectPadWidth: number | string\n rectPadHeight: number | string\n portHints?: PortHints\n}\n\nexport type PlatedHoleProps =\n | CirclePlatedHoleProps\n | OvalPlatedHoleProps\n | PillPlatedHoleProps\n | CircularHoleWithRectPlatedProps\n | PillWithRectPadPlatedHoleProps\n\nconst distanceHiddenUndefined = z\n .custom<z.input<typeof distance>>()\n .transform((a) => {\n if (a === undefined) return undefined\n return distance.parse(a)\n })\n\nexport const platedHoleProps = z\n .discriminatedUnion(\"shape\", [\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(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 connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"oval\"),\n outerWidth: distance,\n outerHeight: distance,\n holeWidth: distanceHiddenUndefined,\n holeHeight: distanceHiddenUndefined,\n innerWidth: distance.optional().describe(\"DEPRECATED use holeWidth\"),\n innerHeight: distance.optional().describe(\"DEPRECATED use holeHeight\"),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"pill\"),\n outerWidth: distance,\n outerHeight: distance,\n holeWidth: distanceHiddenUndefined,\n holeHeight: distanceHiddenUndefined,\n innerWidth: distance.optional().describe(\"DEPRECATED use holeWidth\"),\n innerHeight: distance.optional().describe(\"DEPRECATED use holeHeight\"),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"circular_hole_with_rect_pad\"),\n holeDiameter: distance,\n rectPadWidth: distance,\n rectPadHeight: distance,\n holeShape: z.literal(\"circle\").optional(),\n padShape: z.literal(\"rect\").optional(),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"pill_hole_with_rect_pad\"),\n holeShape: z.literal(\"pill\"),\n padShape: z.literal(\"rect\"),\n holeWidth: distance,\n holeHeight: distance,\n rectPadWidth: distance,\n rectPadHeight: distance,\n portHints: portHints.optional(),\n }),\n ])\n .refine((a) => {\n if (\"innerWidth\" in a && a.innerWidth !== undefined) {\n a.holeWidth ??= a.innerWidth\n }\n if (\"innerHeight\" in a && a.innerHeight !== undefined) {\n a.holeHeight ??= a.innerHeight\n }\n return a\n })\n\ntype InferredPlatedHoleProps = z.input<typeof platedHoleProps>\n\nexpectTypesMatch<PlatedHoleProps, InferredPlatedHoleProps>(true)\n","import { resistance } from \"circuit-json\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport const resistorPinLabels = [\"pin1\", \"pin2\", \"pos\", \"neg\"] as const\nexport type ResistorPinLabels = (typeof resistorPinLabels)[number]\n\nexport interface ResistorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n resistance: number | string\n pullupFor?: string\n pullupTo?: string\n pulldownFor?: string\n pulldownTo?: string\n schOrientation?: SchematicOrientation\n connections?: Connections<ResistorPinLabels>\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\n schOrientation: schematicOrientation.optional(),\n\n connections: createConnectionsProp(resistorPinLabels).optional(),\n})\nexport const resistorPins = lrPins\n\ntype InferredResistorProps = z.input<typeof resistorProps>\nexpectTypesMatch<ResistorProps, InferredResistorProps>(true)\n","import { resistance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type PotentiometerPinVariant = \"two_pin\" | \"three_pin\"\n\nexport interface PotentiometerProps extends CommonComponentProps {\n maxResistance: number | string\n pinVariant?: PotentiometerPinVariant\n}\n\nexport const potentiometerProps = commonComponentProps.extend({\n maxResistance: resistance,\n pinVariant: z.enum([\"two_pin\", \"three_pin\"]).optional(),\n})\n\ntype InferredPotentiometerProps = z.input<typeof potentiometerProps>\nexpectTypesMatch<PotentiometerProps, InferredPotentiometerProps>(true)\n","import { frequency, capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type PinVariant = \"two_pin\" | \"four_pin\"\n\nexport interface CrystalProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n frequency: number | string\n loadCapacitance: number | string\n pinVariant?: PinVariant\n schOrientation?: SchematicOrientation\n}\n\nexport const crystalProps = commonComponentProps.extend({\n frequency: frequency,\n loadCapacitance: capacitance,\n pinVariant: z.enum([\"two_pin\", \"four_pin\"]).optional(),\n schOrientation: schematicOrientation.optional(),\n})\nexport const crystalPins = lrPins\nexport type CrystalPinLabels = (typeof crystalPins)[number]\n\ntype InferredCrystalProps = z.input<typeof crystalProps>\nexpectTypesMatch<CrystalProps, InferredCrystalProps>(true)\n","import { frequency, capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type ResonatorPinVariant = \"no_ground\" | \"ground_pin\" | \"two_ground_pins\"\n\nexport interface ResonatorProps extends CommonComponentProps {\n frequency: number | string\n loadCapacitance: number | string\n pinVariant?: ResonatorPinVariant\n}\n\nexport const resonatorProps = commonComponentProps.extend({\n frequency: frequency,\n loadCapacitance: capacitance,\n pinVariant: z.enum([\"no_ground\", \"ground_pin\", \"two_ground_pins\"]).optional(),\n})\n\ntype InferredResonatorProps = z.input<typeof resonatorProps>\nexpectTypesMatch<ResonatorProps, InferredResonatorProps>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { boardProps, type BoardProps } from \"lib/components/board\"\n\nexport interface StampboardProps extends BoardProps {\n leftPinCount?: number\n rightPinCount?: number\n topPinCount?: number\n bottomPinCount?: number\n leftPins?: string[]\n rightPins?: string[]\n topPins?: string[]\n bottomPins?: string[]\n pinPitch?: number | string\n innerHoles?: boolean\n}\n\nexport const stampboardProps = boardProps.extend({\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n leftPins: z.array(z.string()).optional(),\n rightPins: z.array(z.string()).optional(),\n topPins: z.array(z.string()).optional(),\n bottomPins: z.array(z.string()).optional(),\n pinPitch: distance.optional(),\n innerHoles: z.boolean().optional(),\n})\n\ntype InferredStampboardProps = z.input<typeof stampboardProps>\nexpectTypesMatch<StampboardProps, InferredStampboardProps>(true)\n","import { capacitance, voltage } from \"circuit-json\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport const capacitorPinLabels = [\n \"pin1\",\n \"pin2\",\n \"pos\",\n \"neg\",\n \"anode\",\n \"cathode\",\n] as const\nexport type CapacitorPinLabels = (typeof capacitorPinLabels)[number]\n\nexport interface CapacitorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n capacitance: number | string\n maxVoltageRating?: number | string\n schShowRatings?: boolean\n polarized?: boolean\n decouplingFor?: string\n decouplingTo?: string\n bypassFor?: string\n bypassTo?: string\n maxDecouplingTraceLength?: number\n schOrientation?: SchematicOrientation\n connections?: Connections<CapacitorPinLabels>\n}\n\nexport const capacitorProps = commonComponentProps.extend({\n capacitance,\n maxVoltageRating: voltage.optional(),\n schShowRatings: z.boolean().optional().default(false),\n polarized: z.boolean().optional().default(false),\n decouplingFor: z.string().optional(),\n decouplingTo: z.string().optional(),\n bypassFor: z.string().optional(),\n bypassTo: z.string().optional(),\n maxDecouplingTraceLength: z.number().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: createConnectionsProp(capacitorPinLabels).optional(),\n})\nexport const capacitorPins = lrPolarPins\n\nexpectTypesMatch<CapacitorProps, z.input<typeof capacitorProps>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface NetProps {\n name: string\n connectsTo?: string | string[]\n}\n\nexport const netProps = z.object({\n name: z.string(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\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, length } from \"circuit-json\"\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 { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { point, type Point } from \"lib/common/point\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n}\n\nexport const rectCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n })\nexpectTypesMatch<RectCutoutProps, z.input<typeof rectCutoutProps>>(true)\n\nexport interface CircleCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"circle\"\n radius: Distance\n}\n\nexport const circleCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n radius: distance,\n })\nexpectTypesMatch<CircleCutoutProps, z.input<typeof circleCutoutProps>>(true)\n\nexport interface PolygonCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"polygon\"\n points: Point[]\n}\n\nexport const polygonCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n })\nexpectTypesMatch<PolygonCutoutProps, z.input<typeof polygonCutoutProps>>(true)\n\nexport type CutoutProps =\n | RectCutoutProps\n | CircleCutoutProps\n | PolygonCutoutProps\n\nexport const cutoutProps = z.discriminatedUnion(\"shape\", [\n rectCutoutProps,\n circleCutoutProps,\n polygonCutoutProps,\n])\n\nexport type CutoutPropsInput = z.input<typeof cutoutProps>\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 { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n portHints?: PortHints\n}\n\nexport interface RotatedRectSmtPadProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"rotated_rect\"\n width: Distance\n height: Distance\n ccwRotation: number\n portHints?: PortHints\n}\n\nexport interface CircleSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"circle\"\n radius: Distance\n portHints?: PortHints\n}\n\nexport interface PillSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"pill\"\n width: Distance\n height: Distance\n radius: Distance\n portHints?: PortHints\n}\n\nexport interface PolygonSmtPadProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"polygon\"\n points: Point[]\n portHints?: PortHints\n}\n\nexport type SmtPadProps =\n | RectSmtPadProps\n | CircleSmtPadProps\n | RotatedRectSmtPadProps\n | PillSmtPadProps\n | PolygonSmtPadProps\n\n// ----------------------------------------------------------------------------\n// Zod\n// ----------------------------------------------------------------------------\n\nexport const rectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\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 rotatedRectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rotated_rect\"),\n width: distance,\n height: distance,\n ccwRotation: z.number(),\n portHints: portHints.optional(),\n })\ntype InferredRotatedRectSmtPadProps = z.input<typeof rotatedRectSmtPadProps>\nexpectTypesMatch<InferredRotatedRectSmtPadProps, RotatedRectSmtPadProps>(true)\n\nexport const circleSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\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 pillSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"pill\"),\n width: distance,\n height: distance,\n radius: distance,\n portHints: portHints.optional(),\n })\ntype InferredPillSmtPadProps = z.input<typeof pillSmtPadProps>\nexpectTypesMatch<InferredPillSmtPadProps, PillSmtPadProps>(true)\n\nexport const polygonSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n portHints: portHints.optional(),\n })\ntype InferredPolygonSmtPadProps = z.input<typeof polygonSmtPadProps>\nexpectTypesMatch<InferredPolygonSmtPadProps, PolygonSmtPadProps>(true)\n\nexport const smtPadProps = z.discriminatedUnion(\"shape\", [\n circleSmtPadProps,\n rectSmtPadProps,\n rotatedRectSmtPadProps,\n pillSmtPadProps,\n polygonSmtPadProps,\n])\n\nexport type InferredSmtPadProps = z.input<typeof smtPadProps>\nexpectTypesMatch<InferredSmtPadProps, SmtPadProps>(true)\n","import { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { boolean, string, z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSolderPasteProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"rect\"\n width: Distance\n height: Distance\n}\n\nexport interface CircleSolderPasteProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"circle\"\n radius: Distance\n}\n\nexport type SolderPasteProps = RectSolderPasteProps | CircleSolderPasteProps\n\n// zod\n\nexport const rectSolderPasteProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n })\ntype InferredRectSolderPasteProps = z.input<typeof rectSolderPasteProps>\nexpectTypesMatch<InferredRectSolderPasteProps, RectSolderPasteProps>(true)\n\nexport const circleSolderPasteProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n })\ntype InferredCircleSolderPasteProps = z.input<typeof circleSolderPasteProps>\nexpectTypesMatch<InferredCircleSolderPasteProps, CircleSolderPasteProps>(true)\n\nexport const solderPasteProps = z.union([\n circleSolderPasteProps,\n rectSolderPasteProps,\n])\n\nexport type InferredSolderPasteProps = z.input<typeof solderPasteProps>\nexpectTypesMatch<InferredSolderPasteProps, SolderPasteProps>(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","import { distance, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const portRef = z.union([\n z.string(),\n z.custom<{ getPortSelector: () => string }>((v) =>\n Boolean(v.getPortSelector),\n ),\n])\n\nconst baseTraceProps = z.object({\n key: z.string().optional(),\n thickness: distance.optional(),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n schDisplayLabel: z.string().optional(),\n maxLength: distance.optional(),\n})\n\nexport const traceProps = z.union([\n baseTraceProps.extend({\n path: z.array(portRef),\n }),\n baseTraceProps.extend({\n from: portRef,\n to: portRef,\n }),\n])\n\nexport type TraceProps = z.input<typeof traceProps>\n","import { type LayerRef, layer_ref } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface FootprintProps {\n /**\n * The layer that the footprint is designed for. If you set this to \"top\"\n * then it means the children were intended to represent the top layer. If\n * the <chip /> with this footprint is moved to the bottom layer, then the\n * components will be mirrored.\n *\n * Generally, you shouldn't set this except where it can help prevent\n * confusion because you have a complex multi-layer footprint. Default is\n * \"top\" and this is most intuitive.\n */\n originalLayer?: LayerRef\n}\n\nexport const footprintProps = z.object({\n originalLayer: layer_ref.default(\"top\").optional(),\n})\n\nexport type FootprintPropsInput = z.input<typeof footprintProps>\ntype InferredFootprintProps = z.infer<typeof footprintProps>\nexpectTypesMatch<InferredFootprintProps, FootprintProps>(true)\n","import { z } from \"zod\"\nimport {\n commonComponentProps,\n lrPins,\n lrPolarPins,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\n/** @deprecated use battery_capacity from circuit-json when circuit-json is updated */\nconst capacity = z\n .number()\n .or(z.string().endsWith(\"mAh\"))\n .transform((v) => {\n if (typeof v === \"string\") {\n const valString = v.replace(\"mAh\", \"\")\n const num = Number.parseFloat(valString)\n if (Number.isNaN(num)) {\n throw new Error(\"Invalid capacity\")\n }\n return num\n }\n return v\n })\n .describe(\"Battery capacity in mAh\")\n\nexport interface BatteryProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n capacity?: number | string\n schOrientation?: SchematicOrientation\n}\n\nexport const batteryProps = commonComponentProps.extend({\n capacity: capacity.optional(),\n schOrientation: schematicOrientation.optional(),\n})\nexport const batteryPins = lrPolarPins\nexport type BatteryPinLabels = (typeof batteryPins)[number]\n\nexpectTypesMatch<BatteryProps, z.input<typeof batteryProps>>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPinArrangement,\n type SchematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PinHeaderProps extends CommonComponentProps {\n /**\n * Number of pins in the header\n */\n pinCount: number\n\n /**\n * Distance between pins\n */\n pitch?: number | string\n\n /**\n * Schematic facing direction\n */\n schFacingDirection?: \"up\" | \"down\" | \"left\" | \"right\"\n\n /**\n * Whether the header is male or female\n */\n gender?: \"male\" | \"female\"\n\n /**\n * Whether to show pin labels in silkscreen\n */\n showSilkscreenPinLabels?: boolean\n\n /**\n * Whether the header has two rows of pins\n */\n doubleRow?: boolean\n\n /**\n * Diameter of the through-hole for each pin\n */\n holeDiameter?: number | string\n\n /**\n * Diameter of the plated area around each hole\n */\n platedDiameter?: number | string\n\n /**\n * Labels for each pin\n */\n pinLabels?: string[]\n\n /**\n * Connections to other components\n */\n connections?: Connections<string>\n\n /**\n * Direction the header is facing\n */\n facingDirection?: \"left\" | \"right\"\n\n /**\n * Pin arrangement in schematic view\n */\n schPinArrangement?: SchematicPinArrangement\n\n /**\n * Schematic pin style (margins, etc)\n */\n schPinStyle?: SchematicPinStyle\n\n /**\n * Schematic pin spacing\n */\n schPinSpacing?: number | string\n\n /**\n * Schematic width\n */\n schWidth?: number | string\n\n /**\n * Schematic height\n */\n schHeight?: number | string\n}\n\nexport const pinHeaderProps = commonComponentProps.extend({\n pinCount: z.number(),\n pitch: distance.optional(),\n schFacingDirection: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n gender: z.enum([\"male\", \"female\"]).optional().default(\"male\"),\n showSilkscreenPinLabels: z.boolean().optional(),\n doubleRow: z.boolean().optional(),\n holeDiameter: distance.optional(),\n platedDiameter: distance.optional(),\n pinLabels: z.array(z.string()).optional(),\n connections: z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n facingDirection: z.enum([\"left\", \"right\"]).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n})\n\ntype InferredPinHeaderProps = z.input<typeof pinHeaderProps>\nexpectTypesMatch<PinHeaderProps, InferredPinHeaderProps>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance } from \"lib/common/distance\"\nimport { rotation } from \"circuit-json\"\n\n/**\n * @deprecated Use NetLabelProps instead.\n */\nexport interface NetAliasProps {\n net?: string\n connection?: string\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"top\" | \"right\" | \"bottom\"\n}\n\n/** @deprecated Use netLabelProps instead. */\nexport const netAliasProps = z.object({\n net: z.string().optional(),\n connection: z.string().optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"top\", \"right\", \"bottom\"]).optional(),\n})\n\ntype InferredNetAliasProps = z.input<typeof netAliasProps>\nexpectTypesMatch<NetAliasProps, InferredNetAliasProps>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance } from \"lib/common/distance\"\nimport { rotation } from \"circuit-json\"\n\nexport interface NetLabelProps {\n net?: string\n connection?: string\n connectsTo?: string | string[]\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"top\" | \"right\" | \"bottom\"\n}\n\nexport const netLabelProps = z.object({\n net: z.string().optional(),\n connection: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"top\", \"right\", \"bottom\"]).optional(),\n})\n\ntype InferredNetLabelProps = z.input<typeof netLabelProps>\nexpectTypesMatch<NetLabelProps, InferredNetLabelProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { chipProps, type ChipProps, type PinLabelsProp } from \"./chip\"\n\nexport type PushButtonProps<T extends PinLabelsProp | string = string> =\n ChipProps<T>\n\nexport const pushButtonProps = chipProps.extend({})\n\nexpectTypesMatch<PushButtonProps, z.input<typeof pushButtonProps>>(true)\n","import type { SubcircuitGroupProps } from \"./group\"\nimport { subcircuitGroupProps } from \"./group\"\nimport type { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type SubcircuitProps = SubcircuitGroupProps\n\nexport const subcircuitProps = subcircuitGroupProps\n\ntype InferredSubcircuitProps = z.input<typeof subcircuitProps>\nexpectTypesMatch<SubcircuitProps, InferredSubcircuitProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface TransistorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n type: \"npn\" | \"pnp\" | \"bjt\" | \"jfet\" | \"mosfet\" | \"igbt\"\n}\n\nexport const transistorProps = commonComponentProps.extend({\n type: z.enum([\"npn\", \"pnp\", \"bjt\", \"jfet\", \"mosfet\", \"igbt\"]),\n})\n\nexport const transistorPins = [\n \"pin1\",\n \"emitter\",\n \"pin2\",\n \"collector\",\n \"pin3\",\n \"base\",\n] as const\nexport type TransistorPinLabels = (typeof transistorPins)[number]\n\ntype InferredTransistorProps = z.input<typeof transistorProps>\nexpectTypesMatch<TransistorProps, InferredTransistorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"../common/layout\"\nimport { expectTypesMatch } from \"../typecheck\"\nimport { z } from \"zod\"\n\nexport interface MosfetProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n channelType: \"n\" | \"p\"\n mosfetMode: \"enhancement\" | \"depletion\"\n}\n\nexport const mosfetProps = commonComponentProps.extend({\n channelType: z.enum([\"n\", \"p\"]),\n mosfetMode: z.enum([\"enhancement\", \"depletion\"]),\n})\n\nexport const mosfetPins = [\n \"pin1\",\n \"drain\",\n \"pin2\",\n \"source\",\n \"pin3\",\n \"gate\",\n] as const\nexport type MosfetPinLabels = (typeof mosfetPins)[number]\n\ntype InferredMosfetProps = z.input<typeof mosfetProps>\nexpectTypesMatch<MosfetProps, InferredMosfetProps>(true)\n","import { inductance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface InductorProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n inductance: number | string\n maxCurrentRating?: number | string\n schOrientation?: SchematicOrientation\n}\n\nexport const inductorProps = commonComponentProps.extend({\n inductance,\n maxCurrentRating: z.union([z.string(), z.number()]).optional(),\n schOrientation: schematicOrientation.optional(),\n})\n\nexport const inductorPins = lrPins\nexport type InductorPinLabels = (typeof inductorPins)[number]\n\ntype InferredInductorProps = z.input<typeof inductorProps>\n\nexpectTypesMatch<InductorProps, InferredInductorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\n\nconst diodeConnectionKeys = z.enum([\n \"anode\",\n \"cathode\",\n \"pin1\",\n \"pin2\",\n \"pos\",\n \"neg\",\n])\n\nconst connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nconst connectionsProp = z.record(diodeConnectionKeys, connectionTarget)\n\nconst diodeVariant = z.enum([\"standard\", \"schottky\", \"zener\", \"photo\", \"tvs\"])\n\nexport const diodeProps = commonComponentProps\n .extend({\n connections: connectionsProp.optional(),\n variant: diodeVariant.optional().default(\"standard\"),\n standard: z.boolean().optional(),\n schottky: z.boolean().optional(),\n zener: z.boolean().optional(),\n photo: z.boolean().optional(),\n tvs: z.boolean().optional(),\n schOrientation: schematicOrientation.optional(),\n })\n .superRefine((data, ctx) => {\n // Check if multiple boolean flags are set directly\n const enabledFlags = [\n data.standard,\n data.schottky,\n data.zener,\n data.photo,\n data.tvs,\n ].filter(Boolean).length\n\n if (enabledFlags > 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Exactly one diode variant must be enabled\",\n path: [],\n })\n return z.INVALID\n }\n })\n .transform((data) => {\n // Set all variant flags to false initially\n const result = {\n ...data,\n standard: false,\n schottky: false,\n zener: false,\n photo: false,\n tvs: false,\n }\n\n if (data.standard) result.standard = true\n else if (data.schottky) result.schottky = true\n else if (data.zener) result.zener = true\n else if (data.photo) result.photo = true\n else if (data.tvs) result.tvs = true\n else {\n switch (data.variant) {\n case \"standard\":\n result.standard = true\n break\n case \"schottky\":\n result.schottky = true\n break\n case \"zener\":\n result.zener = true\n break\n case \"photo\":\n result.photo = true\n break\n case \"tvs\":\n result.tvs = true\n break\n default:\n result.standard = true\n }\n }\n\n return result\n })\n\nexport const diodePins = lrPolarPins\nexport type DiodePinLabels = (typeof diodePins)[number]\n\nexport interface DiodeProps<PinLabel extends string = string>\n extends CommonComponentProps<PinLabel> {\n connections?: {\n anode?: string | string[] | readonly string[]\n cathode?: string | string[] | readonly string[]\n pin1?: string | string[] | readonly string[]\n pin2?: string | string[] | readonly string[]\n pos?: string | string[] | readonly string[]\n neg?: string | string[] | readonly string[]\n }\n variant?: \"standard\" | \"schottky\" | \"zener\" | \"photo\" | \"tvs\"\n standard?: boolean\n schottky?: boolean\n zener?: boolean\n photo?: boolean\n tvs?: boolean\n schOrientation?: SchematicOrientation\n}\n\nexport type InferredDiodeProps = z.input<typeof diodeProps>\nexpectTypesMatch<InferredDiodeProps, DiodeProps>(true)\n","import { commonComponentProps, lrPolarPins } from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { z } from \"zod\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\n\nexport type LedPinLabels = (typeof lrPolarPins)[number]\n\nexport const ledProps = commonComponentProps.extend({\n color: z.string().optional(),\n wavelength: z.string().optional(),\n schDisplayValue: z.string().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: createConnectionsProp(lrPolarPins).optional(),\n})\nexport const ledPins = lrPolarPins\nexport type LedProps = z.input<typeof ledProps>\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nimport { z } from \"zod\"\n\nexport interface SwitchProps extends CommonComponentProps {\n type?: \"spst\" | \"spdt\" | \"dpst\" | \"dpdt\"\n isNormallyClosed?: boolean\n spdt?: boolean\n spst?: boolean\n dpst?: boolean\n dpdt?: boolean\n}\n\nexport const switchProps = commonComponentProps\n .extend({\n type: z.enum([\"spst\", \"spdt\", \"dpst\", \"dpdt\"]).optional(),\n isNormallyClosed: z.boolean().optional().default(false),\n spst: z.boolean().optional(),\n spdt: z.boolean().optional(),\n dpst: z.boolean().optional(),\n dpdt: z.boolean().optional(),\n })\n .transform((props) => {\n const updatedProps: SwitchProps = { ...props }\n\n if (updatedProps.dpdt) {\n updatedProps.type = \"dpdt\"\n } else if (updatedProps.spst) {\n updatedProps.type = \"spst\"\n } else if (updatedProps.spdt) {\n updatedProps.type = \"spdt\"\n } else if (updatedProps.dpst) {\n updatedProps.type = \"dpst\"\n }\n\n switch (updatedProps.type) {\n case \"spdt\":\n updatedProps.spdt = true\n break\n case \"spst\":\n updatedProps.spst = true\n break\n case \"dpst\":\n updatedProps.dpst = true\n break\n case \"dpdt\":\n updatedProps.dpdt = true\n break\n }\n\n return updatedProps\n })\n\nexport type InferredSwitchProps = z.infer<typeof switchProps>\nexpectTypesMatch<SwitchProps, InferredSwitchProps>(true)\n","import { length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\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","import { length, route_hint_point } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\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 { distance, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\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","import { distance, layer_ref, type LayerRefInput } from \"circuit-json\"\nimport { commonLayoutProps, type CommonLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ViaProps extends CommonLayoutProps {\n name?: string\n fromLayer: LayerRefInput\n toLayer: LayerRefInput\n holeDiameter: number | string\n outerDiameter: number | string\n connectsTo?: string | string[]\n}\n\nexport const viaProps = commonLayoutProps.extend({\n name: z.string().optional(),\n fromLayer: layer_ref,\n toLayer: layer_ref,\n holeDiameter: distance,\n outerDiameter: distance,\n connectsTo: z.string().or(z.array(z.string())).optional(),\n})\nexport type InferredViaProps = z.input<typeof viaProps>\nexpectTypesMatch<ViaProps, InferredViaProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface TestpointProps extends CommonComponentProps {\n /**\n * The footprint variant of the testpoint either a surface pad or through-hole\n */\n footprintVariant?: \"pad\" | \"through_hole\"\n /**\n * The shape of the pad if using a pad variant\n */\n padShape?: \"rect\" | \"circle\"\n /**\n * Diameter of the copper pad (applies to both SMD pads and plated holes)\n */\n padDiameter?: number | string\n /**\n * Diameter of the hole if using a through-hole testpoint\n */\n holeDiameter?: number | string\n /**\n * Width of the pad when padShape is rect\n */\n width?: number | string\n /**\n * Height of the pad when padShape is rect\n */\n height?: number | string\n}\n\nexport const testpointProps = commonComponentProps\n .extend({\n footprintVariant: z.enum([\"pad\", \"through_hole\"]).optional(),\n padShape: z.enum([\"rect\", \"circle\"]).optional().default(\"circle\"),\n padDiameter: distance.optional(),\n holeDiameter: distance.optional(),\n width: distance.optional(),\n height: distance.optional(),\n })\n .refine(\n (props) =>\n props.footprintVariant !== \"through_hole\" ||\n props.holeDiameter !== undefined,\n { message: \"holeDiameter is required for through_hole testpoints\" },\n )\n\nexport type InferredTestpointProps = z.input<typeof testpointProps>\nexpectTypesMatch<TestpointProps, InferredTestpointProps>(true)\n","import { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface BreakoutPointProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n connection: string\n}\n\nexport const breakoutPointProps = pcbLayoutProps\n .omit({ pcbRotation: true, layer: true })\n .extend({\n connection: z.string(),\n })\n\ntype InferredBreakoutPointProps = z.input<typeof breakoutPointProps>\nexpectTypesMatch<BreakoutPointProps, InferredBreakoutPointProps>(true)\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\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","import { voltage } from \"circuit-json\"\nimport { commonComponentProps } from \"lib/common/layout\"\nimport type { z } from \"zod\"\n\nexport const powerSourceProps = commonComponentProps.extend({\n voltage,\n})\nexport type PowerSourceProps = z.input<typeof powerSourceProps>\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\n\nexport const schematicBoxProps = z\n .object({\n schX: distance.optional(),\n schY: distance.optional(),\n width: distance.optional(),\n height: distance.optional(),\n overlay: z.array(z.string()).optional(),\n\n padding: distance.optional(),\n paddingLeft: distance.optional(),\n paddingRight: distance.optional(),\n paddingTop: distance.optional(),\n paddingBottom: distance.optional(),\n\n title: z.string().optional(),\n titleAlignment: ninePointAnchor.default(\"top_left\"),\n titleColor: z.string().optional(),\n titleFontSize: distance.optional(),\n titleInside: z.boolean().default(false),\n strokeStyle: z.enum([\"solid\", \"dashed\"]).default(\"solid\"),\n })\n .refine(\n (elm) =>\n (elm.width !== undefined && elm.height !== undefined) ||\n (Array.isArray(elm.overlay) && elm.overlay.length > 0),\n {\n message:\n \"Must provide either both `width` and `height`, or a non-empty `overlay` array.\",\n },\n )\n .refine(\n (elm) =>\n !(\n elm.width !== undefined &&\n elm.height !== undefined &&\n Array.isArray(elm.overlay) &&\n elm.overlay.length > 0\n ),\n {\n message:\n \"Cannot provide both `width`/`height` and `overlay` at the same time.\",\n },\n )\nexport type SchematicBoxProps = z.input<typeof schematicBoxProps>\n","import { z } from \"zod\"\n\nexport const ninePointAnchor = z.enum([\n \"top_left\",\n \"top_center\",\n \"top_right\",\n \"center_left\",\n \"center\",\n \"center_right\",\n \"bottom_left\",\n \"bottom_center\",\n \"bottom_right\",\n])\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\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","import { distance, rotation } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { fivePointAnchor } from \"lib/common/fivePointAnchor\"\n\nexport const schematicTextProps = z.object({\n schX: distance.optional(),\n schY: distance.optional(),\n text: z.string(),\n fontSize: z.number().default(1),\n anchor: z\n .union([fivePointAnchor.describe(\"legacy\"), ninePointAnchor])\n .default(\"center\"),\n color: z.string().default(\"#000000\"),\n schRotation: rotation.default(0),\n})\nexport type SchematicTextProps = z.input<typeof schematicTextProps>\n","import { z } from \"zod\"\n\nexport const fivePointAnchor = z.enum([\n \"center\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n])\n","import { point } from \"circuit-json\"\nimport { z } from \"zod\"\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","import { length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { z } from \"zod\"\n\nexport const silkscreenTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: ninePointAnchor.default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type SilkscreenTextProps = z.input<typeof silkscreenTextProps>\n","import { length, route_hint_point } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\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","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport type { z } from \"zod\"\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","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n filled: z.boolean().default(true).optional(),\n stroke: z.enum([\"dashed\", \"solid\", \"none\"]).optional(),\n strokeWidth: distance.optional(),\n width: distance,\n height: distance,\n })\nexport type SilkscreenRectProps = z.input<typeof silkscreenRectProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\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","import { distance, layer_ref, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\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","import { direction } from \"lib/common/direction\"\nimport { commonLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\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","import {\n autorouterProp,\n type AutorouterProp,\n type PartsEngine,\n partsEngine,\n} from \"./components/group\"\nimport { expectTypesMatch } from \"./typecheck\"\nimport { z } from \"zod\"\n\nexport interface PlatformConfig {\n partsEngine?: PartsEngine\n\n autorouter?: AutorouterProp\n\n // TODO this follows a subset of the localStorage interface\n localCacheEngine?: any\n\n registryApiUrl?: string\n\n cloudAutorouterUrl?: string\n\n projectName?: string\n version?: string\n url?: string\n printBoardInformationToSilkscreen?: boolean\n\n pcbDisabled?: boolean\n schematicDisabled?: boolean\n partsEngineDisabled?: boolean\n\n footprintLibraryMap?: Record<\n string,\n Record<\n string,\n | any[]\n | ((path: string) => Promise<{\n footprintCircuitJson: any[]\n }>)\n >\n >\n}\n\nconst unvalidatedCircuitJson = z.array(z.any()).describe(\"Circuit JSON\")\nconst pathToCircuitJsonFn = z\n .function()\n .args(z.string())\n .returns(z.promise(z.object({ footprintCircuitJson: z.array(z.any()) })))\n .describe(\"A function that takes a path and returns Circuit JSON\")\n\nexport const platformConfig = z.object({\n partsEngine: partsEngine.optional(),\n autorouter: autorouterProp.optional(),\n registryApiUrl: z.string().optional(),\n cloudAutorouterUrl: z.string().optional(),\n projectName: z.string().optional(),\n version: z.string().optional(),\n url: z.string().optional(),\n printBoardInformationToSilkscreen: z.boolean().optional(),\n localCacheEngine: z.any().optional(),\n pcbDisabled: z.boolean().optional(),\n schematicDisabled: z.boolean().optional(),\n partsEngineDisabled: z.boolean().optional(),\n footprintLibraryMap: z\n .record(\n z.string(),\n z.record(\n z.string(),\n z.union([unvalidatedCircuitJson, pathToCircuitJsonFn]),\n ),\n )\n .optional(),\n}) as z.ZodType<PlatformConfig>\n\nexpectTypesMatch<PlatformConfig, z.infer<typeof platformConfig>>(true)\n"],"mappings":"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","names":["z","z","distance","z","z","z","z","z","z","distance","z","z","distance","z","distance","distance","distance","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","point","z","point","z","z","z","point","z","point","z","z","distance","z","distance","distance","distance","supplier_name","z","supplier_name","distance","distance","z","connectionTarget","z","distance","connectionTarget","z","distance","z","distance","z","z","distance","z","distance","z","resistance","z","resistance","z","frequency","capacitance","z","frequency","capacitance","distance","z","z","distance","capacitance","z","capacitance","z","z","z","distance","length","z","distance","z","z","distance","z","z","distance","z","z","distance","z","z","distance","distance","route_hint_point","z","z","distance","route_hint_point","layer_ref","z","layer_ref","z","z","distance","z","distance","connectionTarget","z","rotation","z","distance","z","rotation","z","distance","z","z","z","z","z","connectionTarget","connectionsProp","z","z","z","length","z","length","length","route_hint_point","z","route_hint_point","length","distance","route_hint_point","z","distance","layer_ref","z","layer_ref","distance","distance","z","distance","z","distance","z","distance","voltage","voltage","distance","z","z","z","distance","distance","z","distance","rotation","z","z","z","distance","rotation","point","z","length","z","length","length","route_hint_point","z","route_hint_point","length","distance","distance","distance","z","distance","distance","z","distance","distance","layer_ref","route_hint_point","z","z","z"]}
|
package/lib/components/group.ts
CHANGED
|
@@ -147,6 +147,12 @@ export interface AutorouterConfig {
|
|
|
147
147
|
groupMode?: "sequential-trace" | "subcircuit"
|
|
148
148
|
local?: boolean
|
|
149
149
|
algorithmFn?: (simpleRouteJson: any) => Promise<any>
|
|
150
|
+
preset?:
|
|
151
|
+
| "sequential-trace"
|
|
152
|
+
| "subcircuit"
|
|
153
|
+
| "auto"
|
|
154
|
+
| "auto-local"
|
|
155
|
+
| "auto-cloud"
|
|
150
156
|
}
|
|
151
157
|
|
|
152
158
|
export type AutorouterProp =
|
|
@@ -170,6 +176,15 @@ export const autorouterConfig = z.object({
|
|
|
170
176
|
(v) => typeof v === "function" || v === undefined,
|
|
171
177
|
)
|
|
172
178
|
.optional(),
|
|
179
|
+
preset: z
|
|
180
|
+
.enum([
|
|
181
|
+
"sequential-trace",
|
|
182
|
+
"subcircuit",
|
|
183
|
+
"auto",
|
|
184
|
+
"auto-local",
|
|
185
|
+
"auto-cloud",
|
|
186
|
+
])
|
|
187
|
+
.optional(),
|
|
173
188
|
local: z.boolean().optional(),
|
|
174
189
|
})
|
|
175
190
|
|