jscad-electronics 0.0.28 → 0.0.30

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
@@ -124,6 +124,15 @@ declare const Tssop: ({ pinCount, leadLength, leadWidth, pitch, bodyWidth, }: {
124
124
  bodyWidth: number;
125
125
  }) => react_jsx_runtime.JSX.Element;
126
126
 
127
+ declare const VSSOP: ({ pinCount, pitch, leadWidth, leadLength, bodyWidth, bodyLength, }: {
128
+ pinCount: 8 | 10;
129
+ pitch?: number;
130
+ leadWidth?: number;
131
+ leadLength?: number;
132
+ bodyWidth?: number;
133
+ bodyLength?: number;
134
+ }) => react_jsx_runtime.JSX.Element;
135
+
127
136
  declare const QFN: ({ num_pins, bodyWidth, bodyLength, bodyThickness, thermalPadSize, padWidth, padLength, pitch, thermalPadThickness, }: {
128
137
  num_pins: number;
129
138
  bodyWidth?: number;
@@ -158,4 +167,4 @@ declare const PinRow: ({ numberOfPins, pitch, longSidePinLength, }: {
158
167
  longSidePinLength?: number;
159
168
  }) => react_jsx_runtime.JSX.Element;
160
169
 
161
- export { A01005, A0201, A0402, A0603, A0805, A1206, A1210, A2010, A2512, BGA, ChipBody, type ChipBodyProps, ExtrudedPads, FootprintPad, FootprintPlatedHole, Footprinter3d, PinRow, QFN, QFP, SOD123, SOT233P, SOT563, SOT723, SmdChipLead, type SmdChipLeadProps, Tssop };
170
+ export { A01005, A0201, A0402, A0603, A0805, A1206, A1210, A2010, A2512, BGA, ChipBody, type ChipBodyProps, ExtrudedPads, FootprintPad, FootprintPlatedHole, Footprinter3d, PinRow, QFN, QFP, SOD123, SOT233P, SOT563, SOT723, SmdChipLead, type SmdChipLeadProps, Tssop, VSSOP };
package/dist/index.js CHANGED
@@ -7730,7 +7730,7 @@ var require_react_reconciler_development = __commonJS({
7730
7730
  var HostPortal = 4;
7731
7731
  var HostComponent = 5;
7732
7732
  var HostText = 6;
7733
- var Fragment25 = 7;
7733
+ var Fragment26 = 7;
7734
7734
  var Mode = 8;
7735
7735
  var ContextConsumer = 9;
7736
7736
  var ContextProvider = 10;
@@ -7870,7 +7870,7 @@ var require_react_reconciler_development = __commonJS({
7870
7870
  return "DehydratedFragment";
7871
7871
  case ForwardRef:
7872
7872
  return getWrappedName$1(type, type.render, "ForwardRef");
7873
- case Fragment25:
7873
+ case Fragment26:
7874
7874
  return "Fragment";
7875
7875
  case HostComponent:
7876
7876
  return type;
@@ -11004,7 +11004,7 @@ var require_react_reconciler_development = __commonJS({
11004
11004
  }
11005
11005
  }
11006
11006
  function updateFragment2(returnFiber, current2, fragment, lanes, key) {
11007
- if (current2 === null || current2.tag !== Fragment25) {
11007
+ if (current2 === null || current2.tag !== Fragment26) {
11008
11008
  var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key);
11009
11009
  created.return = returnFiber;
11010
11010
  return created;
@@ -11407,7 +11407,7 @@ var require_react_reconciler_development = __commonJS({
11407
11407
  if (child.key === key) {
11408
11408
  var elementType = element.type;
11409
11409
  if (elementType === REACT_FRAGMENT_TYPE) {
11410
- if (child.tag === Fragment25) {
11410
+ if (child.tag === Fragment26) {
11411
11411
  deleteRemainingChildren(returnFiber, child.sibling);
11412
11412
  var existing = useFiber(child, element.props.children);
11413
11413
  existing.return = returnFiber;
@@ -16898,7 +16898,7 @@ var require_react_reconciler_development = __commonJS({
16898
16898
  var _resolvedProps2 = workInProgress2.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);
16899
16899
  return updateForwardRef(current2, workInProgress2, type, _resolvedProps2, renderLanes2);
16900
16900
  }
16901
- case Fragment25:
16901
+ case Fragment26:
16902
16902
  return updateFragment(current2, workInProgress2, renderLanes2);
16903
16903
  case Mode:
16904
16904
  return updateMode(current2, workInProgress2, renderLanes2);
@@ -17335,7 +17335,7 @@ var require_react_reconciler_development = __commonJS({
17335
17335
  case SimpleMemoComponent:
17336
17336
  case FunctionComponent:
17337
17337
  case ForwardRef:
17338
- case Fragment25:
17338
+ case Fragment26:
17339
17339
  case Mode:
17340
17340
  case Profiler:
17341
17341
  case ContextConsumer:
@@ -22103,7 +22103,7 @@ var require_react_reconciler_development = __commonJS({
22103
22103
  return fiber;
22104
22104
  }
22105
22105
  function createFiberFromFragment(elements, mode, lanes, key) {
22106
- var fiber = createFiber(Fragment25, elements, key, mode);
22106
+ var fiber = createFiber(Fragment26, elements, key, mode);
22107
22107
  fiber.lanes = lanes;
22108
22108
  return fiber;
22109
22109
  }
@@ -23704,11 +23704,11 @@ var require_react_jsx_runtime_development = __commonJS({
23704
23704
  return jsxWithValidation(type, props, key, false);
23705
23705
  }
23706
23706
  }
23707
- var jsx30 = jsxWithValidationDynamic;
23708
- var jsxs26 = jsxWithValidationStatic;
23707
+ var jsx31 = jsxWithValidationDynamic;
23708
+ var jsxs27 = jsxWithValidationStatic;
23709
23709
  exports.Fragment = REACT_FRAGMENT_TYPE;
23710
- exports.jsx = jsx30;
23711
- exports.jsxs = jsxs26;
23710
+ exports.jsx = jsx31;
23711
+ exports.jsxs = jsxs27;
23712
23712
  })();
23713
23713
  }
23714
23714
  }
@@ -77300,7 +77300,7 @@ var require_dist = __commonJS({
77300
77300
  Cube: () => Cube2,
77301
77301
  Cuboid: () => Cuboid19,
77302
77302
  Custom: () => Custom,
77303
- Cylinder: () => Cylinder4,
77303
+ Cylinder: () => Cylinder5,
77304
77304
  CylinderElliptic: () => CylinderElliptic,
77305
77305
  Ellipsoid: () => Ellipsoid,
77306
77306
  ExtrudeFromSlices: () => ExtrudeFromSlices,
@@ -77715,9 +77715,9 @@ var require_dist = __commonJS({
77715
77715
  };
77716
77716
  return hostConfig2;
77717
77717
  }
77718
- var import_jsx_runtime30 = require_jsx_runtime();
77718
+ var import_jsx_runtime31 = require_jsx_runtime();
77719
77719
  function Circle({ radius }) {
77720
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("circle", { radius });
77720
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("circle", { radius });
77721
77721
  }
77722
77722
  var import_color = __toESM2(require_color(), 1);
77723
77723
  var import_jsx_runtime210 = require_jsx_runtime();
@@ -77841,7 +77841,7 @@ var require_dist = __commonJS({
77841
77841
  var CylinderBase = ({ radius, height: height10 }) => {
77842
77842
  return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("cylinder", { radius, height: height10 });
77843
77843
  };
77844
- var Cylinder4 = withColorProp(
77844
+ var Cylinder5 = withColorProp(
77845
77845
  withOffsetProp(withRotationProp(CylinderBase))
77846
77846
  );
77847
77847
  var import_jsx_runtime122 = require_jsx_runtime();
@@ -78135,7 +78135,7 @@ var require_dist = __commonJS({
78135
78135
  return new import_three2.BufferGeometry();
78136
78136
  }
78137
78137
  var convert_csg_to_three_geom_default = convertCSGToThreeGeom;
78138
- var import_jsx_runtime31 = require_jsx_runtime();
78138
+ var import_jsx_runtime312 = require_jsx_runtime();
78139
78139
  var { createJSCADRoot } = createJSCADRenderer(jscad);
78140
78140
  function JsCadView({
78141
78141
  children,
@@ -78238,7 +78238,7 @@ var require_dist = __commonJS({
78238
78238
  gridRef.current.visible = showGrid;
78239
78239
  }
78240
78240
  }, [showGrid]);
78241
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { ref: containerRef, style: { width: "100%", minHeight: "400px" } });
78241
+ return /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("div", { ref: containerRef, style: { width: "100%", minHeight: "400px" } });
78242
78242
  }
78243
78243
  var jscad2 = __toESM2(require_src(), 1);
78244
78244
  var import_react3 = require_react();
@@ -79533,11 +79533,14 @@ var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);
79533
79533
  var FemaleHeader = ({
79534
79534
  numberOfPins,
79535
79535
  pitch = 2.54,
79536
- legsLength = 3
79536
+ legsLength = 3,
79537
+ outerDiameter = 0.945,
79538
+ innerDiameter = 0.945
79537
79539
  }) => {
79538
- const pinThickness = 0.63;
79540
+ const pinThickness = innerDiameter / 1.5;
79541
+ const bodyDepth = pinThickness * 2 + outerDiameter;
79539
79542
  const bodyHeight = 5;
79540
- const bodyWidth = numberOfPins * pitch;
79543
+ const bodyWidth = (numberOfPins - 1) * pitch + outerDiameter + pitch / 2;
79541
79544
  const gapWidth = pinThickness * 1.6;
79542
79545
  const xoff = -((numberOfPins - 1) / 2) * pitch;
79543
79546
  const Body = /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_jscad_fiber18.Colorize, { color: "#1a1a1a", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jscad_fiber18.Subtract, { children: [
@@ -79545,21 +79548,34 @@ var FemaleHeader = ({
79545
79548
  import_jscad_fiber18.Cuboid,
79546
79549
  {
79547
79550
  color: "#000",
79548
- size: [bodyWidth, pinThickness * 3, bodyHeight],
79551
+ size: [bodyWidth, bodyDepth, bodyHeight],
79549
79552
  center: [0, 0, bodyHeight / 2]
79550
79553
  }
79551
79554
  ),
79552
- Array.from({ length: numberOfPins }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
79553
- import_jscad_fiber18.Cuboid,
79554
- {
79555
- size: [gapWidth, gapWidth, bodyHeight],
79556
- center: [xoff + i * pitch, 0, bodyHeight / 2]
79557
- }
79558
- ))
79555
+ Array.from(
79556
+ { length: numberOfPins },
79557
+ (_, i) => innerDiameter ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
79558
+ import_jscad_fiber18.Cylinder,
79559
+ {
79560
+ height: bodyHeight + 0.1,
79561
+ radius: innerDiameter / 2,
79562
+ center: [xoff + i * pitch, 0, bodyHeight / 2],
79563
+ color: "#222"
79564
+ },
79565
+ i
79566
+ ) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
79567
+ import_jscad_fiber18.Cuboid,
79568
+ {
79569
+ size: [gapWidth, gapWidth, bodyHeight],
79570
+ center: [xoff + i * pitch, 0, bodyHeight / 2]
79571
+ },
79572
+ i
79573
+ )
79574
+ )
79559
79575
  ] }) });
79560
79576
  return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
79561
79577
  Body,
79562
- Array.from({ length: numberOfPins }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_jsx_runtime22.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jscad_fiber18.Colorize, { color: "silver", children: [
79578
+ Array.from({ length: numberOfPins }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jscad_fiber18.Colorize, { color: "silver", children: [
79563
79579
  /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jscad_fiber18.Hull, { children: [
79564
79580
  /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
79565
79581
  import_jscad_fiber18.Cuboid,
@@ -79586,7 +79602,7 @@ var FemaleHeader = ({
79586
79602
  center: [xoff + i * pitch, 0, gapWidth / 2 * 0.5]
79587
79603
  }
79588
79604
  )
79589
- ] }) }))
79605
+ ] }, i))
79590
79606
  ] });
79591
79607
  };
79592
79608
 
@@ -79830,15 +79846,93 @@ var SOIC = ({
79830
79846
  ] });
79831
79847
  };
79832
79848
 
79833
- // lib/Footprinter3d.tsx
79849
+ // lib/VSSOP.tsx
79834
79850
  var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
79851
+ var VSSOP = ({
79852
+ pinCount,
79853
+ pitch,
79854
+ leadWidth,
79855
+ leadLength,
79856
+ bodyWidth,
79857
+ bodyLength: bodyLength10
79858
+ }) => {
79859
+ const defaults = pinCount === 8 ? {
79860
+ pitch: 0.65,
79861
+ leadWidth: 0.3,
79862
+ leadLength: 1.6
79863
+ } : {
79864
+ pitch: 0.5,
79865
+ leadWidth: 0.225,
79866
+ leadLength: 1.45
79867
+ };
79868
+ const _pitch = !isNaN(parseFloat(pitch)) ? parseFloat(pitch) : defaults.pitch;
79869
+ const _leadWidth = !isNaN(parseFloat(leadWidth)) ? parseFloat(leadWidth) * 0.8 : defaults.leadWidth;
79870
+ const _leadLength = !isNaN(parseFloat(leadLength)) ? parseFloat(leadLength) : defaults.leadLength;
79871
+ const _bodyWidth = !isNaN(parseFloat(bodyWidth)) ? parseFloat(bodyWidth) * 0.8 : 2.6;
79872
+ const _bodyLength = !isNaN(parseFloat(bodyLength10)) ? parseFloat(bodyLength10) : 2 + Number(_pitch) * 1.4;
79873
+ const sidePinCount = pinCount / 2;
79874
+ const pinOffsetToCenter = (sidePinCount - 1) * _pitch / 2;
79875
+ const leadThickness = 0.15;
79876
+ const leadHeight = 0.8;
79877
+ const componentFullWidth = 4.5;
79878
+ const leadBodyDistance = (componentFullWidth - _bodyWidth) / 2;
79879
+ const padContactLength = leadBodyDistance * 0.5;
79880
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
79881
+ Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
79882
+ SmdChipLead,
79883
+ {
79884
+ position: {
79885
+ x: -componentFullWidth / 2,
79886
+ y: pinOffsetToCenter - i * _pitch,
79887
+ z: leadThickness / 2
79888
+ },
79889
+ width: _leadWidth,
79890
+ thickness: leadThickness,
79891
+ padContactLength: padContactLength + 0.05,
79892
+ bodyDistance: leadBodyDistance + 0.05,
79893
+ height: leadHeight
79894
+ },
79895
+ `left-${i}`
79896
+ )),
79897
+ Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
79898
+ SmdChipLead,
79899
+ {
79900
+ rotation: Math.PI,
79901
+ position: {
79902
+ x: componentFullWidth / 2,
79903
+ y: pinOffsetToCenter - i * _pitch,
79904
+ z: leadThickness / 2
79905
+ },
79906
+ width: _leadWidth,
79907
+ thickness: leadThickness,
79908
+ padContactLength: padContactLength + 0.05,
79909
+ bodyDistance: leadBodyDistance + 0.05,
79910
+ height: leadHeight
79911
+ },
79912
+ `right-${i}`
79913
+ )),
79914
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
79915
+ ChipBody,
79916
+ {
79917
+ center: { x: 0, y: 0, z: leadThickness / 2 },
79918
+ width: _bodyWidth,
79919
+ length: _bodyLength,
79920
+ height: 1
79921
+ }
79922
+ )
79923
+ ] });
79924
+ };
79925
+
79926
+ // lib/Footprinter3d.tsx
79927
+ var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
79835
79928
  var Footprinter3d = ({ footprint }) => {
79836
79929
  const fpJson = fp3.string(footprint).json();
79930
+ console.log(footprint, fpJson);
79837
79931
  switch (fpJson.fn) {
79838
79932
  case "dip":
79839
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
79933
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
79840
79934
  case "tssop":
79841
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
79935
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
79842
79936
  Tssop,
79843
79937
  {
79844
79938
  pinCount: fpJson.num_pins,
@@ -79848,8 +79942,20 @@ var Footprinter3d = ({ footprint }) => {
79848
79942
  bodyWidth: fpJson.w
79849
79943
  }
79850
79944
  );
79945
+ case "vssop":
79946
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
79947
+ VSSOP,
79948
+ {
79949
+ pinCount: fpJson.num_pins,
79950
+ leadLength: fpJson.pl,
79951
+ leadWidth: fpJson.pw,
79952
+ pitch: fpJson.p,
79953
+ bodyWidth: fpJson.w,
79954
+ bodyLength: fpJson.h
79955
+ }
79956
+ );
79851
79957
  case "qfp":
79852
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
79958
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
79853
79959
  QFP,
79854
79960
  {
79855
79961
  pinCount: fpJson.num_pins,
@@ -79860,7 +79966,7 @@ var Footprinter3d = ({ footprint }) => {
79860
79966
  }
79861
79967
  );
79862
79968
  case "qfn":
79863
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
79969
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
79864
79970
  qfn_default,
79865
79971
  {
79866
79972
  num_pins: fpJson.num_pins,
@@ -79877,35 +79983,35 @@ var Footprinter3d = ({ footprint }) => {
79877
79983
  );
79878
79984
  case "pinrow":
79879
79985
  if (fpJson.male)
79880
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(PinRow, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
79986
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(PinRow, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
79881
79987
  if (fpJson.female)
79882
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(FemaleHeader, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
79988
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(FemaleHeader, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
79883
79989
  case "cap": {
79884
79990
  switch (fpJson.imperial) {
79885
79991
  case "0402":
79886
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A0402, { color: "#856c4d" });
79992
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A0402, { color: "#856c4d" });
79887
79993
  case "0603":
79888
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A0603, { color: "#856c4d" });
79994
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A0603, { color: "#856c4d" });
79889
79995
  case "0805":
79890
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A0805, { color: "#856c4d" });
79996
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A0805, { color: "#856c4d" });
79891
79997
  case "0201":
79892
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A0201, { color: "#856c4d" });
79998
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A0201, { color: "#856c4d" });
79893
79999
  case "01005":
