@tscircuit/props 0.0.240 → 0.0.241
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/README.md +27 -0
- package/dist/index.d.ts +32 -2
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/lib/components/platedhole.ts +10 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -52,6 +52,7 @@ resistorProps.parse({ resistance: "10k" } as ResistorPropsInput)
|
|
|
52
52
|
| `<switch />` | [`SwitchProps`](#switchprops-switch) |
|
|
53
53
|
| `<testpoint />` | [`TestpointProps`](#testpointprops-testpoint) |
|
|
54
54
|
| `<transistor />` | [`TransistorProps`](#transistorprops-transistor) |
|
|
55
|
+
| `<via />` | [`ViaProps`](#viaprops-via) |
|
|
55
56
|
<!-- COMPONENT_TABLE_END -->
|
|
56
57
|
|
|
57
58
|
<!-- USAGE_EXAMPLES_START -->
|
|
@@ -133,6 +134,7 @@ export interface SubcircuitGroupProps extends BaseGroupProps {
|
|
|
133
134
|
```ts
|
|
134
135
|
export interface BatteryProps extends CommonComponentProps {
|
|
135
136
|
capacity?: number | string
|
|
137
|
+
schOrientation?: SchematicOrientation
|
|
136
138
|
}
|
|
137
139
|
```
|
|
138
140
|
|
|
@@ -196,6 +198,7 @@ export interface CapacitorProps extends CommonComponentProps {
|
|
|
196
198
|
bypassFor?: string
|
|
197
199
|
bypassTo?: string
|
|
198
200
|
maxDecouplingTraceLength?: number
|
|
201
|
+
schOrientation?: SchematicOrientation
|
|
199
202
|
connections?: Connections<CapacitorPinLabels>
|
|
200
203
|
}
|
|
201
204
|
```
|
|
@@ -279,6 +282,7 @@ export interface CrystalProps extends CommonComponentProps {
|
|
|
279
282
|
frequency: number | string
|
|
280
283
|
loadCapacitance: number | string
|
|
281
284
|
pinVariant?: PinVariant
|
|
285
|
+
schOrientation?: SchematicOrientation
|
|
282
286
|
}
|
|
283
287
|
```
|
|
284
288
|
|
|
@@ -318,6 +322,7 @@ export interface DiodeProps extends CommonComponentProps {
|
|
|
318
322
|
zener?: boolean
|
|
319
323
|
photo?: boolean
|
|
320
324
|
tvs?: boolean
|
|
325
|
+
schOrientation?: SchematicOrientation
|
|
321
326
|
}
|
|
322
327
|
```
|
|
323
328
|
|
|
@@ -364,6 +369,8 @@ export interface FuseProps extends CommonComponentProps {
|
|
|
364
369
|
*/
|
|
365
370
|
schShowRatings?: boolean
|
|
366
371
|
|
|
372
|
+
schOrientation?: SchematicOrientation
|
|
373
|
+
|
|
367
374
|
/**
|
|
368
375
|
* Connections to other components
|
|
369
376
|
*/
|
|
@@ -421,6 +428,7 @@ export interface HoleProps extends Omit<PcbLayoutProps, "pcbRotation"> {
|
|
|
421
428
|
export interface InductorProps extends CommonComponentProps {
|
|
422
429
|
inductance: number | string
|
|
423
430
|
maxCurrentRating?: number | string
|
|
431
|
+
schOrientation?: SchematicOrientation
|
|
424
432
|
}
|
|
425
433
|
```
|
|
426
434
|
|
|
@@ -609,6 +617,7 @@ export interface PinHeaderProps extends CommonComponentProps {
|
|
|
609
617
|
export interface CirclePlatedHoleProps
|
|
610
618
|
extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
|
|
611
619
|
name?: string
|
|
620
|
+
connectsTo?: string | string[]
|
|
612
621
|
shape: "circle"
|
|
613
622
|
holeDiameter: number | string
|
|
614
623
|
outerDiameter: number | string
|
|
@@ -640,6 +649,7 @@ export interface ResistorProps extends CommonComponentProps {
|
|
|
640
649
|
pullupTo?: string
|
|
641
650
|
pulldownFor?: string
|
|
642
651
|
pulldownTo?: string
|
|
652
|
+
schOrientation?: SchematicOrientation
|
|
643
653
|
connections?: Connections<ResistorPinLabels>
|
|
644
654
|
}
|
|
645
655
|
```
|
|
@@ -664,6 +674,7 @@ export interface ResonatorProps extends CommonComponentProps {
|
|
|
664
674
|
|
|
665
675
|
```ts
|
|
666
676
|
export interface RectSmtPadProps extends Omit<PcbLayoutProps, "pcbRotation"> {
|
|
677
|
+
name?: string
|
|
667
678
|
shape: "rect"
|
|
668
679
|
width: Distance
|
|
669
680
|
height: Distance
|
|
@@ -782,6 +793,22 @@ export interface TransistorProps extends CommonComponentProps {
|
|
|
782
793
|
|
|
783
794
|
[Source](https://github.com/tscircuit/props/blob/main/lib/components/transistor.ts)
|
|
784
795
|
|
|
796
|
+
|
|
797
|
+
### ViaProps `<via />`
|
|
798
|
+
|
|
799
|
+
```ts
|
|
800
|
+
export interface ViaProps extends CommonLayoutProps {
|
|
801
|
+
name?: string
|
|
802
|
+
fromLayer: LayerRefInput
|
|
803
|
+
toLayer: LayerRefInput
|
|
804
|
+
holeDiameter: number | string
|
|
805
|
+
outerDiameter: number | string
|
|
806
|
+
connectsTo?: string | string[]
|
|
807
|
+
}
|
|
808
|
+
```
|
|
809
|
+
|
|
810
|
+
[Source](https://github.com/tscircuit/props/blob/main/lib/components/via.ts)
|
|
811
|
+
|
|
785
812
|
<!-- INTERFACE_DEFINITIONS_END -->
|
|
786
813
|
|
|
787
814
|
|
package/dist/index.d.ts
CHANGED
|
@@ -12047,6 +12047,7 @@ type InferredFuseProps = z.input<typeof fuseProps>;
|
|
|
12047
12047
|
|
|
12048
12048
|
interface CirclePlatedHoleProps extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
|
|
12049
12049
|
name?: string;
|
|
12050
|
+
connectsTo?: string | string[];
|
|
12050
12051
|
shape: "circle";
|
|
12051
12052
|
holeDiameter: number | string;
|
|
12052
12053
|
outerDiameter: number | string;
|
|
@@ -12054,6 +12055,7 @@ interface CirclePlatedHoleProps extends Omit<PcbLayoutProps, "pcbRotation" | "la
|
|
|
12054
12055
|
}
|
|
12055
12056
|
interface OvalPlatedHoleProps extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
|
|
12056
12057
|
name?: string;
|
|
12058
|
+
connectsTo?: string | string[];
|
|
12057
12059
|
shape: "oval";
|
|
12058
12060
|
outerWidth: number | string;
|
|
12059
12061
|
outerHeight: number | string;
|
|
@@ -12067,6 +12069,7 @@ interface OvalPlatedHoleProps extends Omit<PcbLayoutProps, "pcbRotation" | "laye
|
|
|
12067
12069
|
}
|
|
12068
12070
|
interface PillPlatedHoleProps extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
|
|
12069
12071
|
name?: string;
|
|
12072
|
+
connectsTo?: string | string[];
|
|
12070
12073
|
shape: "pill";
|
|
12071
12074
|
outerWidth: number | string;
|
|
12072
12075
|
outerHeight: number | string;
|
|
@@ -12080,6 +12083,7 @@ interface PillPlatedHoleProps extends Omit<PcbLayoutProps, "pcbRotation" | "laye
|
|
|
12080
12083
|
}
|
|
12081
12084
|
interface CircularHoleWithRectPlatedProps extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
|
|
12082
12085
|
name?: string;
|
|
12086
|
+
connectsTo?: string | string[];
|
|
12083
12087
|
shape: "circular_hole_with_rect_pad";
|
|
12084
12088
|
holeDiameter: number | string;
|
|
12085
12089
|
rectPadWidth: number | string;
|
|
@@ -12090,6 +12094,7 @@ interface CircularHoleWithRectPlatedProps extends Omit<PcbLayoutProps, "pcbRotat
|
|
|
12090
12094
|
}
|
|
12091
12095
|
interface PillWithRectPadPlatedHoleProps extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
|
|
12092
12096
|
name?: string;
|
|
12097
|
+
connectsTo?: string | string[];
|
|
12093
12098
|
shape: "pill_hole_with_rect_pad";
|
|
12094
12099
|
holeShape: "pill";
|
|
12095
12100
|
padShape: "rect";
|
|
@@ -12115,6 +12120,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12115
12120
|
}>>;
|
|
12116
12121
|
}, "pcbRotation" | "layer">, {
|
|
12117
12122
|
name: z.ZodOptional<z.ZodString>;
|
|
12123
|
+
connectsTo: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
12118
12124
|
shape: z.ZodLiteral<"circle">;
|
|
12119
12125
|
holeDiameter: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
12120
12126
|
outerDiameter: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
@@ -12126,6 +12132,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12126
12132
|
pcbX?: number | undefined;
|
|
12127
12133
|
pcbY?: number | undefined;
|
|
12128
12134
|
name?: string | undefined;
|
|
12135
|
+
connectsTo?: string | string[] | undefined;
|
|
12129
12136
|
portHints?: (string | number)[] | undefined;
|
|
12130
12137
|
}, {
|
|
12131
12138
|
shape: "circle";
|
|
@@ -12134,6 +12141,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12134
12141
|
pcbX?: string | number | undefined;
|
|
12135
12142
|
pcbY?: string | number | undefined;
|
|
12136
12143
|
name?: string | undefined;
|
|
12144
|
+
connectsTo?: string | string[] | undefined;
|
|
12137
12145
|
portHints?: (string | number)[] | undefined;
|
|
12138
12146
|
}>, z.ZodObject<z.objectUtil.extendShape<Omit<{
|
|
12139
12147
|
pcbX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
|
|
@@ -12150,6 +12158,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12150
12158
|
}>>;
|
|
12151
12159
|
}, "pcbRotation" | "layer">, {
|
|
12152
12160
|
name: z.ZodOptional<z.ZodString>;
|
|
12161
|
+
connectsTo: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
12153
12162
|
shape: z.ZodLiteral<"oval">;
|
|
12154
12163
|
outerWidth: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
12155
12164
|
outerHeight: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
@@ -12165,6 +12174,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12165
12174
|
pcbX?: number | undefined;
|
|
12166
12175
|
pcbY?: number | undefined;
|
|
12167
12176
|
name?: string | undefined;
|
|
12177
|
+
connectsTo?: string | string[] | undefined;
|
|
12168
12178
|
portHints?: (string | number)[] | undefined;
|
|
12169
12179
|
holeWidth?: number | undefined;
|
|
12170
12180
|
holeHeight?: number | undefined;
|
|
@@ -12179,6 +12189,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12179
12189
|
pcbX?: string | number | undefined;
|
|
12180
12190
|
pcbY?: string | number | undefined;
|
|
12181
12191
|
name?: string | undefined;
|
|
12192
|
+
connectsTo?: string | string[] | undefined;
|
|
12182
12193
|
portHints?: (string | number)[] | undefined;
|
|
12183
12194
|
innerWidth?: string | number | undefined;
|
|
12184
12195
|
innerHeight?: string | number | undefined;
|
|
@@ -12197,6 +12208,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12197
12208
|
}>>;
|
|
12198
12209
|
}, "pcbRotation" | "layer">, {
|
|
12199
12210
|
name: z.ZodOptional<z.ZodString>;
|
|
12211
|
+
connectsTo: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
12200
12212
|
shape: z.ZodLiteral<"pill">;
|
|
12201
12213
|
outerWidth: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
12202
12214
|
outerHeight: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
@@ -12212,6 +12224,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12212
12224
|
pcbX?: number | undefined;
|
|
12213
12225
|
pcbY?: number | undefined;
|
|
12214
12226
|
name?: string | undefined;
|
|
12227
|
+
connectsTo?: string | string[] | undefined;
|
|
12215
12228
|
portHints?: (string | number)[] | undefined;
|
|
12216
12229
|
holeWidth?: number | undefined;
|
|
12217
12230
|
holeHeight?: number | undefined;
|
|
@@ -12226,6 +12239,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12226
12239
|
pcbX?: string | number | undefined;
|
|
12227
12240
|
pcbY?: string | number | undefined;
|
|
12228
12241
|
name?: string | undefined;
|
|
12242
|
+
connectsTo?: string | string[] | undefined;
|
|
12229
12243
|
portHints?: (string | number)[] | undefined;
|
|
12230
12244
|
innerWidth?: string | number | undefined;
|
|
12231
12245
|
innerHeight?: string | number | undefined;
|
|
@@ -12244,6 +12258,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12244
12258
|
}>>;
|
|
12245
12259
|
}, "pcbRotation" | "layer">, {
|
|
12246
12260
|
name: z.ZodOptional<z.ZodString>;
|
|
12261
|
+
connectsTo: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
12247
12262
|
shape: z.ZodLiteral<"circular_hole_with_rect_pad">;
|
|
12248
12263
|
holeDiameter: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
12249
12264
|
rectPadWidth: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
|
|
@@ -12259,6 +12274,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12259
12274
|
pcbX?: number | undefined;
|
|
12260
12275
|
pcbY?: number | undefined;
|
|
12261
12276
|
name?: string | undefined;
|
|
12277
|
+
connectsTo?: string | string[] | undefined;
|
|
12262
12278
|
portHints?: (string | number)[] | undefined;
|
|
12263
12279
|
holeShape?: "circle" | undefined;
|
|
12264
12280
|
padShape?: "rect" | undefined;
|
|
@@ -12270,6 +12286,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12270
12286
|
pcbX?: string | number | undefined;
|
|
12271
12287
|
pcbY?: string | number | undefined;
|
|
12272
12288
|
name?: string | undefined;
|
|
12289
|
+
connectsTo?: string | string[] | undefined;
|
|
12273
12290
|
portHints?: (string | number)[] | undefined;
|
|
12274
12291
|
holeShape?: "circle" | undefined;
|
|
12275
12292
|
padShape?: "rect" | undefined;
|
|
@@ -12288,6 +12305,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12288
12305
|
}>>;
|
|
12289
12306
|
}, "pcbRotation" | "layer">, {
|
|
12290
12307
|
name: z.ZodOptional<z.ZodString>;
|
|
12308
|
+
connectsTo: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
12291
12309
|
shape: z.ZodLiteral<"pill_hole_with_rect_pad">;
|
|
12292
12310
|
holeShape: z.ZodLiteral<"pill">;
|
|
12293
12311
|
padShape: z.ZodLiteral<"rect">;
|
|
@@ -12307,6 +12325,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12307
12325
|
pcbX?: number | undefined;
|
|
12308
12326
|
pcbY?: number | undefined;
|
|
12309
12327
|
name?: string | undefined;
|
|
12328
|
+
connectsTo?: string | string[] | undefined;
|
|
12310
12329
|
portHints?: (string | number)[] | undefined;
|
|
12311
12330
|
}, {
|
|
12312
12331
|
shape: "pill_hole_with_rect_pad";
|
|
@@ -12319,6 +12338,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12319
12338
|
pcbX?: string | number | undefined;
|
|
12320
12339
|
pcbY?: string | number | undefined;
|
|
12321
12340
|
name?: string | undefined;
|
|
12341
|
+
connectsTo?: string | string[] | undefined;
|
|
12322
12342
|
portHints?: (string | number)[] | undefined;
|
|
12323
12343
|
}>]>, {
|
|
12324
12344
|
shape: "circle";
|
|
@@ -12327,6 +12347,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12327
12347
|
pcbX?: number | undefined;
|
|
12328
12348
|
pcbY?: number | undefined;
|
|
12329
12349
|
name?: string | undefined;
|
|
12350
|
+
connectsTo?: string | string[] | undefined;
|
|
12330
12351
|
portHints?: (string | number)[] | undefined;
|
|
12331
12352
|
} | {
|
|
12332
12353
|
shape: "oval";
|
|
@@ -12335,6 +12356,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12335
12356
|
pcbX?: number | undefined;
|
|
12336
12357
|
pcbY?: number | undefined;
|
|
12337
12358
|
name?: string | undefined;
|
|
12359
|
+
connectsTo?: string | string[] | undefined;
|
|
12338
12360
|
portHints?: (string | number)[] | undefined;
|
|
12339
12361
|
holeWidth?: number | undefined;
|
|
12340
12362
|
holeHeight?: number | undefined;
|
|
@@ -12347,6 +12369,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12347
12369
|
pcbX?: number | undefined;
|
|
12348
12370
|
pcbY?: number | undefined;
|
|
12349
12371
|
name?: string | undefined;
|
|
12372
|
+
connectsTo?: string | string[] | undefined;
|
|
12350
12373
|
portHints?: (string | number)[] | undefined;
|
|
12351
12374
|
holeWidth?: number | undefined;
|
|
12352
12375
|
holeHeight?: number | undefined;
|
|
@@ -12360,6 +12383,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12360
12383
|
pcbX?: number | undefined;
|
|
12361
12384
|
pcbY?: number | undefined;
|
|
12362
12385
|
name?: string | undefined;
|
|
12386
|
+
connectsTo?: string | string[] | undefined;
|
|
12363
12387
|
portHints?: (string | number)[] | undefined;
|
|
12364
12388
|
holeShape?: "circle" | undefined;
|
|
12365
12389
|
padShape?: "rect" | undefined;
|
|
@@ -12374,6 +12398,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12374
12398
|
pcbX?: number | undefined;
|
|
12375
12399
|
pcbY?: number | undefined;
|
|
12376
12400
|
name?: string | undefined;
|
|
12401
|
+
connectsTo?: string | string[] | undefined;
|
|
12377
12402
|
portHints?: (string | number)[] | undefined;
|
|
12378
12403
|
}, {
|
|
12379
12404
|
shape: "circle";
|
|
@@ -12382,6 +12407,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12382
12407
|
pcbX?: string | number | undefined;
|
|
12383
12408
|
pcbY?: string | number | undefined;
|
|
12384
12409
|
name?: string | undefined;
|
|
12410
|
+
connectsTo?: string | string[] | undefined;
|
|
12385
12411
|
portHints?: (string | number)[] | undefined;
|
|
12386
12412
|
} | {
|
|
12387
12413
|
shape: "oval";
|
|
@@ -12392,6 +12418,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12392
12418
|
pcbX?: string | number | undefined;
|
|
12393
12419
|
pcbY?: string | number | undefined;
|
|
12394
12420
|
name?: string | undefined;
|
|
12421
|
+
connectsTo?: string | string[] | undefined;
|
|
12395
12422
|
portHints?: (string | number)[] | undefined;
|
|
12396
12423
|
innerWidth?: string | number | undefined;
|
|
12397
12424
|
innerHeight?: string | number | undefined;
|
|
@@ -12404,6 +12431,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12404
12431
|
pcbX?: string | number | undefined;
|
|
12405
12432
|
pcbY?: string | number | undefined;
|
|
12406
12433
|
name?: string | undefined;
|
|
12434
|
+
connectsTo?: string | string[] | undefined;
|
|
12407
12435
|
portHints?: (string | number)[] | undefined;
|
|
12408
12436
|
innerWidth?: string | number | undefined;
|
|
12409
12437
|
innerHeight?: string | number | undefined;
|
|
@@ -12415,6 +12443,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12415
12443
|
pcbX?: string | number | undefined;
|
|
12416
12444
|
pcbY?: string | number | undefined;
|
|
12417
12445
|
name?: string | undefined;
|
|
12446
|
+
connectsTo?: string | string[] | undefined;
|
|
12418
12447
|
portHints?: (string | number)[] | undefined;
|
|
12419
12448
|
holeShape?: "circle" | undefined;
|
|
12420
12449
|
padShape?: "rect" | undefined;
|
|
@@ -12429,6 +12458,7 @@ declare const platedHoleProps: z.ZodEffects<z.ZodDiscriminatedUnion<"shape", [z.
|
|
|
12429
12458
|
pcbX?: string | number | undefined;
|
|
12430
12459
|
pcbY?: string | number | undefined;
|
|
12431
12460
|
name?: string | undefined;
|
|
12461
|
+
connectsTo?: string | string[] | undefined;
|
|
12432
12462
|
portHints?: (string | number)[] | undefined;
|
|
12433
12463
|
}>;
|
|
12434
12464
|
|
|
@@ -17934,18 +17964,18 @@ declare const netLabelProps: z.ZodObject<{
|
|
|
17934
17964
|
schX?: number | undefined;
|
|
17935
17965
|
schY?: number | undefined;
|
|
17936
17966
|
schRotation?: number | undefined;
|
|
17967
|
+
connectsTo?: string | string[] | undefined;
|
|
17937
17968
|
net?: string | undefined;
|
|
17938
17969
|
connection?: string | undefined;
|
|
17939
17970
|
anchorSide?: "left" | "right" | "top" | "bottom" | undefined;
|
|
17940
|
-
connectsTo?: string | string[] | undefined;
|
|
17941
17971
|
}, {
|
|
17942
17972
|
schX?: string | number | undefined;
|
|
17943
17973
|
schY?: string | number | undefined;
|
|
17944
17974
|
schRotation?: string | number | undefined;
|
|
17975
|
+
connectsTo?: string | string[] | undefined;
|
|
17945
17976
|
net?: string | undefined;
|
|
17946
17977
|
connection?: string | undefined;
|
|
17947
17978
|
anchorSide?: "left" | "right" | "top" | "bottom" | undefined;
|
|
17948
|
-
connectsTo?: string | string[] | undefined;
|
|
17949
17979
|
}>;
|
|
17950
17980
|
|
|
17951
17981
|
type PushButtonProps<T extends PinLabelsProp | string = string> = ChipProps<T>;
|
package/dist/index.js
CHANGED
|
@@ -562,6 +562,7 @@ var distanceHiddenUndefined = z31.custom().transform((a) => {
|
|
|
562
562
|
var platedHoleProps = z31.discriminatedUnion("shape", [
|
|
563
563
|
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
|
|
564
564
|
name: z31.string().optional(),
|
|
565
|
+
connectsTo: z31.string().or(z31.array(z31.string())).optional(),
|
|
565
566
|
shape: z31.literal("circle"),
|
|
566
567
|
holeDiameter: distance10,
|
|
567
568
|
outerDiameter: distance10,
|
|
@@ -569,6 +570,7 @@ var platedHoleProps = z31.discriminatedUnion("shape", [
|
|
|
569
570
|
}),
|
|
570
571
|
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
|
|
571
572
|
name: z31.string().optional(),
|
|
573
|
+
connectsTo: z31.string().or(z31.array(z31.string())).optional(),
|
|
572
574
|
shape: z31.literal("oval"),
|
|
573
575
|
outerWidth: distance10,
|
|
574
576
|
outerHeight: distance10,
|
|
@@ -580,6 +582,7 @@ var platedHoleProps = z31.discriminatedUnion("shape", [
|
|
|
580
582
|
}),
|
|
581
583
|
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
|
|
582
584
|
name: z31.string().optional(),
|
|
585
|
+
connectsTo: z31.string().or(z31.array(z31.string())).optional(),
|
|
583
586
|
shape: z31.literal("pill"),
|
|
584
587
|
outerWidth: distance10,
|
|
585
588
|
outerHeight: distance10,
|
|
@@ -591,6 +594,7 @@ var platedHoleProps = z31.discriminatedUnion("shape", [
|
|
|
591
594
|
}),
|
|
592
595
|
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
|
|
593
596
|
name: z31.string().optional(),
|
|
597
|
+
connectsTo: z31.string().or(z31.array(z31.string())).optional(),
|
|
594
598
|
shape: z31.literal("circular_hole_with_rect_pad"),
|
|
595
599
|
holeDiameter: distance10,
|
|
596
600
|
rectPadWidth: distance10,
|
|
@@ -601,6 +605,7 @@ var platedHoleProps = z31.discriminatedUnion("shape", [
|
|
|
601
605
|
}),
|
|
602
606
|
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
|
|
603
607
|
name: z31.string().optional(),
|
|
608
|
+
connectsTo: z31.string().or(z31.array(z31.string())).optional(),
|
|
604
609
|
shape: z31.literal("pill_hole_with_rect_pad"),
|
|
605
610
|
holeShape: z31.literal("pill"),
|
|
606
611
|
padShape: z31.literal("rect"),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/typecheck.ts","../lib/common/direction.ts","../lib/common/portHints.ts","../lib/common/layout.ts","../lib/common/cadModel.ts","../lib/common/point3.ts","../lib/common/footprintProp.ts","../lib/common/schematicOrientation.ts","../lib/common/schematicPinDefinitions.ts","../lib/common/schematicPinStyle.ts","../lib/components/board.ts","../lib/common/point.ts","../lib/components/group.ts","../lib/manual-edits/manual-edit-events/base_manual_edit_event.ts","../lib/manual-edits/manual-edit-events/edit_pcb_component_location_event.ts","../lib/manual-edits/manual-edit-events/edit_trace_hint_event.ts","../lib/manual-edits/manual-edit-events/edit_schematic_component_location_event.ts","../lib/manual-edits/manual-edit-events/edit_pcb_group_location_event.ts","../lib/manual-edits/manual-edit-events/edit_schematic_group_location_event.ts","../lib/manual-edits/manual_edit_event.ts","../lib/manual-edits/manual_edits_file.ts","../lib/manual-edits/manual_pcb_placement.ts","../lib/manual-edits/manual_trace_hint.ts","../lib/manual-edits/manual_schematic_placement.ts","../lib/components/breakout.ts","../lib/components/chip.ts","../lib/components/jumper.ts","../lib/common/connectionsProp.ts","../lib/components/solderjumper.ts","../lib/components/connector.ts","../lib/components/fuse.ts","../lib/components/platedhole.ts","../lib/components/resistor.ts","../lib/components/potentiometer.ts","../lib/components/crystal.ts","../lib/components/resonator.ts","../lib/components/stampboard.ts","../lib/components/capacitor.ts","../lib/components/net.ts","../lib/components/constrainedlayout.ts","../lib/common/distance.ts","../lib/components/constraint.ts","../lib/components/cutout.ts","../lib/components/smtpad.ts","../lib/components/solderpaste.ts","../lib/components/hole.ts","../lib/components/trace.ts","../lib/components/footprint.ts","../lib/components/battery.ts","../lib/components/pin-header.ts","../lib/components/netalias.ts","../lib/components/netlabel.ts","../lib/components/push-button.ts","../lib/components/subcircuit.ts","../lib/components/transistor.ts","../lib/components/mosfet.ts","../lib/components/inductor.ts","../lib/components/diode.ts","../lib/components/led.ts","../lib/components/switch.ts","../lib/components/fabrication-note-text.ts","../lib/components/fabrication-note-path.ts","../lib/components/pcb-trace.ts","../lib/components/via.ts","../lib/components/testpoint.ts","../lib/components/breakoutpoint.ts","../lib/components/pcb-keepout.ts","../lib/components/power-source.ts","../lib/components/schematic-box.ts","../lib/common/ninePointAnchor.ts","../lib/components/schematic-line.ts","../lib/components/schematic-text.ts","../lib/common/fivePointAnchor.ts","../lib/components/schematic-path.ts","../lib/components/silkscreen-text.ts","../lib/components/silkscreen-path.ts","../lib/components/silkscreen-line.ts","../lib/components/silkscreen-rect.ts","../lib/components/silkscreen-circle.ts","../lib/components/trace-hint.ts","../lib/components/port.ts","../lib/platformConfig.ts"],"sourcesContent":["import type { TypeEqual } from \"ts-expect\"\n\ntype IsNever<T> = [T] extends [never] ? true : false\n\ntype GetMismatchedProps<T1, T2> = {\n [K in keyof T1 & keyof T2]: T1[K] extends T2[K]\n ? T2[K] extends T1[K]\n ? never\n : K\n : K\n}[keyof T1 & keyof T2]\n\nexport const expectTypesMatch = <\n const T1,\n const T2,\n T3 = Exclude<keyof T1, keyof T2>,\n T4 = Exclude<keyof T2, keyof T1>,\n T5 = GetMismatchedProps<T1, T2>,\n>(\n shouldBe: IsNever<T3> extends true\n ? IsNever<T4> extends true\n ? IsNever<T5> extends true\n ? TypeEqual<T1, T2>\n : `property ${T5 extends string ? T5 : \"\"} has mismatched types`\n : `extra props ${T4 extends string ? T4 : \"\"}`\n : `missing props ${T3 extends string ? T3 : \"\"}`,\n): void => {}\n\n// ------ TESTS -------\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n b: number\n }\n>(\"extra props b\")\n\nexpectTypesMatch<\n {\n a: number\n b: number\n },\n {\n a: number\n }\n>(\"missing props b\")\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n }\n>(true)\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: string\n }\n>(\"property a has mismatched types\")\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nexport const direction = z.enum([\"up\", \"down\", \"left\", \"right\"])\nexport type Direction = \"up\" | \"down\" | \"left\" | \"right\"\n\nexport type DirectionAlongEdge =\n | \"top-to-bottom\"\n | \"left-to-right\"\n | \"bottom-to-top\"\n | \"right-to-left\"\n\nexport const directionAlongEdge = z.enum([\n \"top-to-bottom\",\n \"left-to-right\",\n \"bottom-to-top\",\n \"right-to-left\",\n])\n\nexpectTypesMatch<Direction, z.infer<typeof direction>>(true)\nexpectTypesMatch<DirectionAlongEdge, z.infer<typeof directionAlongEdge>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const portHints = z.array(z.string().or(z.number()))\nexport type PortHints = (string | number)[]\n\nexpectTypesMatch<PortHints, z.infer<typeof portHints>>(true)\n","import {\n type LayerRefInput,\n distance,\n layer_ref,\n rotation,\n supplier_name,\n} from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { type CadModelProp, cadModelProp } from \"./cadModel\"\nimport { type FootprintProp, footprintProp } from \"./footprintProp\"\n\nexport interface PcbLayoutProps {\n pcbX?: string | number\n pcbY?: string | number\n pcbRotation?: string | number\n layer?: LayerRefInput\n}\n\nexport interface CommonLayoutProps {\n pcbX?: string | number\n pcbY?: string | number\n pcbRotation?: string | number\n\n schX?: string | number\n schY?: string | number\n schRotation?: string | number\n\n layer?: LayerRefInput\n footprint?: FootprintProp\n}\n\nexport const pcbLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n layer: layer_ref.optional(),\n})\ntype InferredPcbLayoutProps = z.input<typeof pcbLayoutProps>\nexpectTypesMatch<PcbLayoutProps, InferredPcbLayoutProps>(true)\n\nexport const commonLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n layer: layer_ref.optional(),\n footprint: footprintProp.optional(),\n})\n\ntype InferredCommonLayoutProps = z.input<typeof commonLayoutProps>\nexpectTypesMatch<CommonLayoutProps, InferredCommonLayoutProps>(true)\n\nexport type SupplierName =\n | \"jlcpcb\"\n | \"macrofab\"\n | \"pcbway\"\n | \"digikey\"\n | \"mouser\"\n | \"lcsc\"\nexport type SupplierPartNumbers = { [k in SupplierName]?: string[] }\nexport interface SupplierProps {\n supplierPartNumbers?: SupplierPartNumbers\n}\nexport const supplierProps = z.object({\n supplierPartNumbers: z.record(supplier_name, z.array(z.string())).optional(),\n})\n\nexpectTypesMatch<SupplierProps, z.input<typeof supplierProps>>(true)\n\nexport interface CommonComponentProps extends CommonLayoutProps {\n key?: any\n name: string\n supplierPartNumbers?: SupplierPartNumbers\n cadModel?: CadModelProp\n children?: any\n symbolName?: string\n doNotPlace?: boolean\n}\n\nexport const commonComponentProps = commonLayoutProps\n .merge(supplierProps)\n .extend({\n key: z.any().optional(),\n name: z.string(),\n cadModel: cadModelProp.optional(),\n children: z.any().optional(),\n symbolName: z.string().optional(),\n doNotPlace: z.boolean().optional(),\n })\n\ntype InferredCommonComponentProps = z.input<typeof commonComponentProps>\nexpectTypesMatch<CommonComponentProps, InferredCommonComponentProps>(true)\n\nexport const componentProps = commonComponentProps\nexport type ComponentProps = z.input<typeof componentProps>\n\nexport const lrPins = [\"pin1\", \"left\", \"pin2\", \"right\"] as const\nexport const lrPolarPins = [\n \"pin1\",\n \"left\",\n \"anode\",\n \"pos\",\n \"pin2\",\n \"right\",\n \"cathode\",\n \"neg\",\n] as const\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n","import { z } from \"zod\"\nimport { point3 } from \"./point3\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const rotationPoint3 = z.object({\n x: z.union([z.number(), z.string()]),\n y: z.union([z.number(), z.string()]),\n z: z.union([z.number(), z.string()]),\n})\n\nexport interface CadModelBase {\n rotationOffset?:\n | number\n | { x: number | string; y: number | string; z: number | string }\n positionOffset?: {\n x: number | string\n y: number | string\n z: number | string\n }\n size?: { x: number | string; y: number | string; z: number | string }\n}\n\nexport const cadModelBase = z.object({\n rotationOffset: z.number().or(rotationPoint3).optional(),\n positionOffset: point3.optional(),\n size: point3.optional(),\n})\n\nexpectTypesMatch<CadModelBase, z.input<typeof cadModelBase>>(true)\n\nexport interface CadModelStl extends CadModelBase {\n stlUrl: string\n}\nexport const cadModelStl = cadModelBase.extend({\n stlUrl: z.string(),\n})\n\nexport interface CadModelObj extends CadModelBase {\n objUrl: string\n mtlUrl?: string\n}\nexport const cadModelObj = cadModelBase.extend({\n objUrl: z.string(),\n mtlUrl: z.string().optional(),\n})\n\nexport interface CadModelJscad extends CadModelBase {\n jscad: Record<string, any>\n}\nexport const cadModelJscad = cadModelBase.extend({\n jscad: z.record(z.any()),\n})\n\nexport type CadModelProp =\n | null\n | string\n | CadModelStl\n | CadModelObj\n | CadModelJscad\n\nexport const cadModelProp = z.union([\n z.null(),\n z.string(),\n cadModelStl,\n cadModelObj,\n cadModelJscad,\n])\n\ntype InferredCadModelProp = z.input<typeof cadModelProp>\nexpectTypesMatch<CadModelProp, InferredCadModelProp>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n","import type { LayerRef } from \"circuit-json\"\nimport type { ReactElement } from \"react\"\nimport { z } from \"zod\"\n\n/**\n * This is an abbreviated definition of the soup elements that you can find here:\n * https://docs.tscircuit.com/api-reference/advanced/soup#pcb-smtpad\n */\nexport type FootprintSoupElements = {\n type: \"pcb_smtpad\" | \"pcb_plated_hole\"\n x: string | number\n y: string | number\n layer?: LayerRef\n holeDiameter?: string | number\n outerDiameter?: string | number\n shape?: \"circle\" | \"rect\"\n width?: string | number\n height?: string | number\n portHints?: string[]\n}\n\nexport type FootprintProp = string | ReactElement | FootprintSoupElements[]\nexport const footprintProp = z.custom<FootprintProp>((v) => true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const schematicOrientation = z\n .enum([\n \"vertical\",\n \"horizontal\",\n \"pos_top\",\n \"pos_bottom\",\n \"pos_left\",\n \"pos_right\",\n \"neg_top\",\n \"neg_bottom\",\n \"neg_left\",\n \"neg_right\",\n ])\n .describe(\n \"horizontal means pins go 1->2 rightward and vertical means pins go 1->2 downward (generally, positive on top)\",\n )\n\nexport type SchematicOrientation =\n | \"vertical\"\n | \"horizontal\"\n | \"pos_top\"\n | \"pos_bottom\"\n | \"pos_left\"\n | \"pos_right\"\n | \"neg_top\"\n | \"neg_bottom\"\n | \"neg_left\"\n | \"neg_right\"\n\nexpectTypesMatch<SchematicOrientation, z.infer<typeof schematicOrientation>>(\n true,\n)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\n/**\n * @deprecated Use SchematicPortArrangementWithPinCounts instead.\n */\nexport interface SchematicPortArrangementWithSizes {\n leftSize?: number\n topSize?: number\n rightSize?: number\n bottomSize?: number\n}\n\n/**\n * Specifies the number of pins on each side of the schematic box component.\n */\nexport interface SchematicPortArrangementWithPinCounts {\n leftPinCount?: number\n topPinCount?: number\n rightPinCount?: number\n bottomPinCount?: number\n}\n\nexport interface PinSideDefinition {\n pins: Array<number | string>\n direction:\n | \"top-to-bottom\"\n | \"left-to-right\"\n | \"bottom-to-top\"\n | \"right-to-left\"\n}\n\nexport interface SchematicPortArrangementWithSides {\n leftSide?: PinSideDefinition\n topSide?: PinSideDefinition\n rightSide?: PinSideDefinition\n bottomSide?: PinSideDefinition\n}\n\nexport interface SchematicPortArrangement\n extends SchematicPortArrangementWithSizes,\n SchematicPortArrangementWithSides,\n SchematicPortArrangementWithPinCounts {}\n\nexport type SchematicPinArrangement = SchematicPortArrangement\nexport type SchematicPinArrangementWithSizes = SchematicPortArrangementWithSizes\nexport type SchematicPinArrangementWithSides = SchematicPortArrangementWithSides\nexport type SchematicPinArrangementWithPinCounts =\n SchematicPortArrangementWithPinCounts\n\nexport const explicitPinSideDefinition = z.object({\n pins: z.array(z.union([z.number(), z.string()])),\n direction: z.union([\n z.literal(\"top-to-bottom\"),\n z.literal(\"left-to-right\"),\n z.literal(\"bottom-to-top\"),\n z.literal(\"right-to-left\"),\n ]),\n})\n\n/**\n * @deprecated Use schematicPinArrangement instead.\n */\nexport const schematicPortArrangement = z.object({\n leftSize: z.number().optional().describe(\"@deprecated, use leftPinCount\"),\n topSize: z.number().optional().describe(\"@deprecated, use topPinCount\"),\n rightSize: z.number().optional().describe(\"@deprecated, use rightPinCount\"),\n bottomSize: z.number().optional().describe(\"@deprecated, use bottomPinCount\"),\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n leftSide: explicitPinSideDefinition.optional(),\n rightSide: explicitPinSideDefinition.optional(),\n topSide: explicitPinSideDefinition.optional(),\n bottomSide: explicitPinSideDefinition.optional(),\n})\n\nexport const schematicPinArrangement = schematicPortArrangement\n\nexpectTypesMatch<\n SchematicPortArrangement,\n z.input<typeof schematicPortArrangement>\n>(true)\n","import { distance } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type SchematicPinStyle = Record<\n string,\n {\n marginTop?: number | string\n marginRight?: number | string\n marginBottom?: number | string\n marginLeft?: number | string\n\n /** @deprecated use marginLeft */\n leftMargin?: number | string\n /** @deprecated use marginRight */\n rightMargin?: number | string\n /** @deprecated use marginTop */\n topMargin?: number | string\n /** @deprecated use marginBottom */\n bottomMargin?: number | string\n }\n>\n\nexport const schematicPinStyle = z.record(\n z.object({\n marginLeft: distance.optional(),\n marginRight: distance.optional(),\n marginTop: distance.optional(),\n marginBottom: distance.optional(),\n\n leftMargin: distance.optional(),\n rightMargin: distance.optional(),\n topMargin: distance.optional(),\n bottomMargin: distance.optional(),\n }),\n)\n\nexpectTypesMatch<SchematicPinStyle, z.input<typeof schematicPinStyle>>(true)\n","import type { LayoutBuilder, ManualEditFile } from \"@tscircuit/layout\"\nimport { distance } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport { type Point, point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { subcircuitGroupProps, type SubcircuitGroupProps } from \"./group\"\n\nexport interface BoardProps extends Omit<SubcircuitGroupProps, \"subcircuit\"> {\n width?: number | string\n height?: number | string\n outline?: Point[]\n outlineOffsetX?: number | string\n outlineOffsetY?: number | string\n material?: \"fr4\" | \"fr1\"\n}\n\nexport const boardProps = subcircuitGroupProps.extend({\n width: distance.optional(),\n height: distance.optional(),\n outline: z.array(point).optional(),\n outlineOffsetX: distance.optional(),\n outlineOffsetY: distance.optional(),\n material: z.enum([\"fr4\", \"fr1\"]).default(\"fr4\"),\n})\n\ntype InferredBoardProps = z.input<typeof boardProps>\nexpectTypesMatch<BoardProps, InferredBoardProps>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const point = z.object({\n x: distance,\n y: distance,\n})\n\nexport type Point = { x: number | string; y: number | string }\n","import type { LayoutBuilder } from \"@tscircuit/layout\"\nimport { layer_ref, length } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport {\n type CommonLayoutProps,\n commonLayoutProps,\n type SupplierPartNumbers,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport type { AnySourceComponent, PcbTrace } from \"circuit-json\"\nimport {\n manual_edits_file,\n type ManualEditsFile,\n type ManualEditsFileInput,\n} from \"lib/manual-edits\"\n\nexport const layoutConfig = z.object({\n layoutMode: z.enum([\"grid\", \"flex\", \"match-adapt\", \"none\"]).optional(),\n position: z.enum([\"absolute\", \"relative\"]).optional(),\n\n grid: z.boolean().optional(),\n gridCols: z.number().or(z.string()).optional(),\n gridRows: z.number().or(z.string()).optional(),\n gridTemplateRows: z.string().optional(),\n gridTemplateColumns: z.string().optional(),\n gridTemplate: z.string().optional(),\n gridGap: z.number().or(z.string()).optional(),\n\n flex: z.boolean().or(z.string()).optional(),\n flexDirection: z.enum([\"row\", \"column\"]).optional(),\n alignItems: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n justifyContent: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n flexRow: z.boolean().optional(),\n flexColumn: z.boolean().optional(),\n gap: z.number().or(z.string()).optional(),\n\n padding: length.optional(),\n paddingLeft: length.optional(),\n paddingRight: length.optional(),\n paddingTop: length.optional(),\n paddingBottom: length.optional(),\n paddingX: length.optional(),\n paddingY: length.optional(),\n\n width: length.optional(),\n height: length.optional(),\n\n matchAdapt: z.boolean().optional(),\n matchAdaptTemplate: z.any().optional(),\n})\n\nexport interface LayoutConfig {\n layoutMode?: \"grid\" | \"flex\" | \"match-adapt\" | \"none\"\n position?: \"absolute\" | \"relative\"\n\n grid?: boolean\n gridCols?: number | string\n gridRows?: number | string\n gridTemplateRows?: string\n gridTemplateColumns?: string\n gridTemplate?: string\n gridGap?: number | string\n\n flex?: boolean | string\n flexDirection?: \"row\" | \"column\"\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\"\n justifyContent?: \"start\" | \"center\" | \"end\" | \"stretch\"\n flexRow?: boolean\n flexColumn?: boolean\n gap?: number | string\n\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n paddingX?: Distance\n paddingY?: Distance\n\n width?: Distance\n height?: Distance\n\n matchAdapt?: boolean\n matchAdaptTemplate?: any\n}\n\nexpectTypesMatch<LayoutConfig, z.input<typeof layoutConfig>>(true)\n\nexport interface Border {\n strokeWidth?: Distance\n dashed?: boolean\n solid?: boolean\n}\n\nexport const border = z.object({\n strokeWidth: length.optional(),\n dashed: z.boolean().optional(),\n solid: z.boolean().optional(),\n})\n\nexport interface BaseGroupProps extends CommonLayoutProps, LayoutConfig {\n name?: string\n key?: any\n children?: any\n\n pcbWidth?: Distance\n pcbHeight?: Distance\n schWidth?: Distance\n schHeight?: Distance\n\n pcbLayout?: LayoutConfig\n schLayout?: LayoutConfig\n cellBorder?: Border | null\n border?: Border | null\n schPadding?: Distance\n schPaddingLeft?: Distance\n schPaddingRight?: Distance\n schPaddingTop?: Distance\n schPaddingBottom?: Distance\n}\n\nexport type PartsEngine = {\n findPart: (params: {\n sourceComponent: AnySourceComponent\n footprinterString?: string\n }) => Promise<SupplierPartNumbers> | SupplierPartNumbers\n}\n\nexport interface PcbRouteCache {\n pcbTraces: PcbTrace[]\n cacheKey: string\n}\n\nexport interface AutorouterConfig {\n serverUrl?: string\n inputFormat?: \"simplified\" | \"circuit-json\"\n serverMode?: \"job\" | \"solve-endpoint\"\n serverCacheEnabled?: boolean\n cache?: PcbRouteCache\n groupMode?: \"sequential-trace\" | \"subcircuit\"\n local?: boolean\n algorithmFn?: (simpleRouteJson: any) => Promise<any>\n}\n\nexport type AutorouterProp =\n | AutorouterConfig\n | \"sequential-trace\"\n | \"subcircuit\"\n | \"auto\"\n | \"auto-local\"\n | \"auto-cloud\"\n\nexport const autorouterConfig = z.object({\n serverUrl: z.string().optional(),\n inputFormat: z.enum([\"simplified\", \"circuit-json\"]).optional(),\n serverMode: z.enum([\"job\", \"solve-endpoint\"]).optional(),\n serverCacheEnabled: z.boolean().optional(),\n cache: z.custom<PcbRouteCache>((v) => true).optional(),\n groupMode: z.enum([\"sequential-trace\", \"subcircuit\"]).optional(),\n algorithmFn: z\n .custom<(simpleRouteJson: any) => Promise<any>>(\n (v) => typeof v === \"function\" || v === undefined,\n )\n .optional(),\n local: z.boolean().optional(),\n})\n\nexport const autorouterProp = z.union([\n autorouterConfig,\n z.literal(\"sequential-trace\"),\n z.literal(\"subcircuit\"),\n z.literal(\"auto\"),\n z.literal(\"auto-local\"),\n z.literal(\"auto-cloud\"),\n])\n\nexport interface SubcircuitGroupProps extends BaseGroupProps {\n layout?: LayoutBuilder\n manualEdits?: ManualEditsFileInput\n routingDisabled?: boolean\n defaultTraceWidth?: Distance\n minTraceWidth?: Distance\n pcbRouteCache?: PcbRouteCache\n\n autorouter?: AutorouterProp\n\n /**\n * If true, we'll automatically layout the schematic for this group. Must be\n * a subcircuit (currently). This is eventually going to be replaced with more\n * sophisticated layout options/modes and will be enabled by default.\n */\n schAutoLayoutEnabled?: boolean\n\n /**\n * If true, net labels will automatically be created for complex traces\n */\n schTraceAutoLabelEnabled?: boolean\n\n partsEngine?: PartsEngine\n}\n\nexport interface SubcircuitGroupPropsWithBool extends SubcircuitGroupProps {\n subcircuit: true\n}\n\nexport interface NonSubcircuitGroupProps extends BaseGroupProps {\n subcircuit?: false | undefined\n}\n\nexport type GroupProps = SubcircuitGroupPropsWithBool | NonSubcircuitGroupProps\n\nexport const baseGroupProps = commonLayoutProps.extend({\n name: z.string().optional(),\n children: z.any().optional(),\n key: z.any().optional(),\n\n ...layoutConfig.shape,\n pcbWidth: length.optional(),\n pcbHeight: length.optional(),\n schWidth: length.optional(),\n schHeight: length.optional(),\n pcbLayout: layoutConfig.optional(),\n schLayout: layoutConfig.optional(),\n cellBorder: border.nullable().optional(),\n border: border.nullable().optional(),\n schPadding: length.optional(),\n schPaddingLeft: length.optional(),\n schPaddingRight: length.optional(),\n schPaddingTop: length.optional(),\n schPaddingBottom: length.optional(),\n})\n\nexport const partsEngine = z.custom<PartsEngine>((v) => \"findPart\" in v)\n\nexport const subcircuitGroupProps = baseGroupProps.extend({\n layout: z.custom<LayoutBuilder>((v) => true).optional(),\n manualEdits: manual_edits_file.optional(),\n schAutoLayoutEnabled: z.boolean().optional(),\n schTraceAutoLabelEnabled: z.boolean().optional(),\n routingDisabled: z.boolean().optional(),\n defaultTraceWidth: length.optional(),\n minTraceWidth: length.optional(),\n partsEngine: partsEngine.optional(),\n pcbRouteCache: z.custom<PcbRouteCache>((v) => true).optional(),\n autorouter: autorouterProp.optional(),\n})\n\nexport const subcircuitGroupPropsWithBool = subcircuitGroupProps.extend({\n subcircuit: z.literal(true),\n})\n\nexport const groupProps = z.discriminatedUnion(\"subcircuit\", [\n baseGroupProps.extend({ subcircuit: z.literal(false).optional() }),\n subcircuitGroupPropsWithBool,\n])\n\ntype InferredBaseGroupProps = z.input<typeof baseGroupProps>\ntype InferredSubcircuitGroupPropsWithBool = z.input<\n typeof subcircuitGroupPropsWithBool\n>\n\nexpectTypesMatch<BaseGroupProps, InferredBaseGroupProps>(true)\nexpectTypesMatch<\n SubcircuitGroupPropsWithBool,\n InferredSubcircuitGroupPropsWithBool\n>(true)\n\ntype InferredGroupProps = z.input<typeof groupProps>\nexpectTypesMatch<GroupProps, InferredGroupProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const base_manual_edit_event = z.object({\n edit_event_id: z.string(),\n in_progress: z.boolean().optional(),\n created_at: z.number(),\n})\n\nexport interface BaseManualEditEvent {\n edit_event_id: string\n in_progress?: boolean\n created_at: number\n}\n\nexport type BaseManualEditEventInput = z.input<typeof base_manual_edit_event>\n\nexpectTypesMatch<BaseManualEditEvent, z.infer<typeof base_manual_edit_event>>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_pcb_component_location_event = base_manual_edit_event.extend({\n pcb_edit_event_type: z\n .literal(\"edit_component_location\")\n .describe(\"deprecated\"),\n edit_event_type: z.literal(\"edit_pcb_component_location\"),\n pcb_component_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n})\n\n/** @deprecated use edit_pcb_component_location_event instead */\nexport const edit_component_location_event = edit_pcb_component_location_event\n\nexport interface EditPcbComponentLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_pcb_component_location\"\n /** @deprecated */\n pcb_edit_event_type: \"edit_component_location\"\n pcb_component_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditPcbComponentLocationEventInput = z.input<\n typeof edit_pcb_component_location_event\n>\n\nexpectTypesMatch<\n EditPcbComponentLocationEvent,\n z.infer<typeof edit_pcb_component_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_trace_hint_event = base_manual_edit_event.extend({\n pcb_edit_event_type: z.literal(\"edit_trace_hint\").describe(\"deprecated\"),\n edit_event_type: z.literal(\"edit_pcb_trace_hint\").optional(),\n pcb_port_id: z.string(),\n pcb_trace_hint_id: z.string().optional(),\n route: z.array(\n z.object({ x: z.number(), y: z.number(), via: z.boolean().optional() }),\n ),\n})\n\nexport interface EditTraceHintEvent extends BaseManualEditEvent {\n /** @deprecated */\n pcb_edit_event_type: \"edit_trace_hint\"\n edit_event_type?: \"edit_pcb_trace_hint\"\n pcb_port_id: string\n pcb_trace_hint_id?: string\n route: Array<{ x: number; y: number; via?: boolean }>\n}\n\nexport type EditTraceHintEventInput = z.input<typeof edit_trace_hint_event>\n\nexpectTypesMatch<EditTraceHintEvent, z.infer<typeof edit_trace_hint_event>>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_schematic_component_location_event =\n base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_schematic_component_location\"),\n schematic_component_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n })\n\nexport interface EditSchematicComponentLocationEvent\n extends BaseManualEditEvent {\n edit_event_type: \"edit_schematic_component_location\"\n schematic_component_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditSchematicComponentLocationEventInput = z.input<\n typeof edit_schematic_component_location_event\n>\n\nexpectTypesMatch<\n EditSchematicComponentLocationEvent,\n z.infer<typeof edit_schematic_component_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_pcb_group_location_event = base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_pcb_group_location\"),\n pcb_group_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n})\n\nexport interface EditPcbGroupLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_pcb_group_location\"\n pcb_group_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditPcbGroupLocationEventInput = z.input<\n typeof edit_pcb_group_location_event\n>\n\nexpectTypesMatch<\n EditPcbGroupLocationEvent,\n z.infer<typeof edit_pcb_group_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_schematic_group_location_event =\n base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_schematic_group_location\"),\n schematic_group_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n })\n\nexport interface EditSchematicGroupLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_schematic_group_location\"\n schematic_group_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditSchematicGroupLocationEventInput = z.input<\n typeof edit_schematic_group_location_event\n>\n\nexpectTypesMatch<\n EditSchematicGroupLocationEvent,\n z.infer<typeof edit_schematic_group_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n edit_pcb_component_location_event,\n type EditPcbComponentLocationEvent,\n} from \"./manual-edit-events/edit_pcb_component_location_event\"\nimport {\n edit_schematic_component_location_event,\n type EditSchematicComponentLocationEvent,\n} from \"./manual-edit-events/edit_schematic_component_location_event\"\nimport {\n edit_trace_hint_event,\n type EditTraceHintEvent,\n} from \"./manual-edit-events/edit_trace_hint_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type ManualEditEvent =\n | EditPcbComponentLocationEvent\n | EditTraceHintEvent\n | EditSchematicComponentLocationEvent\n\nexport const manual_edit_event = z.union([\n edit_pcb_component_location_event,\n edit_trace_hint_event,\n edit_schematic_component_location_event,\n])\n\nexport type ManualEditEventInput = z.input<typeof manual_edit_event>\ntype InferredManualEditEvent = z.infer<typeof manual_edit_event>\n\nexpectTypesMatch<ManualEditEvent, InferredManualEditEvent>(true)\n","import { z } from \"zod\"\nimport {\n manual_pcb_placement,\n type ManualPcbPlacement,\n} from \"./manual_pcb_placement\"\nimport { manual_edit_event } from \"./manual_edit_event\"\nimport { manual_trace_hint, type ManualTraceHint } from \"./manual_trace_hint\"\nimport {\n manual_schematic_placement,\n type ManualSchematicPlacement,\n} from \"./manual_schematic_placement\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_edits_file = z.object({\n pcb_placements: z.array(manual_pcb_placement).optional(),\n manual_trace_hints: z.array(manual_trace_hint).optional(),\n schematic_placements: z.array(manual_schematic_placement).optional(),\n})\n\nexport interface ManualEditsFile {\n pcb_placements?: ManualPcbPlacement[]\n manual_trace_hints?: ManualTraceHint[]\n schematic_placements?: ManualSchematicPlacement[]\n}\n\nexport type ManualEditsFileInput = z.input<typeof manual_edits_file>\n\nexpectTypesMatch<ManualEditsFile, z.infer<typeof manual_edits_file>>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_pcb_placement = z.object({\n selector: z.string(),\n relative_to: z\n .string()\n .optional()\n .default(\"group_center\")\n .describe(\"Can be a selector or 'group_center'\"),\n center: point,\n})\n\nexport interface ManualPcbPlacement {\n selector: string\n relative_to: string\n center: Point\n}\n\nexport type ManualPcbPlacementInput = z.input<typeof manual_pcb_placement>\ntype InferredManualPcbPlacement = z.infer<typeof manual_pcb_placement>\n\nexpectTypesMatch<ManualPcbPlacement, InferredManualPcbPlacement>(true)\n","import { z } from \"zod\"\nimport { layer_ref, route_hint_point, type RouteHintPoint } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_trace_hint = z.object({\n pcb_port_selector: z.string(),\n offsets: z.array(route_hint_point),\n})\n\nexport interface ManualTraceHint {\n pcb_port_selector: string\n offsets: Array<RouteHintPoint>\n}\n\nexport type ManualTraceHintInput = z.input<typeof manual_trace_hint>\n\nexpectTypesMatch<ManualTraceHint, z.infer<typeof manual_trace_hint>>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_schematic_placement = z.object({\n selector: z.string(),\n relative_to: z\n .string()\n .optional()\n .default(\"group_center\")\n .describe(\"Can be a selector or 'group_center'\"),\n center: point,\n})\n\nexport interface ManualSchematicPlacement {\n selector: string\n relative_to: string\n center: Point\n}\n\nexport type ManualSchematicPlacementInput = z.input<\n typeof manual_schematic_placement\n>\ntype InferredManualSchematicPlacement = z.infer<\n typeof manual_schematic_placement\n>\n\nexpectTypesMatch<ManualSchematicPlacement, InferredManualSchematicPlacement>(\n true,\n)\n","import { distance } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { subcircuitGroupProps, type SubcircuitGroupProps } from \"./group\"\n\nexport interface BreakoutProps\n extends Omit<SubcircuitGroupProps, \"subcircuit\"> {\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n}\n\nexport const breakoutProps = subcircuitGroupProps.extend({\n padding: distance.optional(),\n paddingLeft: distance.optional(),\n paddingRight: distance.optional(),\n paddingTop: distance.optional(),\n paddingBottom: distance.optional(),\n})\n\ntype InferredBreakoutProps = z.input<typeof breakoutProps>\nexpectTypesMatch<BreakoutProps, InferredBreakoutProps>(true)\n","import { distance, supplier_name } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n type SupplierPartNumbers,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement as schematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport type PinLabelsProp<\n PinNumber extends string = string,\n PinLabel extends string = string,\n> = Record<PinNumber, PinLabel | readonly PinLabel[] | PinLabel[]>\n\nexport type PinLabelFromPinLabelMap<PinLabelMap extends PinLabelsProp> =\n PinLabelMap extends PinLabelsProp<infer PinNumber, infer PinLabel>\n ? PinLabel\n : never\n\nexport interface PinCompatibleVariant {\n manufacturerPartNumber?: string\n supplierPartNumber?: SupplierPartNumbers\n}\n\nexport interface ChipPropsSU<PinLabel extends string = string>\n extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: PinLabelsProp<string, PinLabel>\n /**\n * Whether to show pin aliases in the schematic\n */\n showPinAliases?: boolean\n schPinArrangement?: SchematicPortArrangement\n /** @deprecated Use schPinArrangement instead. */\n schPortArrangement?: SchematicPortArrangement\n pinCompatibleVariants?: PinCompatibleVariant[]\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: Distance\n schWidth?: Distance\n schHeight?: Distance\n noSchematicRepresentation?: boolean\n internallyConnectedPins?: string[][]\n externallyConnectedPins?: string[][]\n connections?: Connections<PinLabel>\n}\n\nexport type ChipProps<PinLabelMap extends PinLabelsProp | string = string> =\n ChipPropsSU<\n PinLabelMap extends PinLabelsProp\n ? PinLabelFromPinLabelMap<PinLabelMap>\n : PinLabelMap\n >\n\n/**\n * Get the pin labels for a component\n *\n * const pinLabels = { pin1: \"VCC\", pin2: \"GND\", pin3: \"DATA\" } as const\n * export const MyChip = (props: ChipProps<typeof pinLabels>) => {\n * // ...\n * }\n * type MyChipPinLabels = ChipPinLabels<typeof MyChip>\n * // MyChipPinLabels is \"VCC\" | \"GND\" | \"DATA\"\n *\n */\nexport type ChipPinLabels<T extends (props: ChipProps<any>) => any> =\n T extends (props: infer Props) => any\n ? Props extends ChipProps<infer PinLabelMap>\n ? PinLabelMap extends PinLabelsProp\n ? PinLabelFromPinLabelMap<PinLabelMap>\n : PinLabelMap extends string\n ? PinLabelMap\n : never\n : never\n : never\n\n/**\n * Get the connection prop type for a component\n *\n * const pinLabels = { pin1: \"VCC\", pin2: \"GND\", pin3: \"DATA\" } as const\n * export const MyChip = (props: ChipProps<typeof pinLabels>) => {\n * // ...\n * }\n * const connections: ChipConnections<typeof MyChip> = {\n * VCC: \"...\",\n * GND: \"...\",\n * DATA: \"...\",\n * }\n *\n */\nexport type ChipConnections<T extends (props: ChipProps<any>) => any> = {\n [K in ChipPinLabels<T>]: string\n}\n\nconst connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nconst connectionsProp = z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n\nexport const pinLabelsProp = z.record(\n z.string(),\n z.string().or(z.array(z.string()).readonly()).or(z.array(z.string())),\n)\n\nexpectTypesMatch<PinLabelsProp, z.input<typeof pinLabelsProp>>(true)\n\nexport const pinCompatibleVariant = z.object({\n manufacturerPartNumber: z.string().optional(),\n supplierPartNumber: z.record(supplier_name, z.array(z.string())).optional(),\n})\n\nexport const chipProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: pinLabelsProp.optional(),\n showPinAliases: z.boolean().optional(),\n internallyConnectedPins: z.array(z.array(z.string())).optional(),\n externallyConnectedPins: z.array(z.array(z.string())).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPortArrangement: schematicPinArrangement.optional(),\n pinCompatibleVariants: z.array(pinCompatibleVariant).optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n noSchematicRepresentation: z.boolean().optional(),\n connections: connectionsProp.optional(),\n})\n\n/**\n * @deprecated Use ChipProps instead.\n */\nexport const bugProps = chipProps\nexport type InferredChipProps = z.input<typeof chipProps>\n\n// Chip props are too complex to match up with zod types, we typecheck\n// them separately in the test files\nexpectTypesMatch<InferredChipProps, ChipPropsSU<string>>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface JumperProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, string | string[]>\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: number | string\n schWidth?: number | string\n schHeight?: number | string\n schDirection?: \"left\" | \"right\"\n schPortArrangement?: SchematicPortArrangement\n /**\n * Number of pins on the jumper (2 or 3)\n */\n pinCount?: 2 | 3\n /**\n * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: string[][]\n /**\n * Connections to other components\n */\n connections?: Connections<string>\n}\n\nexport const jumperProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(z.number().or(z.string()), z.string().or(z.array(z.string())))\n .optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n schDirection: z.enum([\"left\", \"right\"]).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n pinCount: z.union([z.literal(2), z.literal(3)]).optional(),\n internallyConnectedPins: z.array(z.array(z.string())).optional(),\n connections: z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n})\n\ntype InferredJumperProps = z.input<typeof jumperProps>\nexpectTypesMatch<JumperProps, InferredJumperProps>(true)\n","import { z } from \"zod\"\n\nexport const connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nexport const createConnectionsProp = <T extends readonly [string, ...string[]]>(\n labels: T,\n) => {\n return z.record(z.enum(labels), connectionTarget)\n}\n","import { jumperProps, type JumperProps } from \"./jumper\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface SolderJumperProps extends JumperProps {\n /**\n * Pins that are bridged with solder by default\n */\n bridgedPins?: string[][]\n}\n\nexport const solderjumperProps = jumperProps.extend({\n bridgedPins: z.array(z.array(z.string())).optional(),\n})\n\ntype InferredSolderJumperProps = z.input<typeof solderjumperProps>\nexpectTypesMatch<SolderJumperProps, InferredSolderJumperProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ConnectorProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, string | string[]>\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: number | string\n schWidth?: number | string\n schHeight?: number | string\n schDirection?: \"left\" | \"right\"\n schPortArrangement?: SchematicPortArrangement\n /**\n * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: string[][]\n /**\n * Connector standard, e.g. usb_c, m2\n */\n standard?: \"usb_c\" | \"m2\"\n}\n\nexport const connectorProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(z.number().or(z.string()), z.string().or(z.array(z.string())))\n .optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n schDirection: z.enum([\"left\", \"right\"]).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n internallyConnectedPins: z.array(z.array(z.string())).optional(),\n standard: z.enum([\"usb_c\", \"m2\"]).optional(),\n})\n\ntype InferredConnectorProps = z.input<typeof connectorProps>\nexpectTypesMatch<ConnectorProps, InferredConnectorProps>(true)\n","import { z } from \"zod\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\n\n/**\n * Pin labels for fuse component\n */\nexport const fusePinLabels = [\"pin1\", \"pin2\"] as const\n\nexport type FusePinLabels = (typeof fusePinLabels)[number]\n\nexport interface FuseProps extends CommonComponentProps {\n /**\n * Current rating of the fuse in amperes\n */\n currentRating: number | string\n\n /**\n * Voltage rating of the fuse\n */\n voltageRating?: number | string\n\n /**\n * Whether to show ratings on schematic\n */\n schShowRatings?: boolean\n\n schOrientation?: SchematicOrientation\n\n /**\n * Connections to other components\n */\n connections?: Connections<FusePinLabels>\n}\n\n/**\n * Schema for validating fuse props\n */\nexport const fuseProps = commonComponentProps.extend({\n currentRating: z.union([z.number(), z.string()]),\n voltageRating: z.union([z.number(), z.string()]).optional(),\n schShowRatings: z.boolean().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: z\n .record(\n z.string(),\n z.union([\n z.string(),\n z.array(z.string()).readonly(),\n z.array(z.string()),\n ]),\n )\n .optional(),\n})\n\nexport type InferredFuseProps = z.input<typeof fuseProps>\n","import { distance } from \"circuit-json\"\nimport type { PcbLayoutProps } from \"lib/common/layout\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { type PortHints, portHints } from \"lib/common/portHints\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface CirclePlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n 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 holeWidth: number | string\n holeHeight: number | string\n portHints?: PortHints\n\n /** @deprecated use holeWidth */\n innerWidth?: number | string\n /** @deprecated use holeHeight */\n innerHeight?: number | string\n}\n\nexport interface PillPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n shape: \"pill\"\n outerWidth: number | string\n outerHeight: number | string\n holeWidth: number | string\n holeHeight: number | string\n\n /** @deprecated use holeWidth */\n innerWidth?: number | string\n /** @deprecated use holeHeight */\n innerHeight?: number | string\n\n portHints?: PortHints\n}\n\nexport interface CircularHoleWithRectPlatedProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n shape: \"circular_hole_with_rect_pad\"\n holeDiameter: number | string\n rectPadWidth: number | string\n rectPadHeight: number | string\n holeShape?: \"circle\"\n padShape?: \"rect\"\n portHints?: PortHints\n}\n\nexport interface PillWithRectPadPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n shape: \"pill_hole_with_rect_pad\"\n holeShape: \"pill\"\n padShape: \"rect\"\n holeWidth: number | string\n holeHeight: number | string\n rectPadWidth: number | string\n rectPadHeight: number | string\n portHints?: PortHints\n}\n\nexport type PlatedHoleProps =\n | CirclePlatedHoleProps\n | OvalPlatedHoleProps\n | PillPlatedHoleProps\n | CircularHoleWithRectPlatedProps\n | PillWithRectPadPlatedHoleProps\n\nconst distanceHiddenUndefined = z\n .custom<z.input<typeof distance>>()\n .transform((a) => {\n if (a === undefined) return undefined\n return distance.parse(a)\n })\n\nexport const platedHoleProps = z\n .discriminatedUnion(\"shape\", [\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n 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 holeWidth: distanceHiddenUndefined,\n holeHeight: distanceHiddenUndefined,\n innerWidth: distance.optional().describe(\"DEPRECATED use holeWidth\"),\n innerHeight: distance.optional().describe(\"DEPRECATED use holeHeight\"),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"pill\"),\n outerWidth: distance,\n outerHeight: distance,\n holeWidth: distanceHiddenUndefined,\n holeHeight: distanceHiddenUndefined,\n innerWidth: distance.optional().describe(\"DEPRECATED use holeWidth\"),\n innerHeight: distance.optional().describe(\"DEPRECATED use holeHeight\"),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"circular_hole_with_rect_pad\"),\n holeDiameter: distance,\n rectPadWidth: distance,\n rectPadHeight: distance,\n holeShape: z.literal(\"circle\").optional(),\n padShape: z.literal(\"rect\").optional(),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n shape: z.literal(\"pill_hole_with_rect_pad\"),\n holeShape: z.literal(\"pill\"),\n padShape: z.literal(\"rect\"),\n holeWidth: distance,\n holeHeight: distance,\n rectPadWidth: distance,\n rectPadHeight: distance,\n portHints: portHints.optional(),\n }),\n ])\n .refine((a) => {\n if (\"innerWidth\" in a && a.innerWidth !== undefined) {\n a.holeWidth ??= a.innerWidth\n }\n if (\"innerHeight\" in a && a.innerHeight !== undefined) {\n a.holeHeight ??= a.innerHeight\n }\n return a\n })\n\ntype InferredPlatedHoleProps = z.input<typeof platedHoleProps>\n\nexpectTypesMatch<PlatedHoleProps, InferredPlatedHoleProps>(true)\n","import { resistance } from \"circuit-json\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport const resistorPinLabels = [\"pin1\", \"pin2\", \"pos\", \"neg\"] as const\nexport type ResistorPinLabels = (typeof resistorPinLabels)[number]\n\nexport interface ResistorProps extends CommonComponentProps {\n resistance: number | string\n pullupFor?: string\n pullupTo?: string\n pulldownFor?: string\n pulldownTo?: string\n schOrientation?: SchematicOrientation\n connections?: Connections<ResistorPinLabels>\n}\n\nexport const resistorProps = commonComponentProps.extend({\n resistance,\n\n pullupFor: z.string().optional(),\n pullupTo: z.string().optional(),\n\n pulldownFor: z.string().optional(),\n pulldownTo: z.string().optional(),\n\n schOrientation: schematicOrientation.optional(),\n\n connections: createConnectionsProp(resistorPinLabels).optional(),\n})\nexport const resistorPins = lrPins\n\ntype InferredResistorProps = z.input<typeof resistorProps>\nexpectTypesMatch<ResistorProps, InferredResistorProps>(true)\n","import { resistance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type PotentiometerPinVariant = \"two_pin\" | \"three_pin\"\n\nexport interface PotentiometerProps extends CommonComponentProps {\n maxResistance: number | string\n pinVariant?: PotentiometerPinVariant\n}\n\nexport const potentiometerProps = commonComponentProps.extend({\n maxResistance: resistance,\n pinVariant: z.enum([\"two_pin\", \"three_pin\"]).optional(),\n})\n\ntype InferredPotentiometerProps = z.input<typeof potentiometerProps>\nexpectTypesMatch<PotentiometerProps, InferredPotentiometerProps>(true)\n","import { frequency, capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type PinVariant = \"two_pin\" | \"four_pin\"\n\nexport interface CrystalProps extends CommonComponentProps {\n frequency: number | string\n loadCapacitance: number | string\n pinVariant?: PinVariant\n schOrientation?: SchematicOrientation\n}\n\nexport const crystalProps = commonComponentProps.extend({\n frequency: frequency,\n loadCapacitance: capacitance,\n pinVariant: z.enum([\"two_pin\", \"four_pin\"]).optional(),\n schOrientation: schematicOrientation.optional(),\n})\nexport const crystalPins = lrPins\n\ntype InferredCrystalProps = z.input<typeof crystalProps>\nexpectTypesMatch<CrystalProps, InferredCrystalProps>(true)\n","import { frequency, capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type ResonatorPinVariant = \"no_ground\" | \"ground_pin\" | \"two_ground_pins\"\n\nexport interface ResonatorProps extends CommonComponentProps {\n frequency: number | string\n loadCapacitance: number | string\n pinVariant?: ResonatorPinVariant\n}\n\nexport const resonatorProps = commonComponentProps.extend({\n frequency: frequency,\n loadCapacitance: capacitance,\n pinVariant: z.enum([\"no_ground\", \"ground_pin\", \"two_ground_pins\"]).optional(),\n})\n\ntype InferredResonatorProps = z.input<typeof resonatorProps>\nexpectTypesMatch<ResonatorProps, InferredResonatorProps>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { boardProps, type BoardProps } from \"lib/components/board\"\n\nexport interface StampboardProps extends BoardProps {\n leftPinCount?: number\n rightPinCount?: number\n topPinCount?: number\n bottomPinCount?: number\n leftPins?: string[]\n rightPins?: string[]\n topPins?: string[]\n bottomPins?: string[]\n pinPitch?: number | string\n innerHoles?: boolean\n}\n\nexport const stampboardProps = boardProps.extend({\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n leftPins: z.array(z.string()).optional(),\n rightPins: z.array(z.string()).optional(),\n topPins: z.array(z.string()).optional(),\n bottomPins: z.array(z.string()).optional(),\n pinPitch: distance.optional(),\n innerHoles: z.boolean().optional(),\n})\n\ntype InferredStampboardProps = z.input<typeof stampboardProps>\nexpectTypesMatch<StampboardProps, InferredStampboardProps>(true)\n","import { capacitance, voltage } from \"circuit-json\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport const capacitorPinLabels = [\n \"pin1\",\n \"pin2\",\n \"pos\",\n \"neg\",\n \"anode\",\n \"cathode\",\n] as const\nexport type CapacitorPinLabels = (typeof capacitorPinLabels)[number]\n\nexport interface CapacitorProps extends CommonComponentProps {\n capacitance: number | string\n maxVoltageRating?: number | string\n schShowRatings?: boolean\n polarized?: boolean\n decouplingFor?: string\n decouplingTo?: string\n bypassFor?: string\n bypassTo?: string\n maxDecouplingTraceLength?: number\n schOrientation?: SchematicOrientation\n connections?: Connections<CapacitorPinLabels>\n}\n\nexport const capacitorProps = commonComponentProps.extend({\n capacitance,\n maxVoltageRating: voltage.optional(),\n schShowRatings: z.boolean().optional().default(false),\n polarized: z.boolean().optional().default(false),\n decouplingFor: z.string().optional(),\n decouplingTo: z.string().optional(),\n bypassFor: z.string().optional(),\n bypassTo: z.string().optional(),\n maxDecouplingTraceLength: z.number().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: createConnectionsProp(capacitorPinLabels).optional(),\n})\nexport const capacitorPins = lrPolarPins\n\nexpectTypesMatch<CapacitorProps, z.input<typeof capacitorProps>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface NetProps {\n name: string\n}\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 { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { point, type Point } from \"lib/common/point\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n}\n\nexport const rectCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n })\nexpectTypesMatch<RectCutoutProps, z.input<typeof rectCutoutProps>>(true)\n\nexport interface CircleCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"circle\"\n radius: Distance\n}\n\nexport const circleCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n radius: distance,\n })\nexpectTypesMatch<CircleCutoutProps, z.input<typeof circleCutoutProps>>(true)\n\nexport interface PolygonCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"polygon\"\n points: Point[]\n}\n\nexport const polygonCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n })\nexpectTypesMatch<PolygonCutoutProps, z.input<typeof polygonCutoutProps>>(true)\n\nexport type CutoutProps =\n | RectCutoutProps\n | CircleCutoutProps\n | PolygonCutoutProps\n\nexport const cutoutProps = z.discriminatedUnion(\"shape\", [\n rectCutoutProps,\n circleCutoutProps,\n polygonCutoutProps,\n])\n\nexport type CutoutPropsInput = z.input<typeof cutoutProps>\n","import {\n pcbLayoutProps,\n type CommonLayoutProps,\n type PcbLayoutProps,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { portHints, type PortHints } from \"lib/common/portHints\"\nimport { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n portHints?: PortHints\n}\n\nexport interface RotatedRectSmtPadProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"rotated_rect\"\n width: Distance\n height: Distance\n ccwRotation: number\n portHints?: PortHints\n}\n\nexport interface CircleSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"circle\"\n radius: Distance\n portHints?: PortHints\n}\n\nexport interface PillSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"pill\"\n width: Distance\n height: Distance\n radius: Distance\n portHints?: PortHints\n}\n\nexport interface PolygonSmtPadProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"polygon\"\n points: Point[]\n portHints?: PortHints\n}\n\nexport type SmtPadProps =\n | RectSmtPadProps\n | CircleSmtPadProps\n | RotatedRectSmtPadProps\n | PillSmtPadProps\n | PolygonSmtPadProps\n\n// ----------------------------------------------------------------------------\n// Zod\n// ----------------------------------------------------------------------------\n\nexport const rectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n portHints: portHints.optional(),\n })\ntype InferredRectSmtPadProps = z.input<typeof rectSmtPadProps>\nexpectTypesMatch<InferredRectSmtPadProps, RectSmtPadProps>(true)\n\nexport const rotatedRectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rotated_rect\"),\n width: distance,\n height: distance,\n ccwRotation: z.number(),\n portHints: portHints.optional(),\n })\ntype InferredRotatedRectSmtPadProps = z.input<typeof rotatedRectSmtPadProps>\nexpectTypesMatch<InferredRotatedRectSmtPadProps, RotatedRectSmtPadProps>(true)\n\nexport const circleSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n radius: distance,\n portHints: portHints.optional(),\n })\ntype InferredCircleSmtPadProps = z.input<typeof circleSmtPadProps>\nexpectTypesMatch<InferredCircleSmtPadProps, CircleSmtPadProps>(true)\n\nexport const pillSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"pill\"),\n width: distance,\n height: distance,\n radius: distance,\n portHints: portHints.optional(),\n })\ntype InferredPillSmtPadProps = z.input<typeof pillSmtPadProps>\nexpectTypesMatch<InferredPillSmtPadProps, PillSmtPadProps>(true)\n\nexport const polygonSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n portHints: portHints.optional(),\n })\ntype InferredPolygonSmtPadProps = z.input<typeof polygonSmtPadProps>\nexpectTypesMatch<InferredPolygonSmtPadProps, PolygonSmtPadProps>(true)\n\nexport const smtPadProps = z.discriminatedUnion(\"shape\", [\n circleSmtPadProps,\n rectSmtPadProps,\n rotatedRectSmtPadProps,\n pillSmtPadProps,\n polygonSmtPadProps,\n])\n\nexport type InferredSmtPadProps = z.input<typeof smtPadProps>\nexpectTypesMatch<InferredSmtPadProps, SmtPadProps>(true)\n","import { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { boolean, string, z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSolderPasteProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"rect\"\n width: Distance\n height: Distance\n}\n\nexport interface CircleSolderPasteProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"circle\"\n radius: Distance\n}\n\nexport type SolderPasteProps = RectSolderPasteProps | CircleSolderPasteProps\n\n// zod\n\nexport const rectSolderPasteProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n })\ntype InferredRectSolderPasteProps = z.input<typeof rectSolderPasteProps>\nexpectTypesMatch<InferredRectSolderPasteProps, RectSolderPasteProps>(true)\n\nexport const circleSolderPasteProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n })\ntype InferredCircleSolderPasteProps = z.input<typeof circleSolderPasteProps>\nexpectTypesMatch<InferredCircleSolderPasteProps, CircleSolderPasteProps>(true)\n\nexport const solderPasteProps = z.union([\n circleSolderPasteProps,\n rectSolderPasteProps,\n])\n\nexport type InferredSolderPasteProps = z.input<typeof solderPasteProps>\nexpectTypesMatch<InferredSolderPasteProps, SolderPasteProps>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface HoleProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n diameter?: Distance\n radius?: Distance\n}\n\nexport const holeProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n diameter: distance.optional(),\n radius: distance.optional(),\n })\n .transform((d) => ({\n ...d,\n diameter: d.diameter ?? 2 * d.radius!,\n radius: d.radius ?? d.diameter! / 2,\n }))\n\nexport type InferredHoleProps = z.input<typeof holeProps>\n\nexpectTypesMatch<HoleProps, InferredHoleProps>(true)\n","import { distance, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const portRef = z.union([\n z.string(),\n z.custom<{ getPortSelector: () => string }>((v) =>\n Boolean(v.getPortSelector),\n ),\n])\n\nconst baseTraceProps = z.object({\n key: z.string().optional(),\n thickness: distance.optional(),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n schDisplayLabel: z.string().optional(),\n maxLength: distance.optional(),\n})\n\nexport const traceProps = z.union([\n baseTraceProps.extend({\n path: z.array(portRef),\n }),\n baseTraceProps.extend({\n from: portRef,\n to: portRef,\n }),\n])\n\nexport type TraceProps = z.input<typeof traceProps>\n","import { type LayerRef, layer_ref } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface FootprintProps {\n /**\n * The layer that the footprint is designed for. If you set this to \"top\"\n * then it means the children were intended to represent the top layer. If\n * the <chip /> with this footprint is moved to the bottom layer, then the\n * components will be mirrored.\n *\n * Generally, you shouldn't set this except where it can help prevent\n * confusion because you have a complex multi-layer footprint. Default is\n * \"top\" and this is most intuitive.\n */\n originalLayer?: LayerRef\n}\n\nexport const footprintProps = z.object({\n originalLayer: layer_ref.default(\"top\").optional(),\n})\n\nexport type FootprintPropsInput = z.input<typeof footprintProps>\ntype InferredFootprintProps = z.infer<typeof footprintProps>\nexpectTypesMatch<InferredFootprintProps, FootprintProps>(true)\n","import { z } from \"zod\"\nimport {\n commonComponentProps,\n lrPins,\n lrPolarPins,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\n/** @deprecated use battery_capacity from circuit-json when circuit-json is updated */\nconst capacity = z\n .number()\n .or(z.string().endsWith(\"mAh\"))\n .transform((v) => {\n if (typeof v === \"string\") {\n const valString = v.replace(\"mAh\", \"\")\n const num = Number.parseFloat(valString)\n if (Number.isNaN(num)) {\n throw new Error(\"Invalid capacity\")\n }\n return num\n }\n return v\n })\n .describe(\"Battery capacity in mAh\")\n\nexport interface BatteryProps extends CommonComponentProps {\n capacity?: number | string\n schOrientation?: SchematicOrientation\n}\n\nexport const batteryProps = commonComponentProps.extend({\n capacity: capacity.optional(),\n schOrientation: schematicOrientation.optional(),\n})\nexport const batteryPins = lrPolarPins\n\nexpectTypesMatch<BatteryProps, z.input<typeof batteryProps>>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPinArrangement,\n type SchematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PinHeaderProps extends CommonComponentProps {\n /**\n * Number of pins in the header\n */\n pinCount: number\n\n /**\n * Distance between pins\n */\n pitch?: number | string\n\n /**\n * Schematic facing direction\n */\n schFacingDirection?: \"up\" | \"down\" | \"left\" | \"right\"\n\n /**\n * Whether the header is male or female\n */\n gender?: \"male\" | \"female\"\n\n /**\n * Whether to show pin labels in silkscreen\n */\n showSilkscreenPinLabels?: boolean\n\n /**\n * Whether the header has two rows of pins\n */\n doubleRow?: boolean\n\n /**\n * Diameter of the through-hole for each pin\n */\n holeDiameter?: number | string\n\n /**\n * Diameter of the plated area around each hole\n */\n platedDiameter?: number | string\n\n /**\n * Labels for each pin\n */\n pinLabels?: string[]\n\n /**\n * Connections to other components\n */\n connections?: Connections<string>\n\n /**\n * Direction the header is facing\n */\n facingDirection?: \"left\" | \"right\"\n\n /**\n * Pin arrangement in schematic view\n */\n schPinArrangement?: SchematicPinArrangement\n\n /**\n * Schematic pin style (margins, etc)\n */\n schPinStyle?: SchematicPinStyle\n\n /**\n * Schematic pin spacing\n */\n schPinSpacing?: number | string\n\n /**\n * Schematic width\n */\n schWidth?: number | string\n\n /**\n * Schematic height\n */\n schHeight?: number | string\n}\n\nexport const pinHeaderProps = commonComponentProps.extend({\n pinCount: z.number(),\n pitch: distance.optional(),\n schFacingDirection: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n gender: z.enum([\"male\", \"female\"]).optional().default(\"male\"),\n showSilkscreenPinLabels: z.boolean().optional(),\n doubleRow: z.boolean().optional(),\n holeDiameter: distance.optional(),\n platedDiameter: distance.optional(),\n pinLabels: z.array(z.string()).optional(),\n connections: z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n facingDirection: z.enum([\"left\", \"right\"]).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n})\n\ntype InferredPinHeaderProps = z.input<typeof pinHeaderProps>\nexpectTypesMatch<PinHeaderProps, InferredPinHeaderProps>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance } from \"lib/common/distance\"\nimport { rotation } from \"circuit-json\"\n\n/**\n * @deprecated Use NetLabelProps instead.\n */\nexport interface NetAliasProps {\n net?: string\n connection?: string\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"top\" | \"right\" | \"bottom\"\n}\n\n/** @deprecated Use netLabelProps instead. */\nexport const netAliasProps = z.object({\n net: z.string().optional(),\n connection: z.string().optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"top\", \"right\", \"bottom\"]).optional(),\n})\n\ntype InferredNetAliasProps = z.input<typeof netAliasProps>\nexpectTypesMatch<NetAliasProps, InferredNetAliasProps>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance } from \"lib/common/distance\"\nimport { rotation } from \"circuit-json\"\n\nexport interface NetLabelProps {\n net?: string\n connection?: string\n connectsTo?: string | string[]\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"top\" | \"right\" | \"bottom\"\n}\n\nexport const netLabelProps = z.object({\n net: z.string().optional(),\n connection: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"top\", \"right\", \"bottom\"]).optional(),\n})\n\ntype InferredNetLabelProps = z.input<typeof netLabelProps>\nexpectTypesMatch<NetLabelProps, InferredNetLabelProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { chipProps, type ChipProps, type PinLabelsProp } from \"./chip\"\n\nexport type PushButtonProps<T extends PinLabelsProp | string = string> =\n ChipProps<T>\n\nexport const pushButtonProps = chipProps.extend({})\n\nexpectTypesMatch<PushButtonProps, z.input<typeof pushButtonProps>>(true)\n","import type { SubcircuitGroupProps } from \"./group\"\nimport { subcircuitGroupProps } from \"./group\"\nimport type { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type SubcircuitProps = SubcircuitGroupProps\n\nexport const subcircuitProps = subcircuitGroupProps\n\ntype InferredSubcircuitProps = z.input<typeof subcircuitProps>\nexpectTypesMatch<SubcircuitProps, InferredSubcircuitProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface TransistorProps extends CommonComponentProps {\n type: \"npn\" | \"pnp\" | \"bjt\" | \"jfet\" | \"mosfet\" | \"igbt\"\n}\n\nexport const transistorProps = commonComponentProps.extend({\n type: z.enum([\"npn\", \"pnp\", \"bjt\", \"jfet\", \"mosfet\", \"igbt\"]),\n})\n\nexport const transistorPins = [\n \"pin1\",\n \"emitter\",\n \"pin2\",\n \"collector\",\n \"pin3\",\n \"base\",\n] as const\n\ntype InferredTransistorProps = z.input<typeof transistorProps>\nexpectTypesMatch<TransistorProps, InferredTransistorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"../common/layout\"\nimport { expectTypesMatch } from \"../typecheck\"\nimport { z } from \"zod\"\n\nexport interface MosfetProps extends CommonComponentProps {\n channelType: \"n\" | \"p\"\n mosfetMode: \"enhancement\" | \"depletion\"\n}\n\nexport const mosfetProps = commonComponentProps.extend({\n channelType: z.enum([\"n\", \"p\"]),\n mosfetMode: z.enum([\"enhancement\", \"depletion\"]),\n})\n\nexport const mosfetPins = [\n \"pin1\",\n \"drain\",\n \"pin2\",\n \"source\",\n \"pin3\",\n \"gate\",\n] as const\n\ntype InferredMosfetProps = z.input<typeof mosfetProps>\nexpectTypesMatch<MosfetProps, InferredMosfetProps>(true)\n","import { inductance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface InductorProps extends CommonComponentProps {\n inductance: number | string\n maxCurrentRating?: number | string\n schOrientation?: SchematicOrientation\n}\n\nexport const inductorProps = commonComponentProps.extend({\n inductance,\n maxCurrentRating: z.union([z.string(), z.number()]).optional(),\n schOrientation: schematicOrientation.optional(),\n})\n\nexport const inductorPins = lrPins\n\ntype InferredInductorProps = z.input<typeof inductorProps>\n\nexpectTypesMatch<InductorProps, InferredInductorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\n\nconst diodeConnectionKeys = z.enum([\n \"anode\",\n \"cathode\",\n \"pin1\",\n \"pin2\",\n \"pos\",\n \"neg\",\n])\n\nconst connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nconst connectionsProp = z.record(diodeConnectionKeys, connectionTarget)\n\nconst diodeVariant = z.enum([\"standard\", \"schottky\", \"zener\", \"photo\", \"tvs\"])\n\nexport const diodeProps = commonComponentProps\n .extend({\n connections: connectionsProp.optional(),\n variant: diodeVariant.optional().default(\"standard\"),\n standard: z.boolean().optional(),\n schottky: z.boolean().optional(),\n zener: z.boolean().optional(),\n photo: z.boolean().optional(),\n tvs: z.boolean().optional(),\n schOrientation: schematicOrientation.optional(),\n })\n .superRefine((data, ctx) => {\n // Check if multiple boolean flags are set directly\n const enabledFlags = [\n data.standard,\n data.schottky,\n data.zener,\n data.photo,\n data.tvs,\n ].filter(Boolean).length\n\n if (enabledFlags > 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Exactly one diode variant must be enabled\",\n path: [],\n })\n return z.INVALID\n }\n })\n .transform((data) => {\n // Set all variant flags to false initially\n const result = {\n ...data,\n standard: false,\n schottky: false,\n zener: false,\n photo: false,\n tvs: false,\n }\n\n if (data.standard) result.standard = true\n else if (data.schottky) result.schottky = true\n else if (data.zener) result.zener = true\n else if (data.photo) result.photo = true\n else if (data.tvs) result.tvs = true\n else {\n switch (data.variant) {\n case \"standard\":\n result.standard = true\n break\n case \"schottky\":\n result.schottky = true\n break\n case \"zener\":\n result.zener = true\n break\n case \"photo\":\n result.photo = true\n break\n case \"tvs\":\n result.tvs = true\n break\n default:\n result.standard = true\n }\n }\n\n return result\n })\n\nexport const diodePins = lrPolarPins\n\nexport interface DiodeProps extends CommonComponentProps {\n connections?: {\n anode?: string | string[] | readonly string[]\n cathode?: string | string[] | readonly string[]\n pin1?: string | string[] | readonly string[]\n pin2?: string | string[] | readonly string[]\n pos?: string | string[] | readonly string[]\n neg?: string | string[] | readonly string[]\n }\n variant?: \"standard\" | \"schottky\" | \"zener\" | \"photo\" | \"tvs\"\n standard?: boolean\n schottky?: boolean\n zener?: boolean\n photo?: boolean\n tvs?: boolean\n schOrientation?: SchematicOrientation\n}\n\nexport type InferredDiodeProps = z.input<typeof diodeProps>\nexpectTypesMatch<InferredDiodeProps, DiodeProps>(true)\n","import { commonComponentProps, lrPolarPins } from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { z } from \"zod\"\n\nexport const ledProps = commonComponentProps.extend({\n color: z.string().optional(),\n wavelength: z.string().optional(),\n schDisplayValue: z.string().optional(),\n schOrientation: schematicOrientation.optional(),\n})\nexport const ledPins = lrPolarPins\nexport type LedProps = z.input<typeof ledProps>\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nimport { z } from \"zod\"\n\nexport interface SwitchProps extends CommonComponentProps {\n type?: \"spst\" | \"spdt\" | \"dpst\" | \"dpdt\"\n isNormallyClosed?: boolean\n spdt?: boolean\n spst?: boolean\n dpst?: boolean\n dpdt?: boolean\n}\n\nexport const switchProps = commonComponentProps\n .extend({\n type: z.enum([\"spst\", \"spdt\", \"dpst\", \"dpdt\"]).optional(),\n isNormallyClosed: z.boolean().optional().default(false),\n spst: z.boolean().optional(),\n spdt: z.boolean().optional(),\n dpst: z.boolean().optional(),\n dpdt: z.boolean().optional(),\n })\n .transform((props) => {\n const updatedProps: SwitchProps = { ...props }\n\n if (updatedProps.dpdt) {\n updatedProps.type = \"dpdt\"\n } else if (updatedProps.spst) {\n updatedProps.type = \"spst\"\n } else if (updatedProps.spdt) {\n updatedProps.type = \"spdt\"\n } else if (updatedProps.dpst) {\n updatedProps.type = \"dpst\"\n }\n\n switch (updatedProps.type) {\n case \"spdt\":\n updatedProps.spdt = true\n break\n case \"spst\":\n updatedProps.spst = true\n break\n case \"dpst\":\n updatedProps.dpst = true\n break\n case \"dpdt\":\n updatedProps.dpdt = true\n break\n }\n\n return updatedProps\n })\n\nexport type InferredSwitchProps = z.infer<typeof switchProps>\nexpectTypesMatch<SwitchProps, InferredSwitchProps>(true)\n","import { length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const fabricationNoteTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n})\nexport type FabricationNoteTextProps = z.input<typeof fabricationNoteTextProps>\n","import { length, route_hint_point } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const fabricationNotePathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n color: z.string().optional(),\n })\nexport type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>\n","import { distance, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const pcbTraceProps = z.object({\n layer: z.string().optional(),\n thickness: distance.optional(),\n route: z.array(route_hint_point),\n})\nexport type PcbTraceProps = z.input<typeof pcbTraceProps>\n","import { distance, layer_ref, type LayerRefInput } from \"circuit-json\"\nimport { commonLayoutProps, type CommonLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ViaProps extends CommonLayoutProps {\n name?: string\n fromLayer: LayerRefInput\n toLayer: LayerRefInput\n holeDiameter: number | string\n outerDiameter: number | string\n connectsTo?: string | string[]\n}\n\nexport const viaProps = commonLayoutProps.extend({\n name: z.string().optional(),\n fromLayer: layer_ref,\n toLayer: layer_ref,\n holeDiameter: distance,\n outerDiameter: distance,\n connectsTo: z.string().or(z.array(z.string())).optional(),\n})\nexport type InferredViaProps = z.input<typeof viaProps>\nexpectTypesMatch<ViaProps, InferredViaProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface TestpointProps extends CommonComponentProps {\n /**\n * The footprint variant of the testpoint either a surface pad or through-hole\n */\n footprintVariant?: \"pad\" | \"through_hole\"\n /**\n * The shape of the pad if using a pad variant\n */\n padShape?: \"rect\" | \"circle\"\n /**\n * Diameter of the copper pad (applies to both SMD pads and plated holes)\n */\n padDiameter?: number | string\n /**\n * Diameter of the hole if using a through-hole testpoint\n */\n holeDiameter?: number | string\n /**\n * Width of the pad when padShape is rect\n */\n width?: number | string\n /**\n * Height of the pad when padShape is rect\n */\n height?: number | string\n}\n\nexport const testpointProps = commonComponentProps\n .extend({\n footprintVariant: z.enum([\"pad\", \"through_hole\"]).optional(),\n padShape: z.enum([\"rect\", \"circle\"]).optional().default(\"circle\"),\n padDiameter: distance.optional(),\n holeDiameter: distance.optional(),\n width: distance.optional(),\n height: distance.optional(),\n })\n .refine(\n (props) =>\n props.footprintVariant !== \"through_hole\" ||\n props.holeDiameter !== undefined,\n { message: \"holeDiameter is required for through_hole testpoints\" },\n )\n\nexport type InferredTestpointProps = z.input<typeof testpointProps>\nexpectTypesMatch<TestpointProps, InferredTestpointProps>(true)\n","import { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface BreakoutPointProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n connection: string\n}\n\nexport const breakoutPointProps = pcbLayoutProps\n .omit({ pcbRotation: true, layer: true })\n .extend({\n connection: z.string(),\n })\n\ntype InferredBreakoutPointProps = z.input<typeof breakoutPointProps>\nexpectTypesMatch<BreakoutPointProps, InferredBreakoutPointProps>(true)\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const pcbKeepoutProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true }).extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n }),\n pcbLayoutProps.extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n }),\n])\nexport type PcbKeepoutProps = z.input<typeof pcbKeepoutProps>\n","import { voltage } from \"circuit-json\"\nimport { commonComponentProps } from \"lib/common/layout\"\nimport type { z } from \"zod\"\n\nexport const powerSourceProps = commonComponentProps.extend({\n voltage,\n})\nexport type PowerSourceProps = z.input<typeof powerSourceProps>\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\n\nexport const schematicBoxProps = z\n .object({\n schX: distance.optional(),\n schY: distance.optional(),\n width: distance.optional(),\n height: distance.optional(),\n overlay: z.array(z.string()).optional(),\n\n padding: distance.optional(),\n paddingLeft: distance.optional(),\n paddingRight: distance.optional(),\n paddingTop: distance.optional(),\n paddingBottom: distance.optional(),\n\n title: z.string().optional(),\n titleAlignment: ninePointAnchor.default(\"top_left\"),\n titleColor: z.string().optional(),\n titleFontSize: distance.optional(),\n titleInside: z.boolean().default(false),\n strokeStyle: z.enum([\"solid\", \"dashed\"]).default(\"solid\"),\n })\n .refine(\n (elm) =>\n (elm.width !== undefined && elm.height !== undefined) ||\n (Array.isArray(elm.overlay) && elm.overlay.length > 0),\n {\n message:\n \"Must provide either both `width` and `height`, or a non-empty `overlay` array.\",\n },\n )\n .refine(\n (elm) =>\n !(\n elm.width !== undefined &&\n elm.height !== undefined &&\n Array.isArray(elm.overlay) &&\n elm.overlay.length > 0\n ),\n {\n message:\n \"Cannot provide both `width`/`height` and `overlay` at the same time.\",\n },\n )\nexport type SchematicBoxProps = z.input<typeof schematicBoxProps>\n","import { z } from \"zod\"\n\nexport const ninePointAnchor = z.enum([\n \"top_left\",\n \"top_center\",\n \"top_right\",\n \"center_left\",\n \"center\",\n \"center_right\",\n \"bottom_left\",\n \"bottom_center\",\n \"bottom_right\",\n])\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const schematicLineProps = z.object({\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n})\nexport type SchematicLineProps = z.input<typeof schematicLineProps>\n","import { distance, rotation } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { fivePointAnchor } from \"lib/common/fivePointAnchor\"\n\nexport const schematicTextProps = z.object({\n schX: distance.optional(),\n schY: distance.optional(),\n text: z.string(),\n fontSize: z.number().default(1),\n anchor: z\n .union([fivePointAnchor.describe(\"legacy\"), ninePointAnchor])\n .default(\"center\"),\n color: z.string().default(\"#000000\"),\n schRotation: rotation.default(0),\n})\nexport type SchematicTextProps = z.input<typeof schematicTextProps>\n","import { z } from \"zod\"\n\nexport const fivePointAnchor = z.enum([\n \"center\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n])\n","import { point } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const schematicPathProps = z.object({\n points: z.array(point),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.enum([\"red\", \"blue\"]).optional(),\n})\nexport type SchematicPathProps = z.input<typeof schematicPathProps>\n","import { length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { z } from \"zod\"\n\nexport const silkscreenTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: ninePointAnchor.default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type SilkscreenTextProps = z.input<typeof silkscreenTextProps>\n","import { length, route_hint_point } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenPathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type SilkscreenPathProps = z.input<typeof silkscreenPathProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport type { z } from \"zod\"\n\nexport const silkscreenLineProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n strokeWidth: distance,\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n })\nexport type SilkscreenLineProps = z.input<typeof silkscreenLineProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n filled: z.boolean().default(true).optional(),\n stroke: z.enum([\"dashed\", \"solid\", \"none\"]).optional(),\n strokeWidth: distance.optional(),\n width: distance,\n height: distance,\n })\nexport type SilkscreenRectProps = z.input<typeof silkscreenRectProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenCircleProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n radius: distance,\n })\nexport type SilkscreenCircleProps = z.input<typeof silkscreenCircleProps>\n","import { distance, layer_ref, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const routeHintPointProps = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n toLayer: layer_ref.optional(),\n})\n\nexport const traceHintProps = z.object({\n for: z\n .string()\n .optional()\n .describe(\n \"Selector for the port you're targeting, not required if you're inside a trace\",\n ),\n order: z.number().optional(),\n offset: route_hint_point.or(routeHintPointProps).optional(),\n offsets: z\n .array(route_hint_point)\n .or(z.array(routeHintPointProps))\n .optional(),\n traceWidth: z.number().optional(),\n})\n\nexport type TraceHintProps = z.input<typeof traceHintProps>\n","import { direction } from \"lib/common/direction\"\nimport { commonLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const portProps = commonLayoutProps.extend({\n name: z.string(),\n pinNumber: z.number().optional(),\n aliases: z.array(z.string()).optional(),\n direction: direction,\n})\nexport type PortProps = z.input<typeof portProps>\n","import {\n autorouterProp,\n type AutorouterProp,\n type PartsEngine,\n partsEngine,\n} from \"./components/group\"\nimport { expectTypesMatch } from \"./typecheck\"\nimport { z } from \"zod\"\n\nexport interface PlatformConfig {\n partsEngine?: PartsEngine\n\n autorouter?: AutorouterProp\n\n // TODO this follows a subset of the localStorage interface\n localCacheEngine?: any\n\n registryApiUrl?: string\n\n cloudAutorouterUrl?: string\n\n pcbDisabled?: boolean\n schematicDisabled?: boolean\n partsEngineDisabled?: boolean\n\n footprintLibraryMap?: Record<\n string,\n Record<\n string,\n | any[]\n | ((path: string) => Promise<{\n footprintCircuitJson: any[]\n }>)\n >\n >\n}\n\nconst unvalidatedCircuitJson = z.array(z.any()).describe(\"Circuit JSON\")\nconst pathToCircuitJsonFn = z\n .function()\n .args(z.string())\n .returns(z.promise(z.object({ footprintCircuitJson: z.array(z.any()) })))\n .describe(\"A function that takes a path and returns Circuit JSON\")\n\nexport const platformConfig = z.object({\n partsEngine: partsEngine.optional(),\n autorouter: autorouterProp.optional(),\n registryApiUrl: z.string().optional(),\n cloudAutorouterUrl: z.string().optional(),\n localCacheEngine: z.any().optional(),\n pcbDisabled: z.boolean().optional(),\n schematicDisabled: z.boolean().optional(),\n partsEngineDisabled: z.boolean().optional(),\n footprintLibraryMap: z\n .record(\n z.string(),\n z.record(\n z.string(),\n z.union([unvalidatedCircuitJson, pathToCircuitJsonFn]),\n ),\n )\n .optional(),\n}) as z.ZodType<PlatformConfig>\n\nexpectTypesMatch<PlatformConfig, z.infer<typeof platformConfig>>(true)\n"],"mappings":"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","names":["z","z","distance","z","z","z","z","z","z","distance","z","z","distance","z","distance","distance","distance","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","point","z","point","z","z","z","point","z","point","z","z","distance","z","distance","distance","distance","supplier_name","z","supplier_name","distance","distance","z","connectionTarget","z","distance","connectionTarget","z","distance","z","distance","z","z","distance","z","distance","z","resistance","z","resistance","z","frequency","capacitance","z","frequency","capacitance","distance","z","z","distance","capacitance","z","capacitance","z","z","z","distance","length","z","distance","z","z","distance","z","z","distance","z","z","distance","z","z","distance","distance","route_hint_point","z","z","distance","route_hint_point","layer_ref","z","layer_ref","z","z","distance","z","distance","connectionTarget","z","rotation","z","distance","z","rotation","z","distance","z","z","z","z","z","connectionTarget","connectionsProp","z","z","length","z","length","length","route_hint_point","z","route_hint_point","length","distance","route_hint_point","z","distance","layer_ref","z","layer_ref","distance","distance","z","distance","z","distance","z","distance","voltage","voltage","distance","z","z","z","distance","distance","z","distance","rotation","z","z","z","distance","rotation","point","z","length","z","length","length","route_hint_point","z","route_hint_point","length","distance","distance","distance","z","distance","distance","z","distance","distance","layer_ref","route_hint_point","z","z","z"]}
|
|
1
|
+
{"version":3,"sources":["../lib/typecheck.ts","../lib/common/direction.ts","../lib/common/portHints.ts","../lib/common/layout.ts","../lib/common/cadModel.ts","../lib/common/point3.ts","../lib/common/footprintProp.ts","../lib/common/schematicOrientation.ts","../lib/common/schematicPinDefinitions.ts","../lib/common/schematicPinStyle.ts","../lib/components/board.ts","../lib/common/point.ts","../lib/components/group.ts","../lib/manual-edits/manual-edit-events/base_manual_edit_event.ts","../lib/manual-edits/manual-edit-events/edit_pcb_component_location_event.ts","../lib/manual-edits/manual-edit-events/edit_trace_hint_event.ts","../lib/manual-edits/manual-edit-events/edit_schematic_component_location_event.ts","../lib/manual-edits/manual-edit-events/edit_pcb_group_location_event.ts","../lib/manual-edits/manual-edit-events/edit_schematic_group_location_event.ts","../lib/manual-edits/manual_edit_event.ts","../lib/manual-edits/manual_edits_file.ts","../lib/manual-edits/manual_pcb_placement.ts","../lib/manual-edits/manual_trace_hint.ts","../lib/manual-edits/manual_schematic_placement.ts","../lib/components/breakout.ts","../lib/components/chip.ts","../lib/components/jumper.ts","../lib/common/connectionsProp.ts","../lib/components/solderjumper.ts","../lib/components/connector.ts","../lib/components/fuse.ts","../lib/components/platedhole.ts","../lib/components/resistor.ts","../lib/components/potentiometer.ts","../lib/components/crystal.ts","../lib/components/resonator.ts","../lib/components/stampboard.ts","../lib/components/capacitor.ts","../lib/components/net.ts","../lib/components/constrainedlayout.ts","../lib/common/distance.ts","../lib/components/constraint.ts","../lib/components/cutout.ts","../lib/components/smtpad.ts","../lib/components/solderpaste.ts","../lib/components/hole.ts","../lib/components/trace.ts","../lib/components/footprint.ts","../lib/components/battery.ts","../lib/components/pin-header.ts","../lib/components/netalias.ts","../lib/components/netlabel.ts","../lib/components/push-button.ts","../lib/components/subcircuit.ts","../lib/components/transistor.ts","../lib/components/mosfet.ts","../lib/components/inductor.ts","../lib/components/diode.ts","../lib/components/led.ts","../lib/components/switch.ts","../lib/components/fabrication-note-text.ts","../lib/components/fabrication-note-path.ts","../lib/components/pcb-trace.ts","../lib/components/via.ts","../lib/components/testpoint.ts","../lib/components/breakoutpoint.ts","../lib/components/pcb-keepout.ts","../lib/components/power-source.ts","../lib/components/schematic-box.ts","../lib/common/ninePointAnchor.ts","../lib/components/schematic-line.ts","../lib/components/schematic-text.ts","../lib/common/fivePointAnchor.ts","../lib/components/schematic-path.ts","../lib/components/silkscreen-text.ts","../lib/components/silkscreen-path.ts","../lib/components/silkscreen-line.ts","../lib/components/silkscreen-rect.ts","../lib/components/silkscreen-circle.ts","../lib/components/trace-hint.ts","../lib/components/port.ts","../lib/platformConfig.ts"],"sourcesContent":["import type { TypeEqual } from \"ts-expect\"\n\ntype IsNever<T> = [T] extends [never] ? true : false\n\ntype GetMismatchedProps<T1, T2> = {\n [K in keyof T1 & keyof T2]: T1[K] extends T2[K]\n ? T2[K] extends T1[K]\n ? never\n : K\n : K\n}[keyof T1 & keyof T2]\n\nexport const expectTypesMatch = <\n const T1,\n const T2,\n T3 = Exclude<keyof T1, keyof T2>,\n T4 = Exclude<keyof T2, keyof T1>,\n T5 = GetMismatchedProps<T1, T2>,\n>(\n shouldBe: IsNever<T3> extends true\n ? IsNever<T4> extends true\n ? IsNever<T5> extends true\n ? TypeEqual<T1, T2>\n : `property ${T5 extends string ? T5 : \"\"} has mismatched types`\n : `extra props ${T4 extends string ? T4 : \"\"}`\n : `missing props ${T3 extends string ? T3 : \"\"}`,\n): void => {}\n\n// ------ TESTS -------\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n b: number\n }\n>(\"extra props b\")\n\nexpectTypesMatch<\n {\n a: number\n b: number\n },\n {\n a: number\n }\n>(\"missing props b\")\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: number\n }\n>(true)\n\nexpectTypesMatch<\n {\n a: number\n },\n {\n a: string\n }\n>(\"property a has mismatched types\")\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nexport const direction = z.enum([\"up\", \"down\", \"left\", \"right\"])\nexport type Direction = \"up\" | \"down\" | \"left\" | \"right\"\n\nexport type DirectionAlongEdge =\n | \"top-to-bottom\"\n | \"left-to-right\"\n | \"bottom-to-top\"\n | \"right-to-left\"\n\nexport const directionAlongEdge = z.enum([\n \"top-to-bottom\",\n \"left-to-right\",\n \"bottom-to-top\",\n \"right-to-left\",\n])\n\nexpectTypesMatch<Direction, z.infer<typeof direction>>(true)\nexpectTypesMatch<DirectionAlongEdge, z.infer<typeof directionAlongEdge>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const portHints = z.array(z.string().or(z.number()))\nexport type PortHints = (string | number)[]\n\nexpectTypesMatch<PortHints, z.infer<typeof portHints>>(true)\n","import {\n type LayerRefInput,\n distance,\n layer_ref,\n rotation,\n supplier_name,\n} from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { type CadModelProp, cadModelProp } from \"./cadModel\"\nimport { type FootprintProp, footprintProp } from \"./footprintProp\"\n\nexport interface PcbLayoutProps {\n pcbX?: string | number\n pcbY?: string | number\n pcbRotation?: string | number\n layer?: LayerRefInput\n}\n\nexport interface CommonLayoutProps {\n pcbX?: string | number\n pcbY?: string | number\n pcbRotation?: string | number\n\n schX?: string | number\n schY?: string | number\n schRotation?: string | number\n\n layer?: LayerRefInput\n footprint?: FootprintProp\n}\n\nexport const pcbLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n layer: layer_ref.optional(),\n})\ntype InferredPcbLayoutProps = z.input<typeof pcbLayoutProps>\nexpectTypesMatch<PcbLayoutProps, InferredPcbLayoutProps>(true)\n\nexport const commonLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n layer: layer_ref.optional(),\n footprint: footprintProp.optional(),\n})\n\ntype InferredCommonLayoutProps = z.input<typeof commonLayoutProps>\nexpectTypesMatch<CommonLayoutProps, InferredCommonLayoutProps>(true)\n\nexport type SupplierName =\n | \"jlcpcb\"\n | \"macrofab\"\n | \"pcbway\"\n | \"digikey\"\n | \"mouser\"\n | \"lcsc\"\nexport type SupplierPartNumbers = { [k in SupplierName]?: string[] }\nexport interface SupplierProps {\n supplierPartNumbers?: SupplierPartNumbers\n}\nexport const supplierProps = z.object({\n supplierPartNumbers: z.record(supplier_name, z.array(z.string())).optional(),\n})\n\nexpectTypesMatch<SupplierProps, z.input<typeof supplierProps>>(true)\n\nexport interface CommonComponentProps extends CommonLayoutProps {\n key?: any\n name: string\n supplierPartNumbers?: SupplierPartNumbers\n cadModel?: CadModelProp\n children?: any\n symbolName?: string\n doNotPlace?: boolean\n}\n\nexport const commonComponentProps = commonLayoutProps\n .merge(supplierProps)\n .extend({\n key: z.any().optional(),\n name: z.string(),\n cadModel: cadModelProp.optional(),\n children: z.any().optional(),\n symbolName: z.string().optional(),\n doNotPlace: z.boolean().optional(),\n })\n\ntype InferredCommonComponentProps = z.input<typeof commonComponentProps>\nexpectTypesMatch<CommonComponentProps, InferredCommonComponentProps>(true)\n\nexport const componentProps = commonComponentProps\nexport type ComponentProps = z.input<typeof componentProps>\n\nexport const lrPins = [\"pin1\", \"left\", \"pin2\", \"right\"] as const\nexport const lrPolarPins = [\n \"pin1\",\n \"left\",\n \"anode\",\n \"pos\",\n \"pin2\",\n \"right\",\n \"cathode\",\n \"neg\",\n] as const\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n","import { z } from \"zod\"\nimport { point3 } from \"./point3\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const rotationPoint3 = z.object({\n x: z.union([z.number(), z.string()]),\n y: z.union([z.number(), z.string()]),\n z: z.union([z.number(), z.string()]),\n})\n\nexport interface CadModelBase {\n rotationOffset?:\n | number\n | { x: number | string; y: number | string; z: number | string }\n positionOffset?: {\n x: number | string\n y: number | string\n z: number | string\n }\n size?: { x: number | string; y: number | string; z: number | string }\n}\n\nexport const cadModelBase = z.object({\n rotationOffset: z.number().or(rotationPoint3).optional(),\n positionOffset: point3.optional(),\n size: point3.optional(),\n})\n\nexpectTypesMatch<CadModelBase, z.input<typeof cadModelBase>>(true)\n\nexport interface CadModelStl extends CadModelBase {\n stlUrl: string\n}\nexport const cadModelStl = cadModelBase.extend({\n stlUrl: z.string(),\n})\n\nexport interface CadModelObj extends CadModelBase {\n objUrl: string\n mtlUrl?: string\n}\nexport const cadModelObj = cadModelBase.extend({\n objUrl: z.string(),\n mtlUrl: z.string().optional(),\n})\n\nexport interface CadModelJscad extends CadModelBase {\n jscad: Record<string, any>\n}\nexport const cadModelJscad = cadModelBase.extend({\n jscad: z.record(z.any()),\n})\n\nexport type CadModelProp =\n | null\n | string\n | CadModelStl\n | CadModelObj\n | CadModelJscad\n\nexport const cadModelProp = z.union([\n z.null(),\n z.string(),\n cadModelStl,\n cadModelObj,\n cadModelJscad,\n])\n\ntype InferredCadModelProp = z.input<typeof cadModelProp>\nexpectTypesMatch<CadModelProp, InferredCadModelProp>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const point3 = z.object({\n x: distance,\n y: distance,\n z: distance,\n})\n","import type { LayerRef } from \"circuit-json\"\nimport type { ReactElement } from \"react\"\nimport { z } from \"zod\"\n\n/**\n * This is an abbreviated definition of the soup elements that you can find here:\n * https://docs.tscircuit.com/api-reference/advanced/soup#pcb-smtpad\n */\nexport type FootprintSoupElements = {\n type: \"pcb_smtpad\" | \"pcb_plated_hole\"\n x: string | number\n y: string | number\n layer?: LayerRef\n holeDiameter?: string | number\n outerDiameter?: string | number\n shape?: \"circle\" | \"rect\"\n width?: string | number\n height?: string | number\n portHints?: string[]\n}\n\nexport type FootprintProp = string | ReactElement | FootprintSoupElements[]\nexport const footprintProp = z.custom<FootprintProp>((v) => true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const schematicOrientation = z\n .enum([\n \"vertical\",\n \"horizontal\",\n \"pos_top\",\n \"pos_bottom\",\n \"pos_left\",\n \"pos_right\",\n \"neg_top\",\n \"neg_bottom\",\n \"neg_left\",\n \"neg_right\",\n ])\n .describe(\n \"horizontal means pins go 1->2 rightward and vertical means pins go 1->2 downward (generally, positive on top)\",\n )\n\nexport type SchematicOrientation =\n | \"vertical\"\n | \"horizontal\"\n | \"pos_top\"\n | \"pos_bottom\"\n | \"pos_left\"\n | \"pos_right\"\n | \"neg_top\"\n | \"neg_bottom\"\n | \"neg_left\"\n | \"neg_right\"\n\nexpectTypesMatch<SchematicOrientation, z.infer<typeof schematicOrientation>>(\n true,\n)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\n/**\n * @deprecated Use SchematicPortArrangementWithPinCounts instead.\n */\nexport interface SchematicPortArrangementWithSizes {\n leftSize?: number\n topSize?: number\n rightSize?: number\n bottomSize?: number\n}\n\n/**\n * Specifies the number of pins on each side of the schematic box component.\n */\nexport interface SchematicPortArrangementWithPinCounts {\n leftPinCount?: number\n topPinCount?: number\n rightPinCount?: number\n bottomPinCount?: number\n}\n\nexport interface PinSideDefinition {\n pins: Array<number | string>\n direction:\n | \"top-to-bottom\"\n | \"left-to-right\"\n | \"bottom-to-top\"\n | \"right-to-left\"\n}\n\nexport interface SchematicPortArrangementWithSides {\n leftSide?: PinSideDefinition\n topSide?: PinSideDefinition\n rightSide?: PinSideDefinition\n bottomSide?: PinSideDefinition\n}\n\nexport interface SchematicPortArrangement\n extends SchematicPortArrangementWithSizes,\n SchematicPortArrangementWithSides,\n SchematicPortArrangementWithPinCounts {}\n\nexport type SchematicPinArrangement = SchematicPortArrangement\nexport type SchematicPinArrangementWithSizes = SchematicPortArrangementWithSizes\nexport type SchematicPinArrangementWithSides = SchematicPortArrangementWithSides\nexport type SchematicPinArrangementWithPinCounts =\n SchematicPortArrangementWithPinCounts\n\nexport const explicitPinSideDefinition = z.object({\n pins: z.array(z.union([z.number(), z.string()])),\n direction: z.union([\n z.literal(\"top-to-bottom\"),\n z.literal(\"left-to-right\"),\n z.literal(\"bottom-to-top\"),\n z.literal(\"right-to-left\"),\n ]),\n})\n\n/**\n * @deprecated Use schematicPinArrangement instead.\n */\nexport const schematicPortArrangement = z.object({\n leftSize: z.number().optional().describe(\"@deprecated, use leftPinCount\"),\n topSize: z.number().optional().describe(\"@deprecated, use topPinCount\"),\n rightSize: z.number().optional().describe(\"@deprecated, use rightPinCount\"),\n bottomSize: z.number().optional().describe(\"@deprecated, use bottomPinCount\"),\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n leftSide: explicitPinSideDefinition.optional(),\n rightSide: explicitPinSideDefinition.optional(),\n topSide: explicitPinSideDefinition.optional(),\n bottomSide: explicitPinSideDefinition.optional(),\n})\n\nexport const schematicPinArrangement = schematicPortArrangement\n\nexpectTypesMatch<\n SchematicPortArrangement,\n z.input<typeof schematicPortArrangement>\n>(true)\n","import { distance } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type SchematicPinStyle = Record<\n string,\n {\n marginTop?: number | string\n marginRight?: number | string\n marginBottom?: number | string\n marginLeft?: number | string\n\n /** @deprecated use marginLeft */\n leftMargin?: number | string\n /** @deprecated use marginRight */\n rightMargin?: number | string\n /** @deprecated use marginTop */\n topMargin?: number | string\n /** @deprecated use marginBottom */\n bottomMargin?: number | string\n }\n>\n\nexport const schematicPinStyle = z.record(\n z.object({\n marginLeft: distance.optional(),\n marginRight: distance.optional(),\n marginTop: distance.optional(),\n marginBottom: distance.optional(),\n\n leftMargin: distance.optional(),\n rightMargin: distance.optional(),\n topMargin: distance.optional(),\n bottomMargin: distance.optional(),\n }),\n)\n\nexpectTypesMatch<SchematicPinStyle, z.input<typeof schematicPinStyle>>(true)\n","import type { LayoutBuilder, ManualEditFile } from \"@tscircuit/layout\"\nimport { distance } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport { type Point, point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { subcircuitGroupProps, type SubcircuitGroupProps } from \"./group\"\n\nexport interface BoardProps extends Omit<SubcircuitGroupProps, \"subcircuit\"> {\n width?: number | string\n height?: number | string\n outline?: Point[]\n outlineOffsetX?: number | string\n outlineOffsetY?: number | string\n material?: \"fr4\" | \"fr1\"\n}\n\nexport const boardProps = subcircuitGroupProps.extend({\n width: distance.optional(),\n height: distance.optional(),\n outline: z.array(point).optional(),\n outlineOffsetX: distance.optional(),\n outlineOffsetY: distance.optional(),\n material: z.enum([\"fr4\", \"fr1\"]).default(\"fr4\"),\n})\n\ntype InferredBoardProps = z.input<typeof boardProps>\nexpectTypesMatch<BoardProps, InferredBoardProps>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const point = z.object({\n x: distance,\n y: distance,\n})\n\nexport type Point = { x: number | string; y: number | string }\n","import type { LayoutBuilder } from \"@tscircuit/layout\"\nimport { layer_ref, length } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport {\n type CommonLayoutProps,\n commonLayoutProps,\n type SupplierPartNumbers,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport type { AnySourceComponent, PcbTrace } from \"circuit-json\"\nimport {\n manual_edits_file,\n type ManualEditsFile,\n type ManualEditsFileInput,\n} from \"lib/manual-edits\"\n\nexport const layoutConfig = z.object({\n layoutMode: z.enum([\"grid\", \"flex\", \"match-adapt\", \"none\"]).optional(),\n position: z.enum([\"absolute\", \"relative\"]).optional(),\n\n grid: z.boolean().optional(),\n gridCols: z.number().or(z.string()).optional(),\n gridRows: z.number().or(z.string()).optional(),\n gridTemplateRows: z.string().optional(),\n gridTemplateColumns: z.string().optional(),\n gridTemplate: z.string().optional(),\n gridGap: z.number().or(z.string()).optional(),\n\n flex: z.boolean().or(z.string()).optional(),\n flexDirection: z.enum([\"row\", \"column\"]).optional(),\n alignItems: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n justifyContent: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n flexRow: z.boolean().optional(),\n flexColumn: z.boolean().optional(),\n gap: z.number().or(z.string()).optional(),\n\n padding: length.optional(),\n paddingLeft: length.optional(),\n paddingRight: length.optional(),\n paddingTop: length.optional(),\n paddingBottom: length.optional(),\n paddingX: length.optional(),\n paddingY: length.optional(),\n\n width: length.optional(),\n height: length.optional(),\n\n matchAdapt: z.boolean().optional(),\n matchAdaptTemplate: z.any().optional(),\n})\n\nexport interface LayoutConfig {\n layoutMode?: \"grid\" | \"flex\" | \"match-adapt\" | \"none\"\n position?: \"absolute\" | \"relative\"\n\n grid?: boolean\n gridCols?: number | string\n gridRows?: number | string\n gridTemplateRows?: string\n gridTemplateColumns?: string\n gridTemplate?: string\n gridGap?: number | string\n\n flex?: boolean | string\n flexDirection?: \"row\" | \"column\"\n alignItems?: \"start\" | \"center\" | \"end\" | \"stretch\"\n justifyContent?: \"start\" | \"center\" | \"end\" | \"stretch\"\n flexRow?: boolean\n flexColumn?: boolean\n gap?: number | string\n\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n paddingX?: Distance\n paddingY?: Distance\n\n width?: Distance\n height?: Distance\n\n matchAdapt?: boolean\n matchAdaptTemplate?: any\n}\n\nexpectTypesMatch<LayoutConfig, z.input<typeof layoutConfig>>(true)\n\nexport interface Border {\n strokeWidth?: Distance\n dashed?: boolean\n solid?: boolean\n}\n\nexport const border = z.object({\n strokeWidth: length.optional(),\n dashed: z.boolean().optional(),\n solid: z.boolean().optional(),\n})\n\nexport interface BaseGroupProps extends CommonLayoutProps, LayoutConfig {\n name?: string\n key?: any\n children?: any\n\n pcbWidth?: Distance\n pcbHeight?: Distance\n schWidth?: Distance\n schHeight?: Distance\n\n pcbLayout?: LayoutConfig\n schLayout?: LayoutConfig\n cellBorder?: Border | null\n border?: Border | null\n schPadding?: Distance\n schPaddingLeft?: Distance\n schPaddingRight?: Distance\n schPaddingTop?: Distance\n schPaddingBottom?: Distance\n}\n\nexport type PartsEngine = {\n findPart: (params: {\n sourceComponent: AnySourceComponent\n footprinterString?: string\n }) => Promise<SupplierPartNumbers> | SupplierPartNumbers\n}\n\nexport interface PcbRouteCache {\n pcbTraces: PcbTrace[]\n cacheKey: string\n}\n\nexport interface AutorouterConfig {\n serverUrl?: string\n inputFormat?: \"simplified\" | \"circuit-json\"\n serverMode?: \"job\" | \"solve-endpoint\"\n serverCacheEnabled?: boolean\n cache?: PcbRouteCache\n groupMode?: \"sequential-trace\" | \"subcircuit\"\n local?: boolean\n algorithmFn?: (simpleRouteJson: any) => Promise<any>\n}\n\nexport type AutorouterProp =\n | AutorouterConfig\n | \"sequential-trace\"\n | \"subcircuit\"\n | \"auto\"\n | \"auto-local\"\n | \"auto-cloud\"\n\nexport const autorouterConfig = z.object({\n serverUrl: z.string().optional(),\n inputFormat: z.enum([\"simplified\", \"circuit-json\"]).optional(),\n serverMode: z.enum([\"job\", \"solve-endpoint\"]).optional(),\n serverCacheEnabled: z.boolean().optional(),\n cache: z.custom<PcbRouteCache>((v) => true).optional(),\n groupMode: z.enum([\"sequential-trace\", \"subcircuit\"]).optional(),\n algorithmFn: z\n .custom<(simpleRouteJson: any) => Promise<any>>(\n (v) => typeof v === \"function\" || v === undefined,\n )\n .optional(),\n local: z.boolean().optional(),\n})\n\nexport const autorouterProp = z.union([\n autorouterConfig,\n z.literal(\"sequential-trace\"),\n z.literal(\"subcircuit\"),\n z.literal(\"auto\"),\n z.literal(\"auto-local\"),\n z.literal(\"auto-cloud\"),\n])\n\nexport interface SubcircuitGroupProps extends BaseGroupProps {\n layout?: LayoutBuilder\n manualEdits?: ManualEditsFileInput\n routingDisabled?: boolean\n defaultTraceWidth?: Distance\n minTraceWidth?: Distance\n pcbRouteCache?: PcbRouteCache\n\n autorouter?: AutorouterProp\n\n /**\n * If true, we'll automatically layout the schematic for this group. Must be\n * a subcircuit (currently). This is eventually going to be replaced with more\n * sophisticated layout options/modes and will be enabled by default.\n */\n schAutoLayoutEnabled?: boolean\n\n /**\n * If true, net labels will automatically be created for complex traces\n */\n schTraceAutoLabelEnabled?: boolean\n\n partsEngine?: PartsEngine\n}\n\nexport interface SubcircuitGroupPropsWithBool extends SubcircuitGroupProps {\n subcircuit: true\n}\n\nexport interface NonSubcircuitGroupProps extends BaseGroupProps {\n subcircuit?: false | undefined\n}\n\nexport type GroupProps = SubcircuitGroupPropsWithBool | NonSubcircuitGroupProps\n\nexport const baseGroupProps = commonLayoutProps.extend({\n name: z.string().optional(),\n children: z.any().optional(),\n key: z.any().optional(),\n\n ...layoutConfig.shape,\n pcbWidth: length.optional(),\n pcbHeight: length.optional(),\n schWidth: length.optional(),\n schHeight: length.optional(),\n pcbLayout: layoutConfig.optional(),\n schLayout: layoutConfig.optional(),\n cellBorder: border.nullable().optional(),\n border: border.nullable().optional(),\n schPadding: length.optional(),\n schPaddingLeft: length.optional(),\n schPaddingRight: length.optional(),\n schPaddingTop: length.optional(),\n schPaddingBottom: length.optional(),\n})\n\nexport const partsEngine = z.custom<PartsEngine>((v) => \"findPart\" in v)\n\nexport const subcircuitGroupProps = baseGroupProps.extend({\n layout: z.custom<LayoutBuilder>((v) => true).optional(),\n manualEdits: manual_edits_file.optional(),\n schAutoLayoutEnabled: z.boolean().optional(),\n schTraceAutoLabelEnabled: z.boolean().optional(),\n routingDisabled: z.boolean().optional(),\n defaultTraceWidth: length.optional(),\n minTraceWidth: length.optional(),\n partsEngine: partsEngine.optional(),\n pcbRouteCache: z.custom<PcbRouteCache>((v) => true).optional(),\n autorouter: autorouterProp.optional(),\n})\n\nexport const subcircuitGroupPropsWithBool = subcircuitGroupProps.extend({\n subcircuit: z.literal(true),\n})\n\nexport const groupProps = z.discriminatedUnion(\"subcircuit\", [\n baseGroupProps.extend({ subcircuit: z.literal(false).optional() }),\n subcircuitGroupPropsWithBool,\n])\n\ntype InferredBaseGroupProps = z.input<typeof baseGroupProps>\ntype InferredSubcircuitGroupPropsWithBool = z.input<\n typeof subcircuitGroupPropsWithBool\n>\n\nexpectTypesMatch<BaseGroupProps, InferredBaseGroupProps>(true)\nexpectTypesMatch<\n SubcircuitGroupPropsWithBool,\n InferredSubcircuitGroupPropsWithBool\n>(true)\n\ntype InferredGroupProps = z.input<typeof groupProps>\nexpectTypesMatch<GroupProps, InferredGroupProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport const base_manual_edit_event = z.object({\n edit_event_id: z.string(),\n in_progress: z.boolean().optional(),\n created_at: z.number(),\n})\n\nexport interface BaseManualEditEvent {\n edit_event_id: string\n in_progress?: boolean\n created_at: number\n}\n\nexport type BaseManualEditEventInput = z.input<typeof base_manual_edit_event>\n\nexpectTypesMatch<BaseManualEditEvent, z.infer<typeof base_manual_edit_event>>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_pcb_component_location_event = base_manual_edit_event.extend({\n pcb_edit_event_type: z\n .literal(\"edit_component_location\")\n .describe(\"deprecated\"),\n edit_event_type: z.literal(\"edit_pcb_component_location\"),\n pcb_component_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n})\n\n/** @deprecated use edit_pcb_component_location_event instead */\nexport const edit_component_location_event = edit_pcb_component_location_event\n\nexport interface EditPcbComponentLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_pcb_component_location\"\n /** @deprecated */\n pcb_edit_event_type: \"edit_component_location\"\n pcb_component_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditPcbComponentLocationEventInput = z.input<\n typeof edit_pcb_component_location_event\n>\n\nexpectTypesMatch<\n EditPcbComponentLocationEvent,\n z.infer<typeof edit_pcb_component_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_trace_hint_event = base_manual_edit_event.extend({\n pcb_edit_event_type: z.literal(\"edit_trace_hint\").describe(\"deprecated\"),\n edit_event_type: z.literal(\"edit_pcb_trace_hint\").optional(),\n pcb_port_id: z.string(),\n pcb_trace_hint_id: z.string().optional(),\n route: z.array(\n z.object({ x: z.number(), y: z.number(), via: z.boolean().optional() }),\n ),\n})\n\nexport interface EditTraceHintEvent extends BaseManualEditEvent {\n /** @deprecated */\n pcb_edit_event_type: \"edit_trace_hint\"\n edit_event_type?: \"edit_pcb_trace_hint\"\n pcb_port_id: string\n pcb_trace_hint_id?: string\n route: Array<{ x: number; y: number; via?: boolean }>\n}\n\nexport type EditTraceHintEventInput = z.input<typeof edit_trace_hint_event>\n\nexpectTypesMatch<EditTraceHintEvent, z.infer<typeof edit_trace_hint_event>>(\n true,\n)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_schematic_component_location_event =\n base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_schematic_component_location\"),\n schematic_component_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n })\n\nexport interface EditSchematicComponentLocationEvent\n extends BaseManualEditEvent {\n edit_event_type: \"edit_schematic_component_location\"\n schematic_component_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditSchematicComponentLocationEventInput = z.input<\n typeof edit_schematic_component_location_event\n>\n\nexpectTypesMatch<\n EditSchematicComponentLocationEvent,\n z.infer<typeof edit_schematic_component_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_pcb_group_location_event = base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_pcb_group_location\"),\n pcb_group_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n})\n\nexport interface EditPcbGroupLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_pcb_group_location\"\n pcb_group_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditPcbGroupLocationEventInput = z.input<\n typeof edit_pcb_group_location_event\n>\n\nexpectTypesMatch<\n EditPcbGroupLocationEvent,\n z.infer<typeof edit_pcb_group_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n base_manual_edit_event,\n type BaseManualEditEvent,\n} from \"./base_manual_edit_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const edit_schematic_group_location_event =\n base_manual_edit_event.extend({\n edit_event_type: z.literal(\"edit_schematic_group_location\"),\n schematic_group_id: z.string(),\n original_center: z.object({ x: z.number(), y: z.number() }),\n new_center: z.object({ x: z.number(), y: z.number() }),\n })\n\nexport interface EditSchematicGroupLocationEvent extends BaseManualEditEvent {\n edit_event_type: \"edit_schematic_group_location\"\n schematic_group_id: string\n original_center: { x: number; y: number }\n new_center: { x: number; y: number }\n}\n\nexport type EditSchematicGroupLocationEventInput = z.input<\n typeof edit_schematic_group_location_event\n>\n\nexpectTypesMatch<\n EditSchematicGroupLocationEvent,\n z.infer<typeof edit_schematic_group_location_event>\n>(true)\n","import { z } from \"zod\"\nimport {\n edit_pcb_component_location_event,\n type EditPcbComponentLocationEvent,\n} from \"./manual-edit-events/edit_pcb_component_location_event\"\nimport {\n edit_schematic_component_location_event,\n type EditSchematicComponentLocationEvent,\n} from \"./manual-edit-events/edit_schematic_component_location_event\"\nimport {\n edit_trace_hint_event,\n type EditTraceHintEvent,\n} from \"./manual-edit-events/edit_trace_hint_event\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type ManualEditEvent =\n | EditPcbComponentLocationEvent\n | EditTraceHintEvent\n | EditSchematicComponentLocationEvent\n\nexport const manual_edit_event = z.union([\n edit_pcb_component_location_event,\n edit_trace_hint_event,\n edit_schematic_component_location_event,\n])\n\nexport type ManualEditEventInput = z.input<typeof manual_edit_event>\ntype InferredManualEditEvent = z.infer<typeof manual_edit_event>\n\nexpectTypesMatch<ManualEditEvent, InferredManualEditEvent>(true)\n","import { z } from \"zod\"\nimport {\n manual_pcb_placement,\n type ManualPcbPlacement,\n} from \"./manual_pcb_placement\"\nimport { manual_edit_event } from \"./manual_edit_event\"\nimport { manual_trace_hint, type ManualTraceHint } from \"./manual_trace_hint\"\nimport {\n manual_schematic_placement,\n type ManualSchematicPlacement,\n} from \"./manual_schematic_placement\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_edits_file = z.object({\n pcb_placements: z.array(manual_pcb_placement).optional(),\n manual_trace_hints: z.array(manual_trace_hint).optional(),\n schematic_placements: z.array(manual_schematic_placement).optional(),\n})\n\nexport interface ManualEditsFile {\n pcb_placements?: ManualPcbPlacement[]\n manual_trace_hints?: ManualTraceHint[]\n schematic_placements?: ManualSchematicPlacement[]\n}\n\nexport type ManualEditsFileInput = z.input<typeof manual_edits_file>\n\nexpectTypesMatch<ManualEditsFile, z.infer<typeof manual_edits_file>>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_pcb_placement = z.object({\n selector: z.string(),\n relative_to: z\n .string()\n .optional()\n .default(\"group_center\")\n .describe(\"Can be a selector or 'group_center'\"),\n center: point,\n})\n\nexport interface ManualPcbPlacement {\n selector: string\n relative_to: string\n center: Point\n}\n\nexport type ManualPcbPlacementInput = z.input<typeof manual_pcb_placement>\ntype InferredManualPcbPlacement = z.infer<typeof manual_pcb_placement>\n\nexpectTypesMatch<ManualPcbPlacement, InferredManualPcbPlacement>(true)\n","import { z } from \"zod\"\nimport { layer_ref, route_hint_point, type RouteHintPoint } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_trace_hint = z.object({\n pcb_port_selector: z.string(),\n offsets: z.array(route_hint_point),\n})\n\nexport interface ManualTraceHint {\n pcb_port_selector: string\n offsets: Array<RouteHintPoint>\n}\n\nexport type ManualTraceHintInput = z.input<typeof manual_trace_hint>\n\nexpectTypesMatch<ManualTraceHint, z.infer<typeof manual_trace_hint>>(true)\n","import { z } from \"zod\"\nimport { point, type Point } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport const manual_schematic_placement = z.object({\n selector: z.string(),\n relative_to: z\n .string()\n .optional()\n .default(\"group_center\")\n .describe(\"Can be a selector or 'group_center'\"),\n center: point,\n})\n\nexport interface ManualSchematicPlacement {\n selector: string\n relative_to: string\n center: Point\n}\n\nexport type ManualSchematicPlacementInput = z.input<\n typeof manual_schematic_placement\n>\ntype InferredManualSchematicPlacement = z.infer<\n typeof manual_schematic_placement\n>\n\nexpectTypesMatch<ManualSchematicPlacement, InferredManualSchematicPlacement>(\n true,\n)\n","import { distance } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { subcircuitGroupProps, type SubcircuitGroupProps } from \"./group\"\n\nexport interface BreakoutProps\n extends Omit<SubcircuitGroupProps, \"subcircuit\"> {\n padding?: Distance\n paddingLeft?: Distance\n paddingRight?: Distance\n paddingTop?: Distance\n paddingBottom?: Distance\n}\n\nexport const breakoutProps = subcircuitGroupProps.extend({\n padding: distance.optional(),\n paddingLeft: distance.optional(),\n paddingRight: distance.optional(),\n paddingTop: distance.optional(),\n paddingBottom: distance.optional(),\n})\n\ntype InferredBreakoutProps = z.input<typeof breakoutProps>\nexpectTypesMatch<BreakoutProps, InferredBreakoutProps>(true)\n","import { distance, supplier_name } from \"circuit-json\"\nimport type { Distance } from \"lib/common/distance\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n type SupplierPartNumbers,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement as schematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport type PinLabelsProp<\n PinNumber extends string = string,\n PinLabel extends string = string,\n> = Record<PinNumber, PinLabel | readonly PinLabel[] | PinLabel[]>\n\nexport type PinLabelFromPinLabelMap<PinLabelMap extends PinLabelsProp> =\n PinLabelMap extends PinLabelsProp<infer PinNumber, infer PinLabel>\n ? PinLabel\n : never\n\nexport interface PinCompatibleVariant {\n manufacturerPartNumber?: string\n supplierPartNumber?: SupplierPartNumbers\n}\n\nexport interface ChipPropsSU<PinLabel extends string = string>\n extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: PinLabelsProp<string, PinLabel>\n /**\n * Whether to show pin aliases in the schematic\n */\n showPinAliases?: boolean\n schPinArrangement?: SchematicPortArrangement\n /** @deprecated Use schPinArrangement instead. */\n schPortArrangement?: SchematicPortArrangement\n pinCompatibleVariants?: PinCompatibleVariant[]\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: Distance\n schWidth?: Distance\n schHeight?: Distance\n noSchematicRepresentation?: boolean\n internallyConnectedPins?: string[][]\n externallyConnectedPins?: string[][]\n connections?: Connections<PinLabel>\n}\n\nexport type ChipProps<PinLabelMap extends PinLabelsProp | string = string> =\n ChipPropsSU<\n PinLabelMap extends PinLabelsProp\n ? PinLabelFromPinLabelMap<PinLabelMap>\n : PinLabelMap\n >\n\n/**\n * Get the pin labels for a component\n *\n * const pinLabels = { pin1: \"VCC\", pin2: \"GND\", pin3: \"DATA\" } as const\n * export const MyChip = (props: ChipProps<typeof pinLabels>) => {\n * // ...\n * }\n * type MyChipPinLabels = ChipPinLabels<typeof MyChip>\n * // MyChipPinLabels is \"VCC\" | \"GND\" | \"DATA\"\n *\n */\nexport type ChipPinLabels<T extends (props: ChipProps<any>) => any> =\n T extends (props: infer Props) => any\n ? Props extends ChipProps<infer PinLabelMap>\n ? PinLabelMap extends PinLabelsProp\n ? PinLabelFromPinLabelMap<PinLabelMap>\n : PinLabelMap extends string\n ? PinLabelMap\n : never\n : never\n : never\n\n/**\n * Get the connection prop type for a component\n *\n * const pinLabels = { pin1: \"VCC\", pin2: \"GND\", pin3: \"DATA\" } as const\n * export const MyChip = (props: ChipProps<typeof pinLabels>) => {\n * // ...\n * }\n * const connections: ChipConnections<typeof MyChip> = {\n * VCC: \"...\",\n * GND: \"...\",\n * DATA: \"...\",\n * }\n *\n */\nexport type ChipConnections<T extends (props: ChipProps<any>) => any> = {\n [K in ChipPinLabels<T>]: string\n}\n\nconst connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nconst connectionsProp = z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n\nexport const pinLabelsProp = z.record(\n z.string(),\n z.string().or(z.array(z.string()).readonly()).or(z.array(z.string())),\n)\n\nexpectTypesMatch<PinLabelsProp, z.input<typeof pinLabelsProp>>(true)\n\nexport const pinCompatibleVariant = z.object({\n manufacturerPartNumber: z.string().optional(),\n supplierPartNumber: z.record(supplier_name, z.array(z.string())).optional(),\n})\n\nexport const chipProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: pinLabelsProp.optional(),\n showPinAliases: z.boolean().optional(),\n internallyConnectedPins: z.array(z.array(z.string())).optional(),\n externallyConnectedPins: z.array(z.array(z.string())).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPortArrangement: schematicPinArrangement.optional(),\n pinCompatibleVariants: z.array(pinCompatibleVariant).optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n noSchematicRepresentation: z.boolean().optional(),\n connections: connectionsProp.optional(),\n})\n\n/**\n * @deprecated Use ChipProps instead.\n */\nexport const bugProps = chipProps\nexport type InferredChipProps = z.input<typeof chipProps>\n\n// Chip props are too complex to match up with zod types, we typecheck\n// them separately in the test files\nexpectTypesMatch<InferredChipProps, ChipPropsSU<string>>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface JumperProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, string | string[]>\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: number | string\n schWidth?: number | string\n schHeight?: number | string\n schDirection?: \"left\" | \"right\"\n schPortArrangement?: SchematicPortArrangement\n /**\n * Number of pins on the jumper (2 or 3)\n */\n pinCount?: 2 | 3\n /**\n * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: string[][]\n /**\n * Connections to other components\n */\n connections?: Connections<string>\n}\n\nexport const jumperProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(z.number().or(z.string()), z.string().or(z.array(z.string())))\n .optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n schDirection: z.enum([\"left\", \"right\"]).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n pinCount: z.union([z.literal(2), z.literal(3)]).optional(),\n internallyConnectedPins: z.array(z.array(z.string())).optional(),\n connections: z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n})\n\ntype InferredJumperProps = z.input<typeof jumperProps>\nexpectTypesMatch<JumperProps, InferredJumperProps>(true)\n","import { z } from \"zod\"\n\nexport const connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nexport const createConnectionsProp = <T extends readonly [string, ...string[]]>(\n labels: T,\n) => {\n return z.record(z.enum(labels), connectionTarget)\n}\n","import { jumperProps, type JumperProps } from \"./jumper\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface SolderJumperProps extends JumperProps {\n /**\n * Pins that are bridged with solder by default\n */\n bridgedPins?: string[][]\n}\n\nexport const solderjumperProps = jumperProps.extend({\n bridgedPins: z.array(z.array(z.string())).optional(),\n})\n\ntype InferredSolderJumperProps = z.input<typeof solderjumperProps>\nexpectTypesMatch<SolderJumperProps, InferredSolderJumperProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n type SchematicPortArrangement,\n schematicPortArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ConnectorProps extends CommonComponentProps {\n manufacturerPartNumber?: string\n pinLabels?: Record<number | string, string | string[]>\n schPinStyle?: SchematicPinStyle\n schPinSpacing?: number | string\n schWidth?: number | string\n schHeight?: number | string\n schDirection?: \"left\" | \"right\"\n schPortArrangement?: SchematicPortArrangement\n /**\n * Groups of pins that are internally connected\n * e.g., [[\"1\",\"2\"], [\"2\",\"3\"]]\n */\n internallyConnectedPins?: string[][]\n /**\n * Connector standard, e.g. usb_c, m2\n */\n standard?: \"usb_c\" | \"m2\"\n}\n\nexport const connectorProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z\n .record(z.number().or(z.string()), z.string().or(z.array(z.string())))\n .optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n schDirection: z.enum([\"left\", \"right\"]).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n internallyConnectedPins: z.array(z.array(z.string())).optional(),\n standard: z.enum([\"usb_c\", \"m2\"]).optional(),\n})\n\ntype InferredConnectorProps = z.input<typeof connectorProps>\nexpectTypesMatch<ConnectorProps, InferredConnectorProps>(true)\n","import { z } from \"zod\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\n\n/**\n * Pin labels for fuse component\n */\nexport const fusePinLabels = [\"pin1\", \"pin2\"] as const\n\nexport type FusePinLabels = (typeof fusePinLabels)[number]\n\nexport interface FuseProps extends CommonComponentProps {\n /**\n * Current rating of the fuse in amperes\n */\n currentRating: number | string\n\n /**\n * Voltage rating of the fuse\n */\n voltageRating?: number | string\n\n /**\n * Whether to show ratings on schematic\n */\n schShowRatings?: boolean\n\n schOrientation?: SchematicOrientation\n\n /**\n * Connections to other components\n */\n connections?: Connections<FusePinLabels>\n}\n\n/**\n * Schema for validating fuse props\n */\nexport const fuseProps = commonComponentProps.extend({\n currentRating: z.union([z.number(), z.string()]),\n voltageRating: z.union([z.number(), z.string()]).optional(),\n schShowRatings: z.boolean().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: z\n .record(\n z.string(),\n z.union([\n z.string(),\n z.array(z.string()).readonly(),\n z.array(z.string()),\n ]),\n )\n .optional(),\n})\n\nexport type InferredFuseProps = z.input<typeof fuseProps>\n","import { distance } from \"circuit-json\"\nimport type { PcbLayoutProps } from \"lib/common/layout\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { type PortHints, portHints } from \"lib/common/portHints\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface CirclePlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"circle\"\n holeDiameter: number | string\n outerDiameter: number | string\n portHints?: PortHints\n}\n\nexport interface OvalPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"oval\"\n outerWidth: number | string\n outerHeight: number | string\n holeWidth: number | string\n holeHeight: number | string\n portHints?: PortHints\n\n /** @deprecated use holeWidth */\n innerWidth?: number | string\n /** @deprecated use holeHeight */\n innerHeight?: number | string\n}\n\nexport interface PillPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"pill\"\n outerWidth: number | string\n outerHeight: number | string\n holeWidth: number | string\n holeHeight: number | string\n\n /** @deprecated use holeWidth */\n innerWidth?: number | string\n /** @deprecated use holeHeight */\n innerHeight?: number | string\n\n portHints?: PortHints\n}\n\nexport interface CircularHoleWithRectPlatedProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"circular_hole_with_rect_pad\"\n holeDiameter: number | string\n rectPadWidth: number | string\n rectPadHeight: number | string\n holeShape?: \"circle\"\n padShape?: \"rect\"\n portHints?: PortHints\n}\n\nexport interface PillWithRectPadPlatedHoleProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n name?: string\n connectsTo?: string | string[]\n shape: \"pill_hole_with_rect_pad\"\n holeShape: \"pill\"\n padShape: \"rect\"\n holeWidth: number | string\n holeHeight: number | string\n rectPadWidth: number | string\n rectPadHeight: number | string\n portHints?: PortHints\n}\n\nexport type PlatedHoleProps =\n | CirclePlatedHoleProps\n | OvalPlatedHoleProps\n | PillPlatedHoleProps\n | CircularHoleWithRectPlatedProps\n | PillWithRectPadPlatedHoleProps\n\nconst distanceHiddenUndefined = z\n .custom<z.input<typeof distance>>()\n .transform((a) => {\n if (a === undefined) return undefined\n return distance.parse(a)\n })\n\nexport const platedHoleProps = z\n .discriminatedUnion(\"shape\", [\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"circle\"),\n holeDiameter: distance,\n outerDiameter: distance,\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"oval\"),\n outerWidth: distance,\n outerHeight: distance,\n holeWidth: distanceHiddenUndefined,\n holeHeight: distanceHiddenUndefined,\n innerWidth: distance.optional().describe(\"DEPRECATED use holeWidth\"),\n innerHeight: distance.optional().describe(\"DEPRECATED use holeHeight\"),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"pill\"),\n outerWidth: distance,\n outerHeight: distance,\n holeWidth: distanceHiddenUndefined,\n holeHeight: distanceHiddenUndefined,\n innerWidth: distance.optional().describe(\"DEPRECATED use holeWidth\"),\n innerHeight: distance.optional().describe(\"DEPRECATED use holeHeight\"),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"circular_hole_with_rect_pad\"),\n holeDiameter: distance,\n rectPadWidth: distance,\n rectPadHeight: distance,\n holeShape: z.literal(\"circle\").optional(),\n padShape: z.literal(\"rect\").optional(),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n name: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n shape: z.literal(\"pill_hole_with_rect_pad\"),\n holeShape: z.literal(\"pill\"),\n padShape: z.literal(\"rect\"),\n holeWidth: distance,\n holeHeight: distance,\n rectPadWidth: distance,\n rectPadHeight: distance,\n portHints: portHints.optional(),\n }),\n ])\n .refine((a) => {\n if (\"innerWidth\" in a && a.innerWidth !== undefined) {\n a.holeWidth ??= a.innerWidth\n }\n if (\"innerHeight\" in a && a.innerHeight !== undefined) {\n a.holeHeight ??= a.innerHeight\n }\n return a\n })\n\ntype InferredPlatedHoleProps = z.input<typeof platedHoleProps>\n\nexpectTypesMatch<PlatedHoleProps, InferredPlatedHoleProps>(true)\n","import { resistance } from \"circuit-json\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport const resistorPinLabels = [\"pin1\", \"pin2\", \"pos\", \"neg\"] as const\nexport type ResistorPinLabels = (typeof resistorPinLabels)[number]\n\nexport interface ResistorProps extends CommonComponentProps {\n resistance: number | string\n pullupFor?: string\n pullupTo?: string\n pulldownFor?: string\n pulldownTo?: string\n schOrientation?: SchematicOrientation\n connections?: Connections<ResistorPinLabels>\n}\n\nexport const resistorProps = commonComponentProps.extend({\n resistance,\n\n pullupFor: z.string().optional(),\n pullupTo: z.string().optional(),\n\n pulldownFor: z.string().optional(),\n pulldownTo: z.string().optional(),\n\n schOrientation: schematicOrientation.optional(),\n\n connections: createConnectionsProp(resistorPinLabels).optional(),\n})\nexport const resistorPins = lrPins\n\ntype InferredResistorProps = z.input<typeof resistorProps>\nexpectTypesMatch<ResistorProps, InferredResistorProps>(true)\n","import { resistance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type PotentiometerPinVariant = \"two_pin\" | \"three_pin\"\n\nexport interface PotentiometerProps extends CommonComponentProps {\n maxResistance: number | string\n pinVariant?: PotentiometerPinVariant\n}\n\nexport const potentiometerProps = commonComponentProps.extend({\n maxResistance: resistance,\n pinVariant: z.enum([\"two_pin\", \"three_pin\"]).optional(),\n})\n\ntype InferredPotentiometerProps = z.input<typeof potentiometerProps>\nexpectTypesMatch<PotentiometerProps, InferredPotentiometerProps>(true)\n","import { frequency, capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type PinVariant = \"two_pin\" | \"four_pin\"\n\nexport interface CrystalProps extends CommonComponentProps {\n frequency: number | string\n loadCapacitance: number | string\n pinVariant?: PinVariant\n schOrientation?: SchematicOrientation\n}\n\nexport const crystalProps = commonComponentProps.extend({\n frequency: frequency,\n loadCapacitance: capacitance,\n pinVariant: z.enum([\"two_pin\", \"four_pin\"]).optional(),\n schOrientation: schematicOrientation.optional(),\n})\nexport const crystalPins = lrPins\n\ntype InferredCrystalProps = z.input<typeof crystalProps>\nexpectTypesMatch<CrystalProps, InferredCrystalProps>(true)\n","import { frequency, capacitance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport type ResonatorPinVariant = \"no_ground\" | \"ground_pin\" | \"two_ground_pins\"\n\nexport interface ResonatorProps extends CommonComponentProps {\n frequency: number | string\n loadCapacitance: number | string\n pinVariant?: ResonatorPinVariant\n}\n\nexport const resonatorProps = commonComponentProps.extend({\n frequency: frequency,\n loadCapacitance: capacitance,\n pinVariant: z.enum([\"no_ground\", \"ground_pin\", \"two_ground_pins\"]).optional(),\n})\n\ntype InferredResonatorProps = z.input<typeof resonatorProps>\nexpectTypesMatch<ResonatorProps, InferredResonatorProps>(true)\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { boardProps, type BoardProps } from \"lib/components/board\"\n\nexport interface StampboardProps extends BoardProps {\n leftPinCount?: number\n rightPinCount?: number\n topPinCount?: number\n bottomPinCount?: number\n leftPins?: string[]\n rightPins?: string[]\n topPins?: string[]\n bottomPins?: string[]\n pinPitch?: number | string\n innerHoles?: boolean\n}\n\nexport const stampboardProps = boardProps.extend({\n leftPinCount: z.number().optional(),\n rightPinCount: z.number().optional(),\n topPinCount: z.number().optional(),\n bottomPinCount: z.number().optional(),\n leftPins: z.array(z.string()).optional(),\n rightPins: z.array(z.string()).optional(),\n topPins: z.array(z.string()).optional(),\n bottomPins: z.array(z.string()).optional(),\n pinPitch: distance.optional(),\n innerHoles: z.boolean().optional(),\n})\n\ntype InferredStampboardProps = z.input<typeof stampboardProps>\nexpectTypesMatch<StampboardProps, InferredStampboardProps>(true)\n","import { capacitance, voltage } from \"circuit-json\"\nimport { createConnectionsProp } from \"lib/common/connectionsProp\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { z } from \"zod\"\n\nexport const capacitorPinLabels = [\n \"pin1\",\n \"pin2\",\n \"pos\",\n \"neg\",\n \"anode\",\n \"cathode\",\n] as const\nexport type CapacitorPinLabels = (typeof capacitorPinLabels)[number]\n\nexport interface CapacitorProps extends CommonComponentProps {\n capacitance: number | string\n maxVoltageRating?: number | string\n schShowRatings?: boolean\n polarized?: boolean\n decouplingFor?: string\n decouplingTo?: string\n bypassFor?: string\n bypassTo?: string\n maxDecouplingTraceLength?: number\n schOrientation?: SchematicOrientation\n connections?: Connections<CapacitorPinLabels>\n}\n\nexport const capacitorProps = commonComponentProps.extend({\n capacitance,\n maxVoltageRating: voltage.optional(),\n schShowRatings: z.boolean().optional().default(false),\n polarized: z.boolean().optional().default(false),\n decouplingFor: z.string().optional(),\n decouplingTo: z.string().optional(),\n bypassFor: z.string().optional(),\n bypassTo: z.string().optional(),\n maxDecouplingTraceLength: z.number().optional(),\n schOrientation: schematicOrientation.optional(),\n connections: createConnectionsProp(capacitorPinLabels).optional(),\n})\nexport const capacitorPins = lrPolarPins\n\nexpectTypesMatch<CapacitorProps, z.input<typeof capacitorProps>>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface NetProps {\n name: string\n}\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 { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { point, type Point } from \"lib/common/point\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n}\n\nexport const rectCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n })\nexpectTypesMatch<RectCutoutProps, z.input<typeof rectCutoutProps>>(true)\n\nexport interface CircleCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"circle\"\n radius: Distance\n}\n\nexport const circleCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n radius: distance,\n })\nexpectTypesMatch<CircleCutoutProps, z.input<typeof circleCutoutProps>>(true)\n\nexport interface PolygonCutoutProps\n extends Omit<PcbLayoutProps, \"layer\" | \"pcbRotation\"> {\n name?: string\n shape: \"polygon\"\n points: Point[]\n}\n\nexport const polygonCutoutProps = pcbLayoutProps\n .omit({\n layer: true,\n pcbRotation: true,\n })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n })\nexpectTypesMatch<PolygonCutoutProps, z.input<typeof polygonCutoutProps>>(true)\n\nexport type CutoutProps =\n | RectCutoutProps\n | CircleCutoutProps\n | PolygonCutoutProps\n\nexport const cutoutProps = z.discriminatedUnion(\"shape\", [\n rectCutoutProps,\n circleCutoutProps,\n polygonCutoutProps,\n])\n\nexport type CutoutPropsInput = z.input<typeof cutoutProps>\n","import {\n pcbLayoutProps,\n type CommonLayoutProps,\n type PcbLayoutProps,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { portHints, type PortHints } from \"lib/common/portHints\"\nimport { point, type Point } from \"lib/common/point\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"rect\"\n width: Distance\n height: Distance\n portHints?: PortHints\n}\n\nexport interface RotatedRectSmtPadProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"rotated_rect\"\n width: Distance\n height: Distance\n ccwRotation: number\n portHints?: PortHints\n}\n\nexport interface CircleSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"circle\"\n radius: Distance\n portHints?: PortHints\n}\n\nexport interface PillSmtPadProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"pill\"\n width: Distance\n height: Distance\n radius: Distance\n portHints?: PortHints\n}\n\nexport interface PolygonSmtPadProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n shape: \"polygon\"\n points: Point[]\n portHints?: PortHints\n}\n\nexport type SmtPadProps =\n | RectSmtPadProps\n | CircleSmtPadProps\n | RotatedRectSmtPadProps\n | PillSmtPadProps\n | PolygonSmtPadProps\n\n// ----------------------------------------------------------------------------\n// Zod\n// ----------------------------------------------------------------------------\n\nexport const rectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n portHints: portHints.optional(),\n })\ntype InferredRectSmtPadProps = z.input<typeof rectSmtPadProps>\nexpectTypesMatch<InferredRectSmtPadProps, RectSmtPadProps>(true)\n\nexport const rotatedRectSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"rotated_rect\"),\n width: distance,\n height: distance,\n ccwRotation: z.number(),\n portHints: portHints.optional(),\n })\ntype InferredRotatedRectSmtPadProps = z.input<typeof rotatedRectSmtPadProps>\nexpectTypesMatch<InferredRotatedRectSmtPadProps, RotatedRectSmtPadProps>(true)\n\nexport const circleSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"circle\"),\n radius: distance,\n portHints: portHints.optional(),\n })\ntype InferredCircleSmtPadProps = z.input<typeof circleSmtPadProps>\nexpectTypesMatch<InferredCircleSmtPadProps, CircleSmtPadProps>(true)\n\nexport const pillSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"pill\"),\n width: distance,\n height: distance,\n radius: distance,\n portHints: portHints.optional(),\n })\ntype InferredPillSmtPadProps = z.input<typeof pillSmtPadProps>\nexpectTypesMatch<InferredPillSmtPadProps, PillSmtPadProps>(true)\n\nexport const polygonSmtPadProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n shape: z.literal(\"polygon\"),\n points: z.array(point),\n portHints: portHints.optional(),\n })\ntype InferredPolygonSmtPadProps = z.input<typeof polygonSmtPadProps>\nexpectTypesMatch<InferredPolygonSmtPadProps, PolygonSmtPadProps>(true)\n\nexport const smtPadProps = z.discriminatedUnion(\"shape\", [\n circleSmtPadProps,\n rectSmtPadProps,\n rotatedRectSmtPadProps,\n pillSmtPadProps,\n polygonSmtPadProps,\n])\n\nexport type InferredSmtPadProps = z.input<typeof smtPadProps>\nexpectTypesMatch<InferredSmtPadProps, SmtPadProps>(true)\n","import { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { boolean, string, z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface RectSolderPasteProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"rect\"\n width: Distance\n height: Distance\n}\n\nexport interface CircleSolderPasteProps\n extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n shape: \"circle\"\n radius: Distance\n}\n\nexport type SolderPasteProps = RectSolderPasteProps | CircleSolderPasteProps\n\n// zod\n\nexport const rectSolderPasteProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n })\ntype InferredRectSolderPasteProps = z.input<typeof rectSolderPasteProps>\nexpectTypesMatch<InferredRectSolderPasteProps, RectSolderPasteProps>(true)\n\nexport const circleSolderPasteProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n })\ntype InferredCircleSolderPasteProps = z.input<typeof circleSolderPasteProps>\nexpectTypesMatch<InferredCircleSolderPasteProps, CircleSolderPasteProps>(true)\n\nexport const solderPasteProps = z.union([\n circleSolderPasteProps,\n rectSolderPasteProps,\n])\n\nexport type InferredSolderPasteProps = z.input<typeof solderPasteProps>\nexpectTypesMatch<InferredSolderPasteProps, SolderPasteProps>(true)\n","import { z } from \"zod\"\nimport { distance, type Distance } from \"lib/common/distance\"\nimport { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport interface HoleProps extends Omit<PcbLayoutProps, \"pcbRotation\"> {\n name?: string\n diameter?: Distance\n radius?: Distance\n}\n\nexport const holeProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n name: z.string().optional(),\n diameter: distance.optional(),\n radius: distance.optional(),\n })\n .transform((d) => ({\n ...d,\n diameter: d.diameter ?? 2 * d.radius!,\n radius: d.radius ?? d.diameter! / 2,\n }))\n\nexport type InferredHoleProps = z.input<typeof holeProps>\n\nexpectTypesMatch<HoleProps, InferredHoleProps>(true)\n","import { distance, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { point } from \"../common/point\"\n\nexport const portRef = z.union([\n z.string(),\n z.custom<{ getPortSelector: () => string }>((v) =>\n Boolean(v.getPortSelector),\n ),\n])\n\nconst baseTraceProps = z.object({\n key: z.string().optional(),\n thickness: distance.optional(),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n schDisplayLabel: z.string().optional(),\n maxLength: distance.optional(),\n})\n\nexport const traceProps = z.union([\n baseTraceProps.extend({\n path: z.array(portRef),\n }),\n baseTraceProps.extend({\n from: portRef,\n to: portRef,\n }),\n])\n\nexport type TraceProps = z.input<typeof traceProps>\n","import { type LayerRef, layer_ref } from \"circuit-json\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface FootprintProps {\n /**\n * The layer that the footprint is designed for. If you set this to \"top\"\n * then it means the children were intended to represent the top layer. If\n * the <chip /> with this footprint is moved to the bottom layer, then the\n * components will be mirrored.\n *\n * Generally, you shouldn't set this except where it can help prevent\n * confusion because you have a complex multi-layer footprint. Default is\n * \"top\" and this is most intuitive.\n */\n originalLayer?: LayerRef\n}\n\nexport const footprintProps = z.object({\n originalLayer: layer_ref.default(\"top\").optional(),\n})\n\nexport type FootprintPropsInput = z.input<typeof footprintProps>\ntype InferredFootprintProps = z.infer<typeof footprintProps>\nexpectTypesMatch<InferredFootprintProps, FootprintProps>(true)\n","import { z } from \"zod\"\nimport {\n commonComponentProps,\n lrPins,\n lrPolarPins,\n type CommonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\n/** @deprecated use battery_capacity from circuit-json when circuit-json is updated */\nconst capacity = z\n .number()\n .or(z.string().endsWith(\"mAh\"))\n .transform((v) => {\n if (typeof v === \"string\") {\n const valString = v.replace(\"mAh\", \"\")\n const num = Number.parseFloat(valString)\n if (Number.isNaN(num)) {\n throw new Error(\"Invalid capacity\")\n }\n return num\n }\n return v\n })\n .describe(\"Battery capacity in mAh\")\n\nexport interface BatteryProps extends CommonComponentProps {\n capacity?: number | string\n schOrientation?: SchematicOrientation\n}\n\nexport const batteryProps = commonComponentProps.extend({\n capacity: capacity.optional(),\n schOrientation: schematicOrientation.optional(),\n})\nexport const batteryPins = lrPolarPins\n\nexpectTypesMatch<BatteryProps, z.input<typeof batteryProps>>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport {\n schematicPinArrangement,\n type SchematicPinArrangement,\n} from \"lib/common/schematicPinDefinitions\"\nimport {\n type SchematicPinStyle,\n schematicPinStyle,\n} from \"lib/common/schematicPinStyle\"\nimport { connectionTarget } from \"lib/common/connectionsProp\"\nimport type { Connections } from \"lib/utility-types/connections-and-selectors\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface PinHeaderProps extends CommonComponentProps {\n /**\n * Number of pins in the header\n */\n pinCount: number\n\n /**\n * Distance between pins\n */\n pitch?: number | string\n\n /**\n * Schematic facing direction\n */\n schFacingDirection?: \"up\" | \"down\" | \"left\" | \"right\"\n\n /**\n * Whether the header is male or female\n */\n gender?: \"male\" | \"female\"\n\n /**\n * Whether to show pin labels in silkscreen\n */\n showSilkscreenPinLabels?: boolean\n\n /**\n * Whether the header has two rows of pins\n */\n doubleRow?: boolean\n\n /**\n * Diameter of the through-hole for each pin\n */\n holeDiameter?: number | string\n\n /**\n * Diameter of the plated area around each hole\n */\n platedDiameter?: number | string\n\n /**\n * Labels for each pin\n */\n pinLabels?: string[]\n\n /**\n * Connections to other components\n */\n connections?: Connections<string>\n\n /**\n * Direction the header is facing\n */\n facingDirection?: \"left\" | \"right\"\n\n /**\n * Pin arrangement in schematic view\n */\n schPinArrangement?: SchematicPinArrangement\n\n /**\n * Schematic pin style (margins, etc)\n */\n schPinStyle?: SchematicPinStyle\n\n /**\n * Schematic pin spacing\n */\n schPinSpacing?: number | string\n\n /**\n * Schematic width\n */\n schWidth?: number | string\n\n /**\n * Schematic height\n */\n schHeight?: number | string\n}\n\nexport const pinHeaderProps = commonComponentProps.extend({\n pinCount: z.number(),\n pitch: distance.optional(),\n schFacingDirection: z.enum([\"up\", \"down\", \"left\", \"right\"]).optional(),\n gender: z.enum([\"male\", \"female\"]).optional().default(\"male\"),\n showSilkscreenPinLabels: z.boolean().optional(),\n doubleRow: z.boolean().optional(),\n holeDiameter: distance.optional(),\n platedDiameter: distance.optional(),\n pinLabels: z.array(z.string()).optional(),\n connections: z\n .custom<Connections>()\n .pipe(z.record(z.string(), connectionTarget))\n .optional(),\n facingDirection: z.enum([\"left\", \"right\"]).optional(),\n schPinArrangement: schematicPinArrangement.optional(),\n schPinStyle: schematicPinStyle.optional(),\n schPinSpacing: distance.optional(),\n schWidth: distance.optional(),\n schHeight: distance.optional(),\n})\n\ntype InferredPinHeaderProps = z.input<typeof pinHeaderProps>\nexpectTypesMatch<PinHeaderProps, InferredPinHeaderProps>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance } from \"lib/common/distance\"\nimport { rotation } from \"circuit-json\"\n\n/**\n * @deprecated Use NetLabelProps instead.\n */\nexport interface NetAliasProps {\n net?: string\n connection?: string\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"top\" | \"right\" | \"bottom\"\n}\n\n/** @deprecated Use netLabelProps instead. */\nexport const netAliasProps = z.object({\n net: z.string().optional(),\n connection: z.string().optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"top\", \"right\", \"bottom\"]).optional(),\n})\n\ntype InferredNetAliasProps = z.input<typeof netAliasProps>\nexpectTypesMatch<NetAliasProps, InferredNetAliasProps>(true)\n","import { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { distance } from \"lib/common/distance\"\nimport { rotation } from \"circuit-json\"\n\nexport interface NetLabelProps {\n net?: string\n connection?: string\n connectsTo?: string | string[]\n schX?: number | string\n schY?: number | string\n schRotation?: number | string\n anchorSide?: \"left\" | \"top\" | \"right\" | \"bottom\"\n}\n\nexport const netLabelProps = z.object({\n net: z.string().optional(),\n connection: z.string().optional(),\n connectsTo: z.string().or(z.array(z.string())).optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n anchorSide: z.enum([\"left\", \"top\", \"right\", \"bottom\"]).optional(),\n})\n\ntype InferredNetLabelProps = z.input<typeof netLabelProps>\nexpectTypesMatch<NetLabelProps, InferredNetLabelProps>(true)\n","import { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\nimport { chipProps, type ChipProps, type PinLabelsProp } from \"./chip\"\n\nexport type PushButtonProps<T extends PinLabelsProp | string = string> =\n ChipProps<T>\n\nexport const pushButtonProps = chipProps.extend({})\n\nexpectTypesMatch<PushButtonProps, z.input<typeof pushButtonProps>>(true)\n","import type { SubcircuitGroupProps } from \"./group\"\nimport { subcircuitGroupProps } from \"./group\"\nimport type { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nexport type SubcircuitProps = SubcircuitGroupProps\n\nexport const subcircuitProps = subcircuitGroupProps\n\ntype InferredSubcircuitProps = z.input<typeof subcircuitProps>\nexpectTypesMatch<SubcircuitProps, InferredSubcircuitProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface TransistorProps extends CommonComponentProps {\n type: \"npn\" | \"pnp\" | \"bjt\" | \"jfet\" | \"mosfet\" | \"igbt\"\n}\n\nexport const transistorProps = commonComponentProps.extend({\n type: z.enum([\"npn\", \"pnp\", \"bjt\", \"jfet\", \"mosfet\", \"igbt\"]),\n})\n\nexport const transistorPins = [\n \"pin1\",\n \"emitter\",\n \"pin2\",\n \"collector\",\n \"pin3\",\n \"base\",\n] as const\n\ntype InferredTransistorProps = z.input<typeof transistorProps>\nexpectTypesMatch<TransistorProps, InferredTransistorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"../common/layout\"\nimport { expectTypesMatch } from \"../typecheck\"\nimport { z } from \"zod\"\n\nexport interface MosfetProps extends CommonComponentProps {\n channelType: \"n\" | \"p\"\n mosfetMode: \"enhancement\" | \"depletion\"\n}\n\nexport const mosfetProps = commonComponentProps.extend({\n channelType: z.enum([\"n\", \"p\"]),\n mosfetMode: z.enum([\"enhancement\", \"depletion\"]),\n})\n\nexport const mosfetPins = [\n \"pin1\",\n \"drain\",\n \"pin2\",\n \"source\",\n \"pin3\",\n \"gate\",\n] as const\n\ntype InferredMosfetProps = z.input<typeof mosfetProps>\nexpectTypesMatch<MosfetProps, InferredMosfetProps>(true)\n","import { inductance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n lrPins,\n} from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface InductorProps extends CommonComponentProps {\n inductance: number | string\n maxCurrentRating?: number | string\n schOrientation?: SchematicOrientation\n}\n\nexport const inductorProps = commonComponentProps.extend({\n inductance,\n maxCurrentRating: z.union([z.string(), z.number()]).optional(),\n schOrientation: schematicOrientation.optional(),\n})\n\nexport const inductorPins = lrPins\n\ntype InferredInductorProps = z.input<typeof inductorProps>\n\nexpectTypesMatch<InductorProps, InferredInductorProps>(true)\n","import {\n type CommonComponentProps,\n commonComponentProps,\n lrPolarPins,\n} from \"lib/common/layout\"\nimport { z } from \"zod\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\n\nconst diodeConnectionKeys = z.enum([\n \"anode\",\n \"cathode\",\n \"pin1\",\n \"pin2\",\n \"pos\",\n \"neg\",\n])\n\nconst connectionTarget = z\n .string()\n .or(z.array(z.string()).readonly())\n .or(z.array(z.string()))\n\nconst connectionsProp = z.record(diodeConnectionKeys, connectionTarget)\n\nconst diodeVariant = z.enum([\"standard\", \"schottky\", \"zener\", \"photo\", \"tvs\"])\n\nexport const diodeProps = commonComponentProps\n .extend({\n connections: connectionsProp.optional(),\n variant: diodeVariant.optional().default(\"standard\"),\n standard: z.boolean().optional(),\n schottky: z.boolean().optional(),\n zener: z.boolean().optional(),\n photo: z.boolean().optional(),\n tvs: z.boolean().optional(),\n schOrientation: schematicOrientation.optional(),\n })\n .superRefine((data, ctx) => {\n // Check if multiple boolean flags are set directly\n const enabledFlags = [\n data.standard,\n data.schottky,\n data.zener,\n data.photo,\n data.tvs,\n ].filter(Boolean).length\n\n if (enabledFlags > 1) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Exactly one diode variant must be enabled\",\n path: [],\n })\n return z.INVALID\n }\n })\n .transform((data) => {\n // Set all variant flags to false initially\n const result = {\n ...data,\n standard: false,\n schottky: false,\n zener: false,\n photo: false,\n tvs: false,\n }\n\n if (data.standard) result.standard = true\n else if (data.schottky) result.schottky = true\n else if (data.zener) result.zener = true\n else if (data.photo) result.photo = true\n else if (data.tvs) result.tvs = true\n else {\n switch (data.variant) {\n case \"standard\":\n result.standard = true\n break\n case \"schottky\":\n result.schottky = true\n break\n case \"zener\":\n result.zener = true\n break\n case \"photo\":\n result.photo = true\n break\n case \"tvs\":\n result.tvs = true\n break\n default:\n result.standard = true\n }\n }\n\n return result\n })\n\nexport const diodePins = lrPolarPins\n\nexport interface DiodeProps extends CommonComponentProps {\n connections?: {\n anode?: string | string[] | readonly string[]\n cathode?: string | string[] | readonly string[]\n pin1?: string | string[] | readonly string[]\n pin2?: string | string[] | readonly string[]\n pos?: string | string[] | readonly string[]\n neg?: string | string[] | readonly string[]\n }\n variant?: \"standard\" | \"schottky\" | \"zener\" | \"photo\" | \"tvs\"\n standard?: boolean\n schottky?: boolean\n zener?: boolean\n photo?: boolean\n tvs?: boolean\n schOrientation?: SchematicOrientation\n}\n\nexport type InferredDiodeProps = z.input<typeof diodeProps>\nexpectTypesMatch<InferredDiodeProps, DiodeProps>(true)\n","import { commonComponentProps, lrPolarPins } from \"lib/common/layout\"\nimport {\n schematicOrientation,\n type SchematicOrientation,\n} from \"lib/common/schematicOrientation\"\nimport { z } from \"zod\"\n\nexport const ledProps = commonComponentProps.extend({\n color: z.string().optional(),\n wavelength: z.string().optional(),\n schDisplayValue: z.string().optional(),\n schOrientation: schematicOrientation.optional(),\n})\nexport const ledPins = lrPolarPins\nexport type LedProps = z.input<typeof ledProps>\n","import {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\n\nimport { z } from \"zod\"\n\nexport interface SwitchProps extends CommonComponentProps {\n type?: \"spst\" | \"spdt\" | \"dpst\" | \"dpdt\"\n isNormallyClosed?: boolean\n spdt?: boolean\n spst?: boolean\n dpst?: boolean\n dpdt?: boolean\n}\n\nexport const switchProps = commonComponentProps\n .extend({\n type: z.enum([\"spst\", \"spdt\", \"dpst\", \"dpdt\"]).optional(),\n isNormallyClosed: z.boolean().optional().default(false),\n spst: z.boolean().optional(),\n spdt: z.boolean().optional(),\n dpst: z.boolean().optional(),\n dpdt: z.boolean().optional(),\n })\n .transform((props) => {\n const updatedProps: SwitchProps = { ...props }\n\n if (updatedProps.dpdt) {\n updatedProps.type = \"dpdt\"\n } else if (updatedProps.spst) {\n updatedProps.type = \"spst\"\n } else if (updatedProps.spdt) {\n updatedProps.type = \"spdt\"\n } else if (updatedProps.dpst) {\n updatedProps.type = \"dpst\"\n }\n\n switch (updatedProps.type) {\n case \"spdt\":\n updatedProps.spdt = true\n break\n case \"spst\":\n updatedProps.spst = true\n break\n case \"dpst\":\n updatedProps.dpst = true\n break\n case \"dpdt\":\n updatedProps.dpdt = true\n break\n }\n\n return updatedProps\n })\n\nexport type InferredSwitchProps = z.infer<typeof switchProps>\nexpectTypesMatch<SwitchProps, InferredSwitchProps>(true)\n","import { length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const fabricationNoteTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n color: z.string().optional(),\n})\nexport type FabricationNoteTextProps = z.input<typeof fabricationNoteTextProps>\n","import { length, route_hint_point } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const fabricationNotePathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n color: z.string().optional(),\n })\nexport type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>\n","import { distance, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const pcbTraceProps = z.object({\n layer: z.string().optional(),\n thickness: distance.optional(),\n route: z.array(route_hint_point),\n})\nexport type PcbTraceProps = z.input<typeof pcbTraceProps>\n","import { distance, layer_ref, type LayerRefInput } from \"circuit-json\"\nimport { commonLayoutProps, type CommonLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface ViaProps extends CommonLayoutProps {\n name?: string\n fromLayer: LayerRefInput\n toLayer: LayerRefInput\n holeDiameter: number | string\n outerDiameter: number | string\n connectsTo?: string | string[]\n}\n\nexport const viaProps = commonLayoutProps.extend({\n name: z.string().optional(),\n fromLayer: layer_ref,\n toLayer: layer_ref,\n holeDiameter: distance,\n outerDiameter: distance,\n connectsTo: z.string().or(z.array(z.string())).optional(),\n})\nexport type InferredViaProps = z.input<typeof viaProps>\nexpectTypesMatch<ViaProps, InferredViaProps>(true)\n","import { distance } from \"circuit-json\"\nimport {\n type CommonComponentProps,\n commonComponentProps,\n} from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface TestpointProps extends CommonComponentProps {\n /**\n * The footprint variant of the testpoint either a surface pad or through-hole\n */\n footprintVariant?: \"pad\" | \"through_hole\"\n /**\n * The shape of the pad if using a pad variant\n */\n padShape?: \"rect\" | \"circle\"\n /**\n * Diameter of the copper pad (applies to both SMD pads and plated holes)\n */\n padDiameter?: number | string\n /**\n * Diameter of the hole if using a through-hole testpoint\n */\n holeDiameter?: number | string\n /**\n * Width of the pad when padShape is rect\n */\n width?: number | string\n /**\n * Height of the pad when padShape is rect\n */\n height?: number | string\n}\n\nexport const testpointProps = commonComponentProps\n .extend({\n footprintVariant: z.enum([\"pad\", \"through_hole\"]).optional(),\n padShape: z.enum([\"rect\", \"circle\"]).optional().default(\"circle\"),\n padDiameter: distance.optional(),\n holeDiameter: distance.optional(),\n width: distance.optional(),\n height: distance.optional(),\n })\n .refine(\n (props) =>\n props.footprintVariant !== \"through_hole\" ||\n props.holeDiameter !== undefined,\n { message: \"holeDiameter is required for through_hole testpoints\" },\n )\n\nexport type InferredTestpointProps = z.input<typeof testpointProps>\nexpectTypesMatch<TestpointProps, InferredTestpointProps>(true)\n","import { pcbLayoutProps, type PcbLayoutProps } from \"lib/common/layout\"\nimport { expectTypesMatch } from \"lib/typecheck\"\nimport { z } from \"zod\"\n\nexport interface BreakoutPointProps\n extends Omit<PcbLayoutProps, \"pcbRotation\" | \"layer\"> {\n connection: string\n}\n\nexport const breakoutPointProps = pcbLayoutProps\n .omit({ pcbRotation: true, layer: true })\n .extend({\n connection: z.string(),\n })\n\ntype InferredBreakoutPointProps = z.input<typeof breakoutPointProps>\nexpectTypesMatch<BreakoutPointProps, InferredBreakoutPointProps>(true)\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const pcbKeepoutProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true }).extend({\n shape: z.literal(\"circle\"),\n radius: distance,\n }),\n pcbLayoutProps.extend({\n shape: z.literal(\"rect\"),\n width: distance,\n height: distance,\n }),\n])\nexport type PcbKeepoutProps = z.input<typeof pcbKeepoutProps>\n","import { voltage } from \"circuit-json\"\nimport { commonComponentProps } from \"lib/common/layout\"\nimport type { z } from \"zod\"\n\nexport const powerSourceProps = commonComponentProps.extend({\n voltage,\n})\nexport type PowerSourceProps = z.input<typeof powerSourceProps>\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\n\nexport const schematicBoxProps = z\n .object({\n schX: distance.optional(),\n schY: distance.optional(),\n width: distance.optional(),\n height: distance.optional(),\n overlay: z.array(z.string()).optional(),\n\n padding: distance.optional(),\n paddingLeft: distance.optional(),\n paddingRight: distance.optional(),\n paddingTop: distance.optional(),\n paddingBottom: distance.optional(),\n\n title: z.string().optional(),\n titleAlignment: ninePointAnchor.default(\"top_left\"),\n titleColor: z.string().optional(),\n titleFontSize: distance.optional(),\n titleInside: z.boolean().default(false),\n strokeStyle: z.enum([\"solid\", \"dashed\"]).default(\"solid\"),\n })\n .refine(\n (elm) =>\n (elm.width !== undefined && elm.height !== undefined) ||\n (Array.isArray(elm.overlay) && elm.overlay.length > 0),\n {\n message:\n \"Must provide either both `width` and `height`, or a non-empty `overlay` array.\",\n },\n )\n .refine(\n (elm) =>\n !(\n elm.width !== undefined &&\n elm.height !== undefined &&\n Array.isArray(elm.overlay) &&\n elm.overlay.length > 0\n ),\n {\n message:\n \"Cannot provide both `width`/`height` and `overlay` at the same time.\",\n },\n )\nexport type SchematicBoxProps = z.input<typeof schematicBoxProps>\n","import { z } from \"zod\"\n\nexport const ninePointAnchor = z.enum([\n \"top_left\",\n \"top_center\",\n \"top_right\",\n \"center_left\",\n \"center\",\n \"center_right\",\n \"bottom_left\",\n \"bottom_center\",\n \"bottom_right\",\n])\n","import { distance } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const schematicLineProps = z.object({\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n})\nexport type SchematicLineProps = z.input<typeof schematicLineProps>\n","import { distance, rotation } from \"circuit-json\"\nimport { z } from \"zod\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { fivePointAnchor } from \"lib/common/fivePointAnchor\"\n\nexport const schematicTextProps = z.object({\n schX: distance.optional(),\n schY: distance.optional(),\n text: z.string(),\n fontSize: z.number().default(1),\n anchor: z\n .union([fivePointAnchor.describe(\"legacy\"), ninePointAnchor])\n .default(\"center\"),\n color: z.string().default(\"#000000\"),\n schRotation: rotation.default(0),\n})\nexport type SchematicTextProps = z.input<typeof schematicTextProps>\n","import { z } from \"zod\"\n\nexport const fivePointAnchor = z.enum([\n \"center\",\n \"left\",\n \"right\",\n \"top\",\n \"bottom\",\n])\n","import { point } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const schematicPathProps = z.object({\n points: z.array(point),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.enum([\"red\", \"blue\"]).optional(),\n})\nexport type SchematicPathProps = z.input<typeof schematicPathProps>\n","import { length } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { ninePointAnchor } from \"lib/common/ninePointAnchor\"\nimport { z } from \"zod\"\n\nexport const silkscreenTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: ninePointAnchor.default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type SilkscreenTextProps = z.input<typeof silkscreenTextProps>\n","import { length, route_hint_point } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenPathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type SilkscreenPathProps = z.input<typeof silkscreenPathProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport type { z } from \"zod\"\n\nexport const silkscreenLineProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n strokeWidth: distance,\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n })\nexport type SilkscreenLineProps = z.input<typeof silkscreenLineProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n filled: z.boolean().default(true).optional(),\n stroke: z.enum([\"dashed\", \"solid\", \"none\"]).optional(),\n strokeWidth: distance.optional(),\n width: distance,\n height: distance,\n })\nexport type SilkscreenRectProps = z.input<typeof silkscreenRectProps>\n","import { distance } from \"circuit-json\"\nimport { pcbLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const silkscreenCircleProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n radius: distance,\n })\nexport type SilkscreenCircleProps = z.input<typeof silkscreenCircleProps>\n","import { distance, layer_ref, route_hint_point } from \"circuit-json\"\nimport { z } from \"zod\"\n\nexport const routeHintPointProps = z.object({\n x: distance,\n y: distance,\n via: z.boolean().optional(),\n toLayer: layer_ref.optional(),\n})\n\nexport const traceHintProps = z.object({\n for: z\n .string()\n .optional()\n .describe(\n \"Selector for the port you're targeting, not required if you're inside a trace\",\n ),\n order: z.number().optional(),\n offset: route_hint_point.or(routeHintPointProps).optional(),\n offsets: z\n .array(route_hint_point)\n .or(z.array(routeHintPointProps))\n .optional(),\n traceWidth: z.number().optional(),\n})\n\nexport type TraceHintProps = z.input<typeof traceHintProps>\n","import { direction } from \"lib/common/direction\"\nimport { commonLayoutProps } from \"lib/common/layout\"\nimport { z } from \"zod\"\n\nexport const portProps = commonLayoutProps.extend({\n name: z.string(),\n pinNumber: z.number().optional(),\n aliases: z.array(z.string()).optional(),\n direction: direction,\n})\nexport type PortProps = z.input<typeof portProps>\n","import {\n autorouterProp,\n type AutorouterProp,\n type PartsEngine,\n partsEngine,\n} from \"./components/group\"\nimport { expectTypesMatch } from \"./typecheck\"\nimport { z } from \"zod\"\n\nexport interface PlatformConfig {\n partsEngine?: PartsEngine\n\n autorouter?: AutorouterProp\n\n // TODO this follows a subset of the localStorage interface\n localCacheEngine?: any\n\n registryApiUrl?: string\n\n cloudAutorouterUrl?: string\n\n pcbDisabled?: boolean\n schematicDisabled?: boolean\n partsEngineDisabled?: boolean\n\n footprintLibraryMap?: Record<\n string,\n Record<\n string,\n | any[]\n | ((path: string) => Promise<{\n footprintCircuitJson: any[]\n }>)\n >\n >\n}\n\nconst unvalidatedCircuitJson = z.array(z.any()).describe(\"Circuit JSON\")\nconst pathToCircuitJsonFn = z\n .function()\n .args(z.string())\n .returns(z.promise(z.object({ footprintCircuitJson: z.array(z.any()) })))\n .describe(\"A function that takes a path and returns Circuit JSON\")\n\nexport const platformConfig = z.object({\n partsEngine: partsEngine.optional(),\n autorouter: autorouterProp.optional(),\n registryApiUrl: z.string().optional(),\n cloudAutorouterUrl: z.string().optional(),\n localCacheEngine: z.any().optional(),\n pcbDisabled: z.boolean().optional(),\n schematicDisabled: z.boolean().optional(),\n partsEngineDisabled: z.boolean().optional(),\n footprintLibraryMap: z\n .record(\n z.string(),\n z.record(\n z.string(),\n z.union([unvalidatedCircuitJson, pathToCircuitJsonFn]),\n ),\n )\n .optional(),\n}) as z.ZodType<PlatformConfig>\n\nexpectTypesMatch<PlatformConfig, z.infer<typeof platformConfig>>(true)\n"],"mappings":";AAYO,IAAM,mBAAmB,CAO9B,aAOS;AAAC;AAIZ,iBAQE,eAAe;AAEjB,iBAQE,iBAAiB;AAEnB,iBAOE,IAAI;AAEN,iBAOE,iCAAiC;;;ACjEnC,SAAS,SAAS;AACX,IAAM,YAAY,EAAE,KAAK,CAAC,MAAM,QAAQ,QAAQ,OAAO,CAAC;AASxD,IAAM,qBAAqB,EAAE,KAAK;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,iBAAuD,IAAI;AAC3D,iBAAyE,IAAI;;;ACnB7E,SAAS,KAAAA,UAAS;AAGX,IAAM,YAAYC,GAAE,MAAMA,GAAE,OAAO,EAAE,GAAGA,GAAE,OAAO,CAAC,CAAC;AAG1D,iBAAuD,IAAI;;;ACN3D;AAAA,EAEE,YAAAC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,KAAAC,UAAS;;;ACRlB,SAAS,KAAAC,UAAS;;;ACAlB,SAAS,gBAAgB;AACzB,SAAS,KAAAC,UAAS;AAEX,IAAM,SAASA,GAAE,OAAO;AAAA,EAC7B,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL,CAAC;;;ADHM,IAAM,iBAAiBC,GAAE,OAAO;AAAA,EACrC,GAAGA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC,CAAC;AAAA,EACnC,GAAGA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC,CAAC;AAAA,EACnC,GAAGA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAcM,IAAM,eAAeA,GAAE,OAAO;AAAA,EACnC,gBAAgBA,GAAE,OAAO,EAAE,GAAG,cAAc,EAAE,SAAS;AAAA,EACvD,gBAAgB,OAAO,SAAS;AAAA,EAChC,MAAM,OAAO,SAAS;AACxB,CAAC;AAED,iBAA6D,IAAI;AAK1D,IAAM,cAAc,aAAa,OAAO;AAAA,EAC7C,QAAQA,GAAE,OAAO;AACnB,CAAC;AAMM,IAAM,cAAc,aAAa,OAAO;AAAA,EAC7C,QAAQA,GAAE,OAAO;AAAA,EACjB,QAAQA,GAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAKM,IAAM,gBAAgB,aAAa,OAAO;AAAA,EAC/C,OAAOA,GAAE,OAAOA,GAAE,IAAI,CAAC;AACzB,CAAC;AASM,IAAM,eAAeA,GAAE,MAAM;AAAA,EAClCA,GAAE,KAAK;AAAA,EACPA,GAAE,OAAO;AAAA,EACT;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,iBAAqD,IAAI;;;AEnEzD,SAAS,KAAAC,UAAS;AAoBX,IAAM,gBAAgBA,GAAE,OAAsB,CAAC,MAAM,IAAI;;;AHUzD,IAAM,iBAAiBC,GAAE,OAAO;AAAA,EACrC,MAAMC,UAAS,SAAS;AAAA,EACxB,MAAMA,UAAS,SAAS;AAAA,EACxB,aAAa,SAAS,SAAS;AAAA,EAC/B,OAAO,UAAU,SAAS;AAC5B,CAAC;AAED,iBAAyD,IAAI;AAEtD,IAAM,oBAAoBD,GAAE,OAAO;AAAA,EACxC,MAAMC,UAAS,SAAS;AAAA,EACxB,MAAMA,UAAS,SAAS;AAAA,EACxB,aAAa,SAAS,SAAS;AAAA,EAC/B,MAAMA,UAAS,SAAS;AAAA,EACxB,MAAMA,UAAS,SAAS;AAAA,EACxB,aAAa,SAAS,SAAS;AAAA,EAC/B,OAAO,UAAU,SAAS;AAAA,EAC1B,WAAW,cAAc,SAAS;AACpC,CAAC;AAGD,iBAA+D,IAAI;AAa5D,IAAM,gBAAgBD,GAAE,OAAO;AAAA,EACpC,qBAAqBA,GAAE,OAAO,eAAeA,GAAE,MAAMA,GAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAC7E,CAAC;AAED,iBAA+D,IAAI;AAY5D,IAAM,uBAAuB,kBACjC,MAAM,aAAa,EACnB,OAAO;AAAA,EACN,KAAKA,GAAE,IAAI,EAAE,SAAS;AAAA,EACtB,MAAMA,GAAE,OAAO;AAAA,EACf,UAAU,aAAa,SAAS;AAAA,EAChC,UAAUA,GAAE,IAAI,EAAE,SAAS;AAAA,EAC3B,YAAYA,GAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,GAAE,QAAQ,EAAE,SAAS;AACnC,CAAC;AAGH,iBAAqE,IAAI;AAElE,IAAM,iBAAiB;AAGvB,IAAM,SAAS,CAAC,QAAQ,QAAQ,QAAQ,OAAO;AAC/C,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,uBAAuBC,UAAS,GAAGD,GAAE,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,CAAC;;;AI9G1E,SAAS,KAAAE,UAAS;AAEX,IAAM,uBAAuBA,GACjC,KAAK;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC,EACA;AAAA,EACC;AACF;AAcF;AAAA,EACE;AACF;;;ACjCA,SAAS,KAAAC,UAAS;AAiDX,IAAM,4BAA4BA,GAAE,OAAO;AAAA,EAChD,MAAMA,GAAE,MAAMA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC,CAAC,CAAC;AAAA,EAC/C,WAAWA,GAAE,MAAM;AAAA,IACjBA,GAAE,QAAQ,eAAe;AAAA,IACzBA,GAAE,QAAQ,eAAe;AAAA,IACzBA,GAAE,QAAQ,eAAe;AAAA,IACzBA,GAAE,QAAQ,eAAe;AAAA,EAC3B,CAAC;AACH,CAAC;AAKM,IAAM,2BAA2BA,GAAE,OAAO;AAAA,EAC/C,UAAUA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,+BAA+B;AAAA,EACxE,SAASA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,8BAA8B;AAAA,EACtE,WAAWA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,gCAAgC;AAAA,EAC1E,YAAYA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,iCAAiC;AAAA,EAC5E,cAAcA,GAAE,OAAO,EAAE,SAAS;AAAA,EAClC,eAAeA,GAAE,OAAO,EAAE,SAAS;AAAA,EACnC,aAAaA,GAAE,OAAO,EAAE,SAAS;AAAA,EACjC,gBAAgBA,GAAE,OAAO,EAAE,SAAS;AAAA,EACpC,UAAU,0BAA0B,SAAS;AAAA,EAC7C,WAAW,0BAA0B,SAAS;AAAA,EAC9C,SAAS,0BAA0B,SAAS;AAAA,EAC5C,YAAY,0BAA0B,SAAS;AACjD,CAAC;AAEM,IAAM,0BAA0B;AAEvC,iBAGE,IAAI;;;ACnFN,SAAS,YAAAC,iBAAgB;AAEzB,SAAS,KAAAC,UAAS;AAqBX,IAAM,oBAAoBA,GAAE;AAAA,EACjCA,GAAE,OAAO;AAAA,IACP,YAAYC,UAAS,SAAS;AAAA,IAC9B,aAAaA,UAAS,SAAS;AAAA,IAC/B,WAAWA,UAAS,SAAS;AAAA,IAC7B,cAAcA,UAAS,SAAS;AAAA,IAEhC,YAAYA,UAAS,SAAS;AAAA,IAC9B,aAAaA,UAAS,SAAS;AAAA,IAC/B,WAAWA,UAAS,SAAS;AAAA,IAC7B,cAAcA,UAAS,SAAS;AAAA,EAClC,CAAC;AACH;AAEA,iBAAuE,IAAI;;;ACpC3E,SAAS,YAAAC,iBAAgB;;;ACDzB,SAAS,YAAAC,iBAAgB;AACzB,SAAS,KAAAC,WAAS;AAEX,IAAM,QAAQA,IAAE,OAAO;AAAA,EAC5B,GAAGD;AAAA,EACH,GAAGA;AACL,CAAC;;;ADDD,SAAS,KAAAE,WAAS;;;AEJlB,SAAoB,cAAc;AAQlC,SAAS,KAAAC,WAAS;;;ACRlB,SAAS,KAAAC,WAAS;AAEX,IAAM,yBAAyBA,IAAE,OAAO;AAAA,EAC7C,eAAeA,IAAE,OAAO;AAAA,EACxB,aAAaA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,YAAYA,IAAE,OAAO;AACvB,CAAC;AAUD;AAAA,EACE;AACF;;;ACnBA,SAAS,KAAAC,WAAS;AAOX,IAAM,oCAAoC,uBAAuB,OAAO;AAAA,EAC7E,qBAAqBC,IAClB,QAAQ,yBAAyB,EACjC,SAAS,YAAY;AAAA,EACxB,iBAAiBA,IAAE,QAAQ,6BAA6B;AAAA,EACxD,kBAAkBA,IAAE,OAAO;AAAA,EAC3B,iBAAiBA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AAAA,EAC1D,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAGM,IAAM,gCAAgC;AAe7C,iBAGE,IAAI;;;ACpCN,SAAS,KAAAC,WAAS;AAOX,IAAM,wBAAwB,uBAAuB,OAAO;AAAA,EACjE,qBAAqBC,IAAE,QAAQ,iBAAiB,EAAE,SAAS,YAAY;AAAA,EACvE,iBAAiBA,IAAE,QAAQ,qBAAqB,EAAE,SAAS;AAAA,EAC3D,aAAaA,IAAE,OAAO;AAAA,EACtB,mBAAmBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACvC,OAAOA,IAAE;AAAA,IACPA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,GAAG,KAAKA,IAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAAA,EACxE;AACF,CAAC;AAaD;AAAA,EACE;AACF;;;AC9BA,SAAS,KAAAC,WAAS;AAOX,IAAM,0CACX,uBAAuB,OAAO;AAAA,EAC5B,iBAAiBC,IAAE,QAAQ,mCAAmC;AAAA,EAC9D,wBAAwBA,IAAE,OAAO;AAAA,EACjC,iBAAiBA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AAAA,EAC1D,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAcH,iBAGE,IAAI;;;AC9BN,SAAS,KAAAC,WAAS;AAOX,IAAM,gCAAgC,uBAAuB,OAAO;AAAA,EACzE,iBAAiBC,IAAE,QAAQ,yBAAyB;AAAA,EACpD,cAAcA,IAAE,OAAO;AAAA,EACvB,iBAAiBA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AAAA,EAC1D,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAaD,iBAGE,IAAI;;;AC5BN,SAAS,KAAAC,WAAS;AAOX,IAAM,sCACX,uBAAuB,OAAO;AAAA,EAC5B,iBAAiBC,IAAE,QAAQ,+BAA+B;AAAA,EAC1D,oBAAoBA,IAAE,OAAO;AAAA,EAC7B,iBAAiBA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AAAA,EAC1D,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,GAAG,GAAGA,IAAE,OAAO,EAAE,CAAC;AACvD,CAAC;AAaH,iBAGE,IAAI;;;AC7BN,SAAS,KAAAC,WAAS;AAoBX,IAAM,oBAAoBC,IAAE,MAAM;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAKD,iBAA2D,IAAI;;;AC7B/D,SAAS,KAAAC,WAAS;;;ACAlB,SAAS,KAAAC,WAAS;AAClB,SAAS,SAAAC,cAAyB;AAG3B,IAAM,uBAAuBC,IAAE,OAAO;AAAA,EAC3C,UAAUA,IAAE,OAAO;AAAA,EACnB,aAAaA,IACV,OAAO,EACP,SAAS,EACT,QAAQ,cAAc,EACtB,SAAS,qCAAqC;AAAA,EACjD,QAAQC;AACV,CAAC;AAWD,iBAAiE,IAAI;;;ACvBrE,SAAS,KAAAC,WAAS;AAClB,SAAoB,wBAA6C;AAG1D,IAAM,oBAAoBC,IAAE,OAAO;AAAA,EACxC,mBAAmBA,IAAE,OAAO;AAAA,EAC5B,SAASA,IAAE,MAAM,gBAAgB;AACnC,CAAC;AASD,iBAAqE,IAAI;;;AChBzE,SAAS,KAAAC,WAAS;AAClB,SAAS,SAAAC,cAAyB;AAG3B,IAAM,6BAA6BC,IAAE,OAAO;AAAA,EACjD,UAAUA,IAAE,OAAO;AAAA,EACnB,aAAaA,IACV,OAAO,EACP,SAAS,EACT,QAAQ,cAAc,EACtB,SAAS,qCAAqC;AAAA,EACjD,QAAQC;AACV,CAAC;AAeD;AAAA,EACE;AACF;;;AHhBO,IAAM,oBAAoBC,IAAE,OAAO;AAAA,EACxC,gBAAgBA,IAAE,MAAM,oBAAoB,EAAE,SAAS;AAAA,EACvD,oBAAoBA,IAAE,MAAM,iBAAiB,EAAE,SAAS;AAAA,EACxD,sBAAsBA,IAAE,MAAM,0BAA0B,EAAE,SAAS;AACrE,CAAC;AAUD,iBAAqE,IAAI;;;ARVlE,IAAM,eAAeC,IAAE,OAAO;AAAA,EACnC,YAAYA,IAAE,KAAK,CAAC,QAAQ,QAAQ,eAAe,MAAM,CAAC,EAAE,SAAS;AAAA,EACrE,UAAUA,IAAE,KAAK,CAAC,YAAY,UAAU,CAAC,EAAE,SAAS;AAAA,EAEpD,MAAMA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3B,UAAUA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,UAAUA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC7C,kBAAkBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACtC,qBAAqBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzC,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,SAASA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAE5C,MAAMA,IAAE,QAAQ,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAC1C,eAAeA,IAAE,KAAK,CAAC,OAAO,QAAQ,CAAC,EAAE,SAAS;AAAA,EAClD,YAAYA,IAAE,KAAK,CAAC,SAAS,UAAU,OAAO,SAAS,CAAC,EAAE,SAAS;AAAA,EACnE,gBAAgBA,IAAE,KAAK,CAAC,SAAS,UAAU,OAAO,SAAS,CAAC,EAAE,SAAS;AAAA,EACvE,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,YAAYA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,KAAKA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAExC,SAAS,OAAO,SAAS;AAAA,EACzB,aAAa,OAAO,SAAS;AAAA,EAC7B,cAAc,OAAO,SAAS;AAAA,EAC9B,YAAY,OAAO,SAAS;AAAA,EAC5B,eAAe,OAAO,SAAS;AAAA,EAC/B,UAAU,OAAO,SAAS;AAAA,EAC1B,UAAU,OAAO,SAAS;AAAA,EAE1B,OAAO,OAAO,SAAS;AAAA,EACvB,QAAQ,OAAO,SAAS;AAAA,EAExB,YAAYA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACjC,oBAAoBA,IAAE,IAAI,EAAE,SAAS;AACvC,CAAC;AAqCD,iBAA6D,IAAI;AAQ1D,IAAM,SAASA,IAAE,OAAO;AAAA,EAC7B,aAAa,OAAO,SAAS;AAAA,EAC7B,QAAQA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC7B,OAAOA,IAAE,QAAQ,EAAE,SAAS;AAC9B,CAAC;AAsDM,IAAM,mBAAmBA,IAAE,OAAO;AAAA,EACvC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,aAAaA,IAAE,KAAK,CAAC,cAAc,cAAc,CAAC,EAAE,SAAS;AAAA,EAC7D,YAAYA,IAAE,KAAK,CAAC,OAAO,gBAAgB,CAAC,EAAE,SAAS;AAAA,EACvD,oBAAoBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACzC,OAAOA,IAAE,OAAsB,CAAC,MAAM,IAAI,EAAE,SAAS;AAAA,EACrD,WAAWA,IAAE,KAAK,CAAC,oBAAoB,YAAY,CAAC,EAAE,SAAS;AAAA,EAC/D,aAAaA,IACV;AAAA,IACC,CAAC,MAAM,OAAO,MAAM,cAAc,MAAM;AAAA,EAC1C,EACC,SAAS;AAAA,EACZ,OAAOA,IAAE,QAAQ,EAAE,SAAS;AAC9B,CAAC;AAEM,IAAM,iBAAiBA,IAAE,MAAM;AAAA,EACpC;AAAA,EACAA,IAAE,QAAQ,kBAAkB;AAAA,EAC5BA,IAAE,QAAQ,YAAY;AAAA,EACtBA,IAAE,QAAQ,MAAM;AAAA,EAChBA,IAAE,QAAQ,YAAY;AAAA,EACtBA,IAAE,QAAQ,YAAY;AACxB,CAAC;AAqCM,IAAM,iBAAiB,kBAAkB,OAAO;AAAA,EACrD,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,UAAUA,IAAE,IAAI,EAAE,SAAS;AAAA,EAC3B,KAAKA,IAAE,IAAI,EAAE,SAAS;AAAA,EAEtB,GAAG,aAAa;AAAA,EAChB,UAAU,OAAO,SAAS;AAAA,EAC1B,WAAW,OAAO,SAAS;AAAA,EAC3B,UAAU,OAAO,SAAS;AAAA,EAC1B,WAAW,OAAO,SAAS;AAAA,EAC3B,WAAW,aAAa,SAAS;AAAA,EACjC,WAAW,aAAa,SAAS;AAAA,EACjC,YAAY,OAAO,SAAS,EAAE,SAAS;AAAA,EACvC,QAAQ,OAAO,SAAS,EAAE,SAAS;AAAA,EACnC,YAAY,OAAO,SAAS;AAAA,EAC5B,gBAAgB,OAAO,SAAS;AAAA,EAChC,iBAAiB,OAAO,SAAS;AAAA,EACjC,eAAe,OAAO,SAAS;AAAA,EAC/B,kBAAkB,OAAO,SAAS;AACpC,CAAC;AAEM,IAAM,cAAcA,IAAE,OAAoB,CAAC,MAAM,cAAc,CAAC;AAEhE,IAAM,uBAAuB,eAAe,OAAO;AAAA,EACxD,QAAQA,IAAE,OAAsB,CAAC,MAAM,IAAI,EAAE,SAAS;AAAA,EACtD,aAAa,kBAAkB,SAAS;AAAA,EACxC,sBAAsBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3C,0BAA0BA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/C,iBAAiBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACtC,mBAAmB,OAAO,SAAS;AAAA,EACnC,eAAe,OAAO,SAAS;AAAA,EAC/B,aAAa,YAAY,SAAS;AAAA,EAClC,eAAeA,IAAE,OAAsB,CAAC,MAAM,IAAI,EAAE,SAAS;AAAA,EAC7D,YAAY,eAAe,SAAS;AACtC,CAAC;AAEM,IAAM,+BAA+B,qBAAqB,OAAO;AAAA,EACtE,YAAYA,IAAE,QAAQ,IAAI;AAC5B,CAAC;AAEM,IAAM,aAAaA,IAAE,mBAAmB,cAAc;AAAA,EAC3D,eAAe,OAAO,EAAE,YAAYA,IAAE,QAAQ,KAAK,EAAE,SAAS,EAAE,CAAC;AAAA,EACjE;AACF,CAAC;AAOD,iBAAyD,IAAI;AAC7D,iBAGE,IAAI;AAGN,iBAAiD,IAAI;;;AF5P9C,IAAM,aAAa,qBAAqB,OAAO;AAAA,EACpD,OAAOC,UAAS,SAAS;AAAA,EACzB,QAAQA,UAAS,SAAS;AAAA,EAC1B,SAASC,IAAE,MAAM,KAAK,EAAE,SAAS;AAAA,EACjC,gBAAgBD,UAAS,SAAS;AAAA,EAClC,gBAAgBA,UAAS,SAAS;AAAA,EAClC,UAAUC,IAAE,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,QAAQ,KAAK;AAChD,CAAC;AAGD,iBAAiD,IAAI;;;Ac3BrD,SAAS,YAAAC,iBAAgB;AAGzB,OAAkB;AAYX,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD,SAASC,UAAS,SAAS;AAAA,EAC3B,aAAaA,UAAS,SAAS;AAAA,EAC/B,cAAcA,UAAS,SAAS;AAAA,EAChC,YAAYA,UAAS,SAAS;AAAA,EAC9B,eAAeA,UAAS,SAAS;AACnC,CAAC;AAGD,iBAAuD,IAAI;;;ACxB3D,SAAS,YAAAC,WAAU,iBAAAC,sBAAqB;AAiBxC,SAAS,KAAAC,WAAS;AAsFlB,IAAM,mBAAmBA,IACtB,OAAO,EACP,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EACjC,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC;AAEzB,IAAM,kBAAkBA,IACrB,OAAoB,EACpB,KAAKA,IAAE,OAAOA,IAAE,OAAO,GAAG,gBAAgB,CAAC;AAEvC,IAAM,gBAAgBA,IAAE;AAAA,EAC7BA,IAAE,OAAO;AAAA,EACTA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC;AACtE;AAEA,iBAA+D,IAAI;AAE5D,IAAM,uBAAuBA,IAAE,OAAO;AAAA,EAC3C,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,oBAAoBA,IAAE,OAAOC,gBAAeD,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAC5E,CAAC;AAEM,IAAM,YAAY,qBAAqB,OAAO;AAAA,EACnD,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,WAAW,cAAc,SAAS;AAAA,EAClC,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,yBAAyBA,IAAE,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EAC/D,yBAAyBA,IAAE,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EAC/D,mBAAmB,yBAAwB,SAAS;AAAA,EACpD,oBAAoB,yBAAwB,SAAS;AAAA,EACrD,uBAAuBA,IAAE,MAAM,oBAAoB,EAAE,SAAS;AAAA,EAC9D,aAAa,kBAAkB,SAAS;AAAA,EACxC,eAAeE,UAAS,SAAS;AAAA,EACjC,UAAUA,UAAS,SAAS;AAAA,EAC5B,WAAWA,UAAS,SAAS;AAAA,EAC7B,2BAA2BF,IAAE,QAAQ,EAAE,SAAS;AAAA,EAChD,aAAa,gBAAgB,SAAS;AACxC,CAAC;AAKM,IAAM,WAAW;AAKxB,iBAAyD,IAAI;;;ACrJ7D,SAAS,YAAAG,iBAAgB;;;ACAzB,SAAS,KAAAC,WAAS;AAEX,IAAMC,oBAAmBD,IAC7B,OAAO,EACP,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EACjC,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC;AAElB,IAAM,wBAAwB,CACnC,WACG;AACH,SAAOA,IAAE,OAAOA,IAAE,KAAK,MAAM,GAAGC,iBAAgB;AAClD;;;ADKA,SAAS,KAAAC,WAAS;AA0BX,IAAM,cAAc,qBAAqB,OAAO;AAAA,EACrD,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,WAAWA,IACR,OAAOA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,GAAGA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,CAAC,EACpE,SAAS;AAAA,EACZ,aAAa,kBAAkB,SAAS;AAAA,EACxC,eAAeC,UAAS,SAAS;AAAA,EACjC,UAAUA,UAAS,SAAS;AAAA,EAC5B,WAAWA,UAAS,SAAS;AAAA,EAC7B,cAAcD,IAAE,KAAK,CAAC,QAAQ,OAAO,CAAC,EAAE,SAAS;AAAA,EACjD,oBAAoB,yBAAyB,SAAS;AAAA,EACtD,UAAUA,IAAE,MAAM,CAACA,IAAE,QAAQ,CAAC,GAAGA,IAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS;AAAA,EACzD,yBAAyBA,IAAE,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EAC/D,aAAaA,IACV,OAAoB,EACpB,KAAKA,IAAE,OAAOA,IAAE,OAAO,GAAGE,iBAAgB,CAAC,EAC3C,SAAS;AACd,CAAC;AAGD,iBAAmD,IAAI;;;AE5DvD,SAAS,KAAAC,WAAS;AASX,IAAM,oBAAoB,YAAY,OAAO;AAAA,EAClD,aAAaA,IAAE,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AACrD,CAAC;AAGD,iBAA+D,IAAI;;;AChBnE,SAAS,YAAAC,iBAAgB;AAczB,SAAS,KAAAC,WAAS;AAsBX,IAAM,iBAAiB,qBAAqB,OAAO;AAAA,EACxD,wBAAwBA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,WAAWA,IACR,OAAOA,IAAE,OAAO,EAAE,GAAGA,IAAE,OAAO,CAAC,GAAGA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,CAAC,EACpE,SAAS;AAAA,EACZ,aAAa,kBAAkB,SAAS;AAAA,EACxC,eAAeC,UAAS,SAAS;AAAA,EACjC,UAAUA,UAAS,SAAS;AAAA,EAC5B,WAAWA,UAAS,SAAS;AAAA,EAC7B,cAAcD,IAAE,KAAK,CAAC,QAAQ,OAAO,CAAC,EAAE,SAAS;AAAA,EACjD,oBAAoB,yBAAyB,SAAS;AAAA,EACtD,yBAAyBA,IAAE,MAAMA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EAC/D,UAAUA,IAAE,KAAK,CAAC,SAAS,IAAI,CAAC,EAAE,SAAS;AAC7C,CAAC;AAGD,iBAAyD,IAAI;;;ACpD7D,SAAS,KAAAE,WAAS;AAcX,IAAM,gBAAgB,CAAC,QAAQ,MAAM;AA+BrC,IAAM,YAAY,qBAAqB,OAAO;AAAA,EACnD,eAAeC,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC;AAAA,EAC/C,eAAeA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EAC1D,gBAAgBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACrC,gBAAgB,qBAAqB,SAAS;AAAA,EAC9C,aAAaA,IACV;AAAA,IACCA,IAAE,OAAO;AAAA,IACTA,IAAE,MAAM;AAAA,MACNA,IAAE,OAAO;AAAA,MACTA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,MAC7BA,IAAE,MAAMA,IAAE,OAAO,CAAC;AAAA,IACpB,CAAC;AAAA,EACH,EACC,SAAS;AACd,CAAC;;;AC5DD,SAAS,YAAAC,kBAAgB;AAKzB,SAAS,KAAAC,WAAS;AAiFlB,IAAM,0BAA0BA,IAC7B,OAAiC,EACjC,UAAU,CAAC,MAAM;AAChB,MAAI,MAAM;AAAW,WAAO;AAC5B,SAAOC,WAAS,MAAM,CAAC;AACzB,CAAC;AAEI,IAAM,kBAAkBD,IAC5B,mBAAmB,SAAS;AAAA,EAC3B,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IACxD,OAAOA,IAAE,QAAQ,QAAQ;AAAA,IACzB,cAAcC;AAAA,IACd,eAAeA;AAAA,IACf,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,MAAMD,IAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IACxD,OAAOA,IAAE,QAAQ,MAAM;AAAA,IACvB,YAAYC;AAAA,IACZ,aAAaA;AAAA,IACb,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,YAAYA,WAAS,SAAS,EAAE,SAAS,0BAA0B;AAAA,IACnE,aAAaA,WAAS,SAAS,EAAE,SAAS,2BAA2B;AAAA,IACrE,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,MAAMD,IAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IACxD,OAAOA,IAAE,QAAQ,MAAM;AAAA,IACvB,YAAYC;AAAA,IACZ,aAAaA;AAAA,IACb,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,YAAYA,WAAS,SAAS,EAAE,SAAS,0BAA0B;AAAA,IACnE,aAAaA,WAAS,SAAS,EAAE,SAAS,2BAA2B;AAAA,IACrE,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,MAAMD,IAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IACxD,OAAOA,IAAE,QAAQ,6BAA6B;AAAA,IAC9C,cAAcC;AAAA,IACd,cAAcA;AAAA,IACd,eAAeA;AAAA,IACf,WAAWD,IAAE,QAAQ,QAAQ,EAAE,SAAS;AAAA,IACxC,UAAUA,IAAE,QAAQ,MAAM,EAAE,SAAS;AAAA,IACrC,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,IAC1B,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,IACxD,OAAOA,IAAE,QAAQ,yBAAyB;AAAA,IAC1C,WAAWA,IAAE,QAAQ,MAAM;AAAA,IAC3B,UAAUA,IAAE,QAAQ,MAAM;AAAA,IAC1B,WAAWC;AAAA,IACX,YAAYA;AAAA,IACZ,cAAcA;AAAA,IACd,eAAeA;AAAA,IACf,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AACH,CAAC,EACA,OAAO,CAAC,MAAM;AACb,MAAI,gBAAgB,KAAK,EAAE,eAAe,QAAW;AACnD,MAAE,cAAc,EAAE;AAAA,EACpB;AACA,MAAI,iBAAiB,KAAK,EAAE,gBAAgB,QAAW;AACrD,MAAE,eAAe,EAAE;AAAA,EACrB;AACA,SAAO;AACT,CAAC;AAIH,iBAA2D,IAAI;;;ACnK/D,SAAS,kBAAkB;AAa3B,SAAS,KAAAC,WAAS;AAEX,IAAM,oBAAoB,CAAC,QAAQ,QAAQ,OAAO,KAAK;AAavD,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD;AAAA,EAEA,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAE9B,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAEhC,gBAAgB,qBAAqB,SAAS;AAAA,EAE9C,aAAa,sBAAsB,iBAAiB,EAAE,SAAS;AACjE,CAAC;AACM,IAAM,eAAe;AAG5B,iBAAuD,IAAI;;;AC5C3D,SAAS,cAAAC,mBAAkB;AAO3B,SAAS,KAAAC,WAAS;AASX,IAAM,qBAAqB,qBAAqB,OAAO;AAAA,EAC5D,eAAeC;AAAA,EACf,YAAYD,IAAE,KAAK,CAAC,WAAW,WAAW,CAAC,EAAE,SAAS;AACxD,CAAC;AAGD,iBAAiE,IAAI;;;ACtBrE,SAAS,WAAW,mBAAmB;AAWvC,SAAS,KAAAE,WAAS;AAWX,IAAM,eAAe,qBAAqB,OAAO;AAAA,EACtD;AAAA,EACA,iBAAiB;AAAA,EACjB,YAAYA,IAAE,KAAK,CAAC,WAAW,UAAU,CAAC,EAAE,SAAS;AAAA,EACrD,gBAAgB,qBAAqB,SAAS;AAChD,CAAC;AACM,IAAM,cAAc;AAG3B,iBAAqD,IAAI;;;AC/BzD,SAAS,aAAAC,YAAW,eAAAC,oBAAmB;AAMvC,SAAS,KAAAC,WAAS;AAUX,IAAM,iBAAiB,qBAAqB,OAAO;AAAA,EACxD,WAAWC;AAAA,EACX,iBAAiBC;AAAA,EACjB,YAAYF,IAAE,KAAK,CAAC,aAAa,cAAc,iBAAiB,CAAC,EAAE,SAAS;AAC9E,CAAC;AAGD,iBAAyD,IAAI;;;ACvB7D,SAAS,YAAAG,kBAAgB;AACzB,SAAS,KAAAC,WAAS;AAiBX,IAAM,kBAAkB,WAAW,OAAO;AAAA,EAC/C,cAAcC,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,aAAaA,IAAE,OAAO,EAAE,SAAS;AAAA,EACjC,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,UAAUA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACvC,WAAWA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACxC,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACtC,YAAYA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACzC,UAAUC,WAAS,SAAS;AAAA,EAC5B,YAAYD,IAAE,QAAQ,EAAE,SAAS;AACnC,CAAC;AAGD,iBAA2D,IAAI;;;AChC/D,SAAS,eAAAE,cAAa,eAAe;AAarC,SAAS,KAAAC,WAAS;AAEX,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAiBO,IAAM,iBAAiB,qBAAqB,OAAO;AAAA,EACxD,aAAAC;AAAA,EACA,kBAAkB,QAAQ,SAAS;AAAA,EACnC,gBAAgBD,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EACpD,WAAWA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC/C,eAAeA,IAAE,OAAO,EAAE,SAAS;AAAA,EACnC,cAAcA,IAAE,OAAO,EAAE,SAAS;AAAA,EAClC,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,UAAUA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,0BAA0BA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC9C,gBAAgB,qBAAqB,SAAS;AAAA,EAC9C,aAAa,sBAAsB,kBAAkB,EAAE,SAAS;AAClE,CAAC;AACM,IAAM,gBAAgB;AAE7B,iBAAiE,IAAI;;;ACtDrE,SAAS,KAAAE,WAAS;AAOX,IAAM,WAAWC,IAAE,OAAO;AAAA,EAC/B,MAAMA,IAAE,OAAO;AACjB,CAAC;AAGD,iBAA6C,IAAI;;;ACXjD,SAAS,KAAAC,WAAS;AAQX,IAAM,yBAAyBA,IAAE,OAAO;AAAA,EAC7C,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,SAASA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9B,SAASA,IAAE,QAAQ,EAAE,SAAS;AAChC,CAAC;AAMD,iBAAyE,IAAI;;;ACnB7E,OAAkB;AAIlB,SAAS,YAAAC,YAAU,UAAAC,eAAc;;;ACDjC,SAAS,KAAAC,WAAS;AAkFX,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC9C,KAAKA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC9B,OAAOC;AAAA,EACP,MAAMD,IAAE,OAAO;AAAA,EACf,OAAOA,IAAE,OAAO;AAAA,EAEhB,YAAYA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EACrC,gBAAgBA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAC3C,CAAC;AACD;AAAA,EACE;AACF;AAEO,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC9C,KAAKA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC9B,OAAOC;AAAA,EACP,KAAKD,IAAE,OAAO;AAAA,EACd,QAAQA,IAAE,OAAO;AAAA,EAEjB,YAAYA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EACrC,gBAAgBA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAC3C,CAAC;AACD;AAAA,EACE;AACF;AAEO,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC9C,KAAKA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC9B,OAAOA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAChC,KAAKA,IAAE,MAAMA,IAAE,OAAO,CAAC;AACzB,CAAC;AACD;AAAA,EACE;AACF;AAEO,IAAM,0BAA0BA,IAAE,OAAO;AAAA,EAC9C,KAAKA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC9B,OAAOA,IAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAChC,KAAKA,IAAE,MAAMA,IAAE,OAAO,CAAC;AACzB,CAAC;AACD;AAAA,EACE;AACF;AAEO,IAAM,kBAAkBA,IAAE,MAAM;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,iBAAmE,IAAI;;;ACxIvE,SAAS,KAAAE,WAAS;AAcX,IAAM,kBAAkB,eAC5B,KAAK;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,MAAMC,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,MAAM;AAAA,EACvB,OAAOC;AAAA,EACP,QAAQA;AACV,CAAC;AACH,iBAAmE,IAAI;AAShE,IAAM,oBAAoB,eAC9B,KAAK;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,MAAMD,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,QAAQ;AAAA,EACzB,QAAQC;AACV,CAAC;AACH,iBAAuE,IAAI;AASpE,IAAM,qBAAqB,eAC/B,KAAK;AAAA,EACJ,OAAO;AAAA,EACP,aAAa;AACf,CAAC,EACA,OAAO;AAAA,EACN,MAAMD,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,SAAS;AAAA,EAC1B,QAAQA,IAAE,MAAM,KAAK;AACvB,CAAC;AACH,iBAAyE,IAAI;AAOtE,IAAM,cAAcA,IAAE,mBAAmB,SAAS;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ACrED,SAAS,KAAAE,WAAS;AA2DX,IAAM,kBAAkB,eAC5B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,MAAMC,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,MAAM;AAAA,EACvB,OAAOC;AAAA,EACP,QAAQA;AAAA,EACR,WAAW,UAAU,SAAS;AAChC,CAAC;AAEH,iBAA2D,IAAI;AAExD,IAAM,yBAAyB,eACnC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,MAAMD,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,cAAc;AAAA,EAC/B,OAAOC;AAAA,EACP,QAAQA;AAAA,EACR,aAAaD,IAAE,OAAO;AAAA,EACtB,WAAW,UAAU,SAAS;AAChC,CAAC;AAEH,iBAAyE,IAAI;AAEtE,IAAM,oBAAoB,eAC9B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,QAAQ;AAAA,EACzB,QAAQC;AAAA,EACR,WAAW,UAAU,SAAS;AAChC,CAAC;AAEH,iBAA+D,IAAI;AAE5D,IAAM,kBAAkB,eAC5B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,MAAMD,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,MAAM;AAAA,EACvB,OAAOC;AAAA,EACP,QAAQA;AAAA,EACR,QAAQA;AAAA,EACR,WAAW,UAAU,SAAS;AAChC,CAAC;AAEH,iBAA2D,IAAI;AAExD,IAAM,qBAAqB,eAC/B,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,MAAMD,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,OAAOA,IAAE,QAAQ,SAAS;AAAA,EAC1B,QAAQA,IAAE,MAAM,KAAK;AAAA,EACrB,WAAW,UAAU,SAAS;AAChC,CAAC;AAEH,iBAAiE,IAAI;AAE9D,IAAM,cAAcA,IAAE,mBAAmB,SAAS;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,iBAAmD,IAAI;;;ACnIvD,SAA0B,KAAAE,WAAS;AAoB5B,IAAM,uBAAuB,eACjC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,OAAOC,IAAE,QAAQ,MAAM;AAAA,EACvB,OAAOC;AAAA,EACP,QAAQA;AACV,CAAC;AAEH,iBAAqE,IAAI;AAElE,IAAM,yBAAyB,eACnC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,OAAOD,IAAE,QAAQ,QAAQ;AAAA,EACzB,QAAQC;AACV,CAAC;AAEH,iBAAyE,IAAI;AAEtE,IAAM,mBAAmBD,IAAE,MAAM;AAAA,EACtC;AAAA,EACA;AACF,CAAC;AAGD,iBAA6D,IAAI;;;AC/CjE,SAAS,KAAAE,WAAS;AAWX,IAAM,YAAY,eACtB,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,MAAMC,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,UAAUC,WAAS,SAAS;AAAA,EAC5B,QAAQA,WAAS,SAAS;AAC5B,CAAC,EACA,UAAU,CAAC,OAAO;AAAA,EACjB,GAAG;AAAA,EACH,UAAU,EAAE,YAAY,IAAI,EAAE;AAAA,EAC9B,QAAQ,EAAE,UAAU,EAAE,WAAY;AACpC,EAAE;AAIJ,iBAA+C,IAAI;;;AC1BnD,SAAS,YAAAC,YAAU,oBAAAC,yBAAwB;AAC3C,SAAS,KAAAC,WAAS;AAGX,IAAM,UAAUC,IAAE,MAAM;AAAA,EAC7BA,IAAE,OAAO;AAAA,EACTA,IAAE;AAAA,IAA0C,CAAC,MAC3C,QAAQ,EAAE,eAAe;AAAA,EAC3B;AACF,CAAC;AAED,IAAM,iBAAiBA,IAAE,OAAO;AAAA,EAC9B,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,WAAWC,WAAS,SAAS;AAAA,EAC7B,qBAAqBD,IAAE,MAAM,KAAK,EAAE,SAAS;AAAA,EAC7C,eAAeA,IAAE,MAAME,iBAAgB,EAAE,SAAS;AAAA,EAClD,iBAAiBF,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,WAAWC,WAAS,SAAS;AAC/B,CAAC;AAEM,IAAM,aAAaD,IAAE,MAAM;AAAA,EAChC,eAAe,OAAO;AAAA,IACpB,MAAMA,IAAE,MAAM,OAAO;AAAA,EACvB,CAAC;AAAA,EACD,eAAe,OAAO;AAAA,IACpB,MAAM;AAAA,IACN,IAAI;AAAA,EACN,CAAC;AACH,CAAC;;;AC5BD,SAAwB,aAAAG,kBAAiB;AAEzC,SAAS,KAAAC,WAAS;AAgBX,IAAM,iBAAiBA,IAAE,OAAO;AAAA,EACrC,eAAeC,WAAU,QAAQ,KAAK,EAAE,SAAS;AACnD,CAAC;AAID,iBAAyD,IAAI;;;ACxB7D,SAAS,KAAAC,WAAS;AAclB,IAAM,WAAWC,IACd,OAAO,EACP,GAAGA,IAAE,OAAO,EAAE,SAAS,KAAK,CAAC,EAC7B,UAAU,CAAC,MAAM;AAChB,MAAI,OAAO,MAAM,UAAU;AACzB,UAAM,YAAY,EAAE,QAAQ,OAAO,EAAE;AACrC,UAAM,MAAM,OAAO,WAAW,SAAS;AACvC,QAAI,OAAO,MAAM,GAAG,GAAG;AACrB,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACpC;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT,CAAC,EACA,SAAS,yBAAyB;AAO9B,IAAM,eAAe,qBAAqB,OAAO;AAAA,EACtD,UAAU,SAAS,SAAS;AAAA,EAC5B,gBAAgB,qBAAqB,SAAS;AAChD,CAAC;AACM,IAAM,cAAc;AAE3B,iBAA6D,IAAI;;;ACzCjE,SAAS,YAAAC,kBAAgB;AAgBzB,SAAS,KAAAC,WAAS;AAoFX,IAAM,iBAAiB,qBAAqB,OAAO;AAAA,EACxD,UAAUA,IAAE,OAAO;AAAA,EACnB,OAAOC,WAAS,SAAS;AAAA,EACzB,oBAAoBD,IAAE,KAAK,CAAC,MAAM,QAAQ,QAAQ,OAAO,CAAC,EAAE,SAAS;AAAA,EACrE,QAAQA,IAAE,KAAK,CAAC,QAAQ,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,MAAM;AAAA,EAC5D,yBAAyBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC9C,WAAWA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,cAAcC,WAAS,SAAS;AAAA,EAChC,gBAAgBA,WAAS,SAAS;AAAA,EAClC,WAAWD,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACxC,aAAaA,IACV,OAAoB,EACpB,KAAKA,IAAE,OAAOA,IAAE,OAAO,GAAGE,iBAAgB,CAAC,EAC3C,SAAS;AAAA,EACZ,iBAAiBF,IAAE,KAAK,CAAC,QAAQ,OAAO,CAAC,EAAE,SAAS;AAAA,EACpD,mBAAmB,wBAAwB,SAAS;AAAA,EACpD,aAAa,kBAAkB,SAAS;AAAA,EACxC,eAAeC,WAAS,SAAS;AAAA,EACjC,UAAUA,WAAS,SAAS;AAAA,EAC5B,WAAWA,WAAS,SAAS;AAC/B,CAAC;AAGD,iBAAyD,IAAI;;;AC3H7D,SAAS,KAAAE,WAAS;AAGlB,SAAS,YAAAC,iBAAgB;AAelB,IAAM,gBAAgBC,IAAE,OAAO;AAAA,EACpC,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,MAAMC,WAAS,SAAS;AAAA,EACxB,MAAMA,WAAS,SAAS;AAAA,EACxB,aAAaF,UAAS,SAAS;AAAA,EAC/B,YAAYC,IAAE,KAAK,CAAC,QAAQ,OAAO,SAAS,QAAQ,CAAC,EAAE,SAAS;AAClE,CAAC;AAGD,iBAAuD,IAAI;;;AC5B3D,SAAS,KAAAE,WAAS;AAGlB,SAAS,YAAAC,iBAAgB;AAYlB,IAAM,gBAAgBC,IAAE,OAAO;AAAA,EACpC,KAAKA,IAAE,OAAO,EAAE,SAAS;AAAA,EACzB,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,YAAYA,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EACxD,MAAMC,WAAS,SAAS;AAAA,EACxB,MAAMA,WAAS,SAAS;AAAA,EACxB,aAAaF,UAAS,SAAS;AAAA,EAC/B,YAAYC,IAAE,KAAK,CAAC,QAAQ,OAAO,SAAS,QAAQ,CAAC,EAAE,SAAS;AAClE,CAAC;AAGD,iBAAuD,IAAI;;;ACzB3D,OAAkB;AAMX,IAAM,kBAAkB,UAAU,OAAO,CAAC,CAAC;AAElD,iBAAmE,IAAI;;;ACFhE,IAAM,kBAAkB;AAG/B,iBAA2D,IAAI;;;ACL/D,SAAS,KAAAE,WAAS;AAMX,IAAM,kBAAkB,qBAAqB,OAAO;AAAA,EACzD,MAAMA,IAAE,KAAK,CAAC,OAAO,OAAO,OAAO,QAAQ,UAAU,MAAM,CAAC;AAC9D,CAAC;AAEM,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,iBAA2D,IAAI;;;ACpB/D,SAAS,KAAAC,WAAS;AAOX,IAAM,cAAc,qBAAqB,OAAO;AAAA,EACrD,aAAaA,IAAE,KAAK,CAAC,KAAK,GAAG,CAAC;AAAA,EAC9B,YAAYA,IAAE,KAAK,CAAC,eAAe,WAAW,CAAC;AACjD,CAAC;AAEM,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,iBAAmD,IAAI;;;AC3BvD,SAAS,kBAAkB;AAW3B,SAAS,KAAAC,WAAS;AAQX,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD;AAAA,EACA,kBAAkBA,IAAE,MAAM,CAACA,IAAE,OAAO,GAAGA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAAA,EAC7D,gBAAgB,qBAAqB,SAAS;AAChD,CAAC;AAEM,IAAM,eAAe;AAI5B,iBAAuD,IAAI;;;ACxB3D,SAAS,KAAAC,WAAS;AAOlB,IAAM,sBAAsBC,IAAE,KAAK;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAMC,oBAAmBD,IACtB,OAAO,EACP,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EACjC,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC;AAEzB,IAAME,mBAAkBF,IAAE,OAAO,qBAAqBC,iBAAgB;AAEtE,IAAM,eAAeD,IAAE,KAAK,CAAC,YAAY,YAAY,SAAS,SAAS,KAAK,CAAC;AAEtE,IAAM,aAAa,qBACvB,OAAO;AAAA,EACN,aAAaE,iBAAgB,SAAS;AAAA,EACtC,SAAS,aAAa,SAAS,EAAE,QAAQ,UAAU;AAAA,EACnD,UAAUF,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,UAAUA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,OAAOA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5B,OAAOA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC5B,KAAKA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC1B,gBAAgB,qBAAqB,SAAS;AAChD,CAAC,EACA,YAAY,CAAC,MAAM,QAAQ;AAE1B,QAAM,eAAe;AAAA,IACnB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,EACP,EAAE,OAAO,OAAO,EAAE;AAElB,MAAI,eAAe,GAAG;AACpB,QAAI,SAAS;AAAA,MACX,MAAMA,IAAE,aAAa;AAAA,MACrB,SAAS;AAAA,MACT,MAAM,CAAC;AAAA,IACT,CAAC;AACD,WAAOA,IAAE;AAAA,EACX;AACF,CAAC,EACA,UAAU,CAAC,SAAS;AAEnB,QAAM,SAAS;AAAA,IACb,GAAG;AAAA,IACH,UAAU;AAAA,IACV,UAAU;AAAA,IACV,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,EACP;AAEA,MAAI,KAAK;AAAU,WAAO,WAAW;AAAA,WAC5B,KAAK;AAAU,WAAO,WAAW;AAAA,WACjC,KAAK;AAAO,WAAO,QAAQ;AAAA,WAC3B,KAAK;AAAO,WAAO,QAAQ;AAAA,WAC3B,KAAK;AAAK,WAAO,MAAM;AAAA,OAC3B;AACH,YAAQ,KAAK,SAAS;AAAA,MACpB,KAAK;AACH,eAAO,WAAW;AAClB;AAAA,MACF,KAAK;AACH,eAAO,WAAW;AAClB;AAAA,MACF,KAAK;AACH,eAAO,QAAQ;AACf;AAAA,MACF,KAAK;AACH,eAAO,QAAQ;AACf;AAAA,MACF,KAAK;AACH,eAAO,MAAM;AACb;AAAA,MACF;AACE,eAAO,WAAW;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AACT,CAAC;AAEI,IAAM,YAAY;AAqBzB,iBAAiD,IAAI;;;ACrHrD,SAAS,KAAAG,WAAS;AAEX,IAAM,WAAW,qBAAqB,OAAO;AAAA,EAClD,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,iBAAiBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACrC,gBAAgB,qBAAqB,SAAS;AAChD,CAAC;AACM,IAAM,UAAU;;;ACPvB,SAAS,KAAAC,WAAS;AAWX,IAAM,cAAc,qBACxB,OAAO;AAAA,EACN,MAAMA,IAAE,KAAK,CAAC,QAAQ,QAAQ,QAAQ,MAAM,CAAC,EAAE,SAAS;AAAA,EACxD,kBAAkBA,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EACtD,MAAMA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3B,MAAMA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3B,MAAMA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC3B,MAAMA,IAAE,QAAQ,EAAE,SAAS;AAC7B,CAAC,EACA,UAAU,CAAC,UAAU;AACpB,QAAM,eAA4B,EAAE,GAAG,MAAM;AAE7C,MAAI,aAAa,MAAM;AACrB,iBAAa,OAAO;AAAA,EACtB,WAAW,aAAa,MAAM;AAC5B,iBAAa,OAAO;AAAA,EACtB,WAAW,aAAa,MAAM;AAC5B,iBAAa,OAAO;AAAA,EACtB,WAAW,aAAa,MAAM;AAC5B,iBAAa,OAAO;AAAA,EACtB;AAEA,UAAQ,aAAa,MAAM;AAAA,IACzB,KAAK;AACH,mBAAa,OAAO;AACpB;AAAA,IACF,KAAK;AACH,mBAAa,OAAO;AACpB;AAAA,IACF,KAAK;AACH,mBAAa,OAAO;AACpB;AAAA,IACF,KAAK;AACH,mBAAa,OAAO;AACpB;AAAA,EACJ;AAEA,SAAO;AACT,CAAC;AAGH,iBAAmD,IAAI;;;AC1DvD,SAAS,UAAAC,eAAc;AAEvB,SAAS,KAAAC,WAAS;AAEX,IAAM,2BAA2B,eAAe,OAAO;AAAA,EAC5D,MAAMA,IAAE,OAAO;AAAA,EACf,iBAAiBA,IACd,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EACvE,QAAQ,QAAQ;AAAA,EACnB,MAAMA,IAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAUC,QAAO,SAAS;AAAA,EAC1B,OAAOD,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;;;ACZD,SAAS,UAAAE,SAAQ,oBAAAC,yBAAwB;AAEzC,SAAS,KAAAC,WAAS;AAEX,IAAM,2BAA2B,eACrC,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,KAAK,CAAC,EAClD,OAAO;AAAA,EACN,OAAOA,IAAE,MAAMC,iBAAgB;AAAA,EAC/B,aAAaC,QAAO,SAAS;AAAA,EAC7B,OAAOF,IAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;;;ACVH,SAAS,YAAAG,YAAU,oBAAAC,yBAAwB;AAC3C,SAAS,KAAAC,WAAS;AAEX,IAAM,gBAAgBA,IAAE,OAAO;AAAA,EACpC,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAWF,WAAS,SAAS;AAAA,EAC7B,OAAOE,IAAE,MAAMD,iBAAgB;AACjC,CAAC;;;ACPD,SAAS,YAAAE,YAAU,aAAAC,kBAAqC;AAGxD,SAAS,KAAAC,WAAS;AAWX,IAAM,WAAW,kBAAkB,OAAO;AAAA,EAC/C,MAAMA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,WAAWC;AAAA,EACX,SAASA;AAAA,EACT,cAAcC;AAAA,EACd,eAAeA;AAAA,EACf,YAAYF,IAAE,OAAO,EAAE,GAAGA,IAAE,MAAMA,IAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAC1D,CAAC;AAED,iBAA6C,IAAI;;;ACvBjD,SAAS,YAAAG,kBAAgB;AAMzB,SAAS,KAAAC,WAAS;AA6BX,IAAM,iBAAiB,qBAC3B,OAAO;AAAA,EACN,kBAAkBA,IAAE,KAAK,CAAC,OAAO,cAAc,CAAC,EAAE,SAAS;AAAA,EAC3D,UAAUA,IAAE,KAAK,CAAC,QAAQ,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,QAAQ;AAAA,EAChE,aAAaC,WAAS,SAAS;AAAA,EAC/B,cAAcA,WAAS,SAAS;AAAA,EAChC,OAAOA,WAAS,SAAS;AAAA,EACzB,QAAQA,WAAS,SAAS;AAC5B,CAAC,EACA;AAAA,EACC,CAAC,UACC,MAAM,qBAAqB,kBAC3B,MAAM,iBAAiB;AAAA,EACzB,EAAE,SAAS,uDAAuD;AACpE;AAGF,iBAAyD,IAAI;;;AClD7D,SAAS,KAAAC,WAAS;AAOX,IAAM,qBAAqB,eAC/B,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EACvC,OAAO;AAAA,EACN,YAAYA,IAAE,OAAO;AACvB,CAAC;AAGH,iBAAiE,IAAI;;;AChBrE,SAAS,YAAAC,kBAAgB;AAEzB,SAAS,KAAAC,WAAS;AAEX,IAAM,kBAAkBA,IAAE,MAAM;AAAA,EACrC,eAAe,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,IAChD,OAAOA,IAAE,QAAQ,QAAQ;AAAA,IACzB,QAAQC;AAAA,EACV,CAAC;AAAA,EACD,eAAe,OAAO;AAAA,IACpB,OAAOD,IAAE,QAAQ,MAAM;AAAA,IACvB,OAAOC;AAAA,IACP,QAAQA;AAAA,EACV,CAAC;AACH,CAAC;;;ACdD,SAAS,WAAAC,gBAAe;AAIjB,IAAM,mBAAmB,qBAAqB,OAAO;AAAA,EAC1D,SAAAC;AACF,CAAC;;;ACND,SAAS,YAAAC,kBAAgB;AACzB,SAAS,KAAAC,WAAS;;;ACDlB,SAAS,KAAAC,WAAS;AAEX,IAAM,kBAAkBA,IAAE,KAAK;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ADRM,IAAM,oBAAoBC,IAC9B,OAAO;AAAA,EACN,MAAMC,WAAS,SAAS;AAAA,EACxB,MAAMA,WAAS,SAAS;AAAA,EACxB,OAAOA,WAAS,SAAS;AAAA,EACzB,QAAQA,WAAS,SAAS;AAAA,EAC1B,SAASD,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EAEtC,SAASC,WAAS,SAAS;AAAA,EAC3B,aAAaA,WAAS,SAAS;AAAA,EAC/B,cAAcA,WAAS,SAAS;AAAA,EAChC,YAAYA,WAAS,SAAS;AAAA,EAC9B,eAAeA,WAAS,SAAS;AAAA,EAEjC,OAAOD,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,gBAAgB,gBAAgB,QAAQ,UAAU;AAAA,EAClD,YAAYA,IAAE,OAAO,EAAE,SAAS;AAAA,EAChC,eAAeC,WAAS,SAAS;AAAA,EACjC,aAAaD,IAAE,QAAQ,EAAE,QAAQ,KAAK;AAAA,EACtC,aAAaA,IAAE,KAAK,CAAC,SAAS,QAAQ,CAAC,EAAE,QAAQ,OAAO;AAC1D,CAAC,EACA;AAAA,EACC,CAAC,QACE,IAAI,UAAU,UAAa,IAAI,WAAW,UAC1C,MAAM,QAAQ,IAAI,OAAO,KAAK,IAAI,QAAQ,SAAS;AAAA,EACtD;AAAA,IACE,SACE;AAAA,EACJ;AACF,EACC;AAAA,EACC,CAAC,QACC,EACE,IAAI,UAAU,UACd,IAAI,WAAW,UACf,MAAM,QAAQ,IAAI,OAAO,KACzB,IAAI,QAAQ,SAAS;AAAA,EAEzB;AAAA,IACE,SACE;AAAA,EACJ;AACF;;;AE9CF,SAAS,YAAAE,kBAAgB;AACzB,SAAS,KAAAC,WAAS;AAEX,IAAM,qBAAqBA,IAAE,OAAO;AAAA,EACzC,IAAID;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AACN,CAAC;;;ACRD,SAAS,YAAAE,YAAU,YAAAC,iBAAgB;AACnC,SAAS,KAAAC,WAAS;;;ACDlB,SAAS,KAAAC,WAAS;AAEX,IAAM,kBAAkBA,IAAE,KAAK;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ADHM,IAAM,qBAAqBC,IAAE,OAAO;AAAA,EACzC,MAAMC,WAAS,SAAS;AAAA,EACxB,MAAMA,WAAS,SAAS;AAAA,EACxB,MAAMD,IAAE,OAAO;AAAA,EACf,UAAUA,IAAE,OAAO,EAAE,QAAQ,CAAC;AAAA,EAC9B,QAAQA,IACL,MAAM,CAAC,gBAAgB,SAAS,QAAQ,GAAG,eAAe,CAAC,EAC3D,QAAQ,QAAQ;AAAA,EACnB,OAAOA,IAAE,OAAO,EAAE,QAAQ,SAAS;AAAA,EACnC,aAAaE,UAAS,QAAQ,CAAC;AACjC,CAAC;;;AEfD,SAAS,SAAAC,cAAa;AACtB,SAAS,KAAAC,WAAS;AAEX,IAAM,qBAAqBA,IAAE,OAAO;AAAA,EACzC,QAAQA,IAAE,MAAMD,MAAK;AAAA,EACrB,UAAUC,IAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC9C,WAAWA,IAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS;AAC9C,CAAC;;;ACPD,SAAS,UAAAC,eAAc;AAGvB,SAAS,KAAAC,WAAS;AAEX,IAAM,sBAAsB,eAAe,OAAO;AAAA,EACvD,MAAMA,IAAE,OAAO;AAAA,EACf,iBAAiB,gBAAgB,QAAQ,QAAQ;AAAA,EACjD,MAAMA,IAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAUC,QAAO,SAAS;AAC5B,CAAC;;;ACVD,SAAS,UAAAC,SAAQ,oBAAAC,yBAAwB;AAEzC,SAAS,KAAAC,WAAS;AAEX,IAAM,sBAAsB,eAChC,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,KAAK,CAAC,EAClD,OAAO;AAAA,EACN,OAAOA,IAAE,MAAMC,iBAAgB;AAAA,EAC/B,aAAaC,QAAO,SAAS;AAC/B,CAAC;;;ACTH,SAAS,YAAAC,kBAAgB;AAIlB,IAAM,sBAAsB,eAChC,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,KAAK,CAAC,EAClD,OAAO;AAAA,EACN,aAAaC;AAAA,EACb,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AAAA,EACJ,IAAIA;AACN,CAAC;;;ACZH,SAAS,YAAAC,kBAAgB;AAEzB,SAAS,KAAAC,WAAS;AAEX,IAAM,sBAAsB,eAChC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,QAAQA,IAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,SAAS;AAAA,EAC3C,QAAQA,IAAE,KAAK,CAAC,UAAU,SAAS,MAAM,CAAC,EAAE,SAAS;AAAA,EACrD,aAAaC,WAAS,SAAS;AAAA,EAC/B,OAAOA;AAAA,EACP,QAAQA;AACV,CAAC;;;ACZH,SAAS,YAAAC,kBAAgB;AAEzB,SAAS,KAAAC,WAAS;AAEX,IAAM,wBAAwB,eAClC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,UAAUA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,WAAWA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,aAAaC,WAAS,SAAS;AAAA,EAC/B,QAAQA;AACV,CAAC;;;ACXH,SAAS,YAAAC,YAAU,aAAAC,YAAW,oBAAAC,yBAAwB;AACtD,SAAS,KAAAC,WAAS;AAEX,IAAM,sBAAsBA,IAAE,OAAO;AAAA,EAC1C,GAAGH;AAAA,EACH,GAAGA;AAAA,EACH,KAAKG,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC1B,SAASF,WAAU,SAAS;AAC9B,CAAC;AAEM,IAAM,iBAAiBE,IAAE,OAAO;AAAA,EACrC,KAAKA,IACF,OAAO,EACP,SAAS,EACT;AAAA,IACC;AAAA,EACF;AAAA,EACF,OAAOA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,QAAQD,kBAAiB,GAAG,mBAAmB,EAAE,SAAS;AAAA,EAC1D,SAASC,IACN,MAAMD,iBAAgB,EACtB,GAAGC,IAAE,MAAM,mBAAmB,CAAC,EAC/B,SAAS;AAAA,EACZ,YAAYA,IAAE,OAAO,EAAE,SAAS;AAClC,CAAC;;;ACtBD,SAAS,KAAAC,WAAS;AAEX,IAAM,YAAY,kBAAkB,OAAO;AAAA,EAChD,MAAMA,IAAE,OAAO;AAAA,EACf,WAAWA,IAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,SAASA,IAAE,MAAMA,IAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACtC;AACF,CAAC;;;ACFD,SAAS,KAAAC,WAAS;AA8BlB,IAAM,yBAAyBA,IAAE,MAAMA,IAAE,IAAI,CAAC,EAAE,SAAS,cAAc;AACvE,IAAM,sBAAsBA,IACzB,SAAS,EACT,KAAKA,IAAE,OAAO,CAAC,EACf,QAAQA,IAAE,QAAQA,IAAE,OAAO,EAAE,sBAAsBA,IAAE,MAAMA,IAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EACvE,SAAS,uDAAuD;AAE5D,IAAM,iBAAiBA,IAAE,OAAO;AAAA,EACrC,aAAa,YAAY,SAAS;AAAA,EAClC,YAAY,eAAe,SAAS;AAAA,EACpC,gBAAgBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACpC,oBAAoBA,IAAE,OAAO,EAAE,SAAS;AAAA,EACxC,kBAAkBA,IAAE,IAAI,EAAE,SAAS;AAAA,EACnC,aAAaA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAClC,mBAAmBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EACxC,qBAAqBA,IAAE,QAAQ,EAAE,SAAS;AAAA,EAC1C,qBAAqBA,IAClB;AAAA,IACCA,IAAE,OAAO;AAAA,IACTA,IAAE;AAAA,MACAA,IAAE,OAAO;AAAA,MACTA,IAAE,MAAM,CAAC,wBAAwB,mBAAmB,CAAC;AAAA,IACvD;AAAA,EACF,EACC,SAAS;AACd,CAAC;AAED,iBAAiE,IAAI;","names":["z","z","distance","z","z","z","z","z","z","distance","z","z","distance","z","distance","distance","distance","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","point","z","point","z","z","z","point","z","point","z","z","distance","z","distance","distance","distance","supplier_name","z","supplier_name","distance","distance","z","connectionTarget","z","distance","connectionTarget","z","distance","z","distance","z","z","distance","z","distance","z","resistance","z","resistance","z","frequency","capacitance","z","frequency","capacitance","distance","z","z","distance","capacitance","z","capacitance","z","z","z","distance","length","z","distance","z","z","distance","z","z","distance","z","z","distance","z","z","distance","distance","route_hint_point","z","z","distance","route_hint_point","layer_ref","z","layer_ref","z","z","distance","z","distance","connectionTarget","z","rotation","z","distance","z","rotation","z","distance","z","z","z","z","z","connectionTarget","connectionsProp","z","z","length","z","length","length","route_hint_point","z","route_hint_point","length","distance","route_hint_point","z","distance","layer_ref","z","layer_ref","distance","distance","z","distance","z","distance","z","distance","voltage","voltage","distance","z","z","z","distance","distance","z","distance","rotation","z","z","z","distance","rotation","point","z","length","z","length","length","route_hint_point","z","route_hint_point","length","distance","distance","distance","z","distance","distance","z","distance","distance","layer_ref","route_hint_point","z","z","z"]}
|
|
@@ -8,6 +8,7 @@ import { z } from "zod"
|
|
|
8
8
|
export interface CirclePlatedHoleProps
|
|
9
9
|
extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
|
|
10
10
|
name?: string
|
|
11
|
+
connectsTo?: string | string[]
|
|
11
12
|
shape: "circle"
|
|
12
13
|
holeDiameter: number | string
|
|
13
14
|
outerDiameter: number | string
|
|
@@ -17,6 +18,7 @@ export interface CirclePlatedHoleProps
|
|
|
17
18
|
export interface OvalPlatedHoleProps
|
|
18
19
|
extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
|
|
19
20
|
name?: string
|
|
21
|
+
connectsTo?: string | string[]
|
|
20
22
|
shape: "oval"
|
|
21
23
|
outerWidth: number | string
|
|
22
24
|
outerHeight: number | string
|
|
@@ -33,6 +35,7 @@ export interface OvalPlatedHoleProps
|
|
|
33
35
|
export interface PillPlatedHoleProps
|
|
34
36
|
extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
|
|
35
37
|
name?: string
|
|
38
|
+
connectsTo?: string | string[]
|
|
36
39
|
shape: "pill"
|
|
37
40
|
outerWidth: number | string
|
|
38
41
|
outerHeight: number | string
|
|
@@ -50,6 +53,7 @@ export interface PillPlatedHoleProps
|
|
|
50
53
|
export interface CircularHoleWithRectPlatedProps
|
|
51
54
|
extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
|
|
52
55
|
name?: string
|
|
56
|
+
connectsTo?: string | string[]
|
|
53
57
|
shape: "circular_hole_with_rect_pad"
|
|
54
58
|
holeDiameter: number | string
|
|
55
59
|
rectPadWidth: number | string
|
|
@@ -62,6 +66,7 @@ export interface CircularHoleWithRectPlatedProps
|
|
|
62
66
|
export interface PillWithRectPadPlatedHoleProps
|
|
63
67
|
extends Omit<PcbLayoutProps, "pcbRotation" | "layer"> {
|
|
64
68
|
name?: string
|
|
69
|
+
connectsTo?: string | string[]
|
|
65
70
|
shape: "pill_hole_with_rect_pad"
|
|
66
71
|
holeShape: "pill"
|
|
67
72
|
padShape: "rect"
|
|
@@ -90,6 +95,7 @@ export const platedHoleProps = z
|
|
|
90
95
|
.discriminatedUnion("shape", [
|
|
91
96
|
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
|
|
92
97
|
name: z.string().optional(),
|
|
98
|
+
connectsTo: z.string().or(z.array(z.string())).optional(),
|
|
93
99
|
shape: z.literal("circle"),
|
|
94
100
|
holeDiameter: distance,
|
|
95
101
|
outerDiameter: distance,
|
|
@@ -97,6 +103,7 @@ export const platedHoleProps = z
|
|
|
97
103
|
}),
|
|
98
104
|
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
|
|
99
105
|
name: z.string().optional(),
|
|
106
|
+
connectsTo: z.string().or(z.array(z.string())).optional(),
|
|
100
107
|
shape: z.literal("oval"),
|
|
101
108
|
outerWidth: distance,
|
|
102
109
|
outerHeight: distance,
|
|
@@ -108,6 +115,7 @@ export const platedHoleProps = z
|
|
|
108
115
|
}),
|
|
109
116
|
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
|
|
110
117
|
name: z.string().optional(),
|
|
118
|
+
connectsTo: z.string().or(z.array(z.string())).optional(),
|
|
111
119
|
shape: z.literal("pill"),
|
|
112
120
|
outerWidth: distance,
|
|
113
121
|
outerHeight: distance,
|
|
@@ -119,6 +127,7 @@ export const platedHoleProps = z
|
|
|
119
127
|
}),
|
|
120
128
|
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
|
|
121
129
|
name: z.string().optional(),
|
|
130
|
+
connectsTo: z.string().or(z.array(z.string())).optional(),
|
|
122
131
|
shape: z.literal("circular_hole_with_rect_pad"),
|
|
123
132
|
holeDiameter: distance,
|
|
124
133
|
rectPadWidth: distance,
|
|
@@ -129,6 +138,7 @@ export const platedHoleProps = z
|
|
|
129
138
|
}),
|
|
130
139
|
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
|
|
131
140
|
name: z.string().optional(),
|
|
141
|
+
connectsTo: z.string().or(z.array(z.string())).optional(),
|
|
132
142
|
shape: z.literal("pill_hole_with_rect_pad"),
|
|
133
143
|
holeShape: z.literal("pill"),
|
|
134
144
|
padShape: z.literal("rect"),
|