@tscircuit/props 0.0.93 → 0.0.95

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 CHANGED
@@ -4007,6 +4007,408 @@ declare const resistorProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.e
4007
4007
  }>;
4008
4008
  declare const resistorPins: readonly ["pin1", "left", "pin2", "right"];
4009
4009
 
4010
+ interface PotentiometerProps extends CommonComponentProps {
4011
+ maxResistance: number | string;
4012
+ }
4013
+ declare const potentiometerProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.extendShape<z.objectUtil.extendShape<{
4014
+ pcbX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
4015
+ pcbY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
4016
+ pcbRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
4017
+ schX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
4018
+ schY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
4019
+ schRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
4020
+ layer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
4021
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
4022
+ }, "strip", z.ZodTypeAny, {
4023
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
4024
+ }, {
4025
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
4026
+ }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
4027
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
4028
+ }>>;
4029
+ footprint: z.ZodOptional<z.ZodType<Footprint, z.ZodTypeDef, Footprint>>;
4030
+ }, {
4031
+ supplierPartNumbers: z.ZodOptional<z.ZodRecord<z.ZodEnum<["jlcpcb", "macrofab", "pcbway", "digikey", "mouser", "lcsc"]>, z.ZodArray<z.ZodString, "many">>>;
4032
+ }>, {
4033
+ key: z.ZodOptional<z.ZodAny>;
4034
+ name: z.ZodString;
4035
+ cadModel: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodObject<z.objectUtil.extendShape<{
4036
+ rotationOffset: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
4037
+ x: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
4038
+ y: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
4039
+ z: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
4040
+ }, "strip", z.ZodTypeAny, {
4041
+ x: string | number;
4042
+ y: string | number;
4043
+ z: string | number;
4044
+ }, {
4045
+ x: string | number;
4046
+ y: string | number;
4047
+ z: string | number;
4048
+ }>]>>;
4049
+ positionOffset: z.ZodOptional<z.ZodObject<{
4050
+ x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4051
+ y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4052
+ z: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4053
+ }, "strip", z.ZodTypeAny, {
4054
+ x: number;
4055
+ y: number;
4056
+ z: number;
4057
+ }, {
4058
+ x: string | number;
4059
+ y: string | number;
4060
+ z: string | number;
4061
+ }>>;
4062
+ size: z.ZodOptional<z.ZodObject<{
4063
+ x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4064
+ y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4065
+ z: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4066
+ }, "strip", z.ZodTypeAny, {
4067
+ x: number;
4068
+ y: number;
4069
+ z: number;
4070
+ }, {
4071
+ x: string | number;
4072
+ y: string | number;
4073
+ z: string | number;
4074
+ }>>;
4075
+ }, {
4076
+ stlUrl: z.ZodString;
4077
+ }>, "strip", z.ZodTypeAny, {
4078
+ stlUrl: string;
4079
+ rotationOffset?: number | {
4080
+ x: string | number;
4081
+ y: string | number;
4082
+ z: string | number;
4083
+ } | undefined;
4084
+ positionOffset?: {
4085
+ x: number;
4086
+ y: number;
4087
+ z: number;
4088
+ } | undefined;
4089
+ size?: {
4090
+ x: number;
4091
+ y: number;
4092
+ z: number;
4093
+ } | undefined;
4094
+ }, {
4095
+ stlUrl: string;
4096
+ rotationOffset?: number | {
4097
+ x: string | number;
4098
+ y: string | number;
4099
+ z: string | number;
4100
+ } | undefined;
4101
+ positionOffset?: {
4102
+ x: string | number;
4103
+ y: string | number;
4104
+ z: string | number;
4105
+ } | undefined;
4106
+ size?: {
4107
+ x: string | number;
4108
+ y: string | number;
4109
+ z: string | number;
4110
+ } | undefined;
4111
+ }>, z.ZodObject<z.objectUtil.extendShape<{
4112
+ rotationOffset: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
4113
+ x: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
4114
+ y: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
4115
+ z: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
4116
+ }, "strip", z.ZodTypeAny, {
4117
+ x: string | number;
4118
+ y: string | number;
4119
+ z: string | number;
4120
+ }, {
4121
+ x: string | number;
4122
+ y: string | number;
4123
+ z: string | number;
4124
+ }>]>>;
4125
+ positionOffset: z.ZodOptional<z.ZodObject<{
4126
+ x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4127
+ y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4128
+ z: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4129
+ }, "strip", z.ZodTypeAny, {
4130
+ x: number;
4131
+ y: number;
4132
+ z: number;
4133
+ }, {
4134
+ x: string | number;
4135
+ y: string | number;
4136
+ z: string | number;
4137
+ }>>;
4138
+ size: z.ZodOptional<z.ZodObject<{
4139
+ x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4140
+ y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4141
+ z: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4142
+ }, "strip", z.ZodTypeAny, {
4143
+ x: number;
4144
+ y: number;
4145
+ z: number;
4146
+ }, {
4147
+ x: string | number;
4148
+ y: string | number;
4149
+ z: string | number;
4150
+ }>>;
4151
+ }, {
4152
+ objUrl: z.ZodString;
4153
+ mtlUrl: z.ZodOptional<z.ZodString>;
4154
+ }>, "strip", z.ZodTypeAny, {
4155
+ objUrl: string;
4156
+ rotationOffset?: number | {
4157
+ x: string | number;
4158
+ y: string | number;
4159
+ z: string | number;
4160
+ } | undefined;
4161
+ positionOffset?: {
4162
+ x: number;
4163
+ y: number;
4164
+ z: number;
4165
+ } | undefined;
4166
+ size?: {
4167
+ x: number;
4168
+ y: number;
4169
+ z: number;
4170
+ } | undefined;
4171
+ mtlUrl?: string | undefined;
4172
+ }, {
4173
+ objUrl: string;
4174
+ rotationOffset?: number | {
4175
+ x: string | number;
4176
+ y: string | number;
4177
+ z: string | number;
4178
+ } | undefined;
4179
+ positionOffset?: {
4180
+ x: string | number;
4181
+ y: string | number;
4182
+ z: string | number;
4183
+ } | undefined;
4184
+ size?: {
4185
+ x: string | number;
4186
+ y: string | number;
4187
+ z: string | number;
4188
+ } | undefined;
4189
+ mtlUrl?: string | undefined;
4190
+ }>, z.ZodObject<z.objectUtil.extendShape<{
4191
+ rotationOffset: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
4192
+ x: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
4193
+ y: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
4194
+ z: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
4195
+ }, "strip", z.ZodTypeAny, {
4196
+ x: string | number;
4197
+ y: string | number;
4198
+ z: string | number;
4199
+ }, {
4200
+ x: string | number;
4201
+ y: string | number;
4202
+ z: string | number;
4203
+ }>]>>;
4204
+ positionOffset: z.ZodOptional<z.ZodObject<{
4205
+ x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4206
+ y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4207
+ z: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4208
+ }, "strip", z.ZodTypeAny, {
4209
+ x: number;
4210
+ y: number;
4211
+ z: number;
4212
+ }, {
4213
+ x: string | number;
4214
+ y: string | number;
4215
+ z: string | number;
4216
+ }>>;
4217
+ size: z.ZodOptional<z.ZodObject<{
4218
+ x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4219
+ y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4220
+ z: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4221
+ }, "strip", z.ZodTypeAny, {
4222
+ x: number;
4223
+ y: number;
4224
+ z: number;
4225
+ }, {
4226
+ x: string | number;
4227
+ y: string | number;
4228
+ z: string | number;
4229
+ }>>;
4230
+ }, {
4231
+ jscad: z.ZodRecord<z.ZodString, z.ZodAny>;
4232
+ }>, "strip", z.ZodTypeAny, {
4233
+ jscad: Record<string, any>;
4234
+ rotationOffset?: number | {
4235
+ x: string | number;
4236
+ y: string | number;
4237
+ z: string | number;
4238
+ } | undefined;
4239
+ positionOffset?: {
4240
+ x: number;
4241
+ y: number;
4242
+ z: number;
4243
+ } | undefined;
4244
+ size?: {
4245
+ x: number;
4246
+ y: number;
4247
+ z: number;
4248
+ } | undefined;
4249
+ }, {
4250
+ jscad: Record<string, any>;
4251
+ rotationOffset?: number | {
4252
+ x: string | number;
4253
+ y: string | number;
4254
+ z: string | number;
4255
+ } | undefined;
4256
+ positionOffset?: {
4257
+ x: string | number;
4258
+ y: string | number;
4259
+ z: string | number;
4260
+ } | undefined;
4261
+ size?: {
4262
+ x: string | number;
4263
+ y: string | number;
4264
+ z: string | number;
4265
+ } | undefined;
4266
+ }>]>>;
4267
+ children: z.ZodOptional<z.ZodAny>;
4268
+ symbolName: z.ZodOptional<z.ZodString>;
4269
+ }>, {
4270
+ maxResistance: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
4271
+ }>, "strip", z.ZodTypeAny, {
4272
+ name: string;
4273
+ maxResistance: number;
4274
+ pcbX?: number | undefined;
4275
+ pcbY?: number | undefined;
4276
+ pcbRotation?: number | undefined;
4277
+ schX?: number | undefined;
4278
+ schY?: number | undefined;
4279
+ schRotation?: number | undefined;
4280
+ layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
4281
+ footprint?: Footprint | undefined;
4282
+ supplierPartNumbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
4283
+ key?: any;
4284
+ cadModel?: string | {
4285
+ stlUrl: string;
4286
+ rotationOffset?: number | {
4287
+ x: string | number;
4288
+ y: string | number;
4289
+ z: string | number;
4290
+ } | undefined;
4291
+ positionOffset?: {
4292
+ x: number;
4293
+ y: number;
4294
+ z: number;
4295
+ } | undefined;
4296
+ size?: {
4297
+ x: number;
4298
+ y: number;
4299
+ z: number;
4300
+ } | undefined;
4301
+ } | {
4302
+ objUrl: string;
4303
+ rotationOffset?: number | {
4304
+ x: string | number;
4305
+ y: string | number;
4306
+ z: string | number;
4307
+ } | undefined;
4308
+ positionOffset?: {
4309
+ x: number;
4310
+ y: number;
4311
+ z: number;
4312
+ } | undefined;
4313
+ size?: {
4314
+ x: number;
4315
+ y: number;
4316
+ z: number;
4317
+ } | undefined;
4318
+ mtlUrl?: string | undefined;
4319
+ } | {
4320
+ jscad: Record<string, any>;
4321
+ rotationOffset?: number | {
4322
+ x: string | number;
4323
+ y: string | number;
4324
+ z: string | number;
4325
+ } | undefined;
4326
+ positionOffset?: {
4327
+ x: number;
4328
+ y: number;
4329
+ z: number;
4330
+ } | undefined;
4331
+ size?: {
4332
+ x: number;
4333
+ y: number;
4334
+ z: number;
4335
+ } | undefined;
4336
+ } | undefined;
4337
+ children?: any;
4338
+ symbolName?: string | undefined;
4339
+ }, {
4340
+ name: string;
4341
+ maxResistance: string | number;
4342
+ pcbX?: string | number | undefined;
4343
+ pcbY?: string | number | undefined;
4344
+ pcbRotation?: string | number | undefined;
4345
+ schX?: string | number | undefined;
4346
+ schY?: string | number | undefined;
4347
+ schRotation?: string | number | undefined;
4348
+ layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
4349
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
4350
+ } | undefined;
4351
+ footprint?: Footprint | undefined;
4352
+ supplierPartNumbers?: Partial<Record<"jlcpcb" | "macrofab" | "pcbway" | "digikey" | "mouser" | "lcsc", string[]>> | undefined;
4353
+ key?: any;
4354
+ cadModel?: string | {
4355
+ stlUrl: string;
4356
+ rotationOffset?: number | {
4357
+ x: string | number;
4358
+ y: string | number;
4359
+ z: string | number;
4360
+ } | undefined;
4361
+ positionOffset?: {
4362
+ x: string | number;
4363
+ y: string | number;
4364
+ z: string | number;
4365
+ } | undefined;
4366
+ size?: {
4367
+ x: string | number;
4368
+ y: string | number;
4369
+ z: string | number;
4370
+ } | undefined;
4371
+ } | {
4372
+ objUrl: string;
4373
+ rotationOffset?: number | {
4374
+ x: string | number;
4375
+ y: string | number;
4376
+ z: string | number;
4377
+ } | undefined;
4378
+ positionOffset?: {
4379
+ x: string | number;
4380
+ y: string | number;
4381
+ z: string | number;
4382
+ } | undefined;
4383
+ size?: {
4384
+ x: string | number;
4385
+ y: string | number;
4386
+ z: string | number;
4387
+ } | undefined;
4388
+ mtlUrl?: string | undefined;
4389
+ } | {
4390
+ jscad: Record<string, any>;
4391
+ rotationOffset?: number | {
4392
+ x: string | number;
4393
+ y: string | number;
4394
+ z: string | number;
4395
+ } | undefined;
4396
+ positionOffset?: {
4397
+ x: string | number;
4398
+ y: string | number;
4399
+ z: string | number;
4400
+ } | undefined;
4401
+ size?: {
4402
+ x: string | number;
4403
+ y: string | number;
4404
+ z: string | number;
4405
+ } | undefined;
4406
+ } | undefined;
4407
+ children?: any;
4408
+ symbolName?: string | undefined;
4409
+ }>;
4410
+ declare const potentiometerPins: readonly ["pin1", "left", "pin2", "right"];
4411
+
4010
4412
  interface CapacitorProps extends CommonComponentProps {
4011
4413
  capacitance: number | string;
4012
4414
  polarized?: boolean;
@@ -5664,6 +6066,10 @@ interface PinHeaderProps extends CommonComponentProps {
5664
6066
  * Labels for each pin
5665
6067
  */
5666
6068
  pinLabels?: string[];
6069
+ /**
6070
+ * Direction the header is facing
6071
+ */
6072
+ facingDirection?: "left" | "right";
5667
6073
  }
5668
6074
  declare const pinHeaderProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.extendShape<z.objectUtil.extendShape<{
5669
6075
  pcbX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
@@ -5930,6 +6336,7 @@ declare const pinHeaderProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.
5930
6336
  holeDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
5931
6337
  platedDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
5932
6338
  pinLabels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
6339
+ facingDirection: z.ZodOptional<z.ZodEnum<["left", "right"]>>;
5933
6340
  }>, "strip", z.ZodTypeAny, {
5934
6341
  name: string;
5935
6342
  pinCount: number;
@@ -6005,6 +6412,7 @@ declare const pinHeaderProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.
6005
6412
  showSilkscreenPinLabels?: boolean | undefined;
6006
6413
  doubleRow?: boolean | undefined;
6007
6414
  platedDiameter?: number | undefined;
6415
+ facingDirection?: "left" | "right" | undefined;
6008
6416
  }, {
6009
6417
  name: string;
6010
6418
  pinCount: number;
@@ -6082,6 +6490,7 @@ declare const pinHeaderProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.
6082
6490
  showSilkscreenPinLabels?: boolean | undefined;
6083
6491
  doubleRow?: boolean | undefined;
6084
6492
  platedDiameter?: string | number | undefined;
6493
+ facingDirection?: "left" | "right" | undefined;
6085
6494
  }>;
6086
6495
 
6087
6496
  interface NetAliasProps {
@@ -9767,4 +10176,4 @@ declare const fabricationNotePathProps: z.ZodObject<z.objectUtil.extendShape<Omi
9767
10176
  }>;
9768
10177
  type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>;
9769
10178
 
9770
- export { type BaseGroupProps, type BatteryProps, type BoardProps, type CadModelBase, type CadModelJscad, type CadModelObj, type CadModelProp, type CadModelStl, type CapacitorProps, type ChipProps, type CirclePlatedHoleProps, type CircleSmtPadProps, type CircleSolderPasteProps, type CommonComponentProps, type CommonLayoutProps, type ComponentProps, type ConstrainedLayoutProps, type ConstraintProps, type DiodeProps, type Direction, type DirectionAlongEdge, type FabricationNotePathProps, type FabricationNoteTextProps, type Footprint, type FootprintProps, type FootprintPropsInput, type FootprintSoupElements, type GroupProps, type HoleProps, type InductorProps, type InferredChipProps, type InferredConstrainedLayoutProps, type InferredHoleProps, type InferredSmtPadProps, type InferredSolderPasteProps, type JumperProps, type LedProps, type NetAliasProps, type NetProps, type OvalPlatedHoleProps, type PartsEngine, type PcbKeepoutProps, type PcbLayoutProps, type PcbSameXConstraint, type PcbSameYConstraint, type PcbTraceProps, type PcbXDistConstraint, type PcbYDistConstraint, type PillPlatedHoleProps, type PinHeaderProps, type PinSideDefinition, type PlatedHoleProps, type PortHints, type PortProps, type PowerSourceProps, type PushButtonProps, type RectSmtPadProps, type RectSolderPasteProps, type ResistorProps, type SchematicBoxProps, type SchematicLineProps, type SchematicPathProps, type SchematicPinStyle, type SchematicPortArrangement, type SchematicPortArrangementWithPinCounts, type SchematicPortArrangementWithSides, type SchematicPortArrangementWithSizes, type SchematicTextProps, type SilkscreenCircleProps, type SilkscreenLineProps, type SilkscreenPathProps, type SilkscreenRectProps, type SilkscreenTextProps, type SmtPadProps, type SolderPasteProps, type SubcircuitGroupProps, type SupplierName, type SupplierPartNumbers, type SupplierProps, type SwitchProps, type TraceHintProps, type TraceProps, type ViaProps, baseGroupProps, batteryPins, batteryProps, boardProps, bugProps, cadModelBase, cadModelJscad, cadModelObj, cadModelProp, cadModelStl, capacitorPins, capacitorProps, chipProps, circleSmtPadProps, circleSolderPasteProps, commonComponentProps, commonLayoutProps, componentProps, constrainedLayoutProps, constraintProps, diodePins, diodeProps, direction, directionAlongEdge, distanceOrMultiplier, explicitPinSideDefinition, fabricationNotePathProps, fabricationNoteTextProps, footprintProp, footprintProps, groupProps, holeProps, inductorPins, inductorProps, jumperProps, ledPins, ledProps, lrPins, lrPolarPins, netAliasProps, netProps, pcbKeepoutProps, pcbLayoutProps, pcbSameXConstraintProps, pcbSameYConstraintProps, pcbTraceProps, pcbXDistConstraintProps, pcbYDistConstraintProps, pinHeaderProps, platedHoleProps, point3, portHints, portProps, portRef, powerSourceProps, pushButtonProps, rectSmtPadProps, rectSolderPasteProps, resistorPins, resistorProps, rotationPoint3, routeHintPointProps, schematicBoxProps, schematicLineProps, schematicPathProps, schematicPinStyle, schematicPortArrangement, schematicTextProps, silkscreenCircleProps, silkscreenLineProps, silkscreenPathProps, silkscreenRectProps, silkscreenTextProps, smtPadProps, solderPasteProps, subcircuitGroupProps, supplierProps, switchProps, traceHintProps, traceProps, viaProps };
10179
+ export { type BaseGroupProps, type BatteryProps, type BoardProps, type CadModelBase, type CadModelJscad, type CadModelObj, type CadModelProp, type CadModelStl, type CapacitorProps, type ChipProps, type CirclePlatedHoleProps, type CircleSmtPadProps, type CircleSolderPasteProps, type CommonComponentProps, type CommonLayoutProps, type ComponentProps, type ConstrainedLayoutProps, type ConstraintProps, type DiodeProps, type Direction, type DirectionAlongEdge, type FabricationNotePathProps, type FabricationNoteTextProps, type Footprint, type FootprintProps, type FootprintPropsInput, type FootprintSoupElements, type GroupProps, type HoleProps, type InductorProps, type InferredChipProps, type InferredConstrainedLayoutProps, type InferredHoleProps, type InferredSmtPadProps, type InferredSolderPasteProps, type JumperProps, type LedProps, type NetAliasProps, type NetProps, type OvalPlatedHoleProps, type PartsEngine, type PcbKeepoutProps, type PcbLayoutProps, type PcbSameXConstraint, type PcbSameYConstraint, type PcbTraceProps, type PcbXDistConstraint, type PcbYDistConstraint, type PillPlatedHoleProps, type PinHeaderProps, type PinSideDefinition, type PlatedHoleProps, type PortHints, type PortProps, type PotentiometerProps, type PowerSourceProps, type PushButtonProps, type RectSmtPadProps, type RectSolderPasteProps, type ResistorProps, type SchematicBoxProps, type SchematicLineProps, type SchematicPathProps, type SchematicPinStyle, type SchematicPortArrangement, type SchematicPortArrangementWithPinCounts, type SchematicPortArrangementWithSides, type SchematicPortArrangementWithSizes, type SchematicTextProps, type SilkscreenCircleProps, type SilkscreenLineProps, type SilkscreenPathProps, type SilkscreenRectProps, type SilkscreenTextProps, type SmtPadProps, type SolderPasteProps, type SubcircuitGroupProps, type SupplierName, type SupplierPartNumbers, type SupplierProps, type SwitchProps, type TraceHintProps, type TraceProps, type ViaProps, baseGroupProps, batteryPins, batteryProps, boardProps, bugProps, cadModelBase, cadModelJscad, cadModelObj, cadModelProp, cadModelStl, capacitorPins, capacitorProps, chipProps, circleSmtPadProps, circleSolderPasteProps, commonComponentProps, commonLayoutProps, componentProps, constrainedLayoutProps, constraintProps, diodePins, diodeProps, direction, directionAlongEdge, distanceOrMultiplier, explicitPinSideDefinition, fabricationNotePathProps, fabricationNoteTextProps, footprintProp, footprintProps, groupProps, holeProps, inductorPins, inductorProps, jumperProps, ledPins, ledProps, lrPins, lrPolarPins, netAliasProps, netProps, pcbKeepoutProps, pcbLayoutProps, pcbSameXConstraintProps, pcbSameYConstraintProps, pcbTraceProps, pcbXDistConstraintProps, pcbYDistConstraintProps, pinHeaderProps, platedHoleProps, point3, portHints, portProps, portRef, potentiometerPins, potentiometerProps, powerSourceProps, pushButtonProps, rectSmtPadProps, rectSolderPasteProps, resistorPins, resistorProps, rotationPoint3, routeHintPointProps, schematicBoxProps, schematicLineProps, schematicPathProps, schematicPinStyle, schematicPortArrangement, schematicTextProps, silkscreenCircleProps, silkscreenLineProps, silkscreenPathProps, silkscreenRectProps, silkscreenTextProps, smtPadProps, solderPasteProps, subcircuitGroupProps, supplierProps, switchProps, traceHintProps, traceProps, viaProps };
package/dist/index.js CHANGED
@@ -74,6 +74,8 @@ __export(lib_exports, {
74
74
  portHints: () => portHints,
75
75
  portProps: () => portProps,
76
76
  portRef: () => portRef,
77
+ potentiometerPins: () => potentiometerPins,
78
+ potentiometerProps: () => potentiometerProps,
77
79
  powerSourceProps: () => powerSourceProps,
78
80
  pushButtonProps: () => pushButtonProps,
79
81
  rectSmtPadProps: () => rectSmtPadProps,
@@ -103,7 +105,7 @@ __export(lib_exports, {
103
105
  viaProps: () => viaProps
104
106
  });
105
107
  module.exports = __toCommonJS(lib_exports);
106
- var import_circuit_json17 = require("circuit-json");
108
+ var import_circuit_json18 = require("circuit-json");
107
109
  var import_zod30 = require("zod");
108
110
 
109
111
  // lib/typecheck.ts
@@ -386,11 +388,19 @@ var resistorProps = commonComponentProps.extend({
386
388
  var resistorPins = lrPins;
387
389
  expectTypesMatch(true);
388
390
 
389
- // lib/components/capacitor.ts
391
+ // lib/components/potentiometer.ts
390
392
  var import_circuit_json11 = require("circuit-json");
393
+ var potentiometerProps = commonComponentProps.extend({
394
+ maxResistance: import_circuit_json11.resistance
395
+ });
396
+ var potentiometerPins = lrPins;
397
+ expectTypesMatch(true);
398
+
399
+ // lib/components/capacitor.ts
400
+ var import_circuit_json12 = require("circuit-json");
391
401
  var import_zod16 = require("zod");
392
402
  var capacitorProps = commonComponentProps.extend({
393
- capacitance: import_circuit_json11.capacitance,
403
+ capacitance: import_circuit_json12.capacitance,
394
404
  polarized: import_zod16.z.boolean().optional().default(false),
395
405
  decouplingFor: import_zod16.z.string().optional(),
396
406
  decouplingTo: import_zod16.z.string().optional(),
@@ -418,13 +428,13 @@ expectTypesMatch(true);
418
428
 
419
429
  // lib/common/distance.ts
420
430
  var import_zod19 = require("zod");
421
- var import_circuit_json12 = require("circuit-json");
431
+ var import_circuit_json13 = require("circuit-json");
422
432
 
423
433
  // lib/components/constraint.ts
424
434
  var import_zod20 = require("zod");
425
435
  var pcbXDistConstraintProps = import_zod20.z.object({
426
436
  pcb: import_zod20.z.literal(true).optional(),
427
- xDist: import_circuit_json12.distance,
437
+ xDist: import_circuit_json13.distance,
428
438
  left: import_zod20.z.string(),
429
439
  right: import_zod20.z.string(),
430
440
  edgeToEdge: import_zod20.z.literal(true).optional(),
@@ -435,7 +445,7 @@ expectTypesMatch(
435
445
  );
436
446
  var pcbYDistConstraintProps = import_zod20.z.object({
437
447
  pcb: import_zod20.z.literal(true).optional(),
438
- yDist: import_circuit_json12.distance,
448
+ yDist: import_circuit_json13.distance,
439
449
  top: import_zod20.z.string(),
440
450
  bottom: import_zod20.z.string(),
441
451
  edgeToEdge: import_zod20.z.literal(true).optional(),
@@ -472,14 +482,14 @@ expectTypesMatch(true);
472
482
  var import_zod21 = require("zod");
473
483
  var rectSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
474
484
  shape: import_zod21.z.literal("rect"),
475
- width: import_circuit_json12.distance,
476
- height: import_circuit_json12.distance,
485
+ width: import_circuit_json13.distance,
486
+ height: import_circuit_json13.distance,
477
487
  portHints: portHints.optional()
478
488
  });
479
489
  expectTypesMatch(true);
480
490
  var circleSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
481
491
  shape: import_zod21.z.literal("circle"),
482
- radius: import_circuit_json12.distance,
492
+ radius: import_circuit_json13.distance,
483
493
  portHints: portHints.optional()
484
494
  });
485
495
  expectTypesMatch(true);
@@ -490,13 +500,13 @@ expectTypesMatch(true);
490
500
  var import_zod22 = require("zod");
491
501
  var rectSolderPasteProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
492
502
  shape: import_zod22.z.literal("rect"),
493
- width: import_circuit_json12.distance,
494
- height: import_circuit_json12.distance
503
+ width: import_circuit_json13.distance,
504
+ height: import_circuit_json13.distance
495
505
  });
496
506
  expectTypesMatch(true);
497
507
  var circleSolderPasteProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
498
508
  shape: import_zod22.z.literal("circle"),
499
- radius: import_circuit_json12.distance
509
+ radius: import_circuit_json13.distance
500
510
  });
501
511
  expectTypesMatch(true);
502
512
  var solderPasteProps = import_zod22.z.union([
@@ -509,8 +519,8 @@ expectTypesMatch(true);
509
519
  var import_zod23 = require("zod");
510
520
  var holeProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
511
521
  name: import_zod23.z.string().optional(),
512
- diameter: import_circuit_json12.distance.optional(),
513
- radius: import_circuit_json12.distance.optional()
522
+ diameter: import_circuit_json13.distance.optional(),
523
+ radius: import_circuit_json13.distance.optional()
514
524
  }).transform((d) => ({
515
525
  ...d,
516
526
  diameter: d.diameter ?? 2 * d.radius,
@@ -519,7 +529,7 @@ var holeProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
519
529
  expectTypesMatch(true);
520
530
 
521
531
  // lib/components/trace.ts
522
- var import_circuit_json13 = require("circuit-json");
532
+ var import_circuit_json14 = require("circuit-json");
523
533
  var import_zod24 = require("zod");
524
534
  var portRef = import_zod24.z.union([
525
535
  import_zod24.z.string(),
@@ -529,9 +539,9 @@ var portRef = import_zod24.z.union([
529
539
  ]);
530
540
  var baseTraceProps = import_zod24.z.object({
531
541
  key: import_zod24.z.string().optional(),
532
- thickness: import_circuit_json13.distance.optional(),
542
+ thickness: import_circuit_json14.distance.optional(),
533
543
  schematicRouteHints: import_zod24.z.array(point).optional(),
534
- pcbRouteHints: import_zod24.z.array(import_circuit_json13.route_hint_point).optional()
544
+ pcbRouteHints: import_zod24.z.array(import_circuit_json14.route_hint_point).optional()
535
545
  });
536
546
  var traceProps = import_zod24.z.union([
537
547
  baseTraceProps.extend({
@@ -544,10 +554,10 @@ var traceProps = import_zod24.z.union([
544
554
  ]);
545
555
 
546
556
  // lib/components/footprint.ts
547
- var import_circuit_json14 = require("circuit-json");
557
+ var import_circuit_json15 = require("circuit-json");
548
558
  var import_zod25 = require("zod");
549
559
  var footprintProps = import_zod25.z.object({
550
- originalLayer: import_circuit_json14.layer_ref.default("top").optional()
560
+ originalLayer: import_circuit_json15.layer_ref.default("top").optional()
551
561
  });
552
562
  expectTypesMatch(true);
553
563
 
@@ -571,28 +581,29 @@ var batteryPins = lrPolarPins;
571
581
  expectTypesMatch(true);
572
582
 
573
583
  // lib/components/pin-header.ts
574
- var import_circuit_json15 = require("circuit-json");
584
+ var import_circuit_json16 = require("circuit-json");
575
585
  var import_zod27 = require("zod");
576
586
  var pinHeaderProps = commonComponentProps.extend({
577
587
  pinCount: import_zod27.z.number(),
578
- pitch: import_circuit_json15.distance.optional(),
588
+ pitch: import_circuit_json16.distance.optional(),
579
589
  gender: import_zod27.z.enum(["male", "female"]).optional(),
580
590
  showSilkscreenPinLabels: import_zod27.z.boolean().optional(),
581
591
  doubleRow: import_zod27.z.boolean().optional(),
582
- holeDiameter: import_circuit_json15.distance.optional(),
583
- platedDiameter: import_circuit_json15.distance.optional(),
584
- pinLabels: import_zod27.z.array(import_zod27.z.string()).optional()
592
+ holeDiameter: import_circuit_json16.distance.optional(),
593
+ platedDiameter: import_circuit_json16.distance.optional(),
594
+ pinLabels: import_zod27.z.array(import_zod27.z.string()).optional(),
595
+ facingDirection: import_zod27.z.enum(["left", "right"]).optional()
585
596
  });
586
597
  expectTypesMatch(true);
587
598
 
588
599
  // lib/components/netalias.ts
589
600
  var import_zod28 = require("zod");
590
- var import_circuit_json16 = require("circuit-json");
601
+ var import_circuit_json17 = require("circuit-json");
591
602
  var netAliasProps = import_zod28.z.object({
592
603
  net: import_zod28.z.string().optional(),
593
- schX: import_circuit_json12.distance.optional(),
594
- schY: import_circuit_json12.distance.optional(),
595
- schRotation: import_circuit_json16.rotation.optional(),
604
+ schX: import_circuit_json13.distance.optional(),
605
+ schY: import_circuit_json13.distance.optional(),
606
+ schRotation: import_circuit_json17.rotation.optional(),
596
607
  anchorSide: import_zod28.z.enum(["left", "up", "right", "down"]).optional()
597
608
  });
598
609
  expectTypesMatch(true);
@@ -603,7 +614,7 @@ var pushButtonProps = commonComponentProps.extend({});
603
614
 
604
615
  // lib/index.ts
605
616
  var inductorProps = commonComponentProps.extend({
606
- inductance: import_circuit_json17.inductance
617
+ inductance: import_circuit_json18.inductance
607
618
  });
608
619
  var inductorPins = lrPins;
609
620
  var diodeProps = commonComponentProps.extend({});
@@ -617,49 +628,49 @@ var switchProps = commonComponentProps.extend({
617
628
  switchType: import_zod30.z.enum(["spst"]).default("spst"),
618
629
  isNormallyClosed: import_zod30.z.boolean().default(false)
619
630
  });
620
- var distanceOrMultiplier2 = import_circuit_json17.distance.or(import_zod30.z.enum(["2x", "3x", "4x"]));
631
+ var distanceOrMultiplier2 = import_circuit_json18.distance.or(import_zod30.z.enum(["2x", "3x", "4x"]));
621
632
  var viaProps = commonLayoutProps.extend({
622
- fromLayer: import_circuit_json17.layer_ref,
623
- toLayer: import_circuit_json17.layer_ref,
624
- holeDiameter: import_circuit_json17.distance,
625
- outerDiameter: import_circuit_json17.distance
633
+ fromLayer: import_circuit_json18.layer_ref,
634
+ toLayer: import_circuit_json18.layer_ref,
635
+ holeDiameter: import_circuit_json18.distance,
636
+ outerDiameter: import_circuit_json18.distance
626
637
  });
627
638
  var pcbKeepoutProps = import_zod30.z.union([
628
639
  pcbLayoutProps.omit({ pcbRotation: true }).extend({
629
640
  shape: import_zod30.z.literal("circle"),
630
- radius: import_circuit_json17.distance
641
+ radius: import_circuit_json18.distance
631
642
  }),
632
643
  pcbLayoutProps.extend({
633
644
  shape: import_zod30.z.literal("rect"),
634
- width: import_circuit_json17.distance,
635
- height: import_circuit_json17.distance
645
+ width: import_circuit_json18.distance,
646
+ height: import_circuit_json18.distance
636
647
  })
637
648
  ]);
638
649
  var schematicBoxProps = import_zod30.z.object({
639
- schX: import_circuit_json17.distance,
640
- schY: import_circuit_json17.distance,
641
- width: import_circuit_json17.distance,
642
- height: import_circuit_json17.distance
650
+ schX: import_circuit_json18.distance,
651
+ schY: import_circuit_json18.distance,
652
+ width: import_circuit_json18.distance,
653
+ height: import_circuit_json18.distance
643
654
  });
644
655
  var schematicTextProps = import_zod30.z.object({
645
- schX: import_circuit_json17.distance,
646
- schY: import_circuit_json17.distance,
656
+ schX: import_circuit_json18.distance,
657
+ schY: import_circuit_json18.distance,
647
658
  text: import_zod30.z.string()
648
659
  });
649
660
  var schematicLineProps = import_zod30.z.object({
650
- x1: import_circuit_json17.distance,
651
- y1: import_circuit_json17.distance,
652
- x2: import_circuit_json17.distance,
653
- y2: import_circuit_json17.distance
661
+ x1: import_circuit_json18.distance,
662
+ y1: import_circuit_json18.distance,
663
+ x2: import_circuit_json18.distance,
664
+ y2: import_circuit_json18.distance
654
665
  });
655
666
  var schematicPathProps = import_zod30.z.object({
656
- points: import_zod30.z.array(import_circuit_json17.point),
667
+ points: import_zod30.z.array(import_circuit_json18.point),
657
668
  isFilled: import_zod30.z.boolean().optional().default(false),
658
669
  fillColor: import_zod30.z.enum(["red", "blue"]).optional()
659
670
  });
660
671
  var componentProps = commonComponentProps;
661
672
  var powerSourceProps = commonComponentProps.extend({
662
- voltage: import_circuit_json17.voltage
673
+ voltage: import_circuit_json18.voltage
663
674
  });
664
675
  var portProps = commonLayoutProps.extend({
665
676
  name: import_zod30.z.string(),
@@ -671,62 +682,62 @@ var silkscreenTextProps = pcbLayoutProps.extend({
671
682
  text: import_zod30.z.string(),
672
683
  anchorAlignment: import_zod30.z.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center"),
673
684
  font: import_zod30.z.enum(["tscircuit2024"]).optional(),
674
- fontSize: import_circuit_json17.length.optional()
685
+ fontSize: import_circuit_json18.length.optional()
675
686
  });
676
687
  var silkscreenPathProps = pcbLayoutProps.omit({ pcbX: true, pcbY: true, pcbRotation: true }).extend({
677
- route: import_zod30.z.array(import_circuit_json17.route_hint_point),
678
- strokeWidth: import_circuit_json17.length.optional()
688
+ route: import_zod30.z.array(import_circuit_json18.route_hint_point),
689
+ strokeWidth: import_circuit_json18.length.optional()
679
690
  });
680
691
  var silkscreenLineProps = pcbLayoutProps.omit({ pcbX: true, pcbY: true, pcbRotation: true }).extend({
681
- strokeWidth: import_circuit_json17.distance,
682
- x1: import_circuit_json17.distance,
683
- y1: import_circuit_json17.distance,
684
- x2: import_circuit_json17.distance,
685
- y2: import_circuit_json17.distance
692
+ strokeWidth: import_circuit_json18.distance,
693
+ x1: import_circuit_json18.distance,
694
+ y1: import_circuit_json18.distance,
695
+ x2: import_circuit_json18.distance,
696
+ y2: import_circuit_json18.distance
686
697
  });
687
698
  var silkscreenRectProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
688
699
  isFilled: import_zod30.z.boolean().optional(),
689
700
  isOutline: import_zod30.z.boolean().optional(),
690
- strokeWidth: import_circuit_json17.distance.optional(),
691
- width: import_circuit_json17.distance,
692
- height: import_circuit_json17.distance
701
+ strokeWidth: import_circuit_json18.distance.optional(),
702
+ width: import_circuit_json18.distance,
703
+ height: import_circuit_json18.distance
693
704
  });
694
705
  var silkscreenCircleProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
695
706
  isFilled: import_zod30.z.boolean().optional(),
696
707
  isOutline: import_zod30.z.boolean().optional(),
697
- strokeWidth: import_circuit_json17.distance.optional(),
698
- radius: import_circuit_json17.distance
708
+ strokeWidth: import_circuit_json18.distance.optional(),
709
+ radius: import_circuit_json18.distance
699
710
  });
700
711
  var routeHintPointProps = import_zod30.z.object({
701
- x: import_circuit_json17.distance,
702
- y: import_circuit_json17.distance,
712
+ x: import_circuit_json18.distance,
713
+ y: import_circuit_json18.distance,
703
714
  via: import_zod30.z.boolean().optional(),
704
- toLayer: import_circuit_json17.layer_ref.optional()
715
+ toLayer: import_circuit_json18.layer_ref.optional()
705
716
  });
706
717
  var traceHintProps = import_zod30.z.object({
707
718
  for: import_zod30.z.string().optional().describe(
708
719
  "Selector for the port you're targeting, not required if you're inside a trace"
709
720
  ),
710
721
  order: import_zod30.z.number().optional(),
711
- offset: import_circuit_json17.route_hint_point.or(routeHintPointProps).optional(),
712
- offsets: import_zod30.z.array(import_circuit_json17.route_hint_point).or(import_zod30.z.array(routeHintPointProps)).optional(),
722
+ offset: import_circuit_json18.route_hint_point.or(routeHintPointProps).optional(),
723
+ offsets: import_zod30.z.array(import_circuit_json18.route_hint_point).or(import_zod30.z.array(routeHintPointProps)).optional(),
713
724
  traceWidth: import_zod30.z.number().optional()
714
725
  });
715
726
  var pcbTraceProps = import_zod30.z.object({
716
727
  layer: import_zod30.z.string().optional(),
717
- thickness: import_circuit_json17.distance.optional(),
718
- route: import_zod30.z.array(import_circuit_json17.route_hint_point)
728
+ thickness: import_circuit_json18.distance.optional(),
729
+ route: import_zod30.z.array(import_circuit_json18.route_hint_point)
719
730
  });
720
731
  var fabricationNoteTextProps = pcbLayoutProps.extend({
721
732
  text: import_zod30.z.string(),
722
733
  anchorAlignment: import_zod30.z.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center"),
723
734
  font: import_zod30.z.enum(["tscircuit2024"]).optional(),
724
- fontSize: import_circuit_json17.length.optional(),
735
+ fontSize: import_circuit_json18.length.optional(),
725
736
  color: import_zod30.z.string().optional()
726
737
  });
727
738
  var fabricationNotePathProps = pcbLayoutProps.omit({ pcbX: true, pcbY: true, pcbRotation: true }).extend({
728
- route: import_zod30.z.array(import_circuit_json17.route_hint_point),
729
- strokeWidth: import_circuit_json17.length.optional(),
739
+ route: import_zod30.z.array(import_circuit_json18.route_hint_point),
740
+ strokeWidth: import_circuit_json18.length.optional(),
730
741
  color: import_zod30.z.string().optional()
731
742
  });
732
743
  // Annotate the CommonJS export names for ESM import in node:
@@ -785,6 +796,8 @@ var fabricationNotePathProps = pcbLayoutProps.omit({ pcbX: true, pcbY: true, pcb
785
796
  portHints,
786
797
  portProps,
787
798
  portRef,
799
+ potentiometerPins,
800
+ potentiometerProps,
788
801
  powerSourceProps,
789
802
  pushButtonProps,
790
803
  rectSmtPadProps,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/index.ts","../lib/typecheck.ts","../lib/common/direction.ts","../lib/common/portHints.ts","../lib/common/layout.ts","../lib/common/cadModel.ts","../lib/common/point3.ts","../lib/common/footprintProp.ts","../lib/common/schematicPinDefinitions.ts","../lib/common/schematicPinStyle.ts","../lib/components/board.ts","../lib/common/point.ts","../lib/components/group.ts","../lib/components/chip.ts","../lib/components/jumper.ts","../lib/components/platedhole.ts","../lib/components/resistor.ts","../lib/components/capacitor.ts","../lib/components/net.ts","../lib/components/constrainedlayout.ts","../lib/common/distance.ts","../lib/components/constraint.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/push-button.ts"],"sourcesContent":["/**\n * THINKING ABOUT ADDING SOMETHING TO THIS FILE?\n *\n * THINK AGAIN!\n *\n * This file is TOO BIG! Create files using the pattern in the surrounding\n * directories, then export from this file.\n */\nimport type { LayoutBuilder } from \"@tscircuit/layout\"\nimport {\n type AnySoupElementInput,\n capacitance,\n distance,\n inductance,\n layer_ref,\n length,\n type PCBPlatedHoleInput,\n type PCBSMTPadInput,\n point,\n resistance,\n rotation,\n route_hint_point,\n supplier_name,\n voltage,\n} from \"circuit-json\"\nimport type { ReactElement } from \"react\"\nimport { z } from \"zod\"\nimport { direction } from \"./common/direction\"\nimport { portHints } from \"./common/portHints\"\nimport {\n commonComponentProps,\n commonLayoutProps,\n lrPins,\n lrPolarPins,\n pcbLayoutProps,\n} from \"./common/layout\"\nimport { explicitPinSideDefinition } from \"./common/schematicPinDefinitions\"\n\nexport * from \"./common/direction\"\nexport * from \"./common/portHints\"\nexport * from \"./common/layout\"\nexport * from \"./common/point3\"\nexport * from \"./common/portHints\"\nexport * from \"./common/footprintProp\"\nexport * from \"./common/schematicPinDefinitions\"\nexport * from \"./common/schematicPinStyle\"\nexport * from \"./common/cadModel\"\n\nexport * from \"./components/board\"\nexport * from \"./components/chip\"\nexport * from \"./components/jumper\"\nexport * from \"./components/platedhole\"\n\nexport * from \"./components/resistor\"\nexport * from \"./components/capacitor\"\nexport * from \"./components/group\"\nexport * from \"./components/net\"\nexport * from \"./components/constrainedlayout\"\nexport * from \"./components/constraint\"\nexport * from \"./components/smtpad\"\nexport * from \"./components/solderpaste\"\nexport * from \"./components/hole\"\nexport * from \"./components/trace\"\nexport * from \"./components/footprint\"\nexport * from \"./components/battery\"\nexport * from \"./components/pin-header\"\nexport * from \"./components/netalias\"\nexport * from \"./components/push-button\"\n\nexport const inductorProps = commonComponentProps.extend({\n inductance,\n})\nexport const inductorPins = lrPins\nexport type InductorProps = z.input<typeof inductorProps>\n\nexport const diodeProps = commonComponentProps.extend({})\nexport const diodePins = lrPolarPins\nexport type DiodeProps = z.input<typeof diodeProps>\n\nexport const ledProps = commonComponentProps.extend({\n color: z.string().optional(),\n})\nexport const ledPins = lrPolarPins\nexport type LedProps = z.input<typeof ledProps>\n\nexport const switchProps = commonComponentProps.extend({\n ftype: z.literal(\"switch\"),\n switchType: z.enum([\"spst\"]).default(\"spst\"),\n isNormallyClosed: z.boolean().default(false),\n})\nexport type SwitchProps = z.input<typeof switchProps>\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n\nexport const viaProps = commonLayoutProps.extend({\n fromLayer: layer_ref,\n toLayer: layer_ref,\n holeDiameter: distance,\n outerDiameter: distance,\n})\nexport type ViaProps = z.input<typeof viaProps>\n\nexport const pcbKeepoutProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true }).extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n }),\n pcbLayoutProps.extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n }),\n])\nexport type PcbKeepoutProps = z.input<typeof pcbKeepoutProps>\n\nexport const schematicBoxProps = z.object({\n schX: distance,\n schY: distance,\n width: distance,\n height: distance,\n})\nexport type SchematicBoxProps = z.input<typeof schematicBoxProps>\n\nexport const schematicTextProps = z.object({\n schX: distance,\n schY: distance,\n text: z.string(),\n})\nexport type SchematicTextProps = z.input<typeof schematicTextProps>\n\nexport const schematicLineProps = z.object({\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n})\nexport type SchematicLineProps = z.input<typeof schematicLineProps>\n\nexport const schematicPathProps = z.object({\n points: z.array(point),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.enum([\"red\", \"blue\"]).optional(),\n})\nexport type SchematicPathProps = z.input<typeof schematicPathProps>\n\nexport const componentProps = commonComponentProps\nexport type ComponentProps = z.input<typeof componentProps>\n\nexport const powerSourceProps = commonComponentProps.extend({\n voltage,\n})\nexport type PowerSourceProps = z.input<typeof powerSourceProps>\n\nexport const portProps = commonLayoutProps.extend({\n name: z.string(),\n pinNumber: z.number().optional(),\n aliases: z.array(z.string()).optional(),\n direction: direction,\n})\nexport type PortProps = z.input<typeof portProps>\n\nexport const silkscreenTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type SilkscreenTextProps = z.input<typeof silkscreenTextProps>\n\nexport const silkscreenPathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type SilkscreenPathProps = z.input<typeof silkscreenPathProps>\n\nexport const silkscreenLineProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n strokeWidth: distance,\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n })\nexport type SilkscreenLineProps = z.input<typeof silkscreenLineProps>\n\nexport const silkscreenRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n width: distance,\n height: distance,\n })\nexport type SilkscreenRectProps = z.input<typeof silkscreenRectProps>\n\nexport const silkscreenCircleProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n radius: distance,\n })\nexport type SilkscreenCircleProps = z.input<typeof silkscreenCircleProps>\n\nexport const routeHintPointProps = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n toLayer: layer_ref.optional(),\n})\n\nexport const traceHintProps = z.object({\n for: z\n .string()\n .optional()\n .describe(\n \"Selector for the port you're targeting, not required if you're inside a trace\",\n ),\n order: z.number().optional(),\n offset: route_hint_point.or(routeHintPointProps).optional(),\n offsets: z\n .array(route_hint_point)\n .or(z.array(routeHintPointProps))\n .optional(),\n traceWidth: z.number().optional(),\n})\n\nexport type TraceHintProps = z.input<typeof traceHintProps>\n\nexport const pcbTraceProps = z.object({\n layer: z.string().optional(),\n thickness: distance.optional(),\n route: z.array(route_hint_point),\n})\nexport type PcbTraceProps = z.input<typeof pcbTraceProps>\n\nexport const fabricationNoteTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n})\nexport type FabricationNoteTextProps = z.input<typeof fabricationNoteTextProps>\n\nexport const fabricationNotePathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n color: z.string().optional(),\n })\nexport type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>\n","import type { TypeEqual } from \"ts-expect\"\n\ntype IsNever<T> = [T] extends [never] ? true : false\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>(\n shouldBe: IsNever<T3> extends true\n ? IsNever<T4> extends true\n ? TypeEqual<T1, T2>\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","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 Footprint, 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?: Footprint\n}\n\nexport const pcbLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n layer: layer_ref.optional(),\n})\ntype InferredPcbLayoutProps = z.input<typeof pcbLayoutProps>\nexpectTypesMatch<PcbLayoutProps, InferredPcbLayoutProps>(true)\n\nexport const commonLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n layer: layer_ref.optional(),\n footprint: footprintProp.optional(),\n})\n\ntype InferredCommonLayoutProps = z.input<typeof commonLayoutProps>\nexpectTypesMatch<CommonLayoutProps, InferredCommonLayoutProps>(true)\n\nexport type SupplierName =\n | \"jlcpcb\"\n | \"macrofab\"\n | \"pcbway\"\n | \"digikey\"\n | \"mouser\"\n | \"lcsc\"\nexport 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 extends CommonLayoutProps {\n key?: any\n name: string\n supplierPartNumbers?: SupplierPartNumbers\n cadModel?: CadModelProp\n children?: any\n symbolName?: string\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 })\n\ntype InferredCommonComponentProps = z.input<typeof commonComponentProps>\nexpectTypesMatch<CommonComponentProps, InferredCommonComponentProps>(true)\n\nexport const lrPins = [\"pin1\", \"left\", \"pin2\", \"right\"] as const\nexport const lrPolarPins = [\n \"pin1\",\n \"left\",\n \"anode\",\n \"pos\",\n \"pin2\",\n \"right\",\n \"cathode\",\n \"neg\",\n] as const\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n","import { z } from \"zod\"\nimport { point3 } from \"./point3\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const rotationPoint3 = z.object({\n x: z.union([z.number(), z.string()]),\n y: z.union([z.number(), z.string()]),\n z: z.union([z.number(), z.string()]),\n})\n\nexport interface CadModelBase {\n rotationOffset?:\n | number\n | { x: number | string; y: number | string; z: number | string }\n positionOffset?: {\n x: number | string\n y: number | string\n z: number | string\n }\n size?: { x: number | string; y: number | string; z: number | string }\n}\n\nexport const cadModelBase = z.object({\n rotationOffset: z.number().or(rotationPoint3).optional(),\n positionOffset: point3.optional(),\n size: point3.optional(),\n})\n\nexpectTypesMatch<CadModelBase, z.input<typeof cadModelBase>>(true)\n\nexport interface CadModelStl extends CadModelBase {\n stlUrl: string\n}\nexport const cadModelStl = cadModelBase.extend({\n stlUrl: z.string(),\n})\n\nexport interface CadModelObj extends CadModelBase {\n objUrl: string\n mtlUrl?: string\n}\nexport const cadModelObj = cadModelBase.extend({\n objUrl: z.string(),\n mtlUrl: z.string().optional(),\n})\n\nexport interface CadModelJscad extends CadModelBase {\n jscad: Record<string, any>\n}\nexport const cadModelJscad = cadModelBase.extend({\n jscad: z.record(z.any()),\n})\n\nexport type CadModelProp = string | CadModelStl | CadModelObj | CadModelJscad\n\nexport const cadModelProp = z.union([\n z.string(),\n cadModelStl,\n cadModelObj,\n cadModelJscad,\n])\n\ntype InferredCadModelProp = z.input<typeof cadModelProp>\nexpectTypesMatch<CadModelProp, InferredCadModelProp>(true)\n","import { 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 Footprint = string | ReactElement | FootprintSoupElements[]\nexport const footprintProp = z.custom<Footprint>((v) => true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\n/**\n * @deprecated Use SchematicPortArrangementWithPinCounts instead.\n */\nexport interface SchematicPortArrangementWithSizes {\n leftSize?: number\n topSize?: number\n rightSize?: number\n bottomSize?: number\n}\n\n/**\n * Specifies the number of pins on each side of the schematic box component.\n */\nexport interface SchematicPortArrangementWithPinCounts {\n leftPinCount?: number\n topPinCount?: number\n rightPinCount?: number\n bottomPinCount?: number\n}\n\nexport interface PinSideDefinition {\n pins: number[] | 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 const explicitPinSideDefinition = z.object({\n pins: z.array(z.number()).or(z.array(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\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\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 leftMargin?: number | string\n rightMargin?: number | string\n topMargin?: number | string\n bottomMargin?: number | string\n }\n>\n\nexport const schematicPinStyle = z.record(\n z.object({\n leftMargin: distance.optional(),\n rightMargin: distance.optional(),\n topMargin: distance.optional(),\n bottomMargin: distance.optional(),\n }),\n)\n\nexpectTypesMatch<SchematicPinStyle, z.input<typeof schematicPinStyle>>(true)\n","import 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}\n\nexport const boardProps = subcircuitGroupProps\n .omit({ subcircuit: true })\n .extend({\n width: distance.optional(),\n height: distance.optional(),\n outline: z.array(point).optional(),\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, ManualEditFile } from \"@tscircuit/layout\"\nimport { 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 } from \"circuit-json\"\n\nexport interface BaseGroupProps extends CommonLayoutProps {\n name?: string\n children?: any\n}\n\nexport type PartsEngine = {\n findPart: (params: {\n sourceComponent: AnySourceComponent\n footprinterString?: string\n }) => Promise<SupplierPartNumbers> | SupplierPartNumbers\n}\n\nexport interface SubcircuitGroupProps extends BaseGroupProps {\n subcircuit: true\n layout?: LayoutBuilder\n manualEdits?: ManualEditFile\n routingDisabled?: boolean\n defaultTraceWidth?: Distance\n minTraceWidth?: Distance\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 partsEngine?: PartsEngine\n}\n\nexport type GroupProps = SubcircuitGroupProps | BaseGroupProps\n\nexport const baseGroupProps = commonLayoutProps.extend({\n name: z.string().optional(),\n children: z.any().optional(),\n})\n\nexport const subcircuitGroupProps = baseGroupProps.extend({\n subcircuit: z.literal(true),\n layout: z.custom<LayoutBuilder>((v) => true).optional(),\n manualEdits: z.custom<ManualEditFile>((v) => true).optional(),\n schAutoLayoutEnabled: z.boolean().optional(),\n routingDisabled: z.boolean().optional(),\n defaultTraceWidth: length.optional(),\n minTraceWidth: length.optional(),\n partsEngine: z.custom<PartsEngine>((v) => \"findPart\" in v).optional(),\n})\n\nexport const groupProps = z.union([baseGroupProps, subcircuitGroupProps])\n\ntype InferredBaseGroupProps = z.input<typeof baseGroupProps>\ntype InferredSubcircuitGroupProps = z.input<typeof subcircuitGroupProps>\n\nexpectTypesMatch<BaseGroupProps, InferredBaseGroupProps>(true)\nexpectTypesMatch<SubcircuitGroupProps, InferredSubcircuitGroupProps>(true)\n\ntype InferredGroupProps = z.input<typeof groupProps>\nexpectTypesMatch<GroupProps, InferredGroupProps>(true)\n","import { distance } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\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 ChipProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, string | readonly string[]>\n schPortArrangement?: SchematicPortArrangement\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: Distance\n schWidth?: Distance\n schHeight?: Distance\n}\n\nexport const chipProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(\n z.number().or(z.string()),\n z.string().or(z.array(z.string()).readonly()),\n )\n .optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n})\n\n/**\n * @deprecated Use ChipProps instead.\n */\nexport const bugProps = chipProps\nexport type InferredChipProps = z.input<typeof chipProps>\n\nexpectTypesMatch<InferredChipProps, ChipProps>(true)\n","import { 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 JumperProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, string>\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: number | string\n schWidth?: number | string\n schHeight?: number | string\n schDirection?: \"left\" | \"right\"\n schPortArrangement?: SchematicPortArrangement\n}\n\nexport const jumperProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z.record(z.number().or(z.string()), z.string()).optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n schDirection: z.enum([\"left\", \"right\"]).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n})\n\ntype InferredJumperProps = z.input<typeof jumperProps>\nexpectTypesMatch<JumperProps, InferredJumperProps>(true)\n","import { 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 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 shape: \"oval\"\n outerWidth: number | string\n outerHeight: number | string\n innerWidth: number | string\n innerHeight: number | string\n portHints?: PortHints\n}\n\nexport interface PillPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n shape: \"pill\"\n outerWidth: number | string\n outerHeight: number | string\n innerWidth: number | string\n innerHeight: number | string\n portHints?: PortHints\n}\n\nexport type PlatedHoleProps =\n | CirclePlatedHoleProps\n | OvalPlatedHoleProps\n | PillPlatedHoleProps\n\nexport const platedHoleProps = z.discriminatedUnion(\"shape\", [\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n holeDiameter: distance,\n outerDiameter: distance,\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"oval\"),\n outerWidth: distance,\n outerHeight: distance,\n innerWidth: distance,\n innerHeight: distance,\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"pill\"),\n outerWidth: distance,\n outerHeight: distance,\n innerWidth: distance,\n innerHeight: distance,\n portHints: portHints.optional(),\n }),\n])\n\ntype InferredPlatedHoleProps = z.input<typeof platedHoleProps>\nexpectTypesMatch<PlatedHoleProps, InferredPlatedHoleProps>(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 interface ResistorProps extends CommonComponentProps {\n resistance: number | string\n pullupFor?: string\n pullupTo?: string\n pulldownFor?: string\n pulldownTo?: string\n}\n\nexport const resistorProps = commonComponentProps.extend({\n resistance,\n\n pullupFor: z.string().optional(),\n pullupTo: z.string().optional(),\n\n pulldownFor: z.string().optional(),\n pulldownTo: z.string().optional(),\n})\nexport const resistorPins = lrPins\n\ntype InferredResistorProps = z.input<typeof resistorProps>\nexpectTypesMatch<ResistorProps, InferredResistorProps>(true)\n","import { capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface CapacitorProps extends CommonComponentProps {\n capacitance: number | string\n polarized?: boolean\n\n decouplingFor?: string\n decouplingTo?: string\n\n bypassFor?: string\n bypassTo?: string\n}\n\nexport const capacitorProps = commonComponentProps.extend({\n capacitance,\n\n polarized: z.boolean().optional().default(false),\n\n decouplingFor: z.string().optional(),\n decouplingTo: z.string().optional(),\n\n bypassFor: z.string().optional(),\n bypassTo: z.string().optional(),\n})\nexport const capacitorPins = lrPolarPins\n\nexpectTypesMatch<CapacitorProps, z.input<typeof capacitorProps>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface NetProps {\n name: string\n}\n\nexport const netProps = z.object({\n name: z.string(),\n})\n\ntype InferredNetProps = z.input<typeof netProps>\nexpectTypesMatch<NetProps, InferredNetProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ConstrainedLayoutProps {\n name?: string\n pcbOnly?: boolean\n schOnly?: boolean\n}\n\nexport const constrainedLayoutProps = z.object({\n name: z.string().optional(),\n pcbOnly: z.boolean().optional(),\n schOnly: z.boolean().optional(),\n})\n\nexport type InferredConstrainedLayoutProps = z.input<\n typeof constrainedLayoutProps\n>\n\nexpectTypesMatch<InferredConstrainedLayoutProps, ConstrainedLayoutProps>(true)\n","import { z } from \"zod\"\n\nexport type Distance = number | string\n\nexport { distance, 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 {\n pcbLayoutProps,\n type CommonLayoutProps,\n type PcbLayoutProps,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { portHints, type PortHints } from \"lib/common/portHints\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"rect\"\n width: Distance\n height: Distance\n portHints?: PortHints\n}\n\nexport interface CircleSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"circle\"\n radius: Distance\n portHints?: PortHints\n}\n\nexport type SmtPadProps = RectSmtPadProps | CircleSmtPadProps\n\n// ----------------------------------------------------------------------------\n// Zod\n// ----------------------------------------------------------------------------\n\nexport const rectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n portHints: portHints.optional(),\n })\ntype InferredRectSmtPadProps = z.input<typeof rectSmtPadProps>\nexpectTypesMatch<InferredRectSmtPadProps, RectSmtPadProps>(true)\n\nexport const circleSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n portHints: portHints.optional(),\n })\ntype InferredCircleSmtPadProps = z.input<typeof circleSmtPadProps>\nexpectTypesMatch<InferredCircleSmtPadProps, CircleSmtPadProps>(true)\n\nexport const smtPadProps = z.union([circleSmtPadProps, rectSmtPadProps])\n\nexport type InferredSmtPadProps = z.input<typeof smtPadProps>\nexpectTypesMatch<InferredSmtPadProps, SmtPadProps>(true)\n","import { 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})\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 { 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 extends CommonComponentProps {\n capacity?: number | string\n}\n\nexport const batteryProps = commonComponentProps.extend({\n capacity: capacity.optional(),\n})\nexport const batteryPins = lrPolarPins\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 { 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 * 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\nexport const pinHeaderProps = commonComponentProps.extend({\n pinCount: z.number(),\n pitch: distance.optional(),\n gender: z.enum([\"male\", \"female\"]).optional(),\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})\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\nexport interface NetAliasProps {\n net?: string\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"up\" | \"right\" | \"down\"\n}\n\nexport const netAliasProps = z.object({\n net: z.string().optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"up\", \"right\", \"down\"]).optional(),\n})\n\ntype InferredNetAliasProps = z.input<typeof netAliasProps>\nexpectTypesMatch<NetAliasProps, InferredNetAliasProps>(true)\n","import { commonComponentProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const pushButtonProps = commonComponentProps.extend({})\nexport type PushButtonProps = z.input<typeof pushButtonProps>\n"],"mappings":"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","names":["distanceOrMultiplier","import_circuit_json","import_zod","import_zod","import_circuit_json","import_zod","import_zod","import_zod","import_zod","import_zod","import_circuit_json","import_zod","import_circuit_json","import_circuit_json","import_zod","import_zod","import_circuit_json","import_zod","import_circuit_json","import_zod","import_circuit_json","import_zod","import_circuit_json","import_zod","import_circuit_json","import_zod","import_circuit_json","import_zod","import_zod","import_zod","import_zod","import_circuit_json","import_zod","import_zod","import_zod","import_zod","import_circuit_json","import_zod","import_circuit_json","import_zod","import_zod","import_circuit_json","import_zod","import_zod","import_circuit_json","import_zod","distanceOrMultiplier"]}
1
+ {"version":3,"sources":["../lib/index.ts","../lib/typecheck.ts","../lib/common/direction.ts","../lib/common/portHints.ts","../lib/common/layout.ts","../lib/common/cadModel.ts","../lib/common/point3.ts","../lib/common/footprintProp.ts","../lib/common/schematicPinDefinitions.ts","../lib/common/schematicPinStyle.ts","../lib/components/board.ts","../lib/common/point.ts","../lib/components/group.ts","../lib/components/chip.ts","../lib/components/jumper.ts","../lib/components/platedhole.ts","../lib/components/resistor.ts","../lib/components/potentiometer.ts","../lib/components/capacitor.ts","../lib/components/net.ts","../lib/components/constrainedlayout.ts","../lib/common/distance.ts","../lib/components/constraint.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/push-button.ts"],"sourcesContent":["/**\n * THINKING ABOUT ADDING SOMETHING TO THIS FILE?\n *\n * THINK AGAIN!\n *\n * This file is TOO BIG! Create files using the pattern in the surrounding\n * directories, then export from this file.\n */\nimport type { LayoutBuilder } from \"@tscircuit/layout\"\nimport {\n type AnySoupElementInput,\n capacitance,\n distance,\n inductance,\n layer_ref,\n length,\n type PCBPlatedHoleInput,\n type PCBSMTPadInput,\n point,\n resistance,\n rotation,\n route_hint_point,\n supplier_name,\n voltage,\n} from \"circuit-json\"\nimport type { ReactElement } from \"react\"\nimport { z } from \"zod\"\nimport { direction } from \"./common/direction\"\nimport { portHints } from \"./common/portHints\"\nimport {\n commonComponentProps,\n commonLayoutProps,\n lrPins,\n lrPolarPins,\n pcbLayoutProps,\n} from \"./common/layout\"\nimport { explicitPinSideDefinition } from \"./common/schematicPinDefinitions\"\n\nexport * from \"./common/direction\"\nexport * from \"./common/portHints\"\nexport * from \"./common/layout\"\nexport * from \"./common/point3\"\nexport * from \"./common/portHints\"\nexport * from \"./common/footprintProp\"\nexport * from \"./common/schematicPinDefinitions\"\nexport * from \"./common/schematicPinStyle\"\nexport * from \"./common/cadModel\"\n\nexport * from \"./components/board\"\nexport * from \"./components/chip\"\nexport * from \"./components/jumper\"\nexport * from \"./components/platedhole\"\n\nexport * from \"./components/resistor\"\nexport * from \"./components/potentiometer\"\nexport * from \"./components/capacitor\"\nexport * from \"./components/group\"\nexport * from \"./components/net\"\nexport * from \"./components/constrainedlayout\"\nexport * from \"./components/constraint\"\nexport * from \"./components/smtpad\"\nexport * from \"./components/solderpaste\"\nexport * from \"./components/hole\"\nexport * from \"./components/trace\"\nexport * from \"./components/footprint\"\nexport * from \"./components/battery\"\nexport * from \"./components/pin-header\"\nexport * from \"./components/netalias\"\nexport * from \"./components/push-button\"\n\nexport const inductorProps = commonComponentProps.extend({\n inductance,\n})\nexport const inductorPins = lrPins\nexport type InductorProps = z.input<typeof inductorProps>\n\nexport const diodeProps = commonComponentProps.extend({})\nexport const diodePins = lrPolarPins\nexport type DiodeProps = z.input<typeof diodeProps>\n\nexport const ledProps = commonComponentProps.extend({\n color: z.string().optional(),\n})\nexport const ledPins = lrPolarPins\nexport type LedProps = z.input<typeof ledProps>\n\nexport const switchProps = commonComponentProps.extend({\n ftype: z.literal(\"switch\"),\n switchType: z.enum([\"spst\"]).default(\"spst\"),\n isNormallyClosed: z.boolean().default(false),\n})\nexport type SwitchProps = z.input<typeof switchProps>\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n\nexport const viaProps = commonLayoutProps.extend({\n fromLayer: layer_ref,\n toLayer: layer_ref,\n holeDiameter: distance,\n outerDiameter: distance,\n})\nexport type ViaProps = z.input<typeof viaProps>\n\nexport const pcbKeepoutProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true }).extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n }),\n pcbLayoutProps.extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n }),\n])\nexport type PcbKeepoutProps = z.input<typeof pcbKeepoutProps>\n\nexport const schematicBoxProps = z.object({\n schX: distance,\n schY: distance,\n width: distance,\n height: distance,\n})\nexport type SchematicBoxProps = z.input<typeof schematicBoxProps>\n\nexport const schematicTextProps = z.object({\n schX: distance,\n schY: distance,\n text: z.string(),\n})\nexport type SchematicTextProps = z.input<typeof schematicTextProps>\n\nexport const schematicLineProps = z.object({\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n})\nexport type SchematicLineProps = z.input<typeof schematicLineProps>\n\nexport const schematicPathProps = z.object({\n points: z.array(point),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.enum([\"red\", \"blue\"]).optional(),\n})\nexport type SchematicPathProps = z.input<typeof schematicPathProps>\n\nexport const componentProps = commonComponentProps\nexport type ComponentProps = z.input<typeof componentProps>\n\nexport const powerSourceProps = commonComponentProps.extend({\n voltage,\n})\nexport type PowerSourceProps = z.input<typeof powerSourceProps>\n\nexport const portProps = commonLayoutProps.extend({\n name: z.string(),\n pinNumber: z.number().optional(),\n aliases: z.array(z.string()).optional(),\n direction: direction,\n})\nexport type PortProps = z.input<typeof portProps>\n\nexport const silkscreenTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type SilkscreenTextProps = z.input<typeof silkscreenTextProps>\n\nexport const silkscreenPathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type SilkscreenPathProps = z.input<typeof silkscreenPathProps>\n\nexport const silkscreenLineProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n strokeWidth: distance,\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n })\nexport type SilkscreenLineProps = z.input<typeof silkscreenLineProps>\n\nexport const silkscreenRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n width: distance,\n height: distance,\n })\nexport type SilkscreenRectProps = z.input<typeof silkscreenRectProps>\n\nexport const silkscreenCircleProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n radius: distance,\n })\nexport type SilkscreenCircleProps = z.input<typeof silkscreenCircleProps>\n\nexport const routeHintPointProps = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n toLayer: layer_ref.optional(),\n})\n\nexport const traceHintProps = z.object({\n for: z\n .string()\n .optional()\n .describe(\n \"Selector for the port you're targeting, not required if you're inside a trace\",\n ),\n order: z.number().optional(),\n offset: route_hint_point.or(routeHintPointProps).optional(),\n offsets: z\n .array(route_hint_point)\n .or(z.array(routeHintPointProps))\n .optional(),\n traceWidth: z.number().optional(),\n})\n\nexport type TraceHintProps = z.input<typeof traceHintProps>\n\nexport const pcbTraceProps = z.object({\n layer: z.string().optional(),\n thickness: distance.optional(),\n route: z.array(route_hint_point),\n})\nexport type PcbTraceProps = z.input<typeof pcbTraceProps>\n\nexport const fabricationNoteTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n})\nexport type FabricationNoteTextProps = z.input<typeof fabricationNoteTextProps>\n\nexport const fabricationNotePathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n color: z.string().optional(),\n })\nexport type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>\n","import type { TypeEqual } from \"ts-expect\"\n\ntype IsNever<T> = [T] extends [never] ? true : false\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>(\n shouldBe: IsNever<T3> extends true\n ? IsNever<T4> extends true\n ? TypeEqual<T1, T2>\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","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 Footprint, 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?: Footprint\n}\n\nexport const pcbLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n layer: layer_ref.optional(),\n})\ntype InferredPcbLayoutProps = z.input<typeof pcbLayoutProps>\nexpectTypesMatch<PcbLayoutProps, InferredPcbLayoutProps>(true)\n\nexport const commonLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n layer: layer_ref.optional(),\n footprint: footprintProp.optional(),\n})\n\ntype InferredCommonLayoutProps = z.input<typeof commonLayoutProps>\nexpectTypesMatch<CommonLayoutProps, InferredCommonLayoutProps>(true)\n\nexport type SupplierName =\n | \"jlcpcb\"\n | \"macrofab\"\n | \"pcbway\"\n | \"digikey\"\n | \"mouser\"\n | \"lcsc\"\nexport 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 extends CommonLayoutProps {\n key?: any\n name: string\n supplierPartNumbers?: SupplierPartNumbers\n cadModel?: CadModelProp\n children?: any\n symbolName?: string\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 })\n\ntype InferredCommonComponentProps = z.input<typeof commonComponentProps>\nexpectTypesMatch<CommonComponentProps, InferredCommonComponentProps>(true)\n\nexport const lrPins = [\"pin1\", \"left\", \"pin2\", \"right\"] as const\nexport const lrPolarPins = [\n \"pin1\",\n \"left\",\n \"anode\",\n \"pos\",\n \"pin2\",\n \"right\",\n \"cathode\",\n \"neg\",\n] as const\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n","import { z } from \"zod\"\nimport { point3 } from \"./point3\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const rotationPoint3 = z.object({\n x: z.union([z.number(), z.string()]),\n y: z.union([z.number(), z.string()]),\n z: z.union([z.number(), z.string()]),\n})\n\nexport interface CadModelBase {\n rotationOffset?:\n | number\n | { x: number | string; y: number | string; z: number | string }\n positionOffset?: {\n x: number | string\n y: number | string\n z: number | string\n }\n size?: { x: number | string; y: number | string; z: number | string }\n}\n\nexport const cadModelBase = z.object({\n rotationOffset: z.number().or(rotationPoint3).optional(),\n positionOffset: point3.optional(),\n size: point3.optional(),\n})\n\nexpectTypesMatch<CadModelBase, z.input<typeof cadModelBase>>(true)\n\nexport interface CadModelStl extends CadModelBase {\n stlUrl: string\n}\nexport const cadModelStl = cadModelBase.extend({\n stlUrl: z.string(),\n})\n\nexport interface CadModelObj extends CadModelBase {\n objUrl: string\n mtlUrl?: string\n}\nexport const cadModelObj = cadModelBase.extend({\n objUrl: z.string(),\n mtlUrl: z.string().optional(),\n})\n\nexport interface CadModelJscad extends CadModelBase {\n jscad: Record<string, any>\n}\nexport const cadModelJscad = cadModelBase.extend({\n jscad: z.record(z.any()),\n})\n\nexport type CadModelProp = string | CadModelStl | CadModelObj | CadModelJscad\n\nexport const cadModelProp = z.union([\n z.string(),\n cadModelStl,\n cadModelObj,\n cadModelJscad,\n])\n\ntype InferredCadModelProp = z.input<typeof cadModelProp>\nexpectTypesMatch<CadModelProp, InferredCadModelProp>(true)\n","import { 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 Footprint = string | ReactElement | FootprintSoupElements[]\nexport const footprintProp = z.custom<Footprint>((v) => true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\n/**\n * @deprecated Use SchematicPortArrangementWithPinCounts instead.\n */\nexport interface SchematicPortArrangementWithSizes {\n leftSize?: number\n topSize?: number\n rightSize?: number\n bottomSize?: number\n}\n\n/**\n * Specifies the number of pins on each side of the schematic box component.\n */\nexport interface SchematicPortArrangementWithPinCounts {\n leftPinCount?: number\n topPinCount?: number\n rightPinCount?: number\n bottomPinCount?: number\n}\n\nexport interface PinSideDefinition {\n pins: number[] | 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 const explicitPinSideDefinition = z.object({\n pins: z.array(z.number()).or(z.array(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\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\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 leftMargin?: number | string\n rightMargin?: number | string\n topMargin?: number | string\n bottomMargin?: number | string\n }\n>\n\nexport const schematicPinStyle = z.record(\n z.object({\n leftMargin: distance.optional(),\n rightMargin: distance.optional(),\n topMargin: distance.optional(),\n bottomMargin: distance.optional(),\n }),\n)\n\nexpectTypesMatch<SchematicPinStyle, z.input<typeof schematicPinStyle>>(true)\n","import 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}\n\nexport const boardProps = subcircuitGroupProps\n .omit({ subcircuit: true })\n .extend({\n width: distance.optional(),\n height: distance.optional(),\n outline: z.array(point).optional(),\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, ManualEditFile } from \"@tscircuit/layout\"\nimport { 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 } from \"circuit-json\"\n\nexport interface BaseGroupProps extends CommonLayoutProps {\n name?: string\n children?: any\n}\n\nexport type PartsEngine = {\n findPart: (params: {\n sourceComponent: AnySourceComponent\n footprinterString?: string\n }) => Promise<SupplierPartNumbers> | SupplierPartNumbers\n}\n\nexport interface SubcircuitGroupProps extends BaseGroupProps {\n subcircuit: true\n layout?: LayoutBuilder\n manualEdits?: ManualEditFile\n routingDisabled?: boolean\n defaultTraceWidth?: Distance\n minTraceWidth?: Distance\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 partsEngine?: PartsEngine\n}\n\nexport type GroupProps = SubcircuitGroupProps | BaseGroupProps\n\nexport const baseGroupProps = commonLayoutProps.extend({\n name: z.string().optional(),\n children: z.any().optional(),\n})\n\nexport const subcircuitGroupProps = baseGroupProps.extend({\n subcircuit: z.literal(true),\n layout: z.custom<LayoutBuilder>((v) => true).optional(),\n manualEdits: z.custom<ManualEditFile>((v) => true).optional(),\n schAutoLayoutEnabled: z.boolean().optional(),\n routingDisabled: z.boolean().optional(),\n defaultTraceWidth: length.optional(),\n minTraceWidth: length.optional(),\n partsEngine: z.custom<PartsEngine>((v) => \"findPart\" in v).optional(),\n})\n\nexport const groupProps = z.union([baseGroupProps, subcircuitGroupProps])\n\ntype InferredBaseGroupProps = z.input<typeof baseGroupProps>\ntype InferredSubcircuitGroupProps = z.input<typeof subcircuitGroupProps>\n\nexpectTypesMatch<BaseGroupProps, InferredBaseGroupProps>(true)\nexpectTypesMatch<SubcircuitGroupProps, InferredSubcircuitGroupProps>(true)\n\ntype InferredGroupProps = z.input<typeof groupProps>\nexpectTypesMatch<GroupProps, InferredGroupProps>(true)\n","import { distance } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\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 ChipProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, string | readonly string[]>\n schPortArrangement?: SchematicPortArrangement\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: Distance\n schWidth?: Distance\n schHeight?: Distance\n}\n\nexport const chipProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(\n z.number().or(z.string()),\n z.string().or(z.array(z.string()).readonly()),\n )\n .optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n})\n\n/**\n * @deprecated Use ChipProps instead.\n */\nexport const bugProps = chipProps\nexport type InferredChipProps = z.input<typeof chipProps>\n\nexpectTypesMatch<InferredChipProps, ChipProps>(true)\n","import { 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 JumperProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, string>\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: number | string\n schWidth?: number | string\n schHeight?: number | string\n schDirection?: \"left\" | \"right\"\n schPortArrangement?: SchematicPortArrangement\n}\n\nexport const jumperProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z.record(z.number().or(z.string()), z.string()).optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n schDirection: z.enum([\"left\", \"right\"]).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n})\n\ntype InferredJumperProps = z.input<typeof jumperProps>\nexpectTypesMatch<JumperProps, InferredJumperProps>(true)\n","import { 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 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 shape: \"oval\"\n outerWidth: number | string\n outerHeight: number | string\n innerWidth: number | string\n innerHeight: number | string\n portHints?: PortHints\n}\n\nexport interface PillPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n shape: \"pill\"\n outerWidth: number | string\n outerHeight: number | string\n innerWidth: number | string\n innerHeight: number | string\n portHints?: PortHints\n}\n\nexport type PlatedHoleProps =\n | CirclePlatedHoleProps\n | OvalPlatedHoleProps\n | PillPlatedHoleProps\n\nexport const platedHoleProps = z.discriminatedUnion(\"shape\", [\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n holeDiameter: distance,\n outerDiameter: distance,\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"oval\"),\n outerWidth: distance,\n outerHeight: distance,\n innerWidth: distance,\n innerHeight: distance,\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"pill\"),\n outerWidth: distance,\n outerHeight: distance,\n innerWidth: distance,\n innerHeight: distance,\n portHints: portHints.optional(),\n }),\n])\n\ntype InferredPlatedHoleProps = z.input<typeof platedHoleProps>\nexpectTypesMatch<PlatedHoleProps, InferredPlatedHoleProps>(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 interface ResistorProps extends CommonComponentProps {\n resistance: number | string\n pullupFor?: string\n pullupTo?: string\n pulldownFor?: string\n pulldownTo?: string\n}\n\nexport const resistorProps = commonComponentProps.extend({\n resistance,\n\n pullupFor: z.string().optional(),\n pullupTo: z.string().optional(),\n\n pulldownFor: z.string().optional(),\n pulldownTo: z.string().optional(),\n})\nexport const resistorPins = lrPins\n\ntype InferredResistorProps = z.input<typeof resistorProps>\nexpectTypesMatch<ResistorProps, InferredResistorProps>(true)\n","import { resistance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { z } from \"zod\"\n\nexport interface PotentiometerProps extends CommonComponentProps {\n maxResistance: number | string\n}\n\nexport const potentiometerProps = commonComponentProps.extend({\n maxResistance: resistance,\n})\nexport const potentiometerPins = lrPins\n\ntype InferredPotentiometerProps = z.input<typeof potentiometerProps>\nexpectTypesMatch<PotentiometerProps, InferredPotentiometerProps>(true)\n","import { capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface CapacitorProps extends CommonComponentProps {\n capacitance: number | string\n polarized?: boolean\n\n decouplingFor?: string\n decouplingTo?: string\n\n bypassFor?: string\n bypassTo?: string\n}\n\nexport const capacitorProps = commonComponentProps.extend({\n capacitance,\n\n polarized: z.boolean().optional().default(false),\n\n decouplingFor: z.string().optional(),\n decouplingTo: z.string().optional(),\n\n bypassFor: z.string().optional(),\n bypassTo: z.string().optional(),\n})\nexport const capacitorPins = lrPolarPins\n\nexpectTypesMatch<CapacitorProps, z.input<typeof capacitorProps>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface NetProps {\n name: string\n}\n\nexport const netProps = z.object({\n name: z.string(),\n})\n\ntype InferredNetProps = z.input<typeof netProps>\nexpectTypesMatch<NetProps, InferredNetProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ConstrainedLayoutProps {\n name?: string\n pcbOnly?: boolean\n schOnly?: boolean\n}\n\nexport const constrainedLayoutProps = z.object({\n name: z.string().optional(),\n pcbOnly: z.boolean().optional(),\n schOnly: z.boolean().optional(),\n})\n\nexport type InferredConstrainedLayoutProps = z.input<\n typeof constrainedLayoutProps\n>\n\nexpectTypesMatch<InferredConstrainedLayoutProps, ConstrainedLayoutProps>(true)\n","import { z } from \"zod\"\n\nexport type Distance = number | string\n\nexport { distance, 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 {\n pcbLayoutProps,\n type CommonLayoutProps,\n type PcbLayoutProps,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { portHints, type PortHints } from \"lib/common/portHints\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"rect\"\n width: Distance\n height: Distance\n portHints?: PortHints\n}\n\nexport interface CircleSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"circle\"\n radius: Distance\n portHints?: PortHints\n}\n\nexport type SmtPadProps = RectSmtPadProps | CircleSmtPadProps\n\n// ----------------------------------------------------------------------------\n// Zod\n// ----------------------------------------------------------------------------\n\nexport const rectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n portHints: portHints.optional(),\n })\ntype InferredRectSmtPadProps = z.input<typeof rectSmtPadProps>\nexpectTypesMatch<InferredRectSmtPadProps, RectSmtPadProps>(true)\n\nexport const circleSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n portHints: portHints.optional(),\n })\ntype InferredCircleSmtPadProps = z.input<typeof circleSmtPadProps>\nexpectTypesMatch<InferredCircleSmtPadProps, CircleSmtPadProps>(true)\n\nexport const smtPadProps = z.union([circleSmtPadProps, rectSmtPadProps])\n\nexport type InferredSmtPadProps = z.input<typeof smtPadProps>\nexpectTypesMatch<InferredSmtPadProps, SmtPadProps>(true)\n","import { 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})\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 { 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 extends CommonComponentProps {\n capacity?: number | string\n}\n\nexport const batteryProps = commonComponentProps.extend({\n capacity: capacity.optional(),\n})\nexport const batteryPins = lrPolarPins\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 { 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 * 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 * Direction the header is facing\n */\n facingDirection?: \"left\" | \"right\"\n}\n\nexport const pinHeaderProps = commonComponentProps.extend({\n pinCount: z.number(),\n pitch: distance.optional(),\n gender: z.enum([\"male\", \"female\"]).optional(),\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 facingDirection: z.enum([\"left\", \"right\"]).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\nexport interface NetAliasProps {\n net?: string\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"up\" | \"right\" | \"down\"\n}\n\nexport const netAliasProps = z.object({\n net: z.string().optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"up\", \"right\", \"down\"]).optional(),\n})\n\ntype InferredNetAliasProps = z.input<typeof netAliasProps>\nexpectTypesMatch<NetAliasProps, InferredNetAliasProps>(true)\n","import { commonComponentProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const pushButtonProps = commonComponentProps.extend({})\nexport type PushButtonProps = z.input<typeof pushButtonProps>\n"],"mappings":"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","names":["distanceOrMultiplier","import_circuit_json","import_zod","import_zod","import_circuit_json","import_zod","import_zod","import_zod","import_zod","import_zod","import_circuit_json","import_zod","import_circuit_json","import_circuit_json","import_zod","import_zod","import_circuit_json","import_zod","import_circuit_json","import_zod","import_circuit_json","import_zod","import_circuit_json","import_zod","import_circuit_json","import_zod","import_circuit_json","import_circuit_json","import_zod","import_zod","import_zod","import_zod","import_circuit_json","import_zod","import_zod","import_zod","import_zod","import_circuit_json","import_zod","import_circuit_json","import_zod","import_zod","import_circuit_json","import_zod","import_zod","import_circuit_json","import_zod","distanceOrMultiplier"]}
@@ -46,6 +46,11 @@ export interface PinHeaderProps extends CommonComponentProps {
46
46
  * Labels for each pin
47
47
  */
48
48
  pinLabels?: string[]
49
+
50
+ /**
51
+ * Direction the header is facing
52
+ */
53
+ facingDirection?: "left" | "right"
49
54
  }
50
55
 
51
56
  export const pinHeaderProps = commonComponentProps.extend({
@@ -57,6 +62,7 @@ export const pinHeaderProps = commonComponentProps.extend({
57
62
  holeDiameter: distance.optional(),
58
63
  platedDiameter: distance.optional(),
59
64
  pinLabels: z.array(z.string()).optional(),
65
+ facingDirection: z.enum(["left", "right"]).optional(),
60
66
  })
61
67
 
62
68
  type InferredPinHeaderProps = z.input<typeof pinHeaderProps>
@@ -0,0 +1,20 @@
1
+ import { resistance } from "circuit-json"
2
+ import {
3
+ type CommonComponentProps,
4
+ commonComponentProps,
5
+ lrPins,
6
+ } from "lib/common/layout"
7
+ import { expectTypesMatch } from "lib/typecheck"
8
+ import type { z } from "zod"
9
+
10
+ export interface PotentiometerProps extends CommonComponentProps {
11
+ maxResistance: number | string
12
+ }
13
+
14
+ export const potentiometerProps = commonComponentProps.extend({
15
+ maxResistance: resistance,
16
+ })
17
+ export const potentiometerPins = lrPins
18
+
19
+ type InferredPotentiometerProps = z.input<typeof potentiometerProps>
20
+ expectTypesMatch<PotentiometerProps, InferredPotentiometerProps>(true)
package/lib/index.ts CHANGED
@@ -52,6 +52,7 @@ export * from "./components/jumper"
52
52
  export * from "./components/platedhole"
53
53
 
54
54
  export * from "./components/resistor"
55
+ export * from "./components/potentiometer"
55
56
  export * from "./components/capacitor"
56
57
  export * from "./components/group"
57
58
  export * from "./components/net"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tscircuit/props",
3
- "version": "0.0.93",
3
+ "version": "0.0.95",
4
4
  "description": "Props for tscircuit builtin component types",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {