@tscircuit/3d-viewer 0.0.610 → 0.0.611
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 +174 -124
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -14608,7 +14608,7 @@ var useHiddenCadComponents = (circuitKey) => {
|
|
|
14608
14608
|
};
|
|
14609
14609
|
|
|
14610
14610
|
// src/CadViewer.tsx
|
|
14611
|
-
import { useCallback as useCallback24, useContext as useContext10, useEffect as useEffect50, useRef as useRef29, useState as
|
|
14611
|
+
import { useCallback as useCallback24, useContext as useContext10, useEffect as useEffect50, useRef as useRef29, useState as useState42 } from "react";
|
|
14612
14612
|
import * as THREE54 from "three";
|
|
14613
14613
|
|
|
14614
14614
|
// src/hooks/use-convert-children-to-soup.ts
|
|
@@ -14646,7 +14646,7 @@ var getCadPcbContext = (cad, circuitJson) => {
|
|
|
14646
14646
|
|
|
14647
14647
|
// src/AnyCadComponent.tsx
|
|
14648
14648
|
import { su as su2 } from "@tscircuit/circuit-json-util";
|
|
14649
|
-
import { useCallback as useCallback3, useEffect as useEffect12, useMemo as
|
|
14649
|
+
import { useCallback as useCallback3, useEffect as useEffect12, useMemo as useMemo9, useState as useState9 } from "react";
|
|
14650
14650
|
|
|
14651
14651
|
// src/contexts/LayerVisibilityContext.tsx
|
|
14652
14652
|
import {
|
|
@@ -38199,7 +38199,7 @@ function GltfModel({
|
|
|
38199
38199
|
var import_jscad_planner = __toESM(require_dist(), 1);
|
|
38200
38200
|
var import_modeling = __toESM(require_src(), 1);
|
|
38201
38201
|
import * as THREE11 from "three";
|
|
38202
|
-
import {
|
|
38202
|
+
import { useState as useState6, useEffect as useEffect9 } from "react";
|
|
38203
38203
|
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
38204
38204
|
var JscadModel = ({
|
|
38205
38205
|
jscadPlan,
|
|
@@ -38216,31 +38216,39 @@ var JscadModel = ({
|
|
|
38216
38216
|
scale: scale2,
|
|
38217
38217
|
isTranslucent = false
|
|
38218
38218
|
}) => {
|
|
38219
|
-
const
|
|
38219
|
+
const [mesh, setMesh] = useState6(null);
|
|
38220
|
+
useEffect9(() => {
|
|
38220
38221
|
const jscadObject = (0, import_jscad_planner.executeJscadOperations)(import_modeling.default, jscadPlan);
|
|
38221
38222
|
if (!jscadObject || !jscadObject.polygons && !jscadObject.sides) {
|
|
38222
|
-
|
|
38223
|
+
setMesh(null);
|
|
38224
|
+
return;
|
|
38223
38225
|
}
|
|
38224
|
-
const
|
|
38226
|
+
const geometry = convertCSGToThreeGeom(jscadObject);
|
|
38225
38227
|
const material2 = new THREE11.MeshStandardMaterial({
|
|
38226
38228
|
vertexColors: true,
|
|
38227
|
-
side: THREE11.DoubleSide
|
|
38228
|
-
transparent: isTranslucent,
|
|
38229
|
-
opacity: isTranslucent ? 0.5 : 1,
|
|
38230
|
-
depthWrite: !isTranslucent
|
|
38229
|
+
side: THREE11.DoubleSide
|
|
38231
38230
|
});
|
|
38232
|
-
|
|
38233
|
-
|
|
38234
|
-
|
|
38235
|
-
|
|
38236
|
-
|
|
38237
|
-
|
|
38238
|
-
|
|
38231
|
+
const model = new THREE11.Mesh(geometry, material2);
|
|
38232
|
+
setMesh(model);
|
|
38233
|
+
return () => {
|
|
38234
|
+
geometry.dispose();
|
|
38235
|
+
material2.dispose();
|
|
38236
|
+
};
|
|
38237
|
+
}, [jscadPlan]);
|
|
38238
|
+
useEffect9(() => {
|
|
38239
|
+
if (!mesh) return;
|
|
38240
|
+
const material2 = mesh.material;
|
|
38241
|
+
material2.transparent = isTranslucent;
|
|
38242
|
+
material2.opacity = isTranslucent ? 0.5 : 1;
|
|
38243
|
+
material2.depthWrite = !isTranslucent;
|
|
38244
|
+
material2.needsUpdate = true;
|
|
38245
|
+
mesh.renderOrder = isTranslucent ? 2 : 1;
|
|
38246
|
+
configureObjectShadows(mesh, {
|
|
38239
38247
|
castShadow: !isTranslucent,
|
|
38240
38248
|
receiveShadow: true
|
|
38241
38249
|
});
|
|
38242
|
-
|
|
38243
|
-
|
|
38250
|
+
}, [mesh, isTranslucent]);
|
|
38251
|
+
const material = mesh?.material;
|
|
38244
38252
|
const { boardTransformGroup } = useCadModelTransformGraph({
|
|
38245
38253
|
model: mesh,
|
|
38246
38254
|
position: positionOffset,
|
|
@@ -38263,7 +38271,7 @@ var JscadModel = ({
|
|
|
38263
38271
|
material.emissiveIntensity = 0;
|
|
38264
38272
|
}
|
|
38265
38273
|
}, [isHovered, material]);
|
|
38266
|
-
if (!
|
|
38274
|
+
if (!mesh) return null;
|
|
38267
38275
|
return /* @__PURE__ */ jsx8(
|
|
38268
38276
|
ContainerWithTooltip_default,
|
|
38269
38277
|
{
|
|
@@ -38276,7 +38284,7 @@ var JscadModel = ({
|
|
|
38276
38284
|
};
|
|
38277
38285
|
|
|
38278
38286
|
// src/hooks/use-global-obj-loader.ts
|
|
38279
|
-
import { useEffect as useEffect10, useState as
|
|
38287
|
+
import { useEffect as useEffect10, useState as useState7 } from "react";
|
|
38280
38288
|
|
|
38281
38289
|
// src/utils/vrml.ts
|
|
38282
38290
|
import { VRMLLoader } from "three-stdlib";
|
|
@@ -38303,7 +38311,7 @@ if (typeof window !== "undefined" && !window.TSCIRCUIT_OBJ_LOADER_CACHE) {
|
|
|
38303
38311
|
window.TSCIRCUIT_OBJ_LOADER_CACHE = /* @__PURE__ */ new Map();
|
|
38304
38312
|
}
|
|
38305
38313
|
function useGlobalObjLoader(url) {
|
|
38306
|
-
const [obj, setObj] =
|
|
38314
|
+
const [obj, setObj] = useState7(null);
|
|
38307
38315
|
useEffect10(() => {
|
|
38308
38316
|
if (!url) return;
|
|
38309
38317
|
const cleanUrl = url.replace(/&cachebust_origin=$/, "");
|
|
@@ -38374,7 +38382,7 @@ function useGlobalObjLoader(url) {
|
|
|
38374
38382
|
}
|
|
38375
38383
|
|
|
38376
38384
|
// src/three-components/MixedStlModel.tsx
|
|
38377
|
-
import { useMemo as
|
|
38385
|
+
import { useMemo as useMemo8 } from "react";
|
|
38378
38386
|
import * as THREE12 from "three";
|
|
38379
38387
|
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
38380
38388
|
function MixedStlModel({
|
|
@@ -38393,7 +38401,7 @@ function MixedStlModel({
|
|
|
38393
38401
|
isTranslucent = false
|
|
38394
38402
|
}) {
|
|
38395
38403
|
const obj = useGlobalObjLoader(url);
|
|
38396
|
-
const model =
|
|
38404
|
+
const model = useMemo8(() => {
|
|
38397
38405
|
if (obj && !(obj instanceof Error)) {
|
|
38398
38406
|
obj.traverse((child) => {
|
|
38399
38407
|
if (child instanceof THREE12.Mesh && child.material) {
|
|
@@ -38457,7 +38465,7 @@ function MixedStlModel({
|
|
|
38457
38465
|
}
|
|
38458
38466
|
|
|
38459
38467
|
// src/three-components/StepModel.tsx
|
|
38460
|
-
import { useEffect as useEffect11, useState as
|
|
38468
|
+
import { useEffect as useEffect11, useState as useState8 } from "react";
|
|
38461
38469
|
import { GLTFExporter } from "three-stdlib";
|
|
38462
38470
|
|
|
38463
38471
|
// src/three-components/step-mesh-to-group.ts
|
|
@@ -38671,7 +38679,7 @@ var StepModel = ({
|
|
|
38671
38679
|
isHovered,
|
|
38672
38680
|
isTranslucent
|
|
38673
38681
|
}) => {
|
|
38674
|
-
const [stepGltfUrl, setStepGltfUrl] =
|
|
38682
|
+
const [stepGltfUrl, setStepGltfUrl] = useState8(null);
|
|
38675
38683
|
useEffect11(() => {
|
|
38676
38684
|
let isActive = true;
|
|
38677
38685
|
let objectUrl = null;
|
|
@@ -39109,9 +39117,9 @@ var AnyCadComponent = ({
|
|
|
39109
39117
|
resolveStaticAsset
|
|
39110
39118
|
}) => {
|
|
39111
39119
|
const pcbThickness = usePcbThickness(circuitJson);
|
|
39112
|
-
const [isHovered, setIsHovered] =
|
|
39120
|
+
const [isHovered, setIsHovered] = useState9(false);
|
|
39113
39121
|
const { visibility } = useLayerVisibility();
|
|
39114
|
-
const [hoverPosition, setHoverPosition] =
|
|
39122
|
+
const [hoverPosition, setHoverPosition] = useState9(null);
|
|
39115
39123
|
const handleHover = useCallback3((e) => {
|
|
39116
39124
|
if (e?.mousePosition) {
|
|
39117
39125
|
setIsHovered(true);
|
|
@@ -39125,12 +39133,12 @@ var AnyCadComponent = ({
|
|
|
39125
39133
|
setIsHovered(false);
|
|
39126
39134
|
setHoverPosition(null);
|
|
39127
39135
|
}, []);
|
|
39128
|
-
const componentName =
|
|
39136
|
+
const componentName = useMemo9(() => {
|
|
39129
39137
|
return su2(circuitJson).source_component.getUsing({
|
|
39130
39138
|
source_component_id: cad_component.source_component_id
|
|
39131
39139
|
})?.name;
|
|
39132
39140
|
}, [circuitJson, cad_component.source_component_id]);
|
|
39133
|
-
const { pcbComponent, layer, isThroughHole } =
|
|
39141
|
+
const { pcbComponent, layer, isThroughHole } = useMemo9(
|
|
39134
39142
|
() => getCadPcbContext(cad_component, circuitJson),
|
|
39135
39143
|
[cad_component, circuitJson]
|
|
39136
39144
|
);
|
|
@@ -39147,13 +39155,13 @@ var AnyCadComponent = ({
|
|
|
39147
39155
|
const stepUrl = resolveModelUrlWithStaticResolver(
|
|
39148
39156
|
cad_component.model_step_url
|
|
39149
39157
|
);
|
|
39150
|
-
const [fallbackModelIndex, setFallbackModelIndex] =
|
|
39151
|
-
const [lastModelError, setLastModelError] =
|
|
39158
|
+
const [fallbackModelIndex, setFallbackModelIndex] = useState9(0);
|
|
39159
|
+
const [lastModelError, setLastModelError] = useState9(null);
|
|
39152
39160
|
useEffect12(() => {
|
|
39153
39161
|
setFallbackModelIndex(0);
|
|
39154
39162
|
setLastModelError(null);
|
|
39155
39163
|
}, [cad_component.cad_component_id, url, gltfUrl, stepUrl]);
|
|
39156
|
-
const isEnclosure =
|
|
39164
|
+
const isEnclosure = useMemo9(
|
|
39157
39165
|
() => isLegacyFdmEnclosure(cad_component, circuitJson),
|
|
39158
39166
|
[cad_component, circuitJson]
|
|
39159
39167
|
);
|
|
@@ -39162,7 +39170,7 @@ var AnyCadComponent = ({
|
|
|
39162
39170
|
const renderedModelType = getRenderedCadModelType(sourceModelType);
|
|
39163
39171
|
const gltfModelType = cad_component.model_glb_url ? "glb" : "gltf";
|
|
39164
39172
|
const meshModelType = cad_component.model_wrl_url ? "wrl" : cad_component.model_stl_url ? "stl" : "obj";
|
|
39165
|
-
const modelTransform =
|
|
39173
|
+
const modelTransform = useMemo9(
|
|
39166
39174
|
() => getCadModelTransform(cad_component, {
|
|
39167
39175
|
layer,
|
|
39168
39176
|
pcbThickness,
|
|
@@ -39172,7 +39180,7 @@ var AnyCadComponent = ({
|
|
|
39172
39180
|
);
|
|
39173
39181
|
const rotationOffset = tuple(...modelTransform.rotation);
|
|
39174
39182
|
const adjustedPosition = modelTransform.position;
|
|
39175
|
-
const fallbackModelComponents =
|
|
39183
|
+
const fallbackModelComponents = useMemo9(() => {
|
|
39176
39184
|
const components = [];
|
|
39177
39185
|
if (gltfUrl) {
|
|
39178
39186
|
components.push(
|
|
@@ -39369,13 +39377,13 @@ var AnyCadComponent = ({
|
|
|
39369
39377
|
};
|
|
39370
39378
|
|
|
39371
39379
|
// src/CadViewerContainer.tsx
|
|
39372
|
-
import { forwardRef as forwardRef2, useEffect as useEffect21, useMemo as
|
|
39380
|
+
import { forwardRef as forwardRef2, useEffect as useEffect21, useMemo as useMemo17, useState as useState13 } from "react";
|
|
39373
39381
|
import * as THREE25 from "three";
|
|
39374
39382
|
|
|
39375
39383
|
// package.json
|
|
39376
39384
|
var package_default = {
|
|
39377
39385
|
name: "@tscircuit/3d-viewer",
|
|
39378
|
-
version: "0.0.
|
|
39386
|
+
version: "0.0.610",
|
|
39379
39387
|
repository: {
|
|
39380
39388
|
type: "git",
|
|
39381
39389
|
url: "https://github.com/tscircuit/3d-viewer"
|
|
@@ -39473,7 +39481,7 @@ var package_default = {
|
|
|
39473
39481
|
};
|
|
39474
39482
|
|
|
39475
39483
|
// src/contexts/appearance-context.tsx
|
|
39476
|
-
import { createContext as createContext5, useContext as useContext5, useEffect as useEffect13, useMemo as
|
|
39484
|
+
import { createContext as createContext5, useContext as useContext5, useEffect as useEffect13, useMemo as useMemo10, useState as useState10 } from "react";
|
|
39477
39485
|
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
39478
39486
|
var LIGHTING_STORAGE_KEY = "cadViewerLightingEnabled";
|
|
39479
39487
|
var readStoredLightingEnabled = () => {
|
|
@@ -39486,9 +39494,9 @@ var AppearanceContext = createContext5(
|
|
|
39486
39494
|
var AppearanceProvider = ({
|
|
39487
39495
|
children
|
|
39488
39496
|
}) => {
|
|
39489
|
-
const [darkBackgroundEnabled, setDarkBackgroundEnabled] =
|
|
39490
|
-
const [gridEnabled, setGridEnabled] =
|
|
39491
|
-
const [lightingEnabled, setLightingEnabled] =
|
|
39497
|
+
const [darkBackgroundEnabled, setDarkBackgroundEnabled] = useState10(false);
|
|
39498
|
+
const [gridEnabled, setGridEnabled] = useState10(false);
|
|
39499
|
+
const [lightingEnabled, setLightingEnabled] = useState10(
|
|
39492
39500
|
readStoredLightingEnabled
|
|
39493
39501
|
);
|
|
39494
39502
|
useEffect13(() => {
|
|
@@ -39497,7 +39505,7 @@ var AppearanceProvider = ({
|
|
|
39497
39505
|
lightingEnabled ? "true" : "false"
|
|
39498
39506
|
);
|
|
39499
39507
|
}, [lightingEnabled]);
|
|
39500
|
-
const value =
|
|
39508
|
+
const value = useMemo10(
|
|
39501
39509
|
() => ({
|
|
39502
39510
|
darkBackgroundEnabled,
|
|
39503
39511
|
setDarkBackgroundEnabled,
|
|
@@ -39523,9 +39531,9 @@ import {
|
|
|
39523
39531
|
createContext as createContext6,
|
|
39524
39532
|
useCallback as useCallback4,
|
|
39525
39533
|
useContext as useContext6,
|
|
39526
|
-
useMemo as
|
|
39534
|
+
useMemo as useMemo11,
|
|
39527
39535
|
useRef as useRef3,
|
|
39528
|
-
useState as
|
|
39536
|
+
useState as useState11
|
|
39529
39537
|
} from "react";
|
|
39530
39538
|
import * as THREE15 from "three";
|
|
39531
39539
|
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
@@ -39570,15 +39578,15 @@ var CameraControllerContext = createContext6(void 0);
|
|
|
39570
39578
|
var CameraControllerProvider = ({ children, defaultTarget, initialCameraPosition, initialCameraType }) => {
|
|
39571
39579
|
const controlsRef = useRef3(null);
|
|
39572
39580
|
const mainCameraRef = useRef3(null);
|
|
39573
|
-
const [controller, setController] =
|
|
39574
|
-
const [cameraType, setCameraType] =
|
|
39581
|
+
const [controller, setController] = useState11(null);
|
|
39582
|
+
const [cameraType, setCameraType] = useState11(
|
|
39575
39583
|
initialCameraType ?? "perspective"
|
|
39576
39584
|
);
|
|
39577
|
-
const [cameraPosition, setCameraPosition] =
|
|
39578
|
-
const [cameraRotation, setCameraRotation] =
|
|
39585
|
+
const [cameraPosition, setCameraPosition] = useState11(initialCameraPosition ?? null);
|
|
39586
|
+
const [cameraRotation, setCameraRotation] = useState11(
|
|
39579
39587
|
new THREE15.Euler(0, 0, 0)
|
|
39580
39588
|
);
|
|
39581
|
-
const baseDistance =
|
|
39589
|
+
const baseDistance = useMemo11(() => {
|
|
39582
39590
|
const [x, y, z42] = initialCameraPosition ?? [5, -5, 5];
|
|
39583
39591
|
const distance6 = Math.hypot(
|
|
39584
39592
|
x - defaultTarget.x,
|
|
@@ -39686,7 +39694,7 @@ var CameraControllerProvider = ({ children, defaultTarget, initialCameraPosition
|
|
|
39686
39694
|
},
|
|
39687
39695
|
[]
|
|
39688
39696
|
);
|
|
39689
|
-
const cameraControllerContextValue =
|
|
39697
|
+
const cameraControllerContextValue = useMemo11(
|
|
39690
39698
|
() => ({
|
|
39691
39699
|
controlsRef,
|
|
39692
39700
|
mainCameraRef,
|
|
@@ -39917,11 +39925,11 @@ var useCameraSession = () => {
|
|
|
39917
39925
|
import {
|
|
39918
39926
|
useRef as useRef6,
|
|
39919
39927
|
useEffect as useEffect15,
|
|
39920
|
-
useState as
|
|
39928
|
+
useState as useState12,
|
|
39921
39929
|
useCallback as useCallback7,
|
|
39922
39930
|
forwardRef,
|
|
39923
39931
|
useImperativeHandle,
|
|
39924
|
-
useMemo as
|
|
39932
|
+
useMemo as useMemo12
|
|
39925
39933
|
} from "react";
|
|
39926
39934
|
import * as THREE18 from "three";
|
|
39927
39935
|
|
|
@@ -39946,7 +39954,7 @@ var Canvas = forwardRef(
|
|
|
39946
39954
|
({ children, scene: sceneProps, camera: cameraProps, style, onCreated }, ref) => {
|
|
39947
39955
|
const { cameraType } = useCameraController();
|
|
39948
39956
|
const mountRef = useRef6(null);
|
|
39949
|
-
const [contextState, setContextState] =
|
|
39957
|
+
const [contextState, setContextState] = useState12(
|
|
39950
39958
|
null
|
|
39951
39959
|
);
|
|
39952
39960
|
const frameListeners = useRef6(
|
|
@@ -39969,7 +39977,7 @@ var Canvas = forwardRef(
|
|
|
39969
39977
|
},
|
|
39970
39978
|
[]
|
|
39971
39979
|
);
|
|
39972
|
-
const scene =
|
|
39980
|
+
const scene = useMemo12(() => new THREE18.Scene(), []);
|
|
39973
39981
|
if (sceneProps?.up) {
|
|
39974
39982
|
scene.up.set(sceneProps.up.x, sceneProps.up.y, sceneProps.up.z);
|
|
39975
39983
|
}
|
|
@@ -40083,7 +40091,7 @@ var Canvas = forwardRef(
|
|
|
40083
40091
|
);
|
|
40084
40092
|
|
|
40085
40093
|
// src/react-three/Grid.tsx
|
|
40086
|
-
import { useEffect as useEffect16, useMemo as
|
|
40094
|
+
import { useEffect as useEffect16, useMemo as useMemo13 } from "react";
|
|
40087
40095
|
import * as THREE19 from "three";
|
|
40088
40096
|
var vertexShader = `
|
|
40089
40097
|
varying vec3 worldPosition;
|
|
@@ -40129,7 +40137,7 @@ var Grid = ({
|
|
|
40129
40137
|
}) => {
|
|
40130
40138
|
const { scene, camera } = useThree();
|
|
40131
40139
|
const size4 = 1e3;
|
|
40132
|
-
const gridMesh =
|
|
40140
|
+
const gridMesh = useMemo13(() => {
|
|
40133
40141
|
const geometry = new THREE19.PlaneGeometry(size4, size4);
|
|
40134
40142
|
geometry.rotateX(-Math.PI / 2);
|
|
40135
40143
|
const material = new THREE19.ShaderMaterial({
|
|
@@ -40175,7 +40183,7 @@ var Grid = ({
|
|
|
40175
40183
|
};
|
|
40176
40184
|
|
|
40177
40185
|
// src/react-three/Lights.tsx
|
|
40178
|
-
import { useEffect as useEffect17, useMemo as
|
|
40186
|
+
import { useEffect as useEffect17, useMemo as useMemo14 } from "react";
|
|
40179
40187
|
import * as THREE20 from "three";
|
|
40180
40188
|
var UNDERSIDE_LIGHT_FACTOR = 0.75;
|
|
40181
40189
|
var Lights = ({
|
|
@@ -40185,7 +40193,7 @@ var Lights = ({
|
|
|
40185
40193
|
shadowsEnabled = false
|
|
40186
40194
|
}) => {
|
|
40187
40195
|
const { scene } = useThree();
|
|
40188
|
-
const lightRig =
|
|
40196
|
+
const lightRig = useMemo14(() => {
|
|
40189
40197
|
const rig = new THREE20.Group();
|
|
40190
40198
|
rig.name = "cad-viewer-light-rig";
|
|
40191
40199
|
const centerX = boardCenter?.x ?? 0;
|
|
@@ -40300,7 +40308,7 @@ var Lights = ({
|
|
|
40300
40308
|
};
|
|
40301
40309
|
|
|
40302
40310
|
// src/react-three/OrbitControls.tsx
|
|
40303
|
-
import { useEffect as useEffect18, useMemo as
|
|
40311
|
+
import { useEffect as useEffect18, useMemo as useMemo15 } from "react";
|
|
40304
40312
|
import * as THREE21 from "three";
|
|
40305
40313
|
import { OrbitControls as ThreeOrbitControls } from "three/examples/jsm/controls/OrbitControls.js";
|
|
40306
40314
|
var OrbitControls = ({
|
|
@@ -40316,7 +40324,7 @@ var OrbitControls = ({
|
|
|
40316
40324
|
onControlsChange
|
|
40317
40325
|
}) => {
|
|
40318
40326
|
const { camera, renderer } = useThree();
|
|
40319
|
-
const controls =
|
|
40327
|
+
const controls = useMemo15(() => {
|
|
40320
40328
|
if (!camera || !renderer) return null;
|
|
40321
40329
|
return new ThreeOrbitControls(camera, renderer.domElement);
|
|
40322
40330
|
}, [camera, renderer]);
|
|
@@ -40624,7 +40632,7 @@ var OrientationCubeCanvas = () => {
|
|
|
40624
40632
|
};
|
|
40625
40633
|
|
|
40626
40634
|
// src/three-components/reference-object.tsx
|
|
40627
|
-
import { useEffect as useEffect20, useMemo as
|
|
40635
|
+
import { useEffect as useEffect20, useMemo as useMemo16 } from "react";
|
|
40628
40636
|
|
|
40629
40637
|
// src/reference-objects/create-reference-object.ts
|
|
40630
40638
|
import * as THREE23 from "three";
|
|
@@ -41010,7 +41018,7 @@ var ReferenceObject = ({
|
|
|
41010
41018
|
boardCenter
|
|
41011
41019
|
}) => {
|
|
41012
41020
|
const { scene } = useThree();
|
|
41013
|
-
const object =
|
|
41021
|
+
const object = useMemo16(() => {
|
|
41014
41022
|
const nextObject = createReferenceObject(type);
|
|
41015
41023
|
const position = getReferenceObjectPosition(
|
|
41016
41024
|
type,
|
|
@@ -41062,7 +41070,7 @@ var CadViewerContainer = forwardRef2(
|
|
|
41062
41070
|
onUserInteraction,
|
|
41063
41071
|
onCameraControllerReady
|
|
41064
41072
|
}, ref) => {
|
|
41065
|
-
const [isInteractionEnabled, setIsInteractionEnabled] =
|
|
41073
|
+
const [isInteractionEnabled, setIsInteractionEnabled] = useState13(
|
|
41066
41074
|
!clickToInteractEnabled
|
|
41067
41075
|
);
|
|
41068
41076
|
const { mainCameraRef, handleControlsChange, controller } = useCameraController();
|
|
@@ -41076,17 +41084,17 @@ var CadViewerContainer = forwardRef2(
|
|
|
41076
41084
|
onCameraControllerReady(controller);
|
|
41077
41085
|
}
|
|
41078
41086
|
}, [controller, onCameraControllerReady]);
|
|
41079
|
-
const comparisonBounds =
|
|
41087
|
+
const comparisonBounds = useMemo17(() => {
|
|
41080
41088
|
if (!referenceObject) return void 0;
|
|
41081
41089
|
return getComparisonBounds(referenceObject, boardDimensions, boardCenter);
|
|
41082
41090
|
}, [referenceObject, boardDimensions, boardCenter]);
|
|
41083
|
-
const gridSectionSize =
|
|
41091
|
+
const gridSectionSize = useMemo17(() => {
|
|
41084
41092
|
if (!boardDimensions) return 10;
|
|
41085
41093
|
const width10 = boardDimensions.width ?? 0;
|
|
41086
41094
|
const height10 = boardDimensions.height ?? 0;
|
|
41087
41095
|
return Math.max(Math.max(width10, height10) * 1.5, 10);
|
|
41088
41096
|
}, [boardDimensions]);
|
|
41089
|
-
const orbitTarget =
|
|
41097
|
+
const orbitTarget = useMemo17(() => {
|
|
41090
41098
|
if (comparisonBounds) {
|
|
41091
41099
|
return [
|
|
41092
41100
|
(comparisonBounds.minX + comparisonBounds.maxX) / 2,
|
|
@@ -41221,11 +41229,11 @@ var CadViewerContainer = forwardRef2(
|
|
|
41221
41229
|
);
|
|
41222
41230
|
|
|
41223
41231
|
// src/hooks/use-stls-from-geom.ts
|
|
41224
|
-
import { useState as
|
|
41232
|
+
import { useState as useState14, useEffect as useEffect22 } from "react";
|
|
41225
41233
|
import stlSerializer from "@jscad/stl-serializer";
|
|
41226
41234
|
var useStlsFromGeom = (geom) => {
|
|
41227
|
-
const [stls, setStls] =
|
|
41228
|
-
const [loading, setLoading] =
|
|
41235
|
+
const [stls, setStls] = useState14([]);
|
|
41236
|
+
const [loading, setLoading] = useState14(true);
|
|
41229
41237
|
useEffect22(() => {
|
|
41230
41238
|
if (!geom) return;
|
|
41231
41239
|
const generateStls = async () => {
|
|
@@ -41255,7 +41263,7 @@ var useStlsFromGeom = (geom) => {
|
|
|
41255
41263
|
};
|
|
41256
41264
|
|
|
41257
41265
|
// src/hooks/useBoardGeomBuilder.ts
|
|
41258
|
-
import { useState as
|
|
41266
|
+
import { useState as useState15, useEffect as useEffect23, useRef as useRef8 } from "react";
|
|
41259
41267
|
|
|
41260
41268
|
// src/soup-to-3d/index.ts
|
|
41261
41269
|
var import_colors = __toESM(require_colors(), 1);
|
|
@@ -42697,7 +42705,7 @@ var BoardGeomBuilder = class {
|
|
|
42697
42705
|
|
|
42698
42706
|
// src/hooks/useBoardGeomBuilder.ts
|
|
42699
42707
|
var useBoardGeomBuilder = (circuitJson) => {
|
|
42700
|
-
const [boardGeom, setBoardGeom] =
|
|
42708
|
+
const [boardGeom, setBoardGeom] = useState15(null);
|
|
42701
42709
|
const isProcessingRef = useRef8(false);
|
|
42702
42710
|
useEffect23(() => {
|
|
42703
42711
|
let isCancelled = false;
|
|
@@ -42745,10 +42753,10 @@ var useBoardGeomBuilder = (circuitJson) => {
|
|
|
42745
42753
|
};
|
|
42746
42754
|
|
|
42747
42755
|
// src/three-components/Error3d.tsx
|
|
42748
|
-
import { useState as
|
|
42756
|
+
import { useState as useState16, useCallback as useCallback8, useEffect as useEffect25, useMemo as useMemo19 } from "react";
|
|
42749
42757
|
|
|
42750
42758
|
// src/react-three/Text.tsx
|
|
42751
|
-
import { useEffect as useEffect24, useMemo as
|
|
42759
|
+
import { useEffect as useEffect24, useMemo as useMemo18 } from "react";
|
|
42752
42760
|
import { Text as TroikaText2 } from "troika-three-text";
|
|
42753
42761
|
var Text = ({
|
|
42754
42762
|
children,
|
|
@@ -42763,7 +42771,7 @@ var Text = ({
|
|
|
42763
42771
|
depthOffset
|
|
42764
42772
|
}) => {
|
|
42765
42773
|
const { rootObject } = useThree();
|
|
42766
|
-
const mesh =
|
|
42774
|
+
const mesh = useMemo18(() => {
|
|
42767
42775
|
const textMesh = new TroikaText2();
|
|
42768
42776
|
textMesh.text = children;
|
|
42769
42777
|
if (position) textMesh.position.fromArray(position);
|
|
@@ -42808,8 +42816,8 @@ var Error3d = ({
|
|
|
42808
42816
|
cad_component
|
|
42809
42817
|
}) => {
|
|
42810
42818
|
const { rootObject } = useThree();
|
|
42811
|
-
const [isHovered, setIsHovered] =
|
|
42812
|
-
const [hoverPosition, setHoverPosition] =
|
|
42819
|
+
const [isHovered, setIsHovered] = useState16(false);
|
|
42820
|
+
const [hoverPosition, setHoverPosition] = useState16(null);
|
|
42813
42821
|
const handleHover = useCallback8((e) => {
|
|
42814
42822
|
if (e?.mousePosition) {
|
|
42815
42823
|
setIsHovered(true);
|
|
@@ -42823,7 +42831,7 @@ var Error3d = ({
|
|
|
42823
42831
|
setIsHovered(false);
|
|
42824
42832
|
setHoverPosition(null);
|
|
42825
42833
|
}, []);
|
|
42826
|
-
const position =
|
|
42834
|
+
const position = useMemo19(() => {
|
|
42827
42835
|
if (cad_component?.position) {
|
|
42828
42836
|
const p = [
|
|
42829
42837
|
cad_component.position.x,
|
|
@@ -42834,7 +42842,7 @@ var Error3d = ({
|
|
|
42834
42842
|
}
|
|
42835
42843
|
return [0, 0, 0];
|
|
42836
42844
|
}, [cad_component]);
|
|
42837
|
-
const group =
|
|
42845
|
+
const group = useMemo19(() => {
|
|
42838
42846
|
const g = new THREE28.Group();
|
|
42839
42847
|
g.position.fromArray(position);
|
|
42840
42848
|
return g;
|
|
@@ -42896,7 +42904,7 @@ var Error3d = ({
|
|
|
42896
42904
|
] });
|
|
42897
42905
|
};
|
|
42898
42906
|
var ErrorBox = ({ parent }) => {
|
|
42899
|
-
const mesh =
|
|
42907
|
+
const mesh = useMemo19(() => {
|
|
42900
42908
|
const m = new THREE28.Mesh(
|
|
42901
42909
|
new THREE28.BoxGeometry(0.5, 0.5, 0.5),
|
|
42902
42910
|
new THREE28.MeshStandardMaterial({
|
|
@@ -45032,6 +45040,46 @@ function createTextureMeshes(textures, boardData, pcbThickness, isFaux = false)
|
|
|
45032
45040
|
// src/three-components/JscadBoardTextures.tsx
|
|
45033
45041
|
import * as THREE44 from "three";
|
|
45034
45042
|
|
|
45043
|
+
// src/hooks/useBoardTextureVisibility.ts
|
|
45044
|
+
import { useMemo as useMemo20 } from "react";
|
|
45045
|
+
var useBoardTextureVisibility = (visibility) => {
|
|
45046
|
+
const {
|
|
45047
|
+
boardBody,
|
|
45048
|
+
topCopper,
|
|
45049
|
+
bottomCopper,
|
|
45050
|
+
topSilkscreen,
|
|
45051
|
+
bottomSilkscreen,
|
|
45052
|
+
topMask,
|
|
45053
|
+
bottomMask,
|
|
45054
|
+
keepout,
|
|
45055
|
+
pcbNotes
|
|
45056
|
+
} = visibility;
|
|
45057
|
+
return useMemo20(
|
|
45058
|
+
() => ({
|
|
45059
|
+
boardBody,
|
|
45060
|
+
topCopper,
|
|
45061
|
+
bottomCopper,
|
|
45062
|
+
topSilkscreen,
|
|
45063
|
+
bottomSilkscreen,
|
|
45064
|
+
topMask,
|
|
45065
|
+
bottomMask,
|
|
45066
|
+
keepout,
|
|
45067
|
+
pcbNotes
|
|
45068
|
+
}),
|
|
45069
|
+
[
|
|
45070
|
+
boardBody,
|
|
45071
|
+
topCopper,
|
|
45072
|
+
bottomCopper,
|
|
45073
|
+
topSilkscreen,
|
|
45074
|
+
bottomSilkscreen,
|
|
45075
|
+
topMask,
|
|
45076
|
+
bottomMask,
|
|
45077
|
+
keepout,
|
|
45078
|
+
pcbNotes
|
|
45079
|
+
]
|
|
45080
|
+
);
|
|
45081
|
+
};
|
|
45082
|
+
|
|
45035
45083
|
// src/utils/layer-texture-resolution.ts
|
|
45036
45084
|
var DEFAULT_MAX_TEXTURE_PIXELS = 4e6;
|
|
45037
45085
|
var DEFAULT_MAX_TEXTURE_DIMENSION = 4096;
|
|
@@ -45067,6 +45115,7 @@ function JscadBoardTextures({
|
|
|
45067
45115
|
}) {
|
|
45068
45116
|
const { rootObject } = useThree();
|
|
45069
45117
|
const { visibility } = useLayerVisibility();
|
|
45118
|
+
const textureVisibility = useBoardTextureVisibility(visibility);
|
|
45070
45119
|
const boardData = useMemo21(() => {
|
|
45071
45120
|
const panels = circuitJson.filter(
|
|
45072
45121
|
(e) => e.type === "pcb_panel"
|
|
@@ -45104,9 +45153,9 @@ function JscadBoardTextures({
|
|
|
45104
45153
|
circuitJson,
|
|
45105
45154
|
boardData,
|
|
45106
45155
|
traceTextureResolution,
|
|
45107
|
-
visibility
|
|
45156
|
+
visibility: textureVisibility
|
|
45108
45157
|
});
|
|
45109
|
-
}, [circuitJson, boardData, traceTextureResolution,
|
|
45158
|
+
}, [circuitJson, boardData, traceTextureResolution, textureVisibility]);
|
|
45110
45159
|
useEffect26(() => {
|
|
45111
45160
|
if (!rootObject || !boardData || !textures) return;
|
|
45112
45161
|
const meshes = [];
|
|
@@ -45245,7 +45294,7 @@ function JscadBoardTextures({
|
|
|
45245
45294
|
}
|
|
45246
45295
|
|
|
45247
45296
|
// src/three-components/STLModel.tsx
|
|
45248
|
-
import { useState as
|
|
45297
|
+
import { useState as useState17, useEffect as useEffect27, useMemo as useMemo22 } from "react";
|
|
45249
45298
|
import * as THREE45 from "three";
|
|
45250
45299
|
import { STLLoader } from "three-stdlib";
|
|
45251
45300
|
function STLModel({
|
|
@@ -45257,7 +45306,7 @@ function STLModel({
|
|
|
45257
45306
|
layerType
|
|
45258
45307
|
}) {
|
|
45259
45308
|
const { rootObject } = useThree();
|
|
45260
|
-
const [geom, setGeom] =
|
|
45309
|
+
const [geom, setGeom] = useState17(null);
|
|
45261
45310
|
useEffect27(() => {
|
|
45262
45311
|
const loader = new STLLoader();
|
|
45263
45312
|
if (stlData) {
|
|
@@ -46703,12 +46752,12 @@ function createFlexMeshes(geometryMeshes, textureMeshes, json, foldPcbs) {
|
|
|
46703
46752
|
|
|
46704
46753
|
// src/CadViewerManifold.tsx
|
|
46705
46754
|
import { su as su17 } from "@tscircuit/circuit-json-util";
|
|
46706
|
-
import { useEffect as useEffect29, useMemo as useMemo25, useState as
|
|
46755
|
+
import { useEffect as useEffect29, useMemo as useMemo25, useState as useState19 } from "react";
|
|
46707
46756
|
import * as THREE53 from "three";
|
|
46708
46757
|
|
|
46709
46758
|
// src/hooks/useManifoldBoardBuilder.ts
|
|
46710
46759
|
import { su as su16 } from "@tscircuit/circuit-json-util";
|
|
46711
|
-
import { useEffect as useEffect28, useMemo as useMemo24, useRef as useRef9, useState as
|
|
46760
|
+
import { useEffect as useEffect28, useMemo as useMemo24, useRef as useRef9, useState as useState18 } from "react";
|
|
46712
46761
|
import * as THREE50 from "three";
|
|
46713
46762
|
|
|
46714
46763
|
// src/utils/manifold/create-manifold-board.ts
|
|
@@ -47823,10 +47872,11 @@ function processViasForManifold(Manifold, circuitJson, pcbThickness, manifoldIns
|
|
|
47823
47872
|
|
|
47824
47873
|
// src/hooks/useManifoldBoardBuilder.ts
|
|
47825
47874
|
var useManifoldBoardBuilder = (manifoldJSModule, circuitJson, visibility) => {
|
|
47826
|
-
const
|
|
47827
|
-
const [
|
|
47828
|
-
const [
|
|
47829
|
-
const [
|
|
47875
|
+
const textureVisibility = useBoardTextureVisibility(visibility);
|
|
47876
|
+
const [geoms, setGeoms] = useState18(null);
|
|
47877
|
+
const [pcbThickness, setPcbThickness] = useState18(null);
|
|
47878
|
+
const [error, setError] = useState18(null);
|
|
47879
|
+
const [isLoading, setIsLoading] = useState18(true);
|
|
47830
47880
|
const manifoldInstancesForCleanup = useRef9([]);
|
|
47831
47881
|
const boardData = useMemo24(() => {
|
|
47832
47882
|
const panels = circuitJson.filter(
|
|
@@ -48046,9 +48096,9 @@ var useManifoldBoardBuilder = (manifoldJSModule, circuitJson, visibility) => {
|
|
|
48046
48096
|
circuitJson,
|
|
48047
48097
|
boardData,
|
|
48048
48098
|
traceTextureResolution,
|
|
48049
|
-
visibility
|
|
48099
|
+
visibility: textureVisibility
|
|
48050
48100
|
});
|
|
48051
|
-
}, [circuitJson, boardData, traceTextureResolution,
|
|
48101
|
+
}, [circuitJson, boardData, traceTextureResolution, textureVisibility]);
|
|
48052
48102
|
return {
|
|
48053
48103
|
geoms,
|
|
48054
48104
|
textures,
|
|
@@ -48238,8 +48288,8 @@ var CadViewerManifold = ({
|
|
|
48238
48288
|
const rawCircuitJson = circuitJsonProp ?? childrenCircuitJson;
|
|
48239
48289
|
return addFauxBoardIfNeeded(rawCircuitJson);
|
|
48240
48290
|
}, [circuitJsonProp, childrenCircuitJson]);
|
|
48241
|
-
const [manifoldJSModule, setManifoldJSModule] =
|
|
48242
|
-
const [manifoldLoadingError, setManifoldLoadingError] =
|
|
48291
|
+
const [manifoldJSModule, setManifoldJSModule] = useState19(null);
|
|
48292
|
+
const [manifoldLoadingError, setManifoldLoadingError] = useState19(null);
|
|
48243
48293
|
const { visibility } = useLayerVisibility();
|
|
48244
48294
|
useEffect29(() => {
|
|
48245
48295
|
if (window.ManifoldModule && typeof window.ManifoldModule === "object" && window.ManifoldModule.setup) {
|
|
@@ -53044,9 +53094,9 @@ function assignRef(ref, value) {
|
|
|
53044
53094
|
}
|
|
53045
53095
|
|
|
53046
53096
|
// node_modules/use-callback-ref/dist/es2015/useRef.js
|
|
53047
|
-
import { useState as
|
|
53097
|
+
import { useState as useState32 } from "react";
|
|
53048
53098
|
function useCallbackRef2(initialValue, callback) {
|
|
53049
|
-
var ref =
|
|
53099
|
+
var ref = useState32(function() {
|
|
53050
53100
|
return {
|
|
53051
53101
|
// value
|
|
53052
53102
|
value: initialValue,
|
|
@@ -54657,11 +54707,11 @@ var SubTrigger2 = DropdownMenuSubTrigger;
|
|
|
54657
54707
|
var SubContent2 = DropdownMenuSubContent;
|
|
54658
54708
|
|
|
54659
54709
|
// src/components/ViewportSubContent.tsx
|
|
54660
|
-
import { useLayoutEffect as useLayoutEffect5, useState as
|
|
54710
|
+
import { useLayoutEffect as useLayoutEffect5, useState as useState36 } from "react";
|
|
54661
54711
|
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
54662
54712
|
var ViewportSubContent = (props) => {
|
|
54663
|
-
const [content, setContent] =
|
|
54664
|
-
const [overlapWidth, setOverlapWidth] =
|
|
54713
|
+
const [content, setContent] = useState36(null);
|
|
54714
|
+
const [overlapWidth, setOverlapWidth] = useState36();
|
|
54665
54715
|
useLayoutEffect5(() => {
|
|
54666
54716
|
if (!content) return;
|
|
54667
54717
|
const trigger = document.getElementById(
|
|
@@ -54716,10 +54766,10 @@ var menuViewportStyles = {
|
|
|
54716
54766
|
};
|
|
54717
54767
|
|
|
54718
54768
|
// src/components/ContextMenu.tsx
|
|
54719
|
-
import { useState as
|
|
54769
|
+
import { useState as useState38 } from "react";
|
|
54720
54770
|
|
|
54721
54771
|
// src/components/AppearanceMenu.tsx
|
|
54722
|
-
import { useState as
|
|
54772
|
+
import { useState as useState37 } from "react";
|
|
54723
54773
|
|
|
54724
54774
|
// src/components/Icons.tsx
|
|
54725
54775
|
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
@@ -54846,8 +54896,8 @@ var AppearanceMenu = () => {
|
|
|
54846
54896
|
lightingEnabled,
|
|
54847
54897
|
setLightingEnabled
|
|
54848
54898
|
} = useAppearance();
|
|
54849
|
-
const [appearanceSubOpen, setAppearanceSubOpen] =
|
|
54850
|
-
const [hoveredItem, setHoveredItem] =
|
|
54899
|
+
const [appearanceSubOpen, setAppearanceSubOpen] = useState37(false);
|
|
54900
|
+
const [hoveredItem, setHoveredItem] = useState37(null);
|
|
54851
54901
|
return /* @__PURE__ */ jsxs7(Fragment10, { children: [
|
|
54852
54902
|
/* @__PURE__ */ jsx35(Separator2, { style: separatorStyles }),
|
|
54853
54903
|
/* @__PURE__ */ jsxs7(Sub2, { onOpenChange: setAppearanceSubOpen, children: [
|
|
@@ -55296,9 +55346,9 @@ var ContextMenu = ({
|
|
|
55296
55346
|
}) => {
|
|
55297
55347
|
const { cameraType, setCameraType } = useCameraController();
|
|
55298
55348
|
const { gridEnabled, setGridEnabled } = useAppearance();
|
|
55299
|
-
const [cameraSubOpen, setCameraSubOpen] =
|
|
55300
|
-
const [referenceObjectSubOpen, setReferenceObjectSubOpen] =
|
|
55301
|
-
const [hoveredItem, setHoveredItem] =
|
|
55349
|
+
const [cameraSubOpen, setCameraSubOpen] = useState38(false);
|
|
55350
|
+
const [referenceObjectSubOpen, setReferenceObjectSubOpen] = useState38(false);
|
|
55351
|
+
const [hoveredItem, setHoveredItem] = useState38(null);
|
|
55302
55352
|
return /* @__PURE__ */ jsx36(
|
|
55303
55353
|
"div",
|
|
55304
55354
|
{
|
|
@@ -55706,10 +55756,10 @@ var ContextMenu = ({
|
|
|
55706
55756
|
};
|
|
55707
55757
|
|
|
55708
55758
|
// src/components/KeyboardShortcutsDialog.tsx
|
|
55709
|
-
import { useEffect as useEffect48, useMemo as useMemo33, useRef as useRef27, useState as
|
|
55759
|
+
import { useEffect as useEffect48, useMemo as useMemo33, useRef as useRef27, useState as useState40 } from "react";
|
|
55710
55760
|
|
|
55711
55761
|
// src/hooks/useRegisteredHotkey.ts
|
|
55712
|
-
import { useEffect as useEffect47, useMemo as useMemo32, useRef as useRef26, useState as
|
|
55762
|
+
import { useEffect as useEffect47, useMemo as useMemo32, useRef as useRef26, useState as useState39 } from "react";
|
|
55713
55763
|
var hotkeyRegistry = /* @__PURE__ */ new Map();
|
|
55714
55764
|
var subscribers = /* @__PURE__ */ new Set();
|
|
55715
55765
|
var isListenerAttached = false;
|
|
@@ -55853,7 +55903,7 @@ var useRegisteredHotkey = (id, handler, metadata) => {
|
|
|
55853
55903
|
}, [id, normalizedMetadata]);
|
|
55854
55904
|
};
|
|
55855
55905
|
var useHotkeyRegistry = () => {
|
|
55856
|
-
const [entries, setEntries] =
|
|
55906
|
+
const [entries, setEntries] = useState39(
|
|
55857
55907
|
() => Array.from(hotkeyRegistry.values())
|
|
55858
55908
|
);
|
|
55859
55909
|
useEffect47(() => subscribeToRegistry(setEntries), []);
|
|
@@ -55870,7 +55920,7 @@ var KeyboardShortcutsDialog = ({
|
|
|
55870
55920
|
open,
|
|
55871
55921
|
onClose
|
|
55872
55922
|
}) => {
|
|
55873
|
-
const [query, setQuery] =
|
|
55923
|
+
const [query, setQuery] = useState40("");
|
|
55874
55924
|
const inputRef = useRef27(null);
|
|
55875
55925
|
const hotkeys = useHotkeyRegistry();
|
|
55876
55926
|
useEffect48(() => {
|
|
@@ -56113,10 +56163,10 @@ function useCameraPreset({
|
|
|
56113
56163
|
}
|
|
56114
56164
|
|
|
56115
56165
|
// src/hooks/useContextMenu.ts
|
|
56116
|
-
import { useState as
|
|
56166
|
+
import { useState as useState41, useCallback as useCallback22, useRef as useRef28, useEffect as useEffect49 } from "react";
|
|
56117
56167
|
var useContextMenu = ({ containerRef, onOpen }) => {
|
|
56118
|
-
const [menuVisible, setMenuVisible] =
|
|
56119
|
-
const [menuPos, setMenuPos] =
|
|
56168
|
+
const [menuVisible, setMenuVisible] = useState41(false);
|
|
56169
|
+
const [menuPos, setMenuPos] = useState41({
|
|
56120
56170
|
x: 0,
|
|
56121
56171
|
y: 0
|
|
56122
56172
|
});
|
|
@@ -56308,7 +56358,7 @@ var CadViewerInner = (props) => {
|
|
|
56308
56358
|
const circuitJson = props.circuitJson ?? childrenCircuitJson;
|
|
56309
56359
|
const hasBends = circuitJson.some((element) => element.type === "pcb_bend");
|
|
56310
56360
|
const hasFlexGeometry = hasBends || circuitJson.some((element) => element.type === "pcb_stiffener");
|
|
56311
|
-
const [foldPcbsOverride, setFoldPcbs] =
|
|
56361
|
+
const [foldPcbsOverride, setFoldPcbs] = useState42(
|
|
56312
56362
|
void 0
|
|
56313
56363
|
);
|
|
56314
56364
|
const foldPcbs = foldPcbsOverride ?? props.foldPcbs;
|
|
@@ -56321,30 +56371,30 @@ var CadViewerInner = (props) => {
|
|
|
56321
56371
|
children: void 0,
|
|
56322
56372
|
hiddenCadComponentIds
|
|
56323
56373
|
};
|
|
56324
|
-
const [engine, setEngine] =
|
|
56374
|
+
const [engine, setEngine] = useState42(() => {
|
|
56325
56375
|
const stored = window.localStorage.getItem("cadViewerEngine");
|
|
56326
56376
|
return stored === "jscad" || stored === "manifold" ? stored : "manifold";
|
|
56327
56377
|
});
|
|
56328
56378
|
const containerRef = useRef29(null);
|
|
56329
|
-
const [isKeyboardShortcutsDialogOpen, setIsKeyboardShortcutsDialogOpen] =
|
|
56330
|
-
const [autoRotate, setAutoRotate] =
|
|
56379
|
+
const [isKeyboardShortcutsDialogOpen, setIsKeyboardShortcutsDialogOpen] = useState42(false);
|
|
56380
|
+
const [autoRotate, setAutoRotate] = useState42(() => {
|
|
56331
56381
|
const stored = window.localStorage.getItem("cadViewerAutoRotate");
|
|
56332
56382
|
return stored !== "false";
|
|
56333
56383
|
});
|
|
56334
|
-
const [autoRotateUserToggled, setAutoRotateUserToggled] =
|
|
56384
|
+
const [autoRotateUserToggled, setAutoRotateUserToggled] = useState42(() => {
|
|
56335
56385
|
const stored = window.localStorage.getItem("cadViewerAutoRotateUserToggled");
|
|
56336
56386
|
return stored === "true";
|
|
56337
56387
|
});
|
|
56338
|
-
const [cameraPreset, setCameraPreset] =
|
|
56339
|
-
const [referenceObject, setReferenceObject] =
|
|
56388
|
+
const [cameraPreset, setCameraPreset] = useState42("Custom");
|
|
56389
|
+
const [referenceObject, setReferenceObject] = useState42(null);
|
|
56340
56390
|
const { cameraType } = useCameraController();
|
|
56341
56391
|
const { visibility, setLayerVisibility } = useLayerVisibility();
|
|
56342
56392
|
const { showToast } = useToast();
|
|
56343
56393
|
const cameraControllerRef = useRef29(null);
|
|
56344
56394
|
const externalCameraControllerReady = props.onCameraControllerReady;
|
|
56345
56395
|
const sceneRef = useContext10(SchematicNavigationContext);
|
|
56346
|
-
const [selectedComponent, setSelectedComponent] =
|
|
56347
|
-
const [selectedCadComponent, setSelectedCadComponent] =
|
|
56396
|
+
const [selectedComponent, setSelectedComponent] = useState42();
|
|
56397
|
+
const [selectedCadComponent, setSelectedCadComponent] = useState42();
|
|
56348
56398
|
const handleMenuOpen = useCallback24(
|
|
56349
56399
|
(position) => {
|
|
56350
56400
|
setSelectedCadComponent(
|
|
@@ -56906,7 +56956,7 @@ async function convertCircuitJsonTo3dSvg(circuitJson, options = {}) {
|
|
|
56906
56956
|
|
|
56907
56957
|
// src/hooks/exporter/gltf.ts
|
|
56908
56958
|
import { GLTFExporter as GLTFExporter3 } from "three-stdlib";
|
|
56909
|
-
import { useEffect as useEffect51, useState as
|
|
56959
|
+
import { useEffect as useEffect51, useState as useState43, useMemo as useMemo34, useCallback as useCallback25 } from "react";
|
|
56910
56960
|
function useSaveGltfAs(options = {}) {
|
|
56911
56961
|
const parse2 = useParser(options);
|
|
56912
56962
|
const link = useMemo34(() => document.createElement("a"), []);
|
|
@@ -56934,8 +56984,8 @@ function useSaveGltfAs(options = {}) {
|
|
|
56934
56984
|
}
|
|
56935
56985
|
function useExportGltfUrl(options = {}) {
|
|
56936
56986
|
const parse2 = useParser(options);
|
|
56937
|
-
const [url, setUrl] =
|
|
56938
|
-
const [error, setError] =
|
|
56987
|
+
const [url, setUrl] = useState43();
|
|
56988
|
+
const [error, setError] = useState43();
|
|
56939
56989
|
const ref = useCallback25(
|
|
56940
56990
|
(instance) => parse2(instance).then(setUrl).catch(setError),
|
|
56941
56991
|
[]
|