79894
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A01005, { color: "#856c4d" });
80000
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A01005, { color: "#856c4d" });
79895
80001
  case "1206":
79896
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A1206, { color: "#856c4d" });
80002
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A1206, { color: "#856c4d" });
79897
80003
  case "1210":
79898
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A1210, { color: "#856c4d" });
80004
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A1210, { color: "#856c4d" });
79899
80005
  case "2010":
79900
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A2010, { color: "#856c4d" });
80006
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A2010, { color: "#856c4d" });
79901
80007
  case "2512":
79902
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A2512, { color: "#856c4d" });
80008
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A2512, { color: "#856c4d" });
79903
80009
  }
79904
80010
  }
79905
80011
  case "sot235":
79906
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(SOT_235_default, {});
80012
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SOT_235_default, {});
79907
80013
  case "pushbutton":
79908
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
80014
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
79909
80015
  PushButton,
79910
80016
  {
79911
80017
  width: fpJson.w,
@@ -79914,7 +80020,7 @@ var Footprinter3d = ({ footprint }) => {
79914
80020
  }
79915
80021
  );
79916
80022
  case "soic":
79917
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
80023
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
79918
80024
  SOIC,
79919
80025
  {
79920
80026
  pinCount: fpJson.num_pins,
@@ -79927,29 +80033,29 @@ var Footprinter3d = ({ footprint }) => {
79927
80033
  }
79928
80034
  switch (fpJson.imperial) {
79929
80035
  case "0402":
79930
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A0402, {});
80036
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A0402, {});
79931
80037
  case "0603":
