@tscircuit/pcb-viewer 1.11.195 → 1.11.197

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
@@ -131505,6 +131505,13 @@ var DimensionOverlay = ({
131505
131505
  if (!transform2) transform2 = identity8();
131506
131506
  const [dimensionToolVisible, setDimensionToolVisible] = useState3(false);
131507
131507
  const [dimensionToolStretching, setDimensionToolStretching] = useState3(false);
131508
+ const [measureToolArmed, setMeasureToolArmed] = useState3(false);
131509
+ const disarmMeasure = () => {
131510
+ if (measureToolArmed) {
131511
+ setMeasureToolArmed(false);
131512
+ window.dispatchEvent(new Event("disarm-dimension-tool"));
131513
+ }
131514
+ };
131508
131515
  const [dStart, setDStart] = useState3({ x: 0, y: 0 });
131509
131516
  const [dEnd, setDEnd] = useState3({ x: 0, y: 0 });
131510
131517
  const mousePosRef = useRef5({ x: 0, y: 0 });
@@ -131519,12 +131526,17 @@ var DimensionOverlay = ({
131519
131526
  setDEnd({ x: mousePosRef.current.x, y: mousePosRef.current.y });
131520
131527
  setDimensionToolVisible((visible) => !visible);
131521
131528
  setDimensionToolStretching(true);
131529
+ disarmMeasure();
131522
131530
  }
131523
131531
  if (e.key === "Escape") {
131524
131532
  setDimensionToolVisible(false);
131525
131533
  setDimensionToolStretching(false);
131534
+ disarmMeasure();
131526
131535
  }
131527
131536
  };
131537
+ const armMeasure = () => {
131538
+ setMeasureToolArmed(true);
131539
+ };
131528
131540
  const addKeyListener = () => {
131529
131541
  if (container2) {
131530
131542
  window.addEventListener("keydown", down);
@@ -131535,6 +131547,7 @@ var DimensionOverlay = ({
131535
131547
  window.removeEventListener("keydown", down);
131536
131548
  }
131537
131549
  };
131550
+ window.addEventListener("arm-dimension-tool", armMeasure);
131538
131551
  if (container2) {
131539
131552
  container2.addEventListener("focus", addKeyListener);
131540
131553
  container2.addEventListener("blur", removeKeyListener);
@@ -131542,6 +131555,8 @@ var DimensionOverlay = ({
131542
131555
  container2.addEventListener("mouseleave", removeKeyListener);
131543
131556
  }
131544
131557
  return () => {
131558
+ window.removeEventListener("arm-dimension-tool", armMeasure);
131559
+ disarmMeasure();
131545
131560
  if (container2) {
131546
131561
  container2.removeEventListener("focus", addKeyListener);
131547
131562
  container2.removeEventListener("blur", removeKeyListener);
@@ -131591,8 +131606,18 @@ var DimensionOverlay = ({
131591
131606
  setDEnd({ x: rwPoint.x, y: rwPoint.y });
131592
131607
  }
131593
131608
  },
131594
- onMouseDown: () => {
131595
- if (dimensionToolStretching) {
131609
+ onMouseDown: (e) => {
131610
+ const rect = e.currentTarget.getBoundingClientRect();
131611
+ const x = e.clientX - rect.left;
131612
+ const y = e.clientY - rect.top;
131613
+ const rwPoint = applyToPoint12(inverse2(transform2), { x, y });
131614
+ if (measureToolArmed && !dimensionToolVisible) {
131615
+ setDStart({ x: rwPoint.x, y: rwPoint.y });
131616
+ setDEnd({ x: rwPoint.x, y: rwPoint.y });
131617
+ setDimensionToolVisible(true);
131618
+ setDimensionToolStretching(true);
131619
+ disarmMeasure();
131620
+ } else if (dimensionToolStretching) {
131596
131621
  setDimensionToolStretching(false);
131597
131622
  } else if (dimensionToolVisible) {
131598
131623
  setDimensionToolVisible(false);
@@ -133054,13 +133079,13 @@ var RatsNestOverlay = ({ transform: transform2, soup, children }) => {
133054
133079
  };
133055
133080
 
133056
133081
  // src/components/ToolbarOverlay.tsx
133057
- import { Fragment as Fragment5, useState as useState8 } from "react";
133082
+ import { Fragment as Fragment5, useEffect as useEffect13, useState as useState8 } from "react";
133058
133083
  import { css as css3 } from "@emotion/css";
133059
133084
 
133060
133085
  // package.json
133061
133086
  var package_default2 = {
133062
133087
  name: "@tscircuit/pcb-viewer",
133063
- version: "1.11.194",
133088
+ version: "1.11.196",
133064
133089
  main: "dist/index.js",
133065
133090
  type: "module",
133066
133091
  repository: "tscircuit/pcb-viewer",
@@ -133111,7 +133136,7 @@ var package_default2 = {
133111
133136
  dependencies: {
133112
133137
  "@emotion/css": "^11.11.2",
133113
133138
  "@vitejs/plugin-react": "^4.5.0",
133114
- "circuit-to-svg": "^0.0.130",
133139
+ "circuit-to-svg": "^0.0.166",
133115
133140
  color: "^4.2.3",
133116
133141
  "react-supergrid": "^1.0.10",
133117
133142
  "react-toastify": "^10.0.5",
@@ -133246,6 +133271,7 @@ var ToolbarOverlay = ({ children, elements }) => {
133246
133271
  const [isViewMenuOpen, setViewMenuOpen] = useState8(false);
133247
133272
  const [isLayerMenuOpen, setLayerMenuOpen] = useState8(false);
133248
133273
  const [isErrorsOpen, setErrorsOpen] = useState8(false);
133274
+ const [measureToolArmed, setMeasureToolArmed] = useState8(false);
133249
133275
  const [selectedLayer, selectLayer] = useGlobalStore(
133250
133276
  (s) => [s.selected_layer, s.selectLayer]
133251
133277
  );
@@ -133273,6 +133299,16 @@ var ToolbarOverlay = ({ children, elements }) => {
133273
133299
  (s) => s.setIsShowingAutorouting
133274
133300
  );
133275
133301
  const setIsShowingDrcErrors = useGlobalStore((s) => s.setIsShowingDrcErrors);
133302
+ useEffect13(() => {
133303
+ const arm = () => setMeasureToolArmed(true);
133304
+ const disarm = () => setMeasureToolArmed(false);
133305
+ window.addEventListener("arm-dimension-tool", arm);
133306
+ window.addEventListener("disarm-dimension-tool", disarm);
133307
+ return () => {
133308
+ window.removeEventListener("arm-dimension-tool", arm);
133309
+ window.removeEventListener("disarm-dimension-tool", disarm);
133310
+ };
133311
+ }, []);
133276
133312
  useHotKey("1", () => selectLayer("top"));
133277
133313
  useHotKey("2", () => selectLayer("bottom"));
133278
133314
  useHotKey("3", () => selectLayer("inner1"));
@@ -133437,6 +133473,17 @@ var ToolbarOverlay = ({ children, elements }) => {
133437
133473
  ] })
133438
133474
  }
133439
133475
  ),
133476
+ /* @__PURE__ */ jsx20(
133477
+ ToolbarButton,
133478
+ {
133479
+ style: measureToolArmed ? { backgroundColor: "#444" } : {},
133480
+ onClick: () => {
133481
+ setMeasureToolArmed(true);
133482
+ window.dispatchEvent(new Event("arm-dimension-tool"));
133483
+ },
133484
+ children: /* @__PURE__ */ jsx20("div", { children: "\u{1F4CF}" })
133485
+ }
133486
+ ),
133440
133487
  /* @__PURE__ */ jsx20(
133441
133488
  ToolbarButton,
133442
133489
  {