@tscircuit/pcb-viewer 1.11.390 → 1.11.392
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 +94 -76
- package/dist/index.js.map +1 -1
- package/package.json +5 -2
package/dist/index.js
CHANGED
|
@@ -4852,23 +4852,23 @@ var Drawer = class {
|
|
|
4852
4852
|
}
|
|
4853
4853
|
applyAperture() {
|
|
4854
4854
|
const { transform, aperture } = this;
|
|
4855
|
-
let { size, mode, color:
|
|
4855
|
+
let { size, mode, color: color8, fontSize, layer } = aperture;
|
|
4856
4856
|
if (!(layer in this.ctxLayerMap)) this.aperture.layer = "other";
|
|
4857
4857
|
const ctx = this.getLayerCtx();
|
|
4858
4858
|
if (!ctx) {
|
|
4859
4859
|
throw new Error(`No context for layer "${this.foregroundLayer}"`);
|
|
4860
4860
|
}
|
|
4861
|
-
if (!
|
|
4861
|
+
if (!color8) color8 = "undefined";
|
|
4862
4862
|
ctx.lineWidth = scaleOnly(transform, size);
|
|
4863
4863
|
ctx.lineCap = "round";
|
|
4864
4864
|
if (mode === "add") {
|
|
4865
4865
|
ctx.globalCompositeOperation = "source-over";
|
|
4866
|
-
let colorString = LAYER_NAME_TO_COLOR[
|
|
4866
|
+
let colorString = LAYER_NAME_TO_COLOR[color8.toLowerCase()];
|
|
4867
4867
|
if (!colorString)
|
|
4868
4868
|
try {
|
|
4869
|
-
colorString = colorParser(
|
|
4869
|
+
colorString = colorParser(color8).rgb().toString();
|
|
4870
4870
|
} catch (error) {
|
|
4871
|
-
console.warn(`Invalid color format: '${
|
|
4871
|
+
console.warn(`Invalid color format: '${color8}'`);
|
|
4872
4872
|
colorString = "white";
|
|
4873
4873
|
}
|
|
4874
4874
|
ctx.fillStyle = colorString;
|
|
@@ -5183,20 +5183,41 @@ function drawPcbCutoutElementsForLayer({
|
|
|
5183
5183
|
|
|
5184
5184
|
// src/lib/draw-pcb-keepout.ts
|
|
5185
5185
|
import { CircuitToCanvasDrawer as CircuitToCanvasDrawer8 } from "circuit-to-canvas";
|
|
5186
|
+
import color from "color";
|
|
5186
5187
|
function isPcbKeepout(element) {
|
|
5187
5188
|
return element.type === "pcb_keepout";
|
|
5188
5189
|
}
|
|
5190
|
+
function getPcbKeepoutElementsForLayer({
|
|
5191
|
+
elements,
|
|
5192
|
+
layer
|
|
5193
|
+
}) {
|
|
5194
|
+
return elements.filter(isPcbKeepout).filter((keepout) => keepout.layers.includes(layer));
|
|
5195
|
+
}
|
|
5196
|
+
function getPcbKeepoutColorForLayer(layer) {
|
|
5197
|
+
return color(LAYER_NAME_TO_COLOR[layer]).lighten(0.4).hex();
|
|
5198
|
+
}
|
|
5189
5199
|
function drawPcbKeepoutElementsForLayer({
|
|
5190
5200
|
canvas,
|
|
5191
5201
|
elements,
|
|
5192
|
-
|
|
5202
|
+
layer,
|
|
5193
5203
|
realToCanvasMat
|
|
5194
5204
|
}) {
|
|
5195
|
-
const keepoutElements = elements
|
|
5205
|
+
const keepoutElements = getPcbKeepoutElementsForLayer({ elements, layer });
|
|
5196
5206
|
if (keepoutElements.length === 0) return;
|
|
5197
5207
|
const drawer = new CircuitToCanvasDrawer8(canvas);
|
|
5208
|
+
const keepoutColor = getPcbKeepoutColorForLayer(layer);
|
|
5209
|
+
drawer.configure({
|
|
5210
|
+
colorOverrides: {
|
|
5211
|
+
keepout: {
|
|
5212
|
+
top: keepoutColor,
|
|
5213
|
+
bottom: keepoutColor
|
|
5214
|
+
}
|
|
5215
|
+
}
|
|
5216
|
+
});
|
|
5198
5217
|
drawer.realToCanvasMat = realToCanvasMat;
|
|
5199
|
-
drawer.drawElements(keepoutElements, {
|
|
5218
|
+
drawer.drawElements(keepoutElements, {
|
|
5219
|
+
layers: [getCopperRenderLayer(layer)]
|
|
5220
|
+
});
|
|
5200
5221
|
}
|
|
5201
5222
|
|
|
5202
5223
|
// src/lib/draw-pcb-note.ts
|
|
@@ -5243,21 +5264,21 @@ import {
|
|
|
5243
5264
|
CircuitToCanvasDrawer as CircuitToCanvasDrawer11,
|
|
5244
5265
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP4
|
|
5245
5266
|
} from "circuit-to-canvas";
|
|
5246
|
-
import
|
|
5267
|
+
import color2 from "color";
|
|
5247
5268
|
var HOVER_COLOR_MAP = {
|
|
5248
5269
|
...DEFAULT_PCB_COLOR_MAP4,
|
|
5249
5270
|
copper: {
|
|
5250
5271
|
...DEFAULT_PCB_COLOR_MAP4.copper,
|
|
5251
|
-
top:
|
|
5252
|
-
bottom:
|
|
5253
|
-
inner1:
|
|
5254
|
-
inner2:
|
|
5255
|
-
inner3:
|
|
5256
|
-
inner4:
|
|
5257
|
-
inner5:
|
|
5258
|
-
inner6:
|
|
5259
|
-
inner7:
|
|
5260
|
-
inner8:
|
|
5272
|
+
top: color2(colors_default.board.pad_front).lighten(0.5).toString(),
|
|
5273
|
+
bottom: color2(colors_default.board.pad_back).lighten(0.5).toString(),
|
|
5274
|
+
inner1: color2(colors_default.board.copper.in1).lighten(0.5).toString(),
|
|
5275
|
+
inner2: color2(colors_default.board.copper.in2).lighten(0.5).toString(),
|
|
5276
|
+
inner3: color2(colors_default.board.copper.in3).lighten(0.5).toString(),
|
|
5277
|
+
inner4: color2(colors_default.board.copper.in4).lighten(0.5).toString(),
|
|
5278
|
+
inner5: color2(colors_default.board.copper.in5).lighten(0.5).toString(),
|
|
5279
|
+
inner6: color2(colors_default.board.copper.in6).lighten(0.5).toString(),
|
|
5280
|
+
inner7: color2(colors_default.board.copper.in7).lighten(0.5).toString(),
|
|
5281
|
+
inner8: color2(colors_default.board.copper.in8).lighten(0.5).toString()
|
|
5261
5282
|
}
|
|
5262
5283
|
};
|
|
5263
5284
|
function isPcbSmtPad(element) {
|
|
@@ -5309,13 +5330,13 @@ import {
|
|
|
5309
5330
|
CircuitToCanvasDrawer as CircuitToCanvasDrawer12,
|
|
5310
5331
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP5
|
|
5311
5332
|
} from "circuit-to-canvas";
|
|
5312
|
-
import
|
|
5333
|
+
import color3 from "color";
|
|
5313
5334
|
var HOVER_COLOR_MAP2 = {
|
|
5314
5335
|
...DEFAULT_PCB_COLOR_MAP5,
|
|
5315
5336
|
copper: Object.fromEntries(
|
|
5316
5337
|
Object.entries(DEFAULT_PCB_COLOR_MAP5.copper).map(([layer, layerColor]) => [
|
|
5317
5338
|
layer,
|
|
5318
|
-
|
|
5339
|
+
color3(layerColor).lighten(0.5).toString()
|
|
5319
5340
|
])
|
|
5320
5341
|
)
|
|
5321
5342
|
};
|
|
@@ -5418,21 +5439,21 @@ import {
|
|
|
5418
5439
|
CircuitToCanvasDrawer as CircuitToCanvasDrawer13,
|
|
5419
5440
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP6
|
|
5420
5441
|
} from "circuit-to-canvas";
|
|
5421
|
-
import
|
|
5442
|
+
import color4 from "color";
|
|
5422
5443
|
var HOVER_COLOR_MAP3 = {
|
|
5423
5444
|
...DEFAULT_PCB_COLOR_MAP6,
|
|
5424
5445
|
copper: {
|
|
5425
5446
|
...DEFAULT_PCB_COLOR_MAP6.copper,
|
|
5426
|
-
top:
|
|
5427
|
-
bottom:
|
|
5428
|
-
inner1:
|
|
5429
|
-
inner2:
|
|
5430
|
-
inner3:
|
|
5431
|
-
inner4:
|
|
5432
|
-
inner5:
|
|
5433
|
-
inner6:
|
|
5434
|
-
inner7:
|
|
5435
|
-
inner8:
|
|
5447
|
+
top: color4(colors_default.board.pad_front).lighten(0.5).toString(),
|
|
5448
|
+
bottom: color4(colors_default.board.pad_back).lighten(0.5).toString(),
|
|
5449
|
+
inner1: color4(colors_default.board.copper.in1).lighten(0.5).toString(),
|
|
5450
|
+
inner2: color4(colors_default.board.copper.in2).lighten(0.5).toString(),
|
|
5451
|
+
inner3: color4(colors_default.board.copper.in3).lighten(0.5).toString(),
|
|
5452
|
+
inner4: color4(colors_default.board.copper.in4).lighten(0.5).toString(),
|
|
5453
|
+
inner5: color4(colors_default.board.copper.in5).lighten(0.5).toString(),
|
|
5454
|
+
inner6: color4(colors_default.board.copper.in6).lighten(0.5).toString(),
|
|
5455
|
+
inner7: color4(colors_default.board.copper.in7).lighten(0.5).toString(),
|
|
5456
|
+
inner8: color4(colors_default.board.copper.in8).lighten(0.5).toString()
|
|
5436
5457
|
}
|
|
5437
5458
|
};
|
|
5438
5459
|
function isPlatedHole(element) {
|
|
@@ -5594,11 +5615,11 @@ var convertTextToLines = (text) => {
|
|
|
5594
5615
|
};
|
|
5595
5616
|
|
|
5596
5617
|
// src/lib/draw-primitives.ts
|
|
5597
|
-
import
|
|
5618
|
+
import color5 from "color";
|
|
5598
5619
|
function getColor(primitive) {
|
|
5599
5620
|
const explicitColor = primitive.color;
|
|
5600
5621
|
const baseColorString = explicitColor ?? LAYER_NAME_TO_COLOR[primitive.layer];
|
|
5601
|
-
let c =
|
|
5622
|
+
let c = color5(baseColorString);
|
|
5602
5623
|
if (primitive._element?.type === "pcb_copper_pour") {
|
|
5603
5624
|
c = c.alpha(0.7);
|
|
5604
5625
|
}
|
|
@@ -5906,26 +5927,26 @@ import {
|
|
|
5906
5927
|
CircuitToCanvasDrawer as CircuitToCanvasDrawer15,
|
|
5907
5928
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP8
|
|
5908
5929
|
} from "circuit-to-canvas";
|
|
5909
|
-
import
|
|
5930
|
+
import color6 from "color";
|
|
5910
5931
|
var HOVER_SOLDERMASK_COLOR_MAP = {
|
|
5911
5932
|
...DEFAULT_PCB_COLOR_MAP8,
|
|
5912
5933
|
copper: {
|
|
5913
5934
|
...DEFAULT_PCB_COLOR_MAP8.copper,
|
|
5914
|
-
top:
|
|
5915
|
-
bottom:
|
|
5916
|
-
inner1:
|
|
5917
|
-
inner2:
|
|
5918
|
-
inner3:
|
|
5919
|
-
inner4:
|
|
5920
|
-
inner5:
|
|
5921
|
-
inner6:
|
|
5922
|
-
inner7:
|
|
5923
|
-
inner8:
|
|
5935
|
+
top: color6(colors_default.board.pad_front).lighten(0.5).toString(),
|
|
5936
|
+
bottom: color6(colors_default.board.pad_back).lighten(0.5).toString(),
|
|
5937
|
+
inner1: color6(colors_default.board.copper.in1).lighten(0.5).toString(),
|
|
5938
|
+
inner2: color6(colors_default.board.copper.in2).lighten(0.5).toString(),
|
|
5939
|
+
inner3: color6(colors_default.board.copper.in3).lighten(0.5).toString(),
|
|
5940
|
+
inner4: color6(colors_default.board.copper.in4).lighten(0.5).toString(),
|
|
5941
|
+
inner5: color6(colors_default.board.copper.in5).lighten(0.5).toString(),
|
|
5942
|
+
inner6: color6(colors_default.board.copper.in6).lighten(0.5).toString(),
|
|
5943
|
+
inner7: color6(colors_default.board.copper.in7).lighten(0.5).toString(),
|
|
5944
|
+
inner8: color6(colors_default.board.copper.in8).lighten(0.5).toString()
|
|
5924
5945
|
},
|
|
5925
5946
|
soldermask: {
|
|
5926
5947
|
...DEFAULT_PCB_COLOR_MAP8.soldermask,
|
|
5927
|
-
top:
|
|
5928
|
-
bottom:
|
|
5948
|
+
top: color6(colors_default.board.soldermask.top).lighten(0.35).toString(),
|
|
5949
|
+
bottom: color6(colors_default.board.soldermask.bottom).lighten(0.35).toString()
|
|
5929
5950
|
}
|
|
5930
5951
|
};
|
|
5931
5952
|
function drawSoldermaskElementsForLayer({
|
|
@@ -6006,21 +6027,21 @@ import {
|
|
|
6006
6027
|
DEFAULT_PCB_COLOR_MAP as DEFAULT_PCB_COLOR_MAP9,
|
|
6007
6028
|
CircuitToCanvasDrawer as CircuitToCanvasDrawer16
|
|
6008
6029
|
} from "circuit-to-canvas";
|
|
6009
|
-
import
|
|
6030
|
+
import color7 from "color";
|
|
6010
6031
|
var HOVER_COLOR_MAP4 = {
|
|
6011
6032
|
...DEFAULT_PCB_COLOR_MAP9,
|
|
6012
6033
|
copper: {
|
|
6013
6034
|
...DEFAULT_PCB_COLOR_MAP9.copper,
|
|
6014
|
-
top:
|
|
6015
|
-
bottom:
|
|
6016
|
-
inner1:
|
|
6017
|
-
inner2:
|
|
6018
|
-
inner3:
|
|
6019
|
-
inner4:
|
|
6020
|
-
inner5:
|
|
6021
|
-
inner6:
|
|
6022
|
-
inner7:
|
|
6023
|
-
inner8:
|
|
6035
|
+
top: color7(colors_default.board.pad_front).lighten(0.5).toString(),
|
|
6036
|
+
bottom: color7(colors_default.board.pad_back).lighten(0.5).toString(),
|
|
6037
|
+
inner1: color7(colors_default.board.copper.in1).lighten(0.5).toString(),
|
|
6038
|
+
inner2: color7(colors_default.board.copper.in2).lighten(0.5).toString(),
|
|
6039
|
+
inner3: color7(colors_default.board.copper.in3).lighten(0.5).toString(),
|
|
6040
|
+
inner4: color7(colors_default.board.copper.in4).lighten(0.5).toString(),
|
|
6041
|
+
inner5: color7(colors_default.board.copper.in5).lighten(0.5).toString(),
|
|
6042
|
+
inner6: color7(colors_default.board.copper.in6).lighten(0.5).toString(),
|
|
6043
|
+
inner7: color7(colors_default.board.copper.in7).lighten(0.5).toString(),
|
|
6044
|
+
inner8: color7(colors_default.board.copper.in8).lighten(0.5).toString()
|
|
6024
6045
|
}
|
|
6025
6046
|
};
|
|
6026
6047
|
function isPcbVia(element) {
|
|
@@ -6109,8 +6130,6 @@ var CanvasPrimitiveRenderer = ({
|
|
|
6109
6130
|
).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");
|
|
6110
6131
|
drawPrimitives(drawer, filteredPrimitives);
|
|
6111
6132
|
if (transform) {
|
|
6112
|
-
const topCanvas = canvasRefs.current.top;
|
|
6113
|
-
const bottomCanvas = canvasRefs.current.bottom;
|
|
6114
6133
|
const copperLayers = getCopperLayerRefsFromElements(elements).map((layer) => ({
|
|
6115
6134
|
canvas: canvasRefs.current[layer],
|
|
6116
6135
|
layer,
|
|
@@ -6322,16 +6341,12 @@ var CanvasPrimitiveRenderer = ({
|
|
|
6322
6341
|
realToCanvasMat: transform
|
|
6323
6342
|
});
|
|
6324
6343
|
}
|
|
6325
|
-
const
|
|
6326
|
-
{ canvas: topCanvas, layer: "top" },
|
|
6327
|
-
{ canvas: bottomCanvas, layer: "bottom" }
|
|
6328
|
-
];
|
|
6329
|
-
for (const { canvas, layer } of keepoutLayers) {
|
|
6344
|
+
for (const { canvas, layer } of copperLayers) {
|
|
6330
6345
|
if (!canvas) continue;
|
|
6331
6346
|
drawPcbKeepoutElementsForLayer({
|
|
6332
6347
|
canvas,
|
|
6333
6348
|
elements,
|
|
6334
|
-
|
|
6349
|
+
layer,
|
|
6335
6350
|
realToCanvasMat: transform
|
|
6336
6351
|
});
|
|
6337
6352
|
}
|
|
@@ -7023,10 +7038,10 @@ function drawGraphicsToCanvas(graphics, target, options = {}) {
|
|
|
7023
7038
|
const geometry = getArrowGeometry(arrow);
|
|
7024
7039
|
const shaftStart = applyToPoint7(matrix, geometry.shaftStart);
|
|
7025
7040
|
const shaftEnd = applyToPoint7(matrix, geometry.shaftEnd);
|
|
7026
|
-
const
|
|
7041
|
+
const color8 = arrow.color || defaultColors[arrowIndex % defaultColors.length];
|
|
7027
7042
|
const scaleFactor = Math.hypot(matrix.a, matrix.b);
|
|
7028
|
-
ctx.strokeStyle =
|
|
7029
|
-
ctx.fillStyle =
|
|
7043
|
+
ctx.strokeStyle = color8;
|
|
7044
|
+
ctx.fillStyle = color8;
|
|
7030
7045
|
ctx.lineWidth = geometry.shaftWidth * (scaleFactor || 1);
|
|
7031
7046
|
ctx.lineCap = "round";
|
|
7032
7047
|
ctx.setLineDash([]);
|
|
@@ -7060,7 +7075,7 @@ function drawGraphicsToCanvas(graphics, target, options = {}) {
|
|
|
7060
7075
|
normalPadding: 12,
|
|
7061
7076
|
alongOffset: arrow.inlineLabel ? -alongSeparation : 0
|
|
7062
7077
|
});
|
|
7063
|
-
ctx.fillStyle =
|
|
7078
|
+
ctx.fillStyle = color8;
|
|
7064
7079
|
ctx.font = `${fontSize}px sans-serif`;
|
|
7065
7080
|
if (!labelsDisabled && arrow.label) {
|
|
7066
7081
|
const labelX = arrowLabelLayout.x;
|
|
@@ -9787,7 +9802,7 @@ var HighlightedPrimitiveBoxWithText = ({
|
|
|
9787
9802
|
];
|
|
9788
9803
|
const si = primitive.same_space_index ?? 0;
|
|
9789
9804
|
const sip = 26;
|
|
9790
|
-
const
|
|
9805
|
+
const color8 = layerColorHightlightMap[primitive?._element?.layer] ?? "red";
|
|
9791
9806
|
let rotation = 0;
|
|
9792
9807
|
if (primitiveElement.type === "pcb_smtpad" && primitiveElement?.shape === "rotated_rect") {
|
|
9793
9808
|
rotation = primitiveElement?.ccw_rotation ?? 0;
|
|
@@ -9808,7 +9823,7 @@ var HighlightedPrimitiveBoxWithText = ({
|
|
|
9808
9823
|
position: "absolute",
|
|
9809
9824
|
left: mousePos.x + 12,
|
|
9810
9825
|
top: mousePos.y + 12,
|
|
9811
|
-
color:
|
|
9826
|
+
color: color8,
|
|
9812
9827
|
pointerEvents: "none"
|
|
9813
9828
|
},
|
|
9814
9829
|
children: /* @__PURE__ */ jsxs9(
|
|
@@ -9858,7 +9873,7 @@ var HighlightedPrimitiveBoxWithText = ({
|
|
|
9858
9873
|
top: y - h / 2 - 8,
|
|
9859
9874
|
width: w + 16,
|
|
9860
9875
|
height: h + 16,
|
|
9861
|
-
color:
|
|
9876
|
+
color: color8,
|
|
9862
9877
|
transform: `rotate(${-rotation}deg)`,
|
|
9863
9878
|
transformOrigin: "center center"
|
|
9864
9879
|
},
|
|
@@ -9874,7 +9889,7 @@ var HighlightedPrimitiveBoxWithText = ({
|
|
|
9874
9889
|
height: finalState ? `calc(100% + ${sip * 2 * si}px)` : "100%",
|
|
9875
9890
|
marginLeft: finalState ? `${-sip * si}px` : 0,
|
|
9876
9891
|
marginTop: finalState ? `${-sip * si}px` : 0,
|
|
9877
|
-
border: `1px solid ${
|
|
9892
|
+
border: `1px solid ${color8}`,
|
|
9878
9893
|
opacity: finalState ? 1 : si === 0 ? 1 : 0,
|
|
9879
9894
|
transition: "width 0.2s, height 0.2s, margin-left 0.2s, margin-top 0.2s, opacity 0.2s"
|
|
9880
9895
|
},
|
|
@@ -10602,10 +10617,13 @@ import { css as css2 } from "@emotion/css";
|
|
|
10602
10617
|
// package.json
|
|
10603
10618
|
var package_default = {
|
|
10604
10619
|
name: "@tscircuit/pcb-viewer",
|
|
10605
|
-
version: "1.11.
|
|
10620
|
+
version: "1.11.391",
|
|
10606
10621
|
main: "dist/index.js",
|
|
10607
10622
|
type: "module",
|
|
10608
|
-
repository:
|
|
10623
|
+
repository: {
|
|
10624
|
+
type: "git",
|
|
10625
|
+
url: "https://github.com/tscircuit/pcb-viewer"
|
|
10626
|
+
},
|
|
10609
10627
|
license: "MIT",
|
|
10610
10628
|
scripts: {
|
|
10611
10629
|
start: "cosmos",
|