79932
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A0603, {});
80038
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A0603, {});
79933
80039
  case "0805":
79934
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A0805, {});
80040
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A0805, {});
79935
80041
  case "0201":
79936
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A0201, {});
80042
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A0201, {});
79937
80043
  case "01005":
79938
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A01005, {});
80044
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A01005, {});
79939
80045
  case "1206":
79940
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A1206, {});
80046
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A1206, {});
79941
80047
  case "1210":
79942
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A1210, {});
80048
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A1210, {});
79943
80049
  case "2010":
79944
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A2010, {});
80050
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A2010, {});
79945
80051
  case "2512":
79946
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(A2512, {});
80052
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(A2512, {});
79947
80053
  }
79948
80054
  return null;
79949
80055
  };
79950
80056
 
79951
80057
  // lib/SOT-23-3P.tsx
79952
- var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
80058
+ var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
79953
80059
  var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
79954
80060
  const bodyWidth = 1.3;
79955
80061
  const bodyLength10 = 2.9;
@@ -79959,8 +80065,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
79959
80065
  const leadHeight = 0.95;
79960
80066
  const padContactLength = 0.4;
79961
80067
  const extendedBodyDistance = (fullWidth - bodyWidth) / 2 + 0.3;
79962
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
79963
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
80068
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
80069
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
79964
80070
  SmdChipLead,
