@tscircuit/3d-viewer 0.0.355 → 0.0.356
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 +25 -22
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -25583,7 +25583,7 @@ import * as THREE10 from "three";
|
|
|
25583
25583
|
// package.json
|
|
25584
25584
|
var package_default = {
|
|
25585
25585
|
name: "@tscircuit/3d-viewer",
|
|
25586
|
-
version: "0.0.
|
|
25586
|
+
version: "0.0.355",
|
|
25587
25587
|
main: "./dist/index.js",
|
|
25588
25588
|
module: "./dist/index.js",
|
|
25589
25589
|
type: "module",
|
|
@@ -26299,16 +26299,6 @@ var useConvertChildrenToSoup = (children) => {
|
|
|
26299
26299
|
// src/hooks/use-stls-from-geom.ts
|
|
26300
26300
|
import { useState as useState7, useEffect as useEffect15 } from "react";
|
|
26301
26301
|
import stlSerializer from "@jscad/stl-serializer";
|
|
26302
|
-
function blobToBase64Url(blob) {
|
|
26303
|
-
return new Promise((resolve, reject) => {
|
|
26304
|
-
const reader = new FileReader();
|
|
26305
|
-
reader.onload = () => {
|
|
26306
|
-
resolve(reader.result);
|
|
26307
|
-
};
|
|
26308
|
-
reader.onerror = reject;
|
|
26309
|
-
reader.readAsDataURL(blob);
|
|
26310
|
-
});
|
|
26311
|
-
}
|
|
26312
26302
|
var useStlsFromGeom = (geom) => {
|
|
26313
26303
|
const [stls, setStls] = useState7([]);
|
|
26314
26304
|
const [loading, setLoading] = useState7(true);
|
|
@@ -26318,10 +26308,10 @@ var useStlsFromGeom = (geom) => {
|
|
|
26318
26308
|
setLoading(true);
|
|
26319
26309
|
const geometries2 = Array.isArray(geom) ? geom : [geom];
|
|
26320
26310
|
const stlPromises = geometries2.map(async (g) => {
|
|
26321
|
-
const
|
|
26322
|
-
const
|
|
26323
|
-
const
|
|
26324
|
-
return {
|
|
26311
|
+
const rawParts = stlSerializer.serialize({ binary: true }, [g]);
|
|
26312
|
+
const blob = new Blob(rawParts);
|
|
26313
|
+
const stlData = await blob.arrayBuffer();
|
|
26314
|
+
return { stlData, color: g.color };
|
|
26325
26315
|
});
|
|
26326
26316
|
try {
|
|
26327
26317
|
const generatedStls = await Promise.all(stlPromises);
|
|
@@ -27621,6 +27611,7 @@ import * as THREE12 from "three";
|
|
|
27621
27611
|
import { STLLoader } from "three-stdlib";
|
|
27622
27612
|
function STLModel({
|
|
27623
27613
|
stlUrl,
|
|
27614
|
+
stlData,
|
|
27624
27615
|
mtlUrl,
|
|
27625
27616
|
color,
|
|
27626
27617
|
opacity = 1
|
|
@@ -27629,10 +27620,22 @@ function STLModel({
|
|
|
27629
27620
|
const [geom, setGeom] = useState10(null);
|
|
27630
27621
|
useEffect18(() => {
|
|
27631
27622
|
const loader = new STLLoader();
|
|
27632
|
-
|
|
27633
|
-
|
|
27634
|
-
|
|
27635
|
-
|
|
27623
|
+
if (stlData) {
|
|
27624
|
+
try {
|
|
27625
|
+
const geometry = loader.parse(stlData);
|
|
27626
|
+
setGeom(geometry);
|
|
27627
|
+
} catch (e) {
|
|
27628
|
+
console.error("Failed to parse STL data", e);
|
|
27629
|
+
setGeom(null);
|
|
27630
|
+
}
|
|
27631
|
+
return;
|
|
27632
|
+
}
|
|
27633
|
+
if (stlUrl) {
|
|
27634
|
+
loader.load(stlUrl, (geometry) => {
|
|
27635
|
+
setGeom(geometry);
|
|
27636
|
+
});
|
|
27637
|
+
}
|
|
27638
|
+
}, [stlUrl, stlData]);
|
|
27636
27639
|
const mesh = useMemo15(() => {
|
|
27637
27640
|
if (!geom) return null;
|
|
27638
27641
|
const material = new THREE12.MeshStandardMaterial({
|
|
@@ -27735,14 +27738,14 @@ var CadViewerJscad = forwardRef3(
|
|
|
27735
27738
|
boardDimensions,
|
|
27736
27739
|
onUserInteraction,
|
|
27737
27740
|
children: [
|
|
27738
|
-
boardStls.map(({
|
|
27741
|
+
boardStls.map(({ stlData, color }, index) => /* @__PURE__ */ jsx12(
|
|
27739
27742
|
STLModel,
|
|
27740
27743
|
{
|
|
27741
|
-
|
|
27744
|
+
stlData,
|
|
27742
27745
|
color,
|
|
27743
27746
|
opacity: index === 0 ? 0.95 : 1
|
|
27744
27747
|
},
|
|
27745
|
-
|
|
27748
|
+
`board-${index - boardStls.length}`
|
|
27746
27749
|
)),
|
|
27747
27750
|
cad_components.map((cad_component2) => /* @__PURE__ */ jsx12(
|
|
27748
27751
|
ThreeErrorBoundary,
|