forgecad 0.9.13 → 0.9.14
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/assets/{AdminPage-DramHHDf.js → AdminPage-eWGs2K6H.js} +1 -1
- package/dist/assets/{BenchmarkPage-Bjgkh5m9.js → BenchmarkPage-CTrLKfpo.js} +1 -1
- package/dist/assets/{BlogPage-n_HGP3Qm.js → BlogPage-5nPesyds.js} +1 -1
- package/dist/assets/{DocsPage-WCIkPmzC.js → DocsPage-C4Y3nbYc.js} +1 -1
- package/dist/assets/{EditorApp-CP9Za6tm.js → EditorApp-lXv53A1m.js} +9 -29
- package/dist/assets/{EmbedViewer-DEZKqdfW.js → EmbedViewer-C8fB4n5U.js} +2 -2
- package/dist/assets/{LandingPageProofDriven-CeRIctuj.js → LandingPageProofDriven-jSz0LaMM.js} +1 -1
- package/dist/assets/{PricingPage-rIRa8p4Y.js → PricingPage-B83B90zh.js} +1 -1
- package/dist/assets/{SettingsPage-BqCUvEXM.js → SettingsPage-DY889pcu.js} +1 -1
- package/dist/assets/{app-BUZqJvSO.js → app-bEww1ic4.js} +26 -28
- package/dist/assets/cli/{render-lhGxj50Y.js → render-Cho2uKG_.js} +88 -25
- package/dist/assets/{constructionHistoryWorker-ipD1jcIv.js → constructionHistoryWorker-HYwzJY4m.js} +1 -1
- package/dist/assets/{evalWorker-CHXSe_-u.js → evalWorker-CjQwJSE-.js} +3 -3
- package/dist/assets/{forgecad_geometry-BVnIeXMG.js → forgecad_geometry-CH2nvuLA.js} +1 -1
- package/dist/assets/forgecad_geometry_bg-C5_E9Oa9.wasm +0 -0
- package/dist/assets/{manifold-D1LZIHqn.js → manifold-CG9Fokx-.js} +1 -1
- package/dist/assets/{manifold-BTkzxi9V.js → manifold-rmfAcdwF.js} +1 -1
- package/dist/assets/{manifold-C2fwoTgd.js → manifold-uRzgk5O8.js} +2 -2
- package/dist/assets/{reportWorker-Cq1qGmg0.js → reportWorker-4cW_ZpoS.js} +3 -3
- package/dist/assets/{scalar-sampling-budget-D9Qv_UlJ.js → scalar-sampling-budget-CfDiFvh7.js} +12 -18
- package/dist/assets/{solver-BZ9LPTHs.js → solver-DuJAO8S6.js} +1 -1
- package/dist/assets/solver_bg-CWvv4lnN.wasm +0 -0
- package/dist/assets/{renderSceneState-Dr0xPq1A.js → targets-D6PWsv6X.js} +27 -1
- package/dist/cli/render.html +1 -1
- package/dist/docs/index.html +2 -2
- package/dist/docs-raw/AI/usage.md +6 -5
- package/dist/docs-raw/CLI.md +41 -11
- package/dist/docs-raw/generated/concepts.md +3 -3
- package/dist/docs-raw/generated/viewport.md +3 -3
- package/dist/docs-raw/harbor-cli.md +854 -0
- package/dist/docs-raw/rl-environments.md +100 -258
- package/dist/docs-raw/skills/forgecad-3d-reconstruction.md +2 -2
- package/dist/docs-raw/skills/forgecad-make-a-model.md +3 -3
- package/dist/docs-raw/skills/forgecad-reconstruction-benchmark.md +3 -3
- package/dist/index.html +1 -1
- package/dist/sitemap.xml +7 -7
- package/dist-cli/{check-compiler-LOXCPEOI.js → check-compiler-U5SOPN7X.js} +2 -2
- package/dist-cli/{check-query-propagation-BAKNVWXR.js → check-query-propagation-XOKNSSYU.js} +2 -2
- package/dist-cli/{chunk-RY43WF46.js → chunk-EXWGNL6K.js} +342 -2
- package/dist-cli/{chunk-RY43WF46.js.map → chunk-EXWGNL6K.js.map} +1 -1
- package/dist-cli/forgecad.js +733 -352
- package/dist-cli/forgecad.js.map +1 -1
- package/dist-cli/forgecad_geometry_bg.wasm +0 -0
- package/dist-cli/solver_bg.wasm +0 -0
- package/dist-skill/CONTEXT.md +3 -3
- package/dist-skill/docs/CLI.md +41 -11
- package/dist-skill/docs/generated/viewport.md +3 -3
- package/dist-skill/docs-dev/CLI.md +41 -11
- package/dist-skill/docs-dev/generated/viewport.md +3 -3
- package/dist-skill/library/forgecad-3d-reconstruction/SKILL.md +2 -2
- package/dist-skill/library/forgecad-make-a-model/SKILL.md +3 -3
- package/dist-skill/library/forgecad-reconstruction-benchmark/SKILL.md +3 -3
- package/package.json +1 -6
- package/dist/assets/forgecad_geometry_bg-DufhhCBV.wasm +0 -0
- package/dist/assets/solver_bg-DAHZJ_rw.wasm +0 -0
- /package/dist-cli/{check-compiler-LOXCPEOI.js.map → check-compiler-U5SOPN7X.js.map} +0 -0
- /package/dist-cli/{check-query-propagation-BAKNVWXR.js.map → check-query-propagation-XOKNSSYU.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports } from "./vendor-react-Da3A2QmU.js";
|
|
2
|
-
import { cA as initKernel, cB as initSolverWasm } from "./scalar-sampling-budget-
|
|
3
|
-
import { g as useForgeStore, af as getExternalUrl, ag as getGistId, l as fetchUrlModel, k as fetchGistModel, al as buildShareUrl, B as BrandMark, ah as Viewport } from "./app-
|
|
2
|
+
import { cA as initKernel, cB as initSolverWasm } from "./scalar-sampling-budget-CfDiFvh7.js";
|
|
3
|
+
import { g as useForgeStore, af as getExternalUrl, ag as getGistId, l as fetchUrlModel, k as fetchGistModel, al as buildShareUrl, B as BrandMark, ah as Viewport } from "./app-bEww1ic4.js";
|
|
4
4
|
function EmbedViewer() {
|
|
5
5
|
const kernelReady = useForgeStore((s) => s.kernelReady);
|
|
6
6
|
const setKernelReady = useForgeStore((s) => s.setKernelReady);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { f as useNavigate, r as reactExports, j as jsxRuntimeExports, L as Link } from "./vendor-react-Da3A2QmU.js";
|
|
2
|
-
import { u as useAuthStore, b as authFetch, B as BrandMark } from "./app-
|
|
2
|
+
import { u as useAuthStore, b as authFetch, B as BrandMark } from "./app-bEww1ic4.js";
|
|
3
3
|
import { C as COMMERCIAL_USE_CASES } from "./copy-DQcpKfiX.js";
|
|
4
4
|
/* empty css */
|
|
5
5
|
function checkoutIntentPath(interval) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as reactExports, j as jsxRuntimeExports, L as Link } from "./vendor-react-Da3A2QmU.js";
|
|
2
|
-
import { u as useAuthStore, b as authFetch, s as storageUsagePercent, f as formatStorageBytes } from "./app-
|
|
2
|
+
import { u as useAuthStore, b as authFetch, s as storageUsagePercent, f as formatStorageBytes } from "./app-bEww1ic4.js";
|
|
3
3
|
import { C as COMMERCIAL_USE_CASES, P as PRO_STORAGE_UPGRADE_COPY } from "./copy-DQcpKfiX.js";
|
|
4
4
|
function timeAgo(dateStr) {
|
|
5
5
|
const ms = Date.now() - new Date(dateStr).getTime();
|
|
@@ -4,7 +4,7 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
|
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
5
|
var _a2;
|
|
6
6
|
import { c as create, j as jsxRuntimeExports, r as reactExports, a as createWithEqualityFn, R as React, T as Tb, s as schedulerExports, b as clientExports, d as reactDomExports, u as useParams, e as useSearchParams, f as useNavigate, L as Link, B as BrowserRouter, g as Routes, h as Route, N as Navigate } from "./vendor-react-Da3A2QmU.js";
|
|
7
|
-
import { _ as __vitePreload, z as zipSync, s as strToU8, W as WebGLRenderer, R as Raycaster, O as OrthographicCamera$1, P as PerspectiveCamera$1, S as Scene, a as PCFSoftShadowMap, V as VSMShadowMap, b as PCFShadowMap, B as BasicShadowMap, C as ColorManagement, L as LinearSRGBColorSpace, c as SRGBColorSpace, N as NoToneMapping, A as ACESFilmicToneMapping, d as Layers, e as Color, f as RGBAFormat, U as UnsignedByteType, g as Vector3, h as Vector2, i as Clock, T as THREE, D as DoubleSide, j as REVISION, M as Mesh, I as IcosahedronGeometry, k as ShaderMaterial, l as Spherical, Q as Quaternion, m as MOUSE, n as TOUCH, o as Ray, p as Plane, q as DataTextureLoader, H as HalfFloatType, F as FloatType, r as DataUtils, t as LinearFilter, u as RedFormat, v as InstancedBufferGeometry, w as Float32BufferAttribute, x as InstancedInterleavedBuffer, y as InterleavedBufferAttribute, E as WireframeGeometry, G as Box3, J as Sphere, K as UniformsUtils, X as UniformsLib, Y as Vector4, Z as Line3, $ as Matrix4, a0 as MathUtils, a1 as Uniform, a2 as WebGLRenderTarget, a3 as DepthTexture, a4 as BackSide, a5 as ClampToEdgeWrapping, a6 as PlaneGeometry, a7 as UVMapping, a8 as DataTexture, a9 as Texture, aa as MeshBasicMaterial, ab as IntType, ac as ShortType, ad as ByteType, ae as UnsignedIntType, af as Loader, ag as LoadingManager, ah as LinearMipMapLinearFilter, ai as FileLoader, aj as NoBlending, ak as CubeReflectionMapping, al as EquirectangularReflectionMapping, am as CubeTextureLoader, an as WebGLCubeRenderTarget, ao as ConstraintSketch, ap as setSketchPlacement3D, aq as Sketch, ar as PROFILE_BACKEND_MARKER, as as FrozenShape, at as setShapeCompilePlan, au as hasAnyPorts, av as setShapePortsInternal, aw as markShapePortsUsed, ax as setParamOverrides, ay as DEFAULT_ACTIVE_BACKEND, az as isConstraintSketch, aA as updateConstraintValue, aB as linearizeMultiObjectSteps, aC as getShapeCompilePlan, aD as resolveScanProxyGranularity, aE as SCAN_PROXY_GRANULARITY_DEFAULT, aF as resolveForgeRenderStyle, aG as publishSolverWasmRunDebug, aH as resolveForgeQualityPreset, aI as resolveImportPath, aJ as BufferGeometry, aK as LineBasicMaterial, aL as Line$1, aM as LineDashedMaterial, aN as DepthStencilFormat, aO as UnsignedInt248Type, aP as MeshNormalMaterial, aQ as NearestFilter, aR as BasicDepthPacking, aS as EventDispatcher$1, aT as NoColorSpace, aU as FrontSide, aV as Material, aW as AlwaysDepth, aX as BufferAttribute, aY as CanvasTexture, aZ as Object3D, a_ as FogExp2, a$ as Fog, b0 as AmbientLight, b1 as HemisphereLight, b2 as SpotLight, b3 as PointLight, b4 as DirectionalLight, b5 as heatPointsForSide, b6 as COMPARISON_COLORS, b7 as comparisonHeatDepthTest, b8 as comparisonHeatEdgeOpacity, b9 as comparisonHeatPatchOpacity, ba as shapeToGeometry, bb as buildComparisonHeatPatchGeometry, bc as EdgesGeometry, bd as buildShapeFromCompilePlan, be as buildVisibleHistoryStacks, bf as sketchToSvg, bg as sketchToDxf, bh as runScript, bi as MeshPhysicalMaterial, bj as LineSegments, bk as findDesignTraceNodeForConstructionStep, bl as formatDesignTraceAnchor, bm as waitForAnimationFrame, bn as selectBuildLedgerNodes, bo as worldAuthorPlaneToLocal, bp as scanProxySourceBytes, bq as disposeScanProxyGeometry, br as scanProxyGeometryFromPayload, bs as geometryWithVisibleVertexColors, bt as getRenderStylePreset, bu as SCAN_RENDER_COLORS, bv as AdditiveBlending, bw as NormalBlending, bx as ZEBRA_STRIPE_SOFTNESS, by as ZEBRA_STRIPE_SCALE, bz as ZEBRA_LIGHT_COLOR, bA as ZEBRA_DARK_COLOR, bB as ZEBRA_ACCENT_COLOR, bC as ZEBRA_STRIPE_FRAGMENT_SHADER, bD as ZEBRA_STRIPE_VERTEX_SHADER, bE as SCAN_PROXY_LAYER_STYLES, bF as SURFACE_FIELD_FRAGMENT_SHADER, bG as SURFACE_FIELD_VERTEX_SHADER, bH as WORLD_UP, bI as CatmullRomCurve3, bJ as TubeGeometry, bK as DEFAULT_ROUGHNESS_INSPECTION_OPTIONS, bL as ROUGHNESS_COLORS, bM as DEFAULT_THICKNESS_INSPECTION_OPTIONS, bN as THICKNESS_COLORS, bO as formatPerformanceCount, bP as PERFORMANCE_SAMPLE_INTERVAL_SEC, bQ as NON_TEXT_INPUT_TYPES, bR as MeshStandardMaterial, bS as compileSdfNode3, bT as buildSdfRaymarchFragmentShader, bU as SDF_RAYMARCH_PROXY_VERTEX_SHADER, bV as Shape, bW as ShapeGeometry, bX as ShaderLib, bY as CylinderGeometry, bZ as VIEWPORT_CAMERA_STORAGE_KEY, b_ as parseViewportCameraState, b$ as createResolvedExplodeConfig, c0 as explodeBoundsCenter, c1 as explodeMergeBounds, c2 as resolveExplodeDirective, c3 as computeExplodeMotion, c4 as getSketchWorldMatrix, c5 as explodeAdd, c6 as hasExplodeOverride, c7 as resolveExplodeLocalFanDirection, c8 as explodeMul, c9 as explodeLeafFanStage, ca as normalizeCutPlane, cb as toClippingPlane, cc as isObjectExcludedFromCutPlane, cd as findJointAnimationClip, ce as resolveJointAnimation, cf as resolveJointViewValues, cg as getShapePorts, ch as getShapeUsedPorts, ci as DEFAULT_VIEW_CONFIG, cj as SECTION_EXPLORER_PLANE_NAME, ck as ZERO_OFFSET, cl as scanProxyGridForBounds, cm as IDENTITY_MATRIX$2, cn as OBJECT_CONTEXT_MENU_MARGIN, co as OBJECT_CONTEXT_MENU_WIDTH, cp as OBJECT_CONTEXT_MENU_HEIGHT, cq as getKernelFaceNameForTriangle, cr as triangleSoupFromMeshes, cs as compareTriangleSoups, ct as buildGeometryComparisonPointCloud, cu as aabbOverlaps, cv as aabbOverlapVolume, cw as DEFAULT_COLLISION_INSPECTION_OPTIONS, cx as resolveScalarSceneSampleBudget, cy as FOCUS_MODE_DIM_OPACITY, cz as comparisonCandidateContextOpacity, cA as initKernel, cB as initSolverWasm } from "./scalar-sampling-budget-
|
|
7
|
+
import { _ as __vitePreload, z as zipSync, s as strToU8, W as WebGLRenderer, R as Raycaster, O as OrthographicCamera$1, P as PerspectiveCamera$1, S as Scene, a as PCFSoftShadowMap, V as VSMShadowMap, b as PCFShadowMap, B as BasicShadowMap, C as ColorManagement, L as LinearSRGBColorSpace, c as SRGBColorSpace, N as NoToneMapping, A as ACESFilmicToneMapping, d as Layers, e as Color, f as RGBAFormat, U as UnsignedByteType, g as Vector3, h as Vector2, i as Clock, T as THREE, D as DoubleSide, j as REVISION, M as Mesh, I as IcosahedronGeometry, k as ShaderMaterial, l as Spherical, Q as Quaternion, m as MOUSE, n as TOUCH, o as Ray, p as Plane, q as DataTextureLoader, H as HalfFloatType, F as FloatType, r as DataUtils, t as LinearFilter, u as RedFormat, v as InstancedBufferGeometry, w as Float32BufferAttribute, x as InstancedInterleavedBuffer, y as InterleavedBufferAttribute, E as WireframeGeometry, G as Box3, J as Sphere, K as UniformsUtils, X as UniformsLib, Y as Vector4, Z as Line3, $ as Matrix4, a0 as MathUtils, a1 as Uniform, a2 as WebGLRenderTarget, a3 as DepthTexture, a4 as BackSide, a5 as ClampToEdgeWrapping, a6 as PlaneGeometry, a7 as UVMapping, a8 as DataTexture, a9 as Texture, aa as MeshBasicMaterial, ab as IntType, ac as ShortType, ad as ByteType, ae as UnsignedIntType, af as Loader, ag as LoadingManager, ah as LinearMipMapLinearFilter, ai as FileLoader, aj as NoBlending, ak as CubeReflectionMapping, al as EquirectangularReflectionMapping, am as CubeTextureLoader, an as WebGLCubeRenderTarget, ao as ConstraintSketch, ap as setSketchPlacement3D, aq as Sketch, ar as PROFILE_BACKEND_MARKER, as as FrozenShape, at as setShapeCompilePlan, au as hasAnyPorts, av as setShapePortsInternal, aw as markShapePortsUsed, ax as setParamOverrides, ay as DEFAULT_ACTIVE_BACKEND, az as isConstraintSketch, aA as updateConstraintValue, aB as linearizeMultiObjectSteps, aC as getShapeCompilePlan, aD as resolveScanProxyGranularity, aE as SCAN_PROXY_GRANULARITY_DEFAULT, aF as resolveForgeRenderStyle, aG as publishSolverWasmRunDebug, aH as resolveForgeQualityPreset, aI as resolveImportPath, aJ as BufferGeometry, aK as LineBasicMaterial, aL as Line$1, aM as LineDashedMaterial, aN as DepthStencilFormat, aO as UnsignedInt248Type, aP as MeshNormalMaterial, aQ as NearestFilter, aR as BasicDepthPacking, aS as EventDispatcher$1, aT as NoColorSpace, aU as FrontSide, aV as Material, aW as AlwaysDepth, aX as BufferAttribute, aY as CanvasTexture, aZ as Object3D, a_ as FogExp2, a$ as Fog, b0 as AmbientLight, b1 as HemisphereLight, b2 as SpotLight, b3 as PointLight, b4 as DirectionalLight, b5 as heatPointsForSide, b6 as COMPARISON_COLORS, b7 as comparisonHeatDepthTest, b8 as comparisonHeatEdgeOpacity, b9 as comparisonHeatPatchOpacity, ba as shapeToGeometry, bb as buildComparisonHeatPatchGeometry, bc as EdgesGeometry, bd as buildShapeFromCompilePlan, be as buildVisibleHistoryStacks, bf as sketchToSvg, bg as sketchToDxf, bh as runScript, bi as MeshPhysicalMaterial, bj as LineSegments, bk as findDesignTraceNodeForConstructionStep, bl as formatDesignTraceAnchor, bm as waitForAnimationFrame, bn as selectBuildLedgerNodes, bo as worldAuthorPlaneToLocal, bp as scanProxySourceBytes, bq as disposeScanProxyGeometry, br as scanProxyGeometryFromPayload, bs as geometryWithVisibleVertexColors, bt as getRenderStylePreset, bu as SCAN_RENDER_COLORS, bv as AdditiveBlending, bw as NormalBlending, bx as ZEBRA_STRIPE_SOFTNESS, by as ZEBRA_STRIPE_SCALE, bz as ZEBRA_LIGHT_COLOR, bA as ZEBRA_DARK_COLOR, bB as ZEBRA_ACCENT_COLOR, bC as ZEBRA_STRIPE_FRAGMENT_SHADER, bD as ZEBRA_STRIPE_VERTEX_SHADER, bE as SCAN_PROXY_LAYER_STYLES, bF as SURFACE_FIELD_FRAGMENT_SHADER, bG as SURFACE_FIELD_VERTEX_SHADER, bH as WORLD_UP, bI as CatmullRomCurve3, bJ as TubeGeometry, bK as DEFAULT_ROUGHNESS_INSPECTION_OPTIONS, bL as ROUGHNESS_COLORS, bM as DEFAULT_THICKNESS_INSPECTION_OPTIONS, bN as THICKNESS_COLORS, bO as formatPerformanceCount, bP as PERFORMANCE_SAMPLE_INTERVAL_SEC, bQ as NON_TEXT_INPUT_TYPES, bR as MeshStandardMaterial, bS as compileSdfNode3, bT as buildSdfRaymarchFragmentShader, bU as SDF_RAYMARCH_PROXY_VERTEX_SHADER, bV as Shape, bW as ShapeGeometry, bX as ShaderLib, bY as CylinderGeometry, bZ as VIEWPORT_CAMERA_STORAGE_KEY, b_ as parseViewportCameraState, b$ as createResolvedExplodeConfig, c0 as explodeBoundsCenter, c1 as explodeMergeBounds, c2 as resolveExplodeDirective, c3 as computeExplodeMotion, c4 as getSketchWorldMatrix, c5 as explodeAdd, c6 as hasExplodeOverride, c7 as resolveExplodeLocalFanDirection, c8 as explodeMul, c9 as explodeLeafFanStage, ca as normalizeCutPlane, cb as toClippingPlane, cc as isObjectExcludedFromCutPlane, cd as findJointAnimationClip, ce as resolveJointAnimation, cf as resolveJointViewValues, cg as getShapePorts, ch as getShapeUsedPorts, ci as DEFAULT_VIEW_CONFIG, cj as SECTION_EXPLORER_PLANE_NAME, ck as ZERO_OFFSET, cl as scanProxyGridForBounds, cm as IDENTITY_MATRIX$2, cn as OBJECT_CONTEXT_MENU_MARGIN, co as OBJECT_CONTEXT_MENU_WIDTH, cp as OBJECT_CONTEXT_MENU_HEIGHT, cq as getKernelFaceNameForTriangle, cr as triangleSoupFromMeshes, cs as compareTriangleSoups, ct as buildGeometryComparisonPointCloud, cu as aabbOverlaps, cv as aabbOverlapVolume, cw as DEFAULT_COLLISION_INSPECTION_OPTIONS, cx as resolveScalarSceneSampleBudget, cy as FOCUS_MODE_DIM_OPACITY, cz as comparisonCandidateContextOpacity, cA as initKernel, cB as initSolverWasm } from "./scalar-sampling-budget-CfDiFvh7.js";
|
|
8
8
|
function getCsrfToken() {
|
|
9
9
|
const match = document.cookie.match(/(?:^|;\s*)fc-csrf-token=([^;]+)/);
|
|
10
10
|
return match == null ? void 0 : match[1];
|
|
@@ -15594,7 +15594,7 @@ const CRASH_COOLDOWN_MS = 2e3;
|
|
|
15594
15594
|
class EvalWorkerClient {
|
|
15595
15595
|
constructor(workerFactory = () => new Worker(new URL(
|
|
15596
15596
|
/* @vite-ignore */
|
|
15597
|
-
"/assets/evalWorker-
|
|
15597
|
+
"/assets/evalWorker-CjQwJSE-.js",
|
|
15598
15598
|
import.meta.url
|
|
15599
15599
|
), { type: "module" })) {
|
|
15600
15600
|
__publicField(this, "worker", null);
|
|
@@ -26852,7 +26852,7 @@ function ConstructionGhostOverlay({ matrix }) {
|
|
|
26852
26852
|
class ConstructionHistoryWorkerClient {
|
|
26853
26853
|
constructor(workerFactory = () => new Worker(new URL(
|
|
26854
26854
|
/* @vite-ignore */
|
|
26855
|
-
"/assets/constructionHistoryWorker-
|
|
26855
|
+
"/assets/constructionHistoryWorker-HYwzJY4m.js",
|
|
26856
26856
|
import.meta.url
|
|
26857
26857
|
), { type: "module" })) {
|
|
26858
26858
|
__publicField(this, "worker", null);
|
|
@@ -29236,7 +29236,7 @@ function generateReportInWorker(options) {
|
|
|
29236
29236
|
return new Promise((resolve2, reject) => {
|
|
29237
29237
|
const worker = new Worker(new URL(
|
|
29238
29238
|
/* @vite-ignore */
|
|
29239
|
-
"/assets/reportWorker-
|
|
29239
|
+
"/assets/reportWorker-4cW_ZpoS.js",
|
|
29240
29240
|
import.meta.url
|
|
29241
29241
|
), { type: "module" });
|
|
29242
29242
|
const cleanup = () => {
|
|
@@ -33287,14 +33287,12 @@ function ScanProxyLayer({
|
|
|
33287
33287
|
color: color2,
|
|
33288
33288
|
fillOpacity,
|
|
33289
33289
|
wireOpacity,
|
|
33290
|
-
fillOrder,
|
|
33291
|
-
wireOrder,
|
|
33292
33290
|
clippingPlanes,
|
|
33293
33291
|
additiveWire
|
|
33294
33292
|
}) {
|
|
33295
33293
|
if (!geometry) return null;
|
|
33296
33294
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
33297
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry, raycast: () => null,
|
|
33295
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry, raycast: () => null, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
33298
33296
|
"meshBasicMaterial",
|
|
33299
33297
|
{
|
|
33300
33298
|
color: color2,
|
|
@@ -33306,7 +33304,7 @@ function ScanProxyLayer({
|
|
|
33306
33304
|
clippingPlanes
|
|
33307
33305
|
}
|
|
33308
33306
|
) }),
|
|
33309
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry, raycast: () => null,
|
|
33307
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry, raycast: () => null, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
33310
33308
|
"meshBasicMaterial",
|
|
33311
33309
|
{
|
|
33312
33310
|
color: color2,
|
|
@@ -33491,7 +33489,7 @@ function ForgeObject({
|
|
|
33491
33489
|
onDoubleClick,
|
|
33492
33490
|
onContextMenu,
|
|
33493
33491
|
children: [
|
|
33494
|
-
showFloatingContext && /* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, userData: { forgeMesh: true },
|
|
33492
|
+
showFloatingContext && /* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, userData: { forgeMesh: true }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
33495
33493
|
"meshBasicMaterial",
|
|
33496
33494
|
{
|
|
33497
33495
|
color: rgbToHex(FLOATING_CONTEXT_COLOR),
|
|
@@ -33526,7 +33524,7 @@ function ForgeObject({
|
|
|
33526
33524
|
}
|
|
33527
33525
|
) }),
|
|
33528
33526
|
showSolid && inspectChannel === "zebra" && /* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, userData: { forgeMesh: true }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(ZebraInspectionMaterial, { clippingPlanes: effectiveClippingPlanes }) }),
|
|
33529
|
-
showHiddenPickMesh && /* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, userData: { forgeMesh: true },
|
|
33527
|
+
showHiddenPickMesh && /* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, userData: { forgeMesh: true }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
33530
33528
|
"meshBasicMaterial",
|
|
33531
33529
|
{
|
|
33532
33530
|
color: SCAN_RENDER_COLORS.void,
|
|
@@ -33540,7 +33538,7 @@ function ForgeObject({
|
|
|
33540
33538
|
}
|
|
33541
33539
|
) }),
|
|
33542
33540
|
showScalarScanProxy && /* @__PURE__ */ jsxRuntimeExports.jsx(ScanProxyVolume, { proxy: scanProxy, clippingPlanes: effectiveClippingPlanes }),
|
|
33543
|
-
showSolid && showScalarContextMesh && !showScalarScanProxy && /* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, userData: { forgeMesh: true },
|
|
33541
|
+
showSolid && showScalarContextMesh && !showScalarScanProxy && /* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, userData: { forgeMesh: true }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
33544
33542
|
"meshBasicMaterial",
|
|
33545
33543
|
{
|
|
33546
33544
|
color: isScalarScan ? rgbToHex(SCAN_CONTEXT_COLOR) : "#26313a",
|
|
@@ -33553,7 +33551,7 @@ function ForgeObject({
|
|
|
33553
33551
|
clippingPlanes: effectiveClippingPlanes
|
|
33554
33552
|
}
|
|
33555
33553
|
) }),
|
|
33556
|
-
showSolid && isScalarScan && !showScalarScanProxy && edgesGeo && /* @__PURE__ */ jsxRuntimeExports.jsx("lineSegments", { geometry: edgesGeo, raycast: () => null,
|
|
33554
|
+
showSolid && isScalarScan && !showScalarScanProxy && edgesGeo && /* @__PURE__ */ jsxRuntimeExports.jsx("lineSegments", { geometry: edgesGeo, raycast: () => null, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
33557
33555
|
"lineBasicMaterial",
|
|
33558
33556
|
{
|
|
33559
33557
|
color: rgbToHex(SCAN_CONTEXT_EDGE_COLOR),
|
|
@@ -33564,7 +33562,7 @@ function ForgeObject({
|
|
|
33564
33562
|
clippingPlanes: effectiveClippingPlanes
|
|
33565
33563
|
}
|
|
33566
33564
|
) }),
|
|
33567
|
-
showSolid && showInspectHeatmap && inspectHeatmapField && /* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, userData: { forgeMesh: true },
|
|
33565
|
+
showSolid && showInspectHeatmap && inspectHeatmapField && /* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, userData: { forgeMesh: true }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
33568
33566
|
"shaderMaterial",
|
|
33569
33567
|
{
|
|
33570
33568
|
vertexShader: INSPECT_HEATMAP_VERTEX_SHADER,
|
|
@@ -33580,7 +33578,7 @@ function ForgeObject({
|
|
|
33580
33578
|
clippingPlanes: effectiveClippingPlanes
|
|
33581
33579
|
}
|
|
33582
33580
|
) }),
|
|
33583
|
-
showInspectPoints && inspectPointGeo && /* @__PURE__ */ jsxRuntimeExports.jsx("points", { geometry: inspectPointGeo, raycast: () => null,
|
|
33581
|
+
showInspectPoints && inspectPointGeo && /* @__PURE__ */ jsxRuntimeExports.jsx("points", { geometry: inspectPointGeo, raycast: () => null, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
33584
33582
|
"pointsMaterial",
|
|
33585
33583
|
{
|
|
33586
33584
|
size: isScalarScan ? 4 : 3,
|
|
@@ -33609,7 +33607,7 @@ function ForgeObject({
|
|
|
33609
33607
|
}
|
|
33610
33608
|
) }),
|
|
33611
33609
|
showSolid && inspectChannel === "comparison" && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
33612
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, userData: { forgeMesh: true },
|
|
33610
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, userData: { forgeMesh: true }, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
33613
33611
|
"meshBasicMaterial",
|
|
33614
33612
|
{
|
|
33615
33613
|
color: "#aeb8c2",
|
|
@@ -33621,10 +33619,10 @@ function ForgeObject({
|
|
|
33621
33619
|
clippingPlanes: effectiveClippingPlanes
|
|
33622
33620
|
}
|
|
33623
33621
|
) }),
|
|
33624
|
-
edgesGeo && /* @__PURE__ */ jsxRuntimeExports.jsx("lineSegments", { geometry: edgesGeo, raycast: () => null,
|
|
33622
|
+
edgesGeo && /* @__PURE__ */ jsxRuntimeExports.jsx("lineSegments", { geometry: edgesGeo, raycast: () => null, children: /* @__PURE__ */ jsxRuntimeExports.jsx("lineBasicMaterial", { color: "#d7e1eb", transparent: true, opacity: 0.36, depthWrite: false, clippingPlanes: effectiveClippingPlanes }) })
|
|
33625
33623
|
] }),
|
|
33626
33624
|
showScanRenderStyle && (scanProxy ? /* @__PURE__ */ jsxRuntimeExports.jsx(ScanProxyVolume, { proxy: scanProxy, clippingPlanes: effectiveClippingPlanes, objectColor: settings.color }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
33627
|
-
showScanFallbackMesh && /* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, raycast: () => null,
|
|
33625
|
+
showScanFallbackMesh && /* @__PURE__ */ jsxRuntimeExports.jsx("mesh", { geometry: solidGeo, raycast: () => null, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
33628
33626
|
"meshBasicMaterial",
|
|
33629
33627
|
{
|
|
33630
33628
|
color: settings.color,
|
|
@@ -33637,7 +33635,7 @@ function ForgeObject({
|
|
|
33637
33635
|
clippingPlanes: effectiveClippingPlanes
|
|
33638
33636
|
}
|
|
33639
33637
|
) }),
|
|
33640
|
-
edgesGeo && /* @__PURE__ */ jsxRuntimeExports.jsx("lineSegments", { geometry: edgesGeo, raycast: () => null,
|
|
33638
|
+
edgesGeo && /* @__PURE__ */ jsxRuntimeExports.jsx("lineSegments", { geometry: edgesGeo, raycast: () => null, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
33641
33639
|
"lineBasicMaterial",
|
|
33642
33640
|
{
|
|
33643
33641
|
color: settings.color,
|
|
@@ -43470,7 +43468,7 @@ function Viewport() {
|
|
|
43470
43468
|
}
|
|
43471
43469
|
);
|
|
43472
43470
|
}
|
|
43473
|
-
const EditorApp$1 = reactExports.lazy(() => __vitePreload(() => import("./EditorApp-
|
|
43471
|
+
const EditorApp$1 = reactExports.lazy(() => __vitePreload(() => import("./EditorApp-lXv53A1m.js"), true ? __vite__mapDeps([0]) : void 0).then((m2) => ({ default: m2.EditorApp })));
|
|
43474
43472
|
const PENDING_SHARE_COPY_KEY = "fc-pending-share-copy";
|
|
43475
43473
|
function storePendingShareCopy(shareId) {
|
|
43476
43474
|
sessionStorage.setItem(PENDING_SHARE_COPY_KEY, shareId);
|
|
@@ -43657,16 +43655,16 @@ const PublishedModelPage$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Objec
|
|
|
43657
43655
|
consumePendingShareCopy,
|
|
43658
43656
|
storePendingShareCopy
|
|
43659
43657
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
43660
|
-
reactExports.lazy(() => __vitePreload(() => import("./LandingPageProofDriven-
|
|
43661
|
-
const DocsPage = reactExports.lazy(() => __vitePreload(() => import("./DocsPage-
|
|
43662
|
-
reactExports.lazy(() => __vitePreload(() => import("./BlogPage-
|
|
43663
|
-
reactExports.lazy(() => __vitePreload(() => import("./BenchmarkPage-
|
|
43664
|
-
reactExports.lazy(() => __vitePreload(() => import("./AdminPage-
|
|
43658
|
+
reactExports.lazy(() => __vitePreload(() => import("./LandingPageProofDriven-jSz0LaMM.js"), true ? __vite__mapDeps([1]) : void 0).then((m2) => ({ default: m2.LandingPageProofDriven })));
|
|
43659
|
+
const DocsPage = reactExports.lazy(() => __vitePreload(() => import("./DocsPage-C4Y3nbYc.js"), true ? [] : void 0).then((m2) => ({ default: m2.DocsPage })));
|
|
43660
|
+
reactExports.lazy(() => __vitePreload(() => import("./BlogPage-5nPesyds.js"), true ? [] : void 0).then((m2) => ({ default: m2.BlogPage })));
|
|
43661
|
+
reactExports.lazy(() => __vitePreload(() => import("./BenchmarkPage-CTrLKfpo.js"), true ? __vite__mapDeps([2,1]) : void 0).then((m2) => ({ default: m2.BenchmarkPage })));
|
|
43662
|
+
reactExports.lazy(() => __vitePreload(() => import("./AdminPage-eWGs2K6H.js"), true ? [] : void 0).then((m2) => ({ default: m2.AdminPage })));
|
|
43665
43663
|
reactExports.lazy(() => __vitePreload(() => Promise.resolve().then(() => PublishedModelPage$1), true ? void 0 : void 0).then((m2) => ({ default: m2.PublishedModelPage })));
|
|
43666
|
-
reactExports.lazy(() => __vitePreload(() => import("./SettingsPage-
|
|
43667
|
-
reactExports.lazy(() => __vitePreload(() => import("./PricingPage-
|
|
43668
|
-
const EditorApp = reactExports.lazy(() => __vitePreload(() => import("./EditorApp-
|
|
43669
|
-
const EmbedViewer = reactExports.lazy(() => __vitePreload(() => import("./EmbedViewer-
|
|
43664
|
+
reactExports.lazy(() => __vitePreload(() => import("./SettingsPage-DY889pcu.js"), true ? [] : void 0).then((m2) => ({ default: m2.SettingsPage })));
|
|
43665
|
+
reactExports.lazy(() => __vitePreload(() => import("./PricingPage-B83B90zh.js"), true ? __vite__mapDeps([3,1]) : void 0).then((m2) => ({ default: m2.PricingPage })));
|
|
43666
|
+
const EditorApp = reactExports.lazy(() => __vitePreload(() => import("./EditorApp-lXv53A1m.js"), true ? __vite__mapDeps([0]) : void 0).then((m2) => ({ default: m2.EditorApp })));
|
|
43667
|
+
const EmbedViewer = reactExports.lazy(() => __vitePreload(() => import("./EmbedViewer-C8fB4n5U.js"), true ? [] : void 0).then((m2) => ({ default: m2.EmbedViewer })));
|
|
43670
43668
|
const embedMode = isEmbedMode() && !window.location.pathname.startsWith("/m/");
|
|
43671
43669
|
const EDITABLE_CRASH_FILE = /\.(?:forge\.js|[cm]?[jt]sx?|json|md|txt|svg|dxf)$/i;
|
|
43672
43670
|
function firstMeaningfulLine(text) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import { D as DoubleSide, cB as initSolverWasm, cA as initKernel, S as Scene, cC as BoxGeometry, bR as MeshStandardMaterial, a4 as BackSide, b3 as PointLight, M as Mesh, aa as MeshBasicMaterial, cD as localAabbPlaneRelation, h as Vector2, cE as ShapeUtils, cF as analyzePhysicalConnectivity, $ as Matrix4, cG as Frustum, G as Box3,
|
|
5
|
-
import { m as mergeViewportRenderSceneStates, p as parseRenderSceneCliSpec } from "../
|
|
4
|
+
import { D as DoubleSide, cB as initSolverWasm, cA as initKernel, S as Scene, cC as BoxGeometry, bR as MeshStandardMaterial, a4 as BackSide, b3 as PointLight, M as Mesh, aa as MeshBasicMaterial, cD as localAabbPlaneRelation, h as Vector2, cE as ShapeUtils, cF as analyzePhysicalConnectivity, g as Vector3, $ as Matrix4, cG as Frustum, G as Box3, a0 as MathUtils, cH as meshContactDataFor, cI as AabbSpatialIndex, cJ as detectPhysicalContact, cK as resolveThicknessInspectionOptions, R as Raycaster, cL as thicknessColor, cM as thicknessClass, aX as BufferAttribute, cN as roughnessClassForAngle, cO as resolveRoughnessInspectionOptions, cP as roughnessColorForAngle, cQ as roughnessScoreForAngle, cR as activateBackend, e as Color, b6 as COMPARISON_COLORS, aF as resolveForgeRenderStyle, bt as getRenderStylePreset, ax as setParamOverrides, bh as runScript, cl as scanProxyGridForBounds, cS as Group, ba as shapeToGeometry, bi as MeshPhysicalMaterial, bw as NormalBlending, cT as createScanProxyGeometry, bv as AdditiveBlending, aK as LineBasicMaterial, bj as LineSegments, aJ as BufferGeometry, P as PerspectiveCamera, bo as worldAuthorPlaneToLocal, cU as resolveSectionHatchMetrics, ct as buildGeometryComparisonPointCloud, cr as triangleSoupFromMeshes, O as OrthographicCamera, k as ShaderMaterial, bC as ZEBRA_STRIPE_FRAGMENT_SHADER, bD as ZEBRA_STRIPE_VERTEX_SHADER, bx as ZEBRA_STRIPE_SOFTNESS, by as ZEBRA_STRIPE_SCALE, bz as ZEBRA_LIGHT_COLOR, bA as ZEBRA_DARK_COLOR, bB as ZEBRA_ACCENT_COLOR, bs as geometryWithVisibleVertexColors, cV as intersectWithPlane, cW as setActiveBackend, W as WebGLRenderer, A as ACESFilmicToneMapping, c as SRGBColorSpace, cX as parseCameraCliSpec, cY as PMREMGenerator, aY as CanvasTexture, aZ as Object3D, a_ as FogExp2, a$ as Fog, b0 as AmbientLight, b4 as DirectionalLight, b1 as HemisphereLight, cd as findJointAnimationClip, p as Plane, bF as SURFACE_FIELD_FRAGMENT_SHADER, bG as SURFACE_FIELD_VERTEX_SHADER, bE as SCAN_PROXY_LAYER_STYLES, Y as Vector4, bU as SDF_RAYMARCH_PROXY_VERTEX_SHADER, bT as buildSdfRaymarchFragmentShader, ce as resolveJointAnimation, cf as resolveJointViewValues, bL as ROUGHNESS_COLORS, cZ as PointsMaterial, c_ as Points, b5 as heatPointsForSide, c$ as analyzeCollisionIntersections, d0 as serializeCollisionFinding, d1 as summarizeThicknessSamples, bN as THICKNESS_COLORS, b2 as SpotLight, cx as resolveScalarSceneSampleBudget, bb as buildComparisonHeatPatchGeometry, bc as EdgesGeometry, b7 as comparisonHeatDepthTest, b8 as comparisonHeatEdgeOpacity, b9 as comparisonHeatPatchOpacity, cz as comparisonCandidateContextOpacity, d2 as DEFAULT_COMPARISON_CANDIDATE_OPACITY } from "../scalar-sampling-budget-CfDiFvh7.js";
|
|
5
|
+
import { m as mergeViewportRenderSceneStates, p as parseRenderSceneCliSpec, g as getSceneObjectTreePath } from "../targets-D6PWsv6X.js";
|
|
6
6
|
const CAD_MATERIAL_PROPS = {
|
|
7
7
|
color: 6003669,
|
|
8
8
|
metalness: 0.05,
|
|
@@ -648,6 +648,8 @@ function analyzeDistanceInspection(entries, rawOptions = {}) {
|
|
|
648
648
|
warnings: [...connectivity.warnings]
|
|
649
649
|
};
|
|
650
650
|
}
|
|
651
|
+
const DEFAULT_PERSPECTIVE_FIT_MARGIN = 1.1;
|
|
652
|
+
const DEFAULT_MIN_CAMERA_DISTANCE = 1;
|
|
651
653
|
function bboxCorners$1(bbox) {
|
|
652
654
|
const [minX, minY, minZ] = bbox.min;
|
|
653
655
|
const [maxX, maxY, maxZ] = bbox.max;
|
|
@@ -662,9 +664,59 @@ function bboxCorners$1(bbox) {
|
|
|
662
664
|
new Vector3(maxX, maxY, maxZ)
|
|
663
665
|
];
|
|
664
666
|
}
|
|
667
|
+
function bboxCenter(bbox) {
|
|
668
|
+
return new Vector3((bbox.min[0] + bbox.max[0]) * 0.5, (bbox.min[1] + bbox.max[1]) * 0.5, (bbox.min[2] + bbox.max[2]) * 0.5);
|
|
669
|
+
}
|
|
670
|
+
function finitePositive(value, label) {
|
|
671
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
672
|
+
throw new Error(`${label} must be a positive finite number.`);
|
|
673
|
+
}
|
|
674
|
+
return value;
|
|
675
|
+
}
|
|
676
|
+
function cameraRightFor(backward, up) {
|
|
677
|
+
const normalizedUp = up.lengthSq() > 1e-8 ? up.clone().normalize() : new Vector3(0, 0, 1);
|
|
678
|
+
let right = new Vector3().crossVectors(normalizedUp, backward);
|
|
679
|
+
if (right.lengthSq() > 1e-8) return right.normalize();
|
|
680
|
+
const fallbackUp = Math.abs(backward.z) > 0.92 ? new Vector3(0, 1, 0) : new Vector3(0, 0, 1);
|
|
681
|
+
right = new Vector3().crossVectors(fallbackUp, backward);
|
|
682
|
+
if (right.lengthSq() > 1e-8) return right.normalize();
|
|
683
|
+
return new Vector3(1, 0, 0);
|
|
684
|
+
}
|
|
665
685
|
function objectBox(input) {
|
|
666
686
|
return new Box3(new Vector3(...input.bbox.min), new Vector3(...input.bbox.max));
|
|
667
687
|
}
|
|
688
|
+
function perspectiveCameraDistanceForBounds(bbox, directionFromTargetToCamera, options) {
|
|
689
|
+
const backward = new Vector3(...directionFromTargetToCamera);
|
|
690
|
+
if (backward.lengthSq() <= 1e-8) {
|
|
691
|
+
throw new Error("directionFromTargetToCamera must be a non-zero vector.");
|
|
692
|
+
}
|
|
693
|
+
backward.normalize();
|
|
694
|
+
const fovDeg = finitePositive(options.fovDeg, "fovDeg");
|
|
695
|
+
if (fovDeg >= 180) {
|
|
696
|
+
throw new Error("fovDeg must be less than 180 degrees.");
|
|
697
|
+
}
|
|
698
|
+
const aspect = finitePositive(options.aspect ?? 1, "aspect");
|
|
699
|
+
const margin = finitePositive(options.margin ?? DEFAULT_PERSPECTIVE_FIT_MARGIN, "margin");
|
|
700
|
+
const minDistance = finitePositive(options.minDistance ?? DEFAULT_MIN_CAMERA_DISTANCE, "minDistance");
|
|
701
|
+
const tanHalfVerticalFov = Math.tan(MathUtils.degToRad(fovDeg) * 0.5);
|
|
702
|
+
const tanHalfHorizontalFov = tanHalfVerticalFov * aspect;
|
|
703
|
+
const right = cameraRightFor(backward, new Vector3(...options.up ?? [0, 0, 1]));
|
|
704
|
+
const screenUp = new Vector3().crossVectors(backward, right).normalize();
|
|
705
|
+
const center = bboxCenter(bbox);
|
|
706
|
+
let requiredDistance = minDistance;
|
|
707
|
+
for (const corner of bboxCorners$1(bbox)) {
|
|
708
|
+
const offset = corner.sub(center);
|
|
709
|
+
const depthOffset = offset.dot(backward);
|
|
710
|
+
const horizontalOffset = Math.abs(offset.dot(right));
|
|
711
|
+
const verticalOffset = Math.abs(offset.dot(screenUp));
|
|
712
|
+
requiredDistance = Math.max(
|
|
713
|
+
requiredDistance,
|
|
714
|
+
horizontalOffset * margin / tanHalfHorizontalFov + depthOffset,
|
|
715
|
+
verticalOffset * margin / tanHalfVerticalFov + depthOffset
|
|
716
|
+
);
|
|
717
|
+
}
|
|
718
|
+
return requiredDistance;
|
|
719
|
+
}
|
|
668
720
|
function cameraFrustum(camera) {
|
|
669
721
|
camera.updateMatrixWorld(true);
|
|
670
722
|
if ("updateProjectionMatrix" in camera && typeof camera.updateProjectionMatrix === "function") {
|
|
@@ -2035,7 +2087,12 @@ function updateSdfRaymarchUniforms(session) {
|
|
|
2035
2087
|
}
|
|
2036
2088
|
function applyDirectionCamera(session, dir, distanceOverride) {
|
|
2037
2089
|
const d = normalizeCameraDirection(dir);
|
|
2038
|
-
const
|
|
2090
|
+
const fov = session.camera instanceof PerspectiveCamera ? session.camera.fov : 45;
|
|
2091
|
+
const dist = distanceOverride ?? perspectiveCameraDistanceForBounds(session.bbox, d, {
|
|
2092
|
+
fovDeg: fov,
|
|
2093
|
+
aspect: session.camera instanceof PerspectiveCamera ? session.camera.aspect : 1,
|
|
2094
|
+
up: [0, 0, 1]
|
|
2095
|
+
});
|
|
2039
2096
|
session.camera.position.set(session.center.x + d[0] * dist, session.center.y + d[1] * dist, session.center.z + d[2] * dist);
|
|
2040
2097
|
session.camera.up.set(0, 0, 1);
|
|
2041
2098
|
session.camera.lookAt(session.center);
|
|
@@ -2199,15 +2256,15 @@ function mergeBounds(a, b) {
|
|
|
2199
2256
|
function boundsCenter(bounds) {
|
|
2200
2257
|
return new Vector3((bounds.min[0] + bounds.max[0]) / 2, (bounds.min[1] + bounds.max[1]) / 2, (bounds.min[2] + bounds.max[2]) / 2);
|
|
2201
2258
|
}
|
|
2202
|
-
function boundsMaxDim(bounds) {
|
|
2203
|
-
return Math.max(1, bounds.max[0] - bounds.min[0], bounds.max[1] - bounds.min[1], bounds.max[2] - bounds.min[2]);
|
|
2204
|
-
}
|
|
2205
2259
|
function applyDirectionCameraToBounds(session, bounds, dir, distanceOverride) {
|
|
2206
2260
|
const d = normalizeCameraDirection(dir);
|
|
2207
2261
|
const center = boundsCenter(bounds);
|
|
2208
|
-
const maxDim = boundsMaxDim(bounds);
|
|
2209
2262
|
const fov = session.camera instanceof PerspectiveCamera ? session.camera.fov : 45;
|
|
2210
|
-
const dist = distanceOverride ??
|
|
2263
|
+
const dist = distanceOverride ?? perspectiveCameraDistanceForBounds(bounds, d, {
|
|
2264
|
+
fovDeg: fov,
|
|
2265
|
+
aspect: session.camera instanceof PerspectiveCamera ? session.camera.aspect : 1,
|
|
2266
|
+
up: [0, 0, 1]
|
|
2267
|
+
});
|
|
2211
2268
|
session.camera.position.set(center.x + d[0] * dist, center.y + d[1] * dist, center.z + d[2] * dist);
|
|
2212
2269
|
session.camera.up.set(0, 0, 1);
|
|
2213
2270
|
session.camera.lookAt(center);
|
|
@@ -3800,7 +3857,6 @@ function createScanProxyGroup(proxy, clippingPlanes, objectColor) {
|
|
|
3800
3857
|
clippingPlanes
|
|
3801
3858
|
})
|
|
3802
3859
|
);
|
|
3803
|
-
fill.renderOrder = layer.fillOrder;
|
|
3804
3860
|
fill.raycast = () => null;
|
|
3805
3861
|
group.add(fill);
|
|
3806
3862
|
const wire = new Mesh(
|
|
@@ -3813,7 +3869,6 @@ function createScanProxyGroup(proxy, clippingPlanes, objectColor) {
|
|
|
3813
3869
|
clippingPlanes
|
|
3814
3870
|
})
|
|
3815
3871
|
);
|
|
3816
|
-
wire.renderOrder = layer.wireOrder;
|
|
3817
3872
|
wire.raycast = () => null;
|
|
3818
3873
|
group.add(wire);
|
|
3819
3874
|
}
|
|
@@ -4583,29 +4638,37 @@ function destroyCaptureSession() {
|
|
|
4583
4638
|
function isFocusVisible(obj, focus, hide) {
|
|
4584
4639
|
if (focus === "no-mocks") return !obj.mock;
|
|
4585
4640
|
if (Array.isArray(focus)) {
|
|
4586
|
-
const
|
|
4641
|
+
const candidates = objectFocusCandidates(obj);
|
|
4587
4642
|
return focus.some((p) => {
|
|
4588
|
-
const pl = p
|
|
4643
|
+
const pl = normalizeFocusCandidate(p);
|
|
4589
4644
|
if (pl.includes("*") || pl.includes("?")) {
|
|
4590
4645
|
const regex = pl.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*").replace(/\?/g, ".");
|
|
4591
|
-
return new RegExp(`^${regex}$`).test(
|
|
4646
|
+
return candidates.some((candidate) => new RegExp(`^${regex}$`).test(candidate));
|
|
4592
4647
|
}
|
|
4593
|
-
return
|
|
4648
|
+
return candidates.includes(pl);
|
|
4594
4649
|
});
|
|
4595
4650
|
}
|
|
4596
4651
|
if (Array.isArray(hide)) {
|
|
4597
|
-
const
|
|
4652
|
+
const candidates = objectFocusCandidates(obj);
|
|
4598
4653
|
return !hide.some((p) => {
|
|
4599
|
-
const pl = p
|
|
4654
|
+
const pl = normalizeFocusCandidate(p);
|
|
4600
4655
|
if (pl.includes("*") || pl.includes("?")) {
|
|
4601
4656
|
const regex = pl.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*").replace(/\?/g, ".");
|
|
4602
|
-
return new RegExp(`^${regex}$`).test(
|
|
4657
|
+
return candidates.some((candidate) => new RegExp(`^${regex}$`).test(candidate));
|
|
4603
4658
|
}
|
|
4604
|
-
return
|
|
4659
|
+
return candidates.includes(pl);
|
|
4605
4660
|
});
|
|
4606
4661
|
}
|
|
4607
4662
|
return true;
|
|
4608
4663
|
}
|
|
4664
|
+
function normalizeFocusCandidate(value) {
|
|
4665
|
+
return value.trim().replace(/\\/g, "/").replace(/\s*\/\s*/g, "/").replace(/\s*\.\s*/g, ".").toLowerCase();
|
|
4666
|
+
}
|
|
4667
|
+
function objectFocusCandidates(obj) {
|
|
4668
|
+
const treePath = getSceneObjectTreePath(obj);
|
|
4669
|
+
const candidates = [obj.id, obj.name, treePath.join("/"), treePath.join("."), obj.groupName ?? ""];
|
|
4670
|
+
return candidates.map(normalizeFocusCandidate).filter(Boolean);
|
|
4671
|
+
}
|
|
4609
4672
|
function availableRenderableObjectNames(entries) {
|
|
4610
4673
|
return entries.map((entry) => entry.source.name).join(", ") || "(none)";
|
|
4611
4674
|
}
|
|
@@ -4779,7 +4842,9 @@ function createSession(code, opts) {
|
|
|
4779
4842
|
const surfaceFieldScale = maxDim / 5;
|
|
4780
4843
|
const scanProxyGrid = scanProxyGridForBounds(bb, opts == null ? void 0 : opts.scanGranularity);
|
|
4781
4844
|
const fov = 45;
|
|
4782
|
-
const distance =
|
|
4845
|
+
const distance = perspectiveCameraDistanceForBounds(bbox, [DEFAULT_FIXED_DIR.x, DEFAULT_FIXED_DIR.y, DEFAULT_FIXED_DIR.z], {
|
|
4846
|
+
fovDeg: fov
|
|
4847
|
+
});
|
|
4783
4848
|
const cameraFov = ((_c = requestedSceneState == null ? void 0 : requestedSceneState.camera) == null ? void 0 : _c.fov) ?? ((_d = sceneConfig == null ? void 0 : sceneConfig.camera) == null ? void 0 : _d.fov) ?? fov;
|
|
4784
4849
|
try {
|
|
4785
4850
|
if (opts == null ? void 0 : opts.cameraToken) {
|
|
@@ -4791,7 +4856,10 @@ function createSession(code, opts) {
|
|
|
4791
4856
|
}
|
|
4792
4857
|
const parsed = parseCameraToken(opts.cameraToken);
|
|
4793
4858
|
const dir = normalizeCameraDirection(parsed.dir);
|
|
4794
|
-
const tokenDistance = parsed.distance ??
|
|
4859
|
+
const tokenDistance = parsed.distance ?? perspectiveCameraDistanceForBounds(bbox, dir, {
|
|
4860
|
+
fovDeg: cameraFov,
|
|
4861
|
+
up: [0, 0, 1]
|
|
4862
|
+
});
|
|
4795
4863
|
requestedSceneState = mergeViewportRenderSceneStates(requestedSceneState, {
|
|
4796
4864
|
camera: {
|
|
4797
4865
|
projectionMode: "perspective",
|
|
@@ -4959,9 +5027,6 @@ function createSession(code, opts) {
|
|
|
4959
5027
|
});
|
|
4960
5028
|
}
|
|
4961
5029
|
}
|
|
4962
|
-
if (isScanRenderStyle) {
|
|
4963
|
-
solid.renderOrder = 2;
|
|
4964
|
-
}
|
|
4965
5030
|
if (isScanRenderStyle && !scanProxy) {
|
|
4966
5031
|
shell = new Mesh(
|
|
4967
5032
|
geo.solid,
|
|
@@ -4976,7 +5041,6 @@ function createSession(code, opts) {
|
|
|
4976
5041
|
})
|
|
4977
5042
|
);
|
|
4978
5043
|
shell.scale.setScalar(0.992);
|
|
4979
|
-
shell.renderOrder = 1;
|
|
4980
5044
|
shell.raycast = () => null;
|
|
4981
5045
|
} else if (hasAuthoredTransparency && renderStylePreset.glassShell.enabled) {
|
|
4982
5046
|
shell = new Mesh(
|
|
@@ -5004,7 +5068,6 @@ function createSession(code, opts) {
|
|
|
5004
5068
|
clippingPlanes: applicableCutPlanes
|
|
5005
5069
|
});
|
|
5006
5070
|
wire = new LineSegments(geo.edges, wireMaterial);
|
|
5007
|
-
if (isScanRenderStyle) wire.renderOrder = 3;
|
|
5008
5071
|
sectionMesh = sweep ? buildSectionMeshPayload(obj.source.id, obj.shape, debug, objectLabel) : null;
|
|
5009
5072
|
} else if (obj.sdf) {
|
|
5010
5073
|
const sdfStart = performance.now();
|
package/dist/assets/{constructionHistoryWorker-ipD1jcIv.js → constructionHistoryWorker-HYwzJY4m.js}
RENAMED
|
@@ -28541,7 +28541,7 @@ async function initTruckGeometryWasm() {
|
|
|
28541
28541
|
if (_initPromise) return _initPromise;
|
|
28542
28542
|
_initPromise = (async () => {
|
|
28543
28543
|
try {
|
|
28544
|
-
const geometryModule = await import("./forgecad_geometry-
|
|
28544
|
+
const geometryModule = await import("./forgecad_geometry-CH2nvuLA.js");
|
|
28545
28545
|
const isNode = isNodeRuntime();
|
|
28546
28546
|
if (isNode) {
|
|
28547
28547
|
const { readFileSync, existsSync } = await import("./__vite-browser-external-Dhvy_jtL.js");
|
|
@@ -11151,7 +11151,7 @@ let _wasm$1 = null;
|
|
|
11151
11151
|
async function initManifoldWasm() {
|
|
11152
11152
|
if (_wasm$1) return _wasm$1;
|
|
11153
11153
|
performance.mark("manifold:start");
|
|
11154
|
-
const Module = (await import("./manifold-
|
|
11154
|
+
const Module = (await import("./manifold-rmfAcdwF.js")).default;
|
|
11155
11155
|
performance.mark("manifold:imported");
|
|
11156
11156
|
const wasm = await Module();
|
|
11157
11157
|
wasm.setup();
|
|
@@ -23559,7 +23559,7 @@ async function initTruckGeometryWasm() {
|
|
|
23559
23559
|
if (_initPromise$1) return _initPromise$1;
|
|
23560
23560
|
_initPromise$1 = (async () => {
|
|
23561
23561
|
try {
|
|
23562
|
-
const geometryModule = await import("./forgecad_geometry-
|
|
23562
|
+
const geometryModule = await import("./forgecad_geometry-CH2nvuLA.js");
|
|
23563
23563
|
const isNode = isNodeRuntime();
|
|
23564
23564
|
if (isNode) {
|
|
23565
23565
|
const { readFileSync, existsSync } = await Promise.resolve().then(function() {
|
|
@@ -42240,7 +42240,7 @@ async function initSolverWasm() {
|
|
|
42240
42240
|
performance.mark("solver:start");
|
|
42241
42241
|
const solverModule = await import(
|
|
42242
42242
|
/* webpackChunkName: "solver-wasm" */
|
|
42243
|
-
"./solver-
|
|
42243
|
+
"./solver-DuJAO8S6.js"
|
|
42244
42244
|
);
|
|
42245
42245
|
performance.mark("solver:imported");
|
|
42246
42246
|
const isNode = typeof process !== "undefined" && ((_a3 = process.versions) == null ? void 0 : _a3.node);
|
|
@@ -717,7 +717,7 @@ async function __wbg_init(module_or_path) {
|
|
|
717
717
|
}
|
|
718
718
|
}
|
|
719
719
|
if (module_or_path === void 0) {
|
|
720
|
-
module_or_path = new URL("/assets/forgecad_geometry_bg-
|
|
720
|
+
module_or_path = new URL("/assets/forgecad_geometry_bg-C5_E9Oa9.wasm", import.meta.url);
|
|
721
721
|
}
|
|
722
722
|
const imports = __wbg_get_imports();
|
|
723
723
|
if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {
|
|
Binary file
|
|
@@ -12,7 +12,7 @@ var Module = (() => {
|
|
|
12
12
|
var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != "undefined";
|
|
13
13
|
var ENVIRONMENT_IS_NODE = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string" && process.type != "renderer";
|
|
14
14
|
if (ENVIRONMENT_IS_NODE) {
|
|
15
|
-
const { createRequire } = await import("./reportWorker-
|
|
15
|
+
const { createRequire } = await import("./reportWorker-4cW_ZpoS.js").then(function(n) {
|
|
16
16
|
return n._;
|
|
17
17
|
});
|
|
18
18
|
var require2 = createRequire(import.meta.url);
|
|
@@ -12,7 +12,7 @@ var Module = (() => {
|
|
|
12
12
|
var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != "undefined";
|
|
13
13
|
var ENVIRONMENT_IS_NODE = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string" && process.type != "renderer";
|
|
14
14
|
if (ENVIRONMENT_IS_NODE) {
|
|
15
|
-
const { createRequire } = await import("./evalWorker-
|
|
15
|
+
const { createRequire } = await import("./evalWorker-CjQwJSE-.js").then(function(n) {
|
|
16
16
|
return n._;
|
|
17
17
|
});
|
|
18
18
|
var require2 = createRequire(import.meta.url);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as __vitePreload } from "./scalar-sampling-budget-
|
|
1
|
+
import { _ as __vitePreload } from "./scalar-sampling-budget-CfDiFvh7.js";
|
|
2
2
|
var Module = (() => {
|
|
3
3
|
var _scriptName = import.meta.url;
|
|
4
4
|
return (async function(moduleArg = {}) {
|
|
@@ -14,7 +14,7 @@ var Module = (() => {
|
|
|
14
14
|
var ENVIRONMENT_IS_NODE = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string" && process.type != "renderer";
|
|
15
15
|
if (ENVIRONMENT_IS_NODE) {
|
|
16
16
|
const { createRequire } = await __vitePreload(async () => {
|
|
17
|
-
const { createRequire: createRequire2 } = await import("./scalar-sampling-budget-
|
|
17
|
+
const { createRequire: createRequire2 } = await import("./scalar-sampling-budget-CfDiFvh7.js").then((n) => n.db);
|
|
18
18
|
return { createRequire: createRequire2 };
|
|
19
19
|
}, true ? [] : void 0);
|
|
20
20
|
var require2 = createRequire(import.meta.url);
|
|
@@ -10655,7 +10655,7 @@ let _wasm$1 = null;
|
|
|
10655
10655
|
async function initManifoldWasm() {
|
|
10656
10656
|
if (_wasm$1) return _wasm$1;
|
|
10657
10657
|
performance.mark("manifold:start");
|
|
10658
|
-
const Module = (await import("./manifold-
|
|
10658
|
+
const Module = (await import("./manifold-CG9Fokx-.js")).default;
|
|
10659
10659
|
performance.mark("manifold:imported");
|
|
10660
10660
|
const wasm = await Module();
|
|
10661
10661
|
wasm.setup();
|
|
@@ -23053,7 +23053,7 @@ async function initTruckGeometryWasm() {
|
|
|
23053
23053
|
if (_initPromise$1) return _initPromise$1;
|
|
23054
23054
|
_initPromise$1 = (async () => {
|
|
23055
23055
|
try {
|
|
23056
|
-
const geometryModule = await import("./forgecad_geometry-
|
|
23056
|
+
const geometryModule = await import("./forgecad_geometry-CH2nvuLA.js");
|
|
23057
23057
|
const isNode = isNodeRuntime();
|
|
23058
23058
|
if (isNode) {
|
|
23059
23059
|
const { readFileSync, existsSync } = await Promise.resolve().then(function() {
|
|
@@ -41713,7 +41713,7 @@ async function initSolverWasm() {
|
|
|
41713
41713
|
performance.mark("solver:start");
|
|
41714
41714
|
const solverModule = await import(
|
|
41715
41715
|
/* webpackChunkName: "solver-wasm" */
|
|
41716
|
-
"./solver-
|
|
41716
|
+
"./solver-DuJAO8S6.js"
|
|
41717
41717
|
);
|
|
41718
41718
|
performance.mark("solver:imported");
|
|
41719
41719
|
const isNode = typeof process !== "undefined" && ((_a3 = process.versions) == null ? void 0 : _a3.node);
|