@tscircuit/core 0.0.318 → 0.0.320

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
@@ -10,7 +10,7 @@ import { Matrix } from 'transformation-matrix';
10
10
  import { SoupUtilObjects } from '@tscircuit/soup-util';
11
11
  import * as _tscircuit_layout from '@tscircuit/layout';
12
12
 
13
- declare const orderedRenderPhases: readonly ["ReactSubtreesRender", "InitializePortsFromChildren", "CreateNetsFromProps", "CreateTracesFromProps", "CreateTraceHintsFromProps", "SourceRender", "SourceParentAttachment", "PortMatching", "SourceTraceRender", "SourceAddConnectivityMapKey", "SchematicComponentRender", "SchematicPortRender", "SchematicLayout", "SchematicTraceRender", "PcbComponentRender", "PcbPrimitiveRender", "PcbFootprintLayout", "PcbPortRender", "PcbPortAttachment", "PcbLayout", "PcbComponentSizeCalculation", "PcbTraceRender", "PcbTraceHintRender", "PcbRouteNetIslands", "CadModelRender", "PartsEngineRender"];
13
+ declare const orderedRenderPhases: readonly ["ReactSubtreesRender", "InitializePortsFromChildren", "CreateNetsFromProps", "CreateTracesFromProps", "CreateTraceHintsFromProps", "SourceRender", "SourceParentAttachment", "PortMatching", "SourceTraceRender", "SourceAddConnectivityMapKey", "SchematicComponentRender", "SchematicPortRender", "SchematicLayout", "SchematicTraceRender", "PcbComponentRender", "PcbPrimitiveRender", "PcbFootprintLayout", "PcbPortRender", "PcbPortAttachment", "PcbLayout", "PcbComponentSizeCalculation", "PcbBoardAutoSize", "PcbTraceRender", "PcbTraceHintRender", "PcbRouteNetIslands", "CadModelRender", "PartsEngineRender"];
14
14
  type RenderPhase = (typeof orderedRenderPhases)[number];
15
15
  type RenderPhaseFn<K extends RenderPhase = RenderPhase> = `doInitial${K}` | `update${K}` | `remove${K}`;
