@tscircuit/core 0.0.453 → 0.0.454

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.
Files changed (3) hide show
  1. package/dist/index.d.ts +196 -15
  2. package/dist/index.js +186 -13
  3. package/package.json +7 -7
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _tscircuit_props from '@tscircuit/props';
2
- import { PlatformConfig, subcircuitGroupProps, AutorouterConfig, traceProps, SupplierPartNumbers, SchematicPortArrangement, groupProps, boardProps, capacitorProps, chipProps, diodeProps, fuseProps, jumperProps, ledProps, powerSourceProps, resistorProps, constraintProps, fabricationNotePathProps, fabricationNoteTextProps, footprintProps, subcircuitProps, holeProps, pcbKeepoutProps, netAliasProps, platedHoleProps, silkscreenCircleProps, silkscreenPathProps, silkscreenRectProps, silkscreenTextProps, silkscreenLineProps, smtPadProps, traceHintProps, viaProps, cutoutProps, batteryProps, pinHeaderProps, resonatorProps, inductorProps, potentiometerProps, pushButtonProps, crystalProps, transistorProps, mosfetProps, switchProps, schematicTextProps, schematicBoxProps, CapacitorProps, ChipProps, DiodeProps, ResistorProps, ManualEditEvent, ManualEditsFile, ChipConnections, manual_edits_file } from '@tscircuit/props';
2
+ import { PlatformConfig, subcircuitGroupProps, AutorouterConfig, traceProps, SupplierPartNumbers, SchematicPortArrangement, groupProps, boardProps, capacitorProps, chipProps, diodeProps, fuseProps, jumperProps, ledProps, powerSourceProps, resistorProps, constraintProps, fabricationNotePathProps, fabricationNoteTextProps, footprintProps, subcircuitProps, breakoutProps, breakoutPointProps, holeProps, pcbKeepoutProps, netAliasProps, platedHoleProps, silkscreenCircleProps, silkscreenPathProps, silkscreenRectProps, silkscreenTextProps, silkscreenLineProps, smtPadProps, traceHintProps, viaProps, cutoutProps, batteryProps, pinHeaderProps, resonatorProps, inductorProps, potentiometerProps, pushButtonProps, crystalProps, transistorProps, mosfetProps, switchProps, schematicTextProps, schematicBoxProps, CapacitorProps, ChipProps, DiodeProps, ResistorProps, ManualEditEvent, ManualEditsFile, ChipConnections, manual_edits_file } from '@tscircuit/props';
3
3
  import React, { ReactElement, DetailedHTMLProps, SVGProps } from 'react';
4
4
  export { createElement } from 'react';
5
5
  import * as zod from 'zod';
@@ -140,6 +140,7 @@ type Obstacle = {
140
140
  };
