jscad-electronics 0.0.24 → 0.0.26

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
@@ -64,8 +64,8 @@ interface ChipBodyProps {
64
64
  }
65
65
  declare const ChipBody: ({ center, width, length, height, heightAboveSurface, }: ChipBodyProps) => react_jsx_runtime.JSX.Element;
66
66
 
67
- declare const ExtrudedPads: ({ soup, footprint, }: {
68
- soup?: AnyCircuitElement[];
67
+ declare const ExtrudedPads: ({ circuitJson, footprint, }: {
68
+ circuitJson?: AnyCircuitElement[];
69
69
  footprint?: string;
70
70
  }) => react_jsx_runtime.JSX.Element;
71
71
 
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 Fragment22 = 7;
7733
+ var Fragment23 = 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 Fragment22:
7873
+ case Fragment23:
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 !== Fragment22) {
11007
+ if (current2 === null || current2.tag !== Fragment23) {
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 === Fragment22) {
11410
+ if (child.tag === Fragment23) {
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 Fragment22:
16901
+ case Fragment23:
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 Fragment22:
17338
+ case Fragment23:
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(Fragment22, elements, key, mode);
22106
+ var fiber = createFiber(Fragment23, 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 jsx27 = jsxWithValidationDynamic;
23708
- var jsxs23 = jsxWithValidationStatic;
23707
+ var jsx28 = jsxWithValidationDynamic;
23708
+ var jsxs24 = jsxWithValidationStatic;
23709
23709
  exports.Fragment = REACT_FRAGMENT_TYPE;
23710
- exports.jsx = jsx27;
23711
- exports.jsxs = jsxs23;
23710
+ exports.jsx = jsx28;
23711
+ exports.jsxs = jsxs24;
23712
23712
  })();
23713
23713
  }
23714
23714
  }
@@ -77296,9 +77296,9 @@ var require_dist = __commonJS({
77296
77296
  var lib_exports = {};
77297
77297
  __export2(lib_exports, {
77298
77298
  Circle: () => Circle,
77299
- Colorize: () => Colorize10,
77299
+ Colorize: () => Colorize11,
77300
77300
  Cube: () => Cube2,
77301
- Cuboid: () => Cuboid17,
77301
+ Cuboid: () => Cuboid18,
77302
77302
  Custom: () => Custom,
77303
77303
  Cylinder: () => Cylinder3,
77304
77304
  CylinderElliptic: () => CylinderElliptic,
@@ -77309,7 +77309,7 @@ var require_dist = __commonJS({
77309
77309
  ExtrudeRectangular: () => ExtrudeRectangular,
77310
77310
  ExtrudeRotate: () => ExtrudeRotate,
77311
77311
  GeodesicSphere: () => GeodesicSphere,
77312
- Hull: () => Hull2,
77312
+ Hull: () => Hull3,
77313
77313
  HullChain: () => HullChain2,
77314
77314
  JSCadThreeMesh: () => JSCadThreeMesh,
77315
77315
  JsCadView: () => JsCadView,
@@ -77320,7 +77320,7 @@ var require_dist = __commonJS({
77320
77320
  RoundedCuboid: () => RoundedCuboid2,
77321
77321
  RoundedCylinder: () => RoundedCylinder,
77322
77322
  Sphere: () => Sphere2,
77323
- Subtract: () => Subtract2,
77323
+ Subtract: () => Subtract3,
77324
77324
  Torus: () => Torus,
77325
77325
  Translate: () => Translate10,
77326
77326
  Union: () => Union4,
@@ -77715,17 +77715,17 @@ var require_dist = __commonJS({
77715
77715
  };
77716
77716
  return hostConfig2;
77717
77717
  }
77718
- var import_jsx_runtime27 = require_jsx_runtime();
77718
+ var import_jsx_runtime28 = require_jsx_runtime();
77719
77719
  function Circle({ radius }) {
77720
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("circle", { radius });
77720
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("circle", { radius });
77721
77721
  }
77722
77722
  var import_color = __toESM2(require_color(), 1);
77723
- var import_jsx_runtime28 = require_jsx_runtime();
77724
- function Colorize10({ color, children }) {
77723
+ var import_jsx_runtime29 = require_jsx_runtime();
77724
+ function Colorize11({ color, children }) {
77725
77725
  if (!Array.isArray(color)) {
77726
77726
  color = (0, import_color.default)(color).rgb().array().map((v) => v / 255);
77727
77727
  }
77728
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("colorize", { color, children });
77728
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("colorize", { color, children });
77729
77729
  }
77730
77730
  var import_jsx_runtime32 = require_jsx_runtime();
77731
77731
  function withColorProp(WrappedComponent) {
@@ -77734,7 +77734,7 @@ var require_dist = __commonJS({
77734
77734
  if (!color) {
77735
77735
  return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(WrappedComponent, { ...restProps });
77736
77736
  }
77737
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Colorize10, { color, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(WrappedComponent, { ...restProps }) });
77737
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(Colorize11, { color, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(WrappedComponent, { ...restProps }) });
77738
77738
  };
77739
77739
  WithColor.displayName = `WithColor(${WrappedComponent.displayName || WrappedComponent.name || "Component"})`;
77740
77740
  return WithColor;
@@ -77785,7 +77785,7 @@ var require_dist = __commonJS({
77785
77785
  var CuboidBase = ({ size }) => {
77786
77786
  return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("cuboid", { size });
77787
77787
  };
77788
- var Cuboid17 = withOffsetProp(withColorProp(CuboidBase));
77788
+ var Cuboid18 = withOffsetProp(withColorProp(CuboidBase));
77789
77789
  var import_jsx_runtime82 = require_jsx_runtime();
77790
77790
  function Custom({ geometry }) {
77791
77791
  return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("custom", { geometry });
@@ -77945,7 +77945,7 @@ var require_dist = __commonJS({
77945
77945
  var HullBase = ({ children }) => {
77946
77946
  return /* @__PURE__ */ (0, import_jsx_runtime192.jsx)("hull", { children });
77947
77947
  };
77948
- var Hull2 = withOffsetProp(withColorProp(HullBase));
77948
+ var Hull3 = withOffsetProp(withColorProp(HullBase));
77949
77949
  var import_jsx_runtime202 = require_jsx_runtime();
77950
77950
  var HullChainBase = ({ children }) => {
77951
77951
  return /* @__PURE__ */ (0, import_jsx_runtime202.jsx)("hullChain", { children });
@@ -77998,7 +77998,7 @@ var require_dist = __commonJS({
77998
77998
  }
77999
77999
  return /* @__PURE__ */ (0, import_jsx_runtime272.jsx)("subtract", { children });
78000
78000
  };
78001
- var Subtract2 = withOffsetProp(withColorProp(SubtractBase));
78001
+ var Subtract3 = withOffsetProp(withColorProp(SubtractBase));
78002
78002
  var import_jsx_runtime282 = require_jsx_runtime();
78003
78003
  var TorusBase = ({
78004
78004
  innerRadius,
@@ -78023,9 +78023,9 @@ var require_dist = __commonJS({
78023
78023
  );
78024
78024
  };
78025
78025
  var Torus = withOffsetProp(withColorProp(TorusBase));
78026
- var import_jsx_runtime29 = require_jsx_runtime();
78026
+ var import_jsx_runtime292 = require_jsx_runtime();
78027
78027
  function Union4({ children }) {
78028
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("union", { children });
78028
+ return /* @__PURE__ */ (0, import_jsx_runtime292.jsx)("union", { children });
78029
78029
  }
78030
78030
  var import_jsx_runtime30 = require_jsx_runtime();
78031
78031
  var ExtrudeFromSlicesBase = ({
@@ -78734,9 +78734,9 @@ var ChipBody = ({
78734
78734
  width: width10,
78735
78735
  length,
78736
78736
  height: height10,
78737
- heightAboveSurface = 0.15
78737
+ heightAboveSurface: heightAboveSurface2 = 0.15
78738
78738
  }) => {
78739
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jscad_fiber11.Colorize, { color: "#555", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jscad_fiber11.Translate, { offset: center, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jscad_fiber11.Translate, { offset: { x: 0, y: 0, z: height10 / 2 + heightAboveSurface }, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jscad_fiber11.RoundedCuboid, { roundRadius: 0.2, size: [width10, length, height10] }) }) }) });
78739
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jscad_fiber11.Colorize, { color: "#555", children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jscad_fiber11.Translate, { offset: center, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jscad_fiber11.Translate, { offset: { x: 0, y: 0, z: height10 / 2 + heightAboveSurface2 }, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_jscad_fiber11.RoundedCuboid, { roundRadius: 0.2, size: [width10, length, height10] }) }) }) });
78740
78740
  };
78741
78741
 
78742
78742
  // lib/ExtrudedPads.tsx
@@ -78769,22 +78769,25 @@ var FootprintPlatedHole = ({ hole }) => {
78769
78769
  // lib/ExtrudedPads.tsx
78770
78770
  var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
78771
78771
  var ExtrudedPads = ({
78772
- soup,
78772
+ circuitJson,
78773
78773
  footprint
78774
78774
  }) => {
78775
- if (!soup && footprint) {
78776
- soup = fp2.string(footprint).circuitJson();
78775
+ if (!circuitJson && footprint) {
78776
+ circuitJson = fp2.string(footprint).circuitJson();
78777
78777
  }
78778
- if (!soup) throw new Error("No soup or footprint provided to ExtrudedPads");
78778
+ if (!circuitJson)
78779
+ throw new Error("No circuit json or footprint provided to ExtrudedPads");
78779
78780
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
78780
- soup.filter((s) => s.type === "pcb_smtpad").map((pad, i) => (
78781
+ circuitJson.filter((s) => s.type === "pcb_smtpad").map((pad, i) => (
78781
78782
  // biome-ignore lint/suspicious/noArrayIndexKey:
78782
78783
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(FootprintPad, { pad }, i)
78783
78784
  )),
78784
- soup.filter((s) => s.type === "pcb_plated_hole").map((hole, i) => (
78785
- // biome-ignore lint/suspicious/noArrayIndexKey:
78786
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(FootprintPlatedHole, { hole }, i)
78787
- ))
78785
+ circuitJson.filter((s) => s.type === "pcb_plated_hole").map((hole, i) => {
78786
+ return (
78787
+ // biome-ignore lint/suspicious/noArrayIndexKey:
78788
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(FootprintPlatedHole, { hole }, i)
78789
+ );
78790
+ })
78788
78791
  ] });
78789
78792
  };
78790
78793
 
@@ -78882,6 +78885,8 @@ var svgPathPoints = normalizeOnY([
78882
78885
  { x: 22, y: 111 },
78883
78886
  { x: 20, y: 109 }
78884
78887
  ]);
78888
+ var DIP_PIN_HEIGHT = 5.47;
78889
+ var heightAboveSurface = 0.5;
78885
78890
  var DipPinLeg = ({ x, y, z }) => {
78886
78891
  const isRotated = x > 0;
78887
78892
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
@@ -78927,7 +78932,7 @@ var Dip = ({
78927
78932
  {
78928
78933
  x: xRow * crossBodyPinWidth / 2,
78929
78934
  y: yRow * pitch - (numPinsOnEachSide - 1) / 2 * pitch,
78930
- z: 5.47 / 2
78935
+ z: DIP_PIN_HEIGHT / 2 + heightAboveSurface
78931
78936
  },
78932
78937
  i
78933
78938
  );
@@ -78937,9 +78942,9 @@ var Dip = ({
78937
78942
  {
78938
78943
  width: bodyWidth,
78939
78944
  length: numPinsOnEachSide * pitch + 0.5,
78940
- height: 5.1 - 0.5,
78941
- heightAboveSurface: 0.5,
78942
- center: { x: 0, y: 0, z: 0 }
78945
+ height: DIP_PIN_HEIGHT - heightAboveSurface,
78946
+ heightAboveSurface,
78947
+ center: { x: 0, y: 0, z: heightAboveSurface }
78943
78948
  }
78944
78949
  )
78945
78950
  ] });
@@ -78985,37 +78990,38 @@ var Tssop = ({
78985
78990
  pitch,
78986
78991
  bodyWidth
78987
78992
  }) => {
78988
- const sidePinLength = Math.ceil(pinCount / 2);
78993
+ const sidePinCount = Math.ceil(pinCount / 2);
78989
78994
  const fullLength10 = pitch * pinCount / 2 + leadWidth / 2;
78990
- const pinOffsetToCenter = (sidePinLength - 1) * pitch / 2;
78995
+ const pinOffsetToCenter = (sidePinCount - 1) * pitch / 2;
78996
+ const leadThickness = 0.25;
78991
78997
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
78992
- Array.from({ length: sidePinLength }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
78998
+ Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
78993
78999
  SmdChipLead,
78994
79000
  {
78995
79001
  position: {
78996
- x: -bodyWidth / 2 - 0.9,
79002
+ x: -bodyWidth / 2 - leadLength,
78997
79003
  y: i * pitch - pinOffsetToCenter,
78998
- z: 0
79004
+ z: leadThickness / 2
78999
79005
  },
79000
79006
  width: leadWidth,
79001
- thickness: 0.25,
79007
+ thickness: leadThickness,
79002
79008
  padContactLength: leadLength,
79003
- bodyDistance: leadLength + 0.4,
79009
+ bodyDistance: leadLength,
79004
79010
  height: 0.8
79005
79011
  },
79006
79012
  i
79007
79013
  )),
79008
- Array.from({ length: sidePinLength }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
79014
+ Array.from({ length: sidePinCount }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
79009
79015
  SmdChipLead,
79010
79016
  {
79011
79017
  rotation: Math.PI,
79012
79018
  position: {
79013
- x: bodyWidth / 2 + 0.9,
79019
+ x: bodyWidth / 2 + leadLength,
79014
79020
  y: i * pitch - pinOffsetToCenter,
79015
- z: 0
79021
+ z: leadThickness / 2
79016
79022
  },
79017
79023
  width: leadWidth,
79018
- thickness: 0.25,
79024
+ thickness: leadThickness,
79019
79025
  padContactLength: leadLength,
79020
79026
  bodyDistance: leadLength + 0.4,
79021
79027
  height: 0.8
@@ -79025,7 +79031,7 @@ var Tssop = ({
79025
79031
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
79026
79032
  ChipBody,
79027
79033
  {
79028
- center: { x: 0, y: 0, z: 0 },
79034
+ center: { x: 0, y: 0, z: leadThickness / 2 },
79029
79035
  width: bodyWidth,
79030
79036
  length: fullLength10,
79031
79037
  height: 1.5
@@ -79062,7 +79068,7 @@ var QFP = ({
79062
79068
  position: {
79063
79069
  x: -fullWidth / 2,
79064
79070
  y: i * pitch - pinOffsetToCenter,
79065
- z: 0
79071
+ z: leadThickness / 2
79066
79072
  },
79067
79073
  width: leadWidth,
79068
79074
  thickness: leadThickness,
@@ -79079,7 +79085,7 @@ var QFP = ({
79079
79085
  position: {
79080
79086
  x: fullWidth / 2,
79081
79087
  y: i * pitch - pinOffsetToCenter,
79082
- z: 0
79088
+ z: leadThickness / 2
79083
79089
  },
79084
79090
  width: leadWidth,
79085
79091
  thickness: leadThickness,
@@ -79096,7 +79102,7 @@ var QFP = ({
79096
79102
  position: {
79097
79103
  x: i * pitch - pinOffsetToCenter,
79098
79104
  y: -fullLength10 / 2,
79099
- z: 0
79105
+ z: leadThickness / 2
79100
79106
  },
79101
79107
  width: leadWidth,
79102
79108
  thickness: leadThickness,
@@ -79113,7 +79119,7 @@ var QFP = ({
79113
79119
  position: {
79114
79120
  x: i * pitch - pinOffsetToCenter,
79115
79121
  y: fullLength10 / 2,
79116
- z: 0
79122
+ z: leadThickness / 2
79117
79123
  },
79118
79124
  width: leadWidth,
79119
79125
  thickness: leadThickness,
@@ -79126,7 +79132,7 @@ var QFP = ({
79126
79132
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
79127
79133
  ChipBody,
79128
79134
  {
79129
- center: { x: 0, y: 0, z: leadHeight / 2 },
79135
+ center: { x: 0, y: 0, z: leadThickness / 2 },
79130
79136
  width: bodyWidth,
79131
79137
  length: bodyLength10,
79132
79138
  height: 1.5
@@ -79392,7 +79398,7 @@ var QFN = ({
79392
79398
  pinPositions.map((p, i) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
79393
79399
  import_jscad_fiber17.Cuboid,
79394
79400
  {
79395
- center: { x: p.x, y: p.y, z: 0 },
79401
+ center: { x: p.x, y: p.y, z: thermalPadThickness / 2 },
79396
79402
  size: [p.pw, p.pl, thermalPadThickness]
79397
79403
  },
79398
79404
  i
@@ -79400,7 +79406,7 @@ var QFN = ({
79400
79406
  thermalPadSize?.length !== void 0 && thermalPadSize?.width !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
79401
79407
  import_jscad_fiber17.Cuboid,
79402
79408
  {
79403
- center: { x: 0, y: 0, z: 0 },
79409
+ center: { x: 0, y: 0, z: thermalPadThickness / 2 },
79404
79410
  size: [
79405
79411
  thermalPadSize.width,
79406
79412
  thermalPadSize.length,
@@ -79521,15 +79527,78 @@ var SOT235 = () => {
79521
79527
  };
79522
79528
  var SOT_235_default = SOT235;
79523
79529
 
79524
- // lib/Footprinter3d.tsx
79530
+ // lib/FemaleHeader.tsx
79531
+ var import_jscad_fiber18 = __toESM(require_dist(), 1);
79525
79532
  var import_jsx_runtime22 = __toESM(require_jsx_runtime(), 1);
79533
+ var FemaleHeader = ({
79534
+ numberOfPins,
79535
+ pitch = 2.54,
79536
+ legsLength = 3
79537
+ }) => {
79538
+ const pinThickness = 0.63;
79539
+ const bodyHeight = 5;
79540
+ const bodyWidth = numberOfPins * pitch;
79541
+ const gapWidth = pinThickness * 1.6;
79542
+ const xoff = -((numberOfPins - 1) / 2) * pitch;
79543
+ 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: [
79544
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
79545
+ import_jscad_fiber18.Cuboid,
79546
+ {
79547
+ color: "#000",
79548
+ size: [bodyWidth, pinThickness * 3, bodyHeight],
79549
+ center: [0, 0, bodyHeight / 2]
79550
+ }
79551
+ ),
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
+ ))
79559
+ ] }) });
79560
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jsx_runtime22.Fragment, { children: [
79561
+ 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: [
79563
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_jscad_fiber18.Hull, { children: [
79564
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
79565
+ import_jscad_fiber18.Cuboid,
79566
+ {
79567
+ color: "silver",
79568
+ size: [pinThickness, pinThickness, legsLength * 0.9],
79569
+ center: [xoff + i * pitch, 0, -legsLength / 2 * 0.9]
79570
+ }
79571
+ ),
79572
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
79573
+ import_jscad_fiber18.Cuboid,
79574
+ {
79575
+ color: "silver",
79576
+ size: [pinThickness / 1.8, pinThickness / 1.8, legsLength],
79577
+ center: [xoff + i * pitch, 0, -legsLength / 2]
79578
+ }
79579
+ )
79580
+ ] }),
79581
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
79582
+ import_jscad_fiber18.Cuboid,
79583
+ {
79584
+ color: "silver",
79585
+ size: [gapWidth, gapWidth, gapWidth * 0.5],
79586
+ center: [xoff + i * pitch, 0, gapWidth / 2 * 0.5]
79587
+ }
79588
+ )
79589
+ ] }) }))
79590
+ ] });
79591
+ };
79592
+
79593
+ // lib/Footprinter3d.tsx
79594
+ var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);
79526
79595
  var Footprinter3d = ({ footprint }) => {
79527
79596
  const fpJson = fp3.string(footprint).json();
79528
79597
  switch (fpJson.fn) {
79529
79598
  case "dip":
79530
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
79599
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Dip, { numPins: fpJson.num_pins, pitch: fpJson.p, bodyWidth: fpJson.w });
79531
79600
  case "tssop":
79532
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
79601
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
79533
79602
  Tssop,
79534
79603
  {
79535
79604
  pinCount: fpJson.num_pins,
@@ -79540,7 +79609,7 @@ var Footprinter3d = ({ footprint }) => {
79540
79609
  }
79541
79610
  );
79542
79611
  case "qfp":
79543
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
79612
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
79544
79613
  QFP,
79545
79614
  {
79546
79615
  pinCount: fpJson.num_pins,
@@ -79551,7 +79620,7 @@ var Footprinter3d = ({ footprint }) => {
79551
79620
  }
79552
79621
  );
79553
79622
  case "qfn":
79554
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
79623
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
79555
79624
  qfn_default,
79556
79625
  {
79557
79626
  num_pins: fpJson.num_pins,
@@ -79567,33 +79636,36 @@ var Footprinter3d = ({ footprint }) => {
79567
79636
  }
79568
79637
  );
79569
79638
  case "pinrow":
79570
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(PinRow, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
79639
+ if (fpJson.male)
79640
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(PinRow, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
79641
+ if (fpJson.female)
79642
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(FemaleHeader, { numberOfPins: fpJson.num_pins, pitch: fpJson.p });
79571
79643
  case "cap": {
79572
79644
  switch (fpJson.imperial) {
79573
79645
  case "0402":
79574
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A0402, { color: "#856c4d" });
79646
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A0402, { color: "#856c4d" });
79575
79647
  case "0603":
79576
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A0603, { color: "#856c4d" });
79648
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A0603, { color: "#856c4d" });
79577
79649
  case "0805":
79578
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A0805, { color: "#856c4d" });
79650
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A0805, { color: "#856c4d" });
79579
79651
  case "0201":
79580
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A0201, { color: "#856c4d" });
79652
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A0201, { color: "#856c4d" });
79581
79653
  case "01005":
79582
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A01005, { color: "#856c4d" });
79654
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A01005, { color: "#856c4d" });
79583
79655
  case "1206":
79584
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A1206, { color: "#856c4d" });
79656
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A1206, { color: "#856c4d" });
79585
79657
  case "1210":
79586
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A1210, { color: "#856c4d" });
79658
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A1210, { color: "#856c4d" });
79587
79659
  case "2010":
79588
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A2010, { color: "#856c4d" });
79660
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A2010, { color: "#856c4d" });
79589
79661
  case "2512":
79590
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A2512, { color: "#856c4d" });
79662
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A2512, { color: "#856c4d" });
79591
79663
  }
79592
79664
  }
79593
79665
  case "sot235":
79594
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(SOT_235_default, {});
79666
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(SOT_235_default, {});
79595
79667
  case "soic":
79596
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
79668
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
79597
79669
  Tssop,
79598
79670
  {
79599
79671
  pinCount: fpJson.num_pins,
@@ -79606,29 +79678,29 @@ var Footprinter3d = ({ footprint }) => {
79606
79678
  }
79607
79679
  switch (fpJson.imperial) {
79608
79680
  case "0402":
79609
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A0402, {});
79681
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A0402, {});
79610
79682
  case "0603":
79611
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A0603, {});
79683
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A0603, {});
79612
79684
  case "0805":
79613
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A0805, {});
79685
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A0805, {});
79614
79686
  case "0201":
79615
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A0201, {});
79687
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A0201, {});
79616
79688
  case "01005":
