jscad-electronics 0.0.141 → 0.0.142

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.js CHANGED
@@ -5312,8 +5312,254 @@ var SmdPinHeader = ({
5312
5312
  }) });
5313
5313
  };
5314
5314
 
5315
+ // lib/RJ45.tsx
5316
+ import {
5317
+ Colorize as Colorize39,
5318
+ Cuboid as Cuboid47,
5319
+ Cylinder as Cylinder13,
5320
+ Rotate as Rotate14,
5321
+ RoundedCuboid as RoundedCuboid4,
5322
+ Subtract as Subtract11,
5323
+ Translate as Translate33
5324
+ } from "jscad-fiber";
5325
+ import { Fragment as Fragment64, jsx as jsx70, jsxs as jsxs66 } from "react/jsx-runtime";
5326
+ var range2 = (length) => Array.from({ length }, (_, index) => index);
5327
+ var RJ45 = ({
5328
+ bodyWidth = 16.26,
5329
+ bodyDepth = 15.88,
5330
+ bodyHeight = 13.5,
5331
+ bodyCenterY = -0.96,
5332
+ ledPins = false,
5333
+ firstPinLeft = false,
5334
+ firstPinTop = false,
5335
+ signalPitch = 1.02,
5336
+ signalRowPitch = 1.78,
5337
+ signalHoleDiameter = 0.9144,
5338
+ shieldPinX = 8.13,
5339
+ shieldPinY = 0.13,
5340
+ shieldHoleDiameter = 1.8,
5341
+ locatorHoleX = 6.35,
5342
+ locatorHoleY = -3.43,
5343
+ locatorHoleDiameter = 3.25,
5344
+ ledPinX = 4.57,
5345
+ ledPinPitch = 2.29,
5346
+ ledPinY = 5.7,
5347
+ openingDirection,
5348
+ shellColor = "#b7bdc2",
5349
+ housingColor = "#20242a",
5350
+ contactColor = "#d6a928"
5351
+ }) => {
5352
+ const frontDirection = openingDirection ?? (bodyCenterY > 0 ? 1 : -1);
5353
+ const frontY = bodyCenterY + frontDirection * bodyDepth / 2;
5354
+ const shellThickness = Math.min(0.38, bodyWidth * 0.024);
5355
+ const openingWidth = Math.max(bodyWidth - 2.5, bodyWidth * 0.72);
5356
+ const openingHeight = Math.min(bodyHeight - 2.4, 9.6);
5357
+ const openingCenterZ = 1.3 + openingHeight / 2;
5358
+ const cavityDepth = Math.min(4.4, bodyDepth * 0.34);
5359
+ const cavityCenterY = frontY - frontDirection * cavityDepth / 2;
5360
+ const backWallY = frontY - frontDirection * (cavityDepth + shellThickness * 0.7);
5361
+ const signalLeadRadius = Math.max(
5362
+ 0.22,
5363
+ Math.min(signalHoleDiameter * 0.36, 0.38)
5364
+ );
5365
+ const signalPinPositions = range2(8).map((index) => {
5366
+ const defaultX = (3.5 - index) * signalPitch;
5367
+ const defaultY = index % 2 === 0 ? -signalRowPitch / 2 : signalRowPitch / 2;
5368
+ return {
5369
+ x: firstPinLeft ? -defaultX : defaultX,
5370
+ y: firstPinTop ? -defaultY : defaultY
5371
+ };
5372
+ });
5373
+ const ledPinPositions = [
5374
+ -ledPinX - ledPinPitch,
5375
+ -ledPinX,
5376
+ ledPinX,
5377
+ ledPinX + ledPinPitch
5378
+ ];
5379
+ const contactPitch = openingWidth / 10;
5380
+ const contactY = frontY - frontDirection * Math.max(cavityDepth * 0.48, 1.2);
5381
+ const contactZ = openingCenterZ + openingHeight * 0.18;
5382
+ const frontLipY = frontY + frontDirection * shellThickness * 0.2;
5383
+ return /* @__PURE__ */ jsxs66(Fragment64, { children: [
5384
+ /* @__PURE__ */ jsxs66(Colorize39, { color: shellColor, children: [
5385
+ /* @__PURE__ */ jsxs66(Subtract11, { children: [
5386
+ /* @__PURE__ */ jsx70(
5387
+ Cuboid47,
5388
+ {
5389
+ center: [0, bodyCenterY, bodyHeight / 2],
5390
+ size: [bodyWidth, bodyDepth, bodyHeight]
5391
+ }
5392
+ ),
5393
+ /* @__PURE__ */ jsx70(
5394
+ Cuboid47,
5395
+ {
5396
+ center: [0, cavityCenterY, openingCenterZ],
5397
+ size: [
5398
+ openingWidth,
5399
+ cavityDepth + shellThickness * 2,
5400
+ openingHeight
5401
+ ]
5402
+ }
5403
+ )
5404
+ ] }),
5405
+ /* @__PURE__ */ jsx70(
5406
+ Cuboid47,
5407
+ {
5408
+ center: [0, frontLipY, 0.72],
5409
+ size: [openingWidth + 0.5, shellThickness * 1.25, 1.05]
5410
+ }
5411
+ ),
5412
+ [-1, 1].map((direction) => /* @__PURE__ */ jsx70(
5413
+ Cuboid47,
5414
+ {
5415
+ center: [direction * shieldPinX, shieldPinY, 0.25],
5416
+ size: [
5417
+ Math.max(shieldHoleDiameter * 0.46, 0.65),
5418
+ Math.max(shieldHoleDiameter * 0.72, 1.1),
5419
+ 3.4
5420
+ ]
5421
+ },
5422
+ `shield-tab:${direction}`
5423
+ )),
5424
+ [-1, 1].map((direction) => /* @__PURE__ */ jsx70(
5425
+ Cuboid47,
5426
+ {
5427
+ center: [
5428
+ direction * bodyWidth * 0.24,
5429
+ bodyCenterY - frontDirection * bodyDepth * 0.08,
5430
+ bodyHeight + 0.04
5431
+ ],
5432
+ size: [bodyWidth * 0.22, bodyDepth * 0.42, 0.1]
5433
+ },
5434
+ `top-seam:${direction}`
5435
+ ))
5436
+ ] }),
5437
+ /* @__PURE__ */ jsxs66(Colorize39, { color: housingColor, children: [
5438
+ /* @__PURE__ */ jsxs66(Subtract11, { children: [
5439
+ /* @__PURE__ */ jsx70(
5440
+ RoundedCuboid4,
5441
+ {
5442
+ center: [0, cavityCenterY, openingCenterZ],
5443
+ size: [
5444
+ openingWidth - 0.2,
5445
+ cavityDepth + shellThickness * 0.5,
5446
+ openingHeight - 0.2
5447
+ ],
5448
+ roundRadius: 0.22
5449
+ }
5450
+ ),
5451
+ /* @__PURE__ */ jsx70(
5452
+ Cuboid47,
5453
+ {
5454
+ center: [
5455
+ 0,
5456
+ cavityCenterY - frontDirection * shellThickness * 0.2,
5457
+ openingCenterZ - 0.05
5458
+ ],
5459
+ size: [
5460
+ openingWidth - 1.25,
5461
+ cavityDepth + shellThickness,
5462
+ openingHeight - 1.35
5463
+ ]
5464
+ }
5465
+ )
5466
+ ] }),
5467
+ /* @__PURE__ */ jsx70(
5468
+ Cuboid47,
5469
+ {
5470
+ center: [0, backWallY, openingCenterZ],
5471
+ size: [openingWidth - 1.15, shellThickness, openingHeight - 1.25]
5472
+ }
5473
+ ),
5474
+ /* @__PURE__ */ jsx70(
5475
+ RoundedCuboid4,
5476
+ {
5477
+ center: [0, frontY - frontDirection * cavityDepth * 0.28, 1.55],
5478
+ size: [openingWidth - 2.6, cavityDepth * 0.5, 1.15],
5479
+ roundRadius: 0.16
5480
+ }
5481
+ ),
5482
+ [-1, 1].map((direction) => /* @__PURE__ */ jsx70(
5483
+ Cylinder13,
5484
+ {
5485
+ center: [direction * locatorHoleX, locatorHoleY, -0.25],
5486
+ radius: Math.max(locatorHoleDiameter * 0.41, 0.65),
5487
+ height: 2.7
5488
+ },
5489
+ `locator:${direction}`
5490
+ ))
5491
+ ] }),
5492
+ /* @__PURE__ */ jsxs66(Colorize39, { color: contactColor, children: [
5493
+ signalPinPositions.map(({ x, y }, index) => /* @__PURE__ */ jsx70(
5494
+ Cylinder13,
5495
+ {
5496
+ center: [x, y, 0.15],
5497
+ radius: signalLeadRadius,
5498
+ height: 3.1
5499
+ },
5500
+ `signal-lead:${index}`
5501
+ )),
5502
+ range2(8).map((index) => /* @__PURE__ */ jsx70(
5503
+ Translate33,
5504
+ {
5505
+ offset: [
5506
+ (index - 3.5) * contactPitch,
5507
+ contactY,
5508
+ contactZ + (index % 2 === 0 ? 0.03 : -0.03)
5509
+ ],
5510
+ children: /* @__PURE__ */ jsx70(Rotate14, { rotation: [frontDirection * 0.2, 0, 0], children: /* @__PURE__ */ jsx70(
5511
+ RoundedCuboid4,
5512
+ {
5513
+ size: [Math.max(contactPitch * 0.28, 0.28), 3.25, 0.16],
5514
+ roundRadius: 0.05
5515
+ }
5516
+ ) })
5517
+ },
5518
+ `socket-contact:${index}`
5519
+ )),
5520
+ ledPins && ledPinPositions.map((x, index) => /* @__PURE__ */ jsx70(
5521
+ Cylinder13,
5522
+ {
5523
+ center: [x, ledPinY, 0.15],
5524
+ radius: signalLeadRadius,
5525
+ height: 3.1
5526
+ },
5527
+ `led-lead:${index}`
5528
+ ))
5529
+ ] }),
5530
+ ledPins && /* @__PURE__ */ jsxs66(Fragment64, { children: [
5531
+ /* @__PURE__ */ jsx70(
5532
+ RoundedCuboid4,
5533
+ {
5534
+ color: "#73b744",
5535
+ center: [
5536
+ -bodyWidth / 2 + 2.05,
5537
+ frontY + frontDirection * shellThickness * 0.35,
5538
+ bodyHeight - 2.05
5539
+ ],
5540
+ size: [2.15, shellThickness * 1.55, 1.45],
5541
+ roundRadius: 0.18
5542
+ }
5543
+ ),
5544
+ /* @__PURE__ */ jsx70(
5545
+ RoundedCuboid4,
5546
+ {
5547
+ color: "#e0aa35",
5548
+ center: [
5549
+ bodyWidth / 2 - 2.05,
5550
+ frontY + frontDirection * shellThickness * 0.35,
5551
+ bodyHeight - 2.05
5552
+ ],
5553
+ size: [2.15, shellThickness * 1.55, 1.45],
5554
+ roundRadius: 0.18
5555
+ }
5556
+ )
5557
+ ] })
5558
+ ] });
5559
+ };
5560
+
5315
5561
  // lib/Footprinter3d.tsx
