@tscircuit/3d-viewer 0.0.631 → 0.0.633

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
@@ -121,6 +121,7 @@ interface LayerVisibilityState {
121
121
  * check openings against the board, opaque to inspect the print itself.
122
122
  */
123
123
  enclosure: EnclosureVisibility;
124
+ assembly: boolean;
124
125
  }
125
126
  type EnclosureVisibility = "hidden" | "translucent" | "opaque";
126
127
 
package/dist/index.js CHANGED
@@ -19385,7 +19385,8 @@ var defaultVisibility = {
19385
19385
  pcbNotes: false,
19386
19386
  backgroundStart: true,
19387
19387
  backgroundEnd: true,
19388
- enclosure: "translucent"
19388
+ enclosure: "translucent",
19389
+ assembly: true
19389
19390
  };
19390
19391
  var LayerVisibilityContext = createContext4(void 0);
19391
19392
  var LayerVisibilityProvider = ({ children }) => {
@@ -21226,6 +21227,7 @@ var AnyCadComponent = ({
21226
21227
  }
21227
21228
  );
21228
21229
  }
21230
+ if (!cad_component.pcb_component_id && !visibility.assembly) return null;
21229
21231
  if (isEnclosure) {
21230
21232
  if (visibility.enclosure === "hidden") return null;
21231
21233
  } else if (cad_component.show_as_translucent_model) {
@@ -22049,7 +22051,7 @@ import * as THREE30 from "three";
22049
22051
  // package.json
22050
22052
  var package_default = {
22051
22053
  name: "@tscircuit/3d-viewer",
22052
- version: "0.0.630",
22054
+ version: "0.0.632",
22053
22055
  repository: {
22054
22056
  type: "git",
22055
22057
  url: "https://github.com/tscircuit/3d-viewer"
@@ -22090,7 +22092,7 @@ var package_default = {
22090
22092
  "@jscad/stl-serializer": "^2.1.20",
22091
22093
  "@tscircuit/cableprinter": "^0.0.6",
22092
22094
  "circuit-json": "^0.0.525",
22093
- "circuit-to-canvas": "^0.0.135",
22095
+ "circuit-to-canvas": "^0.0.139",
22094
22096
  "jscad-electronics": "^0.0.213",
22095
22097
  "react-hot-toast": "^2.6.0",
22096
22098
  three: "^0.165.0",
@@ -25931,7 +25933,6 @@ var toRgb = (colorArr) => {
25931
25933
  b * 255
25932
25934
  )})`;
25933
25935
  };
25934
- var COPPER_POUR_OPACITY_COMPENSATION_PASSES = 8;
25935
25936
  function createCopperPourTextureForLayer({
25936
25937
  layer,
25937
25938
  circuitJson,
@@ -26025,18 +26026,11 @@ function createCopperPourTextureForLayer({
26025
26026
  });
26026
26027
  drawer.drawElements(elementsToDraw, {
26027
26028
  layers: [pcbRenderLayer],
26029
+ copperPourOpacity: 1,
26028
26030
  drawSoldermask: false,
26029
26031
  drawSoldermaskTop: false,
26030
26032
  drawSoldermaskBottom: false
26031
26033
  });
26032
- for (let i = 1; i < COPPER_POUR_OPACITY_COMPENSATION_PASSES; i += 1) {
26033
- drawer.drawElements(elementsToDraw, {
26034
- layers: [pcbRenderLayer],
26035
- drawSoldermask: false,
26036
- drawSoldermaskTop: false,
26037
- drawSoldermaskBottom: false
26038
- });
26039
- }
26040
26034
  };
26041
26035
  const coveredPours = poursOnLayer.filter(
26042
26036
  (p) => p.covered_with_solder_mask !== false
@@ -38369,6 +38363,7 @@ var iconContainerStyles = {
38369
38363
  flexShrink: 0
38370
38364
  };
38371
38365
  var AppearanceMenu = ({
38366
+ hasAssembly = false,
38372
38367
  showLayerControls = true
38373
38368
  }) => {
38374
38369
  const { visibility, setLayerVisibility } = useLayerVisibility();
@@ -38380,6 +38375,8 @@ var AppearanceMenu = ({
38380
38375
  } = useAppearance();
38381
38376
  const [appearanceSubOpen, setAppearanceSubOpen] = useState40(false);
38382
38377
  const [hoveredItem, setHoveredItem] = useState40(null);
38378
+ const assemblyStyles = { ...itemStyles };
38379
+ if (hoveredItem === "assembly") assemblyStyles.backgroundColor = "#404040";
38383
38380
  return /* @__PURE__ */ jsxs8(Fragment9, { children: [
38384
38381
  /* @__PURE__ */ jsx37(DropdownMenuSeparator, { style: separatorStyles }),
38385
38382
  /* @__PURE__ */ jsxs8(DropdownMenuSub, { onOpenChange: setAppearanceSubOpen, children: [
@@ -38730,6 +38727,24 @@ var AppearanceMenu = ({
38730
38727
  /* @__PURE__ */ jsx37("span", { style: { display: "flex", alignItems: "center" }, children: "Enclosure" })
38731
38728
  ]
38732
38729
  }
38730
+ ),
38731
+ hasAssembly && /* @__PURE__ */ jsxs8(
38732
+ DropdownMenuItem,
38733
+ {
38734
+ style: assemblyStyles,
38735
+ onSelect: (e) => e.preventDefault(),
38736
+ onPointerDown: (e) => {
38737
+ e.preventDefault();
38738
+ setLayerVisibility("assembly", !visibility.assembly);
38739
+ },
38740
+ onMouseEnter: () => setHoveredItem("assembly"),
38741
+ onMouseLeave: () => setHoveredItem(null),
38742
+ onTouchStart: () => setHoveredItem("assembly"),
38743
+ children: [
38744
+ /* @__PURE__ */ jsx37("span", { style: iconContainerStyles, children: visibility.assembly && /* @__PURE__ */ jsx37(CheckIcon, {}) }),
38745
+ /* @__PURE__ */ jsx37("span", { style: { display: "flex", alignItems: "center" }, children: "Assembly" })
38746
+ ]
38747
+ }
38733
38748
  )
38734
38749
  ] })
38735
38750
  ]
@@ -38810,6 +38825,7 @@ var badgeStyles = {
38810
38825
  letterSpacing: "0.3px"
38811
38826
  };
38812
38827
  var ContextMenu = ({
38828
+ hasAssembly = false,
38813
38829
  menuRef,
38814
38830
  menuPos,
38815
38831
  engine,
@@ -39118,7 +39134,13 @@ var ContextMenu = ({
39118
39134
  ]
39119
39135
  }
39120
39136
  ),
39121
- /* @__PURE__ */ jsx38(AppearanceMenu, { showLayerControls: !preRendered }),
39137
+ /* @__PURE__ */ jsx38(
39138
+ AppearanceMenu,
39139
+ {
39140
+ hasAssembly,
39141
+ showLayerControls: !preRendered
39142
+ }
39143
+ ),
39122
39144
  /* @__PURE__ */ jsx38(DropdownMenuSeparator, { style: separatorStyles2 }),
39123
39145
  /* @__PURE__ */ jsx38(
39124
39146
  DropdownMenuItem,
@@ -39991,6 +40013,9 @@ var CadViewerInner = (props) => {
39991
40013
  props.circuitJson || glbSource !== void 0 ? void 0 : props.children
39992
40014
  );
39993
40015
  const circuitJson = props.circuitJson ?? childrenCircuitJson;
40016
+ const hasAssembly = circuitJson.some(
40017
+ (element) => element.type === "cad_component" && !element.pcb_component_id
40018
+ );
39994
40019
  const hasBends = circuitJson.some((element) => element.type === "pcb_bend");
39995
40020
  const hasFlexGeometry = hasBends || circuitJson.some((element) => element.type === "pcb_stiffener");
39996
40021
  const [foldPcbsOverride, setFoldPcbs] = useState45(
@@ -40230,6 +40255,7 @@ var CadViewerInner = (props) => {
40230
40255
  menuVisible && /* @__PURE__ */ jsx41(
40231
40256
  ContextMenu,
40232
40257
  {
40258
+ hasAssembly,
40233
40259
  componentName: selectedCadComponent?.componentName,
40234
40260
  onHideComponent: selectedCadComponent ? () => {
40235
40261
  hideComponent(selectedCadComponent.cad_component_id);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tscircuit/3d-viewer",
3
- "version": "0.0.631",
3
+ "version": "0.0.633",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/tscircuit/3d-viewer"
@@ -41,7 +41,7 @@
41
41
  "@jscad/stl-serializer": "^2.1.20",
42
42
  "@tscircuit/cableprinter": "^0.0.6",
43
43
  "circuit-json": "^0.0.525",
44
- "circuit-to-canvas": "^0.0.135",
44
+ "circuit-to-canvas": "^0.0.139",
45
45
  "jscad-electronics": "^0.0.213",
46
46
  "react-hot-toast": "^2.6.0",
47
47
  "three": "^0.165.0",