79617
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A01005, {});
79689
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A01005, {});
79618
79690
  case "1206":
79619
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A1206, {});
79691
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A1206, {});
79620
79692
  case "1210":
79621
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A1210, {});
79693
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A1210, {});
79622
79694
  case "2010":
79623
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A2010, {});
79695
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A2010, {});
79624
79696
  case "2512":
79625
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(A2512, {});
79697
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(A2512, {});
79626
79698
  }
79627
79699
  return null;
79628
79700
  };
79629
79701
 
79630
79702
  // lib/SOT-23-3P.tsx
79631
- var import_jsx_runtime23 = __toESM(require_jsx_runtime(), 1);
79703
+ var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
79632
79704
  var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
79633
79705
  const bodyWidth = 1.3;
79634
79706
  const bodyLength10 = 2.9;
@@ -79638,8 +79710,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
79638
79710
  const leadHeight = 0.95;
79639
79711
  const padContactLength = 0.4;
79640
79712
  const extendedBodyDistance = (fullWidth - bodyWidth) / 2 + 0.3;
79641
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
79642
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
79713
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_jsx_runtime24.Fragment, { children: [
79714
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
79643
79715
  SmdChipLead,
79644
79716
  {
79645
79717
  rotation: Math.PI,
@@ -79656,7 +79728,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
79656
79728
  },
79657
79729
  1
79658
79730
  ),
79659
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
79731
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
79660
79732
  SmdChipLead,
79661
79733
  {
79662
79734
  rotation: Math.PI,
@@ -79673,7 +79745,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
79673
79745
  },
79674
79746
  2
79675
79747
  ),
