@file-viewer/renderer-word 2.1.18 → 2.1.20

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/wordDoc.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { defaultMsDocCss, parseMsDocToHtml } from '@file-viewer/doc';
2
- import { applyPrintPageSize, buildPrintPageStyle, createFileViewerZoomChangeEmitter as createZoomChangeEmitter, formatCssPixels, registerFileViewerZoomProvider, unregisterFileViewerZoomProvider, } from '@file-viewer/core';
2
+ import { applyPrintPageSize, buildPrintPageStyle, createFileViewerZoomChangeEmitter as createZoomChangeEmitter, formatCssPixels, registerFileViewerZoomProvider, resolveFileViewerFitScale, unregisterFileViewerZoomProvider, } from '@file-viewer/core';
3
3
  const PAGE_BREAK_MARKER = '<span class="msdoc-page-break"></span>';
4
4
  const EMPTY_PAGE_HTML = '<p class="msdoc-paragraph"><br></p>';
5
5
  const MSDOC_PAGE_SIZE = {
@@ -239,12 +239,58 @@ function makeMsDocResponsive(target) {
239
239
  applyResponsiveLayout();
240
240
  return getZoomState();
241
241
  };
242
+ const setAbsoluteScale = (scale) => {
243
+ return setUserZoom(scale / Math.max(currentFitScale, 0.01));
244
+ };
245
+ const readFitPageSize = () => {
246
+ var _a;
247
+ const root = (_a = pages[0]) === null || _a === void 0 ? void 0 : _a.querySelector('.msdoc-root');
248
+ return {
249
+ width: (root === null || root === void 0 ? void 0 : root.offsetWidth) || MSDOC_PAGE_SIZE.width,
250
+ height: MSDOC_PAGE_SIZE.height
251
+ };
252
+ };
253
+ const fitDoc = (request) => {
254
+ var _a, _b;
255
+ const pageSize = readFitPageSize();
256
+ const mode = request.mode === 'auto' ? 'width' : request.mode;
257
+ const scale = resolveFileViewerFitScale({
258
+ mode,
259
+ viewportWidth: Math.max(1, request.viewportWidth || target.clientWidth || 0),
260
+ viewportHeight: Math.max(1, request.viewportHeight || target.clientHeight || 0),
261
+ contentWidth: pageSize.width,
262
+ contentHeight: pageSize.height,
263
+ currentScale,
264
+ minScale: (_a = request.minScale) !== null && _a !== void 0 ? _a : MSDOC_MIN_SCALE,
265
+ maxScale: (_b = request.maxScale) !== null && _b !== void 0 ? _b : MSDOC_MAX_SCALE
266
+ });
267
+ if (!scale) {
268
+ return {
269
+ applied: false,
270
+ mode: request.mode,
271
+ resize: request.resize,
272
+ source: request.source,
273
+ reason: 'unmeasurable',
274
+ provider: 'zoom'
275
+ };
276
+ }
277
+ const state = setAbsoluteScale(scale);
278
+ return {
279
+ applied: true,
280
+ mode: request.mode,
281
+ resize: request.resize,
282
+ scale: state.scale,
283
+ source: request.source,
284
+ provider: 'zoom'
285
+ };
286
+ };
242
287
  target.dataset.viewerZoomProvider = 'doc';
243
288
  registerFileViewerZoomProvider(target, {
244
289
  zoomIn: () => setUserZoom((currentScale + MSDOC_ZOOM_STEP) / Math.max(currentFitScale, 0.01)),
245
290
  zoomOut: () => setUserZoom((currentScale - MSDOC_ZOOM_STEP) / Math.max(currentFitScale, 0.01)),
246
291
  resetZoom: () => setUserZoom(1),
247
- setZoom: scale => setUserZoom(scale / Math.max(currentFitScale, 0.01)),
292
+ setZoom: setAbsoluteScale,
293
+ fit: fitDoc,
248
294
  getState: getZoomState,
249
295
  subscribe: zoomEmitter.subscribe
250
296
  });
package/dist/wordDocx.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { resolveFileViewerDocxWorkerJsZipUrl, resolveFileViewerDocxWorkerUrl, } from '@file-viewer/core/assets';
2
- import { applyPrintPageSize, buildPrintPageStyle, createFileViewerTranslator, createFileViewerZoomChangeEmitter as createZoomChangeEmitter, formatCssPixels, getElementPrintPageSize, registerFileViewerZoomProvider, unregisterFileViewerZoomProvider, } from '@file-viewer/core';
2
+ import { applyPrintPageSize, buildPrintPageStyle, createFileViewerTranslator, createFileViewerZoomChangeEmitter as createZoomChangeEmitter, formatCssPixels, getElementPrintPageSize, registerFileViewerZoomProvider, resolveFileViewerFitScale, unregisterFileViewerZoomProvider, } from '@file-viewer/core';
3
3
  const DOCX_DEFAULT_PAGE_SIZE = {
4
4
  width: 794,
5
5
  height: 1123
@@ -289,12 +289,76 @@ function makeDocxResponsive(target, context) {
289
289
  applyResponsiveLayout();
290
290
  return getZoomState();
291
291
  };
292
+ const setAbsoluteScale = (scale) => {
293
+ return setUserZoom(scale / Math.max(currentFitScale, 0.01));
294
+ };
295
+ const readFitPageSize = () => {
296
+ for (const frame of frames) {
297
+ const page = getDocxPageElement(frame);
298
+ if (!page) {
299
+ continue;
300
+ }
301
+ const pageSize = getElementPrintPageSize(page, DOCX_DEFAULT_PAGE_SIZE);
302
+ return {
303
+ width: page.offsetWidth || pageSize.width || DOCX_DEFAULT_PAGE_SIZE.width,
304
+ height: isDocxFlowFrame(frame)
305
+ ? DOCX_DEFAULT_PAGE_SIZE.height
306
+ : page.offsetHeight || pageSize.height || DOCX_DEFAULT_PAGE_SIZE.height
307
+ };
308
+ }
309
+ return null;
310
+ };
311
+ const fitDocx = (request) => {
312
+ var _a, _b;
313
+ const pageSize = readFitPageSize();
314
+ if (!pageSize) {
315
+ return {
316
+ applied: false,
317
+ mode: request.mode,
318
+ resize: request.resize,
319
+ source: request.source,
320
+ reason: 'unmeasurable',
321
+ provider: 'zoom'
322
+ };
323
+ }
324
+ const mode = request.mode === 'auto' ? 'width' : request.mode;
325
+ const scale = resolveFileViewerFitScale({
326
+ mode,
327
+ viewportWidth: Math.max(1, request.viewportWidth || target.clientWidth || 0),
328
+ viewportHeight: Math.max(1, request.viewportHeight || target.clientHeight || 0),
329
+ contentWidth: pageSize.width,
330
+ contentHeight: pageSize.height,
331
+ currentScale,
332
+ minScale: (_a = request.minScale) !== null && _a !== void 0 ? _a : DOCX_MIN_SCALE,
333
+ maxScale: (_b = request.maxScale) !== null && _b !== void 0 ? _b : DOCX_MAX_SCALE
334
+ });
335
+ if (!scale) {
336
+ return {
337
+ applied: false,
338
+ mode: request.mode,
339
+ resize: request.resize,
340
+ source: request.source,
341
+ reason: 'unmeasurable',
342
+ provider: 'zoom'
343
+ };
344
+ }
345
+ const state = setAbsoluteScale(scale);
346
+ return {
347
+ applied: true,
348
+ mode: request.mode,
349
+ resize: request.resize,
350
+ scale: state.scale,
351
+ source: request.source,
352
+ provider: 'zoom'
353
+ };
354
+ };
292
355
  target.dataset.viewerZoomProvider = 'docx';
293
356
  registerFileViewerZoomProvider(target, {
294
357
  zoomIn: () => setUserZoom((currentScale + DOCX_ZOOM_STEP) / Math.max(currentFitScale, 0.01)),
295
358
  zoomOut: () => setUserZoom((currentScale - DOCX_ZOOM_STEP) / Math.max(currentFitScale, 0.01)),
296
359
  resetZoom: () => setUserZoom(1),
297
- setZoom: scale => setUserZoom(scale / Math.max(currentFitScale, 0.01)),
360
+ setZoom: setAbsoluteScale,
361
+ fit: fitDocx,
298
362
  getState: getZoomState,
299
363
  subscribe: zoomEmitter.subscribe
300
364
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@file-viewer/renderer-word",
3
- "version": "2.1.18",
3
+ "version": "2.1.20",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Standalone Word and compatible document renderer plugin for Flyfish File Viewer powered by @file-viewer/docx, @file-viewer/doc, and RTF/ODF parsing.",
@@ -57,8 +57,8 @@
57
57
  "LICENSE"
58
58
  ],
59
59
  "dependencies": {
60
- "@file-viewer/core": "^2.1.18",
61
- "@file-viewer/doc": "^2.1.18",
60
+ "@file-viewer/core": "^2.1.20",
61
+ "@file-viewer/doc": "^2.1.20",
62
62
  "@file-viewer/docx": "^0.3.17",
63
63
  "jszip": "^3.10.1",
64
64
  "rtf.js": "^3.0.9"