@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 +5 -3
- package/dist/index.js +29 -10
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { LayerRef,
|
|
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:
|
|
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:
|
|
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.
|
|
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 ||
|
|
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 =
|
|
13515
|
-
var
|
|
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 =
|
|
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 === "
|
|
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) {
|