79676
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
79748
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
79677
79749
  SmdChipLead,
79678
79750
  {
79679
79751
  position: {
@@ -79689,7 +79761,7 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
79689
79761
  },
79690
79762
  3
79691
79763
  ),
79692
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
79764
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
79693
79765
  ChipBody,
79694
79766
  {
79695
79767
  center: { x: 0, y: 0, z: 0 },
@@ -79702,8 +79774,8 @@ var SOT233P = ({ fullWidth = 2.9, fullLength: fullLength10 = 2.8 }) => {
79702
79774
  };
79703
79775
 
79704
79776
  // lib/SOT-563.tsx
79705
- var import_jscad_fiber18 = __toESM(require_dist(), 1);
79706
- var import_jsx_runtime24 = __toESM(require_jsx_runtime(), 1);
79777
+ var import_jscad_fiber19 = __toESM(require_dist(), 1);
79778
+ var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
79707
79779
  var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
79708
79780
  const bodyWidth = 1.2;
79709
79781
  const bodyLength10 = 1.6;
@@ -79713,24 +79785,24 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
79713
79785
  const leadHeight = 0.13;
79714
79786
  const leadSpacing = 0.5;
79715
79787
  const bodyZOffset = -0.3;
79716
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_jsx_runtime24.Fragment, { children: [
79717
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jscad_fiber18.Rotate, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jscad_fiber18.Translate, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jscad_fiber18.Colorize, { color: "grey", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jscad_fiber18.Cuboid, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
79788
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
79789
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jscad_fiber19.Rotate, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jscad_fiber19.Translate, { center: [0, 0, bodyZOffset], children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jscad_fiber19.Colorize, { color: "grey", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jscad_fiber19.Cuboid, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
79718
79790
  [-1, 0, 1].flatMap((yOffset, index) => [
79719
79791
  // Left lead
79720
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
79721
- import_jscad_fiber18.Translate,
79792
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
79793
+ import_jscad_fiber19.Translate,
79722
79794
  {
79723
79795
  center: [-bodyWidth / 2 - 0.03, yOffset * leadSpacing, 0],
79724
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jscad_fiber18.Cuboid, { size: [leadLength, leadWidth, leadHeight] })
79796
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jscad_fiber19.Cuboid, { size: [leadLength, leadWidth, leadHeight] })
79725
79797
  },
79726
79798
  `left-${index}`
79727
79799
  ),
79728
79800
  // Right lead
79729
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
79730
- import_jscad_fiber18.Translate,
79801
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
79802
+ import_jscad_fiber19.Translate,
79731
79803
  {
79732
79804
  center: [bodyWidth / 2 + 0.03, yOffset * leadSpacing, 0],
79733
- children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_jscad_fiber18.Cuboid, { size: [leadLength, leadWidth, leadHeight] })
79805
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jscad_fiber19.Cuboid, { size: [leadLength, leadWidth, leadHeight] })
79734
79806
  },
79735
79807
  `right-${index}`
79736
79808
  )
@@ -79739,8 +79811,8 @@ var SOT563 = ({ fullWidth = 1.94, fullLength: fullLength10 = 1.6 }) => {
79739
79811
  };
79740
79812
 
79741
79813
  // lib/SOT-723.tsx
79742
- var import_jscad_fiber19 = __toESM(require_dist(), 1);
79743
- var import_jsx_runtime25 = __toESM(require_jsx_runtime(), 1);
79814
+ var import_jscad_fiber20 = __toESM(require_dist(), 1);
79815
+ var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
79744
79816
  var getCcwSot723Coords = (pn) => {
79745
79817
  if (pn === 1) {
79746
79818
  return { x: 0, y: 0 };
@@ -79758,12 +79830,12 @@ var SOT723 = () => {
79758
79830
  const leadLength = 0.3;
79759
79831
  const leadHeight = 0.1;
79760
79832
  const centerLeadWidth = 0.42;
79761
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
79762
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jscad_fiber19.Rotate, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jscad_fiber19.Translate, { center: [0.475, leadHeight / 2, -0.25], children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jscad_fiber19.Colorize, { color: "grey", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jscad_fiber19.Cuboid, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
79833
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
79834
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_jscad_fiber20.Rotate, { rotation: [45 * Math.PI, 0, 0], children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_jscad_fiber20.Translate, { center: [0.475, leadHeight / 2, -0.25], children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_jscad_fiber20.Colorize, { color: "grey", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_jscad_fiber20.Cuboid, { size: [bodyWidth, bodyLength10, bodyHeight] }) }) }) }),
79763
79835
  [1, 2, 3].map((pn) => {
79764
79836
  const { x, y } = getCcwSot723Coords(pn);
79765
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_jscad_fiber19.Translate, { center: [x, y, 0], children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
79766
- import_jscad_fiber19.Cuboid,
79837
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_jscad_fiber20.Translate, { center: [x, y, 0], children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
79838
+ import_jscad_fiber20.Cuboid,
79767
79839
  {
79768
79840
  size: [
79769
79841
  leadLength,
@@ -79777,7 +79849,7 @@ var SOT723 = () => {
79777
79849
  };
79778
79850
 
79779
79851
  // lib/sod-123.tsx
79780
- var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
79852
+ var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
79781
79853
  var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
79782
79854
  const bodyWidth = 2.9;
79783
79855
  const bodyLength10 = 1.3;
@@ -79789,8 +79861,8 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
79789
79861
  const leadYOffset = leadHeight / 1 - 0.4;
79790
79862
  const bodyYOffset = leadHeight / 2 - 0.4;
79791
79863
  const bodyDistance = (fullWidth - bodyWidth) / 2;
79792
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_jsx_runtime26.Fragment, { children: [
79793
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
79864
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
79865
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
79794
79866
  SmdChipLead,
79795
79867
  {
79796
79868
  position: {
@@ -79806,7 +79878,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
79806
79878
  },
79807
79879
  1
79808
79880
  ),
79809
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
79881
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
79810
79882
  SmdChipLead,
79811
79883
  {
79812
79884
  rotation: Math.PI,
@@ -79823,7 +79895,7 @@ var SOD123 = ({ fullWidth = 3.8, fullLength: fullLength10 = 1.6 }) => {
79823
79895
  },
79824
79896
  2
79825
79897
  ),
79826
- /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
79898
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
79827
79899
  ChipBody,
79828
79900
  {
79829
79901
  center: { x: 0, y: bodyYOffset, z: 0 },
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "jscad-electronics",
3
3
  "type": "module",
4
- "version": "0.0.24",
4
+ "version": "0.0.26",
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.87",
35
+ "@tscircuit/footprinter": "^0.0.132",
36
36
  "circuit-json": "^0.0.92"
37
37
  }
38
38
  }