@toolpath/viewer 2.3.1 → 2.3.3
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/README.md +781 -1171
- package/dist/{chunk-N54FHMTG.js → chunk-M2B3CQPQ.js} +40 -2
- package/dist/engine/index.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/engine/engine-part.tsx
|
|
2
|
-
import { useEffect as useEffect8
|
|
2
|
+
import { useEffect as useEffect8 } from "react";
|
|
3
3
|
|
|
4
4
|
// src/part-mesh.tsx
|
|
5
5
|
import { useThree as useThree8 } from "@react-three/fiber";
|
|
@@ -4183,6 +4183,8 @@ function createEngineGeometryCache(loadGeometry = async (part) => {
|
|
|
4183
4183
|
return geometry;
|
|
4184
4184
|
}, maximumEntries = 8) {
|
|
4185
4185
|
const resources = /* @__PURE__ */ new Map();
|
|
4186
|
+
const requests = /* @__PURE__ */ new WeakMap();
|
|
4187
|
+
let failures = /* @__PURE__ */ new WeakMap();
|
|
4186
4188
|
let accessSequence = 0;
|
|
4187
4189
|
const touch = (resource) => {
|
|
4188
4190
|
resource.lastAccess = ++accessSequence;
|
|
@@ -4202,11 +4204,31 @@ function createEngineGeometryCache(loadGeometry = async (part) => {
|
|
|
4202
4204
|
oldest[1].geometry?.dispose();
|
|
4203
4205
|
}
|
|
4204
4206
|
};
|
|
4207
|
+
const rememberFailure = (part, requestKey, resource) => {
|
|
4208
|
+
const attempts = failures;
|
|
4209
|
+
void resource.promise.then(() => {
|
|
4210
|
+
if (resource.status === "rejected" && requests.get(resource) === requestKey) {
|
|
4211
|
+
attempts.set(part, resource);
|
|
4212
|
+
}
|
|
4213
|
+
});
|
|
4214
|
+
};
|
|
4205
4215
|
return {
|
|
4206
4216
|
get(part) {
|
|
4207
4217
|
const key = engineGeometryResourceKey(part.mesh);
|
|
4208
4218
|
const existing = resources.get(key);
|
|
4219
|
+
if (existing?.status === "fulfilled") {
|
|
4220
|
+
failures.delete(part);
|
|
4221
|
+
touch(existing);
|
|
4222
|
+
return existing;
|
|
4223
|
+
}
|
|
4224
|
+
const requestKey = JSON.stringify([part.mesh.glbUrl, part.mesh.stlUrl]);
|
|
4225
|
+
const failed = failures.get(part);
|
|
4226
|
+
if (failed && requests.get(failed) === requestKey) {
|
|
4227
|
+
touch(failed);
|
|
4228
|
+
return failed;
|
|
4229
|
+
}
|
|
4209
4230
|
if (existing) {
|
|
4231
|
+
rememberFailure(part, requestKey, existing);
|
|
4210
4232
|
touch(existing);
|
|
4211
4233
|
return existing;
|
|
4212
4234
|
}
|
|
@@ -4216,6 +4238,7 @@ function createEngineGeometryCache(loadGeometry = async (part) => {
|
|
|
4216
4238
|
references: 0,
|
|
4217
4239
|
lastAccess: ++accessSequence
|
|
4218
4240
|
};
|
|
4241
|
+
requests.set(resource, requestKey);
|
|
4219
4242
|
resource.promise = loadGeometry(part).then(
|
|
4220
4243
|
(geometry) => {
|
|
4221
4244
|
resource.status = "fulfilled";
|
|
@@ -4228,6 +4251,7 @@ function createEngineGeometryCache(loadGeometry = async (part) => {
|
|
|
4228
4251
|
}
|
|
4229
4252
|
);
|
|
4230
4253
|
resources.set(key, resource);
|
|
4254
|
+
rememberFailure(part, requestKey, resource);
|
|
4231
4255
|
return resource;
|
|
4232
4256
|
},
|
|
4233
4257
|
retain(resource) {
|
|
@@ -4242,6 +4266,7 @@ function createEngineGeometryCache(loadGeometry = async (part) => {
|
|
|
4242
4266
|
clear() {
|
|
4243
4267
|
for (const resource of resources.values()) resource.geometry?.dispose();
|
|
4244
4268
|
resources.clear();
|
|
4269
|
+
failures = /* @__PURE__ */ new WeakMap();
|
|
4245
4270
|
}
|
|
4246
4271
|
};
|
|
4247
4272
|
}
|
|
@@ -4594,8 +4619,21 @@ function compareVersions(a, b) {
|
|
|
4594
4619
|
|
|
4595
4620
|
// src/engine/engine-part.tsx
|
|
4596
4621
|
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
4622
|
+
var models = /* @__PURE__ */ new WeakMap();
|
|
4623
|
+
var modelForReport = (report) => {
|
|
4624
|
+
if (typeof report !== "object" || report === null) {
|
|
4625
|
+
return normalizePartReport(report);
|
|
4626
|
+
}
|
|
4627
|
+
const existing = models.get(report);
|
|
4628
|
+
if (existing) {
|
|
4629
|
+
return existing;
|
|
4630
|
+
}
|
|
4631
|
+
const model = normalizePartReport(report);
|
|
4632
|
+
models.set(report, model);
|
|
4633
|
+
return model;
|
|
4634
|
+
};
|
|
4597
4635
|
var EnginePart = ({ report, ...props }) => {
|
|
4598
|
-
const model =
|
|
4636
|
+
const model = modelForReport(report);
|
|
4599
4637
|
const resource = useGeometryResource(model);
|
|
4600
4638
|
useEffect8(() => {
|
|
4601
4639
|
engineGeometryCache.retain(resource);
|
package/dist/engine/index.js
CHANGED
package/dist/index.js
CHANGED