@tscircuit/pcb-viewer 1.11.403 → 1.11.404

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
@@ -4354,6 +4354,27 @@ function getXRayDisplayName(element, elements, connectivityMap) {
4354
4354
  }
4355
4355
  return "Net";
4356
4356
  }
4357
+ function getXRayGroups(netId, elements, connectivityMap) {
4358
+ return elements.flatMap((element) => {
4359
+ if (element.type !== "source_bus") return [];
4360
+ const netIds = [
4361
+ ...new Set(
4362
+ element.source_trace_ids.flatMap((id) => {
4363
+ const net = connectivityMap.getNetConnectedToId(id);
4364
+ return net ? [net] : [];
4365
+ })
4366
+ )
4367
+ ];
4368
+ if (!netIds.includes(netId)) return [];
4369
+ return [
4370
+ {
4371
+ id: element.source_bus_id,
4372
+ name: element.name?.trim() || "Bus",
4373
+ netIds
4374
+ }
4375
+ ];
4376
+ });
4377
+ }
4357
4378
 
4358
4379
  // src/lib/webgpu/create-worker.ts
4359
4380
  var createWebGpuWorker = async () => {
@@ -11073,7 +11094,7 @@ import { css as css3 } from "@emotion/css";
11073
11094
  // package.json
11074
11095
  var package_default = {
11075
11096
  name: "@tscircuit/pcb-viewer",
11076
- version: "1.11.402",
11097
+ version: "1.11.403",
11077
11098
  main: "dist/index.js",
11078
11099
  type: "module",
11079
11100
  repository: {
@@ -11270,6 +11291,8 @@ var VisibilityContextMenu = ({
11270
11291
  position,
11271
11292
  onClose,
11272
11293
  onXRayNet,
11294
+ xRayGroups = [],
11295
+ onXRayGroup,
11273
11296
  xRayDisplayName = "Net",
11274
11297
  onExitXRayNet
11275
11298
  }) => {
@@ -11392,6 +11415,24 @@ var VisibilityContextMenu = ({
11392
11415
  ]
11393
11416
  }
11394
11417
  ),
11418
+ onXRayGroup && xRayGroups.map((group) => /* @__PURE__ */ jsxs15(
11419
+ "button",
11420
+ {
11421
+ type: "button",
11422
+ role: "menuitem",
11423
+ className: itemStyle,
11424
+ style: { whiteSpace: "normal", overflowWrap: "anywhere" },
11425
+ onClick: () => {
11426
+ onXRayGroup(group);
11427
+ onClose();
11428
+ },
11429
+ children: [
11430
+ "X-Ray ",
11431
+ group.name
11432
+ ]
11433
+ },
11434
+ group.id
11435
+ )),
11395
11436
  onExitXRayNet && /* @__PURE__ */ jsx20(
11396
11437
  "button",
11397
11438
  {
@@ -12228,6 +12269,7 @@ var ToolbarOverlay = ({
12228
12269
  setFocusedErrorId: s.setFocusedErrorId
12229
12270
  }));
12230
12271
  const [contextMenuPosition, setContextMenuPosition] = useState12(null);
12272
+ const [contextGroups, setContextGroups] = useState12([]);
12231
12273
  const [contextNetId, setContextNetId] = useState12();
12232
12274
  const [contextNetDisplayName, setContextNetDisplayName] = useState12("Net");
12233
12275
  const pointerStart = useRef14(null);
@@ -12398,6 +12440,7 @@ var ToolbarOverlay = ({
12398
12440
  } else {
12399
12441
  setContextNetId(net);
12400
12442
  setContextNetDisplayName(hit.displayName);
12443
+ setContextGroups(hit.groups);
12401
12444
  onContextMenuOpenChange?.(true);
12402
12445
  setContextMenuPosition({ x: event.clientX, y: event.clientY });
12403
12446
  }
@@ -12412,6 +12455,7 @@ var ToolbarOverlay = ({
12412
12455
  const hit = netAtEvent(event);
12413
12456
  setContextNetId(hit?.netId);
12414
12457
  setContextNetDisplayName(hit?.displayName ?? "Net");
12458
+ setContextGroups(hit?.groups ?? []);
12415
12459
  onContextMenuOpenChange?.(true);
12416
12460
  setContextMenuPosition({ x: event.clientX, y: event.clientY });
12417
12461
  },
@@ -12427,6 +12471,10 @@ var ToolbarOverlay = ({
12427
12471
  position: contextMenuPosition,
12428
12472
  onClose: closeContextMenu,
12429
12473
  xRayDisplayName: contextNetDisplayName,
12474
+ xRayGroups: contextGroups.filter(
12475
+ (group) => group.netIds.some((id) => !xRayNetIds.includes(id))
12476
+ ),
12477
+ onXRayGroup: (group) => onXRayNetsChange?.([.../* @__PURE__ */ new Set([...xRayNetIds, ...group.netIds])]),
12430
12478
  onXRayNet: contextNetId && !xRayNetIds.includes(contextNetId) ? () => onXRayNetsChange?.([...xRayNetIds, contextNetId]) : void 0,
12431
12479
  onExitXRayNet: xRayNetIds.length > 0 ? () => onXRayNetsChange?.([]) : void 0
12432
12480
  }
@@ -12917,7 +12965,8 @@ var CanvasElementsRenderer = (props) => {
12917
12965
  if (!transform) return void 0;
12918
12966
  const describeNet = (netId, element) => ({
12919
12967
  netId,
12920
- displayName: getXRayDisplayName(element, elements, connectivityMap)
12968
+ displayName: getXRayDisplayName(element, elements, connectivityMap),
12969
+ groups: getXRayGroups(netId, elements, connectivityMap)
12921
12970
  });
12922
12971
  const hits = getPrimitivesUnderPoint(
12923
12972
  primitivesWithoutInteractionMetadata,