@tscircuit/core 0.0.1812 → 0.0.1814

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
@@ -15486,7 +15486,7 @@ declare class Capacitor extends NormalComponent<typeof capacitorProps, Polarized
15486
15486
  doInitialSourceRender(): void;
15487
15487
  }
15488
15488
 
15489
- declare class Antenna extends NormalComponent<typeof antennaProps, "pin1" | "feed" | "pin2" | "ground" | "gnd" | "feed2"> {
15489
+ declare class Antenna extends NormalComponent<typeof antennaProps, "pin1" | "feed" | "feed1" | "pin2" | "ground" | "gnd" | "feed2"> {
15490
15490
  get config(): {
15491
15491
  componentName: string;
15492
15492
  zodProps: zod.ZodObject<{
package/dist/index.js CHANGED
@@ -42293,7 +42293,7 @@ function Group_getRoutingPhasePlans(group) {
42293
42293
  var package_default = {
42294
42294
  name: "@tscircuit/core",
42295
42295
  type: "module",
42296
- version: "0.0.1811",
42296
+ version: "0.0.1813",
42297
42297
  types: "dist/index.d.ts",
42298
42298
  main: "dist/index.js",
42299
42299
  module: "dist/index.js",
@@ -49172,12 +49172,54 @@ var Panel = class extends Subpanel {
49172
49172
  import { antennaProps } from "@tscircuit/props";
49173
49173
 
49174
49174
  // lib/components/normal-components/get-generated-antenna-geometry.ts
49175
+ var GENERATED_ANTENNA_KEEPOUT_CLEARANCE_MM = 1;
49176
+ var GENERATED_ANTENNA_FEED_OPENING_CLEARANCE_MM = 1;
49177
+ var getGeneratedAntennaKeepouts = (geometry) => {
49178
+ const xCoordinates = geometry.route.map((point6) => point6.x);
49179
+ const yCoordinates = geometry.route.map((point6) => point6.y);
49180
+ const edgeClearance = geometry.traceWidth / 2 + GENERATED_ANTENNA_KEEPOUT_CLEARANCE_MM;
49181
+ const left = Math.min(...xCoordinates) - edgeClearance;
49182
+ const right = Math.max(...xCoordinates) + edgeClearance;
49183
+ const bottom = Math.min(...yCoordinates) - edgeClearance;
49184
+ const top = Math.max(...yCoordinates) + edgeClearance;
49185
+ const feedOpeningPoints = [
49186
+ geometry.feedPoint,
49187
+ ...geometry.secondaryPort ? [geometry.secondaryPort.point] : []
49188
+ ];
49189
+ const openingLeft = Math.min(...feedOpeningPoints.map((point6) => point6.x)) - GENERATED_ANTENNA_FEED_OPENING_CLEARANCE_MM;
49190
+ const openingRight = Math.max(...feedOpeningPoints.map((point6) => point6.x)) + GENERATED_ANTENNA_FEED_OPENING_CLEARANCE_MM;
49191
+ const openingBottom = Math.min(...feedOpeningPoints.map((point6) => point6.y)) - GENERATED_ANTENNA_FEED_OPENING_CLEARANCE_MM;
49192
+ const openingTop = Math.max(...feedOpeningPoints.map((point6) => point6.y)) + GENERATED_ANTENNA_FEED_OPENING_CLEARANCE_MM;
49193
+ const rects = [];
49194
+ const addRect = (rectLeft, rectRight, rectBottom, rectTop) => {
49195
+ if (rectRight <= rectLeft || rectTop <= rectBottom) return;
49196
+ rects.push({
49197
+ center: {
49198
+ x: (rectLeft + rectRight) / 2,
49199
+ y: (rectBottom + rectTop) / 2
49200
+ },
49201
+ width: rectRight - rectLeft,
49202
+ height: rectTop - rectBottom
49203
+ });
49204
+ };
49205
+ if (geometry.feedKeepoutOpeningDirection === "left") {
49206
+ addRect(left, right, openingTop, top);
49207
+ addRect(left, right, bottom, openingBottom);
49208
+ addRect(openingRight, right, openingBottom, openingTop);
49209
+ } else {
49210
+ addRect(left, openingLeft, bottom, openingTop);
49211
+ addRect(openingRight, right, bottom, openingTop);
49212
+ addRect(left, right, openingTop, top);
49213
+ }
49214
+ return rects;
49215
+ };
49175
49216
  var getGeneratedAntennaGeometry = (antennaShape) => {
49176
49217
  switch (antennaShape) {
49177
49218
  case "2.4ghz_quarter_wave_monopole":
49178
49219
  return {
49179
49220
  traceWidth: 0.6,
49180
49221
  feedPoint: { x: 0, y: 0 },
49222
+ feedKeepoutOpeningDirection: "left",
49181
49223
  route: [
49182
49224
  { x: 0, y: 0 },
49183
49225
  { x: 31, y: 0 }
@@ -49187,6 +49229,7 @@ var getGeneratedAntennaGeometry = (antennaShape) => {
49187
49229
  return {
49188
49230
  traceWidth: 0.5,
49189
49231
  feedPoint: { x: 0, y: 0 },
49232
+ feedKeepoutOpeningDirection: "bottom",
49190
49233
  route: [
49191
49234
  { x: 0, y: 0 },
49192
49235
  { x: 0, y: 6 },
@@ -49205,6 +49248,7 @@ var getGeneratedAntennaGeometry = (antennaShape) => {
49205
49248
  return {
49206
49249
  traceWidth: 0.8,
49207
49250
  feedPoint: { x: 0, y: 0 },
49251
+ feedKeepoutOpeningDirection: "bottom",
49208
49252
  secondaryPort: { point: { x: -4, y: 0 }, role: "ground" },
49209
49253
  groundViaPoint: { x: -4, y: 0 },
49210
49254
  route: [
@@ -49222,6 +49266,7 @@ var getGeneratedAntennaGeometry = (antennaShape) => {
49222
49266
  return {
49223
49267
  traceWidth: 0.5,
49224
49268
  feedPoint: { x: 0, y: 0 },
49269
+ feedKeepoutOpeningDirection: "bottom",
49225
49270
  secondaryPort: { point: { x: -1.7, y: 0 }, role: "ground" },
49226
49271
  groundViaPoint: { x: -1.7, y: 0 },
49227
49272
  route: [
@@ -49246,6 +49291,7 @@ var getGeneratedAntennaGeometry = (antennaShape) => {
49246
49291
  return {
49247
49292
  traceWidth: 0.9,
49248
49293
  feedPoint: { x: 0, y: 0 },
49294
+ feedKeepoutOpeningDirection: "bottom",
49249
49295
  secondaryPort: { point: { x: 1.2, y: 0 }, role: "feed2" },
49250
49296
  route: [
49251
49297
  { x: 0, y: 0 },
@@ -49278,7 +49324,7 @@ var Antenna = class extends NormalComponent3 {
49278
49324
  super.initPorts({
49279
49325
  pinCount: secondaryPortRole ? 2 : 1,
49280
49326
  additionalAliases: {
49281
- pin1: ["feed"],
49327
+ pin1: secondaryPortRole === "feed2" ? ["feed", "feed1"] : ["feed"],
49282
49328
  ...secondaryPortRole === "ground" ? { pin2: ["ground", "gnd"] } : secondaryPortRole === "feed2" ? { pin2: ["feed2"] } : {}
49283
49329
  }
49284
49330
  });
@@ -49310,6 +49356,22 @@ var Antenna = class extends NormalComponent3 {
49310
49356
  );
49311
49357
  }
49312
49358
  if (geometry) {
49359
+ const keepouts = getGeneratedAntennaKeepouts(geometry);
49360
+ for (const keepout of keepouts) {
49361
+ generatedFootprint.add(
49362
+ new Keepout({
49363
+ shape: "rect",
49364
+ pcbX: keepout.center.x,
49365
+ pcbY: keepout.center.y,
49366
+ width: keepout.width,
49367
+ height: keepout.height,
49368
+ layers: [
49369
+ ...this.root?._getBoard()?.allLayers ?? ["top", "bottom"]
49370
+ ],
49371
+ excludeRefs: [this.getSubcircuitSelector()]
49372
+ })
49373
+ );
49374
+ }
49313
49375
  generatedFootprint.add(
49314
49376
  new PcbTrace({
49315
49377
  route: geometry.route.map((point6) => ({
@@ -49320,7 +49382,7 @@ var Antenna = class extends NormalComponent3 {
49320
49382
  }))
49321
49383
  })
49322
49384
  );
49323
- if (geometry.secondaryPort && !hasFootprint) {
49385
+ if (geometry.secondaryPort && !geometry.groundViaPoint && !hasFootprint) {
49324
49386
  generatedFootprint.add(
49325
49387
  new SmtPad({
49326
49388
  shape: "rect",
@@ -49336,13 +49398,14 @@ var Antenna = class extends NormalComponent3 {
49336
49398
  }
49337
49399
  if (geometry.groundViaPoint) {
49338
49400
  generatedFootprint.add(
49339
- new PcbVia({
49401
+ new PlatedHole({
49402
+ shape: "circle",
49340
49403
  pcbX: geometry.groundViaPoint.x,
49341
49404
  pcbY: geometry.groundViaPoint.y,
49342
49405
  holeDiameter: 0.3,
49343
49406
  outerDiameter: 0.7,
49344
- isTented: true,
49345
- netIsAssignable: true
49407
+ portHints: ["pin2"],
49408
+ coveredWithSolderMask: true
49346
49409
  })
49347
49410
  );
49348
49411
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tscircuit/core",
3
3
  "type": "module",
4
- "version": "0.0.1812",
4
+ "version": "0.0.1814",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",