5316
- import { jsx as jsx70 } from "react/jsx-runtime";
5562
+ import { jsx as jsx71 } from "react/jsx-runtime";
5317
5563
  var Footprinter3d = ({ footprint }) => {
5318
5564
  let normalizedFootprint = footprint;
5319
5565
  if (footprint.startsWith("jstzh1_5mm")) {
@@ -5324,11 +5570,11 @@ var Footprinter3d = ({ footprint }) => {
5324
5570
  const fpJson = fp3.string(normalizedFootprint).json();
5325
5571
  switch (fpJson.fn) {
5326
5572
  case "dip":
5327
- return /* @__PURE__ */ jsx70(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
5573
+ return /* @__PURE__ */ jsx71(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
5328
5574
  case "axial":
5329
- return /* @__PURE__ */ jsx70(AxialCapacitor, { pitch: fpJson.p });
5575
+ return /* @__PURE__ */ jsx71(AxialCapacitor, { pitch: fpJson.p });
5330
5576
  case "tssop":
5331
- return /* @__PURE__ */ jsx70(
5577
+ return /* @__PURE__ */ jsx71(
5332
5578
  Tssop,
5333
5579
  {
5334
5580
  pinCount: fpJson.num_pins,
@@ -5339,7 +5585,7 @@ var Footprinter3d = ({ footprint }) => {
5339
5585
  }
5340
5586
  );
5341
5587
  case "msop":
5342
- return /* @__PURE__ */ jsx70(
5588
+ return /* @__PURE__ */ jsx71(
5343
5589
  MSOP,
5344
5590
  {
5345
5591
  pinCount: fpJson.num_pins,
@@ -5350,7 +5596,7 @@ var Footprinter3d = ({ footprint }) => {
5350
5596
  }
5351
5597
  );
5352
5598
  case "vssop":
5353
- return /* @__PURE__ */ jsx70(
5599
+ return /* @__PURE__ */ jsx71(
5354
5600
  VSSOP,
5355
5601
  {
5356
5602
  pinCount: fpJson.num_pins,
@@ -5362,7 +5608,7 @@ var Footprinter3d = ({ footprint }) => {
5362
5608
  }
5363
5609
  );
5364
5610
  case "qfp":
5365
- return /* @__PURE__ */ jsx70(
5611
+ return /* @__PURE__ */ jsx71(
5366
5612
  QFP,
5367
5613
  {
5368
5614
  pinCount: fpJson.num_pins,
@@ -5373,12 +5619,12 @@ var Footprinter3d = ({ footprint }) => {
5373
5619
  }
5374
5620
  );
5375
5621
  case "tqfp":
5376
- return /* @__PURE__ */ jsx70(tqfp_default, {});
5622
+ return /* @__PURE__ */ jsx71(tqfp_default, {});
5377
5623
  case "lqfp":
5378
- return /* @__PURE__ */ jsx70(LQFP, { pinCount: fpJson.num_pins });
5624
+ return /* @__PURE__ */ jsx71(LQFP, { pinCount: fpJson.num_pins });
5379
5625
  case "qfn": {
5380
5626
  const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
5381
- return /* @__PURE__ */ jsx70(
5627
+ return /* @__PURE__ */ jsx71(
5382
5628
  qfn_default,
5383
5629
  {
5384
5630
  num_pins: fpJson.num_pins,
@@ -5396,7 +5642,7 @@ var Footprinter3d = ({ footprint }) => {
5396
5642
  }
5397
5643
  case "dfn": {
5398
5644
  const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
5399
- return /* @__PURE__ */ jsx70(
5645
+ return /* @__PURE__ */ jsx71(
5400
5646
  DFN,
5401
5647
  {
5402
5648
  num_pins: fpJson.num_pins,
@@ -5416,7 +5662,7 @@ var Footprinter3d = ({ footprint }) => {
5416
5662
  const rowsMatch = footprint.match(/_rows(\d+)/);
5417
5663
  const rows = rowsMatch && rowsMatch[1] ? parseInt(rowsMatch[1], 10) : 1;
5418
5664
  if (fpJson.male)
5419
- return /* @__PURE__ */ jsx70(
5665
+ return /* @__PURE__ */ jsx71(
5420
5666
  PinRow,
5421
5667
  {
5422
5668
  numberOfPins: fpJson.num_pins,
@@ -5429,7 +5675,7 @@ var Footprinter3d = ({ footprint }) => {
5429
5675
  }
5430
5676
  );
5431
5677
  if (fpJson.female)
5432
- return /* @__PURE__ */ jsx70(
5678
+ return /* @__PURE__ */ jsx71(
5433
5679
  FemaleHeaderRow,
5434
5680
  {
5435
5681
  numberOfPins: fpJson.num_pins,
@@ -5439,7 +5685,7 @@ var Footprinter3d = ({ footprint }) => {
5439
5685
  );
5440
5686
  }
5441
5687
  case "smdpinheader":
5442
- return /* @__PURE__ */ jsx70(
5688
+ return /* @__PURE__ */ jsx71(
5443
5689
  SmdPinHeader,
5444
5690
  {
5445
5691
  numberOfPins: fpJson.num_pins,
@@ -5450,47 +5696,47 @@ var Footprinter3d = ({ footprint }) => {
5450
5696
  case "cap": {
5451
5697
  switch (fpJson.imperial) {
5452
5698
  case "0402":
5453
- return /* @__PURE__ */ jsx70(A0402, { color: "#856c4d" });
5699
+ return /* @__PURE__ */ jsx71(A0402, { color: "#856c4d" });
5454
5700
  case "0603":
5455
- return /* @__PURE__ */ jsx70(A0603, { color: "#856c4d" });
5701
+ return /* @__PURE__ */ jsx71(A0603, { color: "#856c4d" });
5456
5702
  case "0805":
5457
- return /* @__PURE__ */ jsx70(A0805, { color: "#856c4d" });
5703
+ return /* @__PURE__ */ jsx71(A0805, { color: "#856c4d" });
5458
5704
  case "0201":
5459
- return /* @__PURE__ */ jsx70(A0201, { color: "#856c4d" });
5705
+ return /* @__PURE__ */ jsx71(A0201, { color: "#856c4d" });
5460
5706
  case "01005":
5461
- return /* @__PURE__ */ jsx70(A01005, { color: "#856c4d" });
5707
+ return /* @__PURE__ */ jsx71(A01005, { color: "#856c4d" });
5462
5708
  case "1206":
5463
- return /* @__PURE__ */ jsx70(A1206, { color: "#856c4d" });
5709
+ return /* @__PURE__ */ jsx71(A1206, { color: "#856c4d" });
5464
5710
  case "1210":
5465
- return /* @__PURE__ */ jsx70(A1210, { color: "#856c4d" });
5711
+ return /* @__PURE__ */ jsx71(A1210, { color: "#856c4d" });
5466
5712
  case "2010":
5467
- return /* @__PURE__ */ jsx70(A2010, { color: "#856c4d" });
5713
+ return /* @__PURE__ */ jsx71(A2010, { color: "#856c4d" });
5468
5714
  case "2512":
5469
- return /* @__PURE__ */ jsx70(A2512, { color: "#856c4d" });
5715
+ return /* @__PURE__ */ jsx71(A2512, { color: "#856c4d" });
5470
5716
  }
5471
5717
  }
5472
5718
  case "sot235":
5473
- return /* @__PURE__ */ jsx70(SOT_235_default, {});
5719
+ return /* @__PURE__ */ jsx71(SOT_235_default, {});
5474
5720
  case "sot457":
5475
- return /* @__PURE__ */ jsx70(SOT457, {});
5721
+ return /* @__PURE__ */ jsx71(SOT457, {});
5476
5722
  case "sot223":
5477
- return /* @__PURE__ */ jsx70(SOT223, {});
5723
+ return /* @__PURE__ */ jsx71(SOT223, {});
5478
5724
  case "sot23w":
5479
- return /* @__PURE__ */ jsx70(SOT23W, {});
5725
+ return /* @__PURE__ */ jsx71(SOT23W, {});
5480
5726
  case "sot323":
5481
- return /* @__PURE__ */ jsx70(SOT323, {});
5727
+ return /* @__PURE__ */ jsx71(SOT323, {});
5482
5728
  case "sod323f":
5483
- return /* @__PURE__ */ jsx70(SOD323F, {});
5729
+ return /* @__PURE__ */ jsx71(SOD323F, {});
5484
5730
  case "sod323fl":
5485
- return /* @__PURE__ */ jsx70(SOD323FL, {});
5731
+ return /* @__PURE__ */ jsx71(SOD323FL, {});
5486
5732
  case "sot363":
5487
- return /* @__PURE__ */ jsx70(SOT_363_default, {});
5733
+ return /* @__PURE__ */ jsx71(SOT_363_default, {});
5488
5734
  case "sot886":
5489
- return /* @__PURE__ */ jsx70(SOT886, {});
5735
+ return /* @__PURE__ */ jsx71(SOT886, {});
5490
5736
  case "sot963":
5491
- return /* @__PURE__ */ jsx70(SOT963, {});
5737
+ return /* @__PURE__ */ jsx71(SOT963, {});
5492
5738
  case "pushbutton":
5493
- return /* @__PURE__ */ jsx70(
5739
+ return /* @__PURE__ */ jsx71(
5494
5740
  PushButton,
5495
5741
  {
5496
5742
  width: fpJson.w,
@@ -5500,11 +5746,11 @@ var Footprinter3d = ({ footprint }) => {
5500
5746
  );
5501
5747
  case "jst":
5502
5748
  if (fpJson.zh) {
5503
- return /* @__PURE__ */ jsx70(JSTZH1_5mm, { numPins: fpJson.num_pins });
5749
+ return /* @__PURE__ */ jsx71(JSTZH1_5mm, { numPins: fpJson.num_pins });
5504
5750
  }
5505
5751
  break;
5506
5752
  case "fpc":
5507
- return /* @__PURE__ */ jsx70(
5753
+ return /* @__PURE__ */ jsx71(
5508
5754
  FPC,
5509
5755
  {
5510
5756
  pinCount: fpJson.num_pins,
@@ -5523,8 +5769,32 @@ var Footprinter3d = ({ footprint }) => {
5523
5769
  mountPadLength: fpJson.mpl
5524
5770
  }
5525
5771
  );
5772
+ case "rj45":
5773
+ return /* @__PURE__ */ jsx71(
5774
+ RJ45,
5775
+ {
5776
+ bodyWidth: fpJson.w,
5777
+ bodyDepth: fpJson.h,
5778
+ bodyCenterY: fpJson.bodyy,
5779
+ ledPins: fpJson.ledpins || fpJson.num_pins === 14,
5780
+ firstPinLeft: fpJson.firstpinleft,
5781
+ firstPinTop: fpJson.firstpintop,
5782
+ signalPitch: fpJson.p,
5783
+ signalRowPitch: fpJson.py,
5784
+ signalHoleDiameter: fpJson.id,
5785
+ shieldPinX: fpJson.shieldx,
5786
+ shieldPinY: fpJson.shieldy,
5787
+ shieldHoleDiameter: fpJson.shieldid,
5788
+ locatorHoleX: fpJson.holex,
5789
+ locatorHoleY: fpJson.holey,
5790
+ locatorHoleDiameter: fpJson.holed,
5791
+ ledPinX: fpJson.ledx,
5792
+ ledPinPitch: fpJson.ledp,
5793
+ ledPinY: fpJson.ledy
5794
+ }
5795
+ );
5526
5796
  case "soic":
5527
- return /* @__PURE__ */ jsx70(
5797
+ return /* @__PURE__ */ jsx71(
5528
5798
  SOIC,
5529
5799
  {
5530
5800
  pinCount: fpJson.num_pins,
@@ -5535,41 +5805,41 @@ var Footprinter3d = ({ footprint }) => {
5535
5805
  }
5536
5806
  );
5537
5807
  case "sod523":
5538
- return /* @__PURE__ */ jsx70(SOD523, {});
5808
+ return /* @__PURE__ */ jsx71(SOD523, {});
5539
5809
  case "sod723":
5540
- return /* @__PURE__ */ jsx70(SOD723_default, {});
5810
+ return /* @__PURE__ */ jsx71(SOD723_default, {});
5541
5811
  case "sod882":
5542
- return /* @__PURE__ */ jsx70(SOD882, {});
5812
+ return /* @__PURE__ */ jsx71(SOD882, {});
5543
5813
  case "sma":
5544
- return /* @__PURE__ */ jsx70(SMA, {});
5814
+ return /* @__PURE__ */ jsx71(SMA, {});
5545
5815
  case "smb":
5546
- return /* @__PURE__ */ jsx70(SMB, {});
5816
+ return /* @__PURE__ */ jsx71(SMB, {});
5547
5817
  case "smc":
5548
- return /* @__PURE__ */ jsx70(SMC, {});
5818
+ return /* @__PURE__ */ jsx71(SMC, {});
5549
5819
  case "smf":
5550
- return /* @__PURE__ */ jsx70(SMF, {});
5820
+ return /* @__PURE__ */ jsx71(SMF, {});
5551
5821
  case "sod123f":
5552
- return /* @__PURE__ */ jsx70(SOD123F, {});
5822
+ return /* @__PURE__ */ jsx71(SOD123F, {});
5553
5823
  case "sod123fl":
5554
- return /* @__PURE__ */ jsx70(SOD123FL, {});
5824
+ return /* @__PURE__ */ jsx71(SOD123FL, {});
5555
5825
  case "sod123w":
5556
- return /* @__PURE__ */ jsx70(SOD123W, {});
5826
+ return /* @__PURE__ */ jsx71(SOD123W, {});
5557
5827
  case "sod128":
5558
- return /* @__PURE__ */ jsx70(SOD128, {});
5828
+ return /* @__PURE__ */ jsx71(SOD128, {});
5559
5829
  case "sod323":
5560
- return /* @__PURE__ */ jsx70(SOD323, {});
5830
+ return /* @__PURE__ */ jsx71(SOD323, {});
5561
5831
  case "sod923":
5562
- return /* @__PURE__ */ jsx70(SOD923, {});
5832
+ return /* @__PURE__ */ jsx71(SOD923, {});
5563
5833
  case "hc49":
5564
- return /* @__PURE__ */ jsx70(HC49, {});
5834
+ return /* @__PURE__ */ jsx71(HC49, {});
5565
5835
  case "micromelf":
5566
- return /* @__PURE__ */ jsx70(MicroMELF, {});
5836
+ return /* @__PURE__ */ jsx71(MicroMELF, {});
5567
5837
  case "minimelf":
5568
- return /* @__PURE__ */ jsx70(MINIMELF, {});
5838
+ return /* @__PURE__ */ jsx71(MINIMELF, {});
5569
5839
  case "melf":
5570
- return /* @__PURE__ */ jsx70(MELF, {});
5840
+ return /* @__PURE__ */ jsx71(MELF, {});
5571
5841
  case "ms012":
5572
- return /* @__PURE__ */ jsx70(
5842
+ return /* @__PURE__ */ jsx71(
5573
5843
  MS012,
5574
5844
  {
5575
5845
  pinCount: fpJson.num_pins,
@@ -5579,7 +5849,7 @@ var Footprinter3d = ({ footprint }) => {
5579
5849
  }
5580
5850
  );
5581
5851
  case "ms013":
5582
- return /* @__PURE__ */ jsx70(
5852
+ return /* @__PURE__ */ jsx71(
5583
5853
  MS013,
5584
5854
  {
5585
5855
  pinCount: fpJson.num_pins,
@@ -5589,14 +5859,14 @@ var Footprinter3d = ({ footprint }) => {
5589
5859
  }
5590
5860
  );
5591
5861
  case "sot723":
5592
- return /* @__PURE__ */ jsx70(SOT723, {});
5862
+ return /* @__PURE__ */ jsx71(SOT723, {});
5593
5863
  case "to220":
5594
- return /* @__PURE__ */ jsx70(TO220, {});
5864
+ return /* @__PURE__ */ jsx71(TO220, {});
5595
5865
  case "to92":
5596
- return /* @__PURE__ */ jsx70(TO92, {});
5866
+ return /* @__PURE__ */ jsx71(TO92, {});
5597
5867
  case "stampboard":
5598
5868
  case "stampreceiver":
5599
- return /* @__PURE__ */ jsx70(
5869
+ return /* @__PURE__ */ jsx71(
5600
5870
  StampBoard,
5601
5871
  {
5602
5872
  bodyWidth: fpJson.w,
@@ -5620,7 +5890,7 @@ var Footprinter3d = ({ footprint }) => {
5620
5890
  const pinRow = fpJson.pinrow;
5621
5891
  const pinRowHoleEdgeToEdgeDist = fpJson.pinRowHoleEdgeToEdgeDist;
5622
5892
  const holes = Array.isArray(fpJson.holes) ? fpJson.holes : [];
5623
- return /* @__PURE__ */ jsx70(
5893
+ return /* @__PURE__ */ jsx71(
5624
5894
  MountedPcbModule,
5625
5895
  {
5626
5896
  numPins: pinRow,
@@ -5649,29 +5919,29 @@ var Footprinter3d = ({ footprint }) => {
5649
5919
  const color = colorMatch ? colorMatch[1] : void 0;
5650
5920
  switch (fpJson.imperial) {
5651
5921
  case "0402":
5652
- return /* @__PURE__ */ jsx70(A0402, { color });
5922
+ return /* @__PURE__ */ jsx71(A0402, { color });
5653
5923
  case "0603":
5654
- return /* @__PURE__ */ jsx70(A0603, { color });
5924
+ return /* @__PURE__ */ jsx71(A0603, { color });
5655
5925
  case "0805":
5656
- return /* @__PURE__ */ jsx70(A0805, { color });
5926
+ return /* @__PURE__ */ jsx71(A0805, { color });
5657
5927
  case "0201":
5658
- return /* @__PURE__ */ jsx70(A0201, { color });
5928
+ return /* @__PURE__ */ jsx71(A0201, { color });
5659
5929
  case "01005":
5660
- return /* @__PURE__ */ jsx70(A01005, { color });
5930
+ return /* @__PURE__ */ jsx71(A01005, { color });
5661
5931
  case "1206":
5662
- return /* @__PURE__ */ jsx70(A1206, { color });
5932
+ return /* @__PURE__ */ jsx71(A1206, { color });
5663
5933
  case "1210":
5664
- return /* @__PURE__ */ jsx70(A1210, { color });
5934
+ return /* @__PURE__ */ jsx71(A1210, { color });
5665
5935
  case "2010":
5666
- return /* @__PURE__ */ jsx70(A2010, { color });
5936
+ return /* @__PURE__ */ jsx71(A2010, { color });
5667
5937
  case "2512":
5668
- return /* @__PURE__ */ jsx70(A2512, { color });
5938
+ return /* @__PURE__ */ jsx71(A2512, { color });
5669
5939
  }
5670
5940
  return null;
5671
5941
  };
5672
5942
 
5673
5943
  // lib/SOT-23-3P.tsx
5674
- import { Fragment as Fragment64, jsx as jsx71, jsxs as jsxs66 } from "react/jsx-runtime";
5944
+ import { Fragment as Fragment65, jsx as jsx72, jsxs as jsxs67 } from "react/jsx-runtime";
5675
5945
  var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
5676
5946
  const bodyWidth = 1.3;
5677
5947
  const bodyLength10 = 2.9;
@@ -5682,8 +5952,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
5682
5952
  const padContactLength = 0.4;
5683
5953
  const padThickness = leadThickness / 2;
5684
5954
  const extendedBodyDistance = (fullWidth - bodyWidth) / 2 + 0.3;
5685
- return /* @__PURE__ */ jsxs66(Fragment64, { children: [
5686
- /* @__PURE__ */ jsx71(
5955
+ return /* @__PURE__ */ jsxs67(Fragment65, { children: [
5956
+ /* @__PURE__ */ jsx72(
5687
5957
  SmdChipLead,
5688
5958
  {
5689
5959
  rotation: Math.PI,
@@ -5700,7 +5970,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
5700
5970
  },
5701
5971
  1
5702
5972
  ),
5703
- /* @__PURE__ */ jsx71(
5973
+ /* @__PURE__ */ jsx72(
5704
5974
  SmdChipLead,
5705
5975
  {
5706
5976
  rotation: Math.PI,
@@ -5717,7 +5987,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
5717
5987
  },
5718
5988
  2
5719
5989
  ),
5720
- /* @__PURE__ */ jsx71(
5990
+ /* @__PURE__ */ jsx72(
5721
5991
  SmdChipLead,
5722
5992
  {
5723
5993
  position: {
@@ -5733,7 +6003,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
5733
6003
  },
5734
6004
  3
5735
6005
  ),
5736
- /* @__PURE__ */ jsx71(
6006
+ /* @__PURE__ */ jsx72(
5737
6007
  ChipBody,
5738
6008
  {
5739
6009
  center: { x: 0, y: 0, z: 0 },
@@ -5746,8 +6016,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
5746
6016
  };
5747
6017
 
5748
6018
  // lib/SOT-563.tsx
5749
- import { Cuboid as Cuboid47, Translate as Translate33, Rotate as Rotate14, Colorize as Colorize39 } from "jscad-fiber";
5750
- import { Fragment as Fragment65, jsx as jsx72, jsxs as jsxs67 } from "react/jsx-runtime";
6019
+ import { Cuboid as Cuboid48, Translate as Translate34, Rotate as Rotate15, Colorize as Colorize40 } from "jscad-fiber";
6020
+ import { Fragment as Fragment66, jsx as jsx73, jsxs as jsxs68 } from "react/jsx-runtime";
5751
6021
  var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
5752
6022
  const bodyWidth = 1.2;
5753
6023
  const bodyLength10 = 1.6;
@@ -5757,28 +6027,28 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
5757
6027
  const leadHeight = 0.13;
5758
6028
  const leadSpacing = 0.5;
5759
6029
  const bodyZOffset = -0.4;
5760
- return /* @__PURE__ */ jsxs67(Fragment65, { children: [
5761
- /* @__PURE__ */ jsx72(Rotate14, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx72(Translate33, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ jsx72(Colorize39, { color: "grey", children: /* @__PURE__ */ jsx72(Cuboid47, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
6030
+ return /* @__PURE__ */ jsxs68(Fragment66, { children: [
6031
+ /* @__PURE__ */ jsx73(Rotate15, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx73(Translate34, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ jsx73(Colorize40, { color: "grey", children: /* @__PURE__ */ jsx73(Cuboid48, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
5762
6032
  [-1, 0, 1].flatMap((yOffset, index) => [
5763
6033
  // Left lead
5764
- /* @__PURE__ */ jsx72(
5765
- Translate33,
6034
+ /* @__PURE__ */ jsx73(
6035
+ Translate34,
5766
6036
  {
5767
6037
  center: [
5768
6038
  -bodyWidth / 2 - 0.03,
5769
6039
  yOffset * leadSpacing,
5770
6040
  leadHeight / 2
5771
6041
  ],
5772
- children: /* @__PURE__ */ jsx72(Cuboid47, { size: [leadLength, leadWidth, leadHeight] })
6042
+ children: /* @__PURE__ */ jsx73(Cuboid48, { size: [leadLength, leadWidth, leadHeight] })
5773
6043
  },
5774
6044
  `left-${index}`
5775
6045
  ),
5776
6046
  // Right lead
5777
- /* @__PURE__ */ jsx72(
5778
- Translate33,
6047
+ /* @__PURE__ */ jsx73(
6048
+ Translate34,
5779
6049
  {
5780
6050
  center: [bodyWidth / 2 + 0.03, yOffset * leadSpacing, leadHeight / 2],
5781
- children: /* @__PURE__ */ jsx72(Cuboid47, { size: [leadLength, leadWidth, leadHeight] })
6051
+ children: /* @__PURE__ */ jsx73(Cuboid48, { size: [leadLength, leadWidth, leadHeight] })
5782
6052
  },
5783
6053
  `right-${index}`
5784
6054
  )
@@ -5787,7 +6057,7 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
5787
6057
  };
5788
6058
 
5789
6059
  // lib/sod-123.tsx
5790
- import { Fragment as Fragment66, jsx as jsx73, jsxs as jsxs68 } from "react/jsx-runtime";
6060
+ import { Fragment as Fragment67, jsx as jsx74, jsxs as jsxs69 } from "react/jsx-runtime";
5791
6061
  var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
5792
6062
  const bodyWidth = 2.9;
5793
6063
  const bodyLength10 = 1.3;
@@ -5798,8 +6068,8 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
5798
6068
  const padContactLength = 0.4;
5799
6069
  const padThickness = leadThickness / 2;
5800
6070
  const bodyDistance = (fullWidth - bodyWidth) / 2;
5801
- return /* @__PURE__ */ jsxs68(Fragment66, { children: [
5802
- /* @__PURE__ */ jsx73(
6071
+ return /* @__PURE__ */ jsxs69(Fragment67, { children: [
6072
+ /* @__PURE__ */ jsx74(
5803
6073
  SmdChipLead,
5804
6074
  {
5805
6075
  position: {
@@ -5815,7 +6085,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
5815
6085
  },
5816
6086
  1
5817
6087
  ),
5818
- /* @__PURE__ */ jsx73(
6088
+ /* @__PURE__ */ jsx74(
5819
6089
  SmdChipLead,
5820
6090
  {
5821
6091
  rotation: Math.PI,
@@ -5832,7 +6102,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
5832
6102
  },
5833
6103
  2
5834
6104
  ),
5835
- /* @__PURE__ */ jsx73(
6105
+ /* @__PURE__ */ jsx74(
5836
6106
  ChipBody,
5837
6107
  {
5838
6108
  center: { x: 0, y: 0, z: 0 },
@@ -5879,6 +6149,7 @@ export {
5879
6149
  PinRow,
5880
6150
  QFN,
5881
6151
  QFP,
6152
+ RJ45,
5882
6153
  SMA,
5883
6154
  SMB,
5884
6155
  SMC,