@tscircuit/pcb-viewer 1.9.0 → 1.9.2
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 +1 -0
- package/dist/index.js +135 -90
- package/dist/index.js.map +1 -1
- package/package.json +3 -1
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -11455,20 +11455,20 @@ var require_dist3 = __commonJS({
|
|
|
11455
11455
|
});
|
|
11456
11456
|
module2.exports = __toCommonJS2(src_exports2);
|
|
11457
11457
|
var import_transformation_matrix10 = require("transformation-matrix");
|
|
11458
|
-
var
|
|
11458
|
+
var import_react19 = require("react");
|
|
11459
11459
|
var useMouseMatrixTransform2 = function() {
|
|
11460
11460
|
var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
11461
|
-
var extRef = (0,
|
|
11462
|
-
var _ref = _sliced_to_array((0,
|
|
11461
|
+
var extRef = (0, import_react19.useRef)(null);
|
|
11462
|
+
var _ref = _sliced_to_array((0, import_react19.useState)(0), 2), lastDragCancelTime = _ref[0], setLastDragCancelTime = _ref[1];
|
|
11463
11463
|
var _props_canvasElm;
|
|
11464
11464
|
var outerCanvasElm = (_props_canvasElm = props.canvasElm) !== null && _props_canvasElm !== void 0 ? _props_canvasElm : extRef.current;
|
|
11465
11465
|
var _props_initialTransform;
|
|
11466
|
-
var _ref1 = _sliced_to_array((0,
|
|
11467
|
-
var _ref2 = _sliced_to_array((0,
|
|
11468
|
-
var _ref3 = _sliced_to_array((0,
|
|
11466
|
+
var _ref1 = _sliced_to_array((0, import_react19.useState)((_props_initialTransform = props.initialTransform) !== null && _props_initialTransform !== void 0 ? _props_initialTransform : (0, import_transformation_matrix10.identity)()), 2), internalTransform = _ref1[0], setInternalTransform = _ref1[1];
|
|
11467
|
+
var _ref2 = _sliced_to_array((0, import_react19.useState)(0), 2), waitCounter = _ref2[0], setWaitCounter = _ref2[1];
|
|
11468
|
+
var _ref3 = _sliced_to_array((0, import_react19.useReducer)(function(s) {
|
|
11469
11469
|
return s + 1;
|
|
11470
11470
|
}, 0), 2), extChangeCounter = _ref3[0], incExtChangeCounter = _ref3[1];
|
|
11471
|
-
var setTransform = (0,
|
|
11471
|
+
var setTransform = (0, import_react19.useCallback)(function(newTransform) {
|
|
11472
11472
|
if (props.onSetTransform) {
|
|
11473
11473
|
props.onSetTransform(newTransform);
|
|
11474
11474
|
}
|
|
@@ -11479,7 +11479,7 @@ var require_dist3 = __commonJS({
|
|
|
11479
11479
|
props.onSetTransform,
|
|
11480
11480
|
setInternalTransform
|
|
11481
11481
|
]);
|
|
11482
|
-
var setTransformExt = (0,
|
|
11482
|
+
var setTransformExt = (0, import_react19.useCallback)(function(newTransform) {
|
|
11483
11483
|
setTransform(newTransform);
|
|
11484
11484
|
incExtChangeCounter();
|
|
11485
11485
|
}, [
|
|
@@ -11487,10 +11487,10 @@ var require_dist3 = __commonJS({
|
|
|
11487
11487
|
]);
|
|
11488
11488
|
var _props_transform;
|
|
11489
11489
|
var transform = (_props_transform = props.transform) !== null && _props_transform !== void 0 ? _props_transform : internalTransform;
|
|
11490
|
-
var cancelDrag = (0,
|
|
11490
|
+
var cancelDrag = (0, import_react19.useCallback)(function() {
|
|
11491
11491
|
setLastDragCancelTime(Date.now());
|
|
11492
11492
|
}, []);
|
|
11493
|
-
(0,
|
|
11493
|
+
(0, import_react19.useEffect)(function() {
|
|
11494
11494
|
var handleMouseDown = function handleMouseDown(e) {
|
|
11495
11495
|
m0 = getMousePos(e);
|
|
11496
11496
|
if (Date.now() - lastDragCancelTime < 100) return;
|
|
@@ -11582,7 +11582,7 @@ var require_dist3 = __commonJS({
|
|
|
11582
11582
|
extChangeCounter,
|
|
11583
11583
|
lastDragCancelTime
|
|
11584
11584
|
]);
|
|
11585
|
-
var applyTransformToPoint = (0,
|
|
11585
|
+
var applyTransformToPoint = (0, import_react19.useCallback)(function(obj) {
|
|
11586
11586
|
return (0, import_transformation_matrix10.applyToPoint)(transform, obj);
|
|
11587
11587
|
}, [
|
|
11588
11588
|
transform
|
|
@@ -11613,7 +11613,7 @@ __export(src_exports, {
|
|
|
11613
11613
|
});
|
|
11614
11614
|
module.exports = __toCommonJS(src_exports);
|
|
11615
11615
|
// src/PCBViewer.tsx
|
|
11616
|
-
var
|
|
11616
|
+
var import_react18 = require("react");
|
|
11617
11617
|
var import_react_fiber = require("@tscircuit/react-fiber");
|
|
11618
11618
|
var import_builder2 = require("@tscircuit/builder");
|
|
11619
11619
|
// src/components/CanvasPrimitiveRenderer.tsx
|
|
@@ -12481,6 +12481,7 @@ var createStore = function() {
|
|
|
12481
12481
|
return (0, import_zustand.createStore)(function(set) {
|
|
12482
12482
|
return _object_spread_props(_object_spread({
|
|
12483
12483
|
selected_layer: "top",
|
|
12484
|
+
pcb_viewer_id: "pcb_viewer_".concat(Math.random().toString().slice(2, 10)),
|
|
12484
12485
|
in_edit_mode: false,
|
|
12485
12486
|
in_move_footprint_mode: false,
|
|
12486
12487
|
in_draw_trace_mode: false,
|
|
@@ -12593,7 +12594,7 @@ var CanvasPrimitiveRenderer = function(param) {
|
|
|
12593
12594
|
});
|
|
12594
12595
|
};
|
|
12595
12596
|
// src/components/CanvasElementsRenderer.tsx
|
|
12596
|
-
var
|
|
12597
|
+
var import_react15 = require("react");
|
|
12597
12598
|
// src/lib/convert-element-to-primitive.ts
|
|
12598
12599
|
var import_soup_util = __toESM(require_dist2());
|
|
12599
12600
|
// src/lib/util/expand-stroke.ts
|
|
@@ -12919,7 +12920,7 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
12919
12920
|
y: y6,
|
|
12920
12921
|
w: width2,
|
|
12921
12922
|
h: height2,
|
|
12922
|
-
layer: "
|
|
12923
|
+
layer: "top",
|
|
12923
12924
|
_element: element,
|
|
12924
12925
|
_parent_pcb_component: _parent_pcb_component,
|
|
12925
12926
|
_parent_source_component: _parent_source_component,
|
|
@@ -13656,7 +13657,7 @@ var import_soup2 = __toESM(require_dist());
|
|
|
13656
13657
|
// package.json
|
|
13657
13658
|
var package_default = {
|
|
13658
13659
|
name: "@tscircuit/pcb-viewer",
|
|
13659
|
-
version: "1.
|
|
13660
|
+
version: "1.9.1",
|
|
13660
13661
|
main: "dist/index.js",
|
|
13661
13662
|
repository: "tscircuit/pcb-viewer",
|
|
13662
13663
|
license: "MIT",
|
|
@@ -13680,6 +13681,7 @@ var package_default = {
|
|
|
13680
13681
|
"@storybook/react": "^8.0.6",
|
|
13681
13682
|
"@swc/core": "^1.4.12",
|
|
13682
13683
|
"@tscircuit/builder": "^1.11.4",
|
|
13684
|
+
"@tscircuit/core": "^0.0.41",
|
|
13683
13685
|
"@tscircuit/eagle-xml-converter": "^0.0.6",
|
|
13684
13686
|
"@tscircuit/props": "^0.0.46",
|
|
13685
13687
|
"@tscircuit/react-fiber": "^1.1.25",
|
|
@@ -13707,6 +13709,7 @@ var package_default = {
|
|
|
13707
13709
|
"@emotion/css": "^11.11.2",
|
|
13708
13710
|
color: "^4.2.3",
|
|
13709
13711
|
"react-supergrid": "^1.0.10",
|
|
13712
|
+
"react-toastify": "^10.0.5",
|
|
13710
13713
|
"transformation-matrix": "^2.13.0",
|
|
13711
13714
|
zustand: "^4.5.2"
|
|
13712
13715
|
}
|
|
@@ -14225,7 +14228,7 @@ var EditPlacementOverlay = function(param) {
|
|
|
14225
14228
|
};
|
|
14226
14229
|
// src/components/EditTraceHintOverlay.tsx
|
|
14227
14230
|
var import_soup_util2 = __toESM(require_dist2());
|
|
14228
|
-
var
|
|
14231
|
+
var import_react14 = require("react");
|
|
14229
14232
|
var import_transformation_matrix6 = require("transformation-matrix");
|
|
14230
14233
|
// src/components/HotkeyActionMenu.tsx
|
|
14231
14234
|
var import_css3 = require("@emotion/css");
|
|
@@ -14268,8 +14271,42 @@ var HotkeyActionMenu = function(param) {
|
|
|
14268
14271
|
})
|
|
14269
14272
|
});
|
|
14270
14273
|
};
|
|
14271
|
-
// src/
|
|
14274
|
+
// src/lib/toast.tsx
|
|
14275
|
+
var import_react13 = require("react");
|
|
14276
|
+
var import_react_toastify = require("react-toastify");
|
|
14277
|
+
var import_inject_style = require("react-toastify/dist/inject-style");
|
|
14272
14278
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
14279
|
+
var useToast = function() {
|
|
14280
|
+
var pcb_viewer_id = useGlobalStore(function(s) {
|
|
14281
|
+
return s.pcb_viewer_id;
|
|
14282
|
+
});
|
|
14283
|
+
var toast = function(message, opts) {
|
|
14284
|
+
return (0, import_react_toastify.toast)(message, _object_spread({
|
|
14285
|
+
containerId: pcb_viewer_id
|
|
14286
|
+
}, opts));
|
|
14287
|
+
};
|
|
14288
|
+
toast.error = function(message, opts) {
|
|
14289
|
+
return import_react_toastify.toast.error(message, _object_spread({
|
|
14290
|
+
containerId: pcb_viewer_id
|
|
14291
|
+
}, opts));
|
|
14292
|
+
};
|
|
14293
|
+
toast.promise = import_react_toastify.toast.promise;
|
|
14294
|
+
return toast;
|
|
14295
|
+
};
|
|
14296
|
+
var ToastContainer = function() {
|
|
14297
|
+
(0, import_react13.useEffect)(function() {
|
|
14298
|
+
(0, import_inject_style.injectStyle)();
|
|
14299
|
+
}, []);
|
|
14300
|
+
var pcb_viewer_id = useGlobalStore(function(s) {
|
|
14301
|
+
return s.pcb_viewer_id;
|
|
14302
|
+
});
|
|
14303
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_toastify.ToastContainer, {
|
|
14304
|
+
position: "top-center",
|
|
14305
|
+
containerId: pcb_viewer_id
|
|
14306
|
+
});
|
|
14307
|
+
};
|
|
14308
|
+
// src/components/EditTraceHintOverlay.tsx
|
|
14309
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
14273
14310
|
var isInsideOfSmtpad = function(elm, point) {
|
|
14274
14311
|
var padding = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0;
|
|
14275
14312
|
if (elm.shape === "circle") {
|
|
@@ -14302,11 +14339,12 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14302
14339
|
var children = param.children, disabledProp = param.disabled, transform = param.transform, soup = param.soup, cancelPanDrag = param.cancelPanDrag, onCreateEditEvent = param.onCreateEditEvent, onModifyEditEvent = param.onModifyEditEvent;
|
|
14303
14340
|
var _containerRef_current;
|
|
14304
14341
|
if (!transform) transform = (0, import_transformation_matrix6.identity)();
|
|
14305
|
-
var containerRef = (0,
|
|
14342
|
+
var containerRef = (0, import_react14.useRef)(null);
|
|
14306
14343
|
var containerBounds = (_containerRef_current = containerRef.current) === null || _containerRef_current === void 0 ? void 0 : _containerRef_current.getBoundingClientRect();
|
|
14307
|
-
var _ref = _sliced_to_array((0,
|
|
14308
|
-
var
|
|
14309
|
-
var
|
|
14344
|
+
var _ref = _sliced_to_array((0, import_react14.useState)(null), 2), selectedElement = _ref[0], setSelectedElement = _ref[1];
|
|
14345
|
+
var toast = useToast();
|
|
14346
|
+
var _ref1 = _sliced_to_array((0, import_react14.useState)(null), 2), dragState = _ref1[0], setDragState = _ref1[1];
|
|
14347
|
+
var _ref2 = _sliced_to_array((0, import_react14.useState)(false), 2), shouldCreateAsVia = _ref2[0], setShouldCreateAsVia = _ref2[1];
|
|
14310
14348
|
var isElementSelected = selectedElement !== null;
|
|
14311
14349
|
var in_edit_trace_mode = useGlobalStore(function(s) {
|
|
14312
14350
|
return s.in_draw_trace_mode;
|
|
@@ -14317,7 +14355,7 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14317
14355
|
ogCenterScreen = (0, import_transformation_matrix6.applyToPoint)(transform, dragState === null || dragState === void 0 ? void 0 : dragState.originalCenter);
|
|
14318
14356
|
dragEndScreen = (0, import_transformation_matrix6.applyToPoint)(transform, dragState === null || dragState === void 0 ? void 0 : dragState.dragEnd);
|
|
14319
14357
|
}
|
|
14320
|
-
(0,
|
|
14358
|
+
(0, import_react14.useEffect)(function() {
|
|
14321
14359
|
var keyDown = function keyDown(e) {
|
|
14322
14360
|
if (e.key === "Escape") {
|
|
14323
14361
|
setSelectedElement(null);
|
|
@@ -14332,7 +14370,7 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14332
14370
|
}, [
|
|
14333
14371
|
isElementSelected
|
|
14334
14372
|
]);
|
|
14335
|
-
return /* @__PURE__ */ (0,
|
|
14373
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", {
|
|
14336
14374
|
ref: containerRef,
|
|
14337
14375
|
style: {
|
|
14338
14376
|
position: "relative",
|
|
@@ -14354,6 +14392,10 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14354
14392
|
for(var _iterator = soup[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
14355
14393
|
var e2 = _step.value;
|
|
14356
14394
|
if (e2.type === "pcb_smtpad" && isInsideOfSmtpad(e2, rwMousePoint, 10 / transform.a) || e2.type === "pcb_plated_hole" && isInsideOfPlatedHole(e2, rwMousePoint, 10 / transform.a)) {
|
|
14395
|
+
if (!e2.pcb_port_id) {
|
|
14396
|
+
toast.error('pcb_port_id is null on the selected "'.concat(e2.type, '"'));
|
|
14397
|
+
return;
|
|
14398
|
+
}
|
|
14357
14399
|
setSelectedElement(e2);
|
|
14358
14400
|
setShouldCreateAsVia(false);
|
|
14359
14401
|
setDragState({
|
|
@@ -14454,7 +14496,7 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14454
14496
|
},
|
|
14455
14497
|
children: [
|
|
14456
14498
|
children,
|
|
14457
|
-
in_edit_trace_mode && (dragState === null || dragState === void 0 ? void 0 : dragState.editEvent) && ogCenterScreen && dragEndScreen && /* @__PURE__ */ (0,
|
|
14499
|
+
in_edit_trace_mode && (dragState === null || dragState === void 0 ? void 0 : dragState.editEvent) && ogCenterScreen && dragEndScreen && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("svg", {
|
|
14458
14500
|
style: {
|
|
14459
14501
|
position: "absolute",
|
|
14460
14502
|
left: 0,
|
|
@@ -14466,7 +14508,7 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14466
14508
|
width: containerBounds === null || containerBounds === void 0 ? void 0 : containerBounds.width,
|
|
14467
14509
|
height: containerBounds === null || containerBounds === void 0 ? void 0 : containerBounds.height,
|
|
14468
14510
|
children: [
|
|
14469
|
-
/* @__PURE__ */ (0,
|
|
14511
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", {
|
|
14470
14512
|
stroke: "red",
|
|
14471
14513
|
d: "M ".concat(ogCenterScreen.x, " ").concat(ogCenterScreen.y, " ").concat(dragState === null || dragState === void 0 ? void 0 : dragState.editEvent.route.map(function(p) {
|
|
14472
14514
|
return (0, import_transformation_matrix6.applyToPoint)(transform, p);
|
|
@@ -14476,15 +14518,15 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14476
14518
|
}),
|
|
14477
14519
|
dragState === null || dragState === void 0 ? void 0 : dragState.editEvent.route.map(function(r, i) {
|
|
14478
14520
|
var rScreen = (0, import_transformation_matrix6.applyToPoint)(transform, r);
|
|
14479
|
-
return /* @__PURE__ */ (0,
|
|
14521
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react14.Fragment, {
|
|
14480
14522
|
children: [
|
|
14481
|
-
r.via && /* @__PURE__ */ (0,
|
|
14523
|
+
r.via && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("circle", {
|
|
14482
14524
|
cx: rScreen.x,
|
|
14483
14525
|
cy: rScreen.y,
|
|
14484
14526
|
r: 16,
|
|
14485
14527
|
stroke: "red"
|
|
14486
14528
|
}),
|
|
14487
|
-
/* @__PURE__ */ (0,
|
|
14529
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("circle", {
|
|
14488
14530
|
cx: rScreen.x,
|
|
14489
14531
|
cy: rScreen.y,
|
|
14490
14532
|
r: 8,
|
|
@@ -14493,13 +14535,13 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14493
14535
|
]
|
|
14494
14536
|
}, "r-".concat(i));
|
|
14495
14537
|
}),
|
|
14496
|
-
shouldCreateAsVia && /* @__PURE__ */ (0,
|
|
14538
|
+
shouldCreateAsVia && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("circle", {
|
|
14497
14539
|
cx: dragEndScreen.x,
|
|
14498
14540
|
cy: dragEndScreen.y,
|
|
14499
14541
|
r: 16,
|
|
14500
14542
|
stroke: "red"
|
|
14501
14543
|
}, "via-outer-circle"),
|
|
14502
|
-
/* @__PURE__ */ (0,
|
|
14544
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("circle", {
|
|
14503
14545
|
cx: dragEndScreen.x,
|
|
14504
14546
|
cy: dragEndScreen.y,
|
|
14505
14547
|
r: 8,
|
|
@@ -14507,7 +14549,7 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14507
14549
|
})
|
|
14508
14550
|
]
|
|
14509
14551
|
}),
|
|
14510
|
-
!disabled && /* @__PURE__ */ (0,
|
|
14552
|
+
!disabled && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("svg", {
|
|
14511
14553
|
style: {
|
|
14512
14554
|
position: "absolute",
|
|
14513
14555
|
left: 0,
|
|
@@ -14524,16 +14566,16 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14524
14566
|
var route = e.route;
|
|
14525
14567
|
var pcb_port = (0, import_soup_util2.su)(soup).pcb_port.get(e.pcb_port_id);
|
|
14526
14568
|
var pcb_port_screen = (0, import_transformation_matrix6.applyToPoint)(transform, pcb_port);
|
|
14527
|
-
return /* @__PURE__ */ (0,
|
|
14569
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react14.Fragment, {
|
|
14528
14570
|
children: [
|
|
14529
|
-
/* @__PURE__ */ (0,
|
|
14571
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("rect", {
|
|
14530
14572
|
x: pcb_port_screen.x - 10,
|
|
14531
14573
|
y: pcb_port_screen.y - 10,
|
|
14532
14574
|
width: 20,
|
|
14533
14575
|
height: 20,
|
|
14534
14576
|
stroke: "red"
|
|
14535
14577
|
}, "rect-".concat(e.pcb_port_id)),
|
|
14536
|
-
/* @__PURE__ */ (0,
|
|
14578
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("path", {
|
|
14537
14579
|
stroke: "red",
|
|
14538
14580
|
d: "M ".concat(pcb_port_screen.x, " ").concat(pcb_port_screen.y, " ").concat(route.map(function(r) {
|
|
14539
14581
|
return (0, import_transformation_matrix6.applyToPoint)(transform, r);
|
|
@@ -14544,15 +14586,15 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14544
14586
|
route.map(function(r) {
|
|
14545
14587
|
return _object_spread({}, r, (0, import_transformation_matrix6.applyToPoint)(transform, r));
|
|
14546
14588
|
}).map(function(r, i) {
|
|
14547
|
-
return /* @__PURE__ */ (0,
|
|
14589
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_react14.Fragment, {
|
|
14548
14590
|
children: [
|
|
14549
|
-
/* @__PURE__ */ (0,
|
|
14591
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("circle", {
|
|
14550
14592
|
cx: r.x,
|
|
14551
14593
|
cy: r.y,
|
|
14552
14594
|
r: 8,
|
|
14553
14595
|
stroke: "red"
|
|
14554
14596
|
}),
|
|
14555
|
-
r.via && /* @__PURE__ */ (0,
|
|
14597
|
+
r.via && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("circle", {
|
|
14556
14598
|
cx: r.x,
|
|
14557
14599
|
cy: r.y,
|
|
14558
14600
|
r: 16,
|
|
@@ -14566,13 +14608,13 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14566
14608
|
}, e.pcb_trace_hint_id);
|
|
14567
14609
|
})
|
|
14568
14610
|
}, "pcb-trace-hints"),
|
|
14569
|
-
/* @__PURE__ */ (0,
|
|
14611
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", {
|
|
14570
14612
|
style: {
|
|
14571
14613
|
position: "absolute",
|
|
14572
14614
|
right: 0,
|
|
14573
14615
|
bottom: 0
|
|
14574
14616
|
},
|
|
14575
|
-
children: isElementSelected && /* @__PURE__ */ (0,
|
|
14617
|
+
children: isElementSelected && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(HotkeyActionMenu, {
|
|
14576
14618
|
hotkeys: [
|
|
14577
14619
|
{
|
|
14578
14620
|
key: "v",
|
|
@@ -14590,7 +14632,7 @@ var EditTraceHintOverlay = function(param) {
|
|
|
14590
14632
|
// src/components/RatsNestOverlay.tsx
|
|
14591
14633
|
var import_transformation_matrix7 = require("transformation-matrix");
|
|
14592
14634
|
var import_soup_util3 = __toESM(require_dist2());
|
|
14593
|
-
var
|
|
14635
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
14594
14636
|
var RatsNestOverlay = function(param) {
|
|
14595
14637
|
var transform = param.transform, soup = param.soup, children = param.children;
|
|
14596
14638
|
var isShowingRatsNest = useGlobalStore(function(s) {
|
|
@@ -14612,13 +14654,13 @@ var RatsNestOverlay = function(param) {
|
|
|
14612
14654
|
groups.push(group);
|
|
14613
14655
|
}
|
|
14614
14656
|
});
|
|
14615
|
-
return /* @__PURE__ */ (0,
|
|
14657
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", {
|
|
14616
14658
|
style: {
|
|
14617
14659
|
position: "relative"
|
|
14618
14660
|
},
|
|
14619
14661
|
children: [
|
|
14620
14662
|
children,
|
|
14621
|
-
/* @__PURE__ */ (0,
|
|
14663
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("svg", {
|
|
14622
14664
|
style: {
|
|
14623
14665
|
position: "absolute",
|
|
14624
14666
|
left: 0,
|
|
@@ -14647,7 +14689,7 @@ var RatsNestOverlay = function(param) {
|
|
|
14647
14689
|
}
|
|
14648
14690
|
return lines.map(function(param, index2) {
|
|
14649
14691
|
var _param = _sliced_to_array(param, 2), start = _param[0], end = _param[1];
|
|
14650
|
-
return /* @__PURE__ */ (0,
|
|
14692
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("line", {
|
|
14651
14693
|
x1: start.x,
|
|
14652
14694
|
y1: start.y,
|
|
14653
14695
|
x2: end.x,
|
|
@@ -14662,10 +14704,10 @@ var RatsNestOverlay = function(param) {
|
|
|
14662
14704
|
});
|
|
14663
14705
|
};
|
|
14664
14706
|
// src/components/CanvasElementsRenderer.tsx
|
|
14665
|
-
var
|
|
14707
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
14666
14708
|
var CanvasElementsRenderer = function(props) {
|
|
14667
14709
|
var transform = props.transform, elements = props.elements;
|
|
14668
|
-
var primitives = (0,
|
|
14710
|
+
var primitives = (0, import_react15.useMemo)(function() {
|
|
14669
14711
|
var primitives2 = props.elements.flatMap(function(elm) {
|
|
14670
14712
|
return convertElementToPrimitives(elm, props.elements);
|
|
14671
14713
|
});
|
|
@@ -14673,34 +14715,34 @@ var CanvasElementsRenderer = function(props) {
|
|
|
14673
14715
|
}, [
|
|
14674
14716
|
props.elements
|
|
14675
14717
|
]);
|
|
14676
|
-
return /* @__PURE__ */ (0,
|
|
14718
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(MouseElementTracker, {
|
|
14677
14719
|
transform: transform,
|
|
14678
14720
|
primitives: primitives,
|
|
14679
|
-
children: /* @__PURE__ */ (0,
|
|
14721
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(EditPlacementOverlay, {
|
|
14680
14722
|
disabled: !props.allowEditing,
|
|
14681
14723
|
transform: transform,
|
|
14682
14724
|
soup: elements,
|
|
14683
14725
|
cancelPanDrag: props.cancelPanDrag,
|
|
14684
14726
|
onCreateEditEvent: props.onCreateEditEvent,
|
|
14685
14727
|
onModifyEditEvent: props.onModifyEditEvent,
|
|
14686
|
-
children: /* @__PURE__ */ (0,
|
|
14728
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(EditTraceHintOverlay, {
|
|
14687
14729
|
disabled: !props.allowEditing,
|
|
14688
14730
|
transform: transform,
|
|
14689
14731
|
soup: elements,
|
|
14690
14732
|
cancelPanDrag: props.cancelPanDrag,
|
|
14691
14733
|
onCreateEditEvent: props.onCreateEditEvent,
|
|
14692
14734
|
onModifyEditEvent: props.onModifyEditEvent,
|
|
14693
|
-
children: /* @__PURE__ */ (0,
|
|
14735
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DimensionOverlay, {
|
|
14694
14736
|
transform: transform,
|
|
14695
|
-
children: /* @__PURE__ */ (0,
|
|
14737
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ToolbarOverlay, {
|
|
14696
14738
|
elements: elements,
|
|
14697
|
-
children: /* @__PURE__ */ (0,
|
|
14739
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ErrorOverlay, {
|
|
14698
14740
|
transform: transform,
|
|
14699
14741
|
elements: elements,
|
|
14700
|
-
children: /* @__PURE__ */ (0,
|
|
14742
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(RatsNestOverlay, {
|
|
14701
14743
|
transform: transform,
|
|
14702
14744
|
soup: elements,
|
|
14703
|
-
children: /* @__PURE__ */ (0,
|
|
14745
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(CanvasPrimitiveRenderer, {
|
|
14704
14746
|
transform: transform,
|
|
14705
14747
|
primitives: primitives,
|
|
14706
14748
|
width: props.width,
|
|
@@ -14721,11 +14763,11 @@ var import_use_mouse_matrix_transform = __toESM(require_dist3());
|
|
|
14721
14763
|
var noop = function noop() {};
|
|
14722
14764
|
var isBrowser = typeof window !== "undefined";
|
|
14723
14765
|
// node_modules/react-use/esm/useIsomorphicLayoutEffect.js
|
|
14724
|
-
var
|
|
14725
|
-
var useIsomorphicLayoutEffect = isBrowser ?
|
|
14766
|
+
var import_react16 = require("react");
|
|
14767
|
+
var useIsomorphicLayoutEffect = isBrowser ? import_react16.useLayoutEffect : import_react16.useEffect;
|
|
14726
14768
|
var useIsomorphicLayoutEffect_default = useIsomorphicLayoutEffect;
|
|
14727
14769
|
// node_modules/react-use/esm/useMeasure.js
|
|
14728
|
-
var
|
|
14770
|
+
var import_react17 = require("react");
|
|
14729
14771
|
var defaultState = {
|
|
14730
14772
|
x: 0,
|
|
14731
14773
|
y: 0,
|
|
@@ -14737,9 +14779,9 @@ var defaultState = {
|
|
|
14737
14779
|
right: 0
|
|
14738
14780
|
};
|
|
14739
14781
|
function useMeasure() {
|
|
14740
|
-
var _a = (0,
|
|
14741
|
-
var _b = (0,
|
|
14742
|
-
var observer = (0,
|
|
14782
|
+
var _a = (0, import_react17.useState)(null), element = _a[0], ref = _a[1];
|
|
14783
|
+
var _b = (0, import_react17.useState)(defaultState), rect = _b[0], setRect = _b[1];
|
|
14784
|
+
var observer = (0, import_react17.useMemo)(function() {
|
|
14743
14785
|
return new window.ResizeObserver(function(entries) {
|
|
14744
14786
|
if (entries[0]) {
|
|
14745
14787
|
var _a2 = entries[0].contentRect, x = _a2.x, y = _a2.y, width = _a2.width, height = _a2.height, top_1 = _a2.top, left = _a2.left, bottom = _a2.bottom, right = _a2.right;
|
|
@@ -14844,20 +14886,20 @@ var applyEditEvents = function(soup, edit_events) {
|
|
|
14844
14886
|
return soup;
|
|
14845
14887
|
};
|
|
14846
14888
|
// src/PCBViewer.tsx
|
|
14847
|
-
var
|
|
14889
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
14848
14890
|
var defaultTransform = (0, import_transformation_matrix9.compose)((0, import_transformation_matrix9.translate)(400, 300), (0, import_transformation_matrix9.scale)(40, -40));
|
|
14849
14891
|
var PCBViewer = function(param) {
|
|
14850
14892
|
var children = param.children, soup = param.soup, _param_height = param.height, height = _param_height === void 0 ? 600 : _param_height, initialState = param.initialState, _param_allowEditing = param.allowEditing, allowEditing = _param_allowEditing === void 0 ? true : _param_allowEditing, editEventsProp = param.editEvents, onEditEventsChanged = param.onEditEventsChanged;
|
|
14851
|
-
var _ref = _sliced_to_array((0,
|
|
14893
|
+
var _ref = _sliced_to_array((0, import_react18.useState)([]), 2), stateElements = _ref[0], setStateElements = _ref[1];
|
|
14852
14894
|
var _useMeasure_default = _sliced_to_array(useMeasure_default(), 2), ref = _useMeasure_default[0], refDimensions = _useMeasure_default[1];
|
|
14853
|
-
var _ref1 = _sliced_to_array((0,
|
|
14895
|
+
var _ref1 = _sliced_to_array((0, import_react18.useState)(defaultTransform), 2), transform = _ref1[0], setTransformInternal = _ref1[1];
|
|
14854
14896
|
var _ref2 = (0, import_use_mouse_matrix_transform.default)({
|
|
14855
14897
|
transform: transform,
|
|
14856
14898
|
onSetTransform: setTransformInternal
|
|
14857
14899
|
}), transformRef = _ref2.ref, setTransform = _ref2.setTransform, cancelPanDrag = _ref2.cancelDrag;
|
|
14858
|
-
var _ref3 = _sliced_to_array((0,
|
|
14900
|
+
var _ref3 = _sliced_to_array((0, import_react18.useState)([]), 2), editEvents = _ref3[0], setEditEvents = _ref3[1];
|
|
14859
14901
|
editEvents = editEventsProp !== null && editEventsProp !== void 0 ? editEventsProp : editEvents;
|
|
14860
|
-
var _ref4 = _sliced_to_array((0,
|
|
14902
|
+
var _ref4 = _sliced_to_array((0, import_react18.useState)(null), 2), error = _ref4[0], setError = _ref4[1];
|
|
14861
14903
|
var resetTransform = function() {
|
|
14862
14904
|
var elmBounds = (refDimensions === null || refDimensions === void 0 ? void 0 : refDimensions.width) > 0 ? refDimensions : {
|
|
14863
14905
|
width: 500,
|
|
@@ -14881,7 +14923,7 @@ var PCBViewer = function(param) {
|
|
|
14881
14923
|
setTransform((0, import_transformation_matrix9.compose)((0, import_transformation_matrix9.translate)(((_elmBounds_width1 = elmBounds.width) !== null && _elmBounds_width1 !== void 0 ? _elmBounds_width1 : 0) / 2, ((_elmBounds_height1 = elmBounds.height) !== null && _elmBounds_height1 !== void 0 ? _elmBounds_height1 : 0) / 2), // translate(100, 0),
|
|
14882
14924
|
(0, import_transformation_matrix9.scale)(scaleFactor, -scaleFactor, 0, 0), (0, import_transformation_matrix9.translate)(-center.x, -center.y)));
|
|
14883
14925
|
};
|
|
14884
|
-
(0,
|
|
14926
|
+
(0, import_react18.useEffect)(function() {
|
|
14885
14927
|
var doRender = function doRender() {
|
|
14886
14928
|
return _doRender.apply(this, arguments);
|
|
14887
14929
|
};
|
|
@@ -14917,7 +14959,7 @@ var PCBViewer = function(param) {
|
|
|
14917
14959
|
}, [
|
|
14918
14960
|
children
|
|
14919
14961
|
]);
|
|
14920
|
-
(0,
|
|
14962
|
+
(0, import_react18.useEffect)(function() {
|
|
14921
14963
|
if (refDimensions && refDimensions.width !== 0 && (children || soup)) {
|
|
14922
14964
|
resetTransform();
|
|
14923
14965
|
}
|
|
@@ -14925,7 +14967,7 @@ var PCBViewer = function(param) {
|
|
|
14925
14967
|
children,
|
|
14926
14968
|
refDimensions
|
|
14927
14969
|
]);
|
|
14928
|
-
if (error) return /* @__PURE__ */ (0,
|
|
14970
|
+
if (error) return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", {
|
|
14929
14971
|
style: {
|
|
14930
14972
|
color: "red"
|
|
14931
14973
|
},
|
|
@@ -14938,7 +14980,7 @@ var PCBViewer = function(param) {
|
|
|
14938
14980
|
var pcbElmsPreEdit = (soup !== null && soup !== void 0 ? soup : stateElements).filter(function(e) {
|
|
14939
14981
|
return e.type.startsWith("pcb_") || e.type.startsWith("source_");
|
|
14940
14982
|
});
|
|
14941
|
-
var elements = (0,
|
|
14983
|
+
var elements = (0, import_react18.useMemo)(function() {
|
|
14942
14984
|
return applyEditEvents(pcbElmsPreEdit, editEvents);
|
|
14943
14985
|
}, [
|
|
14944
14986
|
pcbElmsPreEdit,
|
|
@@ -14959,31 +15001,34 @@ var PCBViewer = function(param) {
|
|
|
14959
15001
|
setEditEvents(newEditEvents);
|
|
14960
15002
|
onEditEventsChanged === null || onEditEventsChanged === void 0 ? void 0 : onEditEventsChanged(newEditEvents);
|
|
14961
15003
|
};
|
|
14962
|
-
return /* @__PURE__ */ (0,
|
|
15004
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", {
|
|
14963
15005
|
ref: transformRef,
|
|
14964
|
-
children: /* @__PURE__ */ (0,
|
|
15006
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", {
|
|
14965
15007
|
ref: ref,
|
|
14966
|
-
children: /* @__PURE__ */ (0,
|
|
15008
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(ContextProviders, {
|
|
14967
15009
|
initialState: initialState,
|
|
14968
|
-
children:
|
|
14969
|
-
|
|
14970
|
-
|
|
14971
|
-
|
|
14972
|
-
|
|
14973
|
-
|
|
14974
|
-
|
|
14975
|
-
|
|
14976
|
-
|
|
14977
|
-
|
|
14978
|
-
|
|
14979
|
-
|
|
14980
|
-
|
|
14981
|
-
|
|
14982
|
-
|
|
14983
|
-
|
|
14984
|
-
|
|
14985
|
-
|
|
14986
|
-
|
|
15010
|
+
children: [
|
|
15011
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(CanvasElementsRenderer, {
|
|
15012
|
+
transform: transform,
|
|
15013
|
+
height: height,
|
|
15014
|
+
width: refDimensions.width,
|
|
15015
|
+
allowEditing: allowEditing,
|
|
15016
|
+
cancelPanDrag: cancelPanDrag,
|
|
15017
|
+
onCreateEditEvent: onCreateEditEvent,
|
|
15018
|
+
onModifyEditEvent: onModifyEditEvent,
|
|
15019
|
+
grid: {
|
|
15020
|
+
spacing: 1,
|
|
15021
|
+
view_window: {
|
|
15022
|
+
left: 0,
|
|
15023
|
+
right: refDimensions.width || 500,
|
|
15024
|
+
top: height,
|
|
15025
|
+
bottom: 0
|
|
15026
|
+
}
|
|
15027
|
+
},
|
|
15028
|
+
elements: elements
|
|
15029
|
+
}, refDimensions.width),
|
|
15030
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ToastContainer, {})
|
|
15031
|
+
]
|
|
14987
15032
|
})
|
|
14988
15033
|
})
|
|
14989
15034
|
});
|