@files-preview-app/preview-file 1.3.18 → 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/index.cjs
CHANGED
|
@@ -6255,7 +6255,7 @@ var ThreeDPlugin = class {
|
|
|
6255
6255
|
{
|
|
6256
6256
|
id: "fit-page",
|
|
6257
6257
|
icon: "fit-page",
|
|
6258
|
-
label: "
|
|
6258
|
+
label: "Fit to Page",
|
|
6259
6259
|
type: "button",
|
|
6260
6260
|
group: "zoom",
|
|
6261
6261
|
execute: () => instance.fitToPage?.()
|
|
@@ -6268,6 +6268,14 @@ var ThreeDPlugin = class {
|
|
|
6268
6268
|
group: "zoom",
|
|
6269
6269
|
execute: () => instance.resetZoom?.()
|
|
6270
6270
|
},
|
|
6271
|
+
{
|
|
6272
|
+
id: "fit-width",
|
|
6273
|
+
icon: "fit-width",
|
|
6274
|
+
label: "Fit to Width",
|
|
6275
|
+
type: "button",
|
|
6276
|
+
group: "zoom",
|
|
6277
|
+
execute: () => instance.fitToWidth?.()
|
|
6278
|
+
},
|
|
6271
6279
|
{
|
|
6272
6280
|
id: "rotate-cw",
|
|
6273
6281
|
icon: "rotate-cw",
|
|
@@ -6299,21 +6307,49 @@ var ThreeDPlugin = class {
|
|
|
6299
6307
|
async render(ctx) {
|
|
6300
6308
|
const container = ctx.container;
|
|
6301
6309
|
container.innerHTML = "";
|
|
6302
|
-
container.style.overflow = "
|
|
6310
|
+
container.style.overflow = "auto";
|
|
6303
6311
|
container.style.position = "relative";
|
|
6304
6312
|
container.style.width = "100%";
|
|
6305
6313
|
container.style.height = "100%";
|
|
6314
|
+
container.style.padding = "0";
|
|
6306
6315
|
container.style.background = "#1a1a1a";
|
|
6307
|
-
|
|
6308
|
-
|
|
6316
|
+
let currentZoom = 1;
|
|
6317
|
+
let isUserZoomed = false;
|
|
6318
|
+
let baseW = Math.max(100, container.clientWidth || 800);
|
|
6319
|
+
let baseH = Math.max(100, container.clientHeight || 600);
|
|
6320
|
+
const updateBaseDimensions = () => {
|
|
6321
|
+
baseW = Math.max(100, container.clientWidth || 800);
|
|
6322
|
+
baseH = Math.max(100, container.clientHeight || 600);
|
|
6323
|
+
};
|
|
6324
|
+
const scrollWrapper = document.createElement("div");
|
|
6325
|
+
scrollWrapper.className = "fp-3d-scroll-wrapper";
|
|
6326
|
+
scrollWrapper.style.minWidth = "100%";
|
|
6327
|
+
scrollWrapper.style.minHeight = "100%";
|
|
6328
|
+
scrollWrapper.style.width = "max-content";
|
|
6329
|
+
scrollWrapper.style.height = "max-content";
|
|
6330
|
+
scrollWrapper.style.display = "flex";
|
|
6331
|
+
scrollWrapper.style.flexDirection = "column";
|
|
6332
|
+
scrollWrapper.style.alignItems = "center";
|
|
6333
|
+
scrollWrapper.style.justifyContent = "flex-start";
|
|
6334
|
+
scrollWrapper.style.boxSizing = "border-box";
|
|
6335
|
+
const sizer = document.createElement("div");
|
|
6336
|
+
sizer.className = "fp-3d-sizer";
|
|
6337
|
+
sizer.style.position = "relative";
|
|
6338
|
+
sizer.style.flexShrink = "0";
|
|
6339
|
+
sizer.style.display = "flex";
|
|
6340
|
+
sizer.style.justifyContent = "center";
|
|
6341
|
+
sizer.style.alignItems = "center";
|
|
6342
|
+
sizer.style.margin = "auto 0";
|
|
6309
6343
|
const scene = new THREE__namespace.Scene();
|
|
6310
6344
|
scene.background = new THREE__namespace.Color(1973796);
|
|
6311
|
-
const camera = new THREE__namespace.PerspectiveCamera(45,
|
|
6345
|
+
const camera = new THREE__namespace.PerspectiveCamera(45, baseW / baseH, 0.1, 2e3);
|
|
6312
6346
|
const renderer = new THREE__namespace.WebGLRenderer({ antialias: true });
|
|
6313
|
-
renderer.setSize(
|
|
6314
|
-
renderer.setPixelRatio(window.devicePixelRatio);
|
|
6347
|
+
renderer.setSize(baseW, baseH);
|
|
6348
|
+
renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2));
|
|
6315
6349
|
renderer.shadowMap.enabled = true;
|
|
6316
|
-
|
|
6350
|
+
sizer.appendChild(renderer.domElement);
|
|
6351
|
+
scrollWrapper.appendChild(sizer);
|
|
6352
|
+
container.appendChild(scrollWrapper);
|
|
6317
6353
|
const controls = new OrbitControls_js.OrbitControls(camera, renderer.domElement);
|
|
6318
6354
|
controls.enableDamping = true;
|
|
6319
6355
|
controls.dampingFactor = 0.05;
|
|
@@ -6327,7 +6363,7 @@ var ThreeDPlugin = class {
|
|
|
6327
6363
|
scene.add(dirLight2);
|
|
6328
6364
|
const grid = new THREE__namespace.GridHelper(200, 20, 4473924, 2236962);
|
|
6329
6365
|
scene.add(grid);
|
|
6330
|
-
|
|
6366
|
+
const meshGroup = new THREE__namespace.Group();
|
|
6331
6367
|
let isWireframe = false;
|
|
6332
6368
|
const ext = ctx.metadata.extension?.toLowerCase();
|
|
6333
6369
|
const materials = [];
|
|
@@ -6383,6 +6419,24 @@ var ThreeDPlugin = class {
|
|
|
6383
6419
|
controls.update();
|
|
6384
6420
|
};
|
|
6385
6421
|
fitCamera();
|
|
6422
|
+
const applyZoom = () => {
|
|
6423
|
+
if (!isUserZoomed) {
|
|
6424
|
+
updateBaseDimensions();
|
|
6425
|
+
}
|
|
6426
|
+
const boxW = Math.round(baseW * currentZoom);
|
|
6427
|
+
const boxH = Math.round(baseH * currentZoom);
|
|
6428
|
+
sizer.style.width = `${boxW}px`;
|
|
6429
|
+
sizer.style.height = `${boxH}px`;
|
|
6430
|
+
sizer.style.margin = boxH < container.clientHeight ? "auto 0" : "0";
|
|
6431
|
+
renderer.domElement.style.width = `${boxW}px`;
|
|
6432
|
+
renderer.domElement.style.height = `${boxH}px`;
|
|
6433
|
+
renderer.domElement.style.maxWidth = "none";
|
|
6434
|
+
renderer.domElement.style.maxHeight = "none";
|
|
6435
|
+
renderer.setSize(boxW, boxH, false);
|
|
6436
|
+
camera.aspect = boxW / boxH;
|
|
6437
|
+
camera.updateProjectionMatrix();
|
|
6438
|
+
};
|
|
6439
|
+
applyZoom();
|
|
6386
6440
|
let animId;
|
|
6387
6441
|
const animate = () => {
|
|
6388
6442
|
animId = requestAnimationFrame(animate);
|
|
@@ -6391,11 +6445,10 @@ var ThreeDPlugin = class {
|
|
|
6391
6445
|
};
|
|
6392
6446
|
animate();
|
|
6393
6447
|
const resizeObserver = new ResizeObserver(() => {
|
|
6394
|
-
|
|
6395
|
-
|
|
6396
|
-
|
|
6397
|
-
|
|
6398
|
-
renderer.setSize(newWidth, newHeight);
|
|
6448
|
+
if (!isUserZoomed && currentZoom === 1) {
|
|
6449
|
+
updateBaseDimensions();
|
|
6450
|
+
applyZoom();
|
|
6451
|
+
}
|
|
6399
6452
|
});
|
|
6400
6453
|
resizeObserver.observe(container);
|
|
6401
6454
|
const cleanup = () => {
|
|
@@ -6409,22 +6462,51 @@ var ThreeDPlugin = class {
|
|
|
6409
6462
|
child.geometry.dispose();
|
|
6410
6463
|
}
|
|
6411
6464
|
});
|
|
6465
|
+
scrollWrapper.remove();
|
|
6412
6466
|
container.innerHTML = "";
|
|
6413
6467
|
};
|
|
6414
6468
|
ctx.signal.addEventListener("abort", cleanup);
|
|
6415
6469
|
return {
|
|
6416
6470
|
destroy: cleanup,
|
|
6417
6471
|
zoomIn: () => {
|
|
6418
|
-
|
|
6419
|
-
|
|
6472
|
+
isUserZoomed = true;
|
|
6473
|
+
currentZoom = Math.min(5, Number((currentZoom * 1.25).toFixed(2)));
|
|
6474
|
+
applyZoom();
|
|
6420
6475
|
},
|
|
6421
6476
|
zoomOut: () => {
|
|
6422
|
-
|
|
6423
|
-
|
|
6477
|
+
currentZoom = Math.max(0.2, Number((currentZoom / 1.25).toFixed(2)));
|
|
6478
|
+
if (currentZoom <= 1) {
|
|
6479
|
+
isUserZoomed = false;
|
|
6480
|
+
}
|
|
6481
|
+
applyZoom();
|
|
6482
|
+
},
|
|
6483
|
+
fitToPage: () => {
|
|
6484
|
+
isUserZoomed = false;
|
|
6485
|
+
currentZoom = 1;
|
|
6486
|
+
updateBaseDimensions();
|
|
6487
|
+
applyZoom();
|
|
6488
|
+
container.scrollTop = 0;
|
|
6489
|
+
container.scrollLeft = 0;
|
|
6490
|
+
fitCamera();
|
|
6491
|
+
},
|
|
6492
|
+
fitToWidth: () => {
|
|
6493
|
+
isUserZoomed = false;
|
|
6494
|
+
currentZoom = 1;
|
|
6495
|
+
updateBaseDimensions();
|
|
6496
|
+
applyZoom();
|
|
6497
|
+
container.scrollTop = 0;
|
|
6498
|
+
container.scrollLeft = 0;
|
|
6499
|
+
fitCamera();
|
|
6500
|
+
},
|
|
6501
|
+
resetZoom: () => {
|
|
6502
|
+
isUserZoomed = false;
|
|
6503
|
+
currentZoom = 1;
|
|
6504
|
+
updateBaseDimensions();
|
|
6505
|
+
applyZoom();
|
|
6506
|
+
container.scrollTop = 0;
|
|
6507
|
+
container.scrollLeft = 0;
|
|
6508
|
+
fitCamera();
|
|
6424
6509
|
},
|
|
6425
|
-
fitToPage: fitCamera,
|
|
6426
|
-
fitToWidth: fitCamera,
|
|
6427
|
-
resetZoom: fitCamera,
|
|
6428
6510
|
rotateCW: () => {
|
|
6429
6511
|
isWireframe = !isWireframe;
|
|
6430
6512
|
materials.forEach((m) => {
|