jscad-electronics 0.0.141 → 0.0.143

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,343 @@ var SmdPinHeader = ({
5312
5312
  }) });
5313
5313
  };
5314
5314
 
5315
+ // lib/Led5050.tsx
5316
+ import {
5317
+ Colorize as Colorize39,
5318
+ Cuboid as Cuboid47,
5319
+ Cylinder as Cylinder13,
5320
+ Rotate as Rotate14,
5321
+ Subtract as Subtract11,
5322
+ Translate as Translate33
5323
+ } from "jscad-fiber";
5324
+ import { Fragment as Fragment64, jsx as jsx70, jsxs as jsxs66 } from "react/jsx-runtime";
5325
+ var Led5050 = ({
5326
+ color = "#ffff00",
5327
+ bodyColor = "#ffffff",
5328
+ leadColor = "#dedede"
5329
+ }) => {
5330
+ const bodySize = 5;
5331
+ const leadSpan = 5.4;
5332
+ const bodyBottom = 0.2;
5333
+ const bodyHeight = 1.3;
5334
+ const bodyTop = bodyBottom + bodyHeight;
5335
+ const leadLength = 1.4;
5336
+ const leadWidth = 1;
5337
+ const leadThickness = 0.2;
5338
+ const leadCenterX = leadSpan / 2 - leadLength / 2;
5339
+ const lensRadius = 2;
5340
+ const lensHeight = 0.25;
5341
+ const lensTop = 1.55;
5342
+ const cornerCutDepth = 0.3;
5343
+ const leadYPositions = [-1.7, 0, 1.7];
5344
+ const leadSides = [-1, 1];
5345
+ return /* @__PURE__ */ jsxs66(Fragment64, { children: [
5346
+ leadYPositions.flatMap(
5347
+ (y) => leadSides.map((side) => /* @__PURE__ */ jsx70(
5348
+ Cuboid47,
5349
+ {
5350
+ color: leadColor,
5351
+ size: [leadLength, leadWidth, leadThickness],
5352
+ center: [side * leadCenterX, y, leadThickness / 2]
5353
+ },
5354
+ `${side}-${y}`
5355
+ ))
5356
+ ),
5357
+ /* @__PURE__ */ jsx70(Colorize39, { color: bodyColor, children: /* @__PURE__ */ jsxs66(Subtract11, { children: [
5358
+ /* @__PURE__ */ jsx70(
5359
+ ChipBody,
5360
+ {
5361
+ width: bodySize,
5362
+ length: bodySize,
5363
+ height: bodyHeight,
5364
+ heightAboveSurface: bodyBottom,
5365
+ center: { x: 0, y: 0, z: 0 },
5366
+ color: bodyColor,
5367
+ taperRatio: 0.036,
5368
+ straightHeightRatio: 0.01,
5369
+ includeNotch: false
5370
+ }
5371
+ ),
5372
+ /* @__PURE__ */ jsx70(
5373
+ Cylinder13,
5374
+ {
5375
+ radius: lensRadius,
5376
+ height: lensHeight,
5377
+ center: [0, 0, bodyTop - lensHeight / 2]
5378
+ }
5379
+ ),
5380
+ /* @__PURE__ */ jsx70(
5381
+ Translate33,
5382
+ {
5383
+ offset: [
5384
+ -bodySize / 2,
5385
+ bodySize / 2,
5386
+ bodyTop - cornerCutDepth / 2 + 5e-3
5387
+ ],
5388
+ children: /* @__PURE__ */ jsx70(Rotate14, { rotation: [0, 0, Math.PI / 4], children: /* @__PURE__ */ jsx70(Cuboid47, { size: [0.9, 0.9, cornerCutDepth + 0.01] }) })
5389
+ }
5390
+ )
5391
+ ] }) }),
5392
+ /* @__PURE__ */ jsx70(
5393
+ Cylinder13,
5394
+ {
5395
+ color,
5396
+ radius: lensRadius,
5397
+ height: lensHeight,
5398
+ center: [0, 0, lensTop - lensHeight / 2]
5399
+ }
5400
+ )
5401
+ ] });
5402
+ };
5403
+
5404
+ // lib/RJ45.tsx
5405
+ import {
5406
+ Colorize as Colorize40,
5407
+ Cuboid as Cuboid48,
5408
+ Cylinder as Cylinder14,
5409
+ Rotate as Rotate15,
5410
+ RoundedCuboid as RoundedCuboid4,
5411
+ Subtract as Subtract12,
5412
+ Translate as Translate34
5413
+ } from "jscad-fiber";
5414
+ import { Fragment as Fragment65, jsx as jsx71, jsxs as jsxs67 } from "react/jsx-runtime";
5415
+ var range2 = (length) => Array.from({ length }, (_, index) => index);
5416
+ var RJ45 = ({
5417
+ bodyWidth = 16.26,
5418
+ bodyDepth = 15.88,
5419
+ bodyHeight = 13.5,
5420
+ bodyCenterY = -0.96,
5421
+ ledPins = false,
5422
+ firstPinLeft = false,
5423
+ firstPinTop = false,
5424
+ signalPitch = 1.02,
5425
+ signalRowPitch = 1.78,
5426
+ signalHoleDiameter = 0.9144,
5427
+ shieldPinX = 8.13,
5428
+ shieldPinY = 0.13,
5429
+ shieldHoleDiameter = 1.8,
5430
+ locatorHoleX = 6.35,
5431
+ locatorHoleY = -3.43,
5432
+ locatorHoleDiameter = 3.25,
5433
+ ledPinX = 4.57,
5434
+ ledPinPitch = 2.29,
5435
+ ledPinY = 5.7,
5436
+ openingDirection,
5437
+ shellColor = "#b7bdc2",
5438
+ housingColor = "#20242a",
5439
+ contactColor = "#d6a928"
5440
+ }) => {
5441
+ const frontDirection = openingDirection ?? (bodyCenterY > 0 ? 1 : -1);
5442
+ const frontY = bodyCenterY + frontDirection * bodyDepth / 2;
5443
+ const shellThickness = Math.min(0.38, bodyWidth * 0.024);
5444
+ const openingWidth = Math.max(bodyWidth - 2.5, bodyWidth * 0.72);
5445
+ const openingHeight = Math.min(bodyHeight - 2.4, 9.6);
5446
+ const openingCenterZ = 1.3 + openingHeight / 2;
5447
+ const cavityDepth = Math.min(4.4, bodyDepth * 0.34);
5448
+ const cavityCenterY = frontY - frontDirection * cavityDepth / 2;
5449
+ const backWallY = frontY - frontDirection * (cavityDepth + shellThickness * 0.7);
5450
+ const signalLeadRadius = Math.max(
5451
+ 0.22,
5452
+ Math.min(signalHoleDiameter * 0.36, 0.38)
5453
+ );
5454
+ const signalPinPositions = range2(8).map((index) => {
5455
+ const defaultX = (3.5 - index) * signalPitch;
5456
+ const defaultY = index % 2 === 0 ? -signalRowPitch / 2 : signalRowPitch / 2;
5457
+ return {
5458
+ x: firstPinLeft ? -defaultX : defaultX,
5459
+ y: firstPinTop ? -defaultY : defaultY
5460
+ };
5461
+ });
5462
+ const ledPinPositions = [
5463
+ -ledPinX - ledPinPitch,
5464
+ -ledPinX,
5465
+ ledPinX,
5466
+ ledPinX + ledPinPitch
5467
+ ];
5468
+ const contactPitch = openingWidth / 10;
5469
+ const contactY = frontY - frontDirection * Math.max(cavityDepth * 0.48, 1.2);
5470
+ const contactZ = openingCenterZ + openingHeight * 0.18;
5471
+ const frontLipY = frontY + frontDirection * shellThickness * 0.2;
5472
+ return /* @__PURE__ */ jsxs67(Fragment65, { children: [
5473
+ /* @__PURE__ */ jsxs67(Colorize40, { color: shellColor, children: [
5474
+ /* @__PURE__ */ jsxs67(Subtract12, { children: [
5475
+ /* @__PURE__ */ jsx71(
5476
+ Cuboid48,
5477
+ {
5478
+ center: [0, bodyCenterY, bodyHeight / 2],
5479
+ size: [bodyWidth, bodyDepth, bodyHeight]
5480
+ }
5481
+ ),
5482
+ /* @__PURE__ */ jsx71(
5483
+ Cuboid48,
5484
+ {
5485
+ center: [0, cavityCenterY, openingCenterZ],
5486
+ size: [
5487
+ openingWidth,
5488
+ cavityDepth + shellThickness * 2,
5489
+ openingHeight
5490
+ ]
5491
+ }
5492
+ )
5493
+ ] }),
5494
+ /* @__PURE__ */ jsx71(
5495
+ Cuboid48,
5496
+ {
5497
+ center: [0, frontLipY, 0.72],
5498
+ size: [openingWidth + 0.5, shellThickness * 1.25, 1.05]
5499
+ }
5500
+ ),
5501
+ [-1, 1].map((direction) => /* @__PURE__ */ jsx71(
5502
+ Cuboid48,
5503
+ {
5504
+ center: [direction * shieldPinX, shieldPinY, 0.25],
5505
+ size: [
5506
+ Math.max(shieldHoleDiameter * 0.46, 0.65),
5507
+ Math.max(shieldHoleDiameter * 0.72, 1.1),
5508
+ 3.4
5509
+ ]
5510
+ },
5511
+ `shield-tab:${direction}`
5512
+ )),
5513
+ [-1, 1].map((direction) => /* @__PURE__ */ jsx71(
5514
+ Cuboid48,
5515
+ {
5516
+ center: [
5517
+ direction * bodyWidth * 0.24,
5518
+ bodyCenterY - frontDirection * bodyDepth * 0.08,
5519
+ bodyHeight + 0.04
5520
+ ],
5521
+ size: [bodyWidth * 0.22, bodyDepth * 0.42, 0.1]
5522
+ },
5523
+ `top-seam:${direction}`
5524
+ ))
5525
+ ] }),
5526
+ /* @__PURE__ */ jsxs67(Colorize40, { color: housingColor, children: [
5527
+ /* @__PURE__ */ jsxs67(Subtract12, { children: [
5528
+ /* @__PURE__ */ jsx71(
5529
+ RoundedCuboid4,
5530
+ {
5531
+ center: [0, cavityCenterY, openingCenterZ],
5532
+ size: [
5533
+ openingWidth - 0.2,
5534
+ cavityDepth + shellThickness * 0.5,
5535
+ openingHeight - 0.2
5536
+ ],
5537
+ roundRadius: 0.22
5538
+ }
5539
+ ),
5540
+ /* @__PURE__ */ jsx71(
5541
+ Cuboid48,
5542
+ {
5543
+ center: [
5544
+ 0,
5545
+ cavityCenterY - frontDirection * shellThickness * 0.2,
5546
+ openingCenterZ - 0.05
5547
+ ],
5548
+ size: [
5549
+ openingWidth - 1.25,
5550
+ cavityDepth + shellThickness,
5551
+ openingHeight - 1.35
5552
+ ]
5553
+ }
5554
+ )
5555
+ ] }),
5556
+ /* @__PURE__ */ jsx71(
5557
+ Cuboid48,
5558
+ {
5559
+ center: [0, backWallY, openingCenterZ],
5560
+ size: [openingWidth - 1.15, shellThickness, openingHeight - 1.25]
5561
+ }
5562
+ ),
5563
+ /* @__PURE__ */ jsx71(
5564
+ RoundedCuboid4,
5565
+ {
5566
+ center: [0, frontY - frontDirection * cavityDepth * 0.28, 1.55],
5567
+ size: [openingWidth - 2.6, cavityDepth * 0.5, 1.15],
5568
+ roundRadius: 0.16
5569
+ }
5570
+ ),
5571
+ [-1, 1].map((direction) => /* @__PURE__ */ jsx71(
5572
+ Cylinder14,
5573
+ {
5574
+ center: [direction * locatorHoleX, locatorHoleY, -0.25],
5575
+ radius: Math.max(locatorHoleDiameter * 0.41, 0.65),
5576
+ height: 2.7
5577
+ },
5578
+ `locator:${direction}`
5579
+ ))
5580
+ ] }),
5581
+ /* @__PURE__ */ jsxs67(Colorize40, { color: contactColor, children: [
5582
+ signalPinPositions.map(({ x, y }, index) => /* @__PURE__ */ jsx71(
5583
+ Cylinder14,
5584
+ {
5585
+ center: [x, y, 0.15],
5586
+ radius: signalLeadRadius,
5587
+ height: 3.1
5588
+ },
5589
+ `signal-lead:${index}`
5590
+ )),
5591
+ range2(8).map((index) => /* @__PURE__ */ jsx71(
5592
+ Translate34,
5593
+ {
5594
+ offset: [
5595
+ (index - 3.5) * contactPitch,
5596
+ contactY,
5597
+ contactZ + (index % 2 === 0 ? 0.03 : -0.03)
5598
+ ],
5599
+ children: /* @__PURE__ */ jsx71(Rotate15, { rotation: [frontDirection * 0.2, 0, 0], children: /* @__PURE__ */ jsx71(
5600
+ RoundedCuboid4,
5601
+ {
5602
+ size: [Math.max(contactPitch * 0.28, 0.28), 3.25, 0.16],
5603
+ roundRadius: 0.05
5604
+ }
5605
+ ) })
5606
+ },
5607
+ `socket-contact:${index}`
5608
+ )),
5609
+ ledPins && ledPinPositions.map((x, index) => /* @__PURE__ */ jsx71(
5610
+ Cylinder14,
5611
+ {
5612
+ center: [x, ledPinY, 0.15],
5613
+ radius: signalLeadRadius,
5614
+ height: 3.1
5615
+ },
5616
+ `led-lead:${index}`
5617
+ ))
5618
+ ] }),
5619
+ ledPins && /* @__PURE__ */ jsxs67(Fragment65, { children: [
5620
+ /* @__PURE__ */ jsx71(
5621
+ RoundedCuboid4,
5622
+ {
5623
+ color: "#73b744",
5624
+ center: [
5625
+ -bodyWidth / 2 + 2.05,
5626
+ frontY + frontDirection * shellThickness * 0.35,
5627
+ bodyHeight - 2.05
5628
+ ],
5629
+ size: [2.15, shellThickness * 1.55, 1.45],
5630
+ roundRadius: 0.18
5631
+ }
5632
+ ),
5633
+ /* @__PURE__ */ jsx71(
5634
+ RoundedCuboid4,
5635
+ {
5636
+ color: "#e0aa35",
5637
+ center: [
5638
+ bodyWidth / 2 - 2.05,
5639
+ frontY + frontDirection * shellThickness * 0.35,
5640
+ bodyHeight - 2.05
5641
+ ],
5642
+ size: [2.15, shellThickness * 1.55, 1.45],
5643
+ roundRadius: 0.18
5644
+ }
5645
+ )
5646
+ ] })
5647
+ ] });
5648
+ };
5649
+
5315
5650
  // lib/Footprinter3d.tsx
