jscad-electronics 0.0.112 → 0.0.114

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
@@ -101,6 +101,21 @@ declare const Footprinter3d: ({ footprint }: {
101
101
  footprint: string;
102
102
  }) => react_jsx_runtime.JSX.Element | null;
103
103
 
104
+ declare const StampBoard: ({ bodyWidth, boardThickness, leadWidth, leadLength, leadsPitch, leadsLeft, leadsRight, leadsTop, leadsBottom, innerHoles, innerHoleEdgeDistance, innerHoleDiameter, }: {
105
+ bodyWidth?: number;
106
+ boardThickness?: number;
107
+ leadWidth?: number;
108
+ leadLength?: number;
109
+ leadsPitch?: number;
110
+ leadsLeft?: number;
111
+ leadsRight?: number;
112
+ leadsTop?: number;
113
+ leadsBottom?: number;
114
+ innerHoles?: boolean;
115
+ innerHoleEdgeDistance?: number;
116
+ innerHoleDiameter?: number;
117
+ }) => react_jsx_runtime.JSX.Element;
118
+
104
119
  declare const SOT233P: ({ fullWidth, fullLength }: {
105
120
  fullWidth?: number | undefined;
106
121
  fullLength?: number | undefined;
@@ -337,4 +352,4 @@ declare const TO220: () => react_jsx_runtime.JSX.Element;
337
352
 
338
353
  declare const TO92: () => react_jsx_runtime.JSX.Element;
339
354
 
340
- export { A01005, A0201, A0402, A0603, A0805, A1206, A1210, A2010, A2512, AxialCapacitor, BGA, ChipBody, type ChipBodyProps, DFN, ExtrudedPads, FootprintPad, FootprintPlatedHole, Footprinter3d, HC49, type HC49Props, LQFP, MELF, type MELFProps, MINIMELF, type MINIMELFProps, MS012, MS013, MSOP, MicroMELF, type MicroMELFProps, PinRow, QFN, QFP, SMA, SMB, SMC, SMF, SOD123, SOD123F, SOD123FL, SOD123W, SOD128, SOD323, SOD323F, SOD323FL, SOD523, SOD882, SOD923, SOT223, SOT233P, SOT23W, SOT323, SOT363, SOT457, SOT563, SOT723, SOT886, SOT963, SmdChipLead, type SmdChipLeadProps, TO220, TO92, TQFP, Tssop, VSSOP };
355
+ export { A01005, A0201, A0402, A0603, A0805, A1206, A1210, A2010, A2512, AxialCapacitor, BGA, ChipBody, type ChipBodyProps, DFN, ExtrudedPads, FootprintPad, FootprintPlatedHole, Footprinter3d, HC49, type HC49Props, LQFP, MELF, type MELFProps, MINIMELF, type MINIMELFProps, MS012, MS013, MSOP, MicroMELF, type MicroMELFProps, PinRow, QFN, QFP, SMA, SMB, SMC, SMF, SOD123, SOD123F, SOD123FL, SOD123W, SOD128, SOD323, SOD323F, SOD323FL, SOD523, SOD882, SOD923, SOT223, SOT233P, SOT23W, SOT323, SOT363, SOT457, SOT563, SOT723, SOT886, SOT963, SmdChipLead, type SmdChipLeadProps, StampBoard, TO220, TO92, TQFP, Tssop, VSSOP };
package/dist/index.js CHANGED
@@ -1010,7 +1010,7 @@ var getLeadWidth = (pinCount, width10) => {
1010
1010
  };
1011
1011
 
1012
1012
  // lib/PinRow.tsx
1013
- import { Cuboid as Cuboid14, Colorize as Colorize6, Hull as Hull2, Rotate as Rotate5, Translate as Translate8 } from "jscad-fiber";
1013
+ import { Colorize as Colorize6, Cuboid as Cuboid14, Hull as Hull2, Rotate as Rotate5, Translate as Translate8 } from "jscad-fiber";
1014
1014
  import { Fragment as Fragment16, jsx as jsx20, jsxs as jsxs18 } from "react/jsx-runtime";
1015
1015
  var PinRow = ({
1016
1016
  numberOfPins,
@@ -1031,7 +1031,8 @@ var PinRow = ({
1031
1031
  const shortSidePinLength = 3;
1032
1032
  const xoff = -((pinsPerRow - 1) / 2) * pitch;
1033
1033
  const bodyCenterY = rows > 1 ? -((rows - 1) * rowSpacing) / 2 : 0;
1034
- const flipZ = (z) => invert || faceup ? -z + bodyHeight : z;
1034
+ const zOffset = !smd && !rightangle ? -bodyHeight - 1.6 : 0;
1035
+ const flipZ = (z) => (invert || faceup ? -z + bodyHeight : z) + zOffset;
1035
1036
  return /* @__PURE__ */ jsxs18(Fragment16, { children: [
1036
1037
  /* @__PURE__ */ jsx20(Translate8, { y: rightangle ? -3 : 0, children: /* @__PURE__ */ jsx20(
1037
1038
  Cuboid14,
@@ -4196,17 +4197,168 @@ var AxialCapacitor = ({ pitch = 10 }) => {
4196
4197
  ] });
4197
4198
  };
4198
4199
 
4200
+ // lib/stampboard.tsx
4201
+ import { Colorize as Colorize32, Cuboid as Cuboid40, Cylinder as Cylinder10, Subtract as Subtract6, Union as Union19 } from "jscad-fiber";
4202
+ import { Fragment as Fragment56, jsx as jsx61, jsxs as jsxs59 } from "react/jsx-runtime";
4203
+ var StampBoard = ({
4204
+ bodyWidth = 21,
4205
+ boardThickness = 0.5,
4206
+ leadWidth = 1.6,
4207
+ leadLength = 2.4,
4208
+ leadsPitch = 2.54,
4209
+ leadsLeft,
4210
+ leadsRight,
4211
+ leadsTop,
4212
+ leadsBottom,
4213
+ innerHoles = true,
4214
+ innerHoleEdgeDistance = 1.61,
4215
+ innerHoleDiameter = 1
4216
+ }) => {
4217
+ const halfBoardWidth = bodyWidth / 2;
4218
+ const boardCenterZ = boardThickness / 2;
4219
+ const boardHeight = boardThickness * 1.05;
4220
+ const holeRadius = innerHoleDiameter / 2;
4221
+ const bodyLength10 = Math.max(leadsLeft || 0, leadsRight || 0, leadsTop || 0, leadsBottom || 0) * leadsPitch || 51;
4222
+ const pads = [];
4223
+ const holes = [];
4224
+ if (leadsRight) {
4225
+ const yOffset = -((leadsRight - 1) / 2) * leadsPitch;
4226
+ for (let i = 0; i < leadsRight; i++) {
4227
+ const y = yOffset + i * leadsPitch;
4228
+ pads.push({
4229
+ x: -halfBoardWidth + leadLength / 2,
4230
+ y: -y,
4231
+ // Flip y
4232
+ pl: leadLength,
4233
+ pw: leadWidth
4234
+ });
4235
+ if (innerHoles) {
4236
+ holes.push(
4237
+ { x: -halfBoardWidth, y: -y },
4238
+ { x: -halfBoardWidth + innerHoleEdgeDistance, y: -y }
4239
+ );
4240
+ }
4241
+ }
4242
+ }
4243
+ if (leadsLeft) {
4244
+ const yOffset = -((leadsLeft - 1) / 2) * leadsPitch;
4245
+ for (let i = 0; i < leadsLeft; i++) {
4246
+ const y = yOffset + i * leadsPitch;
4247
+ pads.push({
4248
+ x: halfBoardWidth - leadLength / 2,
4249
+ y: -y,
4250
+ // Flip y
4251
+ pl: leadLength,
4252
+ pw: leadWidth
4253
+ });
4254
+ if (innerHoles) {
4255
+ holes.push(
4256
+ { x: halfBoardWidth, y: -y },
4257
+ { x: halfBoardWidth - innerHoleEdgeDistance, y: -y }
4258
+ );
4259
+ }
4260
+ }
4261
+ }
4262
+ if (leadsTop) {
4263
+ const xOffset = -((leadsTop - 1) / 2) * leadsPitch;
4264
+ for (let i = 0; i < leadsTop; i++) {
4265
+ const x = xOffset + i * leadsPitch;
4266
+ pads.push({
4267
+ x: -x,
4268
+ // Flip x
4269
+ y: -bodyLength10 / 2 + leadLength / 2,
4270
+ pl: leadWidth,
4271
+ pw: leadLength
4272
+ });
4273
+ if (innerHoles) {
4274
+ holes.push(
4275
+ { x: -x, y: -bodyLength10 / 2 },
4276
+ { x: -x, y: -bodyLength10 / 2 + innerHoleEdgeDistance }
4277
+ );
4278
+ }
4279
+ }
4280
+ }
4281
+ if (leadsBottom) {
4282
+ const xOffset = -((leadsBottom - 1) / 2) * leadsPitch;
4283
+ for (let i = 0; i < leadsBottom; i++) {
4284
+ const x = xOffset + i * leadsPitch;
4285
+ pads.push({
4286
+ x: -x,
4287
+ // Flip x
4288
+ y: bodyLength10 / 2 - leadLength / 2,
4289
+ pl: leadWidth,
4290
+ pw: leadLength
4291
+ });
4292
+ if (innerHoles) {
4293
+ holes.push(
4294
+ { x: -x, y: bodyLength10 / 2 },
4295
+ { x: -x, y: bodyLength10 / 2 - innerHoleEdgeDistance }
4296
+ );
4297
+ }
4298
+ }
4299
+ }
4300
+ const boardBody = /* @__PURE__ */ jsx61(Colorize32, { color: "#008080", children: /* @__PURE__ */ jsxs59(Subtract6, { children: [
4301
+ /* @__PURE__ */ jsx61(
4302
+ Cuboid40,
4303
+ {
4304
+ center: [0, 0, boardCenterZ],
4305
+ size: [bodyWidth, bodyLength10, boardThickness]
4306
+ }
4307
+ ),
4308
+ pads.map((pad, index) => /* @__PURE__ */ jsx61(
4309
+ Cuboid40,
4310
+ {
4311
+ center: [pad.x, pad.y, boardCenterZ],
4312
+ size: [pad.pl + 0.01, pad.pw + 0.01, boardHeight]
4313
+ },
4314
+ index
4315
+ ))
4316
+ ] }) });
4317
+ const holePads = innerHoles && holes.map((hole, index) => /* @__PURE__ */ jsx61(
4318
+ Cylinder10,
4319
+ {
4320
+ color: "black",
4321
+ center: [hole.x, hole.y, boardCenterZ],
4322
+ radius: holeRadius,
4323
+ height: boardThickness * 1.07
4324
+ },
4325
+ index
4326
+ ));
4327
+ const rectPads = pads.map((pad, index) => /* @__PURE__ */ jsx61(
4328
+ Cuboid40,
4329
+ {
4330
+ center: [pad.x, pad.y, boardCenterZ],
4331
+ size: [pad.pl + 0.01, pad.pw + 0.01, boardHeight]
4332
+ },
4333
+ index
4334
+ ));
4335
+ return /* @__PURE__ */ jsxs59(Fragment56, { children: [
4336
+ boardBody,
4337
+ /* @__PURE__ */ jsx61(Colorize32, { color: "#FFD700", children: innerHoles ? /* @__PURE__ */ jsxs59(Subtract6, { children: [
4338
+ /* @__PURE__ */ jsx61(Union19, { children: pads.map((pad, index) => /* @__PURE__ */ jsx61(
4339
+ Cuboid40,
4340
+ {
4341
+ center: [pad.x, pad.y, boardCenterZ],
4342
+ size: [pad.pl + 0.01, pad.pw + 0.01, boardHeight]
4343
+ },
4344
+ index
4345
+ )) }),
4346
+ holePads
4347
+ ] }) : rectPads })
4348
+ ] });
4349
+ };
4350
+
4199
4351
  // lib/Footprinter3d.tsx
4200
- import { jsx as jsx61 } from "react/jsx-runtime";
4352
+ import { jsx as jsx62 } from "react/jsx-runtime";
4201
4353
  var Footprinter3d = ({ footprint }) => {
4202
4354
  const fpJson = fp3.string(footprint).json();
4203
4355
  switch (fpJson.fn) {
4204
4356
  case "dip":
4205
- return /* @__PURE__ */ jsx61(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
4357
+ return /* @__PURE__ */ jsx62(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
4206
4358
  case "axial":
4207
- return /* @__PURE__ */ jsx61(AxialCapacitor, { pitch: fpJson.p });
4359
+ return /* @__PURE__ */ jsx62(AxialCapacitor, { pitch: fpJson.p });
4208
4360
  case "tssop":
4209
- return /* @__PURE__ */ jsx61(
4361
+ return /* @__PURE__ */ jsx62(
4210
4362
  Tssop,
4211
4363
  {
4212
4364
  pinCount: fpJson.num_pins,
@@ -4217,7 +4369,7 @@ var Footprinter3d = ({ footprint }) => {
4217
4369
  }
4218
4370
  );
4219
4371
  case "msop":
4220
- return /* @__PURE__ */ jsx61(
4372
+ return /* @__PURE__ */ jsx62(
4221
4373
  MSOP,
4222
4374
  {
4223
4375
  pinCount: fpJson.num_pins,
@@ -4228,7 +4380,7 @@ var Footprinter3d = ({ footprint }) => {
4228
4380
  }
4229
4381
  );
4230
4382
  case "vssop":
4231
- return /* @__PURE__ */ jsx61(
4383
+ return /* @__PURE__ */ jsx62(
4232
4384
  VSSOP,
4233
4385
  {
4234
4386
  pinCount: fpJson.num_pins,
@@ -4240,7 +4392,7 @@ var Footprinter3d = ({ footprint }) => {
4240
4392
  }
4241
4393
  );
4242
4394
  case "qfp":
4243
- return /* @__PURE__ */ jsx61(
4395
+ return /* @__PURE__ */ jsx62(
4244
4396
  QFP,
4245
4397
  {
4246
4398
  pinCount: fpJson.num_pins,
@@ -4251,12 +4403,12 @@ var Footprinter3d = ({ footprint }) => {
4251
4403
  }
4252
4404
  );
4253
4405
  case "tqfp":
4254
- return /* @__PURE__ */ jsx61(tqfp_default, {});
4406
+ return /* @__PURE__ */ jsx62(tqfp_default, {});
4255
4407
  case "lqfp":
4256
- return /* @__PURE__ */ jsx61(LQFP, { pinCount: fpJson.num_pins });
4408
+ return /* @__PURE__ */ jsx62(LQFP, { pinCount: fpJson.num_pins });
4257
4409
  case "qfn": {
4258
4410
  const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
4259
- return /* @__PURE__ */ jsx61(
4411
+ return /* @__PURE__ */ jsx62(
4260
4412
  qfn_default,
4261
4413
  {
4262
4414
  num_pins: fpJson.num_pins,
@@ -4274,7 +4426,7 @@ var Footprinter3d = ({ footprint }) => {
4274
4426
  }
4275
4427
  case "dfn": {
4276
4428
  const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
4277
- return /* @__PURE__ */ jsx61(
4429
+ return /* @__PURE__ */ jsx62(
4278
4430
  DFN,
4279
4431
  {
4280
4432
  num_pins: fpJson.num_pins,
@@ -4294,7 +4446,7 @@ var Footprinter3d = ({ footprint }) => {
4294
4446
  const rowsMatch = footprint.match(/_rows(\d+)/);
4295
4447
  const rows = rowsMatch && rowsMatch[1] ? parseInt(rowsMatch[1], 10) : 1;
4296
4448
  if (fpJson.male)
4297
- return /* @__PURE__ */ jsx61(
4449
+ return /* @__PURE__ */ jsx62(
4298
4450
  PinRow,
4299
4451
  {
4300
4452
  numberOfPins: fpJson.num_pins,
@@ -4307,7 +4459,7 @@ var Footprinter3d = ({ footprint }) => {
4307
4459
  }
4308
4460
  );
4309
4461
  if (fpJson.female)
4310
- return /* @__PURE__ */ jsx61(
4462
+ return /* @__PURE__ */ jsx62(
4311
4463
  FemaleHeader,
4312
4464
  {
4313
4465
  numberOfPins: fpJson.num_pins,
@@ -4319,47 +4471,47 @@ var Footprinter3d = ({ footprint }) => {
4319
4471
  case "cap": {
4320
4472
  switch (fpJson.imperial) {
4321
4473
  case "0402":
4322
- return /* @__PURE__ */ jsx61(A0402, { color: "#856c4d" });
4474
+ return /* @__PURE__ */ jsx62(A0402, { color: "#856c4d" });
4323
4475
  case "0603":
4324
- return /* @__PURE__ */ jsx61(A0603, { color: "#856c4d" });
4476
+ return /* @__PURE__ */ jsx62(A0603, { color: "#856c4d" });
4325
4477
  case "0805":
4326
- return /* @__PURE__ */ jsx61(A0805, { color: "#856c4d" });
4478
+ return /* @__PURE__ */ jsx62(A0805, { color: "#856c4d" });
4327
4479
  case "0201":
4328
- return /* @__PURE__ */ jsx61(A0201, { color: "#856c4d" });
4480
+ return /* @__PURE__ */ jsx62(A0201, { color: "#856c4d" });
4329
4481
  case "01005":
4330
- return /* @__PURE__ */ jsx61(A01005, { color: "#856c4d" });
4482
+ return /* @__PURE__ */ jsx62(A01005, { color: "#856c4d" });
4331
4483
  case "1206":
4332
- return /* @__PURE__ */ jsx61(A1206, { color: "#856c4d" });
4484
+ return /* @__PURE__ */ jsx62(A1206, { color: "#856c4d" });
4333
4485
  case "1210":
4334
- return /* @__PURE__ */ jsx61(A1210, { color: "#856c4d" });
4486
+ return /* @__PURE__ */ jsx62(A1210, { color: "#856c4d" });
4335
4487
  case "2010":
4336
- return /* @__PURE__ */ jsx61(A2010, { color: "#856c4d" });
4488
+ return /* @__PURE__ */ jsx62(A2010, { color: "#856c4d" });
4337
4489
  case "2512":
4338
- return /* @__PURE__ */ jsx61(A2512, { color: "#856c4d" });
4490
+ return /* @__PURE__ */ jsx62(A2512, { color: "#856c4d" });
4339
4491
  }
4340
4492
  }
4341
4493
  case "sot235":
4342
- return /* @__PURE__ */ jsx61(SOT_235_default, {});
4494
+ return /* @__PURE__ */ jsx62(SOT_235_default, {});
4343
4495
  case "sot457":
4344
- return /* @__PURE__ */ jsx61(SOT457, {});
4496
+ return /* @__PURE__ */ jsx62(SOT457, {});
4345
4497
  case "sot223":
4346
- return /* @__PURE__ */ jsx61(SOT223, {});
4498
+ return /* @__PURE__ */ jsx62(SOT223, {});
4347
4499
  case "sot23w":
4348
- return /* @__PURE__ */ jsx61(SOT23W, {});
4500
+ return /* @__PURE__ */ jsx62(SOT23W, {});
4349
4501
  case "sot323":
4350
- return /* @__PURE__ */ jsx61(SOT323, {});
4502
+ return /* @__PURE__ */ jsx62(SOT323, {});
4351
4503
  case "sod323f":
4352
- return /* @__PURE__ */ jsx61(SOD323F, {});
4504
+ return /* @__PURE__ */ jsx62(SOD323F, {});
4353
4505
  case "sod323fl":
4354
- return /* @__PURE__ */ jsx61(SOD323FL, {});
4506
+ return /* @__PURE__ */ jsx62(SOD323FL, {});
4355
4507
  case "sot363":
4356
- return /* @__PURE__ */ jsx61(SOT_363_default, {});
4508
+ return /* @__PURE__ */ jsx62(SOT_363_default, {});
4357
4509
  case "sot886":
4358
- return /* @__PURE__ */ jsx61(SOT886, {});
4510
+ return /* @__PURE__ */ jsx62(SOT886, {});
4359
4511
  case "sot963":
4360
- return /* @__PURE__ */ jsx61(SOT963, {});
4512
+ return /* @__PURE__ */ jsx62(SOT963, {});
4361
4513
  case "pushbutton":
4362
- return /* @__PURE__ */ jsx61(
4514
+ return /* @__PURE__ */ jsx62(
4363
4515
  PushButton,
4364
4516
  {
4365
4517
  width: fpJson.w,
@@ -4368,7 +4520,7 @@ var Footprinter3d = ({ footprint }) => {
4368
4520
  }
4369
4521
  );
4370
4522
  case "soic":
4371
- return /* @__PURE__ */ jsx61(
4523
+ return /* @__PURE__ */ jsx62(
4372
4524
  SOIC,
4373
4525
  {
4374
4526
  pinCount: fpJson.num_pins,
@@ -4379,39 +4531,39 @@ var Footprinter3d = ({ footprint }) => {
4379
4531
  }
4380
4532
  );
4381
4533
  case "sod523":
4382
- return /* @__PURE__ */ jsx61(SOD523, {});
4534
+ return /* @__PURE__ */ jsx62(SOD523, {});
4383
4535
  case "sod882":
4384
- return /* @__PURE__ */ jsx61(SOD882, {});
4536
+ return /* @__PURE__ */ jsx62(SOD882, {});
4385
4537
  case "sma":
4386
- return /* @__PURE__ */ jsx61(SMA, {});
4538
+ return /* @__PURE__ */ jsx62(SMA, {});
4387
4539
  case "smb":
4388
- return /* @__PURE__ */ jsx61(SMB, {});
4540
+ return /* @__PURE__ */ jsx62(SMB, {});
4389
4541
  case "smc":
4390
- return /* @__PURE__ */ jsx61(SMC, {});
4542
+ return /* @__PURE__ */ jsx62(SMC, {});
4391
4543
  case "smf":
4392
- return /* @__PURE__ */ jsx61(SMF, {});
4544
+ return /* @__PURE__ */ jsx62(SMF, {});
4393
4545
  case "sod123f":
4394
- return /* @__PURE__ */ jsx61(SOD123F, {});
4546
+ return /* @__PURE__ */ jsx62(SOD123F, {});
4395
4547
  case "sod123fl":
4396
- return /* @__PURE__ */ jsx61(SOD123FL, {});
4548
+ return /* @__PURE__ */ jsx62(SOD123FL, {});
4397
4549
  case "sod123w":
4398
- return /* @__PURE__ */ jsx61(SOD123W, {});
4550
+ return /* @__PURE__ */ jsx62(SOD123W, {});
4399
4551
  case "sod128":
4400
- return /* @__PURE__ */ jsx61(SOD128, {});
4552
+ return /* @__PURE__ */ jsx62(SOD128, {});
4401
4553
  case "sod323":
4402
- return /* @__PURE__ */ jsx61(SOD323, {});
4554
+ return /* @__PURE__ */ jsx62(SOD323, {});
4403
4555
  case "sod923":
4404
- return /* @__PURE__ */ jsx61(SOD923, {});
4556
+ return /* @__PURE__ */ jsx62(SOD923, {});
4405
4557
  case "hc49":
4406
- return /* @__PURE__ */ jsx61(HC49, {});
4558
+ return /* @__PURE__ */ jsx62(HC49, {});
4407
4559
  case "micromelf":
4408
- return /* @__PURE__ */ jsx61(MicroMELF, {});
4560
+ return /* @__PURE__ */ jsx62(MicroMELF, {});
4409
4561
  case "minimelf":
4410
- return /* @__PURE__ */ jsx61(MINIMELF, {});
4562
+ return /* @__PURE__ */ jsx62(MINIMELF, {});
4411
4563
  case "melf":
4412
- return /* @__PURE__ */ jsx61(MELF, {});
4564
+ return /* @__PURE__ */ jsx62(MELF, {});
4413
4565
  case "ms012":
4414
- return /* @__PURE__ */ jsx61(
4566
+ return /* @__PURE__ */ jsx62(
4415
4567
  MS012,
4416
4568
  {
4417
4569
  pinCount: fpJson.num_pins,
@@ -4421,7 +4573,7 @@ var Footprinter3d = ({ footprint }) => {
4421
4573
  }
4422
4574
  );
4423
4575
  case "ms013":
4424
- return /* @__PURE__ */ jsx61(
4576
+ return /* @__PURE__ */ jsx62(
4425
4577
  MS013,
4426
4578
  {
4427
4579
  pinCount: fpJson.num_pins,
@@ -4431,39 +4583,56 @@ var Footprinter3d = ({ footprint }) => {
4431
4583
  }
4432
4584
  );
4433
4585
  case "sot723":
4434
- return /* @__PURE__ */ jsx61(SOT723, {});
4586
+ return /* @__PURE__ */ jsx62(SOT723, {});
4435
4587
  case "to220":
4436
- return /* @__PURE__ */ jsx61(TO220, {});
4588
+ return /* @__PURE__ */ jsx62(TO220, {});
4437
4589
  case "to92":
4438
- return /* @__PURE__ */ jsx61(TO92, {});
4590
+ return /* @__PURE__ */ jsx62(TO92, {});
4591
+ case "stampboard":
4592
+ case "stampreceiver":
4593
+ return /* @__PURE__ */ jsx62(
4594
+ StampBoard,
4595
+ {
4596
+ bodyWidth: fpJson.w,
4597
+ leadsLeft: fpJson.left,
4598
+ leadsRight: fpJson.right,
4599
+ leadsTop: fpJson.top,
4600
+ leadsBottom: fpJson.bottom,
4601
+ leadsPitch: fpJson.p,
4602
+ leadWidth: fpJson.pw,
4603
+ leadLength: fpJson.pl,
4604
+ innerHoles: fpJson.innerhole,
4605
+ innerHoleEdgeDistance: fpJson.innerholeedgedistance
4606
+ }
4607
+ );
4439
4608
  }
4440
4609
  const colorMatch = footprint.match(/_color\(([^)]+)\)/);
4441
4610
  const color = colorMatch ? colorMatch[1] : void 0;
4442
4611
  switch (fpJson.imperial) {
4443
4612
  case "0402":
4444
- return /* @__PURE__ */ jsx61(A0402, { color });
4613
+ return /* @__PURE__ */ jsx62(A0402, { color });
4445
4614
  case "0603":
4446
- return /* @__PURE__ */ jsx61(A0603, { color });
4615
+ return /* @__PURE__ */ jsx62(A0603, { color });
4447
4616
  case "0805":
4448
- return /* @__PURE__ */ jsx61(A0805, { color });
4617
+ return /* @__PURE__ */ jsx62(A0805, { color });
4449
4618
  case "0201":
4450
- return /* @__PURE__ */ jsx61(A0201, { color });
4619
+ return /* @__PURE__ */ jsx62(A0201, { color });
4451
4620
  case "01005":
4452
- return /* @__PURE__ */ jsx61(A01005, { color });
4621
+ return /* @__PURE__ */ jsx62(A01005, { color });
4453
4622
  case "1206":
4454
- return /* @__PURE__ */ jsx61(A1206, { color });
4623
+ return /* @__PURE__ */ jsx62(A1206, { color });
4455
4624
  case "1210":
4456
- return /* @__PURE__ */ jsx61(A1210, { color });
4625
+ return /* @__PURE__ */ jsx62(A1210, { color });
4457
4626
  case "2010":
4458
- return /* @__PURE__ */ jsx61(A2010, { color });
4627
+ return /* @__PURE__ */ jsx62(A2010, { color });
4459
4628
  case "2512":
4460
- return /* @__PURE__ */ jsx61(A2512, { color });
4629
+ return /* @__PURE__ */ jsx62(A2512, { color });
4461
4630
  }
4462
4631
  return null;
4463
4632
  };
4464
4633
 
4465
4634
  // lib/SOT-23-3P.tsx
4466
- import { Fragment as Fragment56, jsx as jsx62, jsxs as jsxs59 } from "react/jsx-runtime";
4635
+ import { Fragment as Fragment57, jsx as jsx63, jsxs as jsxs60 } from "react/jsx-runtime";
4467
4636
  var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
4468
4637
  const bodyWidth = 1.3;
4469
4638
  const bodyLength10 = 2.9;
@@ -4474,8 +4643,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
4474
4643
  const padContactLength = 0.4;
4475
4644
  const padThickness = leadThickness / 2;
4476
4645
  const extendedBodyDistance = (fullWidth - bodyWidth) / 2 + 0.3;
4477
- return /* @__PURE__ */ jsxs59(Fragment56, { children: [
4478
- /* @__PURE__ */ jsx62(
4646
+ return /* @__PURE__ */ jsxs60(Fragment57, { children: [
4647
+ /* @__PURE__ */ jsx63(
4479
4648
  SmdChipLead,
4480
4649
  {
4481
4650
  rotation: Math.PI,
@@ -4492,7 +4661,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
4492
4661
  },
4493
4662
  1
4494
4663
  ),
4495
- /* @__PURE__ */ jsx62(
4664
+ /* @__PURE__ */ jsx63(
4496
4665
  SmdChipLead,
4497
4666
  {
4498
4667
  rotation: Math.PI,
@@ -4509,7 +4678,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
4509
4678
  },
4510
4679
  2
4511
4680
  ),
4512
- /* @__PURE__ */ jsx62(
4681
+ /* @__PURE__ */ jsx63(
4513
4682
  SmdChipLead,
4514
4683
  {
4515
4684
  position: {
@@ -4525,7 +4694,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
4525
4694
  },
4526
4695
  3
4527
4696
  ),
4528
- /* @__PURE__ */ jsx62(
4697
+ /* @__PURE__ */ jsx63(
4529
4698
  ChipBody,
4530
4699
  {
4531
4700
  center: { x: 0, y: 0, z: 0 },
@@ -4538,8 +4707,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
4538
4707
  };
4539
4708
 
4540
4709
  // lib/SOT-563.tsx
4541
- import { Cuboid as Cuboid40, Translate as Translate28, Rotate as Rotate12, Colorize as Colorize32 } from "jscad-fiber";
4542
- import { Fragment as Fragment57, jsx as jsx63, jsxs as jsxs60 } from "react/jsx-runtime";
4710
+ import { Cuboid as Cuboid41, Translate as Translate28, Rotate as Rotate12, Colorize as Colorize33 } from "jscad-fiber";
4711
+ import { Fragment as Fragment58, jsx as jsx64, jsxs as jsxs61 } from "react/jsx-runtime";
4543
4712
  var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
4544
4713
  const bodyWidth = 1.2;
4545
4714
  const bodyLength10 = 1.6;
@@ -4549,11 +4718,11 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
4549
4718
  const leadHeight = 0.13;
4550
4719
  const leadSpacing = 0.5;
4551
4720
  const bodyZOffset = -0.4;
4552
- return /* @__PURE__ */ jsxs60(Fragment57, { children: [
4553
- /* @__PURE__ */ jsx63(Rotate12, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx63(Translate28, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ jsx63(Colorize32, { color: "grey", children: /* @__PURE__ */ jsx63(Cuboid40, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
4721
+ return /* @__PURE__ */ jsxs61(Fragment58, { children: [
4722
+ /* @__PURE__ */ jsx64(Rotate12, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx64(Translate28, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ jsx64(Colorize33, { color: "grey", children: /* @__PURE__ */ jsx64(Cuboid41, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
4554
4723
  [-1, 0, 1].flatMap((yOffset, index) => [
4555
4724
  // Left lead
4556
- /* @__PURE__ */ jsx63(
4725
+ /* @__PURE__ */ jsx64(
4557
4726
  Translate28,
4558
4727
  {
4559
4728
  center: [
@@ -4561,16 +4730,16 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
4561
4730
  yOffset * leadSpacing,
4562
4731
  leadHeight / 2
4563
4732
  ],
4564
- children: /* @__PURE__ */ jsx63(Cuboid40, { size: [leadLength, leadWidth, leadHeight] })
4733
+ children: /* @__PURE__ */ jsx64(Cuboid41, { size: [leadLength, leadWidth, leadHeight] })
4565
4734
  },
4566
4735
  `left-${index}`
4567
4736
  ),
4568
4737
  // Right lead
4569
- /* @__PURE__ */ jsx63(
4738
+ /* @__PURE__ */ jsx64(
4570
4739
  Translate28,
4571
4740
  {
4572
4741
  center: [bodyWidth / 2 + 0.03, yOffset * leadSpacing, leadHeight / 2],
4573
- children: /* @__PURE__ */ jsx63(Cuboid40, { size: [leadLength, leadWidth, leadHeight] })
4742
+ children: /* @__PURE__ */ jsx64(Cuboid41, { size: [leadLength, leadWidth, leadHeight] })
4574
4743
  },
4575
4744
  `right-${index}`
4576
4745
  )
@@ -4579,7 +4748,7 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
4579
4748
  };
4580
4749
 
4581
4750
  // lib/sod-123.tsx
4582
- import { Fragment as Fragment58, jsx as jsx64, jsxs as jsxs61 } from "react/jsx-runtime";
4751
+ import { Fragment as Fragment59, jsx as jsx65, jsxs as jsxs62 } from "react/jsx-runtime";
4583
4752
  var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
4584
4753
  const bodyWidth = 2.9;
4585
4754
  const bodyLength10 = 1.3;
@@ -4590,8 +4759,8 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
4590
4759
  const padContactLength = 0.4;
4591
4760
  const padThickness = leadThickness / 2;
4592
4761
  const bodyDistance = (fullWidth - bodyWidth) / 2;
4593
- return /* @__PURE__ */ jsxs61(Fragment58, { children: [
4594
- /* @__PURE__ */ jsx64(
4762
+ return /* @__PURE__ */ jsxs62(Fragment59, { children: [
4763
+ /* @__PURE__ */ jsx65(
4595
4764
  SmdChipLead,
4596
4765
  {
4597
4766
  position: {
@@ -4607,7 +4776,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
4607
4776
  },
4608
4777
  1
4609
4778
  ),
4610
- /* @__PURE__ */ jsx64(
4779
+ /* @__PURE__ */ jsx65(
4611
4780
  SmdChipLead,
4612
4781
  {
4613
4782
  rotation: Math.PI,
@@ -4624,7 +4793,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
4624
4793
  },
4625
4794
  2
4626
4795
  ),
4627
- /* @__PURE__ */ jsx64(
4796
+ /* @__PURE__ */ jsx65(
4628
4797
  ChipBody,
4629
4798
  {
4630
4799
  center: { x: 0, y: 0, z: 0 },
@@ -4690,6 +4859,7 @@ export {
4690
4859
  SOT886,
4691
4860
  SOT963,
4692
4861
  SmdChipLead,
4862
+ StampBoard,
4693
4863
  TO220,
4694
4864
  TO92,
4695
4865
  TQFP,