@tscircuit/pcb-viewer 1.11.322 → 1.11.324
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 +164 -151
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -8161,7 +8161,7 @@ var Drawer = class {
|
|
|
8161
8161
|
const drawLines = (angle2) => {
|
|
8162
8162
|
const sin = Math.sin(angle2);
|
|
8163
8163
|
const cos = Math.cos(angle2);
|
|
8164
|
-
const diag = Math.sqrt(
|
|
8164
|
+
const diag = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
|
|
8165
8165
|
for (let i = -diag; i <= diag; i += spacing$) {
|
|
8166
8166
|
ctx.beginPath();
|
|
8167
8167
|
ctx.moveTo(x1 + i * cos - diag * sin, y1 + i * sin + diag * cos);
|
|
@@ -8383,7 +8383,7 @@ var Drawer = class {
|
|
|
8383
8383
|
const [x$, y$] = applyToPoint3(this.transform, [x, y]);
|
|
8384
8384
|
this.applyAperture();
|
|
8385
8385
|
const ctx = this.getLayerCtx();
|
|
8386
|
-
ctx.font =
|
|
8386
|
+
ctx.font = "10px sans-serif";
|
|
8387
8387
|
ctx.fillText(text, x$, y$);
|
|
8388
8388
|
}
|
|
8389
8389
|
getLayerCtx() {
|
|
@@ -8418,9 +8418,9 @@ var Drawer = class {
|
|
|
8418
8418
|
];
|
|
8419
8419
|
const order = [
|
|
8420
8420
|
...DEFAULT_DRAW_ORDER.filter((l) => !layersToShiftToTop.includes(l)),
|
|
8421
|
-
...associatedSilkscreen ? [associatedSilkscreen] : [],
|
|
8422
8421
|
foregroundLayer,
|
|
8423
8422
|
...maskWithCopperLayerForForeground ? [maskWithCopperLayerForForeground] : [],
|
|
8423
|
+
...associatedSilkscreen ? [associatedSilkscreen] : [],
|
|
8424
8424
|
"drill"
|
|
8425
8425
|
];
|
|
8426
8426
|
order.forEach((layer, i) => {
|
|
@@ -8432,23 +8432,23 @@ var Drawer = class {
|
|
|
8432
8432
|
}
|
|
8433
8433
|
applyAperture() {
|
|
8434
8434
|
const { transform, aperture } = this;
|
|
8435
|
-
let { size, mode, color:
|
|
8435
|
+
let { size, mode, color: color6, fontSize, layer } = aperture;
|
|
8436
8436
|
if (!(layer in this.ctxLayerMap)) this.aperture.layer = "other";
|
|
8437
8437
|
const ctx = this.getLayerCtx();
|
|
8438
8438
|
if (!ctx) {
|
|
8439
8439
|
throw new Error(`No context for layer "${this.foregroundLayer}"`);
|
|
8440
8440
|
}
|
|
8441
|
-
if (!
|
|
8441
|
+
if (!color6) color6 = "undefined";
|
|
8442
8442
|
ctx.lineWidth = scaleOnly(transform, size);
|
|
8443
8443
|
ctx.lineCap = "round";
|
|
8444
8444
|
if (mode === "add") {
|
|
8445
8445
|
ctx.globalCompositeOperation = "source-over";
|
|
8446
|
-
let colorString = LAYER_NAME_TO_COLOR[
|
|
8446
|
+
let colorString = LAYER_NAME_TO_COLOR[color6.toLowerCase()];
|
|
8447
8447
|
if (!colorString)
|
|
8448
8448
|
try {
|
|
8449
|
-
colorString = colorParser(
|
|
8449
|
+
colorString = colorParser(color6).rgb().toString();
|
|
8450
8450
|
} catch (error) {
|
|
8451
|
-
console.warn(`Invalid color format: '${
|
|
8451
|
+
console.warn(`Invalid color format: '${color6}'`);
|
|
8452
8452
|
colorString = "white";
|
|
8453
8453
|
}
|
|
8454
8454
|
ctx.fillStyle = colorString;
|
|
@@ -8467,7 +8467,7 @@ var Drawer = class {
|
|
|
8467
8467
|
const [x$, y$] = applyToPoint3(this.transform, [x, y]);
|
|
8468
8468
|
const { size, shape, mode } = this.aperture;
|
|
8469
8469
|
const size$ = scaleOnly(this.transform, size);
|
|
8470
|
-
|
|
8470
|
+
const { lastPoint } = this;
|
|
8471
8471
|
const lastPoint$ = applyToPoint3(this.transform, lastPoint);
|
|
8472
8472
|
this.applyAperture();
|
|
8473
8473
|
const ctx = this.getLayerCtx();
|
|
@@ -8698,9 +8698,29 @@ function drawPcbNoteElementsForLayer({
|
|
|
8698
8698
|
drawer.drawElements(pcbNoteElements, { layers });
|
|
8699
8699
|
}
|
|
8700
8700
|
|
|
8701
|
+
// src/lib/draw-pcb-panel.ts
|
|
8702
|
+
import { CircuitToCanvasDrawer as CircuitToCanvasDrawer8 } from "circuit-to-canvas";
|
|
8703
|
+
function isPcbPanelElement(element) {
|
|
8704
|
+
return element.type === "pcb_panel";
|
|
8705
|
+
}
|
|
8706
|
+
function drawPcbPanelElements({
|
|
8707
|
+
canvas,
|
|
8708
|
+
elements,
|
|
8709
|
+
layers,
|
|
8710
|
+
realToCanvasMat,
|
|
8711
|
+
drawSoldermask
|
|
8712
|
+
}) {
|
|
8713
|
+
const drawer = new CircuitToCanvasDrawer8(canvas);
|
|
8714
|
+
drawer.realToCanvasMat = realToCanvasMat;
|
|
8715
|
+
const pcbPanelElements = elements.filter(isPcbPanelElement);
|
|
8716
|
+
for (const element of pcbPanelElements) {
|
|
8717
|
+
drawer.drawElements([element], { layers, drawSoldermask });
|
|
8718
|
+
}
|
|
8719
|
+
}
|
|
8720
|
+
|
|
8701
8721
|
// src/lib/draw-pcb-smtpad.ts
|
|
8702
8722
|
import {
|
|
8703
|
-
CircuitToCanvasDrawer as
|
|
8723
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer9,
|
|
8704
8724
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP3
|
|
8705
8725
|
} from "circuit-to-canvas";
|
|
8706
8726
|
import color from "color";
|
|
@@ -8759,12 +8779,12 @@ function drawPcbSmtPadElementsForLayer({
|
|
|
8759
8779
|
(element) => !highlightedElementIds.has(element.pcb_smtpad_id)
|
|
8760
8780
|
);
|
|
8761
8781
|
if (nonHighlightedElements.length > 0) {
|
|
8762
|
-
const drawer = new
|
|
8782
|
+
const drawer = new CircuitToCanvasDrawer9(canvas);
|
|
8763
8783
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
8764
8784
|
drawer.drawElements(nonHighlightedElements, { layers: [], drawSoldermask });
|
|
8765
8785
|
}
|
|
8766
8786
|
if (highlightedElements.length > 0) {
|
|
8767
|
-
const highlightDrawer = new
|
|
8787
|
+
const highlightDrawer = new CircuitToCanvasDrawer9(canvas);
|
|
8768
8788
|
highlightDrawer.configure({ colorOverrides: HOVER_COLOR_MAP });
|
|
8769
8789
|
highlightDrawer.realToCanvasMat = realToCanvasMat;
|
|
8770
8790
|
highlightDrawer.drawElements(highlightedElements, {
|
|
@@ -8774,9 +8794,9 @@ function drawPcbSmtPadElementsForLayer({
|
|
|
8774
8794
|
}
|
|
8775
8795
|
}
|
|
8776
8796
|
|
|
8777
|
-
// src/lib/draw-
|
|
8797
|
+
// src/lib/draw-pcb-trace.ts
|
|
8778
8798
|
import {
|
|
8779
|
-
CircuitToCanvasDrawer as
|
|
8799
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer10,
|
|
8780
8800
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP4
|
|
8781
8801
|
} from "circuit-to-canvas";
|
|
8782
8802
|
import color2 from "color";
|
|
@@ -8785,7 +8805,74 @@ var HOVER_COLOR_MAP2 = {
|
|
|
8785
8805
|
copper: {
|
|
8786
8806
|
...DEFAULT_PCB_COLOR_MAP4.copper,
|
|
8787
8807
|
top: color2(colors_default.board.pad_front).lighten(0.5).toString(),
|
|
8788
|
-
bottom: color2(colors_default.board.pad_back).lighten(0.5).toString()
|
|
8808
|
+
bottom: color2(colors_default.board.pad_back).lighten(0.5).toString(),
|
|
8809
|
+
inner1: color2(colors_default.board.copper.in1).lighten(0.5).toString(),
|
|
8810
|
+
inner2: color2(colors_default.board.copper.in2).lighten(0.5).toString(),
|
|
8811
|
+
inner3: color2(colors_default.board.copper.in3).lighten(0.5).toString(),
|
|
8812
|
+
inner4: color2(colors_default.board.copper.in4).lighten(0.5).toString(),
|
|
8813
|
+
inner5: color2(colors_default.board.copper.in5).lighten(0.5).toString(),
|
|
8814
|
+
inner6: color2(colors_default.board.copper.in6).lighten(0.5).toString()
|
|
8815
|
+
}
|
|
8816
|
+
};
|
|
8817
|
+
function isPcbTrace(element) {
|
|
8818
|
+
return element.type === "pcb_trace";
|
|
8819
|
+
}
|
|
8820
|
+
var normalizeCopperLayers = (layers) => layers.map(
|
|
8821
|
+
(layer) => layer.endsWith("_copper") ? layer.replace("_copper", "") : layer
|
|
8822
|
+
);
|
|
8823
|
+
function drawPcbTraceElementsForLayer({
|
|
8824
|
+
canvas,
|
|
8825
|
+
elements,
|
|
8826
|
+
layers,
|
|
8827
|
+
realToCanvasMat,
|
|
8828
|
+
primitives
|
|
8829
|
+
}) {
|
|
8830
|
+
const targetLayers = new Set(normalizeCopperLayers(layers));
|
|
8831
|
+
const traceElements = elements.filter(isPcbTrace).filter(
|
|
8832
|
+
(element) => element.route.some(
|
|
8833
|
+
(segment) => segment.route_type === "wire" && "layer" in segment && targetLayers.has(segment.layer)
|
|
8834
|
+
)
|
|
8835
|
+
);
|
|
8836
|
+
if (traceElements.length === 0) return;
|
|
8837
|
+
const highlightedElementIds = /* @__PURE__ */ new Set();
|
|
8838
|
+
if (primitives) {
|
|
8839
|
+
for (const primitive of primitives) {
|
|
8840
|
+
if ((primitive.is_mouse_over || primitive.is_in_highlighted_net) && primitive._element?.type === "pcb_trace") {
|
|
8841
|
+
highlightedElementIds.add(primitive._element.pcb_trace_id);
|
|
8842
|
+
}
|
|
8843
|
+
}
|
|
8844
|
+
}
|
|
8845
|
+
const highlightedElements = traceElements.filter(
|
|
8846
|
+
(element) => highlightedElementIds.has(element.pcb_trace_id)
|
|
8847
|
+
);
|
|
8848
|
+
const nonHighlightedElements = traceElements.filter(
|
|
8849
|
+
(element) => !highlightedElementIds.has(element.pcb_trace_id)
|
|
8850
|
+
);
|
|
8851
|
+
if (nonHighlightedElements.length > 0) {
|
|
8852
|
+
const drawer = new CircuitToCanvasDrawer10(canvas);
|
|
8853
|
+
drawer.realToCanvasMat = realToCanvasMat;
|
|
8854
|
+
drawer.drawElements(nonHighlightedElements, { layers });
|
|
8855
|
+
}
|
|
8856
|
+
if (highlightedElements.length > 0) {
|
|
8857
|
+
const highlightDrawer = new CircuitToCanvasDrawer10(canvas);
|
|
8858
|
+
highlightDrawer.configure({ colorOverrides: HOVER_COLOR_MAP2 });
|
|
8859
|
+
highlightDrawer.realToCanvasMat = realToCanvasMat;
|
|
8860
|
+
highlightDrawer.drawElements(highlightedElements, { layers });
|
|
8861
|
+
}
|
|
8862
|
+
}
|
|
8863
|
+
|
|
8864
|
+
// src/lib/draw-plated-hole.ts
|
|
8865
|
+
import {
|
|
8866
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer11,
|
|
8867
|
+
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP5
|
|
8868
|
+
} from "circuit-to-canvas";
|
|
8869
|
+
import color3 from "color";
|
|
8870
|
+
var HOVER_COLOR_MAP3 = {
|
|
8871
|
+
...DEFAULT_PCB_COLOR_MAP5,
|
|
8872
|
+
copper: {
|
|
8873
|
+
...DEFAULT_PCB_COLOR_MAP5.copper,
|
|
8874
|
+
top: color3(colors_default.board.pad_front).lighten(0.5).toString(),
|
|
8875
|
+
bottom: color3(colors_default.board.pad_back).lighten(0.5).toString()
|
|
8789
8876
|
}
|
|
8790
8877
|
};
|
|
8791
8878
|
function isPlatedHole(element) {
|
|
@@ -8816,13 +8903,13 @@ function drawPlatedHolePads({
|
|
|
8816
8903
|
(element) => !highlightedElementIds.has(element.pcb_plated_hole_id)
|
|
8817
8904
|
);
|
|
8818
8905
|
if (nonHighlightedElements.length > 0) {
|
|
8819
|
-
const drawer = new
|
|
8906
|
+
const drawer = new CircuitToCanvasDrawer11(canvas);
|
|
8820
8907
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
8821
8908
|
drawer.drawElements(nonHighlightedElements, { layers, drawSoldermask });
|
|
8822
8909
|
}
|
|
8823
8910
|
if (highlightedElements.length > 0) {
|
|
8824
|
-
const highlightDrawer = new
|
|
8825
|
-
highlightDrawer.configure({ colorOverrides:
|
|
8911
|
+
const highlightDrawer = new CircuitToCanvasDrawer11(canvas);
|
|
8912
|
+
highlightDrawer.configure({ colorOverrides: HOVER_COLOR_MAP3 });
|
|
8826
8913
|
highlightDrawer.realToCanvasMat = realToCanvasMat;
|
|
8827
8914
|
highlightDrawer.drawElements(highlightedElements, {
|
|
8828
8915
|
layers,
|
|
@@ -8947,11 +9034,11 @@ var convertTextToLines = (text) => {
|
|
|
8947
9034
|
};
|
|
8948
9035
|
|
|
8949
9036
|
// src/lib/draw-primitives.ts
|
|
8950
|
-
import
|
|
9037
|
+
import color4 from "color";
|
|
8951
9038
|
function getColor(primitive) {
|
|
8952
9039
|
const explicitColor = primitive.color;
|
|
8953
9040
|
const baseColorString = explicitColor ?? LAYER_NAME_TO_COLOR[primitive.layer];
|
|
8954
|
-
let c =
|
|
9041
|
+
let c = color4(baseColorString);
|
|
8955
9042
|
if (primitive._element?.type === "pcb_copper_pour") {
|
|
8956
9043
|
c = c.alpha(0.7);
|
|
8957
9044
|
}
|
|
@@ -9226,11 +9313,11 @@ var drawPrimitives = (drawer, primitives) => {
|
|
|
9226
9313
|
|
|
9227
9314
|
// src/lib/draw-silkscreen.ts
|
|
9228
9315
|
import {
|
|
9229
|
-
CircuitToCanvasDrawer as
|
|
9230
|
-
DEFAULT_PCB_COLOR_MAP as
|
|
9316
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer12,
|
|
9317
|
+
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP6
|
|
9231
9318
|
} from "circuit-to-canvas";
|
|
9232
9319
|
var PCB_VIEWER_COLOR_MAP2 = {
|
|
9233
|
-
...
|
|
9320
|
+
...DEFAULT_PCB_COLOR_MAP6,
|
|
9234
9321
|
silkscreen: {
|
|
9235
9322
|
top: colors_default.board.f_silks,
|
|
9236
9323
|
bottom: colors_default.board.b_silks
|
|
@@ -9245,7 +9332,7 @@ function drawSilkscreenElementsForLayer({
|
|
|
9245
9332
|
layers,
|
|
9246
9333
|
realToCanvasMat
|
|
9247
9334
|
}) {
|
|
9248
|
-
const drawer = new
|
|
9335
|
+
const drawer = new CircuitToCanvasDrawer12(canvas);
|
|
9249
9336
|
drawer.configure({
|
|
9250
9337
|
colorOverrides: PCB_VIEWER_COLOR_MAP2
|
|
9251
9338
|
});
|
|
@@ -9256,16 +9343,16 @@ function drawSilkscreenElementsForLayer({
|
|
|
9256
9343
|
|
|
9257
9344
|
// src/lib/draw-via.ts
|
|
9258
9345
|
import {
|
|
9259
|
-
DEFAULT_PCB_COLOR_MAP as
|
|
9260
|
-
CircuitToCanvasDrawer as
|
|
9346
|
+
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP7,
|
|
9347
|
+
CircuitToCanvasDrawer as CircuitToCanvasDrawer13
|
|
9261
9348
|
} from "circuit-to-canvas";
|
|
9262
|
-
import
|
|
9263
|
-
var
|
|
9264
|
-
...
|
|
9349
|
+
import color5 from "color";
|
|
9350
|
+
var HOVER_COLOR_MAP4 = {
|
|
9351
|
+
...DEFAULT_PCB_COLOR_MAP7,
|
|
9265
9352
|
copper: {
|
|
9266
|
-
...
|
|
9267
|
-
top:
|
|
9268
|
-
bottom:
|
|
9353
|
+
...DEFAULT_PCB_COLOR_MAP7.copper,
|
|
9354
|
+
top: color5(colors_default.board.pad_front).lighten(0.5).toString(),
|
|
9355
|
+
bottom: color5(colors_default.board.pad_back).lighten(0.5).toString()
|
|
9269
9356
|
}
|
|
9270
9357
|
};
|
|
9271
9358
|
function isPcbVia(element) {
|
|
@@ -9297,13 +9384,13 @@ function drawPcbViaElementsForLayer({
|
|
|
9297
9384
|
(element) => !highlightedElementIds.has(element.pcb_via_id)
|
|
9298
9385
|
);
|
|
9299
9386
|
if (nonHighlightedElements.length > 0) {
|
|
9300
|
-
const drawer = new
|
|
9387
|
+
const drawer = new CircuitToCanvasDrawer13(canvas);
|
|
9301
9388
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
9302
9389
|
drawer.drawElements(nonHighlightedElements, { layers });
|
|
9303
9390
|
}
|
|
9304
9391
|
if (highlightedElements.length > 0) {
|
|
9305
|
-
const highlightDrawer = new
|
|
9306
|
-
highlightDrawer.configure({ colorOverrides:
|
|
9392
|
+
const highlightDrawer = new CircuitToCanvasDrawer13(canvas);
|
|
9393
|
+
highlightDrawer.configure({ colorOverrides: HOVER_COLOR_MAP4 });
|
|
9307
9394
|
highlightDrawer.realToCanvasMat = realToCanvasMat;
|
|
9308
9395
|
highlightDrawer.drawElements(highlightedElements, { layers });
|
|
9309
9396
|
}
|
|
@@ -9312,39 +9399,15 @@ function drawPcbViaElementsForLayer({
|
|
|
9312
9399
|
// src/components/CanvasPrimitiveRenderer.tsx
|
|
9313
9400
|
import { useEffect as useEffect4, useRef as useRef2 } from "react";
|
|
9314
9401
|
import { SuperGrid, toMMSI } from "react-supergrid";
|
|
9315
|
-
|
|
9316
|
-
// src/lib/draw-pcb-panel.ts
|
|
9317
|
-
import { CircuitToCanvasDrawer as CircuitToCanvasDrawer12 } from "circuit-to-canvas";
|
|
9318
|
-
function isPcbPanelElement(element) {
|
|
9319
|
-
return element.type === "pcb_panel";
|
|
9320
|
-
}
|
|
9321
|
-
function drawPcbPanelElements({
|
|
9322
|
-
canvas,
|
|
9323
|
-
elements,
|
|
9324
|
-
layers,
|
|
9325
|
-
realToCanvasMat,
|
|
9326
|
-
drawSoldermask
|
|
9327
|
-
}) {
|
|
9328
|
-
const drawer = new CircuitToCanvasDrawer12(canvas);
|
|
9329
|
-
drawer.realToCanvasMat = realToCanvasMat;
|
|
9330
|
-
const pcbPanelElements = elements.filter(isPcbPanelElement);
|
|
9331
|
-
for (const element of pcbPanelElements) {
|
|
9332
|
-
drawer.drawElements([element], { layers, drawSoldermask });
|
|
9333
|
-
}
|
|
9334
|
-
}
|
|
9335
|
-
|
|
9336
|
-
// src/components/CanvasPrimitiveRenderer.tsx
|
|
9337
9402
|
import { jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
9338
9403
|
var orderedLayers = [
|
|
9339
9404
|
"board",
|
|
9340
|
-
"bottom_silkscreen",
|
|
9341
9405
|
"bottom",
|
|
9342
9406
|
"soldermask_bottom",
|
|
9343
9407
|
"top",
|
|
9344
9408
|
"soldermask_top",
|
|
9345
9409
|
"soldermask_with_copper_bottom",
|
|
9346
9410
|
"soldermask_with_copper_top",
|
|
9347
|
-
"top_silkscreen",
|
|
9348
9411
|
"top_fabrication",
|
|
9349
9412
|
"bottom_fabrication",
|
|
9350
9413
|
"inner1",
|
|
@@ -9357,6 +9420,8 @@ var orderedLayers = [
|
|
|
9357
9420
|
"edge_cuts",
|
|
9358
9421
|
"bottom_notes",
|
|
9359
9422
|
"top_notes",
|
|
9423
|
+
"top_silkscreen",
|
|
9424
|
+
"bottom_silkscreen",
|
|
9360
9425
|
"other"
|
|
9361
9426
|
];
|
|
9362
9427
|
var CanvasPrimitiveRenderer = ({
|
|
@@ -9387,7 +9452,7 @@ var CanvasPrimitiveRenderer = ({
|
|
|
9387
9452
|
if (transform) drawer.transform = transform;
|
|
9388
9453
|
drawer.clear();
|
|
9389
9454
|
drawer.foregroundLayer = selectedLayer;
|
|
9390
|
-
const filteredPrimitives = primitives.filter((p) => isShowingSolderMask || !p.layer?.includes("soldermask")).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");
|
|
9455
|
+
const filteredPrimitives = primitives.filter((p) => isShowingSolderMask || !p.layer?.includes("soldermask")).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");
|
|
9391
9456
|
drawPrimitives(drawer, filteredPrimitives);
|
|
9392
9457
|
if (transform) {
|
|
9393
9458
|
const topCanvas = canvasRefs.current.top;
|
|
@@ -9419,80 +9484,47 @@ var CanvasPrimitiveRenderer = ({
|
|
|
9419
9484
|
});
|
|
9420
9485
|
}
|
|
9421
9486
|
if (topCanvas) {
|
|
9422
|
-
|
|
9487
|
+
drawCopperPourElementsForLayer({
|
|
9423
9488
|
canvas: topCanvas,
|
|
9424
9489
|
elements,
|
|
9425
9490
|
layers: ["top_copper"],
|
|
9426
|
-
realToCanvasMat: transform
|
|
9427
|
-
primitives,
|
|
9428
|
-
drawSoldermask: isShowingSolderMask
|
|
9491
|
+
realToCanvasMat: transform
|
|
9429
9492
|
});
|
|
9430
9493
|
}
|
|
9431
9494
|
if (bottomCanvas) {
|
|
9432
|
-
|
|
9495
|
+
drawCopperPourElementsForLayer({
|
|
9433
9496
|
canvas: bottomCanvas,
|
|
9434
9497
|
elements,
|
|
9435
9498
|
layers: ["bottom_copper"],
|
|
9436
|
-
realToCanvasMat: transform
|
|
9437
|
-
primitives,
|
|
9438
|
-
drawSoldermask: isShowingSolderMask
|
|
9439
|
-
});
|
|
9440
|
-
}
|
|
9441
|
-
if (inner1Canvas) {
|
|
9442
|
-
drawPcbSmtPadElementsForLayer({
|
|
9443
|
-
canvas: inner1Canvas,
|
|
9444
|
-
elements,
|
|
9445
|
-
layers: ["inner1_copper"],
|
|
9446
|
-
realToCanvasMat: transform,
|
|
9447
|
-
primitives,
|
|
9448
|
-
drawSoldermask: isShowingSolderMask
|
|
9449
|
-
});
|
|
9450
|
-
}
|
|
9451
|
-
if (inner2Canvas) {
|
|
9452
|
-
drawPcbSmtPadElementsForLayer({
|
|
9453
|
-
canvas: inner2Canvas,
|
|
9454
|
-
elements,
|
|
9455
|
-
layers: ["inner2_copper"],
|
|
9456
|
-
realToCanvasMat: transform,
|
|
9457
|
-
primitives,
|
|
9458
|
-
drawSoldermask: isShowingSolderMask
|
|
9459
|
-
});
|
|
9460
|
-
}
|
|
9461
|
-
if (inner3Canvas) {
|
|
9462
|
-
drawPcbSmtPadElementsForLayer({
|
|
9463
|
-
canvas: inner3Canvas,
|
|
9464
|
-
elements,
|
|
9465
|
-
layers: ["inner3_copper"],
|
|
9466
|
-
realToCanvasMat: transform,
|
|
9467
|
-
primitives,
|
|
9468
|
-
drawSoldermask: isShowingSolderMask
|
|
9469
|
-
});
|
|
9470
|
-
}
|
|
9471
|
-
if (inner4Canvas) {
|
|
9472
|
-
drawPcbSmtPadElementsForLayer({
|
|
9473
|
-
canvas: inner4Canvas,
|
|
9474
|
-
elements,
|
|
9475
|
-
layers: ["inner4_copper"],
|
|
9476
|
-
realToCanvasMat: transform,
|
|
9477
|
-
primitives,
|
|
9478
|
-
drawSoldermask: isShowingSolderMask
|
|
9499
|
+
realToCanvasMat: transform
|
|
9479
9500
|
});
|
|
9480
9501
|
}
|
|
9481
|
-
|
|
9482
|
-
|
|
9483
|
-
|
|
9502
|
+
const copperLayers = [
|
|
9503
|
+
{ canvas: topCanvas, copperLayer: "top_copper" },
|
|
9504
|
+
{ canvas: bottomCanvas, copperLayer: "bottom_copper" },
|
|
9505
|
+
{ canvas: inner1Canvas, copperLayer: "inner1_copper" },
|
|
9506
|
+
{ canvas: inner2Canvas, copperLayer: "inner2_copper" },
|
|
9507
|
+
{ canvas: inner3Canvas, copperLayer: "inner3_copper" },
|
|
9508
|
+
{ canvas: inner4Canvas, copperLayer: "inner4_copper" },
|
|
9509
|
+
{ canvas: inner5Canvas, copperLayer: "inner5_copper" },
|
|
9510
|
+
{ canvas: inner6Canvas, copperLayer: "inner6_copper" }
|
|
9511
|
+
];
|
|
9512
|
+
for (const { canvas, copperLayer } of copperLayers) {
|
|
9513
|
+
if (!canvas) continue;
|
|
9514
|
+
drawPcbTraceElementsForLayer({
|
|
9515
|
+
canvas,
|
|
9484
9516
|
elements,
|
|
9485
|
-
layers: [
|
|
9517
|
+
layers: [copperLayer],
|
|
9486
9518
|
realToCanvasMat: transform,
|
|
9487
|
-
primitives
|
|
9488
|
-
drawSoldermask: isShowingSolderMask
|
|
9519
|
+
primitives
|
|
9489
9520
|
});
|
|
9490
9521
|
}
|
|
9491
|
-
|
|
9522
|
+
for (const { canvas, copperLayer } of copperLayers) {
|
|
9523
|
+
if (!canvas) continue;
|
|
9492
9524
|
drawPcbSmtPadElementsForLayer({
|
|
9493
|
-
canvas
|
|
9525
|
+
canvas,
|
|
9494
9526
|
elements,
|
|
9495
|
-
layers: [
|
|
9527
|
+
layers: [copperLayer],
|
|
9496
9528
|
realToCanvasMat: transform,
|
|
9497
9529
|
primitives,
|
|
9498
9530
|
drawSoldermask: isShowingSolderMask
|
|
@@ -9516,22 +9548,6 @@ var CanvasPrimitiveRenderer = ({
|
|
|
9516
9548
|
primitives
|
|
9517
9549
|
});
|
|
9518
9550
|
}
|
|
9519
|
-
if (topCanvas) {
|
|
9520
|
-
drawCopperPourElementsForLayer({
|
|
9521
|
-
canvas: topCanvas,
|
|
9522
|
-
elements,
|
|
9523
|
-
layers: ["top_copper"],
|
|
9524
|
-
realToCanvasMat: transform
|
|
9525
|
-
});
|
|
9526
|
-
}
|
|
9527
|
-
if (bottomCanvas) {
|
|
9528
|
-
drawCopperPourElementsForLayer({
|
|
9529
|
-
canvas: bottomCanvas,
|
|
9530
|
-
elements,
|
|
9531
|
-
layers: ["bottom_copper"],
|
|
9532
|
-
realToCanvasMat: transform
|
|
9533
|
-
});
|
|
9534
|
-
}
|
|
9535
9551
|
const topSilkscreenCanvas = canvasRefs.current.top_silkscreen;
|
|
9536
9552
|
if (topSilkscreenCanvas) {
|
|
9537
9553
|
drawSilkscreenElementsForLayer({
|
|
@@ -9622,19 +9638,16 @@ var CanvasPrimitiveRenderer = ({
|
|
|
9622
9638
|
realToCanvasMat: transform
|
|
9623
9639
|
});
|
|
9624
9640
|
}
|
|
9625
|
-
|
|
9626
|
-
|
|
9627
|
-
|
|
9628
|
-
|
|
9629
|
-
|
|
9630
|
-
|
|
9631
|
-
});
|
|
9632
|
-
}
|
|
9633
|
-
if (bottomCanvas) {
|
|
9641
|
+
const keepoutLayers = [
|
|
9642
|
+
{ canvas: topCanvas, layer: "top" },
|
|
9643
|
+
{ canvas: bottomCanvas, layer: "bottom" }
|
|
9644
|
+
];
|
|
9645
|
+
for (const { canvas, layer } of keepoutLayers) {
|
|
9646
|
+
if (!canvas) continue;
|
|
9634
9647
|
drawPcbKeepoutElementsForLayer({
|
|
9635
|
-
canvas
|
|
9648
|
+
canvas,
|
|
9636
9649
|
elements,
|
|
9637
|
-
layers: [
|
|
9650
|
+
layers: [layer],
|
|
9638
9651
|
realToCanvasMat: transform
|
|
9639
9652
|
});
|
|
9640
9653
|
}
|
|
@@ -12230,7 +12243,7 @@ var HighlightedPrimitiveBoxWithText = ({
|
|
|
12230
12243
|
];
|
|
12231
12244
|
const si = primitive.same_space_index ?? 0;
|
|
12232
12245
|
const sip = 26;
|
|
12233
|
-
const
|
|
12246
|
+
const color6 = layerColorHightlightMap[primitive?._element?.layer] ?? "red";
|
|
12234
12247
|
let rotation = 0;
|
|
12235
12248
|
if (primitiveElement.type === "pcb_smtpad" && primitiveElement?.shape === "rotated_rect") {
|
|
12236
12249
|
rotation = primitiveElement?.ccw_rotation ?? 0;
|
|
@@ -12252,7 +12265,7 @@ var HighlightedPrimitiveBoxWithText = ({
|
|
|
12252
12265
|
position: "absolute",
|
|
12253
12266
|
left: mousePos.x,
|
|
12254
12267
|
top: yOffset,
|
|
12255
|
-
color:
|
|
12268
|
+
color: color6,
|
|
12256
12269
|
pointerEvents: "none",
|
|
12257
12270
|
transform: "translateX(-50%)"
|
|
12258
12271
|
},
|
|
@@ -12292,7 +12305,7 @@ var HighlightedPrimitiveBoxWithText = ({
|
|
|
12292
12305
|
top: y - h / 2 - 8,
|
|
12293
12306
|
width: w + 16,
|
|
12294
12307
|
height: h + 16,
|
|
12295
|
-
color:
|
|
12308
|
+
color: color6,
|
|
12296
12309
|
transform: `rotate(${-rotation}deg)`,
|
|
12297
12310
|
transformOrigin: "center center"
|
|
12298
12311
|
},
|
|
@@ -12308,7 +12321,7 @@ var HighlightedPrimitiveBoxWithText = ({
|
|
|
12308
12321
|
height: finalState ? `calc(100% + ${sip * 2 * si}px)` : "100%",
|
|
12309
12322
|
marginLeft: finalState ? `${-sip * si}px` : 0,
|
|
12310
12323
|
marginTop: finalState ? `${-sip * si}px` : 0,
|
|
12311
|
-
border: `1px solid ${
|
|
12324
|
+
border: `1px solid ${color6}`,
|
|
12312
12325
|
opacity: finalState ? 1 : si === 0 ? 1 : 0,
|
|
12313
12326
|
transition: "width 0.2s, height 0.2s, margin-left 0.2s, margin-top 0.2s, opacity 0.2s"
|
|
12314
12327
|
},
|
|
@@ -13673,7 +13686,7 @@ import { css as css3 } from "@emotion/css";
|
|
|
13673
13686
|
// package.json
|
|
13674
13687
|
var package_default = {
|
|
13675
13688
|
name: "@tscircuit/pcb-viewer",
|
|
13676
|
-
version: "1.11.
|
|
13689
|
+
version: "1.11.323",
|
|
13677
13690
|
main: "dist/index.js",
|
|
13678
13691
|
type: "module",
|
|
13679
13692
|
repository: "tscircuit/pcb-viewer",
|
|
@@ -13710,7 +13723,7 @@ var package_default = {
|
|
|
13710
13723
|
"react-cosmos-plugin-vite": "7.0.0-beta.0",
|
|
13711
13724
|
"react-dom": "19.1.0",
|
|
13712
13725
|
"react-use": "^17.4.0",
|
|
13713
|
-
tscircuit: "^0.0.
|
|
13726
|
+
tscircuit: "^0.0.1212",
|
|
13714
13727
|
tsup: "^8.0.2",
|
|
13715
13728
|
"type-fest": "^3.0.0",
|
|
13716
13729
|
typescript: "^5.4.4",
|
|
@@ -13727,7 +13740,7 @@ var package_default = {
|
|
|
13727
13740
|
"@tscircuit/math-utils": "^0.0.29",
|
|
13728
13741
|
"@vitejs/plugin-react": "^5.0.2",
|
|
13729
13742
|
"circuit-json": "^0.0.356",
|
|
13730
|
-
"circuit-to-canvas": "^0.0.
|
|
13743
|
+
"circuit-to-canvas": "^0.0.60",
|
|
13731
13744
|
"circuit-to-svg": "^0.0.271",
|
|
13732
13745
|
color: "^4.2.3",
|
|
13733
13746
|
"react-supergrid": "^1.0.10",
|