@tscircuit/props 0.0.328 → 0.0.330

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -260,55 +260,69 @@ expectTypesMatch(true);
260
260
  import { z as z12 } from "zod";
261
261
  var schematicPinLabel = z12.string().regex(/^[A-Za-z0-9_]+$/);
262
262
 
263
+ // lib/common/ninePointAnchor.ts
264
+ import { z as z13 } from "zod";
265
+ var ninePointAnchor = z13.enum([
266
+ "top_left",
267
+ "top_center",
268
+ "top_right",
269
+ "center_left",
270
+ "center",
271
+ "center_right",
272
+ "bottom_left",
273
+ "bottom_center",
274
+ "bottom_right"
275
+ ]);
276
+
263
277
  // lib/components/board.ts
264
- import { z as z27 } from "zod";
278
+ import { z as z28 } from "zod";
265
279
 
266
280
  // lib/components/group.ts
267
281
  import { length as length2, distance as distance6 } from "circuit-json";
268
282
 
269
283
  // lib/common/point.ts
270
284
  import { distance as distance5 } from "circuit-json";
271
- import { z as z13 } from "zod";
272
- var point = z13.object({
285
+ import { z as z14 } from "zod";
286
+ var point = z14.object({
273
287
  x: distance5,
274
288
  y: distance5
275
289
  });
276
290
 
277
291
  // lib/components/group.ts
278
- import { z as z26 } from "zod";
292
+ import { z as z27 } from "zod";
279
293
 
280
294
  // lib/manual-edits/manual-edit-events/base_manual_edit_event.ts
281
- import { z as z14 } from "zod";
282
- var base_manual_edit_event = z14.object({
283
- edit_event_id: z14.string(),
284
- in_progress: z14.boolean().optional(),
285
- created_at: z14.number()
295
+ import { z as z15 } from "zod";
296
+ var base_manual_edit_event = z15.object({
297
+ edit_event_id: z15.string(),
298
+ in_progress: z15.boolean().optional(),
299
+ created_at: z15.number()
286
300
  });
287
301
  expectTypesMatch(
288
302
  true
289
303
  );
290
304
 
291
305
  // lib/manual-edits/manual-edit-events/edit_pcb_component_location_event.ts
292
- import { z as z15 } from "zod";
306
+ import { z as z16 } from "zod";
293
307
  var edit_pcb_component_location_event = base_manual_edit_event.extend({
294
- pcb_edit_event_type: z15.literal("edit_component_location").describe("deprecated"),
295
- edit_event_type: z15.literal("edit_pcb_component_location"),
296
- pcb_component_id: z15.string(),
297
- original_center: z15.object({ x: z15.number(), y: z15.number() }),
298
- new_center: z15.object({ x: z15.number(), y: z15.number() })
308
+ pcb_edit_event_type: z16.literal("edit_component_location").describe("deprecated"),
309
+ edit_event_type: z16.literal("edit_pcb_component_location"),
310
+ pcb_component_id: z16.string(),
311
+ original_center: z16.object({ x: z16.number(), y: z16.number() }),
312
+ new_center: z16.object({ x: z16.number(), y: z16.number() })
299
313
  });
300
314
  var edit_component_location_event = edit_pcb_component_location_event;
301
315
  expectTypesMatch(true);
302
316
 
303
317
  // lib/manual-edits/manual-edit-events/edit_trace_hint_event.ts
304
- import { z as z16 } from "zod";
318
+ import { z as z17 } from "zod";
305
319
  var edit_trace_hint_event = base_manual_edit_event.extend({
306
- pcb_edit_event_type: z16.literal("edit_trace_hint").describe("deprecated"),
307
- edit_event_type: z16.literal("edit_pcb_trace_hint").optional(),
308
- pcb_port_id: z16.string(),
309
- pcb_trace_hint_id: z16.string().optional(),
310
- route: z16.array(
311
- z16.object({ x: z16.number(), y: z16.number(), via: z16.boolean().optional() })
320
+ pcb_edit_event_type: z17.literal("edit_trace_hint").describe("deprecated"),
321
+ edit_event_type: z17.literal("edit_pcb_trace_hint").optional(),
322
+ pcb_port_id: z17.string(),
323
+ pcb_trace_hint_id: z17.string().optional(),
324
+ route: z17.array(
325
+ z17.object({ x: z17.number(), y: z17.number(), via: z17.boolean().optional() })
312
326
  )
313
327
  });
314
328
  expectTypesMatch(
@@ -316,38 +330,38 @@ expectTypesMatch(
316
330
  );
317
331
 
318
332
  // lib/manual-edits/manual-edit-events/edit_schematic_component_location_event.ts
319
- import { z as z17 } from "zod";
333
+ import { z as z18 } from "zod";
320
334
  var edit_schematic_component_location_event = base_manual_edit_event.extend({
321
- edit_event_type: z17.literal("edit_schematic_component_location"),
322
- schematic_component_id: z17.string(),
323
- original_center: z17.object({ x: z17.number(), y: z17.number() }),
324
- new_center: z17.object({ x: z17.number(), y: z17.number() })
335
+ edit_event_type: z18.literal("edit_schematic_component_location"),
336
+ schematic_component_id: z18.string(),
337
+ original_center: z18.object({ x: z18.number(), y: z18.number() }),
338
+ new_center: z18.object({ x: z18.number(), y: z18.number() })
325
339
  });
326
340
  expectTypesMatch(true);
327
341
 
328
342
  // lib/manual-edits/manual-edit-events/edit_pcb_group_location_event.ts
329
- import { z as z18 } from "zod";
343
+ import { z as z19 } from "zod";
330
344
  var edit_pcb_group_location_event = base_manual_edit_event.extend({
331
- edit_event_type: z18.literal("edit_pcb_group_location"),
332
- pcb_group_id: z18.string(),
333
- original_center: z18.object({ x: z18.number(), y: z18.number() }),
334
- new_center: z18.object({ x: z18.number(), y: z18.number() })
345
+ edit_event_type: z19.literal("edit_pcb_group_location"),
346
+ pcb_group_id: z19.string(),
347
+ original_center: z19.object({ x: z19.number(), y: z19.number() }),
348
+ new_center: z19.object({ x: z19.number(), y: z19.number() })
335
349
  });
336
350
  expectTypesMatch(true);
337
351
 
338
352
  // lib/manual-edits/manual-edit-events/edit_schematic_group_location_event.ts
339
- import { z as z19 } from "zod";
353
+ import { z as z20 } from "zod";
340
354
  var edit_schematic_group_location_event = base_manual_edit_event.extend({
341
- edit_event_type: z19.literal("edit_schematic_group_location"),
342
- schematic_group_id: z19.string(),
343
- original_center: z19.object({ x: z19.number(), y: z19.number() }),
344
- new_center: z19.object({ x: z19.number(), y: z19.number() })
355
+ edit_event_type: z20.literal("edit_schematic_group_location"),
356
+ schematic_group_id: z20.string(),
357
+ original_center: z20.object({ x: z20.number(), y: z20.number() }),
358
+ new_center: z20.object({ x: z20.number(), y: z20.number() })
345
359
  });
346
360
  expectTypesMatch(true);
347
361
 
348
362
  // lib/manual-edits/manual_edit_event.ts
349
- import { z as z20 } from "zod";
350
- var manual_edit_event = z20.union([
363
+ import { z as z21 } from "zod";
364
+ var manual_edit_event = z21.union([
351
365
  edit_pcb_component_location_event,
352
366
  edit_trace_hint_event,
353
367
  edit_schematic_component_location_event
@@ -355,33 +369,33 @@ var manual_edit_event = z20.union([
355
369
  expectTypesMatch(true);
356
370
 
357
371
  // lib/manual-edits/manual_edits_file.ts
358
- import { z as z24 } from "zod";
372
+ import { z as z25 } from "zod";
359
373
 
360
374
  // lib/manual-edits/manual_pcb_placement.ts
361
- import { z as z21 } from "zod";
375
+ import { z as z22 } from "zod";
362
376
  import { point as point2 } from "circuit-json";
363
- var manual_pcb_placement = z21.object({
364
- selector: z21.string(),
365
- relative_to: z21.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),
377
+ var manual_pcb_placement = z22.object({
378
+ selector: z22.string(),
379
+ relative_to: z22.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),
366
380
  center: point2
367
381
  });
368
382
  expectTypesMatch(true);
369
383
 
370
384
  // lib/manual-edits/manual_trace_hint.ts
371
- import { z as z22 } from "zod";
385
+ import { z as z23 } from "zod";
372
386
  import { route_hint_point } from "circuit-json";
373
- var manual_trace_hint = z22.object({
374
- pcb_port_selector: z22.string(),
375
- offsets: z22.array(route_hint_point)
387
+ var manual_trace_hint = z23.object({
388
+ pcb_port_selector: z23.string(),
389
+ offsets: z23.array(route_hint_point)
376
390
  });
377
391
  expectTypesMatch(true);
378
392
 
379
393
  // lib/manual-edits/manual_schematic_placement.ts
380
- import { z as z23 } from "zod";
394
+ import { z as z24 } from "zod";
381
395
  import { point as point4 } from "circuit-json";
382
- var manual_schematic_placement = z23.object({
383
- selector: z23.string(),
384
- relative_to: z23.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),
396
+ var manual_schematic_placement = z24.object({
397
+ selector: z24.string(),
398
+ relative_to: z24.string().optional().default("group_center").describe("Can be a selector or 'group_center'"),
385
399
  center: point4
386
400
  });
387
401
  expectTypesMatch(
@@ -389,37 +403,37 @@ expectTypesMatch(
389
403
  );
390
404
 
391
405
  // lib/manual-edits/manual_edits_file.ts
392
- var manual_edits_file = z24.object({
393
- pcb_placements: z24.array(manual_pcb_placement).optional(),
394
- manual_trace_hints: z24.array(manual_trace_hint).optional(),
395
- schematic_placements: z24.array(manual_schematic_placement).optional()
406
+ var manual_edits_file = z25.object({
407
+ pcb_placements: z25.array(manual_pcb_placement).optional(),
408
+ manual_trace_hints: z25.array(manual_trace_hint).optional(),
409
+ schematic_placements: z25.array(manual_schematic_placement).optional()
396
410
  });
397
411
  expectTypesMatch(true);
398
412
 
399
413
  // lib/common/connectionsProp.ts
400
- import { z as z25 } from "zod";
401
- var connectionTarget = z25.string().or(z25.array(z25.string()).readonly()).or(z25.array(z25.string()));
414
+ import { z as z26 } from "zod";
415
+ var connectionTarget = z26.string().or(z26.array(z26.string()).readonly()).or(z26.array(z26.string()));
402
416
  var createConnectionsProp = (labels) => {
403
- return z25.record(z25.enum(labels), connectionTarget);
417
+ return z26.record(z26.enum(labels), connectionTarget);
404
418
  };
405
419
 
406
420
  // lib/components/group.ts
407
- var layoutConfig = z26.object({
408
- layoutMode: z26.enum(["grid", "flex", "match-adapt", "relative", "none"]).optional(),
409
- position: z26.enum(["absolute", "relative"]).optional(),
410
- grid: z26.boolean().optional(),
411
- gridCols: z26.number().or(z26.string()).optional(),
412
- gridRows: z26.number().or(z26.string()).optional(),
413
- gridTemplateRows: z26.string().optional(),
414
- gridTemplateColumns: z26.string().optional(),
415
- gridTemplate: z26.string().optional(),
416
- gridGap: z26.number().or(z26.string()).optional(),
417
- gridRowGap: z26.number().or(z26.string()).optional(),
418
- gridColumnGap: z26.number().or(z26.string()).optional(),
419
- flex: z26.boolean().or(z26.string()).optional(),
420
- flexDirection: z26.enum(["row", "column"]).optional(),
421
- alignItems: z26.enum(["start", "center", "end", "stretch"]).optional(),
422
- justifyContent: z26.enum([
421
+ var layoutConfig = z27.object({
422
+ layoutMode: z27.enum(["grid", "flex", "match-adapt", "relative", "none"]).optional(),
423
+ position: z27.enum(["absolute", "relative"]).optional(),
424
+ grid: z27.boolean().optional(),
425
+ gridCols: z27.number().or(z27.string()).optional(),
426
+ gridRows: z27.number().or(z27.string()).optional(),
427
+ gridTemplateRows: z27.string().optional(),
428
+ gridTemplateColumns: z27.string().optional(),
429
+ gridTemplate: z27.string().optional(),
430
+ gridGap: z27.number().or(z27.string()).optional(),
431
+ gridRowGap: z27.number().or(z27.string()).optional(),
432
+ gridColumnGap: z27.number().or(z27.string()).optional(),
433
+ flex: z27.boolean().or(z27.string()).optional(),
434
+ flexDirection: z27.enum(["row", "column"]).optional(),
435
+ alignItems: z27.enum(["start", "center", "end", "stretch"]).optional(),
436
+ justifyContent: z27.enum([
423
437
  "start",
424
438
  "center",
425
439
  "end",
@@ -428,16 +442,16 @@ var layoutConfig = z26.object({
428
442
  "space-around",
429
443
  "space-evenly"
430
444
  ]).optional(),
431
- flexRow: z26.boolean().optional(),
432
- flexColumn: z26.boolean().optional(),
433
- gap: z26.number().or(z26.string()).optional(),
434
- pack: z26.boolean().optional().describe("Pack the contents of this group using a packing strategy"),
435
- packOrderStrategy: z26.enum([
445
+ flexRow: z27.boolean().optional(),
446
+ flexColumn: z27.boolean().optional(),
447
+ gap: z27.number().or(z27.string()).optional(),
448
+ pack: z27.boolean().optional().describe("Pack the contents of this group using a packing strategy"),
449
+ packOrderStrategy: z27.enum([
436
450
  "largest_to_smallest",
437
451
  "first_to_last",
438
452
  "highest_to_lowest_pin_count"
439
453
  ]).optional(),
440
- packPlacementStrategy: z26.enum(["shortest_connection_along_outline"]).optional(),
454
+ packPlacementStrategy: z27.enum(["shortest_connection_along_outline"]).optional(),
441
455
  padding: length2.optional(),
442
456
  paddingLeft: length2.optional(),
443
457
  paddingRight: length2.optional(),
@@ -447,27 +461,27 @@ var layoutConfig = z26.object({
447
461
  paddingY: length2.optional(),
448
462
  width: length2.optional(),
449
463
  height: length2.optional(),
450
- matchAdapt: z26.boolean().optional(),
451
- matchAdaptTemplate: z26.any().optional()
464
+ matchAdapt: z27.boolean().optional(),
465
+ matchAdaptTemplate: z27.any().optional()
452
466
  });
453
467
  expectTypesMatch(true);
454
- var border = z26.object({
468
+ var border = z27.object({
455
469
  strokeWidth: length2.optional(),
456
- dashed: z26.boolean().optional(),
457
- solid: z26.boolean().optional()
458
- });
459
- var autorouterConfig = z26.object({
460
- serverUrl: z26.string().optional(),
461
- inputFormat: z26.enum(["simplified", "circuit-json"]).optional(),
462
- serverMode: z26.enum(["job", "solve-endpoint"]).optional(),
463
- serverCacheEnabled: z26.boolean().optional(),
464
- cache: z26.custom((v) => true).optional(),
470
+ dashed: z27.boolean().optional(),
471
+ solid: z27.boolean().optional()
472
+ });
473
+ var autorouterConfig = z27.object({
474
+ serverUrl: z27.string().optional(),
475
+ inputFormat: z27.enum(["simplified", "circuit-json"]).optional(),
476
+ serverMode: z27.enum(["job", "solve-endpoint"]).optional(),
477
+ serverCacheEnabled: z27.boolean().optional(),
478
+ cache: z27.custom((v) => true).optional(),
465
479
  traceClearance: length2.optional(),
466
- groupMode: z26.enum(["sequential_trace", "subcircuit", "sequential-trace"]).optional(),
467
- algorithmFn: z26.custom(
480
+ groupMode: z27.enum(["sequential_trace", "subcircuit", "sequential-trace"]).optional(),
481
+ algorithmFn: z27.custom(
468
482
  (v) => typeof v === "function" || v === void 0
469
483
  ).optional(),
470
- preset: z26.enum([
484
+ preset: z27.enum([
471
485
  "sequential_trace",
472
486
  "subcircuit",
473
487
  "auto",
@@ -478,45 +492,45 @@ var autorouterConfig = z26.object({
478
492
  "auto-local",
479
493
  "auto-cloud"
480
494
  ]).optional(),
481
- local: z26.boolean().optional()
495
+ local: z27.boolean().optional()
482
496
  });
483
- var autorouterProp = z26.union([
497
+ var autorouterProp = z27.union([
484
498
  autorouterConfig,
485
- z26.literal("sequential_trace"),
486
- z26.literal("subcircuit"),
487
- z26.literal("auto"),
488
- z26.literal("auto_local"),
489
- z26.literal("auto_cloud"),
490
- z26.literal("freerouting"),
491
- z26.literal("sequential-trace"),
492
- z26.literal("auto-local"),
493
- z26.literal("auto-cloud")
499
+ z27.literal("sequential_trace"),
500
+ z27.literal("subcircuit"),
501
+ z27.literal("auto"),
502
+ z27.literal("auto_local"),
503
+ z27.literal("auto_cloud"),
504
+ z27.literal("freerouting"),
505
+ z27.literal("sequential-trace"),
506
+ z27.literal("auto-local"),
507
+ z27.literal("auto-cloud")
494
508
  ]);
495
509
  var baseGroupProps = commonLayoutProps.extend({
496
- name: z26.string().optional(),
497
- children: z26.any().optional(),
498
- schTitle: z26.string().optional(),
499
- key: z26.any().optional(),
500
- showAsSchematicBox: z26.boolean().optional(),
501
- connections: z26.record(z26.string(), connectionTarget.optional()).optional(),
510
+ name: z27.string().optional(),
511
+ children: z27.any().optional(),
512
+ schTitle: z27.string().optional(),
513
+ key: z27.any().optional(),
514
+ showAsSchematicBox: z27.boolean().optional(),
515
+ connections: z27.record(z27.string(), connectionTarget.optional()).optional(),
502
516
  schPinArrangement: schematicPinArrangement.optional(),
503
517
  ...layoutConfig.shape,
504
518
  grid: layoutConfig.shape.grid.describe("@deprecated use pcbGrid"),
505
519
  flex: layoutConfig.shape.flex.describe("@deprecated use pcbFlex"),
506
- pcbGrid: z26.boolean().optional(),
507
- pcbGridCols: z26.number().or(z26.string()).optional(),
508
- pcbGridRows: z26.number().or(z26.string()).optional(),
509
- pcbGridTemplateRows: z26.string().optional(),
510
- pcbGridTemplateColumns: z26.string().optional(),
511
- pcbGridTemplate: z26.string().optional(),
512
- pcbGridGap: z26.number().or(z26.string()).optional(),
513
- pcbGridRowGap: z26.number().or(z26.string()).optional(),
514
- pcbGridColumnGap: z26.number().or(z26.string()).optional(),
515
- pcbFlex: z26.boolean().or(z26.string()).optional(),
516
- pcbFlexGap: z26.number().or(z26.string()).optional(),
517
- pcbFlexDirection: z26.enum(["row", "column"]).optional(),
518
- pcbAlignItems: z26.enum(["start", "center", "end", "stretch"]).optional(),
519
- pcbJustifyContent: z26.enum([
520
+ pcbGrid: z27.boolean().optional(),
521
+ pcbGridCols: z27.number().or(z27.string()).optional(),
522
+ pcbGridRows: z27.number().or(z27.string()).optional(),
523
+ pcbGridTemplateRows: z27.string().optional(),
524
+ pcbGridTemplateColumns: z27.string().optional(),
525
+ pcbGridTemplate: z27.string().optional(),
526
+ pcbGridGap: z27.number().or(z27.string()).optional(),
527
+ pcbGridRowGap: z27.number().or(z27.string()).optional(),
528
+ pcbGridColumnGap: z27.number().or(z27.string()).optional(),
529
+ pcbFlex: z27.boolean().or(z27.string()).optional(),
530
+ pcbFlexGap: z27.number().or(z27.string()).optional(),
531
+ pcbFlexDirection: z27.enum(["row", "column"]).optional(),
532
+ pcbAlignItems: z27.enum(["start", "center", "end", "stretch"]).optional(),
533
+ pcbJustifyContent: z27.enum([
520
534
  "start",
521
535
  "center",
522
536
  "end",
@@ -525,25 +539,25 @@ var baseGroupProps = commonLayoutProps.extend({
525
539
  "space-around",
526
540
  "space-evenly"
527
541
  ]).optional(),
528
- pcbFlexRow: z26.boolean().optional(),
529
- pcbFlexColumn: z26.boolean().optional(),
530
- pcbGap: z26.number().or(z26.string()).optional(),
531
- pcbPack: z26.boolean().optional(),
532
- pcbPackGap: z26.number().or(z26.string()).optional(),
533
- schGrid: z26.boolean().optional(),
534
- schGridCols: z26.number().or(z26.string()).optional(),
535
- schGridRows: z26.number().or(z26.string()).optional(),
536
- schGridTemplateRows: z26.string().optional(),
537
- schGridTemplateColumns: z26.string().optional(),
538
- schGridTemplate: z26.string().optional(),
539
- schGridGap: z26.number().or(z26.string()).optional(),
540
- schGridRowGap: z26.number().or(z26.string()).optional(),
541
- schGridColumnGap: z26.number().or(z26.string()).optional(),
542
- schFlex: z26.boolean().or(z26.string()).optional(),
543
- schFlexGap: z26.number().or(z26.string()).optional(),
544
- schFlexDirection: z26.enum(["row", "column"]).optional(),
545
- schAlignItems: z26.enum(["start", "center", "end", "stretch"]).optional(),
546
- schJustifyContent: z26.enum([
542
+ pcbFlexRow: z27.boolean().optional(),
543
+ pcbFlexColumn: z27.boolean().optional(),
544
+ pcbGap: z27.number().or(z27.string()).optional(),
545
+ pcbPack: z27.boolean().optional(),
546
+ pcbPackGap: z27.number().or(z27.string()).optional(),
547
+ schGrid: z27.boolean().optional(),
548
+ schGridCols: z27.number().or(z27.string()).optional(),
549
+ schGridRows: z27.number().or(z27.string()).optional(),
550
+ schGridTemplateRows: z27.string().optional(),
551
+ schGridTemplateColumns: z27.string().optional(),
552
+ schGridTemplate: z27.string().optional(),
553
+ schGridGap: z27.number().or(z27.string()).optional(),
554
+ schGridRowGap: z27.number().or(z27.string()).optional(),
555
+ schGridColumnGap: z27.number().or(z27.string()).optional(),
556
+ schFlex: z27.boolean().or(z27.string()).optional(),
557
+ schFlexGap: z27.number().or(z27.string()).optional(),
558
+ schFlexDirection: z27.enum(["row", "column"]).optional(),
559
+ schAlignItems: z27.enum(["start", "center", "end", "stretch"]).optional(),
560
+ schJustifyContent: z27.enum([
547
561
  "start",
548
562
  "center",
549
563
  "end",
@@ -552,11 +566,11 @@ var baseGroupProps = commonLayoutProps.extend({
552
566
  "space-around",
553
567
  "space-evenly"
554
568
  ]).optional(),
555
- schFlexRow: z26.boolean().optional(),
556
- schFlexColumn: z26.boolean().optional(),
557
- schGap: z26.number().or(z26.string()).optional(),
558
- schPack: z26.boolean().optional(),
559
- schMatchAdapt: z26.boolean().optional(),
569
+ schFlexRow: z27.boolean().optional(),
570
+ schFlexColumn: z27.boolean().optional(),
571
+ schGap: z27.number().or(z27.string()).optional(),
572
+ schPack: z27.boolean().optional(),
573
+ schMatchAdapt: z27.boolean().optional(),
560
574
  pcbWidth: length2.optional(),
561
575
  pcbHeight: length2.optional(),
562
576
  schWidth: length2.optional(),
@@ -576,32 +590,32 @@ var baseGroupProps = commonLayoutProps.extend({
576
590
  pcbPaddingTop: length2.optional(),
577
591
  pcbPaddingBottom: length2.optional()
578
592
  });
579
- var partsEngine = z26.custom((v) => "findPart" in v);
593
+ var partsEngine = z27.custom((v) => "findPart" in v);
580
594
  var subcircuitGroupProps = baseGroupProps.extend({
581
595
  manualEdits: manual_edits_file.optional(),
582
- schAutoLayoutEnabled: z26.boolean().optional(),
583
- schTraceAutoLabelEnabled: z26.boolean().optional(),
596
+ schAutoLayoutEnabled: z27.boolean().optional(),
597
+ schTraceAutoLabelEnabled: z27.boolean().optional(),
584
598
  schMaxTraceDistance: distance6.optional(),
585
- routingDisabled: z26.boolean().optional(),
599
+ routingDisabled: z27.boolean().optional(),
586
600
  defaultTraceWidth: length2.optional(),
587
601
  minTraceWidth: length2.optional(),
588
602
  partsEngine: partsEngine.optional(),
589
- pcbRouteCache: z26.custom((v) => true).optional(),
603
+ pcbRouteCache: z27.custom((v) => true).optional(),
590
604
  autorouter: autorouterProp.optional(),
591
- square: z26.boolean().optional(),
592
- emptyArea: z26.string().optional(),
593
- filledArea: z26.string().optional(),
605
+ square: z27.boolean().optional(),
606
+ emptyArea: z27.string().optional(),
607
+ filledArea: z27.string().optional(),
594
608
  width: distance6.optional(),
595
609
  height: distance6.optional(),
596
- outline: z26.array(point).optional(),
610
+ outline: z27.array(point).optional(),
597
611
  outlineOffsetX: distance6.optional(),
598
612
  outlineOffsetY: distance6.optional()
599
613
  });
600
614
  var subcircuitGroupPropsWithBool = subcircuitGroupProps.extend({
601
- subcircuit: z26.literal(true)
615
+ subcircuit: z27.literal(true)
602
616
  });
603
- var groupProps = z26.discriminatedUnion("subcircuit", [
604
- baseGroupProps.extend({ subcircuit: z26.literal(false).optional() }),
617
+ var groupProps = z27.discriminatedUnion("subcircuit", [
618
+ baseGroupProps.extend({ subcircuit: z27.literal(false).optional() }),
605
619
  subcircuitGroupPropsWithBool
606
620
  ]);
607
621
  expectTypesMatch(true);
@@ -610,9 +624,10 @@ expectTypesMatch(true);
610
624
 
611
625
  // lib/components/board.ts
612
626
  var boardProps = subcircuitGroupProps.extend({
613
- material: z27.enum(["fr4", "fr1"]).default("fr4"),
614
- layers: z27.union([z27.literal(2), z27.literal(4)]).default(2),
615
- borderRadius: distance.optional()
627
+ material: z28.enum(["fr4", "fr1"]).default("fr4"),
628
+ layers: z28.union([z28.literal(2), z28.literal(4)]).default(2),
629
+ borderRadius: distance.optional(),
630
+ boardOrigin: ninePointAnchor.optional()
616
631
  });
617
632
  expectTypesMatch(true);
618
633
 
@@ -630,33 +645,33 @@ expectTypesMatch(true);
630
645
 
631
646
  // lib/components/chip.ts
632
647
  import { distance as distance8, supplier_name as supplier_name2 } from "circuit-json";
633
- import { z as z29 } from "zod";
634
- var connectionTarget2 = z29.string().or(z29.array(z29.string()).readonly()).or(z29.array(z29.string()));
635
- var connectionsProp = z29.custom().pipe(z29.record(z29.string(), connectionTarget2));
636
- var pinLabelsProp = z29.record(
648
+ import { z as z30 } from "zod";
649
+ var connectionTarget2 = z30.string().or(z30.array(z30.string()).readonly()).or(z30.array(z30.string()));
650
+ var connectionsProp = z30.custom().pipe(z30.record(z30.string(), connectionTarget2));
651
+ var pinLabelsProp = z30.record(
637
652
  schematicPinLabel,
638
- schematicPinLabel.or(z29.array(schematicPinLabel).readonly()).or(z29.array(schematicPinLabel))
653
+ schematicPinLabel.or(z30.array(schematicPinLabel).readonly()).or(z30.array(schematicPinLabel))
639
654
  );
640
655
  expectTypesMatch(true);
641
- var pinCompatibleVariant = z29.object({
642
- manufacturerPartNumber: z29.string().optional(),
643
- supplierPartNumber: z29.record(supplier_name2, z29.array(z29.string())).optional()
656
+ var pinCompatibleVariant = z30.object({
657
+ manufacturerPartNumber: z30.string().optional(),
658
+ supplierPartNumber: z30.record(supplier_name2, z30.array(z30.string())).optional()
644
659
  });
645
660
  var chipProps = commonComponentProps.extend({
646
- manufacturerPartNumber: z29.string().optional(),
661
+ manufacturerPartNumber: z30.string().optional(),
647
662
  pinLabels: pinLabelsProp.optional(),
648
- showPinAliases: z29.boolean().optional(),
649
- pcbPinLabels: z29.record(z29.string(), z29.string()).optional(),
650
- internallyConnectedPins: z29.array(z29.array(z29.union([z29.string(), z29.number()]))).optional(),
651
- externallyConnectedPins: z29.array(z29.array(z29.string())).optional(),
663
+ showPinAliases: z30.boolean().optional(),
664
+ pcbPinLabels: z30.record(z30.string(), z30.string()).optional(),
665
+ internallyConnectedPins: z30.array(z30.array(z30.union([z30.string(), z30.number()]))).optional(),
666
+ externallyConnectedPins: z30.array(z30.array(z30.string())).optional(),
652
667
  schPinArrangement: schematicPortArrangement.optional(),
653
668
  schPortArrangement: schematicPortArrangement.optional(),
654
- pinCompatibleVariants: z29.array(pinCompatibleVariant).optional(),
669
+ pinCompatibleVariants: z30.array(pinCompatibleVariant).optional(),
655
670
  schPinStyle: schematicPinStyle.optional(),
656
671
  schPinSpacing: distance8.optional(),
657
672
  schWidth: distance8.optional(),
658
673
  schHeight: distance8.optional(),
659
- noSchematicRepresentation: z29.boolean().optional(),
674
+ noSchematicRepresentation: z30.boolean().optional(),
660
675
  connections: connectionsProp.optional()
661
676
  });
662
677
  var bugProps = chipProps;
@@ -668,93 +683,93 @@ expectTypesMatch(true);
668
683
 
669
684
  // lib/components/jumper.ts
670
685
  import { distance as distance9 } from "circuit-json";
671
- import { z as z30 } from "zod";
686
+ import { z as z31 } from "zod";
672
687
  var jumperProps = commonComponentProps.extend({
673
- manufacturerPartNumber: z30.string().optional(),
674
- pinLabels: z30.record(
675
- z30.number().or(schematicPinLabel),
676
- schematicPinLabel.or(z30.array(schematicPinLabel))
688
+ manufacturerPartNumber: z31.string().optional(),
689
+ pinLabels: z31.record(
690
+ z31.number().or(schematicPinLabel),
691
+ schematicPinLabel.or(z31.array(schematicPinLabel))
677
692
  ).optional(),
678
693
  schPinStyle: schematicPinStyle.optional(),
679
694
  schPinSpacing: distance9.optional(),
680
695
  schWidth: distance9.optional(),
681
696
  schHeight: distance9.optional(),
682
- schDirection: z30.enum(["left", "right"]).optional(),
697
+ schDirection: z31.enum(["left", "right"]).optional(),
683
698
  schPinArrangement: schematicPinArrangement.optional(),
684
699
  schPortArrangement: schematicPortArrangement.optional(),
685
- pcbPinLabels: z30.record(z30.string(), z30.string()).optional(),
686
- pinCount: z30.union([z30.literal(2), z30.literal(3)]).optional(),
687
- internallyConnectedPins: z30.array(z30.array(z30.union([z30.string(), z30.number()]))).optional(),
688
- connections: z30.custom().pipe(z30.record(z30.string(), connectionTarget)).optional()
700
+ pcbPinLabels: z31.record(z31.string(), z31.string()).optional(),
701
+ pinCount: z31.union([z31.literal(2), z31.literal(3)]).optional(),
702
+ internallyConnectedPins: z31.array(z31.array(z31.union([z31.string(), z31.number()]))).optional(),
703
+ connections: z31.custom().pipe(z31.record(z31.string(), connectionTarget)).optional()
689
704
  });
690
705
  expectTypesMatch(true);
691
706
 
692
707
  // lib/components/solderjumper.ts
693
- import { z as z31 } from "zod";
708
+ import { z as z32 } from "zod";
694
709
  var solderjumperProps = jumperProps.extend({
695
- bridgedPins: z31.array(z31.array(z31.string())).optional(),
696
- bridged: z31.boolean().optional()
710
+ bridgedPins: z32.array(z32.array(z32.string())).optional(),
711
+ bridged: z32.boolean().optional()
697
712
  });
698
713
  expectTypesMatch(true);
699
714
 
700
715
  // lib/components/connector.ts
701
716
  import { distance as distance10 } from "circuit-json";
702
- import { z as z32 } from "zod";
717
+ import { z as z33 } from "zod";
703
718
  var connectorProps = commonComponentProps.extend({
704
- manufacturerPartNumber: z32.string().optional(),
705
- pinLabels: z32.record(
706
- z32.number().or(schematicPinLabel),
707
- schematicPinLabel.or(z32.array(schematicPinLabel))
719
+ manufacturerPartNumber: z33.string().optional(),
720
+ pinLabels: z33.record(
721
+ z33.number().or(schematicPinLabel),
722
+ schematicPinLabel.or(z33.array(schematicPinLabel))
708
723
  ).optional(),
709
724
  schPinStyle: schematicPinStyle.optional(),
710
725
  schPinSpacing: distance10.optional(),
711
726
  schWidth: distance10.optional(),
712
727
  schHeight: distance10.optional(),
713
- schDirection: z32.enum(["left", "right"]).optional(),
728
+ schDirection: z33.enum(["left", "right"]).optional(),
714
729
  schPortArrangement: schematicPortArrangement.optional(),
715
- internallyConnectedPins: z32.array(z32.array(z32.union([z32.string(), z32.number()]))).optional(),
716
- standard: z32.enum(["usb_c", "m2"]).optional()
730
+ internallyConnectedPins: z33.array(z33.array(z33.union([z33.string(), z33.number()]))).optional(),
731
+ standard: z33.enum(["usb_c", "m2"]).optional()
717
732
  });
718
733
  expectTypesMatch(true);
719
734
 
720
735
  // lib/components/fuse.ts
721
- import { z as z33 } from "zod";
736
+ import { z as z34 } from "zod";
722
737
  var fusePinLabels = ["pin1", "pin2"];
723
738
  var fuseProps = commonComponentProps.extend({
724
- currentRating: z33.union([z33.number(), z33.string()]),
725
- voltageRating: z33.union([z33.number(), z33.string()]).optional(),
726
- schShowRatings: z33.boolean().optional(),
739
+ currentRating: z34.union([z34.number(), z34.string()]),
740
+ voltageRating: z34.union([z34.number(), z34.string()]).optional(),
741
+ schShowRatings: z34.boolean().optional(),
727
742
  schOrientation: schematicOrientation.optional(),
728
- connections: z33.record(
729
- z33.string(),
730
- z33.union([
731
- z33.string(),
732
- z33.array(z33.string()).readonly(),
733
- z33.array(z33.string())
743
+ connections: z34.record(
744
+ z34.string(),
745
+ z34.union([
746
+ z34.string(),
747
+ z34.array(z34.string()).readonly(),
748
+ z34.array(z34.string())
734
749
  ])
735
750
  ).optional()
736
751
  });
737
752
 
738
753
  // lib/components/platedhole.ts
739
754
  import { distance as distance11 } from "circuit-json";
740
- import { z as z34 } from "zod";
741
- var distanceHiddenUndefined = z34.custom().transform((a) => {
755
+ import { z as z35 } from "zod";
756
+ var distanceHiddenUndefined = z35.custom().transform((a) => {
742
757
  if (a === void 0) return void 0;
743
758
  return distance11.parse(a);
744
759
  });
745
- var platedHoleProps = z34.discriminatedUnion("shape", [
760
+ var platedHoleProps = z35.discriminatedUnion("shape", [
746
761
  pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
747
- name: z34.string().optional(),
748
- connectsTo: z34.string().or(z34.array(z34.string())).optional(),
749
- shape: z34.literal("circle"),
762
+ name: z35.string().optional(),
763
+ connectsTo: z35.string().or(z35.array(z35.string())).optional(),
764
+ shape: z35.literal("circle"),
750
765
  holeDiameter: distance11,
751
766
  outerDiameter: distance11,
752
767
  portHints: portHints.optional()
753
768
  }),
754
769
  pcbLayoutProps.omit({ layer: true }).extend({
755
- name: z34.string().optional(),
756
- connectsTo: z34.string().or(z34.array(z34.string())).optional(),
757
- shape: z34.literal("oval"),
770
+ name: z35.string().optional(),
771
+ connectsTo: z35.string().or(z35.array(z35.string())).optional(),
772
+ shape: z35.literal("oval"),
758
773
  outerWidth: distance11,
759
774
  outerHeight: distance11,
760
775
  holeWidth: distanceHiddenUndefined,
@@ -764,10 +779,10 @@ var platedHoleProps = z34.discriminatedUnion("shape", [
764
779
  portHints: portHints.optional()
765
780
  }),
766
781
  pcbLayoutProps.omit({ layer: true }).extend({
767
- name: z34.string().optional(),
768
- connectsTo: z34.string().or(z34.array(z34.string())).optional(),
769
- shape: z34.literal("pill"),
770
- rectPad: z34.boolean().optional(),
782
+ name: z35.string().optional(),
783
+ connectsTo: z35.string().or(z35.array(z35.string())).optional(),
784
+ shape: z35.literal("pill"),
785
+ rectPad: z35.boolean().optional(),
771
786
  outerWidth: distance11,
772
787
  outerHeight: distance11,
773
788
  holeWidth: distanceHiddenUndefined,
@@ -777,30 +792,32 @@ var platedHoleProps = z34.discriminatedUnion("shape", [
777
792
  portHints: portHints.optional()
778
793
  }),
779
794
  pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
780
- name: z34.string().optional(),
781
- connectsTo: z34.string().or(z34.array(z34.string())).optional(),
782
- shape: z34.literal("circular_hole_with_rect_pad"),
795
+ name: z35.string().optional(),
796
+ connectsTo: z35.string().or(z35.array(z35.string())).optional(),
797
+ shape: z35.literal("circular_hole_with_rect_pad"),
783
798
  holeDiameter: distance11,
784
799
  rectPadWidth: distance11,
785
800
  rectPadHeight: distance11,
786
801
  rectBorderRadius: distance11.optional(),
787
- holeShape: z34.literal("circle").optional(),
788
- padShape: z34.literal("rect").optional(),
802
+ holeShape: z35.literal("circle").optional(),
803
+ padShape: z35.literal("rect").optional(),
789
804
  portHints: portHints.optional(),
790
- pcbHoleOffsetX: distance11.optional(),
791
- pcbHoleOffsetY: distance11.optional()
805
+ holeOffsetX: distance11.optional(),
806
+ holeOffsetY: distance11.optional()
792
807
  }),
793
808
  pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
794
- name: z34.string().optional(),
795
- connectsTo: z34.string().or(z34.array(z34.string())).optional(),
796
- shape: z34.literal("pill_hole_with_rect_pad"),
797
- holeShape: z34.literal("pill"),
798
- padShape: z34.literal("rect"),
809
+ name: z35.string().optional(),
810
+ connectsTo: z35.string().or(z35.array(z35.string())).optional(),
811
+ shape: z35.literal("pill_hole_with_rect_pad"),
812
+ holeShape: z35.literal("pill"),
813
+ padShape: z35.literal("rect"),
799
814
  holeWidth: distance11,
800
815
  holeHeight: distance11,
801
816
  rectPadWidth: distance11,
802
817
  rectPadHeight: distance11,
803
- portHints: portHints.optional()
818
+ portHints: portHints.optional(),
819
+ holeOffsetX: distance11.optional(),
820
+ holeOffsetY: distance11.optional()
804
821
  })
805
822
  ]).refine((a) => {
806
823
  if ("innerWidth" in a && a.innerWidth !== void 0) {
@@ -815,14 +832,14 @@ expectTypesMatch(true);
815
832
 
816
833
  // lib/components/resistor.ts
817
834
  import { resistance } from "circuit-json";
818
- import { z as z35 } from "zod";
835
+ import { z as z36 } from "zod";
819
836
  var resistorPinLabels = ["pin1", "pin2", "pos", "neg"];
820
837
  var resistorProps = commonComponentProps.extend({
821
838
  resistance,
822
- pullupFor: z35.string().optional(),
823
- pullupTo: z35.string().optional(),
824
- pulldownFor: z35.string().optional(),
825
- pulldownTo: z35.string().optional(),
839
+ pullupFor: z36.string().optional(),
840
+ pullupTo: z36.string().optional(),
841
+ pulldownFor: z36.string().optional(),
842
+ pulldownTo: z36.string().optional(),
826
843
  schOrientation: schematicOrientation.optional(),
827
844
  connections: createConnectionsProp(resistorPinLabels).optional()
828
845
  });
@@ -831,23 +848,23 @@ expectTypesMatch(true);
831
848
 
832
849
  // lib/components/potentiometer.ts
833
850
  import { resistance as resistance2 } from "circuit-json";
834
- import { z as z36 } from "zod";
851
+ import { z as z37 } from "zod";
835
852
  var potentiometerProps = commonComponentProps.extend({
836
853
  maxResistance: resistance2,
837
- pinVariant: z36.enum(["two_pin", "three_pin"]).optional()
854
+ pinVariant: z37.enum(["two_pin", "three_pin"]).optional()
838
855
  });
839
856
  expectTypesMatch(true);
840
857
 
841
858
  // lib/components/crystal.ts
842
859
  import { frequency, capacitance } from "circuit-json";
843
- import { z as z37 } from "zod";
860
+ import { z as z38 } from "zod";
844
861
  var crystalPins = lrPins;
845
862
  var crystalProps = commonComponentProps.extend({
846
863
  frequency,
847
864
  loadCapacitance: capacitance,
848
- manufacturerPartNumber: z37.string().optional(),
849
- mpn: z37.string().optional(),
850
- pinVariant: z37.enum(["two_pin", "four_pin"]).optional(),
865
+ manufacturerPartNumber: z38.string().optional(),
866
+ mpn: z38.string().optional(),
867
+ pinVariant: z38.enum(["two_pin", "four_pin"]).optional(),
851
868
  schOrientation: schematicOrientation.optional(),
852
869
  connections: createConnectionsProp(crystalPins).optional()
853
870
  });
@@ -855,34 +872,34 @@ expectTypesMatch(true);
855
872
 
856
873
  // lib/components/resonator.ts
857
874
  import { frequency as frequency2, capacitance as capacitance2 } from "circuit-json";
858
- import { z as z38 } from "zod";
875
+ import { z as z39 } from "zod";
859
876
  var resonatorProps = commonComponentProps.extend({
860
877
  frequency: frequency2,
861
878
  loadCapacitance: capacitance2,
862
- pinVariant: z38.enum(["no_ground", "ground_pin", "two_ground_pins"]).optional()
879
+ pinVariant: z39.enum(["no_ground", "ground_pin", "two_ground_pins"]).optional()
863
880
  });
864
881
  expectTypesMatch(true);
865
882
 
866
883
  // lib/components/stampboard.ts
867
884
  import { distance as distance12 } from "circuit-json";
868
- import { z as z39 } from "zod";
885
+ import { z as z40 } from "zod";
869
886
  var stampboardProps = boardProps.extend({
870
- leftPinCount: z39.number().optional(),
871
- rightPinCount: z39.number().optional(),
872
- topPinCount: z39.number().optional(),
873
- bottomPinCount: z39.number().optional(),
874
- leftPins: z39.array(z39.string()).optional(),
875
- rightPins: z39.array(z39.string()).optional(),
876
- topPins: z39.array(z39.string()).optional(),
877
- bottomPins: z39.array(z39.string()).optional(),
887
+ leftPinCount: z40.number().optional(),
888
+ rightPinCount: z40.number().optional(),
889
+ topPinCount: z40.number().optional(),
890
+ bottomPinCount: z40.number().optional(),
891
+ leftPins: z40.array(z40.string()).optional(),
892
+ rightPins: z40.array(z40.string()).optional(),
893
+ topPins: z40.array(z40.string()).optional(),
894
+ bottomPins: z40.array(z40.string()).optional(),
878
895
  pinPitch: distance12.optional(),
879
- innerHoles: z39.boolean().optional()
896
+ innerHoles: z40.boolean().optional()
880
897
  });
881
898
  expectTypesMatch(true);
882
899
 
883
900
  // lib/components/capacitor.ts
884
901
  import { capacitance as capacitance3, voltage } from "circuit-json";
885
- import { z as z40 } from "zod";
902
+ import { z as z41 } from "zod";
886
903
  var capacitorPinLabels = [
887
904
  "pin1",
888
905
  "pin2",
@@ -894,13 +911,13 @@ var capacitorPinLabels = [
894
911
  var capacitorProps = commonComponentProps.extend({
895
912
  capacitance: capacitance3,
896
913
  maxVoltageRating: voltage.optional(),
897
- schShowRatings: z40.boolean().optional().default(false),
898
- polarized: z40.boolean().optional().default(false),
899
- decouplingFor: z40.string().optional(),
900
- decouplingTo: z40.string().optional(),
901
- bypassFor: z40.string().optional(),
902
- bypassTo: z40.string().optional(),
903
- maxDecouplingTraceLength: z40.number().optional(),
914
+ schShowRatings: z41.boolean().optional().default(false),
915
+ polarized: z41.boolean().optional().default(false),
916
+ decouplingFor: z41.string().optional(),
917
+ decouplingTo: z41.string().optional(),
918
+ bypassFor: z41.string().optional(),
919
+ bypassTo: z41.string().optional(),
920
+ maxDecouplingTraceLength: z41.number().optional(),
904
921
  schOrientation: schematicOrientation.optional(),
905
922
  connections: createConnectionsProp(capacitorPinLabels).optional()
906
923
  });
@@ -908,63 +925,63 @@ var capacitorPins = lrPolarPins;
908
925
  expectTypesMatch(true);
909
926
 
910
927
  // lib/components/net.ts
911
- import { z as z41 } from "zod";
912
- var netProps = z41.object({
913
- name: z41.string(),
914
- connectsTo: z41.string().or(z41.array(z41.string())).optional()
928
+ import { z as z42 } from "zod";
929
+ var netProps = z42.object({
930
+ name: z42.string(),
931
+ connectsTo: z42.string().or(z42.array(z42.string())).optional()
915
932
  });
916
933
  expectTypesMatch(true);
917
934
 
918
935
  // lib/components/constrainedlayout.ts
919
- import { z as z42 } from "zod";
920
- var constrainedLayoutProps = z42.object({
921
- name: z42.string().optional(),
922
- pcbOnly: z42.boolean().optional(),
923
- schOnly: z42.boolean().optional()
936
+ import { z as z43 } from "zod";
937
+ var constrainedLayoutProps = z43.object({
938
+ name: z43.string().optional(),
939
+ pcbOnly: z43.boolean().optional(),
940
+ schOnly: z43.boolean().optional()
924
941
  });
925
942
  expectTypesMatch(true);
926
943
 
927
944
  // lib/components/constraint.ts
928
- import { z as z43 } from "zod";
929
- var pcbXDistConstraintProps = z43.object({
930
- pcb: z43.literal(true).optional(),
945
+ import { z as z44 } from "zod";
946
+ var pcbXDistConstraintProps = z44.object({
947
+ pcb: z44.literal(true).optional(),
931
948
  xDist: distance,
932
- left: z43.string(),
933
- right: z43.string(),
934
- edgeToEdge: z43.literal(true).optional(),
935
- centerToCenter: z43.literal(true).optional()
949
+ left: z44.string(),
950
+ right: z44.string(),
951
+ edgeToEdge: z44.literal(true).optional(),
952
+ centerToCenter: z44.literal(true).optional()
936
953
  });
937
954
  expectTypesMatch(
938
955
  true
939
956
  );
940
- var pcbYDistConstraintProps = z43.object({
941
- pcb: z43.literal(true).optional(),
957
+ var pcbYDistConstraintProps = z44.object({
958
+ pcb: z44.literal(true).optional(),
942
959
  yDist: distance,
943
- top: z43.string(),
944
- bottom: z43.string(),
945
- edgeToEdge: z43.literal(true).optional(),
946
- centerToCenter: z43.literal(true).optional()
960
+ top: z44.string(),
961
+ bottom: z44.string(),
962
+ edgeToEdge: z44.literal(true).optional(),
963
+ centerToCenter: z44.literal(true).optional()
947
964
  });
948
965
  expectTypesMatch(
949
966
  true
950
967
  );
951
- var pcbSameYConstraintProps = z43.object({
952
- pcb: z43.literal(true).optional(),
953
- sameY: z43.literal(true).optional(),
954
- for: z43.array(z43.string())
968
+ var pcbSameYConstraintProps = z44.object({
969
+ pcb: z44.literal(true).optional(),
970
+ sameY: z44.literal(true).optional(),
971
+ for: z44.array(z44.string())
955
972
  });
956
973
  expectTypesMatch(
957
974
  true
958
975
  );
959
- var pcbSameXConstraintProps = z43.object({
960
- pcb: z43.literal(true).optional(),
961
- sameX: z43.literal(true).optional(),
962
- for: z43.array(z43.string())
976
+ var pcbSameXConstraintProps = z44.object({
977
+ pcb: z44.literal(true).optional(),
978
+ sameX: z44.literal(true).optional(),
979
+ for: z44.array(z44.string())
963
980
  });
964
981
  expectTypesMatch(
965
982
  true
966
983
  );
967
- var constraintProps = z43.union([
984
+ var constraintProps = z44.union([
968
985
  pcbXDistConstraintProps,
969
986
  pcbYDistConstraintProps,
970
987
  pcbSameYConstraintProps,
@@ -973,13 +990,13 @@ var constraintProps = z43.union([
973
990
  expectTypesMatch(true);
974
991
 
975
992
  // lib/components/cutout.ts
976
- import { z as z44 } from "zod";
993
+ import { z as z45 } from "zod";
977
994
  var rectCutoutProps = pcbLayoutProps.omit({
978
995
  layer: true,
979
996
  pcbRotation: true
980
997
  }).extend({
981
- name: z44.string().optional(),
982
- shape: z44.literal("rect"),
998
+ name: z45.string().optional(),
999
+ shape: z45.literal("rect"),
983
1000
  width: distance,
984
1001
  height: distance
985
1002
  });
@@ -988,8 +1005,8 @@ var circleCutoutProps = pcbLayoutProps.omit({
988
1005
  layer: true,
989
1006
  pcbRotation: true
990
1007
  }).extend({
991
- name: z44.string().optional(),
992
- shape: z44.literal("circle"),
1008
+ name: z45.string().optional(),
1009
+ shape: z45.literal("circle"),
993
1010
  radius: distance
994
1011
  });
995
1012
  expectTypesMatch(true);
@@ -997,66 +1014,66 @@ var polygonCutoutProps = pcbLayoutProps.omit({
997
1014
  layer: true,
998
1015
  pcbRotation: true
999
1016
  }).extend({
1000
- name: z44.string().optional(),
1001
- shape: z44.literal("polygon"),
1002
- points: z44.array(point)
1017
+ name: z45.string().optional(),
1018
+ shape: z45.literal("polygon"),
1019
+ points: z45.array(point)
1003
1020
  });
1004
1021
  expectTypesMatch(true);
1005
- var cutoutProps = z44.discriminatedUnion("shape", [
1022
+ var cutoutProps = z45.discriminatedUnion("shape", [
1006
1023
  rectCutoutProps,
1007
1024
  circleCutoutProps,
1008
1025
  polygonCutoutProps
1009
1026
  ]);
1010
1027
 
1011
1028
  // lib/components/smtpad.ts
1012
- import { z as z45 } from "zod";
1029
+ import { z as z46 } from "zod";
1013
1030
  var rectSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
1014
- name: z45.string().optional(),
1015
- shape: z45.literal("rect"),
1031
+ name: z46.string().optional(),
1032
+ shape: z46.literal("rect"),
1016
1033
  width: distance,
1017
1034
  height: distance,
1018
1035
  rectBorderRadius: distance.optional(),
1019
1036
  portHints: portHints.optional(),
1020
- coveredWithSolderMask: z45.boolean().optional()
1037
+ coveredWithSolderMask: z46.boolean().optional()
1021
1038
  });
1022
1039
  expectTypesMatch(true);
1023
1040
  var rotatedRectSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
1024
- name: z45.string().optional(),
1025
- shape: z45.literal("rotated_rect"),
1041
+ name: z46.string().optional(),
1042
+ shape: z46.literal("rotated_rect"),
1026
1043
  width: distance,
1027
1044
  height: distance,
1028
- ccwRotation: z45.number(),
1045
+ ccwRotation: z46.number(),
1029
1046
  portHints: portHints.optional(),
1030
- coveredWithSolderMask: z45.boolean().optional()
1047
+ coveredWithSolderMask: z46.boolean().optional()
1031
1048
  });
1032
1049
  expectTypesMatch(true);
1033
1050
  var circleSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
1034
- name: z45.string().optional(),
1035
- shape: z45.literal("circle"),
1051
+ name: z46.string().optional(),
1052
+ shape: z46.literal("circle"),
1036
1053
  radius: distance,
1037
1054
  portHints: portHints.optional(),
1038
- coveredWithSolderMask: z45.boolean().optional()
1055
+ coveredWithSolderMask: z46.boolean().optional()
1039
1056
  });
1040
1057
  expectTypesMatch(true);
1041
1058
  var pillSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
1042
- name: z45.string().optional(),
1043
- shape: z45.literal("pill"),
1059
+ name: z46.string().optional(),
1060
+ shape: z46.literal("pill"),
1044
1061
  width: distance,
1045
1062
  height: distance,
1046
1063
  radius: distance,
1047
1064
  portHints: portHints.optional(),
1048
- coveredWithSolderMask: z45.boolean().optional()
1065
+ coveredWithSolderMask: z46.boolean().optional()
1049
1066
  });
1050
1067
  expectTypesMatch(true);
1051
1068
  var polygonSmtPadProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
1052
- name: z45.string().optional(),
1053
- shape: z45.literal("polygon"),
1054
- points: z45.array(point),
1069
+ name: z46.string().optional(),
1070
+ shape: z46.literal("polygon"),
1071
+ points: z46.array(point),
1055
1072
  portHints: portHints.optional(),
1056
- coveredWithSolderMask: z45.boolean().optional()
1073
+ coveredWithSolderMask: z46.boolean().optional()
1057
1074
  });
1058
1075
  expectTypesMatch(true);
1059
- var smtPadProps = z45.discriminatedUnion("shape", [
1076
+ var smtPadProps = z46.discriminatedUnion("shape", [
1060
1077
  circleSmtPadProps,
1061
1078
  rectSmtPadProps,
1062
1079
  rotatedRectSmtPadProps,
@@ -1066,29 +1083,29 @@ var smtPadProps = z45.discriminatedUnion("shape", [
1066
1083
  expectTypesMatch(true);
1067
1084
 
1068
1085
  // lib/components/solderpaste.ts
1069
- import { z as z46 } from "zod";
1086
+ import { z as z47 } from "zod";
1070
1087
  var rectSolderPasteProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
1071
- shape: z46.literal("rect"),
1088
+ shape: z47.literal("rect"),
1072
1089
  width: distance,
1073
1090
  height: distance
1074
1091
  });
1075
1092
  expectTypesMatch(true);
1076
1093
  var circleSolderPasteProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
1077
- shape: z46.literal("circle"),
1094
+ shape: z47.literal("circle"),
1078
1095
  radius: distance
1079
1096
  });
1080
1097
  expectTypesMatch(true);
1081
- var solderPasteProps = z46.union([
1098
+ var solderPasteProps = z47.union([
1082
1099
  circleSolderPasteProps,
1083
1100
  rectSolderPasteProps
1084
1101
  ]);
1085
1102
  expectTypesMatch(true);
1086
1103
 
1087
1104
  // lib/components/hole.ts
1088
- import { z as z47 } from "zod";
1105
+ import { z as z48 } from "zod";
1089
1106
  var circleHoleProps = pcbLayoutProps.extend({
1090
- name: z47.string().optional(),
1091
- shape: z47.literal("circle").optional(),
1107
+ name: z48.string().optional(),
1108
+ shape: z48.literal("circle").optional(),
1092
1109
  diameter: distance.optional(),
1093
1110
  radius: distance.optional()
1094
1111
  }).transform((d) => ({
@@ -1097,37 +1114,37 @@ var circleHoleProps = pcbLayoutProps.extend({
1097
1114
  radius: d.radius ?? d.diameter / 2
1098
1115
  }));
1099
1116
  var pillHoleProps = pcbLayoutProps.extend({
1100
- name: z47.string().optional(),
1101
- shape: z47.literal("pill"),
1117
+ name: z48.string().optional(),
1118
+ shape: z48.literal("pill"),
1102
1119
  width: distance,
1103
1120
  height: distance
1104
1121
  });
1105
- var holeProps = z47.union([circleHoleProps, pillHoleProps]);
1122
+ var holeProps = z48.union([circleHoleProps, pillHoleProps]);
1106
1123
  expectTypesMatch(true);
1107
1124
 
1108
1125
  // lib/components/trace.ts
1109
1126
  import { distance as distance13, route_hint_point as route_hint_point2 } from "circuit-json";
1110
- import { z as z48 } from "zod";
1111
- var portRef = z48.union([
1112
- z48.string(),
1113
- z48.custom(
1127
+ import { z as z49 } from "zod";
1128
+ var portRef = z49.union([
1129
+ z49.string(),
1130
+ z49.custom(
1114
1131
  (v) => Boolean(v.getPortSelector)
1115
1132
  )
1116
1133
  ]);
1117
- var baseTraceProps = z48.object({
1118
- key: z48.string().optional(),
1134
+ var baseTraceProps = z49.object({
1135
+ key: z49.string().optional(),
1119
1136
  thickness: distance13.optional(),
1120
- schematicRouteHints: z48.array(point).optional(),
1121
- pcbRouteHints: z48.array(route_hint_point2).optional(),
1122
- pcbPathRelativeTo: z48.string().optional(),
1123
- pcbPath: z48.array(point).optional(),
1124
- schDisplayLabel: z48.string().optional(),
1125
- schStroke: z48.string().optional(),
1137
+ schematicRouteHints: z49.array(point).optional(),
1138
+ pcbRouteHints: z49.array(route_hint_point2).optional(),
1139
+ pcbPathRelativeTo: z49.string().optional(),
1140
+ pcbPath: z49.array(point).optional(),
1141
+ schDisplayLabel: z49.string().optional(),
1142
+ schStroke: z49.string().optional(),
1126
1143
  maxLength: distance13.optional()
1127
1144
  });
1128
- var traceProps = z48.union([
1145
+ var traceProps = z49.union([
1129
1146
  baseTraceProps.extend({
1130
- path: z48.array(portRef)
1147
+ path: z49.array(portRef)
1131
1148
  }),
1132
1149
  baseTraceProps.extend({
1133
1150
  from: portRef,
@@ -1137,23 +1154,23 @@ var traceProps = z48.union([
1137
1154
 
1138
1155
  // lib/components/footprint.ts
1139
1156
  import { layer_ref as layer_ref4 } from "circuit-json";
1140
- import { z as z49 } from "zod";
1141
- var footprintProps = z49.object({
1157
+ import { z as z50 } from "zod";
1158
+ var footprintProps = z50.object({
1142
1159
  originalLayer: layer_ref4.default("top").optional()
1143
1160
  });
1144
1161
  expectTypesMatch(true);
1145
1162
 
1146
1163
  // lib/components/symbol.ts
1147
- import { z as z50 } from "zod";
1148
- var symbolProps = z50.object({
1149
- originalFacingDirection: z50.enum(["up", "down", "left", "right"]).default("right").optional()
1164
+ import { z as z51 } from "zod";
1165
+ var symbolProps = z51.object({
1166
+ originalFacingDirection: z51.enum(["up", "down", "left", "right"]).default("right").optional()
1150
1167
  });
1151
1168
  expectTypesMatch(true);
1152
1169
 
1153
1170
  // lib/components/battery.ts
1154
1171
  import { voltage as voltage2 } from "circuit-json";
1155
- import { z as z51 } from "zod";
1156
- var capacity = z51.number().or(z51.string().endsWith("mAh")).transform((v) => {
1172
+ import { z as z52 } from "zod";
1173
+ var capacity = z52.number().or(z52.string().endsWith("mAh")).transform((v) => {
1157
1174
  if (typeof v === "string") {
1158
1175
  const valString = v.replace("mAh", "");
1159
1176
  const num = Number.parseFloat(valString);
@@ -1167,7 +1184,7 @@ var capacity = z51.number().or(z51.string().endsWith("mAh")).transform((v) => {
1167
1184
  var batteryProps = commonComponentProps.extend({
1168
1185
  capacity: capacity.optional(),
1169
1186
  voltage: voltage2.optional(),
1170
- standard: z51.enum(["AA", "AAA", "9V", "CR2032", "18650", "C"]).optional(),
1187
+ standard: z52.enum(["AA", "AAA", "9V", "CR2032", "18650", "C"]).optional(),
1171
1188
  schOrientation: schematicOrientation.optional()
1172
1189
  });
1173
1190
  var batteryPins = lrPolarPins;
@@ -1177,29 +1194,29 @@ expectTypesMatch(true);
1177
1194
  import { distance as distance14 } from "circuit-json";
1178
1195
 
1179
1196
  // lib/common/pcbOrientation.ts
1180
- import { z as z52 } from "zod";
1181
- var pcbOrientation = z52.enum(["vertical", "horizontal"]).describe(
1197
+ import { z as z53 } from "zod";
1198
+ var pcbOrientation = z53.enum(["vertical", "horizontal"]).describe(
1182
1199
  "vertical means pins go 1->2 downward and horizontal means pins go 1->2 rightward"
1183
1200
  );
1184
1201
  expectTypesMatch(true);
1185
1202
 
1186
1203
  // lib/components/pin-header.ts
1187
- import { z as z53 } from "zod";
1204
+ import { z as z54 } from "zod";
1188
1205
  var pinHeaderProps = commonComponentProps.extend({
1189
- pinCount: z53.number(),
1206
+ pinCount: z54.number(),
1190
1207
  pitch: distance14.optional(),
1191
- schFacingDirection: z53.enum(["up", "down", "left", "right"]).optional(),
1192
- gender: z53.enum(["male", "female", "unpopulated"]).optional().default("male"),
1193
- showSilkscreenPinLabels: z53.boolean().optional(),
1194
- pcbPinLabels: z53.record(z53.string(), z53.string()).optional(),
1195
- doubleRow: z53.boolean().optional(),
1196
- rightAngle: z53.boolean().optional(),
1208
+ schFacingDirection: z54.enum(["up", "down", "left", "right"]).optional(),
1209
+ gender: z54.enum(["male", "female", "unpopulated"]).optional().default("male"),
1210
+ showSilkscreenPinLabels: z54.boolean().optional(),
1211
+ pcbPinLabels: z54.record(z54.string(), z54.string()).optional(),
1212
+ doubleRow: z54.boolean().optional(),
1213
+ rightAngle: z54.boolean().optional(),
1197
1214
  pcbOrientation: pcbOrientation.optional(),
1198
1215
  holeDiameter: distance14.optional(),
1199
1216
  platedDiameter: distance14.optional(),
1200
- pinLabels: z53.record(z53.string(), schematicPinLabel).or(z53.array(schematicPinLabel)).optional(),
1201
- connections: z53.custom().pipe(z53.record(z53.string(), connectionTarget)).optional(),
1202
- facingDirection: z53.enum(["left", "right"]).optional(),
1217
+ pinLabels: z54.record(z54.string(), schematicPinLabel).or(z54.array(schematicPinLabel)).optional(),
1218
+ connections: z54.custom().pipe(z54.record(z54.string(), connectionTarget)).optional(),
1219
+ facingDirection: z54.enum(["left", "right"]).optional(),
1203
1220
  schPinArrangement: schematicPinArrangement.optional(),
1204
1221
  schPinStyle: schematicPinStyle.optional(),
1205
1222
  schPinSpacing: distance14.optional(),
@@ -1209,29 +1226,29 @@ var pinHeaderProps = commonComponentProps.extend({
1209
1226
  expectTypesMatch(true);
1210
1227
 
1211
1228
  // lib/components/netalias.ts
1212
- import { z as z54 } from "zod";
1229
+ import { z as z55 } from "zod";
1213
1230
  import { rotation as rotation2 } from "circuit-json";
1214
- var netAliasProps = z54.object({
1215
- net: z54.string().optional(),
1216
- connection: z54.string().optional(),
1231
+ var netAliasProps = z55.object({
1232
+ net: z55.string().optional(),
1233
+ connection: z55.string().optional(),
1217
1234
  schX: distance.optional(),
1218
1235
  schY: distance.optional(),
1219
1236
  schRotation: rotation2.optional(),
1220
- anchorSide: z54.enum(["left", "top", "right", "bottom"]).optional()
1237
+ anchorSide: z55.enum(["left", "top", "right", "bottom"]).optional()
1221
1238
  });
1222
1239
  expectTypesMatch(true);
1223
1240
 
1224
1241
  // lib/components/netlabel.ts
1225
- import { z as z55 } from "zod";
1242
+ import { z as z56 } from "zod";
1226
1243
  import { rotation as rotation3 } from "circuit-json";
1227
- var netLabelProps = z55.object({
1228
- net: z55.string().optional(),
1229
- connection: z55.string().optional(),
1230
- connectsTo: z55.string().or(z55.array(z55.string())).optional(),
1244
+ var netLabelProps = z56.object({
1245
+ net: z56.string().optional(),
1246
+ connection: z56.string().optional(),
1247
+ connectsTo: z56.string().or(z56.array(z56.string())).optional(),
1231
1248
  schX: distance.optional(),
1232
1249
  schY: distance.optional(),
1233
1250
  schRotation: rotation3.optional(),
1234
- anchorSide: z55.enum(["left", "top", "right", "bottom"]).optional()
1251
+ anchorSide: z56.enum(["left", "top", "right", "bottom"]).optional()
1235
1252
  });
1236
1253
  expectTypesMatch(true);
1237
1254
 
@@ -1245,7 +1262,7 @@ var subcircuitProps = subcircuitGroupProps;
1245
1262
  expectTypesMatch(true);
1246
1263
 
1247
1264
  // lib/components/transistor.ts
1248
- import { z as z57 } from "zod";
1265
+ import { z as z58 } from "zod";
1249
1266
  var transistorPinsLabels = [
1250
1267
  "pin1",
1251
1268
  "pin2",
@@ -1258,7 +1275,7 @@ var transistorPinsLabels = [
1258
1275
  "drain"
1259
1276
  ];
1260
1277
  var transistorProps = commonComponentProps.extend({
1261
- type: z57.enum(["npn", "pnp", "bjt", "jfet", "mosfet", "igbt"]),
1278
+ type: z58.enum(["npn", "pnp", "bjt", "jfet", "mosfet", "igbt"]),
1262
1279
  connections: createConnectionsProp(transistorPinsLabels).optional()
1263
1280
  });
1264
1281
  var transistorPins = [
@@ -1272,10 +1289,10 @@ var transistorPins = [
1272
1289
  expectTypesMatch(true);
1273
1290
 
1274
1291
  // lib/components/mosfet.ts
1275
- import { z as z58 } from "zod";
1292
+ import { z as z59 } from "zod";
1276
1293
  var mosfetProps = commonComponentProps.extend({
1277
- channelType: z58.enum(["n", "p"]),
1278
- mosfetMode: z58.enum(["enhancement", "depletion"])
1294
+ channelType: z59.enum(["n", "p"]),
1295
+ mosfetMode: z59.enum(["enhancement", "depletion"])
1279
1296
  });
1280
1297
  var mosfetPins = [
1281
1298
  "pin1",
@@ -1289,19 +1306,19 @@ expectTypesMatch(true);
1289
1306
 
1290
1307
  // lib/components/inductor.ts
1291
1308
  import { inductance } from "circuit-json";
1292
- import { z as z59 } from "zod";
1309
+ import { z as z60 } from "zod";
1293
1310
  var inductorPins = lrPins;
1294
1311
  var inductorProps = commonComponentProps.extend({
1295
1312
  inductance,
1296
- maxCurrentRating: z59.union([z59.string(), z59.number()]).optional(),
1313
+ maxCurrentRating: z60.union([z60.string(), z60.number()]).optional(),
1297
1314
  schOrientation: schematicOrientation.optional(),
1298
1315
  connections: createConnectionsProp(inductorPins).optional()
1299
1316
  });
1300
1317
  expectTypesMatch(true);
1301
1318
 
1302
1319
  // lib/components/diode.ts
1303
- import { z as z60 } from "zod";
1304
- var diodeConnectionKeys = z60.enum([
1320
+ import { z as z61 } from "zod";
1321
+ var diodeConnectionKeys = z61.enum([
1305
1322
  "anode",
1306
1323
  "cathode",
1307
1324
  "pin1",
@@ -1309,9 +1326,9 @@ var diodeConnectionKeys = z60.enum([
1309
1326
  "pos",
1310
1327
  "neg"
1311
1328
  ]);
1312
- var connectionTarget3 = z60.string().or(z60.array(z60.string()).readonly()).or(z60.array(z60.string()));
1313
- var connectionsProp2 = z60.record(diodeConnectionKeys, connectionTarget3);
1314
- var diodeVariant = z60.enum([
1329
+ var connectionTarget3 = z61.string().or(z61.array(z61.string()).readonly()).or(z61.array(z61.string()));
1330
+ var connectionsProp2 = z61.record(diodeConnectionKeys, connectionTarget3);
1331
+ var diodeVariant = z61.enum([
1315
1332
  "standard",
1316
1333
  "schottky",
1317
1334
  "zener",
@@ -1322,12 +1339,12 @@ var diodeVariant = z60.enum([
1322
1339
  var diodeProps = commonComponentProps.extend({
1323
1340
  connections: connectionsProp2.optional(),
1324
1341
  variant: diodeVariant.optional().default("standard"),
1325
- standard: z60.boolean().optional(),
1326
- schottky: z60.boolean().optional(),
1327
- zener: z60.boolean().optional(),
1328
- avalanche: z60.boolean().optional(),
1329
- photo: z60.boolean().optional(),
1330
- tvs: z60.boolean().optional(),
1342
+ standard: z61.boolean().optional(),
1343
+ schottky: z61.boolean().optional(),
1344
+ zener: z61.boolean().optional(),
1345
+ avalanche: z61.boolean().optional(),
1346
+ photo: z61.boolean().optional(),
1347
+ tvs: z61.boolean().optional(),
1331
1348
  schOrientation: schematicOrientation.optional()
1332
1349
  }).superRefine((data, ctx) => {
1333
1350
  const enabledFlags = [
@@ -1340,11 +1357,11 @@ var diodeProps = commonComponentProps.extend({
1340
1357
  ].filter(Boolean).length;
1341
1358
  if (enabledFlags > 1) {
1342
1359
  ctx.addIssue({
1343
- code: z60.ZodIssueCode.custom,
1360
+ code: z61.ZodIssueCode.custom,
1344
1361
  message: "Exactly one diode variant must be enabled",
1345
1362
  path: []
1346
1363
  });
1347
- return z60.INVALID;
1364
+ return z61.INVALID;
1348
1365
  }
1349
1366
  }).transform((data) => {
1350
1367
  const result = {
@@ -1391,26 +1408,26 @@ var diodePins = lrPolarPins;
1391
1408
  expectTypesMatch(true);
1392
1409
 
1393
1410
  // lib/components/led.ts
1394
- import { z as z61 } from "zod";
1411
+ import { z as z62 } from "zod";
1395
1412
  var ledProps = commonComponentProps.extend({
1396
- color: z61.string().optional(),
1397
- wavelength: z61.string().optional(),
1398
- schDisplayValue: z61.string().optional(),
1413
+ color: z62.string().optional(),
1414
+ wavelength: z62.string().optional(),
1415
+ schDisplayValue: z62.string().optional(),
1399
1416
  schOrientation: schematicOrientation.optional(),
1400
1417
  connections: createConnectionsProp(lrPolarPins).optional(),
1401
- laser: z61.boolean().optional()
1418
+ laser: z62.boolean().optional()
1402
1419
  });
1403
1420
  var ledPins = lrPolarPins;
1404
1421
 
1405
1422
  // lib/components/switch.ts
1406
- import { z as z62 } from "zod";
1423
+ import { z as z63 } from "zod";
1407
1424
  var switchProps = commonComponentProps.extend({
1408
- type: z62.enum(["spst", "spdt", "dpst", "dpdt"]).optional(),
1409
- isNormallyClosed: z62.boolean().optional().default(false),
1410
- spst: z62.boolean().optional(),
1411
- spdt: z62.boolean().optional(),
1412
- dpst: z62.boolean().optional(),
1413
- dpdt: z62.boolean().optional()
1425
+ type: z63.enum(["spst", "spdt", "dpst", "dpdt"]).optional(),
1426
+ isNormallyClosed: z63.boolean().optional().default(false),
1427
+ spst: z63.boolean().optional(),
1428
+ spdt: z63.boolean().optional(),
1429
+ dpst: z63.boolean().optional(),
1430
+ dpdt: z63.boolean().optional()
1414
1431
  }).transform((props) => {
1415
1432
  const updatedProps = { ...props };
1416
1433
  if (updatedProps.dpdt) {
@@ -1442,52 +1459,52 @@ expectTypesMatch(true);
1442
1459
 
1443
1460
  // lib/components/fabrication-note-text.ts
1444
1461
  import { length as length3 } from "circuit-json";
1445
- import { z as z63 } from "zod";
1462
+ import { z as z64 } from "zod";
1446
1463
  var fabricationNoteTextProps = pcbLayoutProps.extend({
1447
- text: z63.string(),
1448
- anchorAlignment: z63.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center"),
1449
- font: z63.enum(["tscircuit2024"]).optional(),
1464
+ text: z64.string(),
1465
+ anchorAlignment: z64.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"]).default("center"),
1466
+ font: z64.enum(["tscircuit2024"]).optional(),
1450
1467
  fontSize: length3.optional(),
1451
- color: z63.string().optional()
1468
+ color: z64.string().optional()
1452
1469
  });
1453
1470
 
1454
1471
  // lib/components/fabrication-note-path.ts
1455
1472
  import { length as length4, route_hint_point as route_hint_point3 } from "circuit-json";
1456
- import { z as z64 } from "zod";
1473
+ import { z as z65 } from "zod";
1457
1474
  var fabricationNotePathProps = pcbLayoutProps.omit({ pcbX: true, pcbY: true, pcbRotation: true }).extend({
1458
- route: z64.array(route_hint_point3),
1475
+ route: z65.array(route_hint_point3),
1459
1476
  strokeWidth: length4.optional(),
1460
- color: z64.string().optional()
1477
+ color: z65.string().optional()
1461
1478
  });
1462
1479
 
1463
1480
  // lib/components/pcb-trace.ts
1464
1481
  import { distance as distance15, route_hint_point as route_hint_point4 } from "circuit-json";
1465
- import { z as z65 } from "zod";
1466
- var pcbTraceProps = z65.object({
1467
- layer: z65.string().optional(),
1482
+ import { z as z66 } from "zod";
1483
+ var pcbTraceProps = z66.object({
1484
+ layer: z66.string().optional(),
1468
1485
  thickness: distance15.optional(),
1469
- route: z65.array(route_hint_point4)
1486
+ route: z66.array(route_hint_point4)
1470
1487
  });
1471
1488
 
1472
1489
  // lib/components/via.ts
1473
1490
  import { distance as distance16, layer_ref as layer_ref5 } from "circuit-json";
1474
- import { z as z66 } from "zod";
1491
+ import { z as z67 } from "zod";
1475
1492
  var viaProps = commonLayoutProps.extend({
1476
- name: z66.string().optional(),
1493
+ name: z67.string().optional(),
1477
1494
  fromLayer: layer_ref5,
1478
1495
  toLayer: layer_ref5,
1479
1496
  holeDiameter: distance16,
1480
1497
  outerDiameter: distance16,
1481
- connectsTo: z66.string().or(z66.array(z66.string())).optional()
1498
+ connectsTo: z67.string().or(z67.array(z67.string())).optional()
1482
1499
  });
1483
1500
  expectTypesMatch(true);
1484
1501
 
1485
1502
  // lib/components/testpoint.ts
1486
1503
  import { distance as distance17 } from "circuit-json";
1487
- import { z as z67 } from "zod";
1504
+ import { z as z68 } from "zod";
1488
1505
  var testpointProps = commonComponentProps.extend({
1489
- footprintVariant: z67.enum(["pad", "through_hole"]).optional(),
1490
- padShape: z67.enum(["rect", "circle"]).optional().default("circle"),
1506
+ footprintVariant: z68.enum(["pad", "through_hole"]).optional(),
1507
+ padShape: z68.enum(["rect", "circle"]).optional().default("circle"),
1491
1508
  padDiameter: distance17.optional(),
1492
1509
  holeDiameter: distance17.optional(),
1493
1510
  width: distance17.optional(),
@@ -1499,34 +1516,34 @@ var testpointProps = commonComponentProps.extend({
1499
1516
  expectTypesMatch(true);
1500
1517
 
1501
1518
  // lib/components/breakoutpoint.ts
1502
- import { z as z68 } from "zod";
1519
+ import { z as z69 } from "zod";
1503
1520
  var breakoutPointProps = pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
1504
- connection: z68.string()
1521
+ connection: z69.string()
1505
1522
  });
1506
1523
  expectTypesMatch(true);
1507
1524
 
1508
1525
  // lib/components/pcb-keepout.ts
1509
1526
  import { distance as distance18 } from "circuit-json";
1510
- import { z as z69 } from "zod";
1511
- var pcbKeepoutProps = z69.union([
1527
+ import { z as z70 } from "zod";
1528
+ var pcbKeepoutProps = z70.union([
1512
1529
  pcbLayoutProps.omit({ pcbRotation: true }).extend({
1513
- shape: z69.literal("circle"),
1530
+ shape: z70.literal("circle"),
1514
1531
  radius: distance18
1515
1532
  }),
1516
1533
  pcbLayoutProps.extend({
1517
- shape: z69.literal("rect"),
1534
+ shape: z70.literal("rect"),
1518
1535
  width: distance18,
1519
1536
  height: distance18
1520
1537
  })
1521
1538
  ]);
1522
1539
 
1523
1540
  // lib/components/copper-pour.ts
1524
- import { z as z70 } from "zod";
1541
+ import { z as z71 } from "zod";
1525
1542
  import { layer_ref as layer_ref6 } from "circuit-json";
1526
- var copperPourProps = z70.object({
1527
- name: z70.string().optional(),
1543
+ var copperPourProps = z71.object({
1544
+ name: z71.string().optional(),
1528
1545
  layer: layer_ref6,
1529
- connectsTo: z70.string(),
1546
+ connectsTo: z71.string(),
1530
1547
  padMargin: distance.optional(),
1531
1548
  traceMargin: distance.optional()
1532
1549
  });
@@ -1534,26 +1551,26 @@ expectTypesMatch(true);
1534
1551
 
1535
1552
  // lib/components/cadassembly.ts
1536
1553
  import { layer_ref as layer_ref7 } from "circuit-json";
1537
- import { z as z71 } from "zod";
1538
- var cadassemblyProps = z71.object({
1554
+ import { z as z72 } from "zod";
1555
+ var cadassemblyProps = z72.object({
1539
1556
  originalLayer: layer_ref7.default("top").optional(),
1540
- children: z71.any().optional()
1557
+ children: z72.any().optional()
1541
1558
  });
1542
1559
  expectTypesMatch(true);
1543
1560
 
1544
1561
  // lib/components/cadmodel.ts
1545
- import { z as z72 } from "zod";
1546
- var pcbPosition = z72.object({
1562
+ import { z as z73 } from "zod";
1563
+ var pcbPosition = z73.object({
1547
1564
  pcbX: distance.optional(),
1548
1565
  pcbY: distance.optional(),
1549
1566
  pcbZ: distance.optional()
1550
1567
  });
1551
1568
  var cadModelBaseWithUrl = cadModelBase.extend({
1552
- modelUrl: z72.string()
1569
+ modelUrl: z73.string()
1553
1570
  });
1554
1571
  var cadModelObject = cadModelBaseWithUrl.merge(pcbPosition);
1555
1572
  expectTypesMatch(true);
1556
- var cadmodelProps = z72.union([z72.null(), z72.string(), cadModelObject]);
1573
+ var cadmodelProps = z73.union([z73.null(), z73.string(), cadModelObject]);
1557
1574
 
1558
1575
  // lib/components/power-source.ts
1559
1576
  import { voltage as voltage3 } from "circuit-json";
@@ -1563,9 +1580,9 @@ var powerSourceProps = commonComponentProps.extend({
1563
1580
 
1564
1581
  // lib/components/voltagesource.ts
1565
1582
  import { frequency as frequency3, rotation as rotation4, voltage as voltage4 } from "circuit-json";
1566
- import { z as z73 } from "zod";
1583
+ import { z as z74 } from "zod";
1567
1584
  var voltageSourcePinLabels = ["pin1", "pin2", "pos", "neg"];
1568
- var percentage = z73.union([z73.string(), z73.number()]).transform((val) => {
1585
+ var percentage = z74.union([z74.string(), z74.number()]).transform((val) => {
1569
1586
  if (typeof val === "string") {
1570
1587
  if (val.endsWith("%")) {
1571
1588
  return parseFloat(val.slice(0, -1)) / 100;
@@ -1574,13 +1591,13 @@ var percentage = z73.union([z73.string(), z73.number()]).transform((val) => {
1574
1591
  }
1575
1592
  return val;
1576
1593
  }).pipe(
1577
- z73.number().min(0, "Duty cycle must be non-negative").max(1, "Duty cycle cannot be greater than 100%")
1594
+ z74.number().min(0, "Duty cycle must be non-negative").max(1, "Duty cycle cannot be greater than 100%")
1578
1595
  );
1579
1596
  var voltageSourceProps = commonComponentProps.extend({
1580
1597
  voltage: voltage4.optional(),
1581
1598
  frequency: frequency3.optional(),
1582
1599
  peakToPeakVoltage: voltage4.optional(),
1583
- waveShape: z73.enum(["sinewave", "square", "triangle", "sawtooth"]).optional(),
1600
+ waveShape: z74.enum(["sinewave", "square", "triangle", "sawtooth"]).optional(),
1584
1601
  phase: rotation4.optional(),
1585
1602
  dutyCycle: percentage.optional(),
1586
1603
  connections: createConnectionsProp(voltageSourcePinLabels).optional()
@@ -1591,22 +1608,6 @@ expectTypesMatch(true);
1591
1608
  // lib/components/schematic-box.ts
1592
1609
  import { distance as distance19 } from "circuit-json";
1593
1610
  import { z as z75 } from "zod";
1594
-
1595
- // lib/common/ninePointAnchor.ts
1596
- import { z as z74 } from "zod";
1597
- var ninePointAnchor = z74.enum([
1598
- "top_left",
1599
- "top_center",
1600
- "top_right",
1601
- "center_left",
1602
- "center",
1603
- "center_right",
1604
- "bottom_left",
1605
- "bottom_center",
1606
- "bottom_right"
1607
- ]);
1608
-
1609
- // lib/components/schematic-box.ts
1610
1611
  var schematicBoxProps = z75.object({
1611
1612
  schX: distance19.optional(),
1612
1613
  schY: distance19.optional(),
@@ -1813,6 +1814,11 @@ var footprintLibraryResult = z89.object({
1813
1814
  cadModel: cadModelProp.optional()
1814
1815
  });
1815
1816
  var pathToCircuitJsonFn = z89.function().args(z89.string()).returns(z89.promise(footprintLibraryResult)).describe("A function that takes a path and returns Circuit JSON");
1817
+ var footprintFileParserEntry = z89.object({
1818
+ loadFromUrl: z89.function().args(z89.string()).returns(z89.promise(footprintLibraryResult)).describe(
1819
+ "A function that takes a footprint file URL and returns Circuit JSON"
1820
+ )
1821
+ });
1816
1822
  var platformConfig = z89.object({
1817
1823
  partsEngine: partsEngine.optional(),
1818
1824
  autorouter: autorouterProp.optional(),
@@ -1836,7 +1842,8 @@ var platformConfig = z89.object({
1836
1842
  z89.union([unvalidatedCircuitJson, pathToCircuitJsonFn])
1837
1843
  )
1838
1844
  ])
1839
- ).optional()
1845
+ ).optional(),
1846
+ footprintFileParserMap: z89.record(z89.string(), footprintFileParserEntry).optional()
1840
1847
  });
1841
1848
  expectTypesMatch(true);
1842
1849