79965
80071
  {
79966
80072
  rotation: Math.PI,
@@ -79977,7 +80083,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
79977
80083
  },
79978
80084
  1
79979
80085
  ),
79980
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
80086
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
79981
80087
  SmdChipLead,
79982
80088
  {
79983
80089
  rotation: Math.PI,
@@ -79994,7 +80100,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
79994
80100
  },
79995
80101
  2
79996
80102
  ),
79997
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
80103
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
79998
80104
  SmdChipLead,
79999
80105
  {
80000
80106
  position: {
@@ -80010,7 +80116,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
80010
80116
  },
80011
80117
  3
80012
80118
  ),
80013
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
80119
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
80014
80120
  ChipBody,
80015
80121
  {
80016
80122
  center: { x: 0, y: 0, z: 0 },
@@ -80024,7 +80130,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
80024
80130
 
80025
80131
  // lib/SOT-563.tsx
80026
80132
  var import_jscad_fiber20 = __toESM(require_dist(), 1);
80027
- var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
80133
+ var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
80028
80134
  var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
80029
80135
  const bodyWidth = 1.2;
80030
80136
  const bodyLength10 = 1.6;
@@ -80034,24 +80140,24 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
80034
80140
  const leadHeight = 0.13;
80035
80141
  const leadSpacing = 0.5;
80036
80142
  const bodyZOffset = -0.3;
80037
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
80038
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jscad_fiber20.Rotate, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jscad_fiber20.Translate, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jscad_fiber20.Colorize, { color: "grey", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jscad_fiber20.Cuboid, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
80143
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [
80144
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jscad_fiber20.Rotate, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jscad_fiber20.Translate, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jscad_fiber20.Colorize, { color: "grey", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jscad_fiber20.Cuboid, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
80039
80145
  [-1, 0, 1].flatMap((yOffset, index) => [
80040
80146
  // Left lead
80041
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
80147
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
80042
80148
  import_jscad_fiber20.Translate,
80043
80149
  {
80044
80150
  center: [-bodyWidth / 2 - 0.03, yOffset * leadSpacing, 0],
80045
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jscad_fiber20.Cuboid, { size: [leadLength, leadWidth, leadHeight] })
80151
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jscad_fiber20.Cuboid, { size: [leadLength, leadWidth, leadHeight] })
80046
80152
  },
80047
80153
  `left-${index}`
80048
80154
  ),
80049
80155
  // Right lead
80050
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
80156
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
80051
80157
  import_jscad_fiber20.Translate,
80052
80158
  {
80053
80159
  center: [bodyWidth / 2 + 0.03, yOffset * leadSpacing, 0],
80054
- children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_jscad_fiber20.Cuboid, { size: [leadLength, leadWidth, leadHeight] })
80160
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jscad_fiber20.Cuboid, { size: [leadLength, leadWidth, leadHeight] })
80055
80161
  },
80056
80162
  `right-${index}`
80057
80163
  )
