jscad-electronics 0.0.89 → 0.0.91

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
@@ -2659,40 +2659,67 @@ var LQFP = ({
2659
2659
  };
2660
2660
 
2661
2661
  // lib/SOT-723.tsx
2662
- import { Cuboid as Cuboid27, Translate as Translate18, Rotate as Rotate6, Colorize as Colorize19 } from "jscad-fiber";
2662
+ import { Cuboid as Cuboid27, Translate as Translate18, Colorize as Colorize19, Hull as Hull13, Union as Union14 } from "jscad-fiber";
2663
2663
  import { Fragment as Fragment36, jsx as jsx40, jsxs as jsxs38 } from "react/jsx-runtime";
2664
- var getCcwSot723Coords = (pn) => {
2665
- if (pn === 1) {
2666
- return { x: 0, y: 0 };
2667
- } else if (pn === 2) {
2668
- return { x: 1, y: -0.4 };
2669
- } else {
2670
- return { x: 1, y: 0.4 };
2671
- }
2672
- };
2673
2664
  var SOT723 = () => {
2674
- const bodyWidth = 0.8;
2665
+ const bodyWidth = 0.85;
2675
2666
  const bodyLength10 = 1.2;
2676
- const bodyHeight = 0.5;
2677
- const leadWidth = 0.32;
2678
- const leadLength = 0.3;
2679
- const leadHeight = 0.1;
2680
- const centerLeadWidth = 0.42;
2667
+ const bodyHeight = 0.38;
2668
+ const straightHeight = bodyHeight * 0.55;
2669
+ const taperOffset = 0.1;
2670
+ const padLength = 0.3;
2671
+ const padThickness = 0.1;
2672
+ const leftPadWidth = 0.2;
2673
+ const rightPadWidth = 0.25;
2674
+ const rightPadCenterX = 0.55;
2675
+ const rightPadCenterY = 0;
2676
+ const leftTopPadCenterX = -0.55;
2677
+ const leftTopPadCenterY = 0.4;
2678
+ const leftBottomPadCenterX = -0.55;
2679
+ const leftBottomPadCenterY = -0.4;
2681
2680
  return /* @__PURE__ */ jsxs38(Fragment36, { children: [
2682
- /* @__PURE__ */ jsx40(Rotate6, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx40(Translate18, { center: [0.475, leadHeight / 2, -0.25], children: /* @__PURE__ */ jsx40(Colorize19, { color: "grey", children: /* @__PURE__ */ jsx40(Cuboid27, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
2683
- [1, 2, 3].map((pn) => {
2684
- const { x, y } = getCcwSot723Coords(pn);
2685
- return /* @__PURE__ */ jsx40(Translate18, { center: [x, y, 0.05], children: /* @__PURE__ */ jsx40(
2681
+ /* @__PURE__ */ jsx40(Colorize19, { color: "#222", children: /* @__PURE__ */ jsxs38(Union14, { children: [
2682
+ /* @__PURE__ */ jsx40(
2686
2683
  Cuboid27,
2687
2684
  {
2688
- size: [
2689
- leadLength,
2690
- pn === 1 ? centerLeadWidth : leadWidth,
2691
- leadHeight
2692
- ]
2685
+ size: [bodyWidth, bodyLength10, straightHeight],
2686
+ center: [0, 0, straightHeight / 2]
2693
2687
  }
2694
- ) }, `lead-${pn}`);
2695
- })
2688
+ ),
2689
+ /* @__PURE__ */ jsxs38(Hull13, { children: [
2690
+ /* @__PURE__ */ jsx40(Translate18, { z: straightHeight, children: /* @__PURE__ */ jsx40(Cuboid27, { size: [bodyWidth, bodyLength10, 0.01] }) }),
2691
+ /* @__PURE__ */ jsx40(Translate18, { z: bodyHeight, children: /* @__PURE__ */ jsx40(
2692
+ Cuboid27,
2693
+ {
2694
+ size: [bodyWidth - taperOffset, bodyLength10 - taperOffset, 0.01]
2695
+ }
2696
+ ) })
2697
+ ] })
2698
+ ] }) }),
2699
+ /* @__PURE__ */ jsx40(
2700
+ Cuboid27,
2701
+ {
2702
+ color: "#ccc",
2703
+ size: [padLength, rightPadWidth, padThickness],
2704
+ center: [rightPadCenterX, rightPadCenterY, padThickness / 2]
2705
+ }
2706
+ ),
2707
+ /* @__PURE__ */ jsx40(
2708
+ Cuboid27,
2709
+ {
2710
+ color: "#ccc",
2711
+ size: [padLength, leftPadWidth, padThickness],
2712
+ center: [leftTopPadCenterX, leftTopPadCenterY, padThickness / 2]
2713
+ }
2714
+ ),
2715
+ /* @__PURE__ */ jsx40(
2716
+ Cuboid27,
2717
+ {
2718
+ color: "#ccc",
2719
+ size: [padLength, leftPadWidth, padThickness],
2720
+ center: [leftBottomPadCenterX, leftBottomPadCenterY, padThickness / 2]
2721
+ }
2722
+ )
2696
2723
  ] });
2697
2724
  };
2698
2725
 
@@ -2767,7 +2794,7 @@ var DFN = ({
2767
2794
  };
2768
2795
 
2769
2796
  // lib/hc49.tsx
2770
- import { Colorize as Colorize20, Cylinder as Cylinder6, Hull as Hull13, RoundedCylinder } from "jscad-fiber";
2797
+ import { Colorize as Colorize20, Cylinder as Cylinder6, Hull as Hull14, RoundedCylinder } from "jscad-fiber";
2771
2798
  import { Fragment as Fragment38, jsx as jsx42, jsxs as jsxs40 } from "react/jsx-runtime";
2772
2799
  var HC49 = ({
2773
2800
  bodyLength: bodyLength10 = 10.2,
@@ -2786,7 +2813,7 @@ var HC49 = ({
2786
2813
  const baseHeight = 0.85;
2787
2814
  return /* @__PURE__ */ jsxs40(Fragment38, { children: [
2788
2815
  /* @__PURE__ */ jsxs40(Colorize20, { color, children: [
2789
- /* @__PURE__ */ jsxs40(Hull13, { children: [
2816
+ /* @__PURE__ */ jsxs40(Hull14, { children: [
2790
2817
  /* @__PURE__ */ jsx42(
2791
2818
  RoundedCylinder,
2792
2819
  {
@@ -2806,7 +2833,7 @@ var HC49 = ({
2806
2833
  }
2807
2834
  )
2808
2835
  ] }),
2809
- /* @__PURE__ */ jsxs40(Hull13, { children: [
2836
+ /* @__PURE__ */ jsxs40(Hull14, { children: [
2810
2837
  /* @__PURE__ */ jsx42(
2811
2838
  RoundedCylinder,
2812
2839
  {
@@ -2853,7 +2880,7 @@ import {
2853
2880
  Colorize as Colorize21,
2854
2881
  Cylinder as Cylinder7,
2855
2882
  RoundedCylinder as RoundedCylinder2,
2856
- Rotate as Rotate7,
2883
+ Rotate as Rotate6,
2857
2884
  RoundedCuboid as RoundedCuboid2
2858
2885
  } from "jscad-fiber";
2859
2886
  import { Fragment as Fragment39, jsx as jsx43, jsxs as jsxs41 } from "react/jsx-runtime";
@@ -2866,7 +2893,7 @@ var MicroMELF = ({
2866
2893
  }) => {
2867
2894
  const padLength = 0.2;
2868
2895
  return /* @__PURE__ */ jsxs41(Fragment39, { children: [
2869
- /* @__PURE__ */ jsx43(Colorize21, { color, children: /* @__PURE__ */ jsxs41(Rotate7, { rotation: [0, "90deg", 0], children: [
2896
+ /* @__PURE__ */ jsx43(Colorize21, { color, children: /* @__PURE__ */ jsxs41(Rotate6, { rotation: [0, "90deg", 0], children: [
2870
2897
  /* @__PURE__ */ jsx43(
2871
2898
  RoundedCuboid2,
2872
2899
  {
@@ -2884,7 +2911,7 @@ var MicroMELF = ({
2884
2911
  }
2885
2912
  )
2886
2913
  ] }) }),
2887
- /* @__PURE__ */ jsx43(Colorize21, { color: cathodeIdentification, children: /* @__PURE__ */ jsx43(Rotate7, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx43(
2914
+ /* @__PURE__ */ jsx43(Colorize21, { color: cathodeIdentification, children: /* @__PURE__ */ jsx43(Rotate6, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx43(
2888
2915
  RoundedCuboid2,
2889
2916
  {
2890
2917
  size: [bodyDiameter * 1.01, bodyDiameter * 1.01, bodyLength10 / 3],
@@ -2892,7 +2919,7 @@ var MicroMELF = ({
2892
2919
  center: [-bodyDiameter / 2, 0, -bodyLength10 / 4 + 0.1]
2893
2920
  }
2894
2921
  ) }) }),
2895
- /* @__PURE__ */ jsx43(Colorize21, { color: contactColor, children: /* @__PURE__ */ jsx43(Rotate7, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx43(
2922
+ /* @__PURE__ */ jsx43(Colorize21, { color: contactColor, children: /* @__PURE__ */ jsx43(Rotate6, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx43(
2896
2923
  RoundedCylinder2,
2897
2924
  {
2898
2925
  height: padLength,
@@ -2901,7 +2928,7 @@ var MicroMELF = ({
2901
2928
  center: [-bodyDiameter / 2, 0, -bodyLength10 / 2]
2902
2929
  }
2903
2930
  ) }) }),
2904
- /* @__PURE__ */ jsx43(Colorize21, { color: contactColor, children: /* @__PURE__ */ jsx43(Rotate7, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx43(
2931
+ /* @__PURE__ */ jsx43(Colorize21, { color: contactColor, children: /* @__PURE__ */ jsx43(Rotate6, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx43(
2905
2932
  RoundedCylinder2,
2906
2933
  {
2907
2934
  height: padLength,
@@ -2914,7 +2941,7 @@ var MicroMELF = ({
2914
2941
  };
2915
2942
 
2916
2943
  // lib/MINIMELF.tsx
2917
- import { Colorize as Colorize22, RoundedCylinder as RoundedCylinder3, Rotate as Rotate8 } from "jscad-fiber";
2944
+ import { Colorize as Colorize22, RoundedCylinder as RoundedCylinder3, Rotate as Rotate7 } from "jscad-fiber";
2918
2945
  import { Fragment as Fragment40, jsx as jsx44, jsxs as jsxs42 } from "react/jsx-runtime";
2919
2946
  var MINIMELF = ({
2920
2947
  bodyLength: bodyLength10 = 3.5,
@@ -2924,7 +2951,7 @@ var MINIMELF = ({
2924
2951
  }) => {
2925
2952
  const padLength = 0.5;
2926
2953
  return /* @__PURE__ */ jsxs42(Fragment40, { children: [
2927
- /* @__PURE__ */ jsx44(Colorize22, { color, children: /* @__PURE__ */ jsx44(Rotate8, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx44(
2954
+ /* @__PURE__ */ jsx44(Colorize22, { color, children: /* @__PURE__ */ jsx44(Rotate7, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx44(
2928
2955
  RoundedCylinder3,
2929
2956
  {
2930
2957
  height: bodyLength10,
@@ -2933,7 +2960,7 @@ var MINIMELF = ({
2933
2960
  center: [-bodyDiameter / 2, 0, 0]
2934
2961
  }
2935
2962
  ) }) }),
2936
- /* @__PURE__ */ jsx44(Colorize22, { color: contactColor, children: /* @__PURE__ */ jsx44(Rotate8, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx44(
2963
+ /* @__PURE__ */ jsx44(Colorize22, { color: contactColor, children: /* @__PURE__ */ jsx44(Rotate7, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx44(
2937
2964
  RoundedCylinder3,
2938
2965
  {
2939
2966
  height: padLength,
@@ -2942,7 +2969,7 @@ var MINIMELF = ({
2942
2969
  center: [-bodyDiameter / 2, 0, -bodyLength10 / 2]
2943
2970
  }
2944
2971
  ) }) }),
2945
- /* @__PURE__ */ jsx44(Colorize22, { color: contactColor, children: /* @__PURE__ */ jsx44(Rotate8, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx44(
2972
+ /* @__PURE__ */ jsx44(Colorize22, { color: contactColor, children: /* @__PURE__ */ jsx44(Rotate7, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx44(
2946
2973
  RoundedCylinder3,
2947
2974
  {
2948
2975
  height: padLength,
@@ -2955,7 +2982,7 @@ var MINIMELF = ({
2955
2982
  };
2956
2983
 
2957
2984
  // lib/MELF.tsx
2958
- import { Colorize as Colorize23, RoundedCylinder as RoundedCylinder4, Rotate as Rotate9 } from "jscad-fiber";
2985
+ import { Colorize as Colorize23, RoundedCylinder as RoundedCylinder4, Rotate as Rotate8 } from "jscad-fiber";
2959
2986
  import { Fragment as Fragment41, jsx as jsx45, jsxs as jsxs43 } from "react/jsx-runtime";
2960
2987
  var MELF = ({
2961
2988
  bodyLength: bodyLength10 = 3.9,
@@ -2965,7 +2992,7 @@ var MELF = ({
2965
2992
  }) => {
2966
2993
  const padLength = 0.55;
2967
2994
  return /* @__PURE__ */ jsxs43(Fragment41, { children: [
2968
- /* @__PURE__ */ jsx45(Colorize23, { color, children: /* @__PURE__ */ jsx45(Rotate9, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx45(
2995
+ /* @__PURE__ */ jsx45(Colorize23, { color, children: /* @__PURE__ */ jsx45(Rotate8, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx45(
2969
2996
  RoundedCylinder4,
2970
2997
  {
2971
2998
  height: bodyLength10,
@@ -2974,7 +3001,7 @@ var MELF = ({
2974
3001
  center: [-bodyDiameter / 2, 0, 0]
2975
3002
  }
2976
3003
  ) }) }),
2977
- /* @__PURE__ */ jsx45(Colorize23, { color: contactColor, children: /* @__PURE__ */ jsx45(Rotate9, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx45(
3004
+ /* @__PURE__ */ jsx45(Colorize23, { color: contactColor, children: /* @__PURE__ */ jsx45(Rotate8, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx45(
2978
3005
  RoundedCylinder4,
2979
3006
  {
2980
3007
  height: padLength,
@@ -2983,7 +3010,7 @@ var MELF = ({
2983
3010
  center: [-bodyDiameter / 2, 0, -bodyLength10 / 2]
2984
3011
  }
2985
3012
  ) }) }),
2986
- /* @__PURE__ */ jsx45(Colorize23, { color: contactColor, children: /* @__PURE__ */ jsx45(Rotate9, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx45(
3013
+ /* @__PURE__ */ jsx45(Colorize23, { color: contactColor, children: /* @__PURE__ */ jsx45(Rotate8, { rotation: [0, "90deg", 0], children: /* @__PURE__ */ jsx45(
2987
3014
  RoundedCylinder4,
2988
3015
  {
2989
3016
  height: padLength,
@@ -3060,15 +3087,100 @@ var MS012 = ({
3060
3087
  ] });
3061
3088
  };
3062
3089
 
3090
+ // lib/TO220.tsx
3091
+ import {
3092
+ Colorize as Colorize24,
3093
+ Cuboid as Cuboid31,
3094
+ Hull as Hull15,
3095
+ Rotate as Rotate9,
3096
+ Translate as Translate19,
3097
+ Cylinder as Cylinder8,
3098
+ Subtract as Subtract4
3099
+ } from "jscad-fiber";
3100
+ import { Fragment as Fragment43, jsx as jsx47, jsxs as jsxs45 } from "react/jsx-runtime";
3101
+ var TO220 = () => {
3102
+ const fullLength10 = 20;
3103
+ const bodyLength10 = 9.9;
3104
+ const bodyHeight = 4.5;
3105
+ const zOffset = 1;
3106
+ const padWidth = 9.9;
3107
+ const padLength = 6.5;
3108
+ const padThickness = 1.3;
3109
+ const padHoleDiameter = 3;
3110
+ const prongWidth = 0.81;
3111
+ const prongLength = 16;
3112
+ const prongHeight = 0.5;
3113
+ const prongPitch = 2.7;
3114
+ const bodyWidth = padWidth;
3115
+ const bodyFrontX = fullLength10 - bodyLength10 / 2;
3116
+ const bodyBackX = fullLength10 + bodyLength10 / 2;
3117
+ const prongCenterX = bodyFrontX - prongLength / 2;
3118
+ const padCenterX = bodyBackX + padLength / 2;
3119
+ return /* @__PURE__ */ jsx47(Translate19, { center: [0, 0, zOffset], children: /* @__PURE__ */ jsxs45(Fragment43, { children: [
3120
+ /* @__PURE__ */ jsxs45(Rotate9, { rotation: [0, 55, -55], children: [
3121
+ /* @__PURE__ */ jsxs45(Subtract4, { children: [
3122
+ /* @__PURE__ */ jsx47(
3123
+ Cuboid31,
3124
+ {
3125
+ color: "#ccc",
3126
+ size: [padLength + 0.1, padWidth, padThickness],
3127
+ center: [padCenterX, 0, padThickness - 2]
3128
+ }
3129
+ ),
3130
+ /* @__PURE__ */ jsx47(
3131
+ Cylinder8,
3132
+ {
3133
+ color: "black",
3134
+ center: [padCenterX, 0, padThickness - 2],
3135
+ radius: padHoleDiameter / 2,
3136
+ height: padThickness * 1.2
3137
+ }
3138
+ )
3139
+ ] }),
3140
+ /* @__PURE__ */ jsx47(Colorize24, { color: "#222", children: /* @__PURE__ */ jsx47(
3141
+ ChipBody,
3142
+ {
3143
+ width: bodyWidth,
3144
+ length: bodyLength10,
3145
+ height: bodyHeight,
3146
+ center: { x: fullLength10, y: 0, z: -2.4 },
3147
+ includeNotch: false,
3148
+ straightHeightRatio: 0.3,
3149
+ taperRatio: 0.04,
3150
+ heightAboveSurface: 1
3151
+ }
3152
+ ) })
3153
+ ] }),
3154
+ /* @__PURE__ */ jsx47(Rotate9, { rotation: [0, 55, 55], children: Array.from({ length: 3 }).map((_, i) => {
3155
+ const x = prongCenterX;
3156
+ const y = (i - 1) * prongPitch;
3157
+ const z = -prongHeight - 0.6;
3158
+ return /* @__PURE__ */ jsxs45(Colorize24, { color: "gold", children: [
3159
+ /* @__PURE__ */ jsxs45(Hull15, { children: [
3160
+ /* @__PURE__ */ jsx47(Translate19, { center: [bodyFrontX - bodyHeight / 2 + 0.1, y, z], children: /* @__PURE__ */ jsx47(Cuboid31, { size: [bodyHeight, prongWidth + 1, prongHeight] }) }),
3161
+ /* @__PURE__ */ jsx47(
3162
+ Translate19,
3163
+ {
3164
+ center: [bodyFrontX - bodyHeight / 2 - 1 + 0.1, y, z],
3165
+ children: /* @__PURE__ */ jsx47(Cuboid31, { size: [bodyHeight, prongWidth, prongHeight] })
3166
+ }
3167
+ )
3168
+ ] }),
3169
+ /* @__PURE__ */ jsx47(Translate19, { center: [x, y, z], children: /* @__PURE__ */ jsx47(Cuboid31, { size: [prongLength + 0.1, prongWidth, prongHeight] }) })
3170
+ ] }, `prong-${i}`);
3171
+ }) })
3172
+ ] }) });
3173
+ };
3174
+
3063
3175
  // lib/Footprinter3d.tsx
3064
- import { jsx as jsx47 } from "react/jsx-runtime";
3176
+ import { jsx as jsx48 } from "react/jsx-runtime";
3065
3177
  var Footprinter3d = ({ footprint }) => {
3066
3178
  const fpJson = fp3.string(footprint).json();
3067
3179
  switch (fpJson.fn) {
3068
3180
  case "dip":
3069
- return /* @__PURE__ */ jsx47(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
3181
+ return /* @__PURE__ */ jsx48(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
3070
3182
  case "tssop":
3071
- return /* @__PURE__ */ jsx47(
3183
+ return /* @__PURE__ */ jsx48(
3072
3184
  Tssop,
3073
3185
  {
3074
3186
  pinCount: fpJson.num_pins,
@@ -3079,7 +3191,7 @@ var Footprinter3d = ({ footprint }) => {
3079
3191
  }
3080
3192
  );
3081
3193
  case "msop":
3082
- return /* @__PURE__ */ jsx47(
3194
+ return /* @__PURE__ */ jsx48(
3083
3195
  MSOP,
3084
3196
  {
3085
3197
  pinCount: fpJson.num_pins,
@@ -3090,7 +3202,7 @@ var Footprinter3d = ({ footprint }) => {
3090
3202
  }
3091
3203
  );
3092
3204
  case "vssop":
3093
- return /* @__PURE__ */ jsx47(
3205
+ return /* @__PURE__ */ jsx48(
3094
3206
  VSSOP,
3095
3207
  {
3096
3208
  pinCount: fpJson.num_pins,
@@ -3102,7 +3214,7 @@ var Footprinter3d = ({ footprint }) => {
3102
3214
  }
3103
3215
  );
3104
3216
  case "qfp":
3105
- return /* @__PURE__ */ jsx47(
3217
+ return /* @__PURE__ */ jsx48(
3106
3218
  QFP,
3107
3219
  {
3108
3220
  pinCount: fpJson.num_pins,
@@ -3113,12 +3225,12 @@ var Footprinter3d = ({ footprint }) => {
3113
3225
  }
3114
3226
  );
3115
3227
  case "tqfp":
3116
- return /* @__PURE__ */ jsx47(tqfp_default, {});
3228
+ return /* @__PURE__ */ jsx48(tqfp_default, {});
3117
3229
  case "lqfp":
3118
- return /* @__PURE__ */ jsx47(LQFP, { pinCount: fpJson.num_pins });
3230
+ return /* @__PURE__ */ jsx48(LQFP, { pinCount: fpJson.num_pins });
3119
3231
  case "qfn": {
3120
3232
  const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
3121
- return /* @__PURE__ */ jsx47(
3233
+ return /* @__PURE__ */ jsx48(
3122
3234
  qfn_default,
3123
3235
  {
3124
3236
  num_pins: fpJson.num_pins,
@@ -3136,7 +3248,7 @@ var Footprinter3d = ({ footprint }) => {
3136
3248
  }
3137
3249
  case "dfn": {
3138
3250
  const hasThermalPad = typeof fpJson.thermalpad?.x === "number" && typeof fpJson.thermalpad?.y === "number";
3139
- return /* @__PURE__ */ jsx47(
3251
+ return /* @__PURE__ */ jsx48(
3140
3252
  DFN,
3141
3253
  {
3142
3254
  num_pins: fpJson.num_pins,
@@ -3154,39 +3266,39 @@ var Footprinter3d = ({ footprint }) => {
3154
3266
  }
3155
3267
  case "pinrow":
3156
3268
  if (fpJson.male)
3157
- return /* @__PURE__ */ jsx47(PinRow, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
3269
+ return /* @__PURE__ */ jsx48(PinRow, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
3158
3270
  if (fpJson.female)
3159
- return /* @__PURE__ */ jsx47(FemaleHeader, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
3271
+ return /* @__PURE__ */ jsx48(FemaleHeader, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
3160
3272
  case "cap": {
3161
3273
  switch (fpJson.imperial) {
3162
3274
  case "0402":
3163
- return /* @__PURE__ */ jsx47(A0402, { color: "#856c4d" });
3275
+ return /* @__PURE__ */ jsx48(A0402, { color: "#856c4d" });
3164
3276
  case "0603":
3165
- return /* @__PURE__ */ jsx47(A0603, { color: "#856c4d" });
3277
+ return /* @__PURE__ */ jsx48(A0603, { color: "#856c4d" });
3166
3278
  case "0805":
3167
- return /* @__PURE__ */ jsx47(A0805, { color: "#856c4d" });
3279
+ return /* @__PURE__ */ jsx48(A0805, { color: "#856c4d" });
3168
3280
  case "0201":
3169
- return /* @__PURE__ */ jsx47(A0201, { color: "#856c4d" });
3281
+ return /* @__PURE__ */ jsx48(A0201, { color: "#856c4d" });
3170
3282
  case "01005":
3171
- return /* @__PURE__ */ jsx47(A01005, { color: "#856c4d" });
3283
+ return /* @__PURE__ */ jsx48(A01005, { color: "#856c4d" });
3172
3284
  case "1206":
3173
- return /* @__PURE__ */ jsx47(A1206, { color: "#856c4d" });
3285
+ return /* @__PURE__ */ jsx48(A1206, { color: "#856c4d" });
3174
3286
  case "1210":
3175
- return /* @__PURE__ */ jsx47(A1210, { color: "#856c4d" });
3287
+ return /* @__PURE__ */ jsx48(A1210, { color: "#856c4d" });
3176
3288
  case "2010":
3177
- return /* @__PURE__ */ jsx47(A2010, { color: "#856c4d" });
3289
+ return /* @__PURE__ */ jsx48(A2010, { color: "#856c4d" });
3178
3290
  case "2512":
3179
- return /* @__PURE__ */ jsx47(A2512, { color: "#856c4d" });
3291
+ return /* @__PURE__ */ jsx48(A2512, { color: "#856c4d" });
3180
3292
  }
3181
3293
  }
3182
3294
  case "sot235":
3183
- return /* @__PURE__ */ jsx47(SOT_235_default, {});
3295
+ return /* @__PURE__ */ jsx48(SOT_235_default, {});
3184
3296
  case "sot223":
3185
- return /* @__PURE__ */ jsx47(SOT223, {});
3297
+ return /* @__PURE__ */ jsx48(SOT223, {});
3186
3298
  case "sot323":
3187
- return /* @__PURE__ */ jsx47(SOT323, {});
3299
+ return /* @__PURE__ */ jsx48(SOT323, {});
3188
3300
  case "pushbutton":
3189
- return /* @__PURE__ */ jsx47(
3301
+ return /* @__PURE__ */ jsx48(
3190
3302
  PushButton,
3191
3303
  {
3192
3304
  width: fpJson.w,
@@ -3195,7 +3307,7 @@ var Footprinter3d = ({ footprint }) => {
3195
3307
  }
3196
3308
  );
3197
3309
  case "soic":
3198
- return /* @__PURE__ */ jsx47(
3310
+ return /* @__PURE__ */ jsx48(
3199
3311
  SOIC,
3200
3312
  {
3201
3313
  pinCount: fpJson.num_pins,
@@ -3206,33 +3318,33 @@ var Footprinter3d = ({ footprint }) => {
3206
3318
  }
3207
3319
  );
3208
3320
  case "sod523":
3209
- return /* @__PURE__ */ jsx47(SOD523, {});
3321
+ return /* @__PURE__ */ jsx48(SOD523, {});
3210
3322
  case "sod882":
3211
- return /* @__PURE__ */ jsx47(SOD882, {});
3323
+ return /* @__PURE__ */ jsx48(SOD882, {});
3212
3324
  case "sma":
3213
- return /* @__PURE__ */ jsx47(SMA, {});
3325
+ return /* @__PURE__ */ jsx48(SMA, {});
3214
3326
  case "smb":
3215
- return /* @__PURE__ */ jsx47(SMB, {});
3327
+ return /* @__PURE__ */ jsx48(SMB, {});
3216
3328
  case "smc":
3217
- return /* @__PURE__ */ jsx47(SMC, {});
3329
+ return /* @__PURE__ */ jsx48(SMC, {});
3218
3330
  case "smf":
3219
- return /* @__PURE__ */ jsx47(SMF, {});
3331
+ return /* @__PURE__ */ jsx48(SMF, {});
3220
3332
  case "sod123f":
3221
- return /* @__PURE__ */ jsx47(SOD123F, {});
3333
+ return /* @__PURE__ */ jsx48(SOD123F, {});
3222
3334
  case "sod123fl":
3223
- return /* @__PURE__ */ jsx47(SOD123FL, {});
3335
+ return /* @__PURE__ */ jsx48(SOD123FL, {});
3224
3336
  case "sod923":
3225
- return /* @__PURE__ */ jsx47(SOD923, {});
3337
+ return /* @__PURE__ */ jsx48(SOD923, {});
3226
3338
  case "hc49":
3227
- return /* @__PURE__ */ jsx47(HC49, {});
3339
+ return /* @__PURE__ */ jsx48(HC49, {});
3228
3340
  case "micromelf":
3229
- return /* @__PURE__ */ jsx47(MicroMELF, {});
3341
+ return /* @__PURE__ */ jsx48(MicroMELF, {});
3230
3342
  case "minimelf":
3231
- return /* @__PURE__ */ jsx47(MINIMELF, {});
3343
+ return /* @__PURE__ */ jsx48(MINIMELF, {});
3232
3344
  case "melf":
3233
- return /* @__PURE__ */ jsx47(MELF, {});
3345
+ return /* @__PURE__ */ jsx48(MELF, {});
3234
3346
  case "ms012":
3235
- return /* @__PURE__ */ jsx47(
3347
+ return /* @__PURE__ */ jsx48(
3236
3348
  MS012,
3237
3349
  {
3238
3350
  pinCount: fpJson.num_pins,
@@ -3242,35 +3354,37 @@ var Footprinter3d = ({ footprint }) => {
3242
3354
  }
3243
3355
  );
3244
3356
  case "sot723":
3245
- return /* @__PURE__ */ jsx47(SOT723, {});
3357
+ return /* @__PURE__ */ jsx48(SOT723, {});
3358
+ case "to220":
3359
+ return /* @__PURE__ */ jsx48(TO220, {});
3246
3360
  }
3247
3361
  const colorMatch = footprint.match(/_color\(([^)]+)\)/);
3248
3362
  const color = colorMatch ? colorMatch[1] : void 0;
3249
3363
  switch (fpJson.imperial) {
3250
3364
  case "0402":
3251
- return /* @__PURE__ */ jsx47(A0402, { color });
3365
+ return /* @__PURE__ */ jsx48(A0402, { color });
3252
3366
  case "0603":
3253
- return /* @__PURE__ */ jsx47(A0603, { color });
3367
+ return /* @__PURE__ */ jsx48(A0603, { color });
3254
3368
  case "0805":
3255
- return /* @__PURE__ */ jsx47(A0805, { color });
3369
+ return /* @__PURE__ */ jsx48(A0805, { color });
3256
3370
  case "0201":
3257
- return /* @__PURE__ */ jsx47(A0201, { color });
3371
+ return /* @__PURE__ */ jsx48(A0201, { color });
3258
3372
  case "01005":
3259
- return /* @__PURE__ */ jsx47(A01005, { color });
3373
+ return /* @__PURE__ */ jsx48(A01005, { color });
3260
3374
  case "1206":
3261
- return /* @__PURE__ */ jsx47(A1206, { color });
3375
+ return /* @__PURE__ */ jsx48(A1206, { color });
3262
3376
  case "1210":
3263
- return /* @__PURE__ */ jsx47(A1210, { color });
3377
+ return /* @__PURE__ */ jsx48(A1210, { color });
3264
3378
  case "2010":
3265
- return /* @__PURE__ */ jsx47(A2010, { color });
3379
+ return /* @__PURE__ */ jsx48(A2010, { color });
3266
3380
  case "2512":
3267
- return /* @__PURE__ */ jsx47(A2512, { color });
3381
+ return /* @__PURE__ */ jsx48(A2512, { color });
3268
3382
  }
3269
3383
  return null;
3270
3384
  };
3271
3385
 
3272
3386
  // lib/SOT-23-3P.tsx
3273
- import { Fragment as Fragment43, jsx as jsx48, jsxs as jsxs45 } from "react/jsx-runtime";
3387
+ import { Fragment as Fragment44, jsx as jsx49, jsxs as jsxs46 } from "react/jsx-runtime";
3274
3388
  var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
3275
3389
  const bodyWidth = 1.3;
3276
3390
  const bodyLength10 = 2.9;
@@ -3281,8 +3395,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
3281
3395
  const padContactLength = 0.4;
3282
3396
  const padThickness = leadThickness / 2;
3283
3397
  const extendedBodyDistance = (fullWidth - bodyWidth) / 2 + 0.3;
3284
- return /* @__PURE__ */ jsxs45(Fragment43, { children: [
3285
- /* @__PURE__ */ jsx48(
3398
+ return /* @__PURE__ */ jsxs46(Fragment44, { children: [
3399
+ /* @__PURE__ */ jsx49(
3286
3400
  SmdChipLead,
3287
3401
  {
3288
3402
  rotation: Math.PI,
@@ -3299,7 +3413,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
3299
3413
  },
3300
3414
  1
3301
3415
  ),
3302
- /* @__PURE__ */ jsx48(
3416
+ /* @__PURE__ */ jsx49(
3303
3417
  SmdChipLead,
3304
3418
  {
3305
3419
  rotation: Math.PI,
@@ -3316,7 +3430,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
3316
3430
  },
3317
3431
  2
3318
3432
  ),
3319
- /* @__PURE__ */ jsx48(
3433
+ /* @__PURE__ */ jsx49(
3320
3434
  SmdChipLead,
3321
3435
  {
3322
3436
  position: {
@@ -3332,7 +3446,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
3332
3446
  },
3333
3447
  3
3334
3448
  ),
3335
- /* @__PURE__ */ jsx48(
3449
+ /* @__PURE__ */ jsx49(
3336
3450
  ChipBody,
3337
3451
  {
3338
3452
  center: { x: 0, y: 0, z: 0 },
@@ -3345,8 +3459,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
3345
3459
  };
3346
3460
 
3347
3461
  // lib/SOT-563.tsx
3348
- import { Cuboid as Cuboid31, Translate as Translate19, Rotate as Rotate10, Colorize as Colorize24 } from "jscad-fiber";
3349
- import { Fragment as Fragment44, jsx as jsx49, jsxs as jsxs46 } from "react/jsx-runtime";
3462
+ import { Cuboid as Cuboid32, Translate as Translate20, Rotate as Rotate10, Colorize as Colorize25 } from "jscad-fiber";
3463
+ import { Fragment as Fragment45, jsx as jsx50, jsxs as jsxs47 } from "react/jsx-runtime";
3350
3464
  var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
3351
3465
  const bodyWidth = 1.2;
3352
3466
  const bodyLength10 = 1.6;
@@ -3356,28 +3470,28 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
3356
3470
  const leadHeight = 0.13;
3357
3471
  const leadSpacing = 0.5;
3358
3472
  const bodyZOffset = -0.4;
3359
- return /* @__PURE__ */ jsxs46(Fragment44, { children: [
3360
- /* @__PURE__ */ jsx49(Rotate10, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx49(Translate19, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ jsx49(Colorize24, { color: "grey", children: /* @__PURE__ */ jsx49(Cuboid31, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
3473
+ return /* @__PURE__ */ jsxs47(Fragment45, { children: [
3474
+ /* @__PURE__ */ jsx50(Rotate10, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ jsx50(Translate20, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ jsx50(Colorize25, { color: "grey", children: /* @__PURE__ */ jsx50(Cuboid32, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
3361
3475
  [-1, 0, 1].flatMap((yOffset, index) => [
3362
3476
  // Left lead
3363
- /* @__PURE__ */ jsx49(
3364
- Translate19,
3477
+ /* @__PURE__ */ jsx50(
3478
+ Translate20,
3365
3479
  {
3366
3480
  center: [
3367
3481
  -bodyWidth / 2 - 0.03,
3368
3482
  yOffset * leadSpacing,
3369
3483
  leadHeight / 2
3370
3484
  ],
3371
- children: /* @__PURE__ */ jsx49(Cuboid31, { size: [leadLength, leadWidth, leadHeight] })
3485
+ children: /* @__PURE__ */ jsx50(Cuboid32, { size: [leadLength, leadWidth, leadHeight] })
3372
3486
  },
3373
3487
  `left-${index}`
3374
3488
  ),
3375
3489
  // Right lead
3376
- /* @__PURE__ */ jsx49(
3377
- Translate19,
3490
+ /* @__PURE__ */ jsx50(
3491
+ Translate20,
3378
3492
  {
3379
3493
  center: [bodyWidth / 2 + 0.03, yOffset * leadSpacing, leadHeight / 2],
3380
- children: /* @__PURE__ */ jsx49(Cuboid31, { size: [leadLength, leadWidth, leadHeight] })
3494
+ children: /* @__PURE__ */ jsx50(Cuboid32, { size: [leadLength, leadWidth, leadHeight] })
3381
3495
  },
3382
3496
  `right-${index}`
3383
3497
  )
@@ -3386,7 +3500,7 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
3386
3500
  };
3387
3501
 
3388
3502
  // lib/sod-123.tsx
3389
- import { Fragment as Fragment45, jsx as jsx50, jsxs as jsxs47 } from "react/jsx-runtime";
3503
+ import { Fragment as Fragment46, jsx as jsx51, jsxs as jsxs48 } from "react/jsx-runtime";
3390
3504
  var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
3391
3505
  const bodyWidth = 2.9;
3392
3506
  const bodyLength10 = 1.3;
@@ -3397,8 +3511,8 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
3397
3511
  const padContactLength = 0.4;
3398
3512
  const padThickness = leadThickness / 2;
3399
3513
  const bodyDistance = (fullWidth - bodyWidth) / 2;
3400
- return /* @__PURE__ */ jsxs47(Fragment45, { children: [
3401
- /* @__PURE__ */ jsx50(
3514
+ return /* @__PURE__ */ jsxs48(Fragment46, { children: [
3515
+ /* @__PURE__ */ jsx51(
3402
3516
  SmdChipLead,
3403
3517
  {
3404
3518
  position: {
@@ -3414,7 +3528,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
3414
3528
  },
3415
3529
  1
3416
3530
  ),
3417
- /* @__PURE__ */ jsx50(
3531
+ /* @__PURE__ */ jsx51(
3418
3532
  SmdChipLead,
3419
3533
  {
3420
3534
  rotation: Math.PI,
@@ -3431,7 +3545,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
3431
3545
  },
3432
3546
  2
3433
3547
  ),
3434
- /* @__PURE__ */ jsx50(
3548
+ /* @__PURE__ */ jsx51(
3435
3549
  ChipBody,
3436
3550
  {
3437
3551
  center: { x: 0, y: 0, z: 0 },
@@ -3485,6 +3599,7 @@ export {
3485
3599
  SOT563,
3486
3600
  SOT723,
3487
3601
  SmdChipLead,
3602
+ TO220,
3488
3603
  TQFP,
3489
3604
  Tssop,
3490
3605
  VSSOP