@tscircuit/core 0.0.365 → 0.0.366

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
@@ -5596,7 +5596,7 @@ declare class PlatedHole extends PrimitiveComponent<typeof platedHoleProps> {
5596
5596
  isPcbPrimitive: boolean;
5597
5597
  get config(): {
5598
5598
  componentName: string;
5599
- zodProps: zod.ZodUnion<[zod.ZodObject<zod.objectUtil.extendShape<Omit<{
5599
+ zodProps: zod.ZodEffects<zod.ZodUnion<[zod.ZodObject<zod.objectUtil.extendShape<Omit<{
5600
5600
  pcbX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5601
5601
  pcbY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5602
5602
  pcbRotation: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
@@ -5649,19 +5649,23 @@ declare class PlatedHole extends PrimitiveComponent<typeof platedHoleProps> {
5649
5649
  shape: zod.ZodLiteral<"oval">;
5650
5650
  outerWidth: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5651
5651
  outerHeight: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5652
- holeWidth: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5653
- holeHeight: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5652
+ holeWidth: zod.ZodEffects<zod.ZodType<string | number, zod.ZodTypeDef, string | number>, number | undefined, string | number>;
5653
+ holeHeight: zod.ZodEffects<zod.ZodType<string | number, zod.ZodTypeDef, string | number>, number | undefined, string | number>;
5654
+ innerWidth: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5655
+ innerHeight: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5654
5656
  portHints: zod.ZodOptional<zod.ZodArray<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, "many">>;
5655
5657
  }>, "strip", zod.ZodTypeAny, {
5656
5658
  shape: "oval";
5657
5659
  outerWidth: number;
5658
5660
  outerHeight: number;
5659
- holeWidth: number;
5660
- holeHeight: number;
5661
5661
  pcbX?: number | undefined;
5662
5662
  pcbY?: number | undefined;
5663
5663
  name?: string | undefined;
5664
5664
  portHints?: (string | number)[] | undefined;
5665
+ holeWidth?: number | undefined;
5666
+ holeHeight?: number | undefined;
5667
+ innerWidth?: number | undefined;
5668
+ innerHeight?: number | undefined;
5665
5669
  }, {
5666
5670
  shape: "oval";
5667
5671
  outerWidth: string | number;
@@ -5672,6 +5676,8 @@ declare class PlatedHole extends PrimitiveComponent<typeof platedHoleProps> {
5672
5676
  pcbY?: string | number | undefined;
5673
5677
  name?: string | undefined;
5674
5678
  portHints?: (string | number)[] | undefined;
5679
+ innerWidth?: string | number | undefined;
5680
+ innerHeight?: string | number | undefined;
5675
5681
  }>, zod.ZodObject<zod.objectUtil.extendShape<Omit<{
5676
5682
  pcbX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5677
5683
  pcbY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
@@ -5690,19 +5696,23 @@ declare class PlatedHole extends PrimitiveComponent<typeof platedHoleProps> {
5690
5696
  shape: zod.ZodLiteral<"pill">;
5691
5697
  outerWidth: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5692
5698
  outerHeight: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5693
- holeWidth: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5694
- holeHeight: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
5699
+ holeWidth: zod.ZodEffects<zod.ZodType<string | number, zod.ZodTypeDef, string | number>, number | undefined, string | number>;
5700
+ holeHeight: zod.ZodEffects<zod.ZodType<string | number, zod.ZodTypeDef, string | number>, number | undefined, string | number>;
5701
+ innerWidth: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5702
+ innerHeight: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5695
5703
  portHints: zod.ZodOptional<zod.ZodArray<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, "many">>;
5696
5704
  }>, "strip", zod.ZodTypeAny, {
5697
5705
  shape: "pill";
5698
5706
  outerWidth: number;
5699
5707
  outerHeight: number;
5700
- holeWidth: number;
5701
- holeHeight: number;
5702
5708
  pcbX?: number | undefined;
5703
5709
  pcbY?: number | undefined;
5704
5710
  name?: string | undefined;
5705
5711
  portHints?: (string | number)[] | undefined;
5712
+ holeWidth?: number | undefined;
5713
+ holeHeight?: number | undefined;
5714
+ innerWidth?: number | undefined;
5715
+ innerHeight?: number | undefined;
5706
5716
  }, {
5707
5717
  shape: "pill";
5708
5718
  outerWidth: string | number;
@@ -5713,6 +5723,8 @@ declare class PlatedHole extends PrimitiveComponent<typeof platedHoleProps> {
5713
5723
  pcbY?: string | number | undefined;
5714
5724
  name?: string | undefined;
5715
5725
  portHints?: (string | number)[] | undefined;
5726
+ innerWidth?: string | number | undefined;
5727
+ innerHeight?: string | number | undefined;
5716
5728
  }>, zod.ZodEffects<zod.ZodObject<zod.objectUtil.extendShape<Omit<{
5717
5729
  pcbX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
5718
5730
  pcbY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
@@ -5779,7 +5791,93 @@ declare class PlatedHole extends PrimitiveComponent<typeof platedHoleProps> {
5779
5791
  portHints?: (string | number)[] | undefined;
5780
5792
  holeShape?: "circle" | undefined;
5781
5793
  padShape?: "rect" | undefined;
5782
- }>]>;
5794
+ }>]>, {
5795
+ shape: "circle";
5796
+ holeDiameter: number;
5797
+ outerDiameter: number;
5798
+ pcbX?: number | undefined;
5799
+ pcbY?: number | undefined;
5800
+ name?: string | undefined;
5801
+ portHints?: (string | number)[] | undefined;
5802
+ } | {
5803
+ shape: "oval";
5804
+ outerWidth: number;
5805
+ outerHeight: number;
5806
+ pcbX?: number | undefined;
5807
+ pcbY?: number | undefined;
5808
+ name?: string | undefined;
5809
+ portHints?: (string | number)[] | undefined;
5810
+ holeWidth?: number | undefined;
5811
+ holeHeight?: number | undefined;
5812
+ innerWidth?: number | undefined;
5813
+ innerHeight?: number | undefined;
5814
+ } | {
5815
+ shape: "pill";
5816
+ outerWidth: number;
5817
+ outerHeight: number;
5818
+ pcbX?: number | undefined;
5819
+ pcbY?: number | undefined;
5820
+ name?: string | undefined;
5821
+ portHints?: (string | number)[] | undefined;
5822
+ holeWidth?: number | undefined;
5823
+ holeHeight?: number | undefined;
5824
+ innerWidth?: number | undefined;
5825
+ innerHeight?: number | undefined;
5826
+ } | {
5827
+ holeDiameter: number;
5828
+ rectPadWidth: number;
5829
+ rectPadHeight: number;
5830
+ pcbX?: number | undefined;
5831
+ pcbY?: number | undefined;
5832
+ name?: string | undefined;
5833
+ shape?: "circularHoleWithRectPad" | undefined;
5834
+ portHints?: (string | number)[] | undefined;
5835
+ holeShape?: "circle" | undefined;
5836
+ padShape?: "rect" | undefined;
5837
+ }, {
5838
+ shape: "circle";
5839
+ holeDiameter: string | number;
5840
+ outerDiameter: string | number;
5841
+ pcbX?: string | number | undefined;
5842
+ pcbY?: string | number | undefined;
5843
+ name?: string | undefined;
5844
+ portHints?: (string | number)[] | undefined;
5845
+ } | {
5846
+ shape: "oval";
5847
+ outerWidth: string | number;
5848
+ outerHeight: string | number;
5849
+ holeWidth: string | number;
5850
+ holeHeight: string | number;
5851
+ pcbX?: string | number | undefined;
5852
+ pcbY?: string | number | undefined;
5853
+ name?: string | undefined;
5854
+ portHints?: (string | number)[] | undefined;
5855
+ innerWidth?: string | number | undefined;
5856
+ innerHeight?: string | number | undefined;
5857
+ } | {
5858
+ shape: "pill";
5859
+ outerWidth: string | number;
5860
+ outerHeight: string | number;
5861
+ holeWidth: string | number;
5862
+ holeHeight: string | number;
5863
+ pcbX?: string | number | undefined;
5864
+ pcbY?: string | number | undefined;
5865
+ name?: string | undefined;
5866
+ portHints?: (string | number)[] | undefined;
5867
+ innerWidth?: string | number | undefined;
5868
+ innerHeight?: string | number | undefined;
5869
+ } | {
5870
+ holeDiameter: string | number;
5871
+ rectPadWidth: string | number;
5872
+ rectPadHeight: string | number;
5873
+ pcbX?: string | number | undefined;
5874
+ pcbY?: string | number | undefined;
5875
+ name?: string | undefined;
5876
+ shape?: "circularHoleWithRectPad" | undefined;
5877
+ portHints?: (string | number)[] | undefined;
5878
+ holeShape?: "circle" | undefined;
5879
+ padShape?: "rect" | undefined;
5880
+ }>;
5783
5881
  };
5784
5882
  getAvailablePcbLayers(): string[];
5785
5883
  getPcbSize(): {
@@ -11382,18 +11480,24 @@ type PolarizedSel = Record<`C${Nums40}` | `L${Nums40}` | `LED${Nums40}` | `D${Nu
11382
11480
  }>;
11383
11481
  type CommonNetNames = "VCC" | "GND" | "VDD" | "PWR" | "V5" | "V3_3";
11384
11482
  type TransistorSel = Record<`Q${Nums40}`, Record<TransistorPinNames, string>>;
11385
- type JumperSel = Record<`J${Nums40}`, Record<PinNumbers100 | CommonPinNames, string>>;
11483
+ type JumperSel = Record<`J${Nums40}` | `CN${Nums40}`, Record<PinNumbers100 | CommonPinNames, string>>;
11386
11484
  type ChipSel = Record<`U${Nums40}`, Record<CommonPinNames, string> & ChipFnSel>;
11387
11485
  type NetSel = Record<"net", Record<CommonNetNames, string>>;
11388
- type ConnectionSel = Record<`CN${Nums40}`, Record<CommonPinNames, string>>;
11389
- type SubcircuitSel = Record<"subcircuit", Record<`S${Nums40}`, SelWithoutSubcircuit>>;
11390
- type SelWithoutSubcircuit = NonPolarizedSel & PolarizedSel & TransistorSel & JumperSel & ChipSel & SwSel & NetSel & ConnectionSel;
11486
+ type ExplicitModuleSel = Record<"subcircuit" | "module" | "group", Record<`S${Nums40}` | `M${Nums40}` | `G${Nums40}`, SelWithoutSubcircuit>>;
11487
+ type GenericConnectionsAndSelectorsSel = Record<string, <CMP_FN extends (props: any) => any>(component: CMP_FN) => CMP_FN extends (props: infer P) => any ? P extends {
11488
+ connections: infer CN;
11489
+ } ? CN : P extends {
11490
+ selectors: infer SEL;
11491
+ } ? SEL extends Record<string, Record<string, string>> ? {
11492
+ [K in keyof SEL]: SEL[K] extends Record<string, string> ? SEL[K] : never;
11493
+ } : never : never : never>;
11494
+ type SelWithoutSubcircuit = NonPolarizedSel & PolarizedSel & TransistorSel & JumperSel & ChipSel & SwSel & NetSel & GenericConnectionsAndSelectorsSel;
11391
11495
  type UnionToIntersection<U> = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never;
11392
11496
  type ChipFn<T extends ChipProps<any>> = (props: T) => any;
11393
11497
  type ChipFnSel = <T extends ChipFn<any> | string>(chipFn?: T) => UnionToIntersection<T extends ChipFn<any> ? ChipConnections<T> : T extends string ? {
11394
11498
  [K in T]: string;
11395
11499
  } : never>;
11396
- type Sel = SubcircuitSel & SelWithoutSubcircuit;
11500
+ type Sel = ExplicitModuleSel & SelWithoutSubcircuit;
11397
11501
  declare const sel: Sel;
11398
11502
 
11399
11503
  type AutorouterCompleteEvent = {
@@ -11501,4 +11605,4 @@ declare module "react/jsx-runtime" {
11501
11605
  }
11502
11606
  }
11503
11607
 
11504
- export { type AsyncEffect, type AutorouterCompleteEvent, type AutorouterErrorEvent, type AutorouterEvent, type AutorouterProgressEvent, type AutoroutingEndEvent, type AutoroutingErrorEvent, type AutoroutingProgressEvent, type AutoroutingStartEvent, Battery, Board, Capacitor, Chip, Circuit, type ComponentWithPins, Constraint, Crystal, Diode, FabricationNotePath, FabricationNoteText, Footprint, type GenericLocalAutorouter, Group, Hole, type IRenderable, Inductor, Jumper, Keepout, Led, Mosfet, Net, NetAlias, NormalComponent, type Obstacle, PinHeader, type PinLabelSpec, PlatedHole, Port, Potentiometer, PowerSource, PrimitiveComponent, Project, PushButton, type RenderPhase, type RenderPhaseFn, type RenderPhaseFunctions, type RenderPhaseStates, Renderable, Resistor, Resonator, RootCircuit, type RootCircuitEventName, type Sel, SilkscreenCircle, SilkscreenLine, SilkscreenPath, SilkscreenRect, SilkscreenText, type SimpleRouteConnection, type SimpleRouteJson, type SimplifiedPcbTrace, SmtPad, Subcircuit, Switch, Trace, TraceHint, Transistor, Via, applyEditEventsToManualEditsFile, applyPcbEditEventsToManualEditsFile, applySchematicEditEventsToManualEditsFile, createUseComponent, getPhaseTimingsFromRenderEvents, getSimpleRouteJsonFromCircuitJson, orderedRenderPhases, sel, useCapacitor, useChip, useDiode, useLed, useRenderedCircuit, useResistor };
11608
+ export { type AsyncEffect, type AutorouterCompleteEvent, type AutorouterErrorEvent, type AutorouterEvent, type AutorouterProgressEvent, type AutoroutingEndEvent, type AutoroutingErrorEvent, type AutoroutingProgressEvent, type AutoroutingStartEvent, Battery, Board, Capacitor, Chip, Circuit, type ComponentWithPins, Constraint, Crystal, Diode, FabricationNotePath, FabricationNoteText, Footprint, type GenericConnectionsAndSelectorsSel, type GenericLocalAutorouter, Group, Hole, type IRenderable, Inductor, Jumper, Keepout, Led, Mosfet, Net, NetAlias, NormalComponent, type Obstacle, PinHeader, type PinLabelSpec, PlatedHole, Port, Potentiometer, PowerSource, PrimitiveComponent, Project, PushButton, type RenderPhase, type RenderPhaseFn, type RenderPhaseFunctions, type RenderPhaseStates, Renderable, Resistor, Resonator, RootCircuit, type RootCircuitEventName, type Sel, SilkscreenCircle, SilkscreenLine, SilkscreenPath, SilkscreenRect, SilkscreenText, type SimpleRouteConnection, type SimpleRouteJson, type SimplifiedPcbTrace, SmtPad, Subcircuit, Switch, Trace, TraceHint, Transistor, Via, applyEditEventsToManualEditsFile, applyPcbEditEventsToManualEditsFile, applySchematicEditEventsToManualEditsFile, createUseComponent, getPhaseTimingsFromRenderEvents, getSimpleRouteJsonFromCircuitJson, orderedRenderPhases, sel, useCapacitor, useChip, useDiode, useLed, useRenderedCircuit, useResistor };
package/dist/index.js CHANGED
@@ -7431,7 +7431,7 @@ import { identity as identity4 } from "transformation-matrix";
7431
7431
  var package_default = {
7432
7432
  name: "@tscircuit/core",
7433
7433
  type: "module",
7434
- version: "0.0.364",
7434
+ version: "0.0.365",
7435
7435
  types: "dist/index.d.ts",
7436
7436
  main: "dist/index.js",
7437
7437
  module: "dist/index.js",
@@ -7488,7 +7488,7 @@ var package_default = {
7488
7488
  "@tscircuit/circuit-json-util": "^0.0.45",
7489
7489
  "@tscircuit/infgrid-ijump-astar": "^0.0.33",
7490
7490
  "@tscircuit/math-utils": "^0.0.12",
7491
- "@tscircuit/props": "^0.0.167",
7491
+ "@tscircuit/props": "^0.0.170",
7492
7492
  "@tscircuit/schematic-autolayout": "^0.0.6",
7493
7493
  "@tscircuit/soup-util": "^0.0.41",
7494
7494
  "circuit-json": "^0.0.153",
@@ -7821,13 +7821,27 @@ var sel = new Proxy(
7821
7821
  }
7822
7822
  return `.${prop1} > .${prop2}`;
7823
7823
  },
7824
- // This handles function calls like sel.U1(MyChip)
7824
+ // This handles function calls like...
7825
+ // - sel.U1(MyChip)
7826
+ // - sel.U1(({ selectors: { U1: { GND: "GND", VCC: "VCC" } } }) => ...)
7827
+ // - sel.U1(({ connections: { GND: "GND", VCC: "VCC" } }) => ...)
7825
7828
  apply: (target, _2, args) => {
7826
7829
  return new Proxy(
7827
7830
  {},
7828
7831
  {
7829
- get: (_3, pinName) => {
7830
- return `.${prop1} > .${pinName}`;
7832
+ get: (_3, pinOrSubComponentName) => {
7833
+ const pinResult = `.${prop1} > .${pinOrSubComponentName}`;
7834
+ if (prop1.startsWith("U")) {
7835
+ return pinResult;
7836
+ }
7837
+ return new Proxy(new String(pinResult), {
7838
+ get: (_4, nestedProp) => {
7839
+ if (typeof nestedProp === "symbol" || nestedProp === "toString") {
7840
+ return () => pinResult;
7841
+ }
7842
+ return `.${prop1} > .${pinOrSubComponentName} > .${nestedProp}`;
7843
+ }
7844
+ });
7831
7845
  }
7832
7846
  }
7833
7847
  );
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/core",
3
3
  "type": "module",
4
- "version": "0.0.365",
4
+ "version": "0.0.366",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -58,7 +58,7 @@
58
58
  "@tscircuit/circuit-json-util": "^0.0.45",
59
59
  "@tscircuit/infgrid-ijump-astar": "^0.0.33",
60
60
  "@tscircuit/math-utils": "^0.0.12",
61
- "@tscircuit/props": "^0.0.167",
61
+ "@tscircuit/props": "^0.0.170",
62
62
  "@tscircuit/schematic-autolayout": "^0.0.6",
63
63
  "@tscircuit/soup-util": "^0.0.41",
64
64
  "circuit-json": "^0.0.153",