@tscircuit/pcb-viewer 1.11.357 → 1.11.359
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 +95 -102
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -7507,7 +7507,7 @@ function getExpandedStroke(strokeInput, defaultWidth) {
|
|
|
7507
7507
|
}
|
|
7508
7508
|
|
|
7509
7509
|
// src/lib/convert-element-to-primitive.ts
|
|
7510
|
-
import { distance
|
|
7510
|
+
import { distance } from "circuit-json";
|
|
7511
7511
|
|
|
7512
7512
|
// src/lib/element-to-primitive-converters/convert-smtpad-rect.ts
|
|
7513
7513
|
var convertSmtpadRect = (element, metadata) => {
|
|
@@ -7704,49 +7704,12 @@ var convertSmtpadRotatedPill = (element, metadata) => {
|
|
|
7704
7704
|
return primitives;
|
|
7705
7705
|
};
|
|
7706
7706
|
|
|
7707
|
-
// src/lib/element-to-primitive/convert-pcb-copper-text-to-primitive.ts
|
|
7708
|
-
import { distance } from "circuit-json";
|
|
7709
|
-
var convertPcbCopperTextToPrimitive = (element, metadata) => {
|
|
7710
|
-
const { _parent_pcb_component, _parent_source_component } = metadata;
|
|
7711
|
-
const copperText = element;
|
|
7712
|
-
const fontSize = typeof copperText.font_size === "string" ? distance.parse(copperText.font_size) : copperText.font_size ?? 0.2;
|
|
7713
|
-
let knockoutPadding;
|
|
7714
|
-
if (copperText.knockout_padding) {
|
|
7715
|
-
knockoutPadding = {
|
|
7716
|
-
left: typeof copperText.knockout_padding.left === "string" ? distance.parse(copperText.knockout_padding.left) : copperText.knockout_padding.left,
|
|
7717
|
-
top: typeof copperText.knockout_padding.top === "string" ? distance.parse(copperText.knockout_padding.top) : copperText.knockout_padding.top,
|
|
7718
|
-
bottom: typeof copperText.knockout_padding.bottom === "string" ? distance.parse(copperText.knockout_padding.bottom) : copperText.knockout_padding.bottom,
|
|
7719
|
-
right: typeof copperText.knockout_padding.right === "string" ? distance.parse(copperText.knockout_padding.right) : copperText.knockout_padding.right
|
|
7720
|
-
};
|
|
7721
|
-
}
|
|
7722
|
-
return [
|
|
7723
|
-
{
|
|
7724
|
-
_pcb_drawing_object_id: getNewPcbDrawingObjectId("text"),
|
|
7725
|
-
pcb_drawing_type: "text",
|
|
7726
|
-
x: copperText.anchor_position.x,
|
|
7727
|
-
y: copperText.anchor_position.y,
|
|
7728
|
-
layer: copperText.layer,
|
|
7729
|
-
// "top", "bottom", or inner layers
|
|
7730
|
-
align: copperText.anchor_alignment ?? "center",
|
|
7731
|
-
text: copperText.text,
|
|
7732
|
-
size: fontSize,
|
|
7733
|
-
ccw_rotation: copperText.ccw_rotation,
|
|
7734
|
-
is_mirrored: copperText.is_mirrored,
|
|
7735
|
-
is_knockout: copperText.is_knockout,
|
|
7736
|
-
knockout_padding: knockoutPadding,
|
|
7737
|
-
_element: element,
|
|
7738
|
-
_parent_pcb_component,
|
|
7739
|
-
_parent_source_component
|
|
7740
|
-
}
|
|
7741
|
-
];
|
|
7742
|
-
};
|
|
7743
|
-
|
|
7744
7707
|
// src/lib/convert-element-to-primitive.ts
|
|
7745
7708
|
var globalPcbDrawingObjectCount = 0;
|
|
7746
7709
|
var getNewPcbDrawingObjectId = (prefix) => `${prefix}_${globalPcbDrawingObjectCount++}`;
|
|
7747
7710
|
var normalizePolygonPoints = (points) => (points ?? []).map((point) => ({
|
|
7748
|
-
x:
|
|
7749
|
-
y:
|
|
7711
|
+
x: distance.parse(point.x),
|
|
7712
|
+
y: distance.parse(point.y)
|
|
7750
7713
|
}));
|
|
7751
7714
|
var convertElementToPrimitives = (element, allElements) => {
|
|
7752
7715
|
const _parent_pcb_component = "pcb_component_id" in element ? allElements.find(
|
|
@@ -7973,8 +7936,8 @@ var convertElementToPrimitives = (element, allElements) => {
|
|
|
7973
7936
|
hole_offset_x,
|
|
7974
7937
|
hole_offset_y
|
|
7975
7938
|
} = element;
|
|
7976
|
-
const parsed_hole_offset_x =
|
|
7977
|
-
const parsed_hole_offset_y =
|
|
7939
|
+
const parsed_hole_offset_x = distance.parse(hole_offset_x ?? 0);
|
|
7940
|
+
const parsed_hole_offset_y = distance.parse(hole_offset_y ?? 0);
|
|
7978
7941
|
return [
|
|
7979
7942
|
{
|
|
7980
7943
|
_pcb_drawing_object_id: `rect_${globalPcbDrawingObjectCount++}`,
|
|
@@ -8138,8 +8101,8 @@ var convertElementToPrimitives = (element, allElements) => {
|
|
|
8138
8101
|
hole_offset_x,
|
|
8139
8102
|
hole_offset_y
|
|
8140
8103
|
} = element;
|
|
8141
|
-
const parsed_hole_offset_x =
|
|
8142
|
-
const parsed_hole_offset_y =
|
|
8104
|
+
const parsed_hole_offset_x = distance.parse(hole_offset_x ?? 0);
|
|
8105
|
+
const parsed_hole_offset_y = distance.parse(hole_offset_y ?? 0);
|
|
8143
8106
|
const pcb_outline = pad_outline;
|
|
8144
8107
|
const padPrimitives = [];
|
|
8145
8108
|
if (pcb_outline && Array.isArray(pcb_outline)) {
|
|
@@ -8209,12 +8172,6 @@ var convertElementToPrimitives = (element, allElements) => {
|
|
|
8209
8172
|
return [];
|
|
8210
8173
|
}
|
|
8211
8174
|
}
|
|
8212
|
-
case "pcb_copper_text": {
|
|
8213
|
-
return convertPcbCopperTextToPrimitive(element, {
|
|
8214
|
-
_parent_pcb_component,
|
|
8215
|
-
_parent_source_component
|
|
8216
|
-
});
|
|
8217
|
-
}
|
|
8218
8175
|
}
|
|
8219
8176
|
return [];
|
|
8220
8177
|
};
|
|
@@ -9104,8 +9061,26 @@ function drawPcbBoardElements({
|
|
|
9104
9061
|
}
|
|
9105
9062
|
}
|
|
9106
9063
|
|
|
9107
|
-
// src/lib/draw-pcb-
|
|
9064
|
+
// src/lib/draw-pcb-copper-text.ts
|
|
9108
9065
|
import { CircuitToCanvasDrawer as CircuitToCanvasDrawer5 } from "circuit-to-canvas";
|
|
9066
|
+
function isPcbCopperText(element) {
|
|
9067
|
+
return element.type === "pcb_copper_text";
|
|
9068
|
+
}
|
|
9069
|
+
function drawPcbCopperTextElementsForLayer({
|
|
9070
|
+
canvas,
|
|
9071
|
+
elements,
|
|
9072
|
+
layers,
|
|
9073
|
+
realToCanvasMat
|
|
9074
|
+
}) {
|
|
9075
|
+
const copperTextElements = elements.filter(isPcbCopperText);
|
|
9076
|
+
if (copperTextElements.length === 0) return;
|
|
9077
|
+
const drawer = new CircuitToCanvasDrawer5(canvas);
|
|
9078
|
+
drawer.realToCanvasMat = realToCanvasMat;
|
|
9079
|
+
drawer.drawElements(copperTextElements, { layers });
|
|
9080
|
+
}
|
|
9081
|
+
|
|
9082
|
+
// src/lib/draw-pcb-cutout.ts
|
|
9083
|
+
import { CircuitToCanvasDrawer as CircuitToCanvasDrawer6 } from "circuit-to-canvas";
|
|
9109
9084
|
function isPcbCutout(element) {
|
|
9110
9085
|
return element.type === "pcb_cutout";
|
|
9111
9086
|
}
|
|
@@ -9115,14 +9090,14 @@ function drawPcbCutoutElementsForLayer({
|
|
|
9115
9090
|
layers,
|
|
9116
9091
|
realToCanvasMat
|
|
9117
9092
|
}) {
|
|
9118
|
-
const drawer = new
|
|
9093
|
+
const drawer = new CircuitToCanvasDrawer6(canvas);
|
|
9119
9094
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
9120
9095
|
const cutoutElements = elements.filter(isPcbCutout);
|
|
9121
9096
|
drawer.drawElements(cutoutElements, { layers });
|
|
9122
9097
|
}
|
|
9123
9098
|
|
|
9124
9099
|
// src/lib/draw-pcb-keepout.ts
|
|
9125
|
-
import { CircuitToCanvasDrawer as
|
|
9100
|
+
import { CircuitToCanvasDrawer as CircuitToCanvasDrawer7 } from "circuit-to-canvas";
|
|
9126
9101
|
function isPcbKeepout(element) {
|
|
9127
9102
|
return element.type === "pcb_keepout";
|
|
9128
9103
|
}
|
|
@@ -9134,14 +9109,14 @@ function drawPcbKeepoutElementsForLayer({
|
|
|
9134
9109
|
}) {
|
|
9135
9110
|
const keepoutElements = elements.filter(isPcbKeepout);
|
|
9136
9111
|
if (keepoutElements.length === 0) return;
|
|
9137
|
-
const drawer = new
|
|
9112
|
+
const drawer = new CircuitToCanvasDrawer7(canvas);
|
|
9138
9113
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
9139
9114
|
drawer.drawElements(keepoutElements, { layers: [] });
|
|
9140
9115
|
}
|
|
9141
9116
|
|
|
9142
9117
|
// src/lib/draw-pcb-note.ts
|
|
9143
9118
|
import {
|
|
9144
|
-
CircuitToCanvasDrawer as
|
|
9119
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer8
|
|
9145
9120
|
} from "circuit-to-canvas";
|
|
9146
9121
|
function isPcbNote(element) {
|
|
9147
9122
|
return element.type.startsWith("pcb_note_");
|
|
@@ -9152,14 +9127,14 @@ function drawPcbNoteElementsForLayer({
|
|
|
9152
9127
|
layers,
|
|
9153
9128
|
realToCanvasMat
|
|
9154
9129
|
}) {
|
|
9155
|
-
const drawer = new
|
|
9130
|
+
const drawer = new CircuitToCanvasDrawer8(canvas);
|
|
9156
9131
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
9157
9132
|
const pcbNoteElements = elements.filter(isPcbNote);
|
|
9158
9133
|
drawer.drawElements(pcbNoteElements, { layers });
|
|
9159
9134
|
}
|
|
9160
9135
|
|
|
9161
9136
|
// src/lib/draw-pcb-panel.ts
|
|
9162
|
-
import { CircuitToCanvasDrawer as
|
|
9137
|
+
import { CircuitToCanvasDrawer as CircuitToCanvasDrawer9 } from "circuit-to-canvas";
|
|
9163
9138
|
function isPcbPanelElement(element) {
|
|
9164
9139
|
return element.type === "pcb_panel";
|
|
9165
9140
|
}
|
|
@@ -9170,7 +9145,7 @@ function drawPcbPanelElements({
|
|
|
9170
9145
|
realToCanvasMat,
|
|
9171
9146
|
drawSoldermask
|
|
9172
9147
|
}) {
|
|
9173
|
-
const drawer = new
|
|
9148
|
+
const drawer = new CircuitToCanvasDrawer9(canvas);
|
|
9174
9149
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
9175
9150
|
const pcbPanelElements = elements.filter(isPcbPanelElement);
|
|
9176
9151
|
for (const element of pcbPanelElements) {
|
|
@@ -9180,7 +9155,7 @@ function drawPcbPanelElements({
|
|
|
9180
9155
|
|
|
9181
9156
|
// src/lib/draw-pcb-smtpad.ts
|
|
9182
9157
|
import {
|
|
9183
|
-
CircuitToCanvasDrawer as
|
|
9158
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer10,
|
|
9184
9159
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP3
|
|
9185
9160
|
} from "circuit-to-canvas";
|
|
9186
9161
|
import color from "color";
|
|
@@ -9239,12 +9214,12 @@ function drawPcbSmtPadElementsForLayer({
|
|
|
9239
9214
|
(element) => !highlightedElementIds.has(element.pcb_smtpad_id)
|
|
9240
9215
|
);
|
|
9241
9216
|
if (nonHighlightedElements.length > 0) {
|
|
9242
|
-
const drawer = new
|
|
9217
|
+
const drawer = new CircuitToCanvasDrawer10(canvas);
|
|
9243
9218
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
9244
9219
|
drawer.drawElements(nonHighlightedElements, { layers, drawSoldermask });
|
|
9245
9220
|
}
|
|
9246
9221
|
if (highlightedElements.length > 0) {
|
|
9247
|
-
const highlightDrawer = new
|
|
9222
|
+
const highlightDrawer = new CircuitToCanvasDrawer10(canvas);
|
|
9248
9223
|
highlightDrawer.configure({ colorOverrides: HOVER_COLOR_MAP });
|
|
9249
9224
|
highlightDrawer.realToCanvasMat = realToCanvasMat;
|
|
9250
9225
|
highlightDrawer.drawElements(highlightedElements, {
|
|
@@ -9256,7 +9231,7 @@ function drawPcbSmtPadElementsForLayer({
|
|
|
9256
9231
|
|
|
9257
9232
|
// src/lib/draw-pcb-trace.ts
|
|
9258
9233
|
import {
|
|
9259
|
-
CircuitToCanvasDrawer as
|
|
9234
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer11,
|
|
9260
9235
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP4
|
|
9261
9236
|
} from "circuit-to-canvas";
|
|
9262
9237
|
import color2 from "color";
|
|
@@ -9281,10 +9256,19 @@ var normalizeCopperLayers = (layers) => layers.map(
|
|
|
9281
9256
|
(layer) => layer.endsWith("_copper") ? layer.replace("_copper", "") : layer
|
|
9282
9257
|
);
|
|
9283
9258
|
var filterTraceByLayers = (trace, targetLayers) => {
|
|
9284
|
-
const filteredRoute = trace.route.filter(
|
|
9285
|
-
(segment
|
|
9286
|
-
|
|
9287
|
-
|
|
9259
|
+
const filteredRoute = trace.route.filter((segment) => {
|
|
9260
|
+
if (segment.route_type === "wire" && "layer" in segment && targetLayers.has(segment.layer)) {
|
|
9261
|
+
return true;
|
|
9262
|
+
}
|
|
9263
|
+
if (segment.route_type === "via") {
|
|
9264
|
+
return targetLayers.has(segment.from_layer) || targetLayers.has(segment.to_layer);
|
|
9265
|
+
}
|
|
9266
|
+
return false;
|
|
9267
|
+
});
|
|
9268
|
+
const wireCount = filteredRoute.filter(
|
|
9269
|
+
(segment) => segment.route_type === "wire"
|
|
9270
|
+
).length;
|
|
9271
|
+
if (wireCount < 2) return null;
|
|
9288
9272
|
return {
|
|
9289
9273
|
...trace,
|
|
9290
9274
|
route: filteredRoute
|
|
@@ -9318,12 +9302,12 @@ function drawPcbTraceElementsForLayer({
|
|
|
9318
9302
|
}
|
|
9319
9303
|
}
|
|
9320
9304
|
if (nonHighlightedElements.length > 0) {
|
|
9321
|
-
const drawer = new
|
|
9305
|
+
const drawer = new CircuitToCanvasDrawer11(canvas);
|
|
9322
9306
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
9323
9307
|
drawer.drawElements(nonHighlightedElements, { layers });
|
|
9324
9308
|
}
|
|
9325
9309
|
if (highlightedElements.length > 0) {
|
|
9326
|
-
const highlightDrawer = new
|
|
9310
|
+
const highlightDrawer = new CircuitToCanvasDrawer11(canvas);
|
|
9327
9311
|
highlightDrawer.configure({ colorOverrides: HOVER_COLOR_MAP2 });
|
|
9328
9312
|
highlightDrawer.realToCanvasMat = realToCanvasMat;
|
|
9329
9313
|
highlightDrawer.drawElements(highlightedElements, { layers });
|
|
@@ -9332,7 +9316,7 @@ function drawPcbTraceElementsForLayer({
|
|
|
9332
9316
|
|
|
9333
9317
|
// src/lib/draw-plated-hole.ts
|
|
9334
9318
|
import {
|
|
9335
|
-
CircuitToCanvasDrawer as
|
|
9319
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer12,
|
|
9336
9320
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP5
|
|
9337
9321
|
} from "circuit-to-canvas";
|
|
9338
9322
|
import color3 from "color";
|
|
@@ -9372,12 +9356,12 @@ function drawPlatedHolePads({
|
|
|
9372
9356
|
(element) => !highlightedElementIds.has(element.pcb_plated_hole_id)
|
|
9373
9357
|
);
|
|
9374
9358
|
if (nonHighlightedElements.length > 0) {
|
|
9375
|
-
const drawer = new
|
|
9359
|
+
const drawer = new CircuitToCanvasDrawer12(canvas);
|
|
9376
9360
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
9377
9361
|
drawer.drawElements(nonHighlightedElements, { layers, drawSoldermask });
|
|
9378
9362
|
}
|
|
9379
9363
|
if (highlightedElements.length > 0) {
|
|
9380
|
-
const highlightDrawer = new
|
|
9364
|
+
const highlightDrawer = new CircuitToCanvasDrawer12(canvas);
|
|
9381
9365
|
highlightDrawer.configure({ colorOverrides: HOVER_COLOR_MAP3 });
|
|
9382
9366
|
highlightDrawer.realToCanvasMat = realToCanvasMat;
|
|
9383
9367
|
highlightDrawer.drawElements(highlightedElements, {
|
|
@@ -9782,7 +9766,7 @@ var drawPrimitives = (drawer, primitives) => {
|
|
|
9782
9766
|
|
|
9783
9767
|
// src/lib/draw-soldermask.ts
|
|
9784
9768
|
import {
|
|
9785
|
-
CircuitToCanvasDrawer as
|
|
9769
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer13,
|
|
9786
9770
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP6
|
|
9787
9771
|
} from "circuit-to-canvas";
|
|
9788
9772
|
import color5 from "color";
|
|
@@ -9814,7 +9798,7 @@ function drawSoldermaskElementsForLayer({
|
|
|
9814
9798
|
drawSoldermaskBottom,
|
|
9815
9799
|
primitives
|
|
9816
9800
|
}) {
|
|
9817
|
-
const drawer = new
|
|
9801
|
+
const drawer = new CircuitToCanvasDrawer13(canvas);
|
|
9818
9802
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
9819
9803
|
const boards = elements.filter((element) => element.type === "pcb_board");
|
|
9820
9804
|
if (boards.length <= 1) {
|
|
@@ -9866,7 +9850,7 @@ function drawSoldermaskElementsForLayer({
|
|
|
9866
9850
|
return false;
|
|
9867
9851
|
});
|
|
9868
9852
|
if (hoveredElements.length === 0) return;
|
|
9869
|
-
const hoverDrawer = new
|
|
9853
|
+
const hoverDrawer = new CircuitToCanvasDrawer13(canvas);
|
|
9870
9854
|
hoverDrawer.configure({ colorOverrides: HOVER_SOLDERMASK_COLOR_MAP });
|
|
9871
9855
|
hoverDrawer.realToCanvasMat = realToCanvasMat;
|
|
9872
9856
|
hoverDrawer.drawElements(hoveredElements, {
|
|
@@ -9880,7 +9864,7 @@ function drawSoldermaskElementsForLayer({
|
|
|
9880
9864
|
|
|
9881
9865
|
// src/lib/draw-silkscreen.ts
|
|
9882
9866
|
import {
|
|
9883
|
-
CircuitToCanvasDrawer as
|
|
9867
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer14,
|
|
9884
9868
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP7
|
|
9885
9869
|
} from "circuit-to-canvas";
|
|
9886
9870
|
var PCB_VIEWER_COLOR_MAP2 = {
|
|
@@ -9899,7 +9883,7 @@ function drawSilkscreenElementsForLayer({
|
|
|
9899
9883
|
layers,
|
|
9900
9884
|
realToCanvasMat
|
|
9901
9885
|
}) {
|
|
9902
|
-
const drawer = new
|
|
9886
|
+
const drawer = new CircuitToCanvasDrawer14(canvas);
|
|
9903
9887
|
drawer.configure({
|
|
9904
9888
|
colorOverrides: PCB_VIEWER_COLOR_MAP2
|
|
9905
9889
|
});
|
|
@@ -9911,7 +9895,7 @@ function drawSilkscreenElementsForLayer({
|
|
|
9911
9895
|
// src/lib/draw-via.ts
|
|
9912
9896
|
import {
|
|
9913
9897
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP8,
|
|
9914
|
-
CircuitToCanvasDrawer as
|
|
9898
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer15
|
|
9915
9899
|
} from "circuit-to-canvas";
|
|
9916
9900
|
import color6 from "color";
|
|
9917
9901
|
var HOVER_COLOR_MAP4 = {
|
|
@@ -9952,12 +9936,12 @@ function drawPcbViaElementsForLayer({
|
|
|
9952
9936
|
(element) => !highlightedElementIds.has(element.pcb_via_id)
|
|
9953
9937
|
);
|
|
9954
9938
|
if (nonHighlightedElements.length > 0) {
|
|
9955
|
-
const drawer = new
|
|
9939
|
+
const drawer = new CircuitToCanvasDrawer15(canvas);
|
|
9956
9940
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
9957
9941
|
drawer.drawElements(nonHighlightedElements, { layers, drawSoldermask });
|
|
9958
9942
|
}
|
|
9959
9943
|
if (highlightedElements.length > 0) {
|
|
9960
|
-
const highlightDrawer = new
|
|
9944
|
+
const highlightDrawer = new CircuitToCanvasDrawer15(canvas);
|
|
9961
9945
|
highlightDrawer.configure({ colorOverrides: HOVER_COLOR_MAP4 });
|
|
9962
9946
|
highlightDrawer.realToCanvasMat = realToCanvasMat;
|
|
9963
9947
|
highlightDrawer.drawElements(highlightedElements, {
|
|
@@ -9969,7 +9953,7 @@ function drawPcbViaElementsForLayer({
|
|
|
9969
9953
|
|
|
9970
9954
|
// src/lib/draw-courtyard.ts
|
|
9971
9955
|
import {
|
|
9972
|
-
CircuitToCanvasDrawer as
|
|
9956
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer16,
|
|
9973
9957
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP9
|
|
9974
9958
|
} from "circuit-to-canvas";
|
|
9975
9959
|
var PCB_VIEWER_COLOR_MAP3 = {
|
|
@@ -9988,7 +9972,7 @@ function drawCourtyardElementsForLayer({
|
|
|
9988
9972
|
layers,
|
|
9989
9973
|
realToCanvasMat
|
|
9990
9974
|
}) {
|
|
9991
|
-
const drawer = new
|
|
9975
|
+
const drawer = new CircuitToCanvasDrawer16(canvas);
|
|
9992
9976
|
drawer.configure({
|
|
9993
9977
|
colorOverrides: PCB_VIEWER_COLOR_MAP3
|
|
9994
9978
|
});
|
|
@@ -10059,7 +10043,7 @@ var CanvasPrimitiveRenderer = ({
|
|
|
10059
10043
|
drawer.foregroundLayer = selectedLayer;
|
|
10060
10044
|
const filteredPrimitives = primitives.filter((p) => isShowingSolderMask || !p.layer?.includes("soldermask")).filter((p) => isShowingSilkscreen || !p.layer?.includes("silkscreen")).filter(
|
|
10061
10045
|
(p) => isShowingFabricationNotes || !p.layer?.includes("fabrication")
|
|
10062
|
-
).filter((p) => p.layer !== "board").filter((p) => p._element?.type !== "pcb_smtpad").filter((p) => p._element?.type !== "pcb_plated_hole").filter((p) => p._element?.type !== "pcb_via").filter((p) => p._element?.type !== "pcb_trace");
|
|
10046
|
+
).filter((p) => p.layer !== "board").filter((p) => p._element?.type !== "pcb_smtpad").filter((p) => p._element?.type !== "pcb_plated_hole").filter((p) => p._element?.type !== "pcb_via").filter((p) => p._element?.type !== "pcb_trace").filter((p) => p._element?.type !== "pcb_copper_text");
|
|
10063
10047
|
drawPrimitives(drawer, filteredPrimitives);
|
|
10064
10048
|
if (transform) {
|
|
10065
10049
|
const topCanvas = canvasRefs.current.top;
|
|
@@ -10090,6 +10074,15 @@ var CanvasPrimitiveRenderer = ({
|
|
|
10090
10074
|
primitives
|
|
10091
10075
|
});
|
|
10092
10076
|
}
|
|
10077
|
+
for (const { canvas, copperLayer } of copperLayers) {
|
|
10078
|
+
if (!canvas) continue;
|
|
10079
|
+
drawPcbCopperTextElementsForLayer({
|
|
10080
|
+
canvas,
|
|
10081
|
+
elements,
|
|
10082
|
+
layers: [copperLayer],
|
|
10083
|
+
realToCanvasMat: transform
|
|
10084
|
+
});
|
|
10085
|
+
}
|
|
10093
10086
|
if (topCanvas) {
|
|
10094
10087
|
drawPlatedHolePads({
|
|
10095
10088
|
canvas: topCanvas,
|
|
@@ -11016,7 +11009,7 @@ function calculateDiagonalLabel(params) {
|
|
|
11016
11009
|
} = params;
|
|
11017
11010
|
const deltaX = dimensionEnd.x - dimensionStart.x;
|
|
11018
11011
|
const deltaY = dimensionEnd.y - dimensionStart.y;
|
|
11019
|
-
const
|
|
11012
|
+
const distance3 = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
|
|
11020
11013
|
const screenDeltaX = screenDimensionEnd.x - screenDimensionStart.x;
|
|
11021
11014
|
const screenDeltaY = screenDimensionEnd.y - screenDimensionStart.y;
|
|
11022
11015
|
const screenDistance = Math.sqrt(
|
|
@@ -11058,11 +11051,11 @@ function calculateDiagonalLabel(params) {
|
|
|
11058
11051
|
const x = midX + offsetX;
|
|
11059
11052
|
const y = midY + offsetY;
|
|
11060
11053
|
return {
|
|
11061
|
-
distance:
|
|
11054
|
+
distance: distance3,
|
|
11062
11055
|
screenDistance,
|
|
11063
11056
|
x,
|
|
11064
11057
|
y,
|
|
11065
|
-
show:
|
|
11058
|
+
show: distance3 > 0.01 && screenDistance > 30 && isDiagonal
|
|
11066
11059
|
};
|
|
11067
11060
|
}
|
|
11068
11061
|
|
|
@@ -11357,11 +11350,11 @@ var DimensionOverlay = ({
|
|
|
11357
11350
|
for (const snap of snappingPointsWithScreen) {
|
|
11358
11351
|
const dx = snap.screenPoint.x - screenPoint.x;
|
|
11359
11352
|
const dy = snap.screenPoint.y - screenPoint.y;
|
|
11360
|
-
const
|
|
11361
|
-
if (
|
|
11362
|
-
if (!bestMatch ||
|
|
11353
|
+
const distance3 = Math.hypot(dx, dy);
|
|
11354
|
+
if (distance3 > SNAP_THRESHOLD_PX) continue;
|
|
11355
|
+
if (!bestMatch || distance3 < bestMatch.distance) {
|
|
11363
11356
|
bestMatch = {
|
|
11364
|
-
distance:
|
|
11357
|
+
distance: distance3,
|
|
11365
11358
|
id: snap.id,
|
|
11366
11359
|
point: snap.point
|
|
11367
11360
|
};
|
|
@@ -11951,10 +11944,10 @@ var isInsideOfSmtpad = (elm, point, padding = 0) => {
|
|
|
11951
11944
|
};
|
|
11952
11945
|
var isInsideOfPlatedHole = (hole, point, padding = 0) => {
|
|
11953
11946
|
if (hole.shape === "circle") {
|
|
11954
|
-
const
|
|
11947
|
+
const distance3 = Math.sqrt(
|
|
11955
11948
|
(point.x - hole.x) ** 2 + (point.y - hole.y) ** 2
|
|
11956
11949
|
);
|
|
11957
|
-
return
|
|
11950
|
+
return distance3 <= hole.outer_diameter / 2 + padding;
|
|
11958
11951
|
} else if (hole.shape === "circular_hole_with_rect_pad") {
|
|
11959
11952
|
const dx = Math.abs(point.x - hole.x);
|
|
11960
11953
|
const dy = Math.abs(point.y - hole.y);
|
|
@@ -12785,7 +12778,7 @@ var ErrorOverlay = ({
|
|
|
12785
12778
|
|
|
12786
12779
|
// src/components/MouseElementTracker.tsx
|
|
12787
12780
|
import { pointToSegmentDistance } from "@tscircuit/math-utils";
|
|
12788
|
-
import { distance as
|
|
12781
|
+
import { distance as distance2 } from "circuit-json";
|
|
12789
12782
|
|
|
12790
12783
|
// src/lib/util/if-sets-match-exactly.ts
|
|
12791
12784
|
function ifSetsMatchExactly(set1, set2) {
|
|
@@ -13772,22 +13765,22 @@ var getPrimitivesUnderPoint = (primitives, rwPoint, transform) => {
|
|
|
13772
13765
|
for (const primitive of primitives) {
|
|
13773
13766
|
if (!primitive._element) continue;
|
|
13774
13767
|
if ("x1" in primitive && primitive._element?.type === "pcb_trace") {
|
|
13775
|
-
const
|
|
13768
|
+
const distance3 = pointToSegmentDistance(
|
|
13776
13769
|
{ x: rwPoint.x, y: rwPoint.y },
|
|
13777
13770
|
{ x: primitive.x1, y: primitive.y1 },
|
|
13778
13771
|
{ x: primitive.x2, y: primitive.y2 }
|
|
13779
13772
|
);
|
|
13780
13773
|
const lineWidth = primitive.width || 0.5;
|
|
13781
13774
|
const detectionThreshold = Math.max(lineWidth * 25, 2) / transform.a;
|
|
13782
|
-
if (
|
|
13775
|
+
if (distance3 < detectionThreshold) {
|
|
13783
13776
|
newMousedPrimitives.push(primitive);
|
|
13784
13777
|
}
|
|
13785
13778
|
continue;
|
|
13786
13779
|
}
|
|
13787
13780
|
if (primitive.pcb_drawing_type === "polygon") {
|
|
13788
13781
|
const points = primitive.points.map((point) => ({
|
|
13789
|
-
x:
|
|
13790
|
-
y:
|
|
13782
|
+
x: distance2.parse(point.x),
|
|
13783
|
+
y: distance2.parse(point.y)
|
|
13791
13784
|
}));
|
|
13792
13785
|
const boundingBox = getPolygonBoundingBox(points);
|
|
13793
13786
|
if (!boundingBox) continue;
|
|
@@ -13801,8 +13794,8 @@ var getPrimitivesUnderPoint = (primitives, rwPoint, transform) => {
|
|
|
13801
13794
|
}
|
|
13802
13795
|
if (primitive.pcb_drawing_type === "polygon_with_arcs") {
|
|
13803
13796
|
const points = primitive.brep_shape.outer_ring.vertices.map((v) => ({
|
|
13804
|
-
x:
|
|
13805
|
-
y:
|
|
13797
|
+
x: distance2.parse(v.x),
|
|
13798
|
+
y: distance2.parse(v.y)
|
|
13806
13799
|
}));
|
|
13807
13800
|
const boundingBox = getPolygonBoundingBox(points);
|
|
13808
13801
|
if (!boundingBox) continue;
|
|
@@ -14288,11 +14281,11 @@ var RatsNestOverlay = ({ transform, soup, children }) => {
|
|
|
14288
14281
|
connectedIds.forEach((id) => {
|
|
14289
14282
|
const pos = getElementPosition(id);
|
|
14290
14283
|
if (pos) {
|
|
14291
|
-
const
|
|
14284
|
+
const distance3 = Math.sqrt(
|
|
14292
14285
|
(sourcePoint.x - pos.x) ** 2 + (sourcePoint.y - pos.y) ** 2
|
|
14293
14286
|
);
|
|
14294
|
-
if (
|
|
14295
|
-
minDistance =
|
|
14287
|
+
if (distance3 < minDistance && distance3 > 0) {
|
|
14288
|
+
minDistance = distance3;
|
|
14296
14289
|
nearestPoint = pos;
|
|
14297
14290
|
}
|
|
14298
14291
|
}
|
|
@@ -14378,7 +14371,7 @@ import { css as css3 } from "@emotion/css";
|
|
|
14378
14371
|
// package.json
|
|
14379
14372
|
var package_default = {
|
|
14380
14373
|
name: "@tscircuit/pcb-viewer",
|
|
14381
|
-
version: "1.11.
|
|
14374
|
+
version: "1.11.358",
|
|
14382
14375
|
main: "dist/index.js",
|
|
14383
14376
|
type: "module",
|
|
14384
14377
|
repository: "tscircuit/pcb-viewer",
|