141
141
  interface SimpleRouteConnection {
142
142
  name: string;
143
+ source_trace_id?: string;
143
144
  pointsToConnect: Array<{
144
145
  x: number;
145
146
  y: number;
@@ -1132,6 +1133,7 @@ declare class Board extends Group<typeof boardProps> {
1132
1133
  width: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1133
1134
  height: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1134
1135
  matchAdapt: zod.ZodOptional<zod.ZodBoolean>;
1136
+ matchAdaptTemplate: zod.ZodOptional<zod.ZodAny>;
1135
1137
  }, "strip", zod.ZodTypeAny, {
1136
1138
  grid?: boolean | undefined;
1137
1139
  flex?: string | boolean | undefined;
@@ -1152,6 +1154,7 @@ declare class Board extends Group<typeof boardProps> {
1152
1154
  width?: number | undefined;
1153
1155
  height?: number | undefined;
1154
1156
  matchAdapt?: boolean | undefined;
1157
+ matchAdaptTemplate?: any;
1155
1158
  }, {
1156
1159
  grid?: boolean | undefined;
1157
1160
  flex?: string | boolean | undefined;
@@ -1172,6 +1175,7 @@ declare class Board extends Group<typeof boardProps> {
1172
1175
  width?: string | number | undefined;
1173
1176
  height?: string | number | undefined;
1174
1177
  matchAdapt?: boolean | undefined;
1178
+ matchAdaptTemplate?: any;
1175
1179
  }>>;
1176
1180
  schLayout: zod.ZodOptional<zod.ZodObject<{
1177
1181
  layoutMode: zod.ZodOptional<zod.ZodEnum<["grid", "flex", "match-adapt", "none"]>>;
@@ -1193,6 +1197,7 @@ declare class Board extends Group<typeof boardProps> {
1193
1197
  width: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1194
1198
  height: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1195
1199
  matchAdapt: zod.ZodOptional<zod.ZodBoolean>;
1200
+ matchAdaptTemplate: zod.ZodOptional<zod.ZodAny>;
1196
1201
  }, "strip", zod.ZodTypeAny, {
1197
1202
  grid?: boolean | undefined;
1198
1203
  flex?: string | boolean | undefined;
@@ -1213,6 +1218,7 @@ declare class Board extends Group<typeof boardProps> {
1213
1218
  width?: number | undefined;
1214
1219
  height?: number | undefined;
1215
1220
  matchAdapt?: boolean | undefined;
1221
+ matchAdaptTemplate?: any;
1216
1222
  }, {
1217
1223
  grid?: boolean | undefined;
1218
1224
  flex?: string | boolean | undefined;
@@ -1233,6 +1239,7 @@ declare class Board extends Group<typeof boardProps> {
1233
1239
  width?: string | number | undefined;
1234
1240
  height?: string | number | undefined;
1235
1241
  matchAdapt?: boolean | undefined;
1242
+ matchAdaptTemplate?: any;
1236
1243
  }>>;
1237
1244
  layoutMode: zod.ZodOptional<zod.ZodEnum<["grid", "flex", "match-adapt", "none"]>>;
1238
1245
  position: zod.ZodOptional<zod.ZodEnum<["absolute", "relative"]>>;
@@ -1251,6 +1258,7 @@ declare class Board extends Group<typeof boardProps> {
1251
1258
  flexColumn: zod.ZodOptional<zod.ZodBoolean>;
1252
1259
  gap: zod.ZodOptional<zod.ZodUnion<[zod.ZodNumber, zod.ZodString]>>;
1253
1260
  matchAdapt: zod.ZodOptional<zod.ZodBoolean>;
1261
+ matchAdaptTemplate: zod.ZodOptional<zod.ZodAny>;
1254
1262
  name: zod.ZodOptional<zod.ZodString>;
1255
1263
  children: zod.ZodOptional<zod.ZodAny>;
1256
1264
  key: zod.ZodOptional<zod.ZodAny>;
@@ -1504,6 +1512,7 @@ declare class Board extends Group<typeof boardProps> {
1504
1512
  width?: number | undefined;
1505
1513
  height?: number | undefined;
1506
1514
  matchAdapt?: boolean | undefined;
1515
+ matchAdaptTemplate?: any;
1507
1516
  pcbWidth?: number | undefined;
1508
1517
  pcbHeight?: number | undefined;
1509
1518
  schWidth?: number | undefined;
@@ -1528,6 +1537,7 @@ declare class Board extends Group<typeof boardProps> {
1528
1537
  width?: number | undefined;
1529
1538
  height?: number | undefined;
1530
1539
  matchAdapt?: boolean | undefined;
1540
+ matchAdaptTemplate?: any;
1531
1541
  } | undefined;
1532
1542
  schLayout?: {
1533
1543
  grid?: boolean | undefined;
@@ -1549,6 +1559,7 @@ declare class Board extends Group<typeof boardProps> {
1549
1559
  width?: number | undefined;
1550
1560
  height?: number | undefined;
1551
1561
  matchAdapt?: boolean | undefined;
1562
+ matchAdaptTemplate?: any;
1552
1563
  } | undefined;
1553
1564
  layout?: _tscircuit_layout.LayoutBuilder | undefined;
1554
1565
  manualEdits?: {
@@ -1635,6 +1646,7 @@ declare class Board extends Group<typeof boardProps> {
1635
1646
  width?: string | number | undefined;
1636
1647
  height?: string | number | undefined;
1637
1648
  matchAdapt?: boolean | undefined;
1649
+ matchAdaptTemplate?: any;
1638
1650
  pcbWidth?: string | number | undefined;
1639
1651
  pcbHeight?: string | number | undefined;
1640
1652
  schWidth?: string | number | undefined;
@@ -1659,6 +1671,7 @@ declare class Board extends Group<typeof boardProps> {
1659
1671
  width?: string | number | undefined;
1660
1672
  height?: string | number | undefined;
1661
1673
  matchAdapt?: boolean | undefined;
1674
+ matchAdaptTemplate?: any;
1662
1675
  } | undefined;
1663
1676
  schLayout?: {
1664
1677
  grid?: boolean | undefined;
@@ -1680,6 +1693,7 @@ declare class Board extends Group<typeof boardProps> {
1680
1693
  width?: string | number | undefined;
1681
1694
  height?: string | number | undefined;
1682
1695
  matchAdapt?: boolean | undefined;
1696
+ matchAdaptTemplate?: any;
1683
1697
  } | undefined;
1684
1698
  layout?: _tscircuit_layout.LayoutBuilder | undefined;
1685
1699
  manualEdits?: {
@@ -6295,6 +6309,71 @@ declare class Subcircuit extends Group {
6295
6309
  constructor(props: z.input<typeof subcircuitProps>);
6296
6310
  }
6297
6311
 
6312
+ declare class Breakout extends Group<typeof breakoutProps> {
6313
+ constructor(props: z.input<typeof breakoutProps>);
6314
+ doInitialPcbPrimitiveRender(): void;
6315
+ }
6316
+
6317
+ declare class BreakoutPoint extends PrimitiveComponent<typeof breakoutPointProps> {
6318
+ pcb_breakout_point_id: string | null;
6319
+ matchedPort: Port | null;
6320
+ matchedNet: Net | null;
6321
+ isPcbPrimitive: boolean;
6322
+ get config(): {
6323
+ componentName: string;
6324
+ zodProps: zod.ZodObject<Omit<{
6325
+ pcbX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
6326
+ pcbY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
6327
+ pcbRotation: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
6328
+ layer: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, zod.ZodObject<{
6329
+ name: zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
6330
+ }, "strip", zod.ZodTypeAny, {
6331
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
6332
+ }, {
6333
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
6334
+ }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
6335
+ name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
6336
+ }>>;
6337
+ }, "pcbRotation" | "layer"> & {
6338
+ connection: zod.ZodString;
6339
+ }, "strip", zod.ZodTypeAny, {
6340
+ connection: string;
6341
+ pcbX?: number | undefined;
6342
+ pcbY?: number | undefined;
6343
+ }, {
6344
+ connection: string;
6345
+ pcbX?: string | number | undefined;
6346
+ pcbY?: string | number | undefined;
6347
+ }>;
6348
+ };
6349
+ _matchConnection(): void;
6350
+ _getSourceTraceIdForPort(port: Port): string | undefined;
6351
+ _getSourceNetIdForPort(port: Port): string | undefined;
6352
+ doInitialPcbPrimitiveRender(): void;
6353
+ _getPcbCircuitJsonBounds(): {
6354
+ center: {
6355
+ x: number;
6356
+ y: number;
6357
+ };
6358
+ bounds: {
6359
+ left: number;
6360
+ top: number;
6361
+ right: number;
6362
+ bottom: number;
6363
+ };
6364
+ width: number;
6365
+ height: number;
6366
+ };
6367
+ _setPositionFromLayout(newCenter: {
6368
+ x: number;
6369
+ y: number;
6370
+ }): void;
6371
+ getPcbSize(): {
6372
+ width: number;
6373
+ height: number;
6374
+ };
6375
+ }
6376
+
6298
6377
  declare class Hole extends PrimitiveComponent<typeof holeProps> {
6299
6378
  pcb_hole_id: string | null;
6300
6379
  isPcbPrimitive: boolean;
@@ -12863,7 +12942,47 @@ declare class SchematicBox extends PrimitiveComponent<typeof schematicBoxProps>
12863
12942
  paddingTop: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
12864
12943
  paddingBottom: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
12865
12944
  title: zod.ZodOptional<zod.ZodString>;
12866
- titlePosition: zod.ZodDefault<zod.ZodEnum<["top_left", "top_center", "top_right", "center_left", "center", "center_right", "bottom_left", "bottom_center", "bottom_right"]>>;
12945
+ titleAnchorPosition: zod.ZodOptional<zod.ZodObject<{
12946
+ x: zod.ZodOptional<zod.ZodObject<{
12947
+ x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
12948
+ y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
12949
+ }, "strip", zod.ZodTypeAny, {
12950
+ x: number;
12951
+ y: number;
12952
+ }, {
12953
+ x: string | number;
12954
+ y: string | number;
12955
+ }>>;
12956
+ y: zod.ZodOptional<zod.ZodObject<{
12957
+ x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
12958
+ y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
12959
+ }, "strip", zod.ZodTypeAny, {
12960
+ x: number;
12961
+ y: number;
12962
+ }, {
12963
+ x: string | number;
12964
+ y: string | number;
12965
+ }>>;
12966
+ }, "strip", zod.ZodTypeAny, {
12967
+ x?: {
12968
+ x: number;
12969
+ y: number;
12970
+ } | undefined;
12971
+ y?: {
12972
+ x: number;
12973
+ y: number;
12974
+ } | undefined;
12975
+ }, {
12976
+ x?: {
12977
+ x: string | number;
12978
+ y: string | number;
12979
+ } | undefined;
12980
+ y?: {
12981
+ x: string | number;
12982
+ y: string | number;
12983
+ } | undefined;
12984
+ }>>;
12985
+ titleAnchorAlignment: zod.ZodDefault<zod.ZodEnum<["top_left", "top_center", "top_right", "center_left", "center", "center_right", "bottom_left", "bottom_center", "bottom_right"]>>;
12867
12986
  titleColor: zod.ZodOptional<zod.ZodString>;
12868
12987
  titleFontSize: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
12869
12988
  titleInside: zod.ZodDefault<zod.ZodBoolean>;
@@ -12871,18 +12990,28 @@ declare class SchematicBox extends PrimitiveComponent<typeof schematicBoxProps>
12871
12990
  }, "strip", zod.ZodTypeAny, {
12872
12991
  schX: number;
12873
12992
  schY: number;
12874
- titlePosition: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | "top_center" | "center_left" | "center_right" | "bottom_center";
12993
+ titleAnchorAlignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | "top_center" | "center_left" | "center_right" | "bottom_center";
12875
12994
  titleInside: boolean;
12876
12995
  strokeStyle: "solid" | "dashed";
12877
12996
  width?: number | undefined;
12878
12997
  height?: number | undefined;
12879
- overlay?: string[] | undefined;
12880
12998
  padding?: number | undefined;
12881
12999
  paddingLeft?: number | undefined;
12882
13000
  paddingRight?: number | undefined;
12883
13001
  paddingTop?: number | undefined;
12884
13002
  paddingBottom?: number | undefined;
13003
+ overlay?: string[] | undefined;
12885
13004
  title?: string | undefined;
13005
+ titleAnchorPosition?: {
13006
+ x?: {
13007
+ x: number;
13008
+ y: number;
13009
+ } | undefined;
13010
+ y?: {
13011
+ x: number;
13012
+ y: number;
13013
+ } | undefined;
13014
+ } | undefined;
12886
13015
  titleColor?: string | undefined;
12887
13016
  titleFontSize?: number | undefined;
12888
13017
  }, {
@@ -12890,14 +13019,24 @@ declare class SchematicBox extends PrimitiveComponent<typeof schematicBoxProps>
12890
13019
  schY: string | number;
12891
13020
  width?: string | number | undefined;
12892
13021
  height?: string | number | undefined;
12893
- overlay?: string[] | undefined;
12894
13022
  padding?: string | number | undefined;
12895
13023
  paddingLeft?: string | number | undefined;
12896
13024
  paddingRight?: string | number | undefined;
12897
13025
  paddingTop?: string | number | undefined;
12898
13026
  paddingBottom?: string | number | undefined;
13027
+ overlay?: string[] | undefined;
12899
13028
  title?: string | undefined;
12900
- titlePosition?: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | "top_center" | "center_left" | "center_right" | "bottom_center" | undefined;
13029
+ titleAnchorPosition?: {
13030
+ x?: {
13031
+ x: string | number;
13032
+ y: string | number;
13033
+ } | undefined;
13034
+ y?: {
13035
+ x: string | number;
13036
+ y: string | number;
13037
+ } | undefined;
13038
+ } | undefined;
13039
+ titleAnchorAlignment?: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | "top_center" | "center_left" | "center_right" | "bottom_center" | undefined;
12901
13040
  titleColor?: string | undefined;
12902
13041
  titleFontSize?: string | number | undefined;
12903
13042
  titleInside?: boolean | undefined;
@@ -12905,18 +13044,28 @@ declare class SchematicBox extends PrimitiveComponent<typeof schematicBoxProps>
12905
13044
  }>, {
12906
13045
  schX: number;
12907
13046
  schY: number;
12908
- titlePosition: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | "top_center" | "center_left" | "center_right" | "bottom_center";
13047
+ titleAnchorAlignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | "top_center" | "center_left" | "center_right" | "bottom_center";
12909
13048
  titleInside: boolean;
12910
13049
  strokeStyle: "solid" | "dashed";
12911
13050
  width?: number | undefined;
12912
13051
  height?: number | undefined;
12913
- overlay?: string[] | undefined;
12914
13052
  padding?: number | undefined;
12915
13053
  paddingLeft?: number | undefined;
12916
13054
  paddingRight?: number | undefined;
12917
13055
  paddingTop?: number | undefined;
12918
13056
  paddingBottom?: number | undefined;
13057
+ overlay?: string[] | undefined;
12919
13058
  title?: string | undefined;
13059
+ titleAnchorPosition?: {
13060
+ x?: {
13061
+ x: number;
13062
+ y: number;
13063
+ } | undefined;
13064
+ y?: {
13065
+ x: number;
13066
+ y: number;
13067
+ } | undefined;
13068
+ } | undefined;
12920
13069
  titleColor?: string | undefined;
12921
13070
  titleFontSize?: number | undefined;
12922
13071
  }, {
@@ -12924,14 +13073,24 @@ declare class SchematicBox extends PrimitiveComponent<typeof schematicBoxProps>
12924
13073
  schY: string | number;
12925
13074
  width?: string | number | undefined;
12926
13075
  height?: string | number | undefined;
12927
- overlay?: string[] | undefined;
12928
13076
  padding?: string | number | undefined;
12929
13077
  paddingLeft?: string | number | undefined;
12930
13078
  paddingRight?: string | number | undefined;
12931
13079
  paddingTop?: string | number | undefined;
12932
13080
  paddingBottom?: string | number | undefined;
13081
+ overlay?: string[] | undefined;
12933
13082
  title?: string | undefined;
12934
- titlePosition?: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | "top_center" | "center_left" | "center_right" | "bottom_center" | undefined;
13083
+ titleAnchorPosition?: {
13084
+ x?: {
13085
+ x: string | number;
13086
+ y: string | number;
13087
+ } | undefined;
13088
+ y?: {
13089
+ x: string | number;
13090
+ y: string | number;
13091
+ } | undefined;
13092
+ } | undefined;
13093
+ titleAnchorAlignment?: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | "top_center" | "center_left" | "center_right" | "bottom_center" | undefined;
12935
13094
  titleColor?: string | undefined;
12936
13095
  titleFontSize?: string | number | undefined;
12937
13096
  titleInside?: boolean | undefined;
@@ -12939,18 +13098,28 @@ declare class SchematicBox extends PrimitiveComponent<typeof schematicBoxProps>
12939
13098
  }>, {
12940
13099
  schX: number;
12941
13100
  schY: number;
12942
- titlePosition: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | "top_center" | "center_left" | "center_right" | "bottom_center";
13101
+ titleAnchorAlignment: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | "top_center" | "center_left" | "center_right" | "bottom_center";
12943
13102
  titleInside: boolean;
12944
13103
  strokeStyle: "solid" | "dashed";
12945
13104
  width?: number | undefined;
12946
13105
  height?: number | undefined;
12947
- overlay?: string[] | undefined;
12948
13106
  padding?: number | undefined;
12949
13107
  paddingLeft?: number | undefined;
12950
13108
  paddingRight?: number | undefined;
12951
13109
  paddingTop?: number | undefined;
12952
13110
  paddingBottom?: number | undefined;
13111
+ overlay?: string[] | undefined;
12953
13112
  title?: string | undefined;
13113
+ titleAnchorPosition?: {
13114
+ x?: {
13115
+ x: number;
13116
+ y: number;
13117
+ } | undefined;
13118
+ y?: {
13119
+ x: number;
13120
+ y: number;
13121
+ } | undefined;
13122
+ } | undefined;
12954
13123
  titleColor?: string | undefined;
12955
13124
  titleFontSize?: number | undefined;
12956
13125
  }, {
@@ -12958,14 +13127,24 @@ declare class SchematicBox extends PrimitiveComponent<typeof schematicBoxProps>
12958
13127
  schY: string | number;
12959
13128
  width?: string | number | undefined;
12960
13129
  height?: string | number | undefined;
12961
- overlay?: string[] | undefined;
12962
13130
  padding?: string | number | undefined;
12963
13131
  paddingLeft?: string | number | undefined;
12964
13132
  paddingRight?: string | number | undefined;
12965
13133
  paddingTop?: string | number | undefined;
12966
13134
  paddingBottom?: string | number | undefined;
13135
+ overlay?: string[] | undefined;
12967
13136
  title?: string | undefined;
12968
- titlePosition?: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | "top_center" | "center_left" | "center_right" | "bottom_center" | undefined;
13137
+ titleAnchorPosition?: {
13138
+ x?: {
13139
+ x: string | number;
13140
+ y: string | number;
13141
+ } | undefined;
13142
+ y?: {
13143
+ x: string | number;
13144
+ y: string | number;
13145
+ } | undefined;
13146
+ } | undefined;
13147
+ titleAnchorAlignment?: "center" | "top_left" | "top_right" | "bottom_left" | "bottom_right" | "top_center" | "center_left" | "center_right" | "bottom_center" | undefined;
12969
13148
  titleColor?: string | undefined;
12970
13149
  titleFontSize?: string | number | undefined;
12971
13150
  titleInside?: boolean | undefined;
@@ -13338,6 +13517,8 @@ interface TscircuitElements {
13338
13517
  netalias: _tscircuit_props.NetAliasProps;
13339
13518
  net: _tscircuit_props.NetProps;
13340
13519
  trace: _tscircuit_props.TraceProps;
13520
+ breakout: _tscircuit_props.BreakoutProps;
13521
+ breakoutpoint: _tscircuit_props.BreakoutPointProps;
13341
13522
  custom: any;
13342
13523
  component: _tscircuit_props.ComponentProps;
13343
13524
  crystal: _tscircuit_props.CrystalProps;
@@ -13377,4 +13558,4 @@ declare module "react/jsx-runtime" {
13377
13558
  }
13378
13559
  }
13379
13560
 
13380
- 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, Cutout, Diode, FabricationNotePath, FabricationNoteText, Footprint, Fuse, type GenericConnectionsAndSelectorsSel, type GenericLocalAutorouter, Group, Hole, type IRenderable, Inductor, Jumper, Keepout, Led, type LocalCacheEngine, Mosfet, Net, NetAlias, NormalComponent, type Obstacle, PcbTrace, PinHeader, type PinLabelSpec, PlatedHole, Port, Potentiometer, PowerSource, PrimitiveComponent, Project, PushButton, type RenderPhase, type RenderPhaseFn, type RenderPhaseFunctions, type RenderPhaseStates, Renderable, Resistor, Resonator, RootCircuit, type RootCircuitEventName, SchematicBox, SchematicText, type Sel, SilkscreenCircle, SilkscreenLine, SilkscreenPath, SilkscreenRect, SilkscreenText, type SimpleRouteConnection, type SimpleRouteJson, type SimplifiedPcbTrace, SmtPad, Subcircuit, Switch, Trace, TraceHint, Transistor, Via, applyEditEvents, applyEditEventsToManualEditsFile, applyPcbEditEventsToManualEditsFile, applySchematicEditEventsToManualEditsFile, createUseComponent, getPhaseTimingsFromRenderEvents, getSimpleRouteJsonFromCircuitJson, normalizePinLabels, orderedRenderPhases, sel, useCapacitor, useChip, useDiode, useLed, useRenderedCircuit, useResistor };
13561
+ export { type AsyncEffect, type AutorouterCompleteEvent, type AutorouterErrorEvent, type AutorouterEvent, type AutorouterProgressEvent, type AutoroutingEndEvent, type AutoroutingErrorEvent, type AutoroutingProgressEvent, type AutoroutingStartEvent, Battery, Board, Breakout, BreakoutPoint, Capacitor, Chip, Circuit, type ComponentWithPins, Constraint, Crystal, Cutout, Diode, FabricationNotePath, FabricationNoteText, Footprint, Fuse, type GenericConnectionsAndSelectorsSel, type GenericLocalAutorouter, Group, Hole, type IRenderable, Inductor, Jumper, Keepout, Led, type LocalCacheEngine, Mosfet, Net, NetAlias, NormalComponent, type Obstacle, PcbTrace, PinHeader, type PinLabelSpec, PlatedHole, Port, Potentiometer, PowerSource, PrimitiveComponent, Project, PushButton, type RenderPhase, type RenderPhaseFn, type RenderPhaseFunctions, type RenderPhaseStates, Renderable, Resistor, Resonator, RootCircuit, type RootCircuitEventName, SchematicBox, SchematicText, type Sel, SilkscreenCircle, SilkscreenLine, SilkscreenPath, SilkscreenRect, SilkscreenText, type SimpleRouteConnection, type SimpleRouteJson, type SimplifiedPcbTrace, SmtPad, Subcircuit, Switch, Trace, TraceHint, Transistor, Via, applyEditEvents, applyEditEventsToManualEditsFile, applyPcbEditEventsToManualEditsFile, applySchematicEditEventsToManualEditsFile, createUseComponent, getPhaseTimingsFromRenderEvents, getSimpleRouteJsonFromCircuitJson, normalizePinLabels, orderedRenderPhases, sel, useCapacitor, useChip, useDiode, useLed, useRenderedCircuit, useResistor };
package/dist/index.js CHANGED
@@ -9,6 +9,8 @@ var components_exports = {};
9
9
  __export(components_exports, {
10
10
  Battery: () => Battery,
11
11
  Board: () => Board,
12
+ Breakout: () => Breakout,
13
+ BreakoutPoint: () => BreakoutPoint,
12
14
  Capacitor: () => Capacitor,
13
15
  Chip: () => Chip,
14
16
  Constraint: () => Constraint2,
@@ -1719,10 +1721,8 @@ var SmtPad = class extends PrimitiveComponent2 {
1719
1721
  // port likely isn't matched
1720
1722
  layer: maybeFlipLayer(props.layer ?? "top"),
1721
1723
  shape: "rect",
1722
- ...{
1723
- width: isRotated90 ? props.height : props.width,
1724
- height: isRotated90 ? props.width : props.height
1725
- },
1724
+ width: isRotated90 ? props.height : props.width,
1725
+ height: isRotated90 ? props.width : props.height,
1726
1726
  port_hints: props.portHints.map((ph) => ph.toString()),
1727
1727
  x: position.x,
1728
1728
  y: position.y,
@@ -1732,7 +1732,8 @@ var SmtPad = class extends PrimitiveComponent2 {
1732
1732
  pcb_component_id,
1733
1733
  layer: maybeFlipLayer(props.layer ?? "top"),
1734
1734
  shape: "rotated_rect",
1735
- ...{ width: props.width, height: props.height },
1735
+ width: props.width,
1736
+ height: props.height,
1736
1737
  x: position.x,
1737
1738
  y: position.y,
1738
1739
  ccw_rotation: parentRotation,
@@ -6373,6 +6374,9 @@ var getSimpleRouteJsonFromCircuitJson = ({
6373
6374
  ]
6374
6375
  };
6375
6376
  }).filter((c) => c !== null);
6377
+ const directTraceConnectionsById = new Map(
6378
+ directTraceConnections.map((c) => [c.source_trace_id, c])
6379
+ );
6376
6380
  const source_nets = db.source_net.list().filter(
6377
6381
  (e) => !subcircuit_id || relevantSubcircuitIds?.has(e.subcircuit_id)
6378
6382
  );
@@ -6394,11 +6398,68 @@ var getSimpleRouteJsonFromCircuitJson = ({
6394
6398
  })
6395
6399
  });
6396
6400
  }
6401
+ const breakoutPoints = db.pcb_breakout_point.list().filter(
6402
+ (bp) => !subcircuit_id || relevantSubcircuitIds?.has(bp.subcircuit_id)
6403
+ );
6404
+ const connectionsFromBreakoutPoints = [];
6405
+ const breakoutTraceConnectionsById = /* @__PURE__ */ new Map();
6406
+ for (const bp of breakoutPoints) {
6407
+ const pt = { x: bp.x, y: bp.y, layer: "top" };
6408
+ if (bp.source_trace_id) {
6409
+ const conn = directTraceConnectionsById.get(bp.source_trace_id) ?? breakoutTraceConnectionsById.get(bp.source_trace_id);
6410
+ if (conn) {
6411
+ conn.pointsToConnect.push(pt);
6412
+ } else {
6413
+ const newConn = {
6414
+ name: bp.source_trace_id,
6415
+ source_trace_id: bp.source_trace_id,
6416
+ pointsToConnect: [pt]
6417
+ };
6418
+ connectionsFromBreakoutPoints.push(newConn);
6419
+ breakoutTraceConnectionsById.set(bp.source_trace_id, newConn);
6420
+ }
6421
+ } else if (bp.source_net_id) {
6422
+ const conn = connectionsFromNets.find((c) => c.name === bp.source_net_id);
6423
+ if (conn) {
6424
+ conn.pointsToConnect.push(pt);
6425
+ } else {
6426
+ connectionsFromBreakoutPoints.push({
6427
+ name: bp.source_net_id,
6428
+ pointsToConnect: [pt]
6429
+ });
6430
+ }
6431
+ } else if (bp.source_port_id) {
6432
+ const pcb_port = db.pcb_port.getWhere({
6433
+ source_port_id: bp.source_port_id
6434
+ });
6435
+ if (pcb_port) {
6436
+ connectionsFromBreakoutPoints.push({
6437
+ name: bp.source_port_id,
6438
+ // direct connection from port to breakout point
6439
+ source_trace_id: void 0,
6440
+ pointsToConnect: [
6441
+ {
6442
+ x: pcb_port.x,
6443
+ y: pcb_port.y,
6444
+ layer: pcb_port.layers?.[0] ?? "top",
6445
+ // @ts-ignore
6446
+ pcb_port_id: pcb_port.pcb_port_id
6447
+ },
6448
+ pt
6449
+ ]
6450
+ });
6451
+ }
6452
+ }
6453
+ }
6397
6454
  return {
6398
6455
  simpleRouteJson: {
6399
6456
  bounds,
6400
6457
  obstacles,
6401
- connections: [...directTraceConnections, ...connectionsFromNets],
6458
+ connections: [
6459
+ ...directTraceConnections,
6460
+ ...connectionsFromNets,
6461
+ ...connectionsFromBreakoutPoints
6462
+ ],
6402
6463
  // TODO add traces so that we don't run into things routed by another
6403
6464
  // subcircuit
6404
6465
  layerCount: 2,
@@ -8414,6 +8475,116 @@ var Subcircuit = class extends Group {
8414
8475
  }
8415
8476
  };
8416
8477
 
8478
+ // lib/components/primitive-components/Breakout/Breakout.ts
8479
+ import "@tscircuit/props";
8480
+ var Breakout = class extends Group {
8481
+ constructor(props) {
8482
+ super({
8483
+ ...props,
8484
+ // @ts-ignore
8485
+ subcircuit: true
8486
+ });
8487
+ }
8488
+ doInitialPcbPrimitiveRender() {
8489
+ super.doInitialPcbPrimitiveRender();
8490
+ if (this.root?.pcbDisabled) return;
8491
+ const { db } = this.root;
8492
+ const props = this._parsedProps;
8493
+ if (!this.pcb_group_id) return;
8494
+ const pcb_group = db.pcb_group.get(this.pcb_group_id);
8495
+ const padLeft = props.paddingLeft ?? props.padding ?? 0;
8496
+ const padRight = props.paddingRight ?? props.padding ?? 0;
8497
+ const padTop = props.paddingTop ?? props.padding ?? 0;
8498
+ const padBottom = props.paddingBottom ?? props.padding ?? 0;
8499
+ db.pcb_group.update(this.pcb_group_id, {
8500
+ width: pcb_group.width + padLeft + padRight,
8501
+ height: pcb_group.height + padTop + padBottom,
8502
+ center: {
8503
+ x: pcb_group.center.x + (padRight - padLeft) / 2,
8504
+ y: pcb_group.center.y + (padTop - padBottom) / 2
8505
+ }
8506
+ });
8507
+ }
8508
+ };
8509
+
8510
+ // lib/components/primitive-components/BreakoutPoint.ts
8511
+ import { breakoutPointProps } from "@tscircuit/props";
8512
+ var BreakoutPoint = class extends PrimitiveComponent2 {
8513
+ pcb_breakout_point_id = null;
8514
+ matchedPort = null;
8515
+ matchedNet = null;
8516
+ isPcbPrimitive = true;
8517
+ get config() {
8518
+ return {
8519
+ componentName: "BreakoutPoint",
8520
+ zodProps: breakoutPointProps
8521
+ };
8522
+ }
8523
+ _matchConnection() {
8524
+ const { connection } = this._parsedProps;
8525
+ const subcircuit = this.getSubcircuit();
8526
+ if (!subcircuit) return;
8527
+ this.matchedPort = subcircuit.selectOne(connection, {
8528
+ type: "port"
8529
+ });
8530
+ if (!this.matchedPort) {
8531
+ this.matchedNet = subcircuit.selectOne(connection, { type: "net" });
8532
+ }
8533
+ if (!this.matchedPort && !this.matchedNet) {
8534
+ this.renderError(`Could not find connection target "${connection}"`);
8535
+ }
8536
+ }
8537
+ _getSourceTraceIdForPort(port) {
8538
+ const { db } = this.root;
8539
+ const trace = db.source_trace.list().find((st) => st.connected_source_port_ids.includes(port.source_port_id));
8540
+ return trace?.source_trace_id;
8541
+ }
8542
+ _getSourceNetIdForPort(port) {
8543
+ const { db } = this.root;
8544
+ const trace = db.source_trace.list().find((st) => st.connected_source_port_ids.includes(port.source_port_id));
8545
+ return trace?.connected_source_net_ids[0];
8546
+ }
8547
+ doInitialPcbPrimitiveRender() {
8548
+ if (this.root?.pcbDisabled) return;
8549
+ const { db } = this.root;
8550
+ this._matchConnection();
8551
+ const { pcbX = 0, pcbY = 0 } = this._parsedProps;
8552
+ const group = this.parent?.getGroup();
8553
+ const subcircuit = this.getSubcircuit();
8554
+ if (!group || !group.pcb_group_id) return;
8555
+ const pcb_breakout_point = db.pcb_breakout_point.insert({
8556
+ pcb_group_id: group.pcb_group_id,
8557
+ subcircuit_id: subcircuit?.subcircuit_id ?? void 0,
8558
+ source_port_id: this.matchedPort?.source_port_id ?? void 0,
8559
+ source_trace_id: this.matchedPort ? this._getSourceTraceIdForPort(this.matchedPort) : void 0,
8560
+ source_net_id: this.matchedNet ? this.matchedNet.source_net_id : this.matchedPort ? this._getSourceNetIdForPort(this.matchedPort) : void 0,
8561
+ x: pcbX,
8562
+ y: pcbY
8563
+ });
8564
+ this.pcb_breakout_point_id = pcb_breakout_point.pcb_breakout_point_id;
8565
+ }
8566
+ _getPcbCircuitJsonBounds() {
8567
+ const { pcbX = 0, pcbY = 0 } = this._parsedProps;
8568
+ return {
8569
+ center: { x: pcbX, y: pcbY },
8570
+ bounds: { left: pcbX, top: pcbY, right: pcbX, bottom: pcbY },
8571
+ width: 0,
8572
+ height: 0
8573
+ };
8574
+ }
8575
+ _setPositionFromLayout(newCenter) {
8576
+ const { db } = this.root;
8577
+ if (!this.pcb_breakout_point_id) return;
8578
+ db.pcb_breakout_point.update(this.pcb_breakout_point_id, {
8579
+ x: newCenter.x,
8580
+ y: newCenter.y
8581
+ });
8582
+ }
8583
+ getPcbSize() {
8584
+ return { width: 0, height: 0 };
8585
+ }
8586
+ };
8587
+
8417
8588
  // lib/components/primitive-components/NetAlias.ts
8418
8589
  import { netAliasProps } from "@tscircuit/props";
8419
8590
  var NetAlias = class extends PrimitiveComponent2 {
@@ -9329,7 +9500,7 @@ import { identity as identity4 } from "transformation-matrix";
9329
9500
  var package_default = {
9330
9501
  name: "@tscircuit/core",
9331
9502
  type: "module",
9332
- version: "0.0.452",
9503
+ version: "0.0.453",
9333
9504
  types: "dist/index.d.ts",
9334
9505
  main: "dist/index.js",
9335
9506
  module: "dist/index.js",
@@ -9361,7 +9532,7 @@ var package_default = {
9361
9532
  "@tscircuit/layout": "^0.0.28",
9362
9533
  "@tscircuit/log-soup": "^1.0.2",
9363
9534
  "@tscircuit/math-utils": "^0.0.18",
9364
- "@tscircuit/props": "^0.0.207",
9535
+ "@tscircuit/props": "^0.0.211",
9365
9536
  "@tscircuit/schematic-autolayout": "^0.0.6",
9366
9537
  "@tscircuit/schematic-match-adapt": "^0.0.9",
9367
9538
  "@tscircuit/simple-3d-svg": "^0.0.6",
@@ -9372,7 +9543,7 @@ var package_default = {
9372
9543
  "@types/react-reconciler": "^0.28.9",
9373
9544
  "bun-match-svg": "0.0.8",
9374
9545
  "chokidar-cli": "^3.0.0",
9375
- "circuit-json": "^0.0.194",
9546
+ "circuit-json": "^0.0.199",
9376
9547
  "circuit-json-to-connectivity-map": "^0.0.22",
9377
9548
  "circuit-json-to-simple-3d": "^0.0.2",
9378
9549
  "circuit-to-svg": "^0.0.151",
@@ -9390,19 +9561,19 @@ var package_default = {
9390
9561
  tsup: "^8.2.4"
9391
9562
  },
9392
9563
  peerDependencies: {
9393
- typescript: "^5.0.0",
9394
- "@tscircuit/footprinter": "*",
9395
9564
  "@tscircuit/capacity-autorouter": "*",
9396
9565
  "@tscircuit/checks": "*",
9397
9566
  "@tscircuit/circuit-json-util": "*",
9567
+ "@tscircuit/footprinter": "*",
9398
9568
  "@tscircuit/infgrid-ijump-astar": "*",
9399
9569
  "@tscircuit/math-utils": "*",
9400
9570
  "@tscircuit/props": "*",
9401
9571
  "@tscircuit/schematic-autolayout": "*",
9402
9572
  "@tscircuit/schematic-match-adapt": "*",
9403
- "circuit-json-to-connectivity-map": "*",
9404
9573
  "circuit-json": "*",
9405
- "schematic-symbols": "*"
9574
+ "circuit-json-to-connectivity-map": "*",
9575
+ "schematic-symbols": "*",
9576
+ typescript: "^5.0.0"
9406
9577
  },
9407
9578
  dependencies: {
9408
9579
  "@lume/kiwi": "^0.4.3",
@@ -9785,6 +9956,8 @@ extendCatalogue({
9785
9956
  export {
9786
9957
  Battery,
9787
9958
  Board,
9959
+ Breakout,
9960
+ BreakoutPoint,
9788
9961
  Capacitor,
9789
9962
  Chip,
9790
9963
  Circuit,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/core",
3
3
  "type": "module",
4
- "version": "0.0.453",
4
+ "version": "0.0.454",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -33,7 +33,7 @@
33
33
  "@tscircuit/layout": "^0.0.28",
34
34
  "@tscircuit/log-soup": "^1.0.2",
35
35
  "@tscircuit/math-utils": "^0.0.18",
36
- "@tscircuit/props": "^0.0.207",
36
+ "@tscircuit/props": "^0.0.211",
37
37
  "@tscircuit/schematic-autolayout": "^0.0.6",
38
38
  "@tscircuit/schematic-match-adapt": "^0.0.9",
39
39
  "@tscircuit/simple-3d-svg": "^0.0.6",
@@ -44,7 +44,7 @@
44
44
  "@types/react-reconciler": "^0.28.9",
45
45
  "bun-match-svg": "0.0.8",
46
46
  "chokidar-cli": "^3.0.0",
47
- "circuit-json": "^0.0.194",
47
+ "circuit-json": "^0.0.199",
48
48
  "circuit-json-to-connectivity-map": "^0.0.22",
49
49
  "circuit-json-to-simple-3d": "^0.0.2",
50
50
  "circuit-to-svg": "^0.0.151",
@@ -62,19 +62,19 @@
62
62
  "tsup": "^8.2.4"
63
63
  },
64
64
  "peerDependencies": {
65
- "typescript": "^5.0.0",
66
- "@tscircuit/footprinter": "*",
67
65
  "@tscircuit/capacity-autorouter": "*",
68
66
  "@tscircuit/checks": "*",
69
67
  "@tscircuit/circuit-json-util": "*",
68
+ "@tscircuit/footprinter": "*",
70
69
  "@tscircuit/infgrid-ijump-astar": "*",
71
70
  "@tscircuit/math-utils": "*",
72
71
  "@tscircuit/props": "*",
73
72
  "@tscircuit/schematic-autolayout": "*",
74
73
  "@tscircuit/schematic-match-adapt": "*",
75
- "circuit-json-to-connectivity-map": "*",
76
74
  "circuit-json": "*",
77
- "schematic-symbols": "*"
75
+ "circuit-json-to-connectivity-map": "*",
76
+ "schematic-symbols": "*",
77
+ "typescript": "^5.0.0"
78
78
  },
79
79
  "dependencies": {
80
80
  "@lume/kiwi": "^0.4.3",