@tscircuit/pcb-viewer 1.11.391 → 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 CHANGED
@@ -4852,23 +4852,23 @@ var Drawer = class {
4852
4852
  }
4853
4853
  applyAperture() {
4854
4854
  const { transform, aperture } = this;
4855
- let { size, mode, color: color7, fontSize, layer } = aperture;
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 (!color7) color7 = "undefined";
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[color7.toLowerCase()];
4866
+ let colorString = LAYER_NAME_TO_COLOR[color8.toLowerCase()];
4867
4867
  if (!colorString)
4868
4868
  try {
4869
- colorString = colorParser(color7).rgb().toString();
4869
+ colorString = colorParser(color8).rgb().toString();
4870
4870
  } catch (error) {
4871
- console.warn(`Invalid color format: '${color7}'`);
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
- layers,
5202
+ layer,
5193
5203
  realToCanvasMat
5194
5204
  }) {
5195
- const keepoutElements = elements.filter(isPcbKeepout);
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, { layers: [] });
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 color from "color";
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: color(colors_default.board.pad_front).lighten(0.5).toString(),
5252
- bottom: color(colors_default.board.pad_back).lighten(0.5).toString(),
5253
- inner1: color(colors_default.board.copper.in1).lighten(0.5).toString(),
5254
- inner2: color(colors_default.board.copper.in2).lighten(0.5).toString(),
5255
- inner3: color(colors_default.board.copper.in3).lighten(0.5).toString(),
5256
- inner4: color(colors_default.board.copper.in4).lighten(0.5).toString(),
5257
- inner5: color(colors_default.board.copper.in5).lighten(0.5).toString(),
5258
- inner6: color(colors_default.board.copper.in6).lighten(0.5).toString(),
5259
- inner7: color(colors_default.board.copper.in7).lighten(0.5).toString(),
5260
- inner8: color(colors_default.board.copper.in8).lighten(0.5).toString()
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 color2 from "color";
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
- color2(layerColor).lighten(0.5).toString()
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 color3 from "color";
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: color3(colors_default.board.pad_front).lighten(0.5).toString(),
5427
- bottom: color3(colors_default.board.pad_back).lighten(0.5).toString(),
5428
- inner1: color3(colors_default.board.copper.in1).lighten(0.5).toString(),
5429
- inner2: color3(colors_default.board.copper.in2).lighten(0.5).toString(),
5430
- inner3: color3(colors_default.board.copper.in3).lighten(0.5).toString(),
5431
- inner4: color3(colors_default.board.copper.in4).lighten(0.5).toString(),
5432
- inner5: color3(colors_default.board.copper.in5).lighten(0.5).toString(),
5433
- inner6: color3(colors_default.board.copper.in6).lighten(0.5).toString(),
5434
- inner7: color3(colors_default.board.copper.in7).lighten(0.5).toString(),
5435
- inner8: color3(colors_default.board.copper.in8).lighten(0.5).toString()
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 color4 from "color";
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 = color4(baseColorString);
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 color5 from "color";
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: color5(colors_default.board.pad_front).lighten(0.5).toString(),
5915
- bottom: color5(colors_default.board.pad_back).lighten(0.5).toString(),
5916
- inner1: color5(colors_default.board.copper.in1).lighten(0.5).toString(),
5917
- inner2: color5(colors_default.board.copper.in2).lighten(0.5).toString(),
5918
- inner3: color5(colors_default.board.copper.in3).lighten(0.5).toString(),
5919
- inner4: color5(colors_default.board.copper.in4).lighten(0.5).toString(),
5920
- inner5: color5(colors_default.board.copper.in5).lighten(0.5).toString(),
5921
- inner6: color5(colors_default.board.copper.in6).lighten(0.5).toString(),
5922
- inner7: color5(colors_default.board.copper.in7).lighten(0.5).toString(),
5923
- inner8: color5(colors_default.board.copper.in8).lighten(0.5).toString()
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: color5(colors_default.board.soldermask.top).lighten(0.35).toString(),
5928
- bottom: color5(colors_default.board.soldermask.bottom).lighten(0.35).toString()
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 color6 from "color";
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: color6(colors_default.board.pad_front).lighten(0.5).toString(),
6015
- bottom: color6(colors_default.board.pad_back).lighten(0.5).toString(),
6016
- inner1: color6(colors_default.board.copper.in1).lighten(0.5).toString(),
6017
- inner2: color6(colors_default.board.copper.in2).lighten(0.5).toString(),
6018
- inner3: color6(colors_default.board.copper.in3).lighten(0.5).toString(),
6019
- inner4: color6(colors_default.board.copper.in4).lighten(0.5).toString(),
6020
- inner5: color6(colors_default.board.copper.in5).lighten(0.5).toString(),
6021
- inner6: color6(colors_default.board.copper.in6).lighten(0.5).toString(),
6022
- inner7: color6(colors_default.board.copper.in7).lighten(0.5).toString(),
6023
- inner8: color6(colors_default.board.copper.in8).lighten(0.5).toString()
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 keepoutLayers = [
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
- layers: [layer],
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 color7 = arrow.color || defaultColors[arrowIndex % defaultColors.length];
7041
+ const color8 = arrow.color || defaultColors[arrowIndex % defaultColors.length];
7027
7042
  const scaleFactor = Math.hypot(matrix.a, matrix.b);
7028
- ctx.strokeStyle = color7;
7029
- ctx.fillStyle = color7;
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 = color7;
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 color7 = layerColorHightlightMap[primitive?._element?.layer] ?? "red";
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: color7,
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: color7,
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 ${color7}`,
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,7 +10617,7 @@ 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.390",
10620
+ version: "1.11.391",
10606
10621
  main: "dist/index.js",
10607
10622
  type: "module",
10608
10623
  repository: {