@tscircuit/3d-viewer 0.0.526 → 0.0.528

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
@@ -61,6 +61,7 @@ interface LayerVisibilityState {
61
61
  modelsMarkedDNP: boolean;
62
62
  modelBoundingBoxes: boolean;
63
63
  threedAxis: boolean;
64
+ pcbNotes: boolean;
64
65
  backgroundStart: boolean;
65
66
  backgroundEnd: boolean;
66
67
  }
package/dist/index.js CHANGED
@@ -14469,6 +14469,7 @@ var defaultVisibility = {
14469
14469
  modelsMarkedDNP: false,
14470
14470
  modelBoundingBoxes: false,
14471
14471
  threedAxis: false,
14472
+ pcbNotes: false,
14472
14473
  backgroundStart: true,
14473
14474
  backgroundEnd: true
14474
14475
  };
@@ -28768,7 +28769,7 @@ import * as THREE16 from "three";
28768
28769
  // package.json
28769
28770
  var package_default = {
28770
28771
  name: "@tscircuit/3d-viewer",
28771
- version: "0.0.525",
28772
+ version: "0.0.527",
28772
28773
  main: "./dist/index.js",
28773
28774
  module: "./dist/index.js",
28774
28775
  type: "module",
@@ -28797,8 +28798,8 @@ var package_default = {
28797
28798
  dependencies: {
28798
28799
  "@jscad/regl-renderer": "^2.6.12",
28799
28800
  "@jscad/stl-serializer": "^2.1.20",
28800
- "circuit-json": "^0.0.372",
28801
- "circuit-to-canvas": "^0.0.83",
28801
+ "circuit-json": "^0.0.391",
28802
+ "circuit-to-canvas": "^0.0.87",
28802
28803
  "react-hot-toast": "^2.6.0",
28803
28804
  three: "^0.165.0",
28804
28805
  "three-stdlib": "^2.36.0",
@@ -31924,8 +31925,16 @@ function createPadTextureForLayer({
31924
31925
  }
31925
31926
 
31926
31927
  // src/utils/panel-outline-texture.ts
31927
- import * as THREE20 from "three";
31928
31928
  import { su as su6 } from "@tscircuit/circuit-json-util";
31929
+ import * as THREE20 from "three";
31930
+ var resolvePanelIdForTexture = (circuitJson) => {
31931
+ const panels = circuitJson.filter(
31932
+ (e) => e.type === "pcb_panel"
31933
+ );
31934
+ if (panels.length === 0) return null;
31935
+ if (panels.length === 1) return panels[0].pcb_panel_id;
31936
+ return null;
31937
+ };
31929
31938
  function createPanelOutlineTextureForLayer({
31930
31939
  layer,
31931
31940
  circuitJson,
@@ -31933,7 +31942,12 @@ function createPanelOutlineTextureForLayer({
31933
31942
  outlineColor = "black",
31934
31943
  traceTextureResolution
31935
31944
  }) {
31936
- const boardsInPanel = su6(circuitJson).pcb_board.list().filter((b) => b.pcb_panel_id === panelData.pcb_board_id);
31945
+ const panelId = resolvePanelIdForTexture(circuitJson);
31946
+ if (!panelId) return null;
31947
+ const allBoards = su6(circuitJson).pcb_board.list();
31948
+ const boardsInPanel = allBoards.filter(
31949
+ (b) => b.pcb_panel_id === panelId || b.position_mode === "relative_to_panel_anchor" && !b.pcb_panel_id
31950
+ );
31937
31951
  if (boardsInPanel.length === 0) {
31938
31952
  return null;
31939
31953
  }
@@ -32988,7 +33002,8 @@ function createCombinedBoardTextures({
32988
33002
  boardData,
32989
33003
  traceTextureResolution
32990
33004
  }) : null;
32991
- const pcbNoteTexture = showSilkscreen ? createPcbNoteTextureForLayer({
33005
+ const showPcbNotes = visibility?.pcbNotes ?? false;
33006
+ const pcbNoteTexture = showPcbNotes ? createPcbNoteTextureForLayer({
32992
33007
  layer,
32993
33008
  circuitJson,
32994
33009
  boardData,
@@ -36631,10 +36646,6 @@ var oppositeSideMap = {
36631
36646
  bottom: "top",
36632
36647
  top: "bottom"
36633
36648
  };
36634
- var oppositeAlignmentMap = {
36635
- start: "end",
36636
- end: "start"
36637
- };
36638
36649
  function clamp2(start, value, end) {
36639
36650
  return max(start, min(value, end));
36640
36651
  }
@@ -36653,9 +36664,9 @@ function getOppositeAxis(axis) {
36653
36664
  function getAxisLength(axis) {
36654
36665
  return axis === "y" ? "height" : "width";
36655
36666
  }
36656
- var yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]);
36657
36667
  function getSideAxis(placement) {
36658
- return yAxisSides.has(getSide(placement)) ? "y" : "x";
36668
+ const firstChar = placement[0];
36669
+ return firstChar === "t" || firstChar === "b" ? "y" : "x";
36659
36670
  }
36660
36671
  function getAlignmentAxis(placement) {
36661
36672
  return getOppositeAxis(getSideAxis(placement));
@@ -36678,7 +36689,7 @@ function getExpandedPlacements(placement) {
36678
36689
  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
36679
36690
  }
36680
36691
  function getOppositeAlignmentPlacement(placement) {
36681
- return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);
36692
+ return placement.includes("start") ? placement.replace("start", "end") : placement.replace("end", "start");
36682
36693
  }
36683
36694
  var lrPlacement = ["left", "right"];
36684
36695
  var rlPlacement = ["right", "left"];
@@ -36709,7 +36720,8 @@ function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
36709
36720
  return list;
36710
36721
  }
36711
36722
  function getOppositePlacement(placement) {
36712
- return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);
36723
+ const side = getSide(placement);
36724
+ return oppositeSideMap[side] + placement.slice(side.length);
36713
36725
  }
36714
36726
  function expandPaddingObject(padding) {
36715
36727
  return {
@@ -36859,6 +36871,7 @@ async function detectOverflow(state, options) {
36859
36871
  right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
36860
36872
  };
36861
36873
  }
36874
+ var MAX_RESET_COUNT = 50;
36862
36875
  var computePosition = async (reference, floating, config) => {
36863
36876
  const {
36864
36877
  placement = "bottom",
@@ -36866,7 +36879,10 @@ var computePosition = async (reference, floating, config) => {
36866
36879
  middleware = [],
36867
36880
  platform: platform2
36868
36881
  } = config;
36869
- const validMiddleware = middleware.filter(Boolean);
36882
+ const platformWithDetectOverflow = platform2.detectOverflow ? platform2 : {
36883
+ ...platform2,
36884
+ detectOverflow
36885
+ };
36870
36886
  const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(floating));
36871
36887
  let rects = await platform2.getElementRects({
36872
36888
  reference,
@@ -36878,14 +36894,17 @@ var computePosition = async (reference, floating, config) => {
36878
36894
  y
36879
36895
  } = computeCoordsFromPlacement(rects, placement, rtl);
36880
36896
  let statefulPlacement = placement;
36881
- let middlewareData = {};
36882
36897
  let resetCount = 0;
36883
- for (let i = 0; i < validMiddleware.length; i++) {
36884
- var _platform$detectOverf;
36898
+ const middlewareData = {};
36899
+ for (let i = 0; i < middleware.length; i++) {
36900
+ const currentMiddleware = middleware[i];
36901
+ if (!currentMiddleware) {
36902
+ continue;
36903
+ }
36885
36904
  const {
36886
36905
  name,
36887
36906
  fn
36888
- } = validMiddleware[i];
36907
+ } = currentMiddleware;
36889
36908
  const {
36890
36909
  x: nextX,
36891
36910
  y: nextY,
@@ -36899,10 +36918,7 @@ var computePosition = async (reference, floating, config) => {
36899
36918
  strategy,
36900
36919
  middlewareData,
36901
36920
  rects,
36902
- platform: {
36903
- ...platform2,
36904
- detectOverflow: (_platform$detectOverf = platform2.detectOverflow) != null ? _platform$detectOverf : detectOverflow
36905
- },
36921
+ platform: platformWithDetectOverflow,
36906
36922
  elements: {
36907
36923
  reference,
36908
36924
  floating
@@ -36910,14 +36926,11 @@ var computePosition = async (reference, floating, config) => {
36910
36926
  });
36911
36927
  x = nextX != null ? nextX : x;
36912
36928
  y = nextY != null ? nextY : y;
36913
- middlewareData = {
36914
- ...middlewareData,
36915
- [name]: {
36916
- ...middlewareData[name],
36917
- ...data
36918
- }
36929
+ middlewareData[name] = {
36930
+ ...middlewareData[name],
36931
+ ...data
36919
36932
  };
36920
- if (reset && resetCount <= 50) {
36933
+ if (reset && resetCount < MAX_RESET_COUNT) {
36921
36934
  resetCount++;
36922
36935
  if (typeof reset === "object") {
36923
36936
  if (reset.placement) {
@@ -37505,7 +37518,6 @@ function isShadowRoot(value) {
37505
37518
  }
37506
37519
  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
37507
37520
  }
37508
- var invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]);
37509
37521
  function isOverflowElement(element) {
37510
37522
  const {
37511
37523
  overflow,
@@ -37513,29 +37525,31 @@ function isOverflowElement(element) {
37513
37525
  overflowY,
37514
37526
  display
37515
37527
  } = getComputedStyle2(element);
37516
- return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
37528
+ return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== "inline" && display !== "contents";
37517
37529
  }
37518
- var tableElements = /* @__PURE__ */ new Set(["table", "td", "th"]);
37519
37530
  function isTableElement(element) {
37520
- return tableElements.has(getNodeName(element));
37531
+ return /^(table|td|th)$/.test(getNodeName(element));
37521
37532
  }
37522
- var topLayerSelectors = [":popover-open", ":modal"];
37523
37533
  function isTopLayer(element) {
37524
- return topLayerSelectors.some((selector) => {
37525
- try {
37526
- return element.matches(selector);
37527
- } catch (_e) {
37528
- return false;
37534
+ try {
37535
+ if (element.matches(":popover-open")) {
37536
+ return true;
37529
37537
  }
37530
- });
37538
+ } catch (_e) {
37539
+ }
37540
+ try {
37541
+ return element.matches(":modal");
37542
+ } catch (_e) {
37543
+ return false;
37544
+ }
37531
37545
  }
37532
- var transformProperties = ["transform", "translate", "scale", "rotate", "perspective"];
37533
- var willChangeValues = ["transform", "translate", "scale", "rotate", "perspective", "filter"];
37534
- var containValues = ["paint", "layout", "strict", "content"];
37546
+ var willChangeRe = /transform|translate|scale|rotate|perspective|filter/;
37547
+ var containRe = /paint|layout|strict|content/;
37548
+ var isNotNone = (value) => !!value && value !== "none";
37549
+ var isWebKitValue;
37535
37550
  function isContainingBlock(elementOrCss) {
37536
- const webkit = isWebKit();
37537
37551
  const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss;
37538
- return transformProperties.some((value) => css[value] ? css[value] !== "none" : false) || (css.containerType ? css.containerType !== "normal" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !webkit && (css.filter ? css.filter !== "none" : false) || willChangeValues.some((value) => (css.willChange || "").includes(value)) || containValues.some((value) => (css.contain || "").includes(value));
37552
+ return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || "") || containRe.test(css.contain || "");
37539
37553
  }
37540
37554
  function getContainingBlock(element) {
37541
37555
  let currentNode = getParentNode(element);
@@ -37550,12 +37564,13 @@ function getContainingBlock(element) {
37550
37564
  return null;
37551
37565
  }
37552
37566
  function isWebKit() {
37553
- if (typeof CSS === "undefined" || !CSS.supports) return false;
37554
- return CSS.supports("-webkit-backdrop-filter", "none");
37567
+ if (isWebKitValue == null) {
37568
+ isWebKitValue = typeof CSS !== "undefined" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none");
37569
+ }
37570
+ return isWebKitValue;
37555
37571
  }
37556
- var lastTraversableNodeNames = /* @__PURE__ */ new Set(["html", "body", "#document"]);
37557
37572
  function isLastTraversableNode(node) {
37558
- return lastTraversableNodeNames.has(getNodeName(node));
37573
+ return /^(html|body|#document)$/.test(getNodeName(node));
37559
37574
  }
37560
37575
  function getComputedStyle2(element) {
37561
37576
  return getWindow(element).getComputedStyle(element);
@@ -37609,8 +37624,9 @@ function getOverflowAncestors(node, list, traverseIframes) {
37609
37624
  if (isBody) {
37610
37625
  const frameElement = getFrameElement(win);
37611
37626
  return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
37627
+ } else {
37628
+ return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
37612
37629
  }
37613
- return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
37614
37630
  }
37615
37631
  function getFrameElement(win) {
37616
37632
  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
@@ -37774,7 +37790,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
37774
37790
  if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
37775
37791
  scroll = getNodeScroll(offsetParent);
37776
37792
  }
37777
- if (isHTMLElement(offsetParent)) {
37793
+ if (isOffsetParentAnElement) {
37778
37794
  const offsetRect = getBoundingClientRect(offsetParent);
37779
37795
  scale2 = getScale(offsetParent);
37780
37796
  offsets.x = offsetRect.x + offsetParent.clientLeft;
@@ -37848,7 +37864,6 @@ function getViewportRect(element, strategy) {
37848
37864
  y
37849
37865
  };
37850
37866
  }
37851
- var absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]);
37852
37867
  function getInnerBoundingClientRect(element, strategy) {
37853
37868
  const clientRect = getBoundingClientRect(element, true, strategy === "fixed");
37854
37869
  const top = clientRect.top + element.clientTop;
@@ -37906,7 +37921,7 @@ function getClippingElementAncestors(element, cache) {
37906
37921
  if (!currentNodeIsContaining && computedStyle.position === "fixed") {
37907
37922
  currentContainingBlockComputedStyle = null;
37908
37923
  }
37909
- const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
37924
+ const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === "absolute" || currentContainingBlockComputedStyle.position === "fixed") || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
37910
37925
  if (shouldDropCurrentNode) {
37911
37926
  result = result.filter((ancestor) => ancestor !== currentNode);
37912
37927
  } else {
@@ -37926,20 +37941,23 @@ function getClippingRect(_ref) {
37926
37941
  } = _ref;
37927
37942
  const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
37928
37943
  const clippingAncestors = [...elementClippingAncestors, rootBoundary];
37929
- const firstClippingAncestor = clippingAncestors[0];
37930
- const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
37931
- const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
37932
- accRect.top = max(rect.top, accRect.top);
37933
- accRect.right = min(rect.right, accRect.right);
37934
- accRect.bottom = min(rect.bottom, accRect.bottom);
37935
- accRect.left = max(rect.left, accRect.left);
37936
- return accRect;
37937
- }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
37944
+ const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);
37945
+ let top = firstRect.top;
37946
+ let right = firstRect.right;
37947
+ let bottom = firstRect.bottom;
37948
+ let left = firstRect.left;
37949
+ for (let i = 1; i < clippingAncestors.length; i++) {
37950
+ const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);
37951
+ top = max(rect.top, top);
37952
+ right = min(rect.right, right);
37953
+ bottom = min(rect.bottom, bottom);
37954
+ left = max(rect.left, left);
37955
+ }
37938
37956
  return {
37939
- width: clippingRect.right - clippingRect.left,
37940
- height: clippingRect.bottom - clippingRect.top,
37941
- x: clippingRect.left,
37942
- y: clippingRect.top
37957
+ width: right - left,
37958
+ height: bottom - top,
37959
+ x: left,
37960
+ y: top
37943
37961
  };
37944
37962
  }
37945
37963
  function getDimensions(element) {
@@ -38148,7 +38166,7 @@ function autoUpdate(reference, floating, update, options) {
38148
38166
  animationFrame = false
38149
38167
  } = options;
38150
38168
  const referenceEl = unwrapElement(reference);
38151
- const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...getOverflowAncestors(floating)] : [];
38169
+ const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...floating ? getOverflowAncestors(floating) : []] : [];
38152
38170
  ancestors.forEach((ancestor) => {
38153
38171
  ancestorScroll && ancestor.addEventListener("scroll", update, {
38154
38172
  passive: true
@@ -38161,7 +38179,7 @@ function autoUpdate(reference, floating, update, options) {
38161
38179
  if (elementResize) {
38162
38180
  resizeObserver = new ResizeObserver((_ref) => {
38163
38181
  let [firstEntry] = _ref;
38164
- if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
38182
+ if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {
38165
38183
  resizeObserver.unobserve(floating);
38166
38184
  cancelAnimationFrame(reobserveFrame);
38167
38185
  reobserveFrame = requestAnimationFrame(() => {
@@ -38174,7 +38192,9 @@ function autoUpdate(reference, floating, update, options) {
38174
38192
  if (referenceEl && !animationFrame) {
38175
38193
  resizeObserver.observe(referenceEl);
38176
38194
  }
38177
- resizeObserver.observe(floating);
38195
+ if (floating) {
38196
+ resizeObserver.observe(floating);
38197
+ }
38178
38198
  }
38179
38199
  let frameId;
38180
38200
  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
@@ -38482,34 +38502,61 @@ var arrow$1 = (options) => {
38482
38502
  }
38483
38503
  };
38484
38504
  };
38485
- var offset3 = (options, deps) => ({
38486
- ...offset2(options),
38487
- options: [options, deps]
38488
- });
38489
- var shift3 = (options, deps) => ({
38490
- ...shift2(options),
38491
- options: [options, deps]
38492
- });
38493
- var limitShift3 = (options, deps) => ({
38494
- ...limitShift2(options),
38495
- options: [options, deps]
38496
- });
38497
- var flip3 = (options, deps) => ({
38498
- ...flip2(options),
38499
- options: [options, deps]
38500
- });
38501
- var size3 = (options, deps) => ({
38502
- ...size2(options),
38503
- options: [options, deps]
38504
- });
38505
- var hide3 = (options, deps) => ({
38506
- ...hide2(options),
38507
- options: [options, deps]
38508
- });
38509
- var arrow3 = (options, deps) => ({
38510
- ...arrow$1(options),
38511
- options: [options, deps]
38512
- });
38505
+ var offset3 = (options, deps) => {
38506
+ const result = offset2(options);
38507
+ return {
38508
+ name: result.name,
38509
+ fn: result.fn,
38510
+ options: [options, deps]
38511
+ };
38512
+ };
38513
+ var shift3 = (options, deps) => {
38514
+ const result = shift2(options);
38515
+ return {
38516
+ name: result.name,
38517
+ fn: result.fn,
38518
+ options: [options, deps]
38519
+ };
38520
+ };
38521
+ var limitShift3 = (options, deps) => {
38522
+ const result = limitShift2(options);
38523
+ return {
38524
+ fn: result.fn,
38525
+ options: [options, deps]
38526
+ };
38527
+ };
38528
+ var flip3 = (options, deps) => {
38529
+ const result = flip2(options);
38530
+ return {
38531
+ name: result.name,
38532
+ fn: result.fn,
38533
+ options: [options, deps]
38534
+ };
38535
+ };
38536
+ var size3 = (options, deps) => {
38537
+ const result = size2(options);
38538
+ return {
38539
+ name: result.name,
38540
+ fn: result.fn,
38541
+ options: [options, deps]
38542
+ };
38543
+ };
38544
+ var hide3 = (options, deps) => {
38545
+ const result = hide2(options);
38546
+ return {
38547
+ name: result.name,
38548
+ fn: result.fn,
38549
+ options: [options, deps]
38550
+ };
38551
+ };
38552
+ var arrow3 = (options, deps) => {
38553
+ const result = arrow$1(options);
38554
+ return {
38555
+ name: result.name,
38556
+ fn: result.fn,
38557
+ options: [options, deps]
38558
+ };
38559
+ };
38513
38560
 
38514
38561
  // node_modules/@radix-ui/react-arrow/dist/index.mjs
38515
38562
  import * as React29 from "react";
@@ -41399,6 +41446,27 @@ var AppearanceMenu = () => {
41399
41446
  ]
41400
41447
  }
41401
41448
  ),
41449
+ /* @__PURE__ */ jsxs8(
41450
+ Item22,
41451
+ {
41452
+ style: {
41453
+ ...itemStyles,
41454
+ backgroundColor: hoveredItem === "pcbNotes" ? "#404040" : "transparent"
41455
+ },
41456
+ onSelect: (e) => e.preventDefault(),
41457
+ onPointerDown: (e) => {
41458
+ e.preventDefault();
41459
+ setLayerVisibility("pcbNotes", !visibility.pcbNotes);
41460
+ },
41461
+ onMouseEnter: () => setHoveredItem("pcbNotes"),
41462
+ onMouseLeave: () => setHoveredItem(null),
41463
+ onTouchStart: () => setHoveredItem("pcbNotes"),
41464
+ children: [
41465
+ /* @__PURE__ */ jsx35("span", { style: iconContainerStyles, children: visibility.pcbNotes && /* @__PURE__ */ jsx35(CheckIcon, {}) }),
41466
+ /* @__PURE__ */ jsx35("span", { style: { display: "flex", alignItems: "center" }, children: "PCB Notes" })
41467
+ ]
41468
+ }
41469
+ ),
41402
41470
  /* @__PURE__ */ jsxs8(
41403
41471
  Item22,
41404
41472
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tscircuit/3d-viewer",
3
- "version": "0.0.526",
3
+ "version": "0.0.528",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.js",
6
6
  "type": "module",
@@ -29,8 +29,8 @@
29
29
  "dependencies": {
30
30
  "@jscad/regl-renderer": "^2.6.12",
31
31
  "@jscad/stl-serializer": "^2.1.20",
32
- "circuit-json": "^0.0.372",
33
- "circuit-to-canvas": "^0.0.83",
32
+ "circuit-json": "^0.0.391",
33
+ "circuit-to-canvas": "^0.0.87",
34
34
  "react-hot-toast": "^2.6.0",
35
35
  "three": "^0.165.0",
36
36
  "three-stdlib": "^2.36.0",