@tscircuit/pcb-viewer 1.11.421 → 1.11.423

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.d.ts CHANGED
@@ -104,7 +104,8 @@ declare const usePcbViewerController: () => {
104
104
  type Props = {
105
105
  circuitJson?: AnyCircuitElement[];
106
106
  height?: number;
107
- /** Initial engine; users can switch via the context menu. Prop changes reset it.
107
+ /** Initial engine override; otherwise restores the saved user preference.
108
+ * Users can switch via the context menu. Prop changes reset it.
108
109
  * WebGPU runs in a worker and reports failures without changing engines. */
109
110
  renderer?: "webgpu" | "canvas";
110
111
  allowEditing?: boolean;
package/dist/index.js CHANGED
@@ -9596,6 +9596,7 @@ import { useContext as useContext2 } from "react";
9596
9596
  // src/hooks/useLocalStorage.ts
9597
9597
  import { useCallback } from "react";
9598
9598
  var STORAGE_KEYS = {
9599
+ RENDERING_ENGINE: "pcb_viewer_rendering_engine",
9599
9600
  COPPER_POUR_OPACITY: "pcb_viewer_copper_pour_opacity",
9600
9601
  HIDDEN_LAYER_OPACITY: "pcb_viewer_hidden_layer_opacity",
9601
9602
  IS_SHOWING_PCB_GROUPS: "pcb_viewer_is_showing_pcb_groups",
@@ -18585,7 +18586,7 @@ import { css as css3 } from "@emotion/css";
18585
18586
  // package.json
18586
18587
  var package_default = {
18587
18588
  name: "@tscircuit/pcb-viewer",
18588
- version: "1.11.420",
18589
+ version: "1.11.422",
18589
18590
  main: "dist/index.js",
18590
18591
  type: "module",
18591
18592
  repository: {
@@ -18654,7 +18655,7 @@ var package_default = {
18654
18655
  "@tscircuit/math-utils": "^0.0.36",
18655
18656
  "@vitejs/plugin-react": "^5.0.2",
18656
18657
  "circuit-json": "^0.0.492",
18657
- "circuit-to-canvas": "0.0.131",
18658
+ "circuit-to-canvas": "0.0.135",
18658
18659
  color: "^4.2.3",
18659
18660
  "react-supergrid": "^1.0.10",
18660
18661
  "react-toastify": "^10.0.5",
@@ -21079,11 +21080,15 @@ function applyEditEvents({
21079
21080
  // src/PCBViewer.tsx
21080
21081
  import { jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
21081
21082
  var defaultTransform = compose9(translate14(400, 300), scale6(40, -40));
21083
+ var getPreferredRenderer = () => {
21084
+ const stored = getStoredString(STORAGE_KEYS.RENDERING_ENGINE, "webgpu");
21085
+ return stored === "canvas" || stored === "webgpu" ? stored : "webgpu";
21086
+ };
21082
21087
  var PCBViewer = ({
21083
21088
  circuitJson,
21084
21089
  debugGraphics,
21085
21090
  height = 600,
21086
- renderer = "webgpu",
21091
+ renderer,
21087
21092
  initialState,
21088
21093
  allowEditing = true,
21089
21094
  editEvents: editEventsProp,
@@ -21096,12 +21101,21 @@ var PCBViewer = ({
21096
21101
  disablePcbGroups = false,
21097
21102
  controller
21098
21103
  }) => {
21099
- const [activeRenderer, setActiveRenderer] = useState14(renderer);
21104
+ const [activeRenderer, setActiveRenderer] = useState14(
21105
+ () => renderer ?? getPreferredRenderer()
21106
+ );
21100
21107
  const [focusedPcbComponent, setFocusedPcbComponent] = useState14(null);
21101
- useEffect21(() => setActiveRenderer(renderer), [renderer]);
21108
+ useEffect21(
21109
+ () => setActiveRenderer(renderer ?? getPreferredRenderer()),
21110
+ [renderer]
21111
+ );
21112
+ const setPreferredRenderer = useCallback12((engine) => {
21113
+ setActiveRenderer(engine);
21114
+ setStoredString(STORAGE_KEYS.RENDERING_ENGINE, engine);
21115
+ }, []);
21102
21116
  const renderingEngine = useMemo11(
21103
- () => ({ renderer: activeRenderer, setRenderer: setActiveRenderer }),
21104
- [activeRenderer]
21117
+ () => ({ renderer: activeRenderer, setRenderer: setPreferredRenderer }),
21118
+ [activeRenderer, setPreferredRenderer]
21105
21119
  );
21106
21120
  const [isInteractionEnabled, setIsInteractionEnabled] = useState14(
21107
21121
  !clickToInteractEnabled