@files-preview-app/preview-file 1.3.17 → 1.3.19
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/angular.cjs +103 -21
- package/dist/angular.cjs.map +1 -1
- package/dist/angular.js +103 -21
- package/dist/angular.js.map +1 -1
- package/dist/index.cjs +103 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +103 -21
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +103 -21
- package/dist/react.cjs.map +1 -1
- package/dist/react.js +103 -21
- package/dist/react.js.map +1 -1
- package/dist/vue.cjs +103 -21
- package/dist/vue.cjs.map +1 -1
- package/dist/vue.js +103 -21
- package/dist/vue.js.map +1 -1
- package/package.json +1 -1
package/dist/react.cjs
CHANGED
|
@@ -6174,7 +6174,7 @@ var ThreeDPlugin = class {
|
|
|
6174
6174
|
{
|
|
6175
6175
|
id: "fit-page",
|
|
6176
6176
|
icon: "fit-page",
|
|
6177
|
-
label: "
|
|
6177
|
+
label: "Fit to Page",
|
|
6178
6178
|
type: "button",
|
|
6179
6179
|
group: "zoom",
|
|
6180
6180
|
execute: () => instance.fitToPage?.()
|
|
@@ -6187,6 +6187,14 @@ var ThreeDPlugin = class {
|
|
|
6187
6187
|
group: "zoom",
|
|
6188
6188
|
execute: () => instance.resetZoom?.()
|
|
6189
6189
|
},
|
|
6190
|
+
{
|
|
6191
|
+
id: "fit-width",
|
|
6192
|
+
icon: "fit-width",
|
|
6193
|
+
label: "Fit to Width",
|
|
6194
|
+
type: "button",
|
|
6195
|
+
group: "zoom",
|
|
6196
|
+
execute: () => instance.fitToWidth?.()
|
|
6197
|
+
},
|
|
6190
6198
|
{
|
|
6191
6199
|
id: "rotate-cw",
|
|
6192
6200
|
icon: "rotate-cw",
|
|
@@ -6218,21 +6226,49 @@ var ThreeDPlugin = class {
|
|
|
6218
6226
|
async render(ctx) {
|
|
6219
6227
|
const container = ctx.container;
|
|
6220
6228
|
container.innerHTML = "";
|
|
6221
|
-
container.style.overflow = "
|
|
6229
|
+
container.style.overflow = "auto";
|
|
6222
6230
|
container.style.position = "relative";
|
|
6223
6231
|
container.style.width = "100%";
|
|
6224
6232
|
container.style.height = "100%";
|
|
6233
|
+
container.style.padding = "0";
|
|
6225
6234
|
container.style.background = "#1a1a1a";
|
|
6226
|
-
|
|
6227
|
-
|
|
6235
|
+
let currentZoom = 1;
|
|
6236
|
+
let isUserZoomed = false;
|
|
6237
|
+
let baseW = Math.max(100, container.clientWidth || 800);
|
|
6238
|
+
let baseH = Math.max(100, container.clientHeight || 600);
|
|
6239
|
+
const updateBaseDimensions = () => {
|
|
6240
|
+
baseW = Math.max(100, container.clientWidth || 800);
|
|
6241
|
+
baseH = Math.max(100, container.clientHeight || 600);
|
|
6242
|
+
};
|
|
6243
|
+
const scrollWrapper = document.createElement("div");
|
|
6244
|
+
scrollWrapper.className = "fp-3d-scroll-wrapper";
|
|
6245
|
+
scrollWrapper.style.minWidth = "100%";
|
|
6246
|
+
scrollWrapper.style.minHeight = "100%";
|
|
6247
|
+
scrollWrapper.style.width = "max-content";
|
|
6248
|
+
scrollWrapper.style.height = "max-content";
|
|
6249
|
+
scrollWrapper.style.display = "flex";
|
|
6250
|
+
scrollWrapper.style.flexDirection = "column";
|
|
6251
|
+
scrollWrapper.style.alignItems = "center";
|
|
6252
|
+
scrollWrapper.style.justifyContent = "flex-start";
|
|
6253
|
+
scrollWrapper.style.boxSizing = "border-box";
|
|
6254
|
+
const sizer = document.createElement("div");
|
|
6255
|
+
sizer.className = "fp-3d-sizer";
|
|
6256
|
+
sizer.style.position = "relative";
|
|
6257
|
+
sizer.style.flexShrink = "0";
|
|
6258
|
+
sizer.style.display = "flex";
|
|
6259
|
+
sizer.style.justifyContent = "center";
|
|
6260
|
+
sizer.style.alignItems = "center";
|
|
6261
|
+
sizer.style.margin = "auto 0";
|
|
6228
6262
|
const scene = new THREE__namespace.Scene();
|
|
6229
6263
|
scene.background = new THREE__namespace.Color(1973796);
|
|
6230
|
-
const camera = new THREE__namespace.PerspectiveCamera(45,
|
|
6264
|
+
const camera = new THREE__namespace.PerspectiveCamera(45, baseW / baseH, 0.1, 2e3);
|
|
6231
6265
|
const renderer = new THREE__namespace.WebGLRenderer({ antialias: true });
|
|
6232
|
-
renderer.setSize(
|
|
6233
|
-
renderer.setPixelRatio(window.devicePixelRatio);
|
|
6266
|
+
renderer.setSize(baseW, baseH);
|
|
6267
|
+
renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2));
|
|
6234
6268
|
renderer.shadowMap.enabled = true;
|
|
6235
|
-
|
|
6269
|
+
sizer.appendChild(renderer.domElement);
|
|
6270
|
+
scrollWrapper.appendChild(sizer);
|
|
6271
|
+
container.appendChild(scrollWrapper);
|
|
6236
6272
|
const controls = new OrbitControls_js.OrbitControls(camera, renderer.domElement);
|
|
6237
6273
|
controls.enableDamping = true;
|
|
6238
6274
|
controls.dampingFactor = 0.05;
|
|
@@ -6246,7 +6282,7 @@ var ThreeDPlugin = class {
|
|
|
6246
6282
|
scene.add(dirLight2);
|
|
6247
6283
|
const grid = new THREE__namespace.GridHelper(200, 20, 4473924, 2236962);
|
|
6248
6284
|
scene.add(grid);
|
|
6249
|
-
|
|
6285
|
+
const meshGroup = new THREE__namespace.Group();
|
|
6250
6286
|
let isWireframe = false;
|
|
6251
6287
|
const ext = ctx.metadata.extension?.toLowerCase();
|
|
6252
6288
|
const materials = [];
|
|
@@ -6302,6 +6338,24 @@ var ThreeDPlugin = class {
|
|
|
6302
6338
|
controls.update();
|
|
6303
6339
|
};
|
|
6304
6340
|
fitCamera();
|
|
6341
|
+
const applyZoom = () => {
|
|
6342
|
+
if (!isUserZoomed) {
|
|
6343
|
+
updateBaseDimensions();
|
|
6344
|
+
}
|
|
6345
|
+
const boxW = Math.round(baseW * currentZoom);
|
|
6346
|
+
const boxH = Math.round(baseH * currentZoom);
|
|
6347
|
+
sizer.style.width = `${boxW}px`;
|
|
6348
|
+
sizer.style.height = `${boxH}px`;
|
|
6349
|
+
sizer.style.margin = boxH < container.clientHeight ? "auto 0" : "0";
|
|
6350
|
+
renderer.domElement.style.width = `${boxW}px`;
|
|
6351
|
+
renderer.domElement.style.height = `${boxH}px`;
|
|
6352
|
+
renderer.domElement.style.maxWidth = "none";
|
|
6353
|
+
renderer.domElement.style.maxHeight = "none";
|
|
6354
|
+
renderer.setSize(boxW, boxH, false);
|
|
6355
|
+
camera.aspect = boxW / boxH;
|
|
6356
|
+
camera.updateProjectionMatrix();
|
|
6357
|
+
};
|
|
6358
|
+
applyZoom();
|
|
6305
6359
|
let animId;
|
|
6306
6360
|
const animate = () => {
|
|
6307
6361
|
animId = requestAnimationFrame(animate);
|
|
@@ -6310,11 +6364,10 @@ var ThreeDPlugin = class {
|
|
|
6310
6364
|
};
|
|
6311
6365
|
animate();
|
|
6312
6366
|
const resizeObserver = new ResizeObserver(() => {
|
|
6313
|
-
|
|
6314
|
-
|
|
6315
|
-
|
|
6316
|
-
|
|
6317
|
-
renderer.setSize(newWidth, newHeight);
|
|
6367
|
+
if (!isUserZoomed && currentZoom === 1) {
|
|
6368
|
+
updateBaseDimensions();
|
|
6369
|
+
applyZoom();
|
|
6370
|
+
}
|
|
6318
6371
|
});
|
|
6319
6372
|
resizeObserver.observe(container);
|
|
6320
6373
|
const cleanup = () => {
|
|
@@ -6328,22 +6381,51 @@ var ThreeDPlugin = class {
|
|
|
6328
6381
|
child.geometry.dispose();
|
|
6329
6382
|
}
|
|
6330
6383
|
});
|
|
6384
|
+
scrollWrapper.remove();
|
|
6331
6385
|
container.innerHTML = "";
|
|
6332
6386
|
};
|
|
6333
6387
|
ctx.signal.addEventListener("abort", cleanup);
|
|
6334
6388
|
return {
|
|
6335
6389
|
destroy: cleanup,
|
|
6336
6390
|
zoomIn: () => {
|
|
6337
|
-
|
|
6338
|
-
|
|
6391
|
+
isUserZoomed = true;
|
|
6392
|
+
currentZoom = Math.min(5, Number((currentZoom * 1.25).toFixed(2)));
|
|
6393
|
+
applyZoom();
|
|
6339
6394
|
},
|
|
6340
6395
|
zoomOut: () => {
|
|
6341
|
-
|
|
6342
|
-
|
|
6396
|
+
currentZoom = Math.max(0.2, Number((currentZoom / 1.25).toFixed(2)));
|
|
6397
|
+
if (currentZoom <= 1) {
|
|
6398
|
+
isUserZoomed = false;
|
|
6399
|
+
}
|
|
6400
|
+
applyZoom();
|
|
6401
|
+
},
|
|
6402
|
+
fitToPage: () => {
|
|
6403
|
+
isUserZoomed = false;
|
|
6404
|
+
currentZoom = 1;
|
|
6405
|
+
updateBaseDimensions();
|
|
6406
|
+
applyZoom();
|
|
6407
|
+
container.scrollTop = 0;
|
|
6408
|
+
container.scrollLeft = 0;
|
|
6409
|
+
fitCamera();
|
|
6410
|
+
},
|
|
6411
|
+
fitToWidth: () => {
|
|
6412
|
+
isUserZoomed = false;
|
|
6413
|
+
currentZoom = 1;
|
|
6414
|
+
updateBaseDimensions();
|
|
6415
|
+
applyZoom();
|
|
6416
|
+
container.scrollTop = 0;
|
|
6417
|
+
container.scrollLeft = 0;
|
|
6418
|
+
fitCamera();
|
|
6419
|
+
},
|
|
6420
|
+
resetZoom: () => {
|
|
6421
|
+
isUserZoomed = false;
|
|
6422
|
+
currentZoom = 1;
|
|
6423
|
+
updateBaseDimensions();
|
|
6424
|
+
applyZoom();
|
|
6425
|
+
container.scrollTop = 0;
|
|
6426
|
+
container.scrollLeft = 0;
|
|
6427
|
+
fitCamera();
|
|
6343
6428
|
},
|
|
6344
|
-
fitToPage: fitCamera,
|
|
6345
|
-
fitToWidth: fitCamera,
|
|
6346
|
-
resetZoom: fitCamera,
|
|
6347
6429
|
rotateCW: () => {
|
|
6348
6430
|
isWireframe = !isWireframe;
|
|
6349
6431
|
materials.forEach((m) => {
|