@tscircuit/core 0.0.1236 → 0.0.1238

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as circuit_json from 'circuit-json';
2
- import { PcbTraceError, PcbPlacementError, PcbManualEditConflictWarning, PcbViaClearanceError, LayerRef, AnyCircuitElement, Size, PcbTrace as PcbTrace$1, PcbTraceRoutePoint, AnySourceComponent, PcbComponent, PcbVia, SchematicPort, SchematicComponent, RouteHintPoint, CircuitJson } from 'circuit-json';
2
+ import { PcbTraceError, PcbPlacementError, PcbManualEditConflictWarning, PcbViaClearanceError, LayerRef, AnyCircuitElement, Size, PcbTrace as PcbTrace$1, PcbVia as PcbVia$1, PcbTraceRoutePoint, AnySourceComponent, PcbComponent, SchematicPort, SchematicComponent, RouteHintPoint, CircuitJson } from 'circuit-json';
3
3
  import * as _tscircuit_props from '@tscircuit/props';
4
4
  import { PlatformConfig, traceProps, netProps, AutorouterProp, AutoroutingPhaseProps, subcircuitGroupProps, AutorouterConfig, PcbSx, portProps, SupplierPartNumbers, CadModelProp, SchematicPortArrangement, groupProps, boardProps, subcircuitProps, subpanelProps, capacitorProps, chipProps, pinoutProps, diodeProps, fuseProps, jumperProps, interconnectProps, solderjumperProps, ledProps, powerSourceProps, voltageSourceProps, currentSourceProps, resistorProps, constraintProps, autoroutingPhaseProps, fabricationNoteRectProps, fabricationNotePathProps, fabricationNoteTextProps, fabricationNoteDimensionProps, pcbNoteLineProps, pcbNoteRectProps, pcbNoteTextProps, pcbNotePathProps, pcbNoteDimensionProps, footprintProps, breakoutProps, breakoutPointProps, holeProps, pcbKeepoutProps, netLabelProps, cadmodelProps, cadassemblyProps, platedHoleProps, courtyardCircleProps, courtyardOutlineProps, courtyardRectProps, silkscreenCircleProps, silkscreenPathProps, silkscreenRectProps, silkscreenTextProps, silkscreenLineProps, smtPadProps, fiducialProps, traceHintProps, viaProps, copperPourProps, copperTextProps, cutoutProps, batteryProps, pinHeaderProps, resonatorProps, inductorProps, potentiometerProps, pushButtonProps, crystalProps, transistorProps, mosfetProps, opampProps, OpAmpPinLabels, switchProps, SwitchProps, testpointProps, schematicTextProps, schematicLineProps, schematicRectProps, schematicArcProps, schematicCircleProps, schematicPathProps, schematicBoxProps, schematicSectionProps, schematicTableProps, schematicRowProps, schematicCellProps, symbolProps, analogSimulationProps, voltageProbeProps, CapacitorProps, ChipProps, DiodeProps, ResistorProps, ManualEditEvent, ManualEditsFile, ChipConnections, manual_edits_file } from '@tscircuit/props';
5
5
  export { kicadFootprintStrings } from '@tscircuit/props';
@@ -459,6 +459,7 @@ declare class Trace extends PrimitiveComponent<typeof traceProps> implements Tra
459
459
  pcb_trace_id: string | null;
460
460
  schematic_trace_id: string | null;
461
461
  _inflatedPcbTrace?: PcbTrace$1;
462
+ _inflatedPcbVias?: PcbVia$1[];
462
463
  _portsRoutedOnPcb: Port[];
463
464
  subcircuit_connectivity_map_key: string | null;
464
465
  _traceConnectionHash: string | null;
@@ -2301,7 +2302,7 @@ declare class Group<Props extends z.ZodType<any, any, any> = typeof groupProps>
2301
2302
  getNormalComponentNameMap(): Map<string, NormalComponent[]>;