5316
- import { jsx as jsx70 } from "react/jsx-runtime";
5651
+ import { jsx as jsx72 } from "react/jsx-runtime";
5317
5652
  var Footprinter3d = ({ footprint }) => {
5318
5653
  let normalizedFootprint = footprint;
5319
5654
  if (footprint.startsWith("jstzh1_5mm")) {
@@ -5322,13 +5657,15 @@ var Footprinter3d = ({ footprint }) => {
5322
5657
  normalizedFootprint = `zh${numPins}`;
5323
5658
  }
5324
5659
  const fpJson = fp3.string(normalizedFootprint).json();
5660
+ const colorMatch = footprint.match(/_color\(([^)]+)\)/);
5661
+ const color = colorMatch ? colorMatch[1] : void 0;
5325
5662
  switch (fpJson.fn) {
5326
5663
  case "dip":
5327
- return /* @__PURE__ */ jsx70(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
5664
+ return /* @__PURE__ */ jsx72(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
5328
5665
  case "axial":
5329
- return /* @__PURE__ */ jsx70(AxialCapacitor, { pitch: fpJson.p });
5666
+ return /* @__PURE__ */ jsx72(AxialCapacitor, { pitch: fpJson.p });
5330
5667
  case "tssop":
5331
- return /* @__PURE__ */ jsx70(
5668
+ return /* @__PURE__ */ jsx72(
5332
5669
  Tssop,
5333
5670
  {
5334
5671
  pinCount: fpJson.num_pins,
@@ -5339,7 +5676,7 @@ var Footprinter3d = ({ footprint }) => {
5339
5676
  }
5340
5677
  );
5341
5678
  case "msop":
5342
- return /* @__PURE__ */ jsx70(
5679
+ return /* @__PURE__ */ jsx72(
5343
5680
  MSOP,
5344
5681
  {
5345
5682
  pinCount: fpJson.num_pins,
@@ -5350,7 +5687,7 @@ var Footprinter3d = ({ footprint }) => {
5350
5687
  }
5351
5688
  );
5352
5689
  case "vssop":
5353
- return /* @__PURE__ */ jsx70(
5690
+ return /* @__PURE__ */ jsx72(
5354
5691
  VSSOP,
5355
5692
  {
5356
5693
  pinCount: fpJson.num_pins,
@@ -5362,7 +5699,7 @@ var Footprinter3d = ({ footprint }) => {
5362
5699
  }
5363
5700
  );
5364
5701
  case "qfp":
5365
- return /* @__PURE__ */ jsx70(
5702
+ return /* @__PURE__ */ jsx72(
5366
5703
  QFP,
5367
5704
  {
5368
5705
  pinCount: fpJson.num_pins,
@@ -5373,12 +5710,12 @@ var Footprinter3d = ({ footprint }) => {
5373
5710
  }
5374
5711
  );
5375
5712
  case "tqfp":
5376
- return /* @__PURE__ */ jsx70(tqfp_default, {});
5713
+ return /* @__PURE__ */ jsx72(tqfp_default, {});
5377
5714
  case "lqfp":
5378
- return /* @__PURE__ */ jsx70(LQFP, { pinCount: fpJson.num_pins });
5715
+ return /* @__PURE__ */ jsx72(LQFP, { pinCount: fpJson.num_pins });
5379
5716
  case "qfn": {
5380
5717
  const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
5381
- return /* @__PURE__ */ jsx70(
5718
+ return /* @__PURE__ */ jsx72(
5382
5719
  qfn_default,
5383
5720
  {
5384
5721
  num_pins: fpJson.num_pins,
@@ -5396,7 +5733,7 @@ var Footprinter3d = ({ footprint }) => {
5396
5733
  }
5397
5734
  case "dfn": {
5398
5735
  const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
5399
- return /* @__PURE__ */ jsx70(
5736
+ return /* @__PURE__ */ jsx72(
5400
5737
  DFN,
5401
5738
  {
5402
5739
  num_pins: fpJson.num_pins,
@@ -5416,7 +5753,7 @@ var Footprinter3d = ({ footprint }) => {
5416
5753
  const rowsMatch = footprint.match(/_rows(\d+)/);
5417
5754
  const rows = rowsMatch && rowsMatch[1] ? parseInt(rowsMatch[1], 10) : 1;
5418
5755
  if (fpJson.male)
5419
- return /* @__PURE__ */ jsx70(
5756
+ return /* @__PURE__ */ jsx72(
5420
5757
  PinRow,
5421
5758
  {
5422
5759
  numberOfPins: fpJson.num_pins,
@@ -5429,7 +5766,7 @@ var Footprinter3d = ({ footprint }) => {
5429
5766
  }
5430
5767
  );
5431
5768
  if (fpJson.female)
5432
- return /* @__PURE__ */ jsx70(
5769
+ return /* @__PURE__ */ jsx72(
5433
5770
  FemaleHeaderRow,
5434
5771
  {
5435
5772
  numberOfPins: fpJson.num_pins,
@@ -5439,7 +5776,7 @@ var Footprinter3d = ({ footprint }) => {
5439
5776
  );
5440
5777
  }
5441
5778
  case "smdpinheader":
5442
- return /* @__PURE__ */ jsx70(
5779
+ return /* @__PURE__ */ jsx72(
5443
5780
  SmdPinHeader,
5444
5781
  {
5445
5782
  numberOfPins: fpJson.num_pins,
@@ -5447,50 +5784,52 @@ var Footprinter3d = ({ footprint }) => {
5447
5784
  bodyWidth: fpJson.bh
5448
5785
  }
5449
5786
  );
5787
+ case "led5050":
5788
+ return /* @__PURE__ */ jsx72(Led5050, { color });
5450
5789
  case "cap": {
5451
5790
  switch (fpJson.imperial) {
5452
5791
  case "0402":
5453
- return /* @__PURE__ */ jsx70(A0402, { color: "#856c4d" });
5792
+ return /* @__PURE__ */ jsx72(A0402, { color: "#856c4d" });
5454
5793
  case "0603":
5455
- return /* @__PURE__ */ jsx70(A0603, { color: "#856c4d" });
5794
+ return /* @__PURE__ */ jsx72(A0603, { color: "#856c4d" });
5456
5795
  case "0805":
5457
- return /* @__PURE__ */ jsx70(A0805, { color: "#856c4d" });
5796
+ return /* @__PURE__ */ jsx72(A0805, { color: "#856c4d" });
5458
5797
  case "0201":
5459
- return /* @__PURE__ */ jsx70(A0201, { color: "#856c4d" });
5798
+ return /* @__PURE__ */ jsx72(A0201, { color: "#856c4d" });
5460
5799
  case "01005":
5461
- return /* @__PURE__ */ jsx70(A01005, { color: "#856c4d" });
5800
+ return /* @__PURE__ */ jsx72(A01005, { color: "#856c4d" });
5462
5801
  case "1206":
5463
- return /* @__PURE__ */ jsx70(A1206, { color: "#856c4d" });
5802
+ return /* @__PURE__ */ jsx72(A1206, { color: "#856c4d" });
5464
5803
  case "1210":
5465
- return /* @__PURE__ */ jsx70(A1210, { color: "#856c4d" });
5804
+ return /* @__PURE__ */ jsx72(A1210, { color: "#856c4d" });
5466
5805
  case "2010":
5467
- return /* @__PURE__ */ jsx70(A2010, { color: "#856c4d" });
5806
+ return /* @__PURE__ */ jsx72(A2010, { color: "#856c4d" });
5468
5807
  case "2512":
5469
- return /* @__PURE__ */ jsx70(A2512, { color: "#856c4d" });
5808
+ return /* @__PURE__ */ jsx72(A2512, { color: "#856c4d" });
5470
5809
  }
5471
5810
  }
5472
5811
  case "sot235":
5473
- return /* @__PURE__ */ jsx70(SOT_235_default, {});
5812
+ return /* @__PURE__ */ jsx72(SOT_235_default, {});
5474
5813
  case "sot457":
5475
- return /* @__PURE__ */ jsx70(SOT457, {});
5814
+ return /* @__PURE__ */ jsx72(SOT457, {});
5476
5815
  case "sot223":
5477
- return /* @__PURE__ */ jsx70(SOT223, {});
5816
+ return /* @__PURE__ */ jsx72(SOT223, {});
5478
5817
  case "sot23w":
5479
- return /* @__PURE__ */ jsx70(SOT23W, {});
5818
+ return /* @__PURE__ */ jsx72(SOT23W, {});
5480
5819
  case "sot323":
5481
- return /* @__PURE__ */ jsx70(SOT323, {});
5820
+ return /* @__PURE__ */ jsx72(SOT323, {});
5482
5821
  case "sod323f":
5483
- return /* @__PURE__ */ jsx70(SOD323F, {});
5822
+ return /* @__PURE__ */ jsx72(SOD323F, {});
5484
5823
  case "sod323fl":
5485
- return /* @__PURE__ */ jsx70(SOD323FL, {});
5824
+ return /* @__PURE__ */ jsx72(SOD323FL, {});
5486
5825
  case "sot363":
5487
- return /* @__PURE__ */ jsx70(SOT_363_default, {});
5826
+ return /* @__PURE__ */ jsx72(SOT_363_default, {});
5488
5827
  case "sot886":
5489
- return /* @__PURE__ */ jsx70(SOT886, {});
5828
+ return /* @__PURE__ */ jsx72(SOT886, {});
5490
5829
  case "sot963":
5491
- return /* @__PURE__ */ jsx70(SOT963, {});
5830
+ return /* @__PURE__ */ jsx72(SOT963, {});
5492
5831
  case "pushbutton":
5493
- return /* @__PURE__ */ jsx70(
5832
+ return /* @__PURE__ */ jsx72(
5494
5833
  PushButton,
5495
5834
  {
5496
5835
  width: fpJson.w,
@@ -5500,11 +5839,11 @@ var Footprinter3d = ({ footprint }) => {
5500
5839
  );
5501
5840
  case "jst":
5502
5841
  if (fpJson.zh) {
5503
- return /* @__PURE__ */ jsx70(JSTZH1_5mm, { numPins: fpJson.num_pins });
5842
+ return /* @__PURE__ */ jsx72(JSTZH1_5mm, { numPins: fpJson.num_pins });
5504
5843
  }
5505
5844
  break;
5506
5845
  case "fpc":
5507
- return /* @__PURE__ */ jsx70(
5846
+ return /* @__PURE__ */ jsx72(
5508
5847
  FPC,
5509
5848
  {
5510
5849
  pinCount: fpJson.num_pins,
@@ -5523,8 +5862,32 @@ var Footprinter3d = ({ footprint }) => {
5523
5862
  mountPadLength: fpJson.mpl
5524
5863
  }
5525
5864
  );
5865
+ case "rj45":
5866
+ return /* @__PURE__ */ jsx72(
5867
+ RJ45,
5868
+ {
5869
+ bodyWidth: fpJson.w,
5870
+ bodyDepth: fpJson.h,
5871
+ bodyCenterY: fpJson.bodyy,
5872
+ ledPins: fpJson.ledpins || fpJson.num_pins === 14,
5873
+ firstPinLeft: fpJson.firstpinleft,
5874
+ firstPinTop: fpJson.firstpintop,
5875
+ signalPitch: fpJson.p,
5876
+ signalRowPitch: fpJson.py,
5877
+ signalHoleDiameter: fpJson.id,
5878
+ shieldPinX: fpJson.shieldx,
5879
+ shieldPinY: fpJson.shieldy,
5880
+ shieldHoleDiameter: fpJson.shieldid,
5881
+ locatorHoleX: fpJson.holex,
5882
+ locatorHoleY: fpJson.holey,
5883
+ locatorHoleDiameter: fpJson.holed,
5884
+ ledPinX: fpJson.ledx,
5885
+ ledPinPitch: fpJson.ledp,
5886
+ ledPinY: fpJson.ledy
5887
+ }
5888
+ );
5526
5889
  case "soic":
5527
- return /* @__PURE__ */ jsx70(
5890
+ return /* @__PURE__ */ jsx72(
5528
5891
  SOIC,
5529
5892
  {
5530
5893
  pinCount: fpJson.num_pins,
@@ -5535,41 +5898,41 @@ var Footprinter3d = ({ footprint }) => {
5535
5898
  }
5536
5899
  );
5537
5900
  case "sod523":
5538
- return /* @__PURE__ */ jsx70(SOD523, {});
5901
+ return /* @__PURE__ */ jsx72(SOD523, {});
5539
5902
  case "sod723":
5540
- return /* @__PURE__ */ jsx70(SOD723_default, {});
5903
+ return /* @__PURE__ */ jsx72(SOD723_default, {});
5541
5904
  case "sod882":
5542
- return /* @__PURE__ */ jsx70(SOD882, {});
5905
+ return /* @__PURE__ */ jsx72(SOD882, {});
5543
5906
  case "sma":
5544
- return /* @__PURE__ */ jsx70(SMA, {});
5907
+ return /* @__PURE__ */ jsx72(SMA, {});
5545
5908
  case "smb":
5546
- return /* @__PURE__ */ jsx70(SMB, {});
5909
+ return /* @__PURE__ */ jsx72(SMB, {});
5547
5910
  case "smc":
5548
- return /* @__PURE__ */ jsx70(SMC, {});
5911
+ return /* @__PURE__ */ jsx72(SMC, {});
5549
5912
  case "smf":
5550
- return /* @__PURE__ */ jsx70(SMF, {});
5913
+ return /* @__PURE__ */ jsx72(SMF, {});
5551
5914
  case "sod123f":
5552
- return /* @__PURE__ */ jsx70(SOD123F, {});
5915
+ return /* @__PURE__ */ jsx72(SOD123F, {});
5553
5916
  case "sod123fl":
5554
- return /* @__PURE__ */ jsx70(SOD123FL, {});
5917
+ return /* @__PURE__ */ jsx72(SOD123FL, {});
5555
5918
  case "sod123w":
5556
- return /* @__PURE__ */ jsx70(SOD123W, {});
5919
+ return /* @__PURE__ */ jsx72(SOD123W, {});
5557
5920
  case "sod128":
5558
- return /* @__PURE__ */ jsx70(SOD128, {});
5921
+ return /* @__PURE__ */ jsx72(SOD128, {});
5559
5922
  case "sod323":
5560
- return /* @__PURE__ */ jsx70(SOD323, {});
5923
+ return /* @__PURE__ */ jsx72(SOD323, {});
5561
5924
  case "sod923":
5562
- return /* @__PURE__ */ jsx70(SOD923, {});
5925
+ return /* @__PURE__ */ jsx72(SOD923, {});
5563
5926
  case "hc49":
5564
- return /* @__PURE__ */ jsx70(HC49, {});
5927
+ return /* @__PURE__ */ jsx72(HC49, {});
5565
5928
  case "micromelf":
5566
- return /* @__PURE__ */ jsx70(MicroMELF, {});
5929
+ return /* @__PURE__ */ jsx72(MicroMELF, {});
5567
5930
  case "minimelf":
5568
- return /* @__PURE__ */ jsx70(MINIMELF, {});
5931
+ return /* @__PURE__ */ jsx72(MINIMELF, {});
5569
5932
  case "melf":
5570
- return /* @__PURE__ */ jsx70(MELF, {});
5933
+ return /* @__PURE__ */ jsx72(MELF, {});
5571
5934
  case "ms012":
5572
- return /* @__PURE__ */ jsx70(
5935
+ return /* @__PURE__ */ jsx72(
5573
5936
  MS012,
5574
5937
  {
5575
5938
  pinCount: fpJson.num_pins,
@@ -5579,7 +5942,7 @@ var Footprinter3d = ({ footprint }) => {
5579
5942
  }
5580
5943
  );
5581
5944
  case "ms013":
5582
- return /* @__PURE__ */ jsx70(
5945
+ return /* @__PURE__ */ jsx72(
5583
5946
  MS013,
5584
5947
  {
5585
5948
  pinCount: fpJson.num_pins,
@@ -5589,14 +5952,14 @@ var Footprinter3d = ({ footprint }) => {
5589
5952
  }
5590
5953
  );
5591
5954
  case "sot723":
5592
- return /* @__PURE__ */ jsx70(SOT723, {});
5955
+ return /* @__PURE__ */ jsx72(SOT723, {});
5593
5956
  case "to220":
5594
- return /* @__PURE__ */ jsx70(TO220, {});
5957
+ return /* @__PURE__ */ jsx72(TO220, {});
5595
5958
  case "to92":
5596
- return /* @__PURE__ */ jsx70(TO92, {});
5959
+ return /* @__PURE__ */ jsx72(TO92, {});
5597
5960
  case "stampboard":
5598
5961
  case "stampreceiver":
5599
- return /* @__PURE__ */ jsx70(
5962
+ return /* @__PURE__ */ jsx72(
5600
5963
  StampBoard,
5601
5964
  {
5602
5965
  bodyWidth: fpJson.w,
@@ -5620,7 +5983,7 @@ var Footprinter3d = ({ footprint }) => {
5620
5983
  const pinRow = fpJson.pinrow;
5621
5984
  const pinRowHoleEdgeToEdgeDist = fpJson.pinRowHoleEdgeToEdgeDist;
5622
5985
  const holes = Array.isArray(fpJson.holes) ? fpJson.holes : [];
5623
- return /* @__PURE__ */ jsx70(
5986
+ return /* @__PURE__ */ jsx72(
5624
5987
  MountedPcbModule,
5625
5988
  {
5626
5989
  numPins: pinRow,
@@ -5645,33 +6008,31 @@ var Footprinter3d = ({ footprint }) => {
5645
6008
  );
5646
6009
  }
5647
6010
  }
5648
- const colorMatch = footprint.match(/_color\(([^)]+)\)/);
5649
- const color = colorMatch ? colorMatch[1] : void 0;
5650
6011
  switch (fpJson.imperial) {
5651
6012
  case "0402":
5652
- return /* @__PURE__ */ jsx70(A0402, { color });
6013
+ return /* @__PURE__ */ jsx72(A0402, { color });
5653
6014
  case "0603":
5654
- return /* @__PURE__ */ jsx70(A0603, { color });
6015
+ return /* @__PURE__ */ jsx72(A0603, { color });
5655
6016
  case "0805":
5656
- return /* @__PURE__ */ jsx70(A0805, { color });
6017
+ return /* @__PURE__ */ jsx72(A0805, { color });
5657
6018
  case "0201":
5658
- return /* @__PURE__ */ jsx70(A0201, { color });
6019
+ return /* @__PURE__ */ jsx72(A0201, { color });
5659
6020
  case "01005":
5660
- return /* @__PURE__ */ jsx70(A01005, { color });
6021
+ return /* @__PURE__ */ jsx72(A01005, { color });
5661
6022
  case "1206":
5662
- return /* @__PURE__ */ jsx70(A1206, { color });
6023
+ return /* @__PURE__ */ jsx72(A1206, { color });
5663
6024
  case "1210":
5664
- return /* @__PURE__ */ jsx70(A1210, { color });
6025
+ return /* @__PURE__ */ jsx72(A1210, { color });
5665
6026
  case "2010":
5666
- return /* @__PURE__ */ jsx70(A2010, { color });
6027
+ return /* @__PURE__ */ jsx72(A2010, { color });
5667
6028
  case "2512":
5668
- return /* @__PURE__ */ jsx70(A2512, { color });
6029
+ return /* @__PURE__ */ jsx72(A2512, { color });
5669
6030
  }
5670
6031
  return null;
5671
6032
  };
5672
6033
 
5673
6034
  // lib/SOT-23-3P.tsx
5674
- import { Fragment as Fragment64, jsx as jsx71, jsxs as jsxs66 } from "react/jsx-runtime";
6035
+ import { Fragment as Fragment66, jsx as jsx73, jsxs as jsxs68 } from "react/jsx-runtime";
5675
6036
  var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
5676
6037
  const bodyWidth = 1.3;
5677
6038
  const bodyLength10 = 2.9;
@@ -5682,8 +6043,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
5682
6043
  const padContactLength = 0.4;
5683
6044
  const padThickness = leadThickness / 2;
5684
6045
  const extendedBodyDistance = (fullWidth - bodyWidth) / 2 + 0.3;
5685
- return /* @__PURE__ */ jsxs66(Fragment64, { children: [
5686
- /* @__PURE__ */ jsx71(
6046
+ return /* @__PURE__ */ jsxs68(Fragment66, { children: [
6047
+ /* @__PURE__ */ jsx73(
5687
6048
  SmdChipLead,
5688
6049
  {
5689
6050
  rotation: Math.PI,
@@ -5700,7 +6061,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
5700
6061
  },
5701
6062
  1
5702
6063
  ),
5703
- /* @__PURE__ */ jsx71(
6064
+ /* @__PURE__ */ jsx73(
5704
6065
  SmdChipLead,
5705
6066
  {
5706
6067
  rotation: Math.PI,
@@ -5717,7 +6078,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
5717
6078
  },
5718
6079
  2
5719
6080
  ),
5720
- /* @__PURE__ */ jsx71(
6081
+ /* @__PURE__ */ jsx73(
5721
6082
  SmdChipLead,
5722
6083
  {
5723
6084
  position: {
@@ -5733,7 +6094,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
5733
6094
  },
5734
6095
  3
5735
6096
  ),
5736
- /* @__PURE__ */ jsx71(
6097
+ /* @__PURE__ */ jsx73(
5737
6098
  ChipBody,
5738
6099
  {
5739
6100
  center: { x: 0, y: 0, z: 0 },
@@ -5746,8 +6107,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
5746
6107
  };
5747
6108
 
5748
6109
  // 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";
6110
+ import { Cuboid as Cuboid49, Translate as Translate35, Rotate as Rotate16, Colorize as Colorize41 } from "jscad-fiber";
6111
+ import { Fragment as Fragment67, jsx as jsx74, jsxs as jsxs69 } from "react/jsx-runtime";
5751
6112
  var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
5752
6113
  const bodyWidth = 1.2;
5753
6114
  const bodyLength10 = 1.6;
@@ -5757,28 +6118,28 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
5757
6118
  const leadHeight = 0.13;
5758
6119
  const leadSpacing = 0.5;
5759
6120
  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] }) }) }) }),
6121
+ return /* @__PURE__ */ jsxs69(Fragment67, { children: [
6122
+ /* @__PURE__ */ jsx74(Rotate16, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx74(Translate35, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ jsx74(Colorize41, { color: "grey", children: /* @__PURE__ */ jsx74(Cuboid49, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
5762
6123
  [-1, 0, 1].flatMap((yOffset, index) => [
5763
6124
  // Left lead
5764
- /* @__PURE__ */ jsx72(
5765
- Translate33,
6125
+ /* @__PURE__ */ jsx74(
6126
+ Translate35,
5766
6127
  {
5767
6128
  center: [
5768
6129
  -bodyWidth / 2 - 0.03,
5769
6130
  yOffset * leadSpacing,
5770
6131
  leadHeight / 2
5771
6132
  ],
5772
- children: /* @__PURE__ */ jsx72(Cuboid47, { size: [leadLength, leadWidth, leadHeight] })
6133
+ children: /* @__PURE__ */ jsx74(Cuboid49, { size: [leadLength, leadWidth, leadHeight] })
5773
6134
  },
5774
6135
  `left-${index}`
5775
6136
  ),
5776
6137
  // Right lead
5777
- /* @__PURE__ */ jsx72(
5778
- Translate33,
6138
+ /* @__PURE__ */ jsx74(
6139
+ Translate35,
5779
6140
  {
5780
6141
  center: [bodyWidth / 2 + 0.03, yOffset * leadSpacing, leadHeight / 2],
5781
- children: /* @__PURE__ */ jsx72(Cuboid47, { size: [leadLength, leadWidth, leadHeight] })
6142
+ children: /* @__PURE__ */ jsx74(Cuboid49, { size: [leadLength, leadWidth, leadHeight] })
5782
6143
  },
5783
6144
  `right-${index}`
5784
6145
  )
@@ -5787,7 +6148,7 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
5787
6148
  };
5788
6149
 
5789
6150
  // lib/sod-123.tsx
5790
- import { Fragment as Fragment66, jsx as jsx73, jsxs as jsxs68 } from "react/jsx-runtime";
6151
+ import { Fragment as Fragment68, jsx as jsx75, jsxs as jsxs70 } from "react/jsx-runtime";
5791
6152
  var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
5792
6153
  const bodyWidth = 2.9;
5793
6154
  const bodyLength10 = 1.3;
@@ -5798,8 +6159,8 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
5798
6159
  const padContactLength = 0.4;
5799
6160
  const padThickness = leadThickness / 2;
5800
6161
  const bodyDistance = (fullWidth - bodyWidth) / 2;
5801
- return /* @__PURE__ */ jsxs68(Fragment66, { children: [
5802
- /* @__PURE__ */ jsx73(
6162
+ return /* @__PURE__ */ jsxs70(Fragment68, { children: [
6163
+ /* @__PURE__ */ jsx75(
5803
6164
  SmdChipLead,
5804
6165
  {
5805
6166
  position: {
@@ -5815,7 +6176,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
5815
6176
  },
5816
6177
  1
5817
6178
  ),
5818
- /* @__PURE__ */ jsx73(
6179
+ /* @__PURE__ */ jsx75(
5819
6180
  SmdChipLead,
5820
6181
  {
5821
6182
  rotation: Math.PI,
@@ -5832,7 +6193,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
5832
6193
  },
5833
6194
  2
5834
6195
  ),
5835
- /* @__PURE__ */ jsx73(
6196
+ /* @__PURE__ */ jsx75(
5836
6197
  ChipBody,
5837
6198
  {
5838
6199
  center: { x: 0, y: 0, z: 0 },
@@ -5868,6 +6229,7 @@ export {
5868
6229
  HC49,
5869
6230
  JSTZH1_5mm,
5870
6231
  LQFP,
6232
+ Led5050,
5871
6233
  MELF,
5872
6234
  MINIMELF,
5873
6235
  MS012,
@@ -5879,6 +6241,7 @@ export {
5879
6241
  PinRow,
5880
6242
  QFN,
5881
6243
  QFP,
6244
+ RJ45,
5882
6245
  SMA,
5883
6246
  SMB,
5884
6247
  SMC,