@tscircuit/pcb-viewer 1.10.6 → 1.10.8

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
@@ -1,5 +1,5 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { LayerRef, AnySoupElement } from 'circuit-json';
2
+ import { LayerRef, AnyCircuitElement } from 'circuit-json';
3
3
  import { Matrix } from 'transformation-matrix';
4
4
 
5
5
  type EditComponentLocationEvent = {
@@ -39,6 +39,7 @@ interface State {
39
39
  in_edit_mode: boolean;
40
40
  in_move_footprint_mode: boolean;
41
41
  in_draw_trace_mode: boolean;
42
+ is_mouse_over_container: boolean;
42
43
  is_moving_component: boolean;
43
44
  is_drawing_trace: boolean;
44
45
  is_showing_rats_nest: boolean;
@@ -47,6 +48,7 @@ interface State {
47
48
  setIsMovingComponent: (is_moving: boolean) => void;
48
49
  setIsDrawingTrace: (is_drawing: boolean) => void;
49
50
  setIsShowingRatsNest: (is_showing: boolean) => void;
51
+ setIsMouseOverContainer: (is_focused: boolean) => void;
50
52
  }
51
53
  type StateProps = {
52
54
  [key in keyof State]: State[key] extends boolean ? boolean : never;
@@ -63,7 +65,7 @@ type Props = {
63
65
  };
64
66
  declare const PCBViewer: ({ children, soup, height, initialState, allowEditing, editEvents: editEventsProp, onEditEventsChanged, }: Props) => react_jsx_runtime.JSX.Element;
65
67
 
66
- declare const applyEditEvents: (soup: AnySoupElement[], edit_events: EditEvent[]) => AnySoupElement[];
68
+ declare const applyEditEvents: (soup: AnyCircuitElement[], edit_events: EditEvent[]) => AnyCircuitElement[];
67
69
 
68
70
  type GridConfig = {
69
71
  spacing: number;
@@ -76,7 +78,7 @@ type GridConfig = {
76
78
  };
77
79
 
78
80
  interface CanvasElementsRendererProps {
79
- elements: AnySoupElement[];
81
+ elements: AnyCircuitElement[];
80
82
  transform?: Matrix;
81
83
  width?: number;
82
84
  height?: number;
package/dist/index.js CHANGED
@@ -5097,6 +5097,7 @@ var createStore = function() {
5097
5097
  in_draw_trace_mode: false,
5098
5098
  is_moving_component: false,
5099
5099
  is_drawing_trace: false,
5100
+ is_mouse_over_container: false,
5100
5101
  is_showing_rats_nest: false
5101
5102
  }, initialState), {
5102
5103
  selectLayer: function(layer) {
@@ -5127,6 +5128,11 @@ var createStore = function() {
5127
5128
  return set({
5128
5129
  is_drawing_trace: is_drawing
5129
5130
  });
5131
+ },
5132
+ setIsMouseOverContainer: function(is_focused) {
5133
+ return set({
5134
+ is_mouse_over_container: is_focused
5135
+ });
5130
5136
  }
5131
5137
  });
5132
5138
  });
@@ -13374,7 +13380,7 @@ var import_css = require("@emotion/css");
13374
13380
  // package.json
13375
13381
  var package_default = {
13376
13382
  name: "@tscircuit/pcb-viewer",
13377
- version: "1.10.5",
13383
+ version: "1.10.7",
13378
13384
  main: "dist/index.js",
13379
13385
  repository: "tscircuit/pcb-viewer",
13380
13386
  license: "MIT",
@@ -13437,13 +13443,20 @@ var package_default = {
13437
13443
  // src/hooks/useHotKey.ts
13438
13444
  var import_react9 = require("react");
13439
13445
  var useHotKey = function(key, onUse) {
13446
+ var isMouseOverContainer = useGlobalStore(function(s) {
13447
+ return s.is_mouse_over_container;
13448
+ });
13440
13449
  (0, import_react9.useEffect)(function() {
13450
+ if (!key || typeof onUse !== "function") return;
13441
13451
  var handleKeyDown = function(event) {
13442
13452
  var keyParts = key.split("+");
13443
13453
  var ctrlRequired = keyParts.includes("ctrl");
13444
13454
  var shiftRequired = keyParts.includes("shift");
13455
+ var altRequired = keyParts.includes("alt");
13456
+ var metaRequired = keyParts.includes("meta");
13445
13457
  var mainKey = keyParts[keyParts.length - 1];
13446
- if ((!ctrlRequired || ctrlRequired && event.ctrlKey) && (!shiftRequired || shiftRequired && event.shiftKey) && event.key.toLowerCase() === mainKey.toLowerCase()) {
13458
+ if (isMouseOverContainer && (!ctrlRequired || event.ctrlKey) && (!shiftRequired || event.shiftKey) && (!altRequired || event.altKey) && (!metaRequired || event.metaKey) && event.key.toLowerCase() === mainKey.toLowerCase()) {
13459
+ event.preventDefault();
13447
13460
  onUse();
13448
13461
  }
13449
13462
  };
@@ -13452,7 +13465,8 @@ var useHotKey = function(key, onUse) {
13452
13465
  window.removeEventListener("keydown", handleKeyDown);
13453
13466
  };
13454
13467
  }, [
13455
- key
13468
+ key,
13469
+ onUse
13456
13470
  ]);
13457
13471
  };
13458
13472
  // src/components/ToolbarOverlay.tsx
@@ -13503,22 +13517,27 @@ var ToolbarButton = function(_param) {
13503
13517
  };
13504
13518
  var ToolbarOverlay = function(param) {
13505
13519
  var children = param.children, elements = param.elements;
13506
- var _ref = _sliced_to_array((0, import_react10.useState)(false), 2), isMouseOverContainer = _ref[0], setIsMouseOverContainer = _ref[1];
13507
- var _ref1 = _sliced_to_array((0, import_react10.useState)(false), 2), isLayerMenuOpen = _ref1[0], setLayerMenuOpen = _ref1[1];
13508
- var _ref2 = _sliced_to_array((0, import_react10.useState)(false), 2), isErrorsOpen = _ref2[0], setErrorsOpen = _ref2[1];
13509
13520
  var _useGlobalStore = _sliced_to_array(useGlobalStore(function(s) {
13521
+ return [
13522
+ s.is_mouse_over_container,
13523
+ s.setIsMouseOverContainer
13524
+ ];
13525
+ }), 2), isMouseOverContainer = _useGlobalStore[0], setIsMouseOverContainer = _useGlobalStore[1];
13526
+ var _ref = _sliced_to_array((0, import_react10.useState)(false), 2), isLayerMenuOpen = _ref[0], setLayerMenuOpen = _ref[1];
13527
+ var _ref1 = _sliced_to_array((0, import_react10.useState)(false), 2), isErrorsOpen = _ref1[0], setErrorsOpen = _ref1[1];
13528
+ var _useGlobalStore1 = _sliced_to_array(useGlobalStore(function(s) {
13510
13529
  return [
13511
13530
  s.selected_layer,
13512
13531
  s.selectLayer
13513
13532
  ];
13514
- }), 2), selectedLayer = _useGlobalStore[0], selectLayer = _useGlobalStore[1];
13515
- var _useGlobalStore1 = _sliced_to_array(useGlobalStore(function(s) {
13533
+ }), 2), selectedLayer = _useGlobalStore1[0], selectLayer = _useGlobalStore1[1];
13534
+ var _useGlobalStore2 = _sliced_to_array(useGlobalStore(function(s) {
13516
13535
  return [
13517
13536
  s.in_move_footprint_mode,
13518
13537
  s.in_draw_trace_mode,
13519
13538
  s.is_showing_rats_nest
13520
13539
  ];
13521
- }), 3), in_move_footprint_mode = _useGlobalStore1[0], in_draw_trace_mode = _useGlobalStore1[1], is_showing_rats_nest = _useGlobalStore1[2];
13540
+ }), 3), in_move_footprint_mode = _useGlobalStore2[0], in_draw_trace_mode = _useGlobalStore2[1], is_showing_rats_nest = _useGlobalStore2[2];
13522
13541
  var setEditMode = useGlobalStore(function(s) {
13523
13542
  return s.setEditMode;
13524
13543
  });
@@ -13784,7 +13803,7 @@ var ErrorOverlay = function(param) {
13784
13803
  children: [
13785
13804
  children,
13786
13805
  elements === null || elements === void 0 ? void 0 : elements.filter(function(el) {
13787
- return el.type === "pcb_error";
13806
+ return el.type === "pcb_trace_error";
13788
13807
  }).map(function(el) {
13789
13808
  var pcb_port_ids = el.pcb_port_ids;
13790
13809
  var port1 = elements.find(function(el2) {