@tscircuit/pcb-viewer 1.11.401 → 1.11.402

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.js CHANGED
@@ -11047,7 +11047,7 @@ import { css as css3 } from "@emotion/css";
11047
11047
  // package.json
11048
11048
  var package_default = {
11049
11049
  name: "@tscircuit/pcb-viewer",
11050
- version: "1.11.400",
11050
+ version: "1.11.401",
11051
11051
  main: "dist/index.js",
11052
11052
  type: "module",
11053
11053
  repository: {
@@ -12132,8 +12132,8 @@ var ToolbarOverlay = ({
12132
12132
  elements,
12133
12133
  onContextMenuOpenChange,
12134
12134
  getNetAtPoint,
12135
- xRayNetId,
12136
- onXRayNetChange
12135
+ xRayNetIds = [],
12136
+ onXRayNetsChange
12137
12137
  }) => {
12138
12138
  const isSmallScreen = useIsSmallScreen();
12139
12139
  const {
@@ -12359,8 +12359,8 @@ var ToolbarOverlay = ({
12359
12359
  return;
12360
12360
  const net = netAtEvent(event);
12361
12361
  if (!net) return;
12362
- if (net === xRayNetId) {
12363
- onXRayNetChange?.(null);
12362
+ if (xRayNetIds.includes(net)) {
12363
+ onXRayNetsChange?.(xRayNetIds.filter((id) => id !== net));
12364
12364
  closeContextMenu();
12365
12365
  } else {
12366
12366
  setContextNetId(net);
@@ -12369,7 +12369,7 @@ var ToolbarOverlay = ({
12369
12369
  }
12370
12370
  },
12371
12371
  onDoubleClick: () => {
12372
- onXRayNetChange?.(null);
12372
+ onXRayNetsChange?.([]);
12373
12373
  closeContextMenu();
12374
12374
  },
12375
12375
  onContextMenu: (event) => {
@@ -12390,8 +12390,8 @@ var ToolbarOverlay = ({
12390
12390
  {
12391
12391
  position: contextMenuPosition,
12392
12392
  onClose: closeContextMenu,
12393
- onXRayNet: contextNetId && contextNetId !== xRayNetId ? () => onXRayNetChange?.(contextNetId) : void 0,
12394
- onExitXRayNet: xRayNetId ? () => onXRayNetChange?.(null) : void 0
12393
+ onXRayNet: contextNetId && !xRayNetIds.includes(contextNetId) ? () => onXRayNetsChange?.([...xRayNetIds, contextNetId]) : void 0,
12394
+ onExitXRayNet: xRayNetIds.length > 0 ? () => onXRayNetsChange?.([]) : void 0
12395
12395
  }
12396
12396
  ),
12397
12397
  /* @__PURE__ */ jsxs17(
@@ -12866,13 +12866,15 @@ var CanvasElementsRenderer = (props) => {
12866
12866
  () => getFullConnectivityMapFromCircuitJson(elements),
12867
12867
  [elements]
12868
12868
  );
12869
- const [xRayNetId, setXRayNetId] = useState13(null);
12870
- useEffect19(() => setXRayNetId(null), [connectivityMap]);
12869
+ const [xRayNetIds, setXRayNetIds] = useState13([]);
12870
+ useEffect19(() => setXRayNetIds([]), [connectivityMap]);
12871
12871
  const xRayElements = useMemo10(
12872
- () => xRayNetId ? elementsToRender.filter(
12873
- (element) => isXRayCopper(element) && getElementNetId(element, connectivityMap) === xRayNetId
12872
+ () => xRayNetIds.length > 0 ? elementsToRender.filter(
12873
+ (element) => isXRayCopper(element) && xRayNetIds.includes(
12874
+ getElementNetId(element, connectivityMap) ?? ""
12875
+ )
12874
12876
  ) : void 0,
12875
- [elementsToRender, connectivityMap, xRayNetId]
12877
+ [elementsToRender, connectivityMap, xRayNetIds]
12876
12878
  );
12877
12879
  const getNetAtPoint = (point) => {
12878
12880
  if (!transform) return void 0;
@@ -12881,18 +12883,18 @@ var CanvasElementsRenderer = (props) => {
12881
12883
  applyToPoint19(inverse6(transform), point),
12882
12884
  transform,
12883
12885
  selectedLayer,
12884
- Boolean(xRayNetId)
12886
+ xRayNetIds.length > 0
12885
12887
  );
12886
12888
  const copper = hits.filter(
12887
12889
  (p) => isXRayCopper(p._element) && p.layer !== "drill"
12888
12890
  );
12889
- if (xRayNetId && copper.some(
12890
- (p) => getElementNetId(p._element, connectivityMap) === xRayNetId
12891
- ))
12892
- return xRayNetId;
12893
12891
  copper.sort(
12894
12892
  (a, b) => Number(b.layer === selectedLayer) - Number(a.layer === selectedLayer)
12895
12893
  );
12894
+ for (const primitive of copper) {
12895
+ const net = getElementNetId(primitive._element, connectivityMap);
12896
+ if (net && xRayNetIds.includes(net)) return net;
12897
+ }
12896
12898
  for (const primitive of copper) {
12897
12899
  const net = getElementNetId(primitive._element, connectivityMap);
12898
12900
  if (net) return net;
@@ -12969,7 +12971,7 @@ var CanvasElementsRenderer = (props) => {
12969
12971
  props.width
12970
12972
  ]);
12971
12973
  const primitives = useMemo10(() => {
12972
- if (xRayNetId) return primitivesWithoutInteractionMetadata;
12974
+ if (xRayNetIds.length > 0) return primitivesWithoutInteractionMetadata;
12973
12975
  const combinedPrimitiveIds = [
12974
12976
  ...hoverState.primitiveIdsInMousedOverNet,
12975
12977
  ...errorRelatedIds
@@ -12983,7 +12985,7 @@ var CanvasElementsRenderer = (props) => {
12983
12985
  primitivesWithoutInteractionMetadata,
12984
12986
  hoverState,
12985
12987
  errorRelatedIds,
12986
- xRayNetId
12988
+ xRayNetIds
12987
12989
  ]);
12988
12990
  const onMouseOverPrimitives = useCallback11(
12989
12991
  (primitivesHoveredOver) => {
@@ -13025,7 +13027,7 @@ var CanvasElementsRenderer = (props) => {
13025
13027
  transform,
13026
13028
  primitives: primitivesWithoutInteractionMetadata,
13027
13029
  selectedLayer,
13028
- disableHoverHighlights: Boolean(xRayNetId),
13030
+ disableHoverHighlights: xRayNetIds.length > 0,
13029
13031
  onMouseHoverOverPrimitives: onMouseOverPrimitives,
13030
13032
  children: /* @__PURE__ */ jsx25(
13031
13033
  EditPlacementOverlay,
@@ -13049,8 +13051,8 @@ var CanvasElementsRenderer = (props) => {
13049
13051
  {
13050
13052
  elements,
13051
13053
  getNetAtPoint,
13052
- xRayNetId,
13053
- onXRayNetChange: setXRayNetId,
13054
+ xRayNetIds,
13055
+ onXRayNetsChange: setXRayNetIds,
13054
13056
  onContextMenuOpenChange: props.onContextMenuOpenChange,
13055
13057
  children: /* @__PURE__ */ jsx25(ErrorOverlay, { transform, elements, children: /* @__PURE__ */ jsx25(RatsNestOverlay, { transform, soup: elements, children: /* @__PURE__ */ jsx25(
13056
13058
  PcbGroupOverlay,