16
16
  type RenderPhaseStates = Record<RenderPhase, {
@@ -990,44 +990,44 @@ declare class Board extends Group<typeof boardProps> {
990
990
  get isSubcircuit(): boolean;
991
991
  get config(): {
992
992
  componentName: string;
993
- zodProps: z.ZodObject<z.objectUtil.extendShape<z.objectUtil.extendShape<z.objectUtil.extendShape<{
994
- pcbX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
995
- pcbY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
996
- pcbRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
997
- schX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
998
- schY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
999
- schRotation: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
1000
- layer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
1001
- name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
1002
- }, "strip", z.ZodTypeAny, {
993
+ zodProps: zod.ZodObject<zod.objectUtil.extendShape<zod.objectUtil.extendShape<zod.objectUtil.extendShape<{
994
+ pcbX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
995
+ pcbY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
996
+ pcbRotation: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
997
+ schX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
998
+ schY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
999
+ schRotation: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1000
+ layer: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, zod.ZodObject<{
1001
+ name: zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
1002
+ }, "strip", zod.ZodTypeAny, {
1003
1003
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1004
1004
  }, {
1005
1005
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1006
1006
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
1007
1007
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1008
1008
  }>>;
1009
- footprint: z.ZodOptional<z.ZodType<_tscircuit_props.Footprint, z.ZodTypeDef, _tscircuit_props.Footprint>>;
1009
+ footprint: zod.ZodOptional<zod.ZodType<_tscircuit_props.Footprint, zod.ZodTypeDef, _tscircuit_props.Footprint>>;
1010
1010
  }, {
1011
- name: z.ZodOptional<z.ZodString>;
1012
- children: z.ZodOptional<z.ZodAny>;
1013
- key: z.ZodOptional<z.ZodAny>;
1011
+ name: zod.ZodOptional<zod.ZodString>;
1012
+ children: zod.ZodOptional<zod.ZodAny>;
1013
+ key: zod.ZodOptional<zod.ZodAny>;
1014
1014
  }>, {
1015
- layout: z.ZodOptional<z.ZodType<_tscircuit_layout.LayoutBuilder, z.ZodTypeDef, _tscircuit_layout.LayoutBuilder>>;
1016
- manualEdits: z.ZodOptional<z.ZodObject<{
1017
- pcb_placements: z.ZodOptional<z.ZodArray<z.ZodObject<{
1018
- selector: z.ZodString;
1019
- relative_to: z.ZodDefault<z.ZodOptional<z.ZodString>>;
1020
- center: z.ZodObject<{
1021
- x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
1022
- y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
1023
- }, "strip", z.ZodTypeAny, {
1015
+ layout: zod.ZodOptional<zod.ZodType<_tscircuit_layout.LayoutBuilder, zod.ZodTypeDef, _tscircuit_layout.LayoutBuilder>>;
1016
+ manualEdits: zod.ZodOptional<zod.ZodObject<{
1017
+ pcb_placements: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
1018
+ selector: zod.ZodString;
1019
+ relative_to: zod.ZodDefault<zod.ZodOptional<zod.ZodString>>;
1020
+ center: zod.ZodObject<{
1021
+ x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
1022
+ y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
1023
+ }, "strip", zod.ZodTypeAny, {
1024
1024
  x: number;
1025
1025
  y: number;
1026
1026
  }, {
1027
1027
  x: string | number;
1028
1028
  y: string | number;
1029
1029
  }>;
1030
- }, "strip", z.ZodTypeAny, {
1030
+ }, "strip", zod.ZodTypeAny, {
1031
1031
  selector: string;
1032
1032
  relative_to: string;
1033
1033
  center: {
@@ -1042,23 +1042,23 @@ declare class Board extends Group<typeof boardProps> {
1042
1042
  };
1043
1043
  relative_to?: string | undefined;
1044
1044
  }>, "many">>;
1045
- manual_trace_hints: z.ZodOptional<z.ZodArray<z.ZodObject<{
1046
- pcb_port_selector: z.ZodString;
1047
- offsets: z.ZodArray<z.ZodObject<{
1048
- x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
1049
- y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
1050
- via: z.ZodOptional<z.ZodBoolean>;
1051
- to_layer: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, z.ZodObject<{
1052
- name: z.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
1053
- }, "strip", z.ZodTypeAny, {
1045
+ manual_trace_hints: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
1046
+ pcb_port_selector: zod.ZodString;
1047
+ offsets: zod.ZodArray<zod.ZodObject<{
1048
+ x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
1049
+ y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
1050
+ via: zod.ZodOptional<zod.ZodBoolean>;
1051
+ to_layer: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>, zod.ZodObject<{
1052
+ name: zod.ZodEnum<["top", "bottom", "inner1", "inner2", "inner3", "inner4", "inner5", "inner6"]>;
1053
+ }, "strip", zod.ZodTypeAny, {
1054
1054
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1055
1055
  }, {
1056
1056
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1057
1057
  }>]>, "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6", "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6" | {
1058
1058
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1059
1059
  }>>;
1060
- trace_width: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
1061
- }, "strip", z.ZodTypeAny, {
1060
+ trace_width: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1061
+ }, "strip", zod.ZodTypeAny, {
1062
1062
  x: number;
1063
1063
  y: number;
1064
1064
  trace_width?: number | undefined;
@@ -1073,7 +1073,7 @@ declare class Board extends Group<typeof boardProps> {
1073
1073
  name: "top" | "bottom" | "inner1" | "inner2" | "inner3" | "inner4" | "inner5" | "inner6";
1074
1074
  } | undefined;
1075
1075
  }>, "many">;
1076
- }, "strip", z.ZodTypeAny, {
1076
+ }, "strip", zod.ZodTypeAny, {
1077
1077
  pcb_port_selector: string;
1078
1078
  offsets: {
1079
1079
  x: number;
@@ -1094,20 +1094,20 @@ declare class Board extends Group<typeof boardProps> {
1094
1094
  } | undefined;
1095
1095
  }[];
1096
1096
  }>, "many">>;
1097
- schematic_placements: z.ZodOptional<z.ZodArray<z.ZodObject<{
1098
- selector: z.ZodString;
1099
- relative_to: z.ZodDefault<z.ZodOptional<z.ZodString>>;
1100
- center: z.ZodObject<{
1101
- x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
1102
- y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
1103
- }, "strip", z.ZodTypeAny, {
1097
+ schematic_placements: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
1098
+ selector: zod.ZodString;
1099
+ relative_to: zod.ZodDefault<zod.ZodOptional<zod.ZodString>>;
1100
+ center: zod.ZodObject<{
1101
+ x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
1102
+ y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
1103
+ }, "strip", zod.ZodTypeAny, {
1104
1104
  x: number;
1105
1105
  y: number;
1106
1106
  }, {
1107
1107
  x: string | number;
1108
1108
  y: string | number;
1109
1109
  }>;
1110
- }, "strip", z.ZodTypeAny, {
1110
+ }, "strip", zod.ZodTypeAny, {
1111
1111
  selector: string;
1112
1112
  relative_to: string;
1113
1113
  center: {
@@ -1122,7 +1122,7 @@ declare class Board extends Group<typeof boardProps> {
1122
1122
  };
1123
1123
  relative_to?: string | undefined;
1124
1124
  }>, "many">>;
1125
- }, "strip", z.ZodTypeAny, {
1125
+ }, "strip", zod.ZodTypeAny, {
1126
1126
  pcb_placements?: {
1127
1127
  selector: string;
1128
1128
  relative_to: string;
@@ -1179,22 +1179,22 @@ declare class Board extends Group<typeof boardProps> {
1179
1179
  relative_to?: string | undefined;
1180
1180
  }[] | undefined;
1181
1181
  }>>;
1182
- schAutoLayoutEnabled: z.ZodOptional<z.ZodBoolean>;
1183
- schTraceAutoLabelEnabled: z.ZodOptional<z.ZodBoolean>;
1184
- routingDisabled: z.ZodOptional<z.ZodBoolean>;
1185
- defaultTraceWidth: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
1186
- minTraceWidth: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
1187
- partsEngine: z.ZodOptional<z.ZodType<_tscircuit_props.PartsEngine, z.ZodTypeDef, _tscircuit_props.PartsEngine>>;
1188
- pcbRouteCache: z.ZodOptional<z.ZodType<_tscircuit_props.PcbRouteCache, z.ZodTypeDef, _tscircuit_props.PcbRouteCache>>;
1189
- autorouter: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
1190
- serverUrl: z.ZodOptional<z.ZodString>;
1191
- inputFormat: z.ZodOptional<z.ZodEnum<["simplified", "circuit-json"]>>;
1192
- serverMode: z.ZodOptional<z.ZodEnum<["job", "solve-endpoint"]>>;
1193
- serverCacheEnabled: z.ZodOptional<z.ZodBoolean>;
1194
- cache: z.ZodOptional<z.ZodType<_tscircuit_props.PcbRouteCache, z.ZodTypeDef, _tscircuit_props.PcbRouteCache>>;
1195
- groupMode: z.ZodOptional<z.ZodEnum<["sequential-trace", "subcircuit"]>>;
1196
- local: z.ZodOptional<z.ZodBoolean>;
1197
- }, "strip", z.ZodTypeAny, {
1182
+ schAutoLayoutEnabled: zod.ZodOptional<zod.ZodBoolean>;
1183
+ schTraceAutoLabelEnabled: zod.ZodOptional<zod.ZodBoolean>;
1184
+ routingDisabled: zod.ZodOptional<zod.ZodBoolean>;
1185
+ defaultTraceWidth: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1186
+ minTraceWidth: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1187
+ partsEngine: zod.ZodOptional<zod.ZodType<_tscircuit_props.PartsEngine, zod.ZodTypeDef, _tscircuit_props.PartsEngine>>;
1188
+ pcbRouteCache: zod.ZodOptional<zod.ZodType<_tscircuit_props.PcbRouteCache, zod.ZodTypeDef, _tscircuit_props.PcbRouteCache>>;
1189
+ autorouter: zod.ZodOptional<zod.ZodUnion<[zod.ZodObject<{
1190
+ serverUrl: zod.ZodOptional<zod.ZodString>;
1191
+ inputFormat: zod.ZodOptional<zod.ZodEnum<["simplified", "circuit-json"]>>;
1192
+ serverMode: zod.ZodOptional<zod.ZodEnum<["job", "solve-endpoint"]>>;
1193
+ serverCacheEnabled: zod.ZodOptional<zod.ZodBoolean>;
1194
+ cache: zod.ZodOptional<zod.ZodType<_tscircuit_props.PcbRouteCache, zod.ZodTypeDef, _tscircuit_props.PcbRouteCache>>;
1195
+ groupMode: zod.ZodOptional<zod.ZodEnum<["sequential-trace", "subcircuit"]>>;
1196
+ local: zod.ZodOptional<zod.ZodBoolean>;
1197
+ }, "strip", zod.ZodTypeAny, {
1198
1198
  serverUrl?: string | undefined;
1199
1199
  inputFormat?: "simplified" | "circuit-json" | undefined;
1200
1200
  serverMode?: "job" | "solve-endpoint" | undefined;
@@ -1210,23 +1210,23 @@ declare class Board extends Group<typeof boardProps> {
1210
1210
  cache?: _tscircuit_props.PcbRouteCache | undefined;
1211
1211
  groupMode?: "sequential-trace" | "subcircuit" | undefined;
1212
1212
  local?: boolean | undefined;
1213
- }>, z.ZodLiteral<"sequential-trace">, z.ZodLiteral<"subcircuit">, z.ZodLiteral<"auto">, z.ZodLiteral<"auto-local">, z.ZodLiteral<"auto-cloud">]>>;
1213
+ }>, zod.ZodLiteral<"sequential-trace">, zod.ZodLiteral<"subcircuit">, zod.ZodLiteral<"auto">, zod.ZodLiteral<"auto-local">, zod.ZodLiteral<"auto-cloud">]>>;
1214
1214
  }>, {
1215
- width: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
1216
- height: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
1217
- outline: z.ZodOptional<z.ZodArray<z.ZodObject<{
1218
- x: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
1219
- y: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>;
1220
- }, "strip", z.ZodTypeAny, {
1215
+ width: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1216
+ height: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1217
+ outline: zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
1218
+ x: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
1219
+ y: zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>;
1220
+ }, "strip", zod.ZodTypeAny, {
1221
1221
  x: number;
1222
1222
  y: number;
1223
1223
  }, {
1224
1224
  x: string | number;
1225
1225
  y: string | number;
1226
1226
  }>, "many">>;
1227
- outlineOffsetX: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
1228
- outlineOffsetY: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodNumber]>, number, string | number>>;
1229
- }>, "strip", z.ZodTypeAny, {
1227
+ outlineOffsetX: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1228
+ outlineOffsetY: zod.ZodOptional<zod.ZodEffects<zod.ZodUnion<[zod.ZodString, zod.ZodNumber]>, number, string | number>>;
1229
+ }>, "strip", zod.ZodTypeAny, {
1230
1230
  pcbX?: number | undefined;
1231
1231
  pcbY?: number | undefined;
1232
1232
  pcbRotation?: number | undefined;
@@ -1367,6 +1367,7 @@ declare class Board extends Group<typeof boardProps> {
1367
1367
  * Get all available layers for the board
1368
1368
  */
1369
1369
  get allLayers(): string[];
1370
+ doInitialPcbBoardAutoSize(): void;
1370
1371
  doInitialPcbComponentRender(): void;
1371
1372
  removePcbComponentRender(): void;
1372
1373
  _computePcbGlobalTransformBeforeLayout(): Matrix;
@@ -10760,7 +10761,8 @@ type TransistorSel = Record<`Q${Nums40}`, Record<TransistorPinNames, string>>;
10760
10761
  type JumperSel = Record<`J${Nums40}`, Record<PinNumbers100, string>>;
10761
10762
  type ChipSel = Record<`U${Nums40}`, Record<CommonPinNames, string>>;
10762
10763
  type NetSel = Record<"net", Record<"VCC" | "GND" | "VDD", string>>;
10763
- type Sel = NonPolarizedSel & PolarizedSel & TransistorSel & JumperSel & ChipSel & SwSel & NetSel;
10764
+ type ConnectionSel = Record<`CN${Nums40}`, Record<CommonPinNames, string>>;
10765
+ type Sel = NonPolarizedSel & PolarizedSel & TransistorSel & JumperSel & ChipSel & SwSel & NetSel & ConnectionSel;
10764
10766
  declare const sel: Sel;
10765
10767
 
10766
10768
  interface TscircuitElements {
package/dist/index.js CHANGED
@@ -87,6 +87,7 @@ var orderedRenderPhases = [
87
87
  "PcbPortAttachment",
88
88
  "PcbLayout",
89
89
  "PcbComponentSizeCalculation",
90
+ "PcbBoardAutoSize",
90
91
  "PcbTraceRender",
91
92
  "PcbTraceHintRender",
92
93
  "PcbRouteNetIslands",
@@ -4077,15 +4078,46 @@ var Board = class extends Group {
4077
4078
  get allLayers() {
4078
4079
  return ["top", "bottom", "inner1", "inner2"];
4079
4080
  }
4081
+ doInitialPcbBoardAutoSize() {
4082
+ if (this.root?.pcbDisabled) return;
4083
+ if (!this.pcb_board_id) return;
4084
+ const { db } = this.root;
4085
+ const { _parsedProps: props } = this;
4086
+ if (props.width && props.height) return;
4087
+ let minX = Infinity;
4088
+ let minY = Infinity;
4089
+ let maxX = -Infinity;
4090
+ let maxY = -Infinity;
4091
+ for (const child of this.children) {
4092
+ if (!child.pcb_component_id) continue;
4093
+ const pcb_component = db.pcb_component.get(child.pcb_component_id);
4094
+ if (!pcb_component) continue;
4095
+ const { width, height, center: center2 } = pcb_component;
4096
+ if (width === 0 || height === 0) continue;
4097
+ minX = Math.min(minX, center2.x - width / 2);
4098
+ minY = Math.min(minY, center2.y - height / 2);
4099
+ maxX = Math.max(maxX, center2.x + width / 2);
4100
+ maxY = Math.max(maxY, center2.y + height / 2);
4101
+ }
4102
+ const padding = 2;
4103
+ const computedWidth = maxX - minX + padding * 2;
4104
+ const computedHeight = maxY - minY + padding * 2;
4105
+ const center = {
4106
+ x: (minX + maxX) / 2 + (props.outlineOffsetX ?? 0),
4107
+ y: (minY + maxY) / 2 + (props.outlineOffsetY ?? 0)
4108
+ };
4109
+ db.pcb_board.update(this.pcb_board_id, {
4110
+ width: computedWidth,
4111
+ height: computedHeight,
4112
+ center
4113
+ });
4114
+ }
4080
4115
  doInitialPcbComponentRender() {
4081
4116
  if (this.root?.pcbDisabled) return;
4082
4117
  const { db } = this.root;
4083
4118
  const { _parsedProps: props } = this;
4084
- if (!props.outline && (!props.width || !props.height)) {
4085
- throw new Error("Board width and height or an outline are required");
4086
- }
4087
- let computedWidth = props.width;
4088
- let computedHeight = props.height;
4119
+ let computedWidth = props.width ?? 0;
4120
+ let computedHeight = props.height ?? 0;
4089
4121
  if (props.outline) {
4090
4122
  const xValues = props.outline.map((point) => point.x);
4091
4123
  const yValues = props.outline.map((point) => point.y);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/core",
3
3
  "type": "module",
4
- "version": "0.0.318",
4
+ "version": "0.0.320",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",