@tscircuit/3d-viewer 0.0.631 → 0.0.632

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.631",
22053
22055
  repository: {
22054
22056
  type: "git",
22055
22057
  url: "https://github.com/tscircuit/3d-viewer"
@@ -38369,6 +38371,7 @@ var iconContainerStyles = {
38369
38371
  flexShrink: 0
38370
38372
  };
38371
38373
  var AppearanceMenu = ({
38374
+ hasAssembly = false,
38372
38375
  showLayerControls = true
38373
38376
  }) => {
38374
38377
  const { visibility, setLayerVisibility } = useLayerVisibility();
@@ -38380,6 +38383,8 @@ var AppearanceMenu = ({
38380
38383
  } = useAppearance();
38381
38384
  const [appearanceSubOpen, setAppearanceSubOpen] = useState40(false);
38382
38385
  const [hoveredItem, setHoveredItem] = useState40(null);
38386
+ const assemblyStyles = { ...itemStyles };
38387
+ if (hoveredItem === "assembly") assemblyStyles.backgroundColor = "#404040";
38383
38388
  return /* @__PURE__ */ jsxs8(Fragment9, { children: [
38384
38389
  /* @__PURE__ */ jsx37(DropdownMenuSeparator, { style: separatorStyles }),
38385
38390
  /* @__PURE__ */ jsxs8(DropdownMenuSub, { onOpenChange: setAppearanceSubOpen, children: [
@@ -38730,6 +38735,24 @@ var AppearanceMenu = ({
38730
38735
  /* @__PURE__ */ jsx37("span", { style: { display: "flex", alignItems: "center" }, children: "Enclosure" })
38731
38736
  ]
38732
38737
  }
38738
+ ),
38739
+ hasAssembly && /* @__PURE__ */ jsxs8(
38740
+ DropdownMenuItem,
38741
+ {
38742
+ style: assemblyStyles,
38743
+ onSelect: (e) => e.preventDefault(),
38744
+ onPointerDown: (e) => {
38745
+ e.preventDefault();
38746
+ setLayerVisibility("assembly", !visibility.assembly);
38747
+ },
38748
+ onMouseEnter: () => setHoveredItem("assembly"),
38749
+ onMouseLeave: () => setHoveredItem(null),
38750
+ onTouchStart: () => setHoveredItem("assembly"),
38751
+ children: [
38752
+ /* @__PURE__ */ jsx37("span", { style: iconContainerStyles, children: visibility.assembly && /* @__PURE__ */ jsx37(CheckIcon, {}) }),
38753
+ /* @__PURE__ */ jsx37("span", { style: { display: "flex", alignItems: "center" }, children: "Assembly" })
38754
+ ]
38755
+ }
38733
38756
  )
38734
38757
  ] })
38735
38758
  ]
@@ -38810,6 +38833,7 @@ var badgeStyles = {
38810
38833
  letterSpacing: "0.3px"
38811
38834
  };
38812
38835
  var ContextMenu = ({
38836
+ hasAssembly = false,
38813
38837
  menuRef,
38814
38838
  menuPos,
38815
38839
  engine,
@@ -39118,7 +39142,13 @@ var ContextMenu = ({
39118
39142
  ]
39119
39143
  }
39120
39144
  ),
39121
- /* @__PURE__ */ jsx38(AppearanceMenu, { showLayerControls: !preRendered }),
39145
+ /* @__PURE__ */ jsx38(
39146
+ AppearanceMenu,
39147
+ {
39148
+ hasAssembly,
39149
+ showLayerControls: !preRendered
39150
+ }
39151
+ ),
39122
39152
  /* @__PURE__ */ jsx38(DropdownMenuSeparator, { style: separatorStyles2 }),
39123
39153
  /* @__PURE__ */ jsx38(
39124
39154
  DropdownMenuItem,
@@ -39991,6 +40021,9 @@ var CadViewerInner = (props) => {
39991
40021
  props.circuitJson || glbSource !== void 0 ? void 0 : props.children
39992
40022
  );
39993
40023
  const circuitJson = props.circuitJson ?? childrenCircuitJson;
40024
+ const hasAssembly = circuitJson.some(
40025
+ (element) => element.type === "cad_component" && !element.pcb_component_id
40026
+ );
39994
40027
  const hasBends = circuitJson.some((element) => element.type === "pcb_bend");
39995
40028
  const hasFlexGeometry = hasBends || circuitJson.some((element) => element.type === "pcb_stiffener");
39996
40029
  const [foldPcbsOverride, setFoldPcbs] = useState45(
@@ -40230,6 +40263,7 @@ var CadViewerInner = (props) => {
40230
40263
  menuVisible && /* @__PURE__ */ jsx41(
40231
40264
  ContextMenu,
40232
40265
  {
40266
+ hasAssembly,
40233
40267
  componentName: selectedCadComponent?.componentName,
40234
40268
  onHideComponent: selectedCadComponent ? () => {
40235
40269
  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.632",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/tscircuit/3d-viewer"