@@ -80061,7 +80167,7 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
80061
80167
 
80062
80168
  // lib/SOT-723.tsx
80063
80169
  var import_jscad_fiber21 = __toESM(require_dist(), 1);
80064
- var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
80170
+ var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
80065
80171
  var getCcwSot723Coords = (pn) => {
80066
80172
  if (pn === 1) {
80067
80173
  return { x: 0, y: 0 };
@@ -80079,11 +80185,11 @@ var SOT723 = () => {
80079
80185
  const leadLength = 0.3;
80080
80186
  const leadHeight = 0.1;
80081
80187
  const centerLeadWidth = 0.42;
80082
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [
80083
- /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jscad_fiber21.Rotate, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jscad_fiber21.Translate, { center: [0.475, leadHeight / 2, -0.25], children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jscad_fiber21.Colorize, { color: "grey", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jscad_fiber21.Cuboid, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
80188
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
80189
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_jscad_fiber21.Rotate, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_jscad_fiber21.Translate, { center: [0.475, leadHeight / 2, -0.25], children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_jscad_fiber21.Colorize, { color: "grey", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_jscad_fiber21.Cuboid, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
80084
80190
  [1, 2, 3].map((pn) => {
80085
80191
  const { x, y } = getCcwSot723Coords(pn);
80086
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_jscad_fiber21.Translate, { center: [x, y, 0], children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
80192
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_jscad_fiber21.Translate, { center: [x, y, 0], children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
80087
80193
  import_jscad_fiber21.Cuboid,
80088
80194
  {
80089
80195
  size: [
@@ -80098,7 +80204,7 @@ var SOT723 = () => {
80098
80204
  };
80099
80205
 
80100
80206
  // lib/sod-123.tsx
80101
- var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
80207
+ var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
80102
80208
  var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
80103
80209
  const bodyWidth = 2.9;
80104
80210
  const bodyLength10 = 1.3;
@@ -80110,8 +80216,8 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
80110
80216
  const leadYOffset = leadHeight / 1 - 0.4;
80111
80217
  const bodyYOffset = leadHeight / 2 - 0.4;
80112
80218
  const bodyDistance = (fullWidth - bodyWidth) / 2;
80113
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
80114
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
80219
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)(import_jsx_runtime30.Fragment, { children: [
80220
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
80115
80221
  SmdChipLead,
80116
80222
  {
80117
80223
  position: {
@@ -80127,7 +80233,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
80127
80233
  },
80128
80234
  1
80129
80235
  ),
80130
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
80236
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
80131
80237
  SmdChipLead,
80132
80238
  {
80133
80239
  rotation: Math.PI,
@@ -80144,7 +80250,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
80144
80250
  },
80145
80251
  2
80146
80252
  ),
80147
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
80253
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
80148
80254
  ChipBody,
80149
80255
  {
80150
80256
  center: { x: 0, y: bodyYOffset, z: 0 },
@@ -80179,7 +80285,8 @@ export {
80179
80285
  SOT563,
80180
80286
  SOT723,
80181
80287
  SmdChipLead,
80182
- Tssop
80288
+ Tssop,
80289
+ VSSOP
80183
80290
  };
80184
80291
  /*! Bundled license information:
80185
80292
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "jscad-electronics",
3
3
  "type": "module",
4
- "version": "0.0.28",
4
+ "version": "0.0.30",
5
5
  "main": "./dist/index.js",
6
6
  "repository": {
7
7
  "type": "git",
@@ -32,7 +32,7 @@
32
32
  "vite-tsconfig-paths": "^5.0.1"
33
33
  },
34
34
  "dependencies": {
35
- "@tscircuit/footprinter": "^0.0.132",
35
+ "@tscircuit/footprinter": "^0.0.193",
36
36
  "circuit-json": "^0.0.92"
37
37
  }
38
38
  }