2302
2303
  _asyncAutoroutingResult: {
2303
2304
  output_simple_route_json?: SimpleRouteJson;
2304
- output_pcb_traces?: (PcbTrace$1 | PcbVia)[];
2305
+ output_pcb_traces?: (PcbTrace$1 | PcbVia$1)[];
2305
2306
  output_jumpers?: Array<{
2306
2307
  jumper_footprint: string;
2307
2308
  center: {
@@ -83244,6 +83245,531 @@ declare class PcbTrace extends PrimitiveComponent<typeof pcbTraceProps> {
83244
83245
  };
83245
83246
  }
83246
83247
 
83248
+ declare const pcbViaProps: z.ZodObject<{
83249
+ pcbX: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83250
+ pcbY: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83251
+ pcbLeftEdgeX: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83252
+ pcbRightEdgeX: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83253
+ pcbTopEdgeY: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83254
+ pcbBottomEdgeY: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83255
+ pcbOffsetX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83256
+ pcbOffsetY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83257
+ pcbRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83258
+ pcbPositionAnchor: z.ZodOptional<z.ZodString>;
83259
+ pcbPositionMode: z.ZodOptional<z.ZodEnum<["relative_to_group_anchor", "auto", "relative_to_board_anchor", "relative_to_component_anchor"]>>;
83260
+ shouldBeOnEdgeOfBoard: z.ZodOptional<z.ZodBoolean>;
83261
+ pcbMarginTop: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83262
+ pcbMarginRight: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83263
+ pcbMarginBottom: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83264
+ pcbMarginLeft: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83265
+ pcbMarginX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83266
+ pcbMarginY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83267
+ pcbStyle: z.ZodOptional<z.ZodObject<{
83268
+ silkscreenFontSize: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83269
+ viaPadDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83270
+ viaHoleDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83271
+ silkscreenTextPosition: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["centered", "outside", "none"]>, z.ZodObject<{
83272
+ offsetX: z.ZodNumber;
83273
+ offsetY: z.ZodNumber;
83274
+ }, "strip", z.ZodTypeAny, {
83275
+ offsetX: number;
83276
+ offsetY: number;
83277
+ }, {
83278
+ offsetX: number;
83279
+ offsetY: number;
83280
+ }>]>>;
83281
+ silkscreenTextVisibility: z.ZodOptional<z.ZodEnum<["hidden", "visible", "inherit"]>>;
83282
+ }, "strip", z.ZodTypeAny, {
83283
+ silkscreenFontSize?: number | undefined;
83284
+ viaPadDiameter?: number | undefined;
83285
+ viaHoleDiameter?: number | undefined;
83286
+ silkscreenTextPosition?: "centered" | "outside" | "none" | {
83287
+ offsetX: number;
83288
+ offsetY: number;
83289
+ } | undefined;
83290
+ silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
83291
+ }, {
83292
+ silkscreenFontSize?: string | number | undefined;
83293
+ viaPadDiameter?: string | number | undefined;
83294
+ viaHoleDiameter?: string | number | undefined;
83295
+ silkscreenTextPosition?: "centered" | "outside" | "none" | {
83296
+ offsetX: number;
83297
+ offsetY: number;
83298
+ } | undefined;
83299
+ silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
83300
+ }>>;
83301
+ pcbSx: z.ZodOptional<z.ZodType<_tscircuit_props.PcbSx, z.ZodTypeDef, _tscircuit_props.PcbSx>>;
83302
+ schMarginTop: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83303
+ schMarginRight: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83304
+ schMarginBottom: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83305
+ schMarginLeft: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83306
+ schMarginX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83307
+ schMarginY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83308
+ schX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83309
+ schY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83310
+ schRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83311
+ layer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83312
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
83313
+ }, "strip", z.ZodTypeAny, {
83314
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83315
+ }, {
83316
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83317
+ }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83318
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83319
+ }>>;
83320
+ footprint: z.ZodOptional<z.ZodType<_tscircuit_props.FootprintProp, z.ZodTypeDef, _tscircuit_props.FootprintProp>>;
83321
+ symbol: z.ZodOptional<z.ZodType<_tscircuit_props.SymbolProp, z.ZodTypeDef, _tscircuit_props.SymbolProp>>;
83322
+ schStyle: z.ZodOptional<z.ZodObject<{
83323
+ defaultPassiveSize: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["xs", "sm", "md"]>, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83324
+ defaultCapacitorOrientation: z.ZodOptional<z.ZodEnum<["vertical", "none"]>>;
83325
+ }, "strip", z.ZodTypeAny, {
83326
+ defaultPassiveSize?: number | "xs" | "sm" | "md" | undefined;
83327
+ defaultCapacitorOrientation?: "none" | "vertical" | undefined;
83328
+ }, {
83329
+ defaultPassiveSize?: string | number | undefined;
83330
+ defaultCapacitorOrientation?: "none" | "vertical" | undefined;
83331
+ }>>;
83332
+ relative: z.ZodOptional<z.ZodBoolean>;
83333
+ schRelative: z.ZodOptional<z.ZodBoolean>;
83334
+ pcbRelative: z.ZodOptional<z.ZodBoolean>;
83335
+ } & {
83336
+ holeDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83337
+ outerDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83338
+ fromLayer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83339
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
83340
+ }, "strip", z.ZodTypeAny, {
83341
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83342
+ }, {
83343
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83344
+ }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83345
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83346
+ }>>;
83347
+ toLayer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83348
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
83349
+ }, "strip", z.ZodTypeAny, {
83350
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83351
+ }, {
83352
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83353
+ }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83354
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83355
+ }>>;
83356
+ layers: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83357
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
83358
+ }, "strip", z.ZodTypeAny, {
83359
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83360
+ }, {
83361
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83362
+ }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83363
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83364
+ }>, "many">>;
83365
+ pcbTraceId: z.ZodOptional<z.ZodString>;
83366
+ netIsAssignable: z.ZodOptional<z.ZodBoolean>;
83367
+ netAssigned: z.ZodOptional<z.ZodBoolean>;
83368
+ isTented: z.ZodOptional<z.ZodBoolean>;
83369
+ }, "strip", z.ZodTypeAny, {
83370
+ symbol?: _tscircuit_props.SymbolProp | undefined;
83371
+ layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
83372
+ layers?: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[] | undefined;
83373
+ schX?: number | undefined;
83374
+ schY?: number | undefined;
83375
+ pcbX?: string | number | undefined;
83376
+ pcbY?: string | number | undefined;
83377
+ pcbLeftEdgeX?: string | number | undefined;
83378
+ pcbRightEdgeX?: string | number | undefined;
83379
+ pcbTopEdgeY?: string | number | undefined;
83380
+ pcbBottomEdgeY?: string | number | undefined;
83381
+ relative?: boolean | undefined;
83382
+ pcbOffsetX?: number | undefined;
83383
+ pcbOffsetY?: number | undefined;
83384
+ pcbRotation?: number | undefined;
83385
+ pcbPositionAnchor?: string | undefined;
83386
+ pcbPositionMode?: "auto" | "relative_to_group_anchor" | "relative_to_board_anchor" | "relative_to_component_anchor" | undefined;
83387
+ shouldBeOnEdgeOfBoard?: boolean | undefined;
83388
+ pcbMarginTop?: number | undefined;
83389
+ pcbMarginRight?: number | undefined;
83390
+ pcbMarginBottom?: number | undefined;
83391
+ pcbMarginLeft?: number | undefined;
83392
+ pcbMarginX?: number | undefined;
83393
+ pcbMarginY?: number | undefined;
83394
+ pcbStyle?: {
83395
+ silkscreenFontSize?: number | undefined;
83396
+ viaPadDiameter?: number | undefined;
83397
+ viaHoleDiameter?: number | undefined;
83398
+ silkscreenTextPosition?: "centered" | "outside" | "none" | {
83399
+ offsetX: number;
83400
+ offsetY: number;
83401
+ } | undefined;
83402
+ silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
83403
+ } | undefined;
83404
+ pcbSx?: _tscircuit_props.PcbSx | undefined;
83405
+ schMarginTop?: number | undefined;
83406
+ schMarginRight?: number | undefined;
83407
+ schMarginBottom?: number | undefined;
83408
+ schMarginLeft?: number | undefined;
83409
+ schMarginX?: number | undefined;
83410
+ schMarginY?: number | undefined;
83411
+ schRotation?: number | undefined;
83412
+ footprint?: _tscircuit_props.FootprintProp | undefined;
83413
+ schStyle?: {
83414
+ defaultPassiveSize?: number | "xs" | "sm" | "md" | undefined;
83415
+ defaultCapacitorOrientation?: "none" | "vertical" | undefined;
83416
+ } | undefined;
83417
+ schRelative?: boolean | undefined;
83418
+ pcbRelative?: boolean | undefined;
83419
+ fromLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
83420
+ toLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
83421
+ holeDiameter?: number | undefined;
83422
+ outerDiameter?: number | undefined;
83423
+ pcbTraceId?: string | undefined;
83424
+ netIsAssignable?: boolean | undefined;
83425
+ netAssigned?: boolean | undefined;
83426
+ isTented?: boolean | undefined;
83427
+ }, {
83428
+ symbol?: _tscircuit_props.SymbolProp | undefined;
83429
+ layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83430
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83431
+ } | undefined;
83432
+ layers?: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83433
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83434
+ })[] | undefined;
83435
+ schX?: string | number | undefined;
83436
+ schY?: string | number | undefined;
83437
+ pcbX?: string | number | undefined;
83438
+ pcbY?: string | number | undefined;
83439
+ pcbLeftEdgeX?: string | number | undefined;
83440
+ pcbRightEdgeX?: string | number | undefined;
83441
+ pcbTopEdgeY?: string | number | undefined;
83442
+ pcbBottomEdgeY?: string | number | undefined;
83443
+ relative?: boolean | undefined;
83444
+ pcbOffsetX?: string | number | undefined;
83445
+ pcbOffsetY?: string | number | undefined;
83446
+ pcbRotation?: string | number | undefined;
83447
+ pcbPositionAnchor?: string | undefined;
83448
+ pcbPositionMode?: "auto" | "relative_to_group_anchor" | "relative_to_board_anchor" | "relative_to_component_anchor" | undefined;
83449
+ shouldBeOnEdgeOfBoard?: boolean | undefined;
83450
+ pcbMarginTop?: string | number | undefined;
83451
+ pcbMarginRight?: string | number | undefined;
83452
+ pcbMarginBottom?: string | number | undefined;
83453
+ pcbMarginLeft?: string | number | undefined;
83454
+ pcbMarginX?: string | number | undefined;
83455
+ pcbMarginY?: string | number | undefined;
83456
+ pcbStyle?: {
83457
+ silkscreenFontSize?: string | number | undefined;
83458
+ viaPadDiameter?: string | number | undefined;
83459
+ viaHoleDiameter?: string | number | undefined;
83460
+ silkscreenTextPosition?: "centered" | "outside" | "none" | {
83461
+ offsetX: number;
83462
+ offsetY: number;
83463
+ } | undefined;
83464
+ silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
83465
+ } | undefined;
83466
+ pcbSx?: _tscircuit_props.PcbSx | undefined;
83467
+ schMarginTop?: string | number | undefined;
83468
+ schMarginRight?: string | number | undefined;
83469
+ schMarginBottom?: string | number | undefined;
83470
+ schMarginLeft?: string | number | undefined;
83471
+ schMarginX?: string | number | undefined;
83472
+ schMarginY?: string | number | undefined;
83473
+ schRotation?: string | number | undefined;
83474
+ footprint?: _tscircuit_props.FootprintProp | undefined;
83475
+ schStyle?: {
83476
+ defaultPassiveSize?: string | number | undefined;
83477
+ defaultCapacitorOrientation?: "none" | "vertical" | undefined;
83478
+ } | undefined;
83479
+ schRelative?: boolean | undefined;
83480
+ pcbRelative?: boolean | undefined;
83481
+ fromLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83482
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83483
+ } | undefined;
83484
+ toLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83485
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83486
+ } | undefined;
83487
+ holeDiameter?: string | number | undefined;
83488
+ outerDiameter?: string | number | undefined;
83489
+ pcbTraceId?: string | undefined;
83490
+ netIsAssignable?: boolean | undefined;
83491
+ netAssigned?: boolean | undefined;
83492
+ isTented?: boolean | undefined;
83493
+ }>;
83494
+ declare class PcbVia extends PrimitiveComponent<typeof pcbViaProps> {
83495
+ pcb_via_id: string | null;
83496
+ isPcbPrimitive: boolean;
83497
+ get config(): {
83498
+ componentName: string;
83499
+ zodProps: z.ZodObject<{
83500
+ pcbX: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83501
+ pcbY: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83502
+ pcbLeftEdgeX: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83503
+ pcbRightEdgeX: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83504
+ pcbTopEdgeY: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83505
+ pcbBottomEdgeY: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83506
+ pcbOffsetX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83507
+ pcbOffsetY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83508
+ pcbRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83509
+ pcbPositionAnchor: z.ZodOptional<z.ZodString>;
83510
+ pcbPositionMode: z.ZodOptional<z.ZodEnum<["relative_to_group_anchor", "auto", "relative_to_board_anchor", "relative_to_component_anchor"]>>;
83511
+ shouldBeOnEdgeOfBoard: z.ZodOptional<z.ZodBoolean>;
83512
+ pcbMarginTop: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83513
+ pcbMarginRight: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83514
+ pcbMarginBottom: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83515
+ pcbMarginLeft: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83516
+ pcbMarginX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83517
+ pcbMarginY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83518
+ pcbStyle: z.ZodOptional<z.ZodObject<{
83519
+ silkscreenFontSize: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83520
+ viaPadDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83521
+ viaHoleDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83522
+ silkscreenTextPosition: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["centered", "outside", "none"]>, z.ZodObject<{
83523
+ offsetX: z.ZodNumber;
83524
+ offsetY: z.ZodNumber;
83525
+ }, "strip", z.ZodTypeAny, {
83526
+ offsetX: number;
83527
+ offsetY: number;
83528
+ }, {
83529
+ offsetX: number;
83530
+ offsetY: number;
83531
+ }>]>>;
83532
+ silkscreenTextVisibility: z.ZodOptional<z.ZodEnum<["hidden", "visible", "inherit"]>>;
83533
+ }, "strip", z.ZodTypeAny, {
83534
+ silkscreenFontSize?: number | undefined;
83535
+ viaPadDiameter?: number | undefined;
83536
+ viaHoleDiameter?: number | undefined;
83537
+ silkscreenTextPosition?: "centered" | "outside" | "none" | {
83538
+ offsetX: number;
83539
+ offsetY: number;
83540
+ } | undefined;
83541
+ silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
83542
+ }, {
83543
+ silkscreenFontSize?: string | number | undefined;
83544
+ viaPadDiameter?: string | number | undefined;
83545
+ viaHoleDiameter?: string | number | undefined;
83546
+ silkscreenTextPosition?: "centered" | "outside" | "none" | {
83547
+ offsetX: number;
83548
+ offsetY: number;
83549
+ } | undefined;
83550
+ silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
83551
+ }>>;
83552
+ pcbSx: z.ZodOptional<z.ZodType<_tscircuit_props.PcbSx, z.ZodTypeDef, _tscircuit_props.PcbSx>>;
83553
+ schMarginTop: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83554
+ schMarginRight: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83555
+ schMarginBottom: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83556
+ schMarginLeft: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83557
+ schMarginX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83558
+ schMarginY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83559
+ schX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83560
+ schY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83561
+ schRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83562
+ layer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83563
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
83564
+ }, "strip", z.ZodTypeAny, {
83565
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83566
+ }, {
83567
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83568
+ }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83569
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83570
+ }>>;
83571
+ footprint: z.ZodOptional<z.ZodType<_tscircuit_props.FootprintProp, z.ZodTypeDef, _tscircuit_props.FootprintProp>>;
83572
+ symbol: z.ZodOptional<z.ZodType<_tscircuit_props.SymbolProp, z.ZodTypeDef, _tscircuit_props.SymbolProp>>;
83573
+ schStyle: z.ZodOptional<z.ZodObject<{
83574
+ defaultPassiveSize: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["xs", "sm", "md"]>, z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>]>>;
83575
+ defaultCapacitorOrientation: z.ZodOptional<z.ZodEnum<["vertical", "none"]>>;
83576
+ }, "strip", z.ZodTypeAny, {
83577
+ defaultPassiveSize?: number | "xs" | "sm" | "md" | undefined;
83578
+ defaultCapacitorOrientation?: "none" | "vertical" | undefined;
83579
+ }, {
83580
+ defaultPassiveSize?: string | number | undefined;
83581
+ defaultCapacitorOrientation?: "none" | "vertical" | undefined;
83582
+ }>>;
83583
+ relative: z.ZodOptional<z.ZodBoolean>;
83584
+ schRelative: z.ZodOptional<z.ZodBoolean>;
83585
+ pcbRelative: z.ZodOptional<z.ZodBoolean>;
83586
+ } & {
83587
+ holeDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83588
+ outerDiameter: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
83589
+ fromLayer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83590
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
83591
+ }, "strip", z.ZodTypeAny, {
83592
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83593
+ }, {
83594
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83595
+ }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83596
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83597
+ }>>;
83598
+ toLayer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83599
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
83600
+ }, "strip", z.ZodTypeAny, {
83601
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83602
+ }, {
83603
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83604
+ }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83605
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83606
+ }>>;
83607
+ layers: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
83608
+ name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
83609
+ }, "strip", z.ZodTypeAny, {
83610
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83611
+ }, {
83612
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83613
+ }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83614
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83615
+ }>, "many">>;
83616
+ pcbTraceId: z.ZodOptional<z.ZodString>;
83617
+ netIsAssignable: z.ZodOptional<z.ZodBoolean>;
83618
+ netAssigned: z.ZodOptional<z.ZodBoolean>;
83619
+ isTented: z.ZodOptional<z.ZodBoolean>;
83620
+ }, "strip", z.ZodTypeAny, {
83621
+ symbol?: _tscircuit_props.SymbolProp | undefined;
83622
+ layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
83623
+ layers?: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6")[] | undefined;
83624
+ schX?: number | undefined;
83625
+ schY?: number | undefined;
83626
+ pcbX?: string | number | undefined;
83627
+ pcbY?: string | number | undefined;
83628
+ pcbLeftEdgeX?: string | number | undefined;
83629
+ pcbRightEdgeX?: string | number | undefined;
83630
+ pcbTopEdgeY?: string | number | undefined;
83631
+ pcbBottomEdgeY?: string | number | undefined;
83632
+ relative?: boolean | undefined;
83633
+ pcbOffsetX?: number | undefined;
83634
+ pcbOffsetY?: number | undefined;
83635
+ pcbRotation?: number | undefined;
83636
+ pcbPositionAnchor?: string | undefined;
83637
+ pcbPositionMode?: "auto" | "relative_to_group_anchor" | "relative_to_board_anchor" | "relative_to_component_anchor" | undefined;
83638
+ shouldBeOnEdgeOfBoard?: boolean | undefined;
83639
+ pcbMarginTop?: number | undefined;
83640
+ pcbMarginRight?: number | undefined;
83641
+ pcbMarginBottom?: number | undefined;
83642
+ pcbMarginLeft?: number | undefined;
83643
+ pcbMarginX?: number | undefined;
83644
+ pcbMarginY?: number | undefined;
83645
+ pcbStyle?: {
83646
+ silkscreenFontSize?: number | undefined;
83647
+ viaPadDiameter?: number | undefined;
83648
+ viaHoleDiameter?: number | undefined;
83649
+ silkscreenTextPosition?: "centered" | "outside" | "none" | {
83650
+ offsetX: number;
83651
+ offsetY: number;
83652
+ } | undefined;
83653
+ silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
83654
+ } | undefined;
83655
+ pcbSx?: _tscircuit_props.PcbSx | undefined;
83656
+ schMarginTop?: number | undefined;
83657
+ schMarginRight?: number | undefined;
83658
+ schMarginBottom?: number | undefined;
83659
+ schMarginLeft?: number | undefined;
83660
+ schMarginX?: number | undefined;
83661
+ schMarginY?: number | undefined;
83662
+ schRotation?: number | undefined;
83663
+ footprint?: _tscircuit_props.FootprintProp | undefined;
83664
+ schStyle?: {
83665
+ defaultPassiveSize?: number | "xs" | "sm" | "md" | undefined;
83666
+ defaultCapacitorOrientation?: "none" | "vertical" | undefined;
83667
+ } | undefined;
83668
+ schRelative?: boolean | undefined;
83669
+ pcbRelative?: boolean | undefined;
83670
+ fromLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
83671
+ toLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | undefined;
83672
+ holeDiameter?: number | undefined;
83673
+ outerDiameter?: number | undefined;
83674
+ pcbTraceId?: string | undefined;
83675
+ netIsAssignable?: boolean | undefined;
83676
+ netAssigned?: boolean | undefined;
83677
+ isTented?: boolean | undefined;
83678
+ }, {
83679
+ symbol?: _tscircuit_props.SymbolProp | undefined;
83680
+ layer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83681
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83682
+ } | undefined;
83683
+ layers?: ("top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83684
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83685
+ })[] | undefined;
83686
+ schX?: string | number | undefined;
83687
+ schY?: string | number | undefined;
83688
+ pcbX?: string | number | undefined;
83689
+ pcbY?: string | number | undefined;
83690
+ pcbLeftEdgeX?: string | number | undefined;
83691
+ pcbRightEdgeX?: string | number | undefined;
83692
+ pcbTopEdgeY?: string | number | undefined;
83693
+ pcbBottomEdgeY?: string | number | undefined;
83694
+ relative?: boolean | undefined;
83695
+ pcbOffsetX?: string | number | undefined;
83696
+ pcbOffsetY?: string | number | undefined;
83697
+ pcbRotation?: string | number | undefined;
83698
+ pcbPositionAnchor?: string | undefined;
83699
+ pcbPositionMode?: "auto" | "relative_to_group_anchor" | "relative_to_board_anchor" | "relative_to_component_anchor" | undefined;
83700
+ shouldBeOnEdgeOfBoard?: boolean | undefined;
83701
+ pcbMarginTop?: string | number | undefined;
83702
+ pcbMarginRight?: string | number | undefined;
83703
+ pcbMarginBottom?: string | number | undefined;
83704
+ pcbMarginLeft?: string | number | undefined;
83705
+ pcbMarginX?: string | number | undefined;
83706
+ pcbMarginY?: string | number | undefined;
83707
+ pcbStyle?: {
83708
+ silkscreenFontSize?: string | number | undefined;
83709
+ viaPadDiameter?: string | number | undefined;
83710
+ viaHoleDiameter?: string | number | undefined;
83711
+ silkscreenTextPosition?: "centered" | "outside" | "none" | {
83712
+ offsetX: number;
83713
+ offsetY: number;
83714
+ } | undefined;
83715
+ silkscreenTextVisibility?: "hidden" | "visible" | "inherit" | undefined;
83716
+ } | undefined;
83717
+ pcbSx?: _tscircuit_props.PcbSx | undefined;
83718
+ schMarginTop?: string | number | undefined;
83719
+ schMarginRight?: string | number | undefined;
83720
+ schMarginBottom?: string | number | undefined;
83721
+ schMarginLeft?: string | number | undefined;
83722
+ schMarginX?: string | number | undefined;
83723
+ schMarginY?: string | number | undefined;
83724
+ schRotation?: string | number | undefined;
83725
+ footprint?: _tscircuit_props.FootprintProp | undefined;
83726
+ schStyle?: {
83727
+ defaultPassiveSize?: string | number | undefined;
83728
+ defaultCapacitorOrientation?: "none" | "vertical" | undefined;
83729
+ } | undefined;
83730
+ schRelative?: boolean | undefined;
83731
+ pcbRelative?: boolean | undefined;
83732
+ fromLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83733
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83734
+ } | undefined;
83735
+ toLayer?: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
83736
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
83737
+ } | undefined;
83738
+ holeDiameter?: string | number | undefined;
83739
+ outerDiameter?: string | number | undefined;
83740
+ pcbTraceId?: string | undefined;
83741
+ netIsAssignable?: boolean | undefined;
83742
+ netAssigned?: boolean | undefined;
83743
+ isTented?: boolean | undefined;
83744
+ }>;
83745
+ };
83746
+ private _getLayers;
83747
+ getAvailablePcbLayers(): string[];
83748
+ getPcbSize(): {
83749
+ width: number;
83750
+ height: number;
83751
+ };
83752
+ _getPcbCircuitJsonBounds(): {
83753
+ center: {
83754
+ x: number;
83755
+ y: number;
83756
+ };
83757
+ bounds: {
83758
+ left: number;
83759
+ top: number;
83760
+ right: number;
83761
+ bottom: number;
83762
+ };
83763
+ width: number;
83764
+ height: number;
83765
+ };
83766
+ _setPositionFromLayout(newCenter: {
83767
+ x: number;
83768
+ y: number;
83769
+ }): void;
83770
+ doInitialPcbPrimitiveRender(): void;
83771
+ }
83772
+
83247
83773
  declare class TraceHint extends PrimitiveComponent<typeof traceHintProps> {
83248
83774
  matchedPort: Port | null;
83249
83775
  get config(): {
@@ -152997,4 +153523,4 @@ declare module "react/jsx-runtime" {
152997
153523
  }
152998
153524
  }
152999
153525
 
153000
- export { AnalogSimulation, type AsyncEffect, type AutorouterCompleteEvent, type AutorouterErrorEvent, type AutorouterEvent, type AutorouterProgressEvent, type AutoroutingEndEvent, type AutoroutingErrorEvent, AutoroutingPhase, type AutoroutingProgressEvent, type AutoroutingStartEvent, Battery, Board, Breakout, BreakoutPoint, CadAssembly, CadModel, Capacitor, Chip, Circuit, type ComponentWithPins, Connector, Constraint, CopperPour, CopperText, CourtyardCircle, CourtyardOutline, CourtyardRect, Crystal, CurrentSource, Cutout, type DebugLogOutputEvent, Diode, FabricationNoteDimension, FabricationNotePath, FabricationNoteRect, FabricationNoteText, Fiducial, Footprint, Fuse, type GenericConnectionsAndSelectorsSel, type GenericLocalAutorouter, Group, Hole, type IIsolatedCircuit, type IRenderable, type IRootCircuit, Inductor, Interconnect, IsolatedCircuit, Jumper, Keepout, Led, type LocalCacheEngine, Mosfet, MountedBoard, Net, NetLabel, NormalComponent, type Obstacle, OpAmp, type PackingEndEvent, type PackingErrorEvent, type PackingStartEvent, Panel, PcbNoteDimension, PcbNoteLine, PcbNotePath, PcbNoteRect, PcbNoteText, PcbTrace, PinHeader, type PinLabelSpec, Pinout, PlatedHole, Port, Potentiometer, PowerSource, PrimitiveComponent, Project, PushButton, type RenderPhase, type RenderPhaseFn, type RenderPhaseFunctions, type RenderPhaseStates, Renderable, Resistor, Resonator, RootCircuit, type RootCircuitEventName, SOLVERS, SchematicArc, SchematicBox, SchematicCell, SchematicCircle, SchematicLine, SchematicPath, SchematicRect, SchematicRow, SchematicSection, SchematicTable, SchematicText, type Sel, SilkscreenCircle, SilkscreenLine, SilkscreenPath, SilkscreenRect, SilkscreenText, type SimpleRouteConnection, type SimpleRouteJson, type SimplifiedPcbTrace, SmtPad, SolderJumper, type SolverName, type SolverStartedEvent, Subcircuit, Subpanel, Switch, SymbolComponent as Symbol, TestPoint, Trace, TraceHint, Transistor, Via, VoltageProbe, VoltageSource, applyEditEvents, applyEditEventsToManualEditsFile, applyPcbEditEventsToManualEditsFile, applySchematicEditEventsToManualEditsFile, createUseComponent, getPhaseTimingsFromRenderEvents, getSimpleRouteJsonFromCircuitJson, normalizePinLabels, orderedRenderPhases, renderPhaseIndexMap, resolveStaticFileImport, sel, unrouteCircuitJson, useCapacitor, useChip, useDiode, useLed, useRenderedCircuit, useResistor };
153526
+ export { AnalogSimulation, type AsyncEffect, type AutorouterCompleteEvent, type AutorouterErrorEvent, type AutorouterEvent, type AutorouterProgressEvent, type AutoroutingEndEvent, type AutoroutingErrorEvent, AutoroutingPhase, type AutoroutingProgressEvent, type AutoroutingStartEvent, Battery, Board, Breakout, BreakoutPoint, CadAssembly, CadModel, Capacitor, Chip, Circuit, type ComponentWithPins, Connector, Constraint, CopperPour, CopperText, CourtyardCircle, CourtyardOutline, CourtyardRect, Crystal, CurrentSource, Cutout, type DebugLogOutputEvent, Diode, FabricationNoteDimension, FabricationNotePath, FabricationNoteRect, FabricationNoteText, Fiducial, Footprint, Fuse, type GenericConnectionsAndSelectorsSel, type GenericLocalAutorouter, Group, Hole, type IIsolatedCircuit, type IRenderable, type IRootCircuit, Inductor, Interconnect, IsolatedCircuit, Jumper, Keepout, Led, type LocalCacheEngine, Mosfet, MountedBoard, Net, NetLabel, NormalComponent, type Obstacle, OpAmp, type PackingEndEvent, type PackingErrorEvent, type PackingStartEvent, Panel, PcbNoteDimension, PcbNoteLine, PcbNotePath, PcbNoteRect, PcbNoteText, PcbTrace, PcbVia, PinHeader, type PinLabelSpec, Pinout, PlatedHole, Port, Potentiometer, PowerSource, PrimitiveComponent, Project, PushButton, type RenderPhase, type RenderPhaseFn, type RenderPhaseFunctions, type RenderPhaseStates, Renderable, Resistor, Resonator, RootCircuit, type RootCircuitEventName, SOLVERS, SchematicArc, SchematicBox, SchematicCell, SchematicCircle, SchematicLine, SchematicPath, SchematicRect, SchematicRow, SchematicSection, SchematicTable, SchematicText, type Sel, SilkscreenCircle, SilkscreenLine, SilkscreenPath, SilkscreenRect, SilkscreenText, type SimpleRouteConnection, type SimpleRouteJson, type SimplifiedPcbTrace, SmtPad, SolderJumper, type SolverName, type SolverStartedEvent, Subcircuit, Subpanel, Switch, SymbolComponent as Symbol, TestPoint, Trace, TraceHint, Transistor, Via, VoltageProbe, VoltageSource, applyEditEvents, applyEditEventsToManualEditsFile, applyPcbEditEventsToManualEditsFile, applySchematicEditEventsToManualEditsFile, createUseComponent, getPhaseTimingsFromRenderEvents, getSimpleRouteJsonFromCircuitJson, normalizePinLabels, orderedRenderPhases, renderPhaseIndexMap, resolveStaticFileImport, sel, unrouteCircuitJson, useCapacitor, useChip, useDiode, useLed, useRenderedCircuit, useResistor };
package/dist/index.js CHANGED
@@ -55,6 +55,7 @@ __export(components_exports, {
55
55
  PcbNoteRect: () => PcbNoteRect,
56
56
  PcbNoteText: () => PcbNoteText,
57
57
  PcbTrace: () => PcbTrace,
58
+ PcbVia: () => PcbVia,
58
59
  PinHeader: () => PinHeader,
59
60
  Pinout: () => Pinout,
60
61
  PlatedHole: () => PlatedHole,
@@ -101,7 +102,7 @@ __export(components_exports, {
101
102
  import { fp } from "@tscircuit/footprinter";
102
103
  import { normalizeDegrees as normalizeDegrees2 } from "@tscircuit/math-utils";
103
104
  import {
104
- distance as distance8,
105
+ distance as distance9,
105
106
  pcb_component_invalid_layer_error,
106
107
  pcb_manual_edit_conflict_warning,
107
108
  point3 as point32,
@@ -4534,6 +4535,12 @@ function clipTraceEndAtPad(params) {
4534
4535
  }
4535
4536
 
4536
4537
  // lib/components/primitive-components/Trace/Trace_doInitialPcbManualTraceRender.ts
4538
+ var findInflatedPcbViaForPoint = (vias, point6) => {
4539
+ if (point6.route_type !== "via") return void 0;
4540
+ return vias?.find(
4541
+ (via) => Math.abs(via.x - point6.x) < 1e-4 && Math.abs(via.y - point6.y) < 1e-4 && (!via.from_layer || via.from_layer === point6.from_layer) && (!via.to_layer || via.to_layer === point6.to_layer)
4542
+ );
4543
+ };
4537
4544
  function Trace_doInitialPcbManualTraceRender(trace) {
4538
4545
  if (trace.root?.pcbDisabled) return;
4539
4546
  const { db } = trace.root;
@@ -4619,17 +4626,39 @@ function Trace_doInitialPcbManualTraceRender(trace) {
4619
4626
  });
4620
4627
  const pcbStyle2 = trace.getInheritedMergedProperty("pcbStyle");
4621
4628
  const { holeDiameter: holeDiameter2, padDiameter: padDiameter2 } = getViaDiameterDefaults(pcbStyle2);
4622
- for (const point6 of transformedRoute) {
4629
+ for (let index = 0; index < transformedRoute.length; index++) {
4630
+ const point6 = transformedRoute[index];
4623
4631
  if (point6.route_type === "via") {
4632
+ const originalPoint = inflatedPcbTrace.route[index];
4633
+ const inflatedPcbVia = findInflatedPcbViaForPoint(
4634
+ trace._inflatedPcbVias,
4635
+ originalPoint
4636
+ );
4637
+ const fromLayer = maybeFlipLayer(
4638
+ inflatedPcbVia?.from_layer ?? point6.from_layer
4639
+ );
4640
+ const toLayer = maybeFlipLayer(
4641
+ inflatedPcbVia?.to_layer ?? point6.to_layer
4642
+ );
4643
+ const layers = (inflatedPcbVia?.layers ?? [
4644
+ point6.from_layer,
4645
+ point6.to_layer
4646
+ ]).map((layer2) => maybeFlipLayer(layer2));
4624
4647
  db.pcb_via.insert({
4625
4648
  pcb_trace_id: pcb_trace2.pcb_trace_id,
4626
4649
  x: point6.x,
4627
4650
  y: point6.y,
4628
- hole_diameter: holeDiameter2,
4629
- outer_diameter: padDiameter2,
4630
- layers: [point6.from_layer, point6.to_layer],
4631
- from_layer: point6.from_layer,
4632
- to_layer: point6.to_layer
4651
+ hole_diameter: inflatedPcbVia?.hole_diameter ?? holeDiameter2,
4652
+ outer_diameter: inflatedPcbVia?.outer_diameter ?? padDiameter2,
4653
+ layers,
4654
+ from_layer: fromLayer,
4655
+ to_layer: toLayer,
4656
+ subcircuit_id: subcircuit?.subcircuit_id ?? void 0,
4657
+ pcb_group_id: trace.getGroup()?.pcb_group_id ?? void 0,
4658
+ subcircuit_connectivity_map_key: inflatedPcbVia?.subcircuit_connectivity_map_key,
4659
+ net_is_assignable: inflatedPcbVia?.net_is_assignable,
4660
+ net_assigned: inflatedPcbVia?.net_assigned,
4661
+ is_tented: inflatedPcbVia?.is_tented
4633
4662
  });
4634
4663
  }
4635
4664
  }
@@ -5005,6 +5034,7 @@ var Trace3 = class extends PrimitiveComponent2 {
5005
5034
  pcb_trace_id = null;
5006
5035
  schematic_trace_id = null;
5007
5036
  _inflatedPcbTrace;
5037
+ _inflatedPcbVias;
5008
5038
  _portsRoutedOnPcb;
5009
5039
  subcircuit_connectivity_map_key = null;
5010
5040
  _traceConnectionHash = null;
@@ -6898,6 +6928,107 @@ var PcbTrace = class extends PrimitiveComponent2 {
6898
6928
  }
6899
6929
  };
6900
6930
 
6931
+ // lib/components/primitive-components/PcbVia.ts
6932
+ import { commonLayoutProps } from "@tscircuit/props";
6933
+ import {
6934
+ distance as distance4,
6935
+ layer_ref
6936
+ } from "circuit-json";
6937
+ import { z as z6 } from "zod";
6938
+ var pcbViaProps = commonLayoutProps.extend({
6939
+ holeDiameter: distance4.optional(),
6940
+ outerDiameter: distance4.optional(),
6941
+ fromLayer: layer_ref.optional(),
6942
+ toLayer: layer_ref.optional(),
6943
+ layers: z6.array(layer_ref).optional(),
6944
+ pcbTraceId: z6.string().optional(),
6945
+ netIsAssignable: z6.boolean().optional(),
6946
+ netAssigned: z6.boolean().optional(),
6947
+ isTented: z6.boolean().optional()
6948
+ });
6949
+ var PcbVia = class extends PrimitiveComponent2 {
6950
+ pcb_via_id = null;
6951
+ isPcbPrimitive = true;
6952
+ get config() {
6953
+ return {
6954
+ componentName: "PcbVia",
6955
+ zodProps: pcbViaProps
6956
+ };
6957
+ }
6958
+ _getLayers() {
6959
+ const { layers, fromLayer = "top", toLayer = "bottom" } = this._parsedProps;
6960
+ if (layers && layers.length > 0) return layers;
6961
+ if (fromLayer === toLayer) return [fromLayer];
6962
+ return [fromLayer, toLayer];
6963
+ }
6964
+ getAvailablePcbLayers() {
6965
+ return this._getLayers();
6966
+ }
6967
+ getPcbSize() {
6968
+ const outerDiameter = this._parsedProps.outerDiameter ?? 0.6;
6969
+ return { width: outerDiameter, height: outerDiameter };
6970
+ }
6971
+ _getPcbCircuitJsonBounds() {
6972
+ const { db } = this.root;
6973
+ const via = db.pcb_via.get(this.pcb_via_id);
6974
+ const size = this.getPcbSize();
6975
+ return {
6976
+ center: { x: via.x, y: via.y },
6977
+ bounds: {
6978
+ left: via.x - size.width / 2,
6979
+ top: via.y - size.height / 2,
6980
+ right: via.x + size.width / 2,
6981
+ bottom: via.y + size.height / 2
6982
+ },
6983
+ width: size.width,
6984
+ height: size.height
6985
+ };
6986
+ }
6987
+ _setPositionFromLayout(newCenter) {
6988
+ const { db } = this.root;
6989
+ db.pcb_via.update(this.pcb_via_id, {
6990
+ x: newCenter.x,
6991
+ y: newCenter.y
6992
+ });
6993
+ }
6994
+ doInitialPcbPrimitiveRender() {
6995
+ if (this.root?.pcbDisabled) return;
6996
+ const { db } = this.root;
6997
+ const {
6998
+ holeDiameter,
6999
+ outerDiameter,
7000
+ pcbTraceId,
7001
+ netIsAssignable,
7002
+ netAssigned,
7003
+ isTented
7004
+ } = this._parsedProps;
7005
+ const subcircuit = this.getSubcircuit();
7006
+ const position = this._getGlobalPcbPositionBeforeLayout();
7007
+ const { maybeFlipLayer } = this._getPcbPrimitiveFlippedHelpers();
7008
+ const layers = this._getLayers().map(
7009
+ (layer) => maybeFlipLayer(layer)
7010
+ );
7011
+ const fromLayer = this._parsedProps.fromLayer ? maybeFlipLayer(this._parsedProps.fromLayer) : layers[0];
7012
+ const toLayer = this._parsedProps.toLayer ? maybeFlipLayer(this._parsedProps.toLayer) : layers[layers.length - 1] ?? fromLayer;
7013
+ const pcbVia = db.pcb_via.insert({
7014
+ x: position.x,
7015
+ y: position.y,
7016
+ ...holeDiameter !== void 0 ? { hole_diameter: holeDiameter } : {},
7017
+ ...outerDiameter !== void 0 ? { outer_diameter: outerDiameter } : {},
7018
+ layers,
7019
+ from_layer: fromLayer,
7020
+ to_layer: toLayer,
7021
+ pcb_trace_id: pcbTraceId,
7022
+ subcircuit_id: subcircuit?.subcircuit_id ?? void 0,
7023
+ pcb_group_id: this.getGroup()?.pcb_group_id ?? void 0,
7024
+ net_is_assignable: netIsAssignable,
7025
+ net_assigned: netAssigned,
7026
+ is_tented: isTented
7027
+ });
7028
+ this.pcb_via_id = pcbVia.pcb_via_id;
7029
+ }
7030
+ };
7031
+
6901
7032
  // lib/components/primitive-components/PlatedHole.ts
6902
7033
  import { platedHoleProps } from "@tscircuit/props";
6903
7034
  import "circuit-json";
@@ -7788,7 +7919,7 @@ var SilkscreenText = class extends PrimitiveComponent2 {
7788
7919
  // lib/components/primitive-components/SmtPad.ts
7789
7920
  import { smtPadProps } from "@tscircuit/props";
7790
7921
  import {
7791
- distance as distance5
7922
+ distance as distance6
7792
7923
  } from "circuit-json";
7793
7924
  import { applyToPoint as applyToPoint15, decomposeTSR as decomposeTSR6 } from "transformation-matrix";
7794
7925
 
@@ -8034,8 +8165,8 @@ var SmtPad = class extends PrimitiveComponent2 {
8034
8165
  } else if (props.shape === "polygon") {
8035
8166
  const transformedPoints = props.points.map((point6) => {
8036
8167
  const transformed = applyToPoint15(globalTransform, {
8037
- x: distance5.parse(point6.x),
8038
- y: distance5.parse(point6.y)
8168
+ x: distance6.parse(point6.x),
8169
+ y: distance6.parse(point6.y)
8039
8170
  });
8040
8171
  return {
8041
8172
  x: transformed.x,
@@ -8566,6 +8697,23 @@ var createComponentsFromCircuitJson = ({
8566
8697
  route: elm.route
8567
8698
  })
8568
8699
  );
8700
+ } else if (elm.type === "pcb_via") {
8701
+ const layers = elm.layers ?? [];
8702
+ components.push(
8703
+ new PcbVia({
8704
+ pcbX: elm.x,
8705
+ pcbY: elm.y,
8706
+ holeDiameter: elm.hole_diameter,
8707
+ outerDiameter: elm.outer_diameter,
8708
+ fromLayer: elm.from_layer ?? layers[0],
8709
+ toLayer: elm.to_layer ?? layers[layers.length - 1],
8710
+ layers,
8711
+ pcbTraceId: elm.pcb_trace_id,
8712
+ netIsAssignable: elm.net_is_assignable,
8713
+ netAssigned: elm.net_assigned,
8714
+ isTented: elm.is_tented
8715
+ })
8716
+ );
8569
8717
  } else if (elm.type === "pcb_silkscreen_rect") {
8570
8718
  components.push(
8571
8719
  new SilkscreenRect({
@@ -9884,7 +10032,7 @@ var getAllDimensionsForSchematicBox = (params) => {
9884
10032
  };
9885
10033
 
9886
10034
  // lib/utils/schematic/getNumericSchPinStyle.ts
9887
- import { distance as distance6 } from "circuit-json";
10035
+ import { distance as distance7 } from "circuit-json";
9888
10036
  var getNumericSchPinStyle = (pinStyles, pinLabels) => {
9889
10037
  if (!pinStyles) return void 0;
9890
10038
  const numericPinStyles = {};
@@ -9897,13 +10045,13 @@ var getNumericSchPinStyle = (pinStyles, pinLabels) => {
9897
10045
  const existingStyle = numericPinStyles[`pin${pinNumber}`] ?? {};
9898
10046
  const nextStyle = { ...existingStyle };
9899
10047
  if (leftMargin !== void 0)
9900
- nextStyle.leftMargin = distance6.parse(leftMargin);
10048
+ nextStyle.leftMargin = distance7.parse(leftMargin);
9901
10049
  if (rightMargin !== void 0) {
9902
- nextStyle.rightMargin = distance6.parse(rightMargin);
10050
+ nextStyle.rightMargin = distance7.parse(rightMargin);
9903
10051
  }
9904
- if (topMargin !== void 0) nextStyle.topMargin = distance6.parse(topMargin);
10052
+ if (topMargin !== void 0) nextStyle.topMargin = distance7.parse(topMargin);
9905
10053
  if (bottomMargin !== void 0) {
9906
- nextStyle.bottomMargin = distance6.parse(bottomMargin);
10054
+ nextStyle.bottomMargin = distance7.parse(bottomMargin);
9907
10055
  }
9908
10056
  numericPinStyles[`pin${pinNumber}`] = nextStyle;
9909
10057
  }
@@ -9917,7 +10065,7 @@ import {
9917
10065
  } from "react";
9918
10066
  import { symbols as symbols2 } from "schematic-symbols";
9919
10067
  import { decomposeTSR as decomposeTSR8 } from "transformation-matrix";
9920
- import { z as z8 } from "zod";
10068
+ import { z as z9 } from "zod";
9921
10069
 
9922
10070
  // lib/components/primitive-components/CadAssembly.ts
9923
10071
  import { cadassemblyProps } from "@tscircuit/props";
@@ -9933,8 +10081,8 @@ var CadAssembly = class extends PrimitiveComponent2 {
9933
10081
 
9934
10082
  // lib/components/primitive-components/CadModel.ts
9935
10083
  import { cadmodelProps, point3 } from "@tscircuit/props";
9936
- import { z as z7 } from "zod";
9937
- import { distance as distance7 } from "circuit-json";
10084
+ import { z as z8 } from "zod";
10085
+ import { distance as distance8 } from "circuit-json";
9938
10086
  import { decomposeTSR as decomposeTSR7 } from "transformation-matrix";
9939
10087
 
9940
10088
  // lib/components/base-components/NormalComponent/utils/getFileExtension.ts
@@ -9975,8 +10123,8 @@ var constructAssetUrl = (targetUrl, baseUrl) => {
9975
10123
  };
9976
10124
 
9977
10125
  // lib/components/primitive-components/CadModel.ts
9978
- var rotation = z7.union([z7.number(), z7.string()]);
9979
- var rotation3 = z7.object({ x: rotation, y: rotation, z: rotation });
10126
+ var rotation = z8.union([z8.number(), z8.string()]);
10127
+ var rotation3 = z8.object({ x: rotation, y: rotation, z: rotation });
9980
10128
  var CadModel = class extends PrimitiveComponent2 {
9981
10129
  get config() {
9982
10130
  return {
@@ -10015,7 +10163,7 @@ var CadModel = class extends PrimitiveComponent2 {
10015
10163
  z: props.pcbZ ?? 0,
10016
10164
  ...typeof props.positionOffset === "object" ? props.positionOffset : {}
10017
10165
  });
10018
- const zOffsetFromSurface = props.zOffsetFromSurface !== void 0 ? distance7.parse(props.zOffsetFromSurface) : 0;
10166
+ const zOffsetFromSurface = props.zOffsetFromSurface !== void 0 ? distance8.parse(props.zOffsetFromSurface) : 0;
10019
10167
  const layer = parent.props.layer === "bottom" ? "bottom" : "top";
10020
10168
  const ext = props.modelUrl ? getFileExtension(props.modelUrl) : void 0;
10021
10169
  const modelUrlWithoutExtFragment = props.modelUrl?.replace(/#ext=\w+$/, "");
@@ -11154,7 +11302,7 @@ function getPrimaryPortsFromPortHintGroups(portHintGroups, opts) {
11154
11302
 
11155
11303
  // lib/components/base-components/NormalComponent/NormalComponent.ts
11156
11304
  var debug3 = Debug5("tscircuit:core");
11157
- var rotation32 = z8.object({
11305
+ var rotation32 = z9.object({
11158
11306
  x: rotation2,
11159
11307
  y: rotation2,
11160
11308
  z: rotation2
@@ -12315,7 +12463,7 @@ var NormalComponent3 = class extends PrimitiveComponent2 {
12315
12463
  z: 0,
12316
12464
  ...typeof cadModel?.positionOffset === "object" ? cadModel.positionOffset : {}
12317
12465
  });
12318
- const zOffsetFromSurface = cadModel && typeof cadModel === "object" && "zOffsetFromSurface" in cadModel ? cadModel.zOffsetFromSurface !== void 0 ? distance8.parse(
12466
+ const zOffsetFromSurface = cadModel && typeof cadModel === "object" && "zOffsetFromSurface" in cadModel ? cadModel.zOffsetFromSurface !== void 0 ? distance9.parse(
12319
12467
  cadModel.zOffsetFromSurface
12320
12468
  ) : 0 : 0;
12321
12469
  const computedLayer = this.props.layer === "bottom" ? "bottom" : "top";
@@ -13285,7 +13433,7 @@ import {
13285
13433
  groupProps
13286
13434
  } from "@tscircuit/props";
13287
13435
  import {
13288
- distance as distance9
13436
+ distance as distance10
13289
13437
  } from "circuit-json";
13290
13438
  import Debug13 from "debug";
13291
13439
 
@@ -19130,8 +19278,8 @@ var Group6 = class extends NormalComponent3 {
19130
19278
  const groupProps2 = props;
19131
19279
  const hasOutline = groupProps2.outline && groupProps2.outline.length > 0;
19132
19280
  const numericOutline = hasOutline ? groupProps2.outline.map((point6) => ({
19133
- x: distance9.parse(point6.x),
19134
- y: distance9.parse(point6.y)
19281
+ x: distance10.parse(point6.x),
19282
+ y: distance10.parse(point6.y)
19135
19283
  })) : void 0;
19136
19284
  const ctx = this.props;
19137
19285
  const anchorPosition = this._getGlobalPcbPositionBeforeLayout();
@@ -19169,8 +19317,8 @@ var Group6 = class extends NormalComponent3 {
19169
19317
  const hasExplicitPositioning = this._parsedProps.pcbX !== void 0 || this._parsedProps.pcbY !== void 0;
19170
19318
  if (hasOutline) {
19171
19319
  const numericOutline = props.outline.map((point6) => ({
19172
- x: distance9.parse(point6.x),
19173
- y: distance9.parse(point6.y)
19320
+ x: distance10.parse(point6.x),
19321
+ y: distance10.parse(point6.y)
19174
19322
  }));
19175
19323
  const outlineBounds = getBoundsFromPoints4(numericOutline);
19176
19324
  if (!outlineBounds) return;
@@ -20591,6 +20739,7 @@ function inflateSourceTrace(sourceTrace, inflatorContext) {
20591
20739
  }
20592
20740
  const trace = new Trace3(traceProps2);
20593
20741
  trace._inflatedPcbTrace = pcbTrace ?? void 0;
20742
+ trace._inflatedPcbVias = pcbTrace ? injectionDb.pcb_via.list().filter((via) => via.pcb_trace_id === pcbTrace.pcb_trace_id) : void 0;
20594
20743
  subcircuit.add(trace);
20595
20744
  }
20596
20745
 
@@ -20696,12 +20845,22 @@ function inflateStandalonePcbPrimitives(inflatorContext) {
20696
20845
  "pcb_note_text",
20697
20846
  "pcb_note_rect",
20698
20847
  "pcb_note_path",
20699
- "pcb_note_line"
20848
+ "pcb_note_line",
20849
+ "pcb_via"
20700
20850
  ];
20701
- const standalonePrimitives = injectionDb.toArray().filter(
20702
- (elm) => standalonePrimitiveTypes.includes(elm.type) && // Check for null or undefined pcb_component_id
20703
- "pcb_component_id" in elm && (elm.pcb_component_id === null || elm.pcb_component_id === void 0)
20704
- );
20851
+ const standalonePrimitives = injectionDb.toArray().filter((elm) => {
20852
+ if (!standalonePrimitiveTypes.includes(elm.type)) return false;
20853
+ if (elm.type === "pcb_via") {
20854
+ if (!elm.pcb_trace_id) return true;
20855
+ const pcbTrace = injectionDb.pcb_trace.get(elm.pcb_trace_id);
20856
+ const sourceTraceId = pcbTrace?.source_trace_id;
20857
+ const isHandledByInflatedTrace = sourceTraceId && injectionDb.source_trace.get(sourceTraceId) && pcbTrace?.route.some(
20858
+ (point6) => point6.route_type === "via" && Math.abs(point6.x - elm.x) < 1e-4 && Math.abs(point6.y - elm.y) < 1e-4
20859
+ );
20860
+ return !isHandledByInflatedTrace;
20861
+ }
20862
+ return "pcb_component_id" in elm && (elm.pcb_component_id === null || elm.pcb_component_id === void 0);
20863
+ });
20705
20864
  if (standalonePrimitives.length === 0) return;
20706
20865
  const components = createComponentsFromCircuitJson(
20707
20866
  {
@@ -20801,7 +20960,7 @@ import { identity as identity5 } from "transformation-matrix";
20801
20960
  var package_default = {
20802
20961
  name: "@tscircuit/core",
20803
20962
  type: "module",
20804
- version: "0.0.1235",
20963
+ version: "0.0.1237",
20805
20964
  types: "dist/index.d.ts",
20806
20965
  main: "dist/index.js",
20807
20966
  module: "dist/index.js",
@@ -20875,7 +21034,7 @@ var package_default = {
20875
21034
  flatbush: "^4.5.0",
20876
21035
  "graphics-debug": "^0.0.89",
20877
21036
  howfat: "^0.3.8",
20878
- "kicad-to-circuit-json": "^0.0.58",
21037
+ "kicad-to-circuit-json": "^0.0.59",
20879
21038
  kicadts: "^0.0.35",
20880
21039
  "live-server": "^1.2.2",
20881
21040
  "looks-same": "^9.0.1",
@@ -21967,11 +22126,11 @@ var MountedBoard = class extends Subcircuit {
21967
22126
 
21968
22127
  // lib/components/normal-components/Panel.ts
21969
22128
  import { panelProps } from "@tscircuit/props";
21970
- import { distance as distance13 } from "circuit-json";
22129
+ import { distance as distance14 } from "circuit-json";
21971
22130
 
21972
22131
  // lib/components/normal-components/Subpanel.ts
21973
22132
  import { subpanelProps } from "@tscircuit/props";
21974
- import { distance as distance12 } from "circuit-json";
22133
+ import { distance as distance13 } from "circuit-json";
21975
22134
  import { compose as compose8, identity as identity6, translate as translate8 } from "transformation-matrix";
21976
22135
 
21977
22136
  // lib/utils/panels/generate-panel-tabs-and-mouse-bites.ts
@@ -22184,15 +22343,15 @@ function generatePanelTabsAndMouseBites(boards, options) {
22184
22343
  }
22185
22344
 
22186
22345
  // lib/utils/panels/pack-into-grid.ts
22187
- import { distance as distance11 } from "circuit-json";
22346
+ import { distance as distance12 } from "circuit-json";
22188
22347
 
22189
22348
  // lib/utils/panels/get-board-dimensions-from-props.ts
22190
22349
  import { getBoundsFromPoints as getBoundsFromPoints6 } from "@tscircuit/math-utils";
22191
- import { distance as distance10 } from "circuit-json";
22350
+ import { distance as distance11 } from "circuit-json";
22192
22351
  var getBoardDimensionsFromProps = (board) => {
22193
22352
  const props = board._parsedProps;
22194
- let width = props.width != null ? distance10.parse(props.width) : void 0;
22195
- let height = props.height != null ? distance10.parse(props.height) : void 0;
22353
+ let width = props.width != null ? distance11.parse(props.width) : void 0;
22354
+ let height = props.height != null ? distance11.parse(props.height) : void 0;
22196
22355
  if ((width === void 0 || height === void 0) && props.outline?.length) {
22197
22356
  const outlineBounds = getBoundsFromPoints6(props.outline);
22198
22357
  if (outlineBounds) {
@@ -22236,8 +22395,8 @@ function packIntoGrid({
22236
22395
  }
22237
22396
  let cols;
22238
22397
  let rows;
22239
- const minCellWidth = cellWidth ? distance11.parse(cellWidth) : 0;
22240
- const minCellHeight = cellHeight ? distance11.parse(cellHeight) : 0;
22398
+ const minCellWidth = cellWidth ? distance12.parse(cellWidth) : 0;
22399
+ const minCellHeight = cellHeight ? distance12.parse(cellHeight) : 0;
22241
22400
  if (col !== void 0) {
22242
22401
  cols = col;
22243
22402
  rows = row ?? Math.ceil(itemsWithDims.length / cols);
@@ -22336,8 +22495,8 @@ function getItemDimensions(item, db) {
22336
22495
  const props = subpanel._parsedProps;
22337
22496
  if (props.width !== void 0 && props.height !== void 0) {
22338
22497
  return {
22339
- width: distance11.parse(props.width),
22340
- height: distance11.parse(props.height)
22498
+ width: distance12.parse(props.width),
22499
+ height: distance12.parse(props.height)
22341
22500
  };
22342
22501
  }
22343
22502
  const directBoards = subpanel._getDirectBoardChildren();
@@ -22364,7 +22523,7 @@ function getItemDimensions(item, db) {
22364
22523
  return getBoardDimensionsFromProps(directBoards[0]);
22365
22524
  }
22366
22525
  if (subpanel._cachedGridWidth > 0 && subpanel._cachedGridHeight > 0) {
22367
- const edgePadding = distance11.parse(props.edgePadding ?? 5);
22526
+ const edgePadding = distance12.parse(props.edgePadding ?? 5);
22368
22527
  return {
22369
22528
  width: subpanel._cachedGridWidth + edgePadding * 2,
22370
22529
  height: subpanel._cachedGridHeight + edgePadding * 2
@@ -22522,17 +22681,17 @@ var Subpanel = class _Subpanel extends Group6 {
22522
22681
  edgePaddingTop: edgePaddingTopProp,
22523
22682
  edgePaddingBottom: edgePaddingBottomProp
22524
22683
  } = this._parsedProps;
22525
- const edgePadding = distance12.parse(edgePaddingProp ?? 5);
22526
- const edgePaddingLeft = distance12.parse(edgePaddingLeftProp ?? edgePadding);
22527
- const edgePaddingRight = distance12.parse(
22684
+ const edgePadding = distance13.parse(edgePaddingProp ?? 5);
22685
+ const edgePaddingLeft = distance13.parse(edgePaddingLeftProp ?? edgePadding);
22686
+ const edgePaddingRight = distance13.parse(
22528
22687
  edgePaddingRightProp ?? edgePadding
22529
22688
  );
22530
- const edgePaddingTop = distance12.parse(edgePaddingTopProp ?? edgePadding);
22531
- const edgePaddingBottom = distance12.parse(
22689
+ const edgePaddingTop = distance13.parse(edgePaddingTopProp ?? edgePadding);
22690
+ const edgePaddingBottom = distance13.parse(
22532
22691
  edgePaddingBottomProp ?? edgePadding
22533
22692
  );
22534
- const panelWidth = distance12.parse(this._parsedProps.width);
22535
- const panelHeight = distance12.parse(this._parsedProps.height);
22693
+ const panelWidth = distance13.parse(this._parsedProps.width);
22694
+ const panelHeight = distance13.parse(this._parsedProps.height);
22536
22695
  availablePanelWidth = panelWidth - edgePaddingLeft - edgePaddingRight;
22537
22696
  availablePanelHeight = panelHeight - edgePaddingTop - edgePaddingBottom;
22538
22697
  }
@@ -22607,8 +22766,8 @@ var Subpanel = class _Subpanel extends Group6 {
22607
22766
  if (!this.pcb_group_id) return;
22608
22767
  if (hasExplicitWidth && hasExplicitHeight) {
22609
22768
  db.pcb_group.update(this.pcb_group_id, {
22610
- width: distance12.parse(this._parsedProps.width),
22611
- height: distance12.parse(this._parsedProps.height)
22769
+ width: distance13.parse(this._parsedProps.width),
22770
+ height: distance13.parse(this._parsedProps.height)
22612
22771
  });
22613
22772
  } else if (gridWidth > 0 || gridHeight > 0) {
22614
22773
  const {
@@ -22618,18 +22777,18 @@ var Subpanel = class _Subpanel extends Group6 {
22618
22777
  edgePaddingTop: edgePaddingTopProp,
22619
22778
  edgePaddingBottom: edgePaddingBottomProp
22620
22779
  } = this._parsedProps;
22621
- const edgePadding = distance12.parse(edgePaddingProp ?? 5);
22622
- const edgePaddingLeft = distance12.parse(edgePaddingLeftProp ?? edgePadding);
22623
- const edgePaddingRight = distance12.parse(
22780
+ const edgePadding = distance13.parse(edgePaddingProp ?? 5);
22781
+ const edgePaddingLeft = distance13.parse(edgePaddingLeftProp ?? edgePadding);
22782
+ const edgePaddingRight = distance13.parse(
22624
22783
  edgePaddingRightProp ?? edgePadding
22625
22784
  );
22626
- const edgePaddingTop = distance12.parse(edgePaddingTopProp ?? edgePadding);
22627
- const edgePaddingBottom = distance12.parse(
22785
+ const edgePaddingTop = distance13.parse(edgePaddingTopProp ?? edgePadding);
22786
+ const edgePaddingBottom = distance13.parse(
22628
22787
  edgePaddingBottomProp ?? edgePadding
22629
22788
  );
22630
22789
  db.pcb_group.update(this.pcb_group_id, {
22631
- width: hasExplicitWidth ? distance12.parse(this._parsedProps.width) : gridWidth + edgePaddingLeft + edgePaddingRight,
22632
- height: hasExplicitHeight ? distance12.parse(this._parsedProps.height) : gridHeight + edgePaddingTop + edgePaddingBottom
22790
+ width: hasExplicitWidth ? distance13.parse(this._parsedProps.width) : gridWidth + edgePaddingLeft + edgePaddingRight,
22791
+ height: hasExplicitHeight ? distance13.parse(this._parsedProps.height) : gridHeight + edgePaddingTop + edgePaddingBottom
22633
22792
  });
22634
22793
  }
22635
22794
  }
@@ -22703,8 +22862,8 @@ var Panel = class extends Subpanel {
22703
22862
  const { db } = this.root;
22704
22863
  const props = this._parsedProps;
22705
22864
  const inserted = db.pcb_panel.insert({
22706
- width: props.width !== void 0 ? distance13.parse(props.width) : 0,
22707
- height: props.height !== void 0 ? distance13.parse(props.height) : 0,
22865
+ width: props.width !== void 0 ? distance14.parse(props.width) : 0,
22866
+ height: props.height !== void 0 ? distance14.parse(props.height) : 0,
22708
22867
  thickness: 1.6,
22709
22868
  center: this._getGlobalPcbPositionBeforeLayout(),
22710
22869
  covered_with_solder_mask: !(props.noSolderMask ?? false)
@@ -22723,8 +22882,8 @@ var Panel = class extends Subpanel {
22723
22882
  if (!this.pcb_panel_id) return;
22724
22883
  if (hasExplicitWidth && hasExplicitHeight) {
22725
22884
  db.pcb_panel.update(this.pcb_panel_id, {
22726
- width: distance13.parse(this._parsedProps.width),
22727
- height: distance13.parse(this._parsedProps.height)
22885
+ width: distance14.parse(this._parsedProps.width),
22886
+ height: distance14.parse(this._parsedProps.height)
22728
22887
  });
22729
22888
  } else if (gridWidth > 0 || gridHeight > 0) {
22730
22889
  const {
@@ -22734,18 +22893,18 @@ var Panel = class extends Subpanel {
22734
22893
  edgePaddingTop: edgePaddingTopProp,
22735
22894
  edgePaddingBottom: edgePaddingBottomProp
22736
22895
  } = this._parsedProps;
22737
- const edgePadding = distance13.parse(edgePaddingProp ?? 5);
22738
- const edgePaddingLeft = distance13.parse(edgePaddingLeftProp ?? edgePadding);
22739
- const edgePaddingRight = distance13.parse(
22896
+ const edgePadding = distance14.parse(edgePaddingProp ?? 5);
22897
+ const edgePaddingLeft = distance14.parse(edgePaddingLeftProp ?? edgePadding);
22898
+ const edgePaddingRight = distance14.parse(
22740
22899
  edgePaddingRightProp ?? edgePadding
22741
22900
  );
22742
- const edgePaddingTop = distance13.parse(edgePaddingTopProp ?? edgePadding);
22743
- const edgePaddingBottom = distance13.parse(
22901
+ const edgePaddingTop = distance14.parse(edgePaddingTopProp ?? edgePadding);
22902
+ const edgePaddingBottom = distance14.parse(
22744
22903
  edgePaddingBottomProp ?? edgePadding
22745
22904
  );
22746
22905
  db.pcb_panel.update(this.pcb_panel_id, {
22747
- width: hasExplicitWidth ? distance13.parse(this._parsedProps.width) : gridWidth + edgePaddingLeft + edgePaddingRight,
22748
- height: hasExplicitHeight ? distance13.parse(this._parsedProps.height) : gridHeight + edgePaddingTop + edgePaddingBottom
22906
+ width: hasExplicitWidth ? distance14.parse(this._parsedProps.width) : gridWidth + edgePaddingLeft + edgePaddingRight,
22907
+ height: hasExplicitHeight ? distance14.parse(this._parsedProps.height) : gridHeight + edgePaddingTop + edgePaddingBottom
22749
22908
  });
22750
22909
  }
22751
22910
  }
@@ -22756,8 +22915,8 @@ var Panel = class extends Subpanel {
22756
22915
  const props = this._parsedProps;
22757
22916
  const currentPanel = db.pcb_panel.get(this.pcb_panel_id);
22758
22917
  db.pcb_panel.update(this.pcb_panel_id, {
22759
- width: props.width !== void 0 ? distance13.parse(props.width) : currentPanel?.width,
22760
- height: props.height !== void 0 ? distance13.parse(props.height) : currentPanel?.height,
22918
+ width: props.width !== void 0 ? distance14.parse(props.width) : currentPanel?.width,
22919
+ height: props.height !== void 0 ? distance14.parse(props.height) : currentPanel?.height,
22761
22920
  center: this._getGlobalPcbPositionBeforeLayout(),
22762
22921
  covered_with_solder_mask: !(props.noSolderMask ?? false)
22763
22922
  });
@@ -24122,7 +24281,7 @@ var NetLabel = class extends PrimitiveComponent2 {
24122
24281
 
24123
24282
  // lib/components/primitive-components/Fiducial.ts
24124
24283
  import "zod";
24125
- import { distance as distance14 } from "circuit-json";
24284
+ import { distance as distance15 } from "circuit-json";
24126
24285
  import { fiducialProps } from "@tscircuit/props";
24127
24286
  var Fiducial = class extends PrimitiveComponent2 {
24128
24287
  pcb_smtpad_id = null;
@@ -24147,15 +24306,15 @@ var Fiducial = class extends PrimitiveComponent2 {
24147
24306
  shape: "circle",
24148
24307
  x: position.x,
24149
24308
  y: position.y,
24150
- radius: distance14.parse(props.padDiameter) / 2,
24151
- soldermask_margin: props.soldermaskPullback ? distance14.parse(props.soldermaskPullback) : distance14.parse(props.padDiameter) / 2,
24309
+ radius: distance15.parse(props.padDiameter) / 2,
24310
+ soldermask_margin: props.soldermaskPullback ? distance15.parse(props.soldermaskPullback) : distance15.parse(props.padDiameter) / 2,
24152
24311
  is_covered_with_solder_mask: true
24153
24312
  });
24154
24313
  this.pcb_smtpad_id = pcb_smtpad.pcb_smtpad_id;
24155
24314
  }
24156
24315
  getPcbSize() {
24157
24316
  const { _parsedProps: props } = this;
24158
- const d = distance14.parse(props.padDiameter);
24317
+ const d = distance15.parse(props.padDiameter);
24159
24318
  return { width: d, height: d };
24160
24319
  }
24161
24320
  _setPositionFromLayout(newCenter) {
@@ -24326,7 +24485,7 @@ var Via = class extends PrimitiveComponent2 {
24326
24485
  y: position.y,
24327
24486
  hole_diameter: holeDiameter,
24328
24487
  outer_diameter: padDiameter,
24329
- layers: ["bottom", "top"],
24488
+ layers: this._getLayers(),
24330
24489
  from_layer: this._parsedProps.fromLayer || "bottom",
24331
24490
  to_layer: this._parsedProps.toLayer || "top",
24332
24491
  subcircuit_id: subcircuit?.subcircuit_id ?? void 0,
@@ -27346,6 +27505,7 @@ export {
27346
27505
  PcbNoteRect,
27347
27506
  PcbNoteText,
27348
27507
  PcbTrace,
27508
+ PcbVia,
27349
27509
  PinHeader,
27350
27510
  Pinout,
27351
27511
  PlatedHole,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/core",
3
3
  "type": "module",
4
- "version": "0.0.1236",
4
+ "version": "0.0.1238",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -75,7 +75,7 @@
75
75
  "flatbush": "^4.5.0",
76
76
  "graphics-debug": "^0.0.89",
77
77
  "howfat": "^0.3.8",
78
- "kicad-to-circuit-json": "^0.0.58",
78
+ "kicad-to-circuit-json": "^0.0.59",
79
79
  "kicadts": "^0.0.35",
80
80
  "live-server": "^1.2.2",
81
81
  "looks-same": "^9.0.1",