@tscircuit/pcb-viewer 1.9.3 → 1.10.1
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 +85 -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
|
};
|
|
@@ -12858,7 +12863,8 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
12858
12863
|
y: y3,
|
|
12859
12864
|
r: hole_diameter1 / 2,
|
|
12860
12865
|
// TODO support layer on pcb_plated_hole
|
|
12861
|
-
layer: "drill"
|
|
12866
|
+
layer: "drill",
|
|
12867
|
+
_element: element
|
|
12862
12868
|
}
|
|
12863
12869
|
];
|
|
12864
12870
|
} else if (element.shape === "oval") {
|
|
@@ -12880,6 +12886,7 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
12880
12886
|
},
|
|
12881
12887
|
{
|
|
12882
12888
|
_pcb_drawing_object_id: "oval_".concat(globalPcbDrawingObjectCount++),
|
|
12889
|
+
_element: element,
|
|
12883
12890
|
pcb_drawing_type: "oval",
|
|
12884
12891
|
x: x4,
|
|
12885
12892
|
y: y4,
|
|
@@ -12907,6 +12914,7 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
12907
12914
|
},
|
|
12908
12915
|
{
|
|
12909
12916
|
_pcb_drawing_object_id: "pill_".concat(globalPcbDrawingObjectCount++),
|
|
12917
|
+
_element: element,
|
|
12910
12918
|
pcb_drawing_type: "pill",
|
|
12911
12919
|
x: x5,
|
|
12912
12920
|
y: y5,
|
|
@@ -12970,6 +12978,7 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
12970
12978
|
var expandedStroke = getExpandedStroke(strokeInput, 0.5);
|
|
12971
12979
|
primitives.push({
|
|
12972
12980
|
_pcb_drawing_object_id: "polygon_".concat(globalPcbDrawingObjectCount++),
|
|
12981
|
+
_element: element,
|
|
12973
12982
|
pcb_drawing_type: "polygon",
|
|
12974
12983
|
points: expandedStroke,
|
|
12975
12984
|
layer: element.route[0].layer
|
|
@@ -12978,6 +12987,7 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
12978
12987
|
if (r.route_type === "via") {
|
|
12979
12988
|
primitives.push({
|
|
12980
12989
|
_pcb_drawing_object_id: "circle_".concat(globalPcbDrawingObjectCount++),
|
|
12990
|
+
_element: element,
|
|
12981
12991
|
pcb_drawing_type: "circle",
|
|
12982
12992
|
x: r.x,
|
|
12983
12993
|
y: r.y,
|
|
@@ -12999,6 +13009,7 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
12999
13009
|
if (prevX !== null && prevY !== null) {
|
|
13000
13010
|
primitives.push({
|
|
13001
13011
|
_pcb_drawing_object_id: "line_".concat(globalPcbDrawingObjectCount++),
|
|
13012
|
+
_element: element,
|
|
13002
13013
|
pcb_drawing_type: "line",
|
|
13003
13014
|
x1: prevX,
|
|
13004
13015
|
y1: prevY,
|
|
@@ -13046,12 +13057,12 @@ var convertElementToPrimitives = function(element, allElements) {
|
|
|
13046
13057
|
},
|
|
13047
13058
|
{
|
|
13048
13059
|
_pcb_drawing_object_id: "circle_".concat(globalPcbDrawingObjectCount++),
|
|
13060
|
+
_element: element,
|
|
13049
13061
|
pcb_drawing_type: "circle",
|
|
13050
13062
|
x: x7,
|
|
13051
13063
|
y: y7,
|
|
13052
13064
|
r: hole_diameter2 / 2,
|
|
13053
13065
|
layer: "drill",
|
|
13054
|
-
_element: element,
|
|
13055
13066
|
_parent_pcb_component: _parent_pcb_component,
|
|
13056
13067
|
_parent_source_component: _parent_source_component
|
|
13057
13068
|
},
|
|
@@ -13345,6 +13356,7 @@ var MouseElementTracker = function(param) {
|
|
|
13345
13356
|
var _primitive__element, _primitive__element1;
|
|
13346
13357
|
if (((_primitive__element = primitive._element) === null || _primitive__element === void 0 ? void 0 : _primitive__element.type) === "pcb_via") return "continue";
|
|
13347
13358
|
if (((_primitive__element1 = primitive._element) === null || _primitive__element1 === void 0 ? void 0 : _primitive__element1.type) === "pcb_component") return "continue";
|
|
13359
|
+
if ((primitive === null || primitive === void 0 ? void 0 : primitive.layer) === "drill") return "continue";
|
|
13348
13360
|
var screenPos = (0, import_transformation_matrix2.applyToPoint)(transform, primitive);
|
|
13349
13361
|
var w = "w" in primitive ? primitive.w : "r" in primitive ? primitive.r * 2 : 0;
|
|
13350
13362
|
var h = "h" in primitive ? primitive.h : "r" in primitive ? primitive.r * 2 : 0;
|
|
@@ -13713,7 +13725,7 @@ var import_soup2 = __toESM(require_dist());
|
|
|
13713
13725
|
// package.json
|
|
13714
13726
|
var package_default = {
|
|
13715
13727
|
name: "@tscircuit/pcb-viewer",
|
|
13716
|
-
version: "1.
|
|
13728
|
+
version: "1.10.0",
|
|
13717
13729
|
main: "dist/index.js",
|
|
13718
13730
|
repository: "tscircuit/pcb-viewer",
|
|
13719
13731
|
license: "MIT",
|
|
@@ -13764,6 +13776,7 @@ var package_default = {
|
|
|
13764
13776
|
},
|
|
13765
13777
|
dependencies: {
|
|
13766
13778
|
"@emotion/css": "^11.11.2",
|
|
13779
|
+
"circuit-json-to-connectivity-map": "^0.0.8",
|
|
13767
13780
|
color: "^4.2.3",
|
|
13768
13781
|
"react-supergrid": "^1.0.10",
|
|
13769
13782
|
"react-toastify": "^10.0.5",
|
|
@@ -14761,37 +14774,76 @@ var RatsNestOverlay = function(param) {
|
|
|
14761
14774
|
});
|
|
14762
14775
|
};
|
|
14763
14776
|
// src/components/CanvasElementsRenderer.tsx
|
|
14777
|
+
var import_circuit_json_to_connectivity_map = require("circuit-json-to-connectivity-map");
|
|
14778
|
+
// src/lib/util/addInteractionMetadataToPrimitives.ts
|
|
14779
|
+
function addInteractionMetadataToPrimitives(param) {
|
|
14780
|
+
var primitivesWithoutInteractionMetadata = param.primitivesWithoutInteractionMetadata, drawingObjectIdsWithMouseOver = param.drawingObjectIdsWithMouseOver, primitiveIdsInMousedOverNet = param.primitiveIdsInMousedOverNet;
|
|
14781
|
+
var newPrimitives = [];
|
|
14782
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
14783
|
+
try {
|
|
14784
|
+
for(var _iterator = primitivesWithoutInteractionMetadata[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
14785
|
+
var primitive = _step.value;
|
|
14786
|
+
var newPrimitive = _object_spread({}, primitive);
|
|
14787
|
+
if ((primitive === null || primitive === void 0 ? void 0 : primitive.layer) === "drill") {
|
|
14788
|
+
newPrimitive.is_in_highlighted_net = false;
|
|
14789
|
+
newPrimitive.is_mouse_over = false;
|
|
14790
|
+
} else if (drawingObjectIdsWithMouseOver.has(primitive._pcb_drawing_object_id)) {
|
|
14791
|
+
newPrimitive.is_mouse_over = true;
|
|
14792
|
+
} else if (primitive._element && ("pcb_trace_id" in primitive._element && primitiveIdsInMousedOverNet.includes(primitive._element.pcb_trace_id) || "pcb_port_id" in primitive._element && primitiveIdsInMousedOverNet.includes(primitive._element.pcb_port_id))) {
|
|
14793
|
+
newPrimitive.is_in_highlighted_net = true;
|
|
14794
|
+
} else {
|
|
14795
|
+
newPrimitive.is_in_highlighted_net = false;
|
|
14796
|
+
newPrimitive.is_mouse_over = false;
|
|
14797
|
+
}
|
|
14798
|
+
newPrimitives.push(newPrimitive);
|
|
14799
|
+
}
|
|
14800
|
+
} catch (err) {
|
|
14801
|
+
_didIteratorError = true;
|
|
14802
|
+
_iteratorError = err;
|
|
14803
|
+
} finally{
|
|
14804
|
+
try {
|
|
14805
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
14806
|
+
_iterator.return();
|
|
14807
|
+
}
|
|
14808
|
+
} finally{
|
|
14809
|
+
if (_didIteratorError) {
|
|
14810
|
+
throw _iteratorError;
|
|
14811
|
+
}
|
|
14812
|
+
}
|
|
14813
|
+
}
|
|
14814
|
+
return newPrimitives;
|
|
14815
|
+
}
|
|
14816
|
+
// src/components/CanvasElementsRenderer.tsx
|
|
14764
14817
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
14765
14818
|
var CanvasElementsRenderer = function(props) {
|
|
14766
14819
|
var transform = props.transform, elements = props.elements;
|
|
14767
|
-
var
|
|
14820
|
+
var _ref = _sliced_to_array((0, import_react16.useMemo)(function() {
|
|
14768
14821
|
var primitivesWithoutInteractionMetadata2 = props.elements.flatMap(function(elm) {
|
|
14769
14822
|
return convertElementToPrimitives(elm, props.elements);
|
|
14770
14823
|
});
|
|
14771
|
-
|
|
14824
|
+
var connectivityMap2 = (0, import_circuit_json_to_connectivity_map.getFullConnectivityMapFromCircuitJson)(props.elements);
|
|
14825
|
+
return [
|
|
14826
|
+
primitivesWithoutInteractionMetadata2,
|
|
14827
|
+
connectivityMap2
|
|
14828
|
+
];
|
|
14772
14829
|
}, [
|
|
14773
14830
|
props.elements
|
|
14774
|
-
]);
|
|
14775
|
-
var
|
|
14831
|
+
]), 2), primitivesWithoutInteractionMetadata = _ref[0], connectivityMap = _ref[1];
|
|
14832
|
+
var _ref1 = _sliced_to_array((0, import_react15.useState)(primitivesWithoutInteractionMetadata), 2), primitives = _ref1[0], setPrimitives = _ref1[1];
|
|
14776
14833
|
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(MouseElementTracker, {
|
|
14777
14834
|
transform: transform,
|
|
14778
14835
|
primitives: primitivesWithoutInteractionMetadata,
|
|
14779
14836
|
onMouseHoverOverPrimitives: function(primitivesHoveredOver) {
|
|
14780
|
-
var
|
|
14781
|
-
return p._pcb_drawing_object_id;
|
|
14782
|
-
}));
|
|
14783
|
-
var newPrimitives = [];
|
|
14837
|
+
var primitiveIdsInMousedOverNet = [];
|
|
14784
14838
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
14785
14839
|
try {
|
|
14786
|
-
for(var _iterator =
|
|
14840
|
+
for(var _iterator = primitivesHoveredOver[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
14787
14841
|
var primitive = _step.value;
|
|
14788
|
-
|
|
14789
|
-
|
|
14790
|
-
|
|
14791
|
-
|
|
14792
|
-
newPrimitive.is_mouse_over = false;
|
|
14842
|
+
if (primitive._element && "pcb_port_id" in primitive._element) {
|
|
14843
|
+
var _primitiveIdsInMousedOverNet;
|
|
14844
|
+
var connectedPrimitivesList = connectivityMap.getNetConnectedToId(primitive._element.pcb_port_id);
|
|
14845
|
+
(_primitiveIdsInMousedOverNet = primitiveIdsInMousedOverNet).push.apply(_primitiveIdsInMousedOverNet, _to_consumable_array(connectivityMap.getIdsConnectedToNet(connectedPrimitivesList)));
|
|
14793
14846
|
}
|
|
14794
|
-
newPrimitives.push(newPrimitive);
|
|
14795
14847
|
}
|
|
14796
14848
|
} catch (err) {
|
|
14797
14849
|
_didIteratorError = true;
|
|
@@ -14807,6 +14859,14 @@ var CanvasElementsRenderer = function(props) {
|
|
|
14807
14859
|
}
|
|
14808
14860
|
}
|
|
14809
14861
|
}
|
|
14862
|
+
var drawingObjectIdsWithMouseOver = new Set(primitivesHoveredOver.map(function(p) {
|
|
14863
|
+
return p._pcb_drawing_object_id;
|
|
14864
|
+
}));
|
|
14865
|
+
var newPrimitives = addInteractionMetadataToPrimitives({
|
|
14866
|
+
primitivesWithoutInteractionMetadata: primitivesWithoutInteractionMetadata,
|
|
14867
|
+
drawingObjectIdsWithMouseOver: drawingObjectIdsWithMouseOver,
|
|
14868
|
+
primitiveIdsInMousedOverNet: primitiveIdsInMousedOverNet
|
|
14869
|
+
});
|
|
14810
14870
|
setPrimitives(newPrimitives);
|
|
14811
14871
|
},
|
|
14812
14872
|
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(EditPlacementOverlay, {
|