@tscircuit/pcb-viewer 1.9.3 → 1.10.0
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 +65 -25
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -11866,7 +11866,7 @@ var LAYER_NAME_TO_COLOR = _object_spread({
|
|
|
11866
11866
|
red: "red",
|
|
11867
11867
|
black: "black",
|
|
11868
11868
|
green: "green",
|
|
11869
|
-
board: "
|
|
11869
|
+
board: "rgb(255, 255, 255)",
|
|
11870
11870
|
other: "#eee",
|
|
11871
11871
|
// TODO more builtin html colors
|
|
11872
11872
|
// Common eagle names
|
|
@@ -12340,7 +12340,7 @@ var convertTextToLines = function(text) {
|
|
|
12340
12340
|
// src/lib/draw-primitives.ts
|
|
12341
12341
|
var import_color = __toESM(require("color"));
|
|
12342
12342
|
function getColor(primitive) {
|
|
12343
|
-
if (primitive.is_mouse_over) {
|
|
12343
|
+
if (primitive.is_mouse_over || primitive.is_in_highlighted_net) {
|
|
12344
12344
|
return (0, import_color.default)(LAYER_NAME_TO_COLOR[primitive.layer]).lighten(0.5).rgb().toString();
|
|
12345
12345
|
}
|
|
12346
12346
|
return LAYER_NAME_TO_COLOR[primitive.layer];
|
|
@@ -12349,7 +12349,8 @@ var drawLine = function(drawer, line) {
|
|
|
12349
12349
|
drawer.equip({
|
|
12350
12350
|
size: line.zoomIndependent ? line.width / drawer.transform.a : line.width,
|
|
12351
12351
|
shape: line.squareCap ? "square" : "circle",
|
|
12352
|
-
color: line
|
|
12352
|
+
color: getColor(line),
|
|
12353
|
+
layer: line.layer
|
|
12353
12354
|
});
|
|
12354
12355
|
drawer.moveTo(line.x1, line.y1);
|
|
12355
12356
|
drawer.lineTo(line.x2, line.y2);
|
|
@@ -12414,25 +12415,29 @@ var drawRect = function(drawer, rect) {
|
|
|
12414
12415
|
};
|
|
12415
12416
|
var drawCircle = function(drawer, circle) {
|
|
12416
12417
|
drawer.equip({
|
|
12417
|
-
color: circle
|
|
12418
|
+
color: getColor(circle),
|
|
12419
|
+
layer: circle.layer
|
|
12418
12420
|
});
|
|
12419
12421
|
drawer.circle(circle.x, circle.y, circle.r, circle.mesh_fill);
|
|
12420
12422
|
};
|
|
12421
12423
|
var drawOval = function(drawer, oval) {
|
|
12422
12424
|
drawer.equip({
|
|
12423
|
-
color: oval
|
|
12425
|
+
color: getColor(oval),
|
|
12426
|
+
layer: oval.layer
|
|
12424
12427
|
});
|
|
12425
12428
|
drawer.oval(oval.x, oval.y, oval.rX, oval.rY);
|
|
12426
12429
|
};
|
|
12427
12430
|
var drawPill = function(drawer, pill) {
|
|
12428
12431
|
drawer.equip({
|
|
12429
|
-
color: pill
|
|
12432
|
+
color: getColor(pill),
|
|
12433
|
+
layer: pill.layer
|
|
12430
12434
|
});
|
|
12431
12435
|
drawer.pill(pill.x, pill.y, pill.w, pill.h);
|
|
12432
12436
|
};
|
|
12433
12437
|
var drawPolygon = function(drawer, polygon) {
|
|
12434
12438
|
drawer.equip({
|
|
12435
|
-
color: polygon
|
|
12439
|
+
color: getColor(polygon),
|
|
12440
|
+
layer: polygon.layer
|
|
12436
12441
|
});
|
|
12437
12442
|
drawer.polygon(polygon.points);
|
|
12438
12443
|
};
|
|
@@ -12825,7 +12830,6 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
12825
12830
|
y: y2,
|
|
12826
12831
|
r: hole_diameter / 2,
|
|
12827
12832
|
layer: "drill",
|
|
12828
|
-
_element: element,
|
|
12829
12833
|
_parent_pcb_component: _parent_pcb_component,
|
|
12830
12834
|
_parent_source_component: _parent_source_component
|
|
12831
12835
|
}
|
|
@@ -12970,6 +12974,7 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
12970
12974
|
var expandedStroke = getExpandedStroke(strokeInput, 0.5);
|
|
12971
12975
|
primitives.push({
|
|
12972
12976
|
_pcb_drawing_object_id: "polygon_".concat(globalPcbDrawingObjectCount++),
|
|
12977
|
+
_element: element,
|
|
12973
12978
|
pcb_drawing_type: "polygon",
|
|
12974
12979
|
points: expandedStroke,
|
|
12975
12980
|
layer: element.route[0].layer
|
|
@@ -12978,6 +12983,7 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
12978
12983
|
if (r.route_type === "via") {
|
|
12979
12984
|
primitives.push({
|
|
12980
12985
|
_pcb_drawing_object_id: "circle_".concat(globalPcbDrawingObjectCount++),
|
|
12986
|
+
_element: element,
|
|
12981
12987
|
pcb_drawing_type: "circle",
|
|
12982
12988
|
x: r.x,
|
|
12983
12989
|
y: r.y,
|
|
@@ -12999,6 +13005,7 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
12999
13005
|
if (prevX !== null && prevY !== null) {
|
|
13000
13006
|
primitives.push({
|
|
13001
13007
|
_pcb_drawing_object_id: "line_".concat(globalPcbDrawingObjectCount++),
|
|
13008
|
+
_element: element,
|
|
13002
13009
|
pcb_drawing_type: "line",
|
|
13003
13010
|
x1: prevX,
|
|
13004
13011
|
y1: prevY,
|
|
@@ -13051,7 +13058,6 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
13051
13058
|
y: y7,
|
|
13052
13059
|
r: hole_diameter2 / 2,
|
|
13053
13060
|
layer: "drill",
|
|
13054
|
-
_element: element,
|
|
13055
13061
|
_parent_pcb_component: _parent_pcb_component,
|
|
13056
13062
|
_parent_source_component: _parent_source_component
|
|
13057
13063
|
},
|
|
@@ -13713,7 +13719,7 @@ var import_soup2 = __toESM(require_dist());
|
|
|
13713
13719
|
// package.json
|
|
13714
13720
|
var package_default = {
|
|
13715
13721
|
name: "@tscircuit/pcb-viewer",
|
|
13716
|
-
version: "1.9.
|
|
13722
|
+
version: "1.9.3",
|
|
13717
13723
|
main: "dist/index.js",
|
|
13718
13724
|
repository: "tscircuit/pcb-viewer",
|
|
13719
13725
|
license: "MIT",
|
|
@@ -13764,6 +13770,7 @@ var package_default = {
|
|
|
13764
13770
|
},
|
|
13765
13771
|
dependencies: {
|
|
13766
13772
|
"@emotion/css": "^11.11.2",
|
|
13773
|
+
"circuit-json-to-connectivity-map": "^0.0.8",
|
|
13767
13774
|
color: "^4.2.3",
|
|
13768
13775
|
"react-supergrid": "^1.0.10",
|
|
13769
13776
|
"react-toastify": "^10.0.5",
|
|
@@ -14761,37 +14768,37 @@ var RatsNestOverlay = function(param) {
|
|
|
14761
14768
|
});
|
|
14762
14769
|
};
|
|
14763
14770
|
// src/components/CanvasElementsRenderer.tsx
|
|
14771
|
+
var import_circuit_json_to_connectivity_map = require("circuit-json-to-connectivity-map");
|
|
14764
14772
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
14765
14773
|
var CanvasElementsRenderer = function(props) {
|
|
14766
14774
|
var transform = props.transform, elements = props.elements;
|
|
14767
|
-
var
|
|
14775
|
+
var _ref = _sliced_to_array((0, import_react16.useMemo)(function() {
|
|
14768
14776
|
var primitivesWithoutInteractionMetadata2 = props.elements.flatMap(function(elm) {
|
|
14769
14777
|
return convertElementToPrimitives(elm, props.elements);
|
|
14770
14778
|
});
|
|
14771
|
-
|
|
14779
|
+
var connectivityMap2 = (0, import_circuit_json_to_connectivity_map.getFullConnectivityMapFromCircuitJson)(props.elements);
|
|
14780
|
+
return [
|
|
14781
|
+
primitivesWithoutInteractionMetadata2,
|
|
14782
|
+
connectivityMap2
|
|
14783
|
+
];
|
|
14772
14784
|
}, [
|
|
14773
14785
|
props.elements
|
|
14774
|
-
]);
|
|
14775
|
-
var
|
|
14786
|
+
]), 2), primitivesWithoutInteractionMetadata = _ref[0], connectivityMap = _ref[1];
|
|
14787
|
+
var _ref1 = _sliced_to_array((0, import_react15.useState)(primitivesWithoutInteractionMetadata), 2), primitives = _ref1[0], setPrimitives = _ref1[1];
|
|
14776
14788
|
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(MouseElementTracker, {
|
|
14777
14789
|
transform: transform,
|
|
14778
14790
|
primitives: primitivesWithoutInteractionMetadata,
|
|
14779
14791
|
onMouseHoverOverPrimitives: function(primitivesHoveredOver) {
|
|
14780
|
-
var
|
|
14781
|
-
return p._pcb_drawing_object_id;
|
|
14782
|
-
}));
|
|
14783
|
-
var newPrimitives = [];
|
|
14792
|
+
var connectedPrimitiveIds = [];
|
|
14784
14793
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
14785
14794
|
try {
|
|
14786
|
-
for(var _iterator =
|
|
14795
|
+
for(var _iterator = primitivesHoveredOver[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
14787
14796
|
var primitive = _step.value;
|
|
14788
|
-
|
|
14789
|
-
|
|
14790
|
-
|
|
14791
|
-
|
|
14792
|
-
newPrimitive.is_mouse_over = false;
|
|
14797
|
+
if (primitive._element && "pcb_port_id" in primitive._element) {
|
|
14798
|
+
var _connectedPrimitiveIds;
|
|
14799
|
+
var connectedPrimitivesList = connectivityMap.getNetConnectedToId(primitive._element.pcb_port_id);
|
|
14800
|
+
(_connectedPrimitiveIds = connectedPrimitiveIds).push.apply(_connectedPrimitiveIds, _to_consumable_array(connectivityMap.getIdsConnectedToNet(connectedPrimitivesList)));
|
|
14793
14801
|
}
|
|
14794
|
-
newPrimitives.push(newPrimitive);
|
|
14795
14802
|
}
|
|
14796
14803
|
} catch (err) {
|
|
14797
14804
|
_didIteratorError = true;
|
|
@@ -14807,6 +14814,39 @@ var CanvasElementsRenderer = function(props) {
|
|
|
14807
14814
|
}
|
|
14808
14815
|
}
|
|
14809
14816
|
}
|
|
14817
|
+
var primitiveIdsWithMouseOver = new Set(primitivesHoveredOver.map(function(p) {
|
|
14818
|
+
return p._pcb_drawing_object_id;
|
|
14819
|
+
}));
|
|
14820
|
+
var newPrimitives = [];
|
|
14821
|
+
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
14822
|
+
try {
|
|
14823
|
+
for(var _iterator1 = primitivesWithoutInteractionMetadata[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
14824
|
+
var primitive1 = _step1.value;
|
|
14825
|
+
var newPrimitive = _object_spread({}, primitive1);
|
|
14826
|
+
if (primitiveIdsWithMouseOver.has(primitive1._pcb_drawing_object_id)) {
|
|
14827
|
+
newPrimitive.is_mouse_over = true;
|
|
14828
|
+
} else if (primitive1._element && ("pcb_trace_id" in primitive1._element && connectedPrimitiveIds.includes(primitive1._element.pcb_trace_id) || "pcb_port_id" in primitive1._element && connectedPrimitiveIds.includes(primitive1._element.pcb_port_id))) {
|
|
14829
|
+
newPrimitive.is_in_highlighted_net = true;
|
|
14830
|
+
} else {
|
|
14831
|
+
newPrimitive.is_in_highlighted_net = false;
|
|
14832
|
+
newPrimitive.is_mouse_over = false;
|
|
14833
|
+
}
|
|
14834
|
+
newPrimitives.push(newPrimitive);
|
|
14835
|
+
}
|
|
14836
|
+
} catch (err) {
|
|
14837
|
+
_didIteratorError1 = true;
|
|
14838
|
+
_iteratorError1 = err;
|
|
14839
|
+
} finally{
|
|
14840
|
+
try {
|
|
14841
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
14842
|
+
_iterator1.return();
|
|
14843
|
+
}
|
|
14844
|
+
} finally{
|
|
14845
|
+
if (_didIteratorError1) {
|
|
14846
|
+
throw _iteratorError1;
|
|
14847
|
+
}
|
|
14848
|
+
}
|
|
14849
|
+
}
|
|
14810
14850
|
setPrimitives(newPrimitives);
|
|
14811
14851
|
},
|
|
14812
14852
|
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(EditPlacementOverlay, {
|