@file-viewer/core 2.2.4 → 2.2.5

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.
@@ -1,11 +1,15 @@
1
1
  import { createFileViewerTranslator } from '../i18n/messages.js';
2
- import { normalizeFileViewerPrintMaskRegion } from './printMask.js';
2
+ import { normalizeFileViewerPrintMaskRegion, normalizeFileViewerPrintStamp, } from './printMask.js';
3
3
  const DESIGNER_STYLE = `
4
4
  .fv-print-mask-layer{position:absolute;inset:0;z-index:2147483000;pointer-events:none;}
5
5
  .fv-print-mask-canvas{position:absolute;inset:0;z-index:2147483000;pointer-events:none;cursor:default;}
6
6
  .fv-print-mask-canvas.is-armed{pointer-events:auto;cursor:crosshair;touch-action:none;}
7
7
  .fv-print-mask-block{position:absolute;background:#000;box-sizing:border-box;pointer-events:auto;}
8
8
  .fv-print-mask-block-remove{position:absolute;right:-8px;top:-8px;width:18px;height:18px;border:0;border-radius:999px;background:#111;color:#fff;font:700 12px/18px system-ui,sans-serif;cursor:pointer;padding:0;}
9
+ .fv-print-stamp{position:absolute;box-sizing:border-box;border:1px dashed rgba(22,119,76,.7);border-radius:4px;pointer-events:auto;touch-action:none;cursor:move;transform-origin:center center;}
10
+ .fv-print-stamp img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none;}
11
+ .fv-print-stamp-resize{position:absolute;right:-7px;bottom:-7px;width:15px;height:15px;border:2px solid #fff;border-radius:4px;background:#16774c;box-shadow:0 1px 5px rgba(15,23,42,.22);cursor:nwse-resize;touch-action:none;}
12
+ .fv-print-stamp-input{display:none!important;}
9
13
  .fv-print-mask-toolbar{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:2147483001;display:inline-flex;align-items:center;gap:6px;padding:6px 8px;border:1px solid rgba(20,35,53,.12);border-radius:999px;background:rgba(255,255,255,.94);box-shadow:0 12px 28px rgba(15,23,42,.16);pointer-events:auto;max-width:calc(100% - 24px);flex-wrap:wrap;justify-content:center;}
10
14
  .fv-print-mask-toolbar span{font:600 12px/1.2 system-ui,sans-serif;color:#40546a;white-space:nowrap;}
11
15
  .fv-print-mask-toolbar button{min-width:42px;height:30px;padding:0 10px;border:0;border-radius:999px;background:transparent;color:#40546a;font:800 12px/1 system-ui,sans-serif;cursor:pointer;}
@@ -52,6 +56,24 @@ const visibleArea = (element, viewport) => {
52
56
  const height = Math.max(0, Math.min(rect.bottom, viewport.bottom) - Math.max(rect.top, viewport.top));
53
57
  return width * height;
54
58
  };
59
+ const MAX_PRINT_STAMP_BYTES = 10 * 1024 * 1024;
60
+ const readStampFileAsDataUrl = (file, windowRef) => new Promise((resolve, reject) => {
61
+ if (!/^image\/(?:png|jpe?g|webp|gif|svg\+xml)$/i.test(file.type) || file.size > MAX_PRINT_STAMP_BYTES) {
62
+ reject(new Error('Unsupported print stamp image'));
63
+ return;
64
+ }
65
+ const Reader = (windowRef === null || windowRef === void 0 ? void 0 : windowRef.FileReader) || globalThis.FileReader;
66
+ const reader = new Reader();
67
+ reader.addEventListener('load', () => {
68
+ if (typeof reader.result === 'string' && reader.result.startsWith('data:image/')) {
69
+ resolve(reader.result);
70
+ return;
71
+ }
72
+ reject(new Error('Invalid print stamp image'));
73
+ });
74
+ reader.addEventListener('error', () => reject(reader.error || new Error('Failed to read print stamp image')));
75
+ reader.readAsDataURL(file);
76
+ });
55
77
  /**
56
78
  * Opens a page-aware print-mask designer. Browsing remains the default mode;
57
79
  * drawing is armed for the currently visible page only and disarms after one block.
@@ -64,6 +86,9 @@ export const openFileViewerPrintMaskDesigner = (options) => {
64
86
  const regions = [...(options.initialRegions || [])]
65
87
  .map(region => normalizeFileViewerPrintMaskRegion(region))
66
88
  .filter((region) => !!region);
89
+ const stamps = [...(options.initialStamps || [])]
90
+ .map(stamp => normalizeFileViewerPrintStamp(stamp))
91
+ .filter((stamp) => !!stamp);
67
92
  const providedPages = Array.from(new Set(options.pages || []))
68
93
  .filter(page => page === root || root.contains(page));
69
94
  const pageScoped = providedPages.length > 0;
@@ -104,7 +129,8 @@ export const openFileViewerPrintMaskDesigner = (options) => {
104
129
  const surfaces = pageElements.map((element, index) => (createSurface(element, pageScoped ? index : undefined)));
105
130
  const legacySurface = pageScoped &&
106
131
  !surfaces.some(surface => surface.element === root) &&
107
- regions.some(region => region.pageIndex === undefined)
132
+ (regions.some(region => region.pageIndex === undefined) ||
133
+ stamps.some(stamp => stamp.pageIndex === undefined))
108
134
  ? createSurface(root)
109
135
  : null;
110
136
  const allSurfaces = legacySurface ? [...surfaces, legacySurface] : surfaces;
@@ -117,6 +143,14 @@ export const openFileViewerPrintMaskDesigner = (options) => {
117
143
  const addButton = documentRef.createElement('button');
118
144
  addButton.type = 'button';
119
145
  addButton.textContent = t('toolbar.printMaskAdd');
146
+ const stampInput = documentRef.createElement('input');
147
+ stampInput.type = 'file';
148
+ stampInput.accept = 'image/png,image/jpeg,image/webp,image/gif,image/svg+xml';
149
+ stampInput.className = 'fv-print-stamp-input';
150
+ stampInput.setAttribute('data-viewer-print-stamp-input', 'true');
151
+ const stampButton = documentRef.createElement('button');
152
+ stampButton.type = 'button';
153
+ stampButton.textContent = t('toolbar.printStampUpload');
120
154
  const clearButton = documentRef.createElement('button');
121
155
  clearButton.type = 'button';
122
156
  clearButton.textContent = t('toolbar.printMaskClear');
@@ -127,8 +161,8 @@ export const openFileViewerPrintMaskDesigner = (options) => {
127
161
  confirmButton.type = 'button';
128
162
  confirmButton.className = 'primary';
129
163
  confirmButton.textContent = t('toolbar.printMaskConfirm');
130
- toolbar.append(hint, addButton, clearButton, cancelButton, confirmButton);
131
- layer.append(toolbar);
164
+ toolbar.append(hint, addButton, stampButton, clearButton, cancelButton, confirmButton);
165
+ layer.append(stampInput, toolbar);
132
166
  root.appendChild(layer);
133
167
  const disarm = () => {
134
168
  surfaces.forEach(surface => surface.canvas.classList.remove('is-armed'));
@@ -157,16 +191,16 @@ export const openFileViewerPrintMaskDesigner = (options) => {
157
191
  }
158
192
  resolve(result);
159
193
  };
160
- const surfaceForRegion = (region) => {
161
- if (region.pageIndex === undefined) {
194
+ const surfaceForItem = (item) => {
195
+ if (item.pageIndex === undefined) {
162
196
  return legacySurface || surfaces[0];
163
197
  }
164
- return surfaces.find(surface => surface.pageIndex === region.pageIndex) || null;
198
+ return surfaces.find(surface => surface.pageIndex === item.pageIndex) || null;
165
199
  };
166
200
  const renderRegions = () => {
167
201
  allSurfaces.forEach(surface => surface.canvas.replaceChildren());
168
202
  regions.forEach((region, index) => {
169
- const surface = surfaceForRegion(region);
203
+ const surface = surfaceForItem(region);
170
204
  if (!surface) {
171
205
  return;
172
206
  }
@@ -192,6 +226,105 @@ export const openFileViewerPrintMaskDesigner = (options) => {
192
226
  block.appendChild(remove);
193
227
  surface.canvas.appendChild(block);
194
228
  });
229
+ stamps.forEach((stamp, index) => {
230
+ const surface = surfaceForItem(stamp);
231
+ if (!surface) {
232
+ return;
233
+ }
234
+ const stampElement = documentRef.createElement('div');
235
+ stampElement.className = 'fv-print-stamp';
236
+ stampElement.setAttribute('data-viewer-print-stamp', String(index));
237
+ const applyStampStyle = () => {
238
+ var _a, _b;
239
+ stampElement.style.left = `${stamp.left}%`;
240
+ stampElement.style.top = `${stamp.top}%`;
241
+ stampElement.style.width = `${stamp.width}%`;
242
+ stampElement.style.height = `${stamp.height}%`;
243
+ stampElement.style.opacity = String((_a = stamp.opacity) !== null && _a !== void 0 ? _a : 1);
244
+ stampElement.style.transform = `rotate(${(_b = stamp.rotate) !== null && _b !== void 0 ? _b : 0}deg)`;
245
+ };
246
+ applyStampStyle();
247
+ const image = documentRef.createElement('img');
248
+ image.src = stamp.src;
249
+ image.alt = stamp.alt || '';
250
+ image.draggable = false;
251
+ const remove = documentRef.createElement('button');
252
+ remove.type = 'button';
253
+ remove.className = 'fv-print-mask-block-remove';
254
+ remove.title = t('toolbar.printStampRemove');
255
+ remove.setAttribute('aria-label', t('toolbar.printStampRemove'));
256
+ remove.textContent = '−';
257
+ remove.addEventListener('pointerdown', event => event.stopPropagation());
258
+ remove.addEventListener('click', event => {
259
+ event.preventDefault();
260
+ event.stopPropagation();
261
+ stamps.splice(index, 1);
262
+ renderRegions();
263
+ });
264
+ const resize = documentRef.createElement('span');
265
+ resize.className = 'fv-print-stamp-resize';
266
+ resize.setAttribute('role', 'button');
267
+ resize.setAttribute('aria-label', t('toolbar.printStampResize'));
268
+ resize.title = t('toolbar.printStampResize');
269
+ let interaction = null;
270
+ stampElement.addEventListener('pointerdown', event => {
271
+ var _a;
272
+ if (event.button !== 0 || event.target.closest('button')) {
273
+ return;
274
+ }
275
+ event.preventDefault();
276
+ event.stopPropagation();
277
+ interaction = {
278
+ pointerId: event.pointerId,
279
+ mode: event.target === resize ? 'resize' : 'move',
280
+ startX: event.clientX,
281
+ startY: event.clientY,
282
+ left: stamp.left,
283
+ top: stamp.top,
284
+ width: stamp.width,
285
+ height: stamp.height,
286
+ };
287
+ (_a = stampElement.setPointerCapture) === null || _a === void 0 ? void 0 : _a.call(stampElement, event.pointerId);
288
+ });
289
+ stampElement.addEventListener('pointermove', event => {
290
+ if (!interaction || interaction.pointerId !== event.pointerId) {
291
+ return;
292
+ }
293
+ event.preventDefault();
294
+ const bounds = surface.canvas.getBoundingClientRect();
295
+ if (!bounds.width || !bounds.height) {
296
+ return;
297
+ }
298
+ const deltaX = ((event.clientX - interaction.startX) / bounds.width) * 100;
299
+ const deltaY = ((event.clientY - interaction.startY) / bounds.height) * 100;
300
+ if (interaction.mode === 'move') {
301
+ stamp.left = Math.max(0, Math.min(100 - stamp.width, interaction.left + deltaX));
302
+ stamp.top = Math.max(0, Math.min(100 - stamp.height, interaction.top + deltaY));
303
+ }
304
+ else {
305
+ stamp.width = Math.max(4, Math.min(100 - stamp.left, interaction.width + deltaX));
306
+ stamp.height = Math.max(4, Math.min(100 - stamp.top, interaction.height + deltaY));
307
+ }
308
+ applyStampStyle();
309
+ });
310
+ const endInteraction = (event) => {
311
+ var _a;
312
+ if (!interaction || interaction.pointerId !== event.pointerId) {
313
+ return;
314
+ }
315
+ try {
316
+ (_a = stampElement.releasePointerCapture) === null || _a === void 0 ? void 0 : _a.call(stampElement, interaction.pointerId);
317
+ }
318
+ catch {
319
+ // Pointer capture may already be released by the browser.
320
+ }
321
+ interaction = null;
322
+ };
323
+ stampElement.addEventListener('pointerup', endInteraction);
324
+ stampElement.addEventListener('pointercancel', endInteraction);
325
+ stampElement.append(image, remove, resize);
326
+ surface.canvas.appendChild(stampElement);
327
+ });
195
328
  };
196
329
  const pointFromEvent = (event, canvas) => {
197
330
  const bounds = canvas.getBoundingClientRect();
@@ -257,30 +390,70 @@ export const openFileViewerPrintMaskDesigner = (options) => {
257
390
  renderRegions();
258
391
  });
259
392
  });
260
- addButton.addEventListener('click', () => {
393
+ const getActiveSurface = () => {
261
394
  var _a;
262
- disarm();
263
395
  const viewport = root.getBoundingClientRect();
264
- const activeSurface = ((_a = surfaces
396
+ return ((_a = surfaces
265
397
  .map(surface => ({ surface, area: visibleArea(surface.element, viewport) }))
266
398
  .sort((left, right) => right.area - left.area)[0]) === null || _a === void 0 ? void 0 : _a.surface) || surfaces[0];
399
+ };
400
+ addButton.addEventListener('click', () => {
401
+ disarm();
402
+ const activeSurface = getActiveSurface();
267
403
  activeSurface === null || activeSurface === void 0 ? void 0 : activeSurface.canvas.classList.add('is-armed');
268
404
  addButton.classList.toggle('is-active', Boolean(activeSurface));
269
405
  });
406
+ stampButton.addEventListener('click', () => {
407
+ disarm();
408
+ stampInput.click();
409
+ });
410
+ stampInput.addEventListener('change', async () => {
411
+ var _a;
412
+ const file = (_a = stampInput.files) === null || _a === void 0 ? void 0 : _a[0];
413
+ stampInput.value = '';
414
+ if (!file) {
415
+ return;
416
+ }
417
+ try {
418
+ const src = await readStampFileAsDataUrl(file, documentRef.defaultView);
419
+ const activeSurface = getActiveSurface();
420
+ if (!activeSurface) {
421
+ return;
422
+ }
423
+ const stamp = normalizeFileViewerPrintStamp({
424
+ src,
425
+ alt: file.name,
426
+ left: 38,
427
+ top: 38,
428
+ width: 24,
429
+ height: 18,
430
+ pageIndex: activeSurface.pageIndex,
431
+ });
432
+ if (stamp) {
433
+ stamps.push(stamp);
434
+ renderRegions();
435
+ }
436
+ }
437
+ catch {
438
+ // Unsupported or unreadable images are ignored; the document stays untouched.
439
+ }
440
+ });
270
441
  clearButton.addEventListener('click', () => {
271
442
  regions.splice(0, regions.length);
443
+ stamps.splice(0, stamps.length);
272
444
  disarm();
273
445
  renderRegions();
274
446
  });
275
447
  cancelButton.addEventListener('click', () => finish(null));
276
448
  confirmButton.addEventListener('click', () => {
277
- if (!regions.length) {
449
+ if (!regions.length && !stamps.length) {
278
450
  finish(null);
279
451
  return;
280
452
  }
281
453
  finish({
282
454
  mask: {
283
- regions: regions.map(region => ({ ...region })),
455
+ ...(regions.length ? { regions: regions.map(region => ({ ...region })) } : {}),
456
+ ...(stamps.length ? { stamps: stamps.map(stamp => ({ ...stamp })) } : {}),
284
457
  color,
285
458
  },
286
459
  });
@@ -3,6 +3,8 @@ export type { FileViewerRendererAssetDefinition, FileViewerRendererAssetKind, Fi
3
3
  export { ADAPTER_PRINT_REQUIRED_EXTENSIONS, applyFileViewerZoomAvailability, createUnsupportedAvailability, DEFAULT_OPERATION_AVAILABILITY, DOM_PRINTABLE_EXTENSIONS, getRendererAvailability, isDomPrintableExtension, isKnownNonPrintableExtension, needsDedicatedPrintAdapter, NON_PRINTABLE_EXTENSIONS, resolvePrintAvailability, } from './registry/capabilities';
4
4
  export { DEFAULT_FILE_VIEWER_TEXT_CHUNK_OVERLAP, DEFAULT_FILE_VIEWER_TEXT_CHUNK_SIZE, DEFAULT_FILE_VIEWER_ZOOM_SCALE, buildFileViewerDocumentTextChunks, createEmptyFileViewerSearchState, createFileViewerZoomState, normalizeFileViewerAiOptions, normalizeFileViewerSearchOptions, } from './features/document/model';
5
5
  export { ARCHIVE_EXTENSIONS, DEFAULT_RENDERER_DEFINITIONS, DEFAULT_SUPPORTED_EXTENSIONS, IMAGE_EXTENSIONS, MODEL_EXTENSIONS, TEXT_EXTENSIONS, } from './registry/formats';
6
+ export { precheckFileViewerSource } from './source/precheck';
7
+ export type { FileViewerPrecheckOptions, FileViewerPrecheckReason, FileViewerPrecheckResult, FileViewerPrecheckStatus, } from './source/precheck';
6
8
  export { FILE_VIEWER_BEFORE_OPERATION_ERROR_PREFIX, DEFAULT_FILE_VIEWER_TOOLBAR_ORDER, FILE_VIEWER_LIFECYCLE_HOOK_ERROR_MESSAGE_PREFIX, FILE_VIEWER_LIFECYCLE_HOOKS, FILE_VIEWER_OPERATION_LABELS, buildFileViewerLifecycleContext, buildFileViewerLifecycleContextFromNormalizedSource, buildFileViewerOperationContext, buildFileViewerOperationContextFromLifecycleState, cloneFileViewerOperationAvailability, createFileViewerLifecycleActions, createFileViewerLifecycleStateController, createFileViewerPublicApi, createFileViewerToolbarActions, createFileViewerToolbarControllerActionHandlers, createFileViewerToolbarZoomSyncSnapshot, DEFAULT_FILE_VIEWER_LIFECYCLE_HOOK_ERROR_LOGGER, DEFAULT_FILE_VIEWER_OPERATION_ERROR_LOGGER, dispatchFileViewerLifecycleEvent, dispatchFileViewerOperationAvailabilityChange, dispatchFileViewerOperationContextEvent, dispatchFileViewerZoomChange, emitFileViewerComponentLifecycleEvent, getFileViewerBeforeOperationHooks, getFileViewerLifecycleHookName, hasVisibleFileViewerToolbarActions, isFileViewerToolbarOperationPermitted, isFileViewerZoomButtonDisabled, normalizeFileViewerToolbar, reportFileViewerLifecycleHookError, reportFileViewerOperationError, resolveFileViewerBeforeOperationErrorMessage, resolveFileViewerLifecycleFallbackSource, resolveFileViewerLifecycleHookErrorMessage, resolveFileViewerOperationAvailability, resolveFileViewerToolbarPosition, resolveFileViewerToolbarOrder, resolveFileViewerToolbarState, resolveVisibleFileViewerToolbar, runFileViewerActiveUnloadComplete, runFileViewerActiveUnloadStart, runFileViewerBeforeOperation, runFileViewerLifecycleHook, runFileViewerToolbarAvailabilitySync, runFileViewerToolbarZoomSync, serializeFileViewerContext, } from './lifecycle/operations';
7
9
  export { FILE_VIEWER_BUILTIN_MESSAGES, FILE_VIEWER_DEFAULT_LOCALE, FILE_VIEWER_FALLBACK_LOCALE, FILE_VIEWER_SUPPORTED_LOCALES, createFileViewerTranslator, formatFileViewerMessage, normalizeFileViewerLocale, resolveFileViewerLocale, translateFileViewerMessage, } from './i18n/messages';
8
10
  export type { FileViewerI18nInput, FileViewerResolvedLocale, ResolveFileViewerI18nInput, } from './i18n/messages';
@@ -24,4 +26,4 @@ export { DEFAULT_FILE_VIEWER_STATE_THEME, DEFAULT_FILE_VIEWER_UNSUPPORTED_DESCRI
24
26
  export type { FileViewerErrorMessageFormatter, } from './viewer/state';
25
27
  export { buildFileViewerWatermarkBackgroundImage, buildFileViewerWatermarkInlineStyle, buildFileViewerWatermarkStyle, buildFileViewerWatermarkSvg, normalizeFileViewerWatermark, resolveFileViewerWatermarkPresentationState, } from './features/watermark';
26
28
  export type { FileViewerWatermarkPresentationState, FileViewerWatermarkStyle, } from './features/watermark';
27
- export type { FileRenderContext, FileRenderExportAdapter, FileRenderExportMode, FileRenderExportOptions, FileRenderHandler, FileRenderHandlerComposite, FileViewerBuiltinRendererPreset, FileViewerAiOptions, FileViewerArchiveEntryActionContext, FileViewerArchiveEntryActionPolicy, FileViewerArchiveEntryActionsOptions, FileViewerArchiveOptions, FileViewerApplyViewStateOptions, FileViewerBeforeOperation, FileViewerCadDwfLineWeightMode, FileViewerCadOptions, FileViewerCadRenderer, FileViewerComponentEmits, FileViewerComponentEventMap, FileViewerComponentProps, FileViewerDocumentAnchor, FileViewerDocumentChunk, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerDownloadOptions, FileViewerEvent, FileViewerEventHandler, FileViewerEventType, FileViewerExportHtmlOptions, FileViewerFileRef, FileViewerFitMode, FileViewerFitOptions, FileViewerFitRequest, FileViewerFitResize, FileViewerFitResult, FileViewerGeoOptions, FileViewerInstance, FileViewerLifecycleContext, FileViewerLifecycleHooks, FileViewerLifecyclePhase, FileViewerI18nOptions, FileViewerLocale, FileViewerMessageKey, FileViewerMessageParams, FileViewerMessageResolver, FileViewerMessages, FileViewerNavigationState, FileViewerOperationAvailability, FileViewerOperationContext, FileViewerOperationType, FileViewerOptions, FileViewerPdfOptions, FileViewerPresentationOptions, FileViewerPrintOptions, FileViewerPublicApi, FileViewerRenderStateKind, FileViewerRenderedInstance, FileViewerRendererCategory, FileViewerSearchMatch, FileViewerSearchOptions, FileViewerSearchProvider, FileViewerSearchState, FileViewerSource, FileViewerSourceKind, FileViewerSpreadsheetOptions, FileViewerStateDescriptor, FileViewerStateTheme, FileViewerTextOptions, FileViewerResolvedThemeMode, FileViewerThemeMode, FileViewerToolbarActionMap, FileViewerToolbarItem, FileViewerToolbarOptions, FileViewerToolbarPosition, FileViewerResolvedToolbarItem, FileViewerUiDensity, FileViewerUiOptions, FileViewerTypstOptions, FileViewerViewScrollState, FileViewerViewState, FileViewerViewStateChange, FileViewerViewStateChangeAction, FileViewerViewStateChangeSource, FileViewerViewStateProvider, FileViewerWatermarkOptions, FileViewerZoomProvider, FileViewerZoomState, NormalizedFileViewerSource, RenderSurface, RendererCapability, RendererDefinition, RendererLoadContext, RendererLoader, RendererPlugin, RendererRegistry, RendererSession, ViewerCapabilityState, ViewerLifecycleContext, ViewerOperationContext, } from './contracts/types';
29
+ export type { FileRenderContext, FileRenderExportAdapter, FileRenderExportMode, FileRenderExportOptions, FileRenderHandler, FileRenderHandlerComposite, FileViewerBuiltinRendererPreset, FileViewerAiOptions, FileViewerArchiveEntryActionContext, FileViewerArchiveEntryActionPolicy, FileViewerArchiveEntryActionsOptions, FileViewerArchiveOptions, FileViewerApplyViewStateOptions, FileViewerBeforeOperation, FileViewerCadDwfLineWeightMode, FileViewerCadOptions, FileViewerCadRenderer, FileViewerComponentEmits, FileViewerComponentEventMap, FileViewerComponentProps, FileViewerDocumentAnchor, FileViewerDocumentChunk, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerDownloadOptions, FileViewerEvent, FileViewerEventHandler, FileViewerEventType, FileViewerExportHtmlOptions, FileViewerFileRef, FileViewerFitMode, FileViewerFitOptions, FileViewerFitRequest, FileViewerFitResize, FileViewerFitResult, FileViewerGeoOptions, FileViewerInstance, FileViewerLifecycleContext, FileViewerLifecycleHooks, FileViewerLifecyclePhase, FileViewerI18nOptions, FileViewerLocale, FileViewerMessageKey, FileViewerMessageParams, FileViewerMessageResolver, FileViewerMessages, FileViewerNavigationState, FileViewerOperationAvailability, FileViewerOperationContext, FileViewerOperationType, FileViewerOptions, FileViewerPdfBoundingBox, FileViewerPdfBoundingBoxOrigin, FileViewerPdfBoundingBoxUnit, FileViewerPdfOptions, FileViewerPresentationOptions, FileViewerPrintMaskOptions, FileViewerPrintMaskRegion, FileViewerPrintOptions, FileViewerPrintStamp, FileViewerPublicApi, FileViewerRenderStateKind, FileViewerRenderedInstance, FileViewerRendererCategory, FileViewerSearchMatch, FileViewerSearchOptions, FileViewerSearchProvider, FileViewerSearchState, FileViewerSource, FileViewerSourceKind, FileViewerSpreadsheetOptions, FileViewerStateDescriptor, FileViewerStateTheme, FileViewerTextOptions, FileViewerResolvedThemeMode, FileViewerThemeMode, FileViewerToolbarActionMap, FileViewerToolbarItem, FileViewerToolbarOptions, FileViewerToolbarPosition, FileViewerResolvedToolbarItem, FileViewerUiDensity, FileViewerUiOptions, FileViewerTypstOptions, FileViewerViewScrollState, FileViewerViewState, FileViewerViewStateChange, FileViewerViewStateChangeAction, FileViewerViewStateChangeSource, FileViewerViewStateProvider, FileViewerWatermarkOptions, FileViewerZoomProvider, FileViewerZoomState, NormalizedFileViewerSource, RenderSurface, RendererCapability, RendererDefinition, RendererLoadContext, RendererLoader, RendererPlugin, RendererRegistry, RendererSession, ViewerCapabilityState, ViewerLifecycleContext, ViewerOperationContext, } from './contracts/types';
package/dist/headless.js CHANGED
@@ -7,6 +7,7 @@ export { DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, DEFAULT_FILE_VIEWER_ARCHIVE_WA
7
7
  export { ADAPTER_PRINT_REQUIRED_EXTENSIONS, applyFileViewerZoomAvailability, createUnsupportedAvailability, DEFAULT_OPERATION_AVAILABILITY, DOM_PRINTABLE_EXTENSIONS, getRendererAvailability, isDomPrintableExtension, isKnownNonPrintableExtension, needsDedicatedPrintAdapter, NON_PRINTABLE_EXTENSIONS, resolvePrintAvailability, } from './registry/capabilities.js';
8
8
  export { DEFAULT_FILE_VIEWER_TEXT_CHUNK_OVERLAP, DEFAULT_FILE_VIEWER_TEXT_CHUNK_SIZE, DEFAULT_FILE_VIEWER_ZOOM_SCALE, buildFileViewerDocumentTextChunks, createEmptyFileViewerSearchState, createFileViewerZoomState, normalizeFileViewerAiOptions, normalizeFileViewerSearchOptions, } from './features/document/model.js';
9
9
  export { ARCHIVE_EXTENSIONS, DEFAULT_RENDERER_DEFINITIONS, DEFAULT_SUPPORTED_EXTENSIONS, IMAGE_EXTENSIONS, MODEL_EXTENSIONS, TEXT_EXTENSIONS, } from './registry/formats.js';
10
+ export { precheckFileViewerSource } from './source/precheck.js';
10
11
  export { FILE_VIEWER_BEFORE_OPERATION_ERROR_PREFIX, DEFAULT_FILE_VIEWER_TOOLBAR_ORDER, FILE_VIEWER_LIFECYCLE_HOOK_ERROR_MESSAGE_PREFIX, FILE_VIEWER_LIFECYCLE_HOOKS, FILE_VIEWER_OPERATION_LABELS, buildFileViewerLifecycleContext, buildFileViewerLifecycleContextFromNormalizedSource, buildFileViewerOperationContext, buildFileViewerOperationContextFromLifecycleState, cloneFileViewerOperationAvailability, createFileViewerLifecycleActions, createFileViewerLifecycleStateController, createFileViewerPublicApi, createFileViewerToolbarActions, createFileViewerToolbarControllerActionHandlers, createFileViewerToolbarZoomSyncSnapshot, DEFAULT_FILE_VIEWER_LIFECYCLE_HOOK_ERROR_LOGGER, DEFAULT_FILE_VIEWER_OPERATION_ERROR_LOGGER, dispatchFileViewerLifecycleEvent, dispatchFileViewerOperationAvailabilityChange, dispatchFileViewerOperationContextEvent, dispatchFileViewerZoomChange, emitFileViewerComponentLifecycleEvent, getFileViewerBeforeOperationHooks, getFileViewerLifecycleHookName, hasVisibleFileViewerToolbarActions, isFileViewerToolbarOperationPermitted, isFileViewerZoomButtonDisabled, normalizeFileViewerToolbar, reportFileViewerLifecycleHookError, reportFileViewerOperationError, resolveFileViewerBeforeOperationErrorMessage, resolveFileViewerLifecycleFallbackSource, resolveFileViewerLifecycleHookErrorMessage, resolveFileViewerOperationAvailability, resolveFileViewerToolbarPosition, resolveFileViewerToolbarOrder, resolveFileViewerToolbarState, resolveVisibleFileViewerToolbar, runFileViewerActiveUnloadComplete, runFileViewerActiveUnloadStart, runFileViewerBeforeOperation, runFileViewerLifecycleHook, runFileViewerToolbarAvailabilitySync, runFileViewerToolbarZoomSync, serializeFileViewerContext, } from './lifecycle/operations.js';
11
12
  export { FILE_VIEWER_BUILTIN_MESSAGES, FILE_VIEWER_DEFAULT_LOCALE, FILE_VIEWER_FALLBACK_LOCALE, FILE_VIEWER_SUPPORTED_LOCALES, createFileViewerTranslator, formatFileViewerMessage, normalizeFileViewerLocale, resolveFileViewerLocale, translateFileViewerMessage, } from './i18n/messages.js';
12
13
  export { getFileViewerOptionsSearchParam, normalizeFileViewerUiDensity, normalizeFileViewerTheme, parseFileViewerOptions, resolveFileViewerColorScheme, resolveFileViewerUiDensity, sanitizeFileViewerOptions, serializeFileViewerOptions, setFileViewerOptionsSearchParam, toggleFileViewerColorScheme, } from './config/options.js';
@@ -13,13 +13,16 @@ export const JA_JP_MESSAGES = {
13
13
  'toolbar.print': '印刷',
14
14
  'toolbar.printTitle': 'レンダリング済みの全内容を印刷',
15
15
  'toolbar.printDirect': '直接印刷',
16
- 'toolbar.printMask': 'マスクして印刷',
17
- 'toolbar.printMaskTitle': '機密領域を隠してから印刷',
16
+ 'toolbar.printMask': 'マスク・印章付き印刷',
17
+ 'toolbar.printMaskTitle': '機密領域を隠すか印章を追加してから印刷',
18
18
  'toolbar.printMaskAdd': 'マスクを追加',
19
19
  'toolbar.printMaskClear': 'クリア',
20
20
  'toolbar.printMaskCancel': 'キャンセル',
21
21
  'toolbar.printMaskConfirm': '印刷を確定',
22
- 'toolbar.printMaskHint': 'ドラッグして黒いマスクを描画します。削除して再調整できます。',
22
+ 'toolbar.printMaskHint': 'マスクを描画するか、印章をアップロードして移動・サイズ変更します。',
23
+ 'toolbar.printStampUpload': '印章をアップロード',
24
+ 'toolbar.printStampRemove': '印章を削除',
25
+ 'toolbar.printStampResize': '印章のサイズ変更',
23
26
  'toolbar.exportHtml': 'HTML',
24
27
  'toolbar.exportHtmlTitle': '現在のレンダリング結果を HTML として書き出す',
25
28
  'toolbar.search': '検索',
@@ -332,6 +335,9 @@ export const JA_JP_MESSAGES = {
332
335
  'cad.state.parsing': 'CAD を解析しています...',
333
336
  'cad.error.parseFailed': 'CAD ファイルの解析に失敗しました',
334
337
  'image.alt': '画像',
338
+ 'image.toolbar.rotation': '画像の回転',
339
+ 'image.toolbar.rotateLeft': '画像を左に回転',
340
+ 'image.toolbar.rotateRight': '画像を右に回転',
335
341
  'image.lightbox.alt': '画像プレビュー',
336
342
  'image.lightbox.close': '画像プレビューを閉じる',
337
343
  'gitBundle.error.invalid': '有効な Git bundle ファイルではありません。',
@@ -12,13 +12,16 @@ const ZH_CN_MESSAGES = {
12
12
  'toolbar.print': '打印',
13
13
  'toolbar.printTitle': '打印完整渲染内容',
14
14
  'toolbar.printDirect': '直接打印',
15
- 'toolbar.printMask': '掩膜打印',
16
- 'toolbar.printMaskTitle': '遮盖敏感区域后再打印',
15
+ 'toolbar.printMask': '遮罩/盖章打印',
16
+ 'toolbar.printMaskTitle': '遮盖敏感区域或上传印章后再打印',
17
17
  'toolbar.printMaskAdd': '添加掩膜',
18
18
  'toolbar.printMaskClear': '清空',
19
19
  'toolbar.printMaskCancel': '取消',
20
20
  'toolbar.printMaskConfirm': '确认打印',
21
- 'toolbar.printMaskHint': '拖拽绘制黑色遮盖块,可删除后继续调整',
21
+ 'toolbar.printMaskHint': '绘制遮盖块,或上传印章后拖动和缩放',
22
+ 'toolbar.printStampUpload': '上传印章',
23
+ 'toolbar.printStampRemove': '删除印章',
24
+ 'toolbar.printStampResize': '缩放印章',
22
25
  'toolbar.exportHtml': 'HTML',
23
26
  'toolbar.exportHtmlTitle': '导出当前渲染后的 HTML',
24
27
  'toolbar.search': '搜索',
@@ -331,6 +334,9 @@ const ZH_CN_MESSAGES = {
331
334
  'cad.state.parsing': '正在解析 CAD...',
332
335
  'cad.error.parseFailed': 'CAD 文件解析失败',
333
336
  'image.alt': '图片',
337
+ 'image.toolbar.rotation': '图片旋转',
338
+ 'image.toolbar.rotateLeft': '向左旋转图片',
339
+ 'image.toolbar.rotateRight': '向右旋转图片',
334
340
  'image.lightbox.alt': '图片预览',
335
341
  'image.lightbox.close': '关闭图片预览',
336
342
  'gitBundle.error.invalid': '当前文件不是标准 Git bundle。',
@@ -436,13 +442,16 @@ const EN_US_MESSAGES = {
436
442
  'toolbar.print': 'Print',
437
443
  'toolbar.printTitle': 'Print the complete rendered document',
438
444
  'toolbar.printDirect': 'Print now',
439
- 'toolbar.printMask': 'Mask & print',
440
- 'toolbar.printMaskTitle': 'Cover sensitive areas before printing',
445
+ 'toolbar.printMask': 'Mask / stamp & print',
446
+ 'toolbar.printMaskTitle': 'Cover sensitive areas or add a stamp before printing',
441
447
  'toolbar.printMaskAdd': 'Add mask',
442
448
  'toolbar.printMaskClear': 'Clear',
443
449
  'toolbar.printMaskCancel': 'Cancel',
444
450
  'toolbar.printMaskConfirm': 'Print',
445
- 'toolbar.printMaskHint': 'Drag to draw black cover blocks. Delete and adjust as needed.',
451
+ 'toolbar.printMaskHint': 'Draw cover blocks, or upload a stamp and drag or resize it.',
452
+ 'toolbar.printStampUpload': 'Upload stamp',
453
+ 'toolbar.printStampRemove': 'Remove stamp',
454
+ 'toolbar.printStampResize': 'Resize stamp',
446
455
  'toolbar.exportHtml': 'HTML',
447
456
  'toolbar.exportHtmlTitle': 'Export the rendered HTML',
448
457
  'toolbar.search': 'Search',
@@ -755,6 +764,9 @@ const EN_US_MESSAGES = {
755
764
  'cad.state.parsing': 'Parsing CAD...',
756
765
  'cad.error.parseFailed': 'Failed to parse CAD file',
757
766
  'image.alt': 'Image',
767
+ 'image.toolbar.rotation': 'Image rotation',
768
+ 'image.toolbar.rotateLeft': 'Rotate image left',
769
+ 'image.toolbar.rotateRight': 'Rotate image right',
758
770
  'image.lightbox.alt': 'Image preview',
759
771
  'image.lightbox.close': 'Close image preview',
760
772
  'gitBundle.error.invalid': 'This file is not a valid Git bundle.',
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import type { FileRenderContext, FileViewerRenderedInstance } from './contracts/types';
2
2
  export { DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_LIBREDWG_SCRIPT_PATH, DEFAULT_FILE_VIEWER_CAD_LIBREDWG_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_RUNTIME_VERSION, DEFAULT_FILE_VIEWER_CAD_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WORKER_PATH, DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL, DEFAULT_FILE_VIEWER_MODEL_RUNTIME_PACKAGE_PATH, DEFAULT_FILE_VIEWER_MODEL_RUNTIME_URL, DEFAULT_FILE_VIEWER_MODEL_IMPORT_LICENSE_PACKAGE_PATH, DEFAULT_FILE_VIEWER_MODEL_IMPORT_LICENSE_URL, DEFAULT_FILE_VIEWER_MODEL_OCCT_LICENSE_PACKAGE_PATH, DEFAULT_FILE_VIEWER_MODEL_OCCT_LICENSE_URL, DEFAULT_FILE_VIEWER_MODEL_WASM_PACKAGE_PATH, DEFAULT_FILE_VIEWER_MODEL_WASM_URL, DEFAULT_FILE_VIEWER_MODEL_WORKER_URL, DEFAULT_FILE_VIEWER_DOCX_WORKER_JSZIP_PATH, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, DEFAULT_FILE_VIEWER_DOCX_RUNTIME_VERSION, DEFAULT_FILE_VIEWER_PDF_CMAP_PATH, DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH, DEFAULT_FILE_VIEWER_PDF_WASM_PATH, DEFAULT_FILE_VIEWER_PDF_WORKER_PATH, DEFAULT_FILE_VIEWER_PPT_FONT_PATH, DEFAULT_FILE_VIEWER_PPT_FRAME_CACHE_PATH, DEFAULT_FILE_VIEWER_PPT_MODULE_PATH, DEFAULT_FILE_VIEWER_PPT_RUNTIME_PATH, DEFAULT_FILE_VIEWER_PPT_RUNTIME_VERSION, DEFAULT_FILE_VIEWER_PPT_WASM_PATH, DEFAULT_FILE_VIEWER_PPT_WORKER_PATH, DEFAULT_FILE_VIEWER_PRESENTATION_WORKER_PATH, DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH, getDefaultFileViewerAssetBaseUrl, getFileViewerRendererAssetManifest, listFileViewerRendererAssetManifests, normalizeFileViewerAssetBaseUrl, resetDefaultFileViewerAssetBaseUrl, resolveFileViewerArchiveWasmUrl, resolveFileViewerArchiveWorkerUrl, resolveFileViewerAssetUrl, resolveFileViewerCadAssetUrls, resolveFileViewerDataSqlWasmUrl, resolveFileViewerDocxWorkerJsZipUrl, resolveFileViewerDocxWorkerUrl, resolveFileViewerDrawioViewerScriptUrl, resolveFileViewerModelAssetUrls, resolveFileViewerPdfAssetUrls, resolveFileViewerPresentationWorkerUrl, resolveFileViewerRendererAssets, resolveFileViewerRuntimeAssetBaseUrl, resolveFileViewerSpreadsheetWorkerUrl, resolveFileViewerTypstCompilerWasmUrl, resolveFileViewerTypstRendererWasmUrl, setDefaultFileViewerAssetBaseUrl, } from './assets';
3
3
  export { ARCHIVE_EXTENSIONS, DEFAULT_RENDERER_DEFINITIONS, DEFAULT_SUPPORTED_EXTENSIONS, IMAGE_EXTENSIONS, MODEL_EXTENSIONS, TEXT_EXTENSIONS, } from './registry/formats';
4
+ export { precheckFileViewerSource } from './source/precheck';
5
+ export type { FileViewerPrecheckOptions, FileViewerPrecheckReason, FileViewerPrecheckResult, FileViewerPrecheckStatus, } from './source/precheck';
4
6
  export { DEFAULT_FILE_VIEWER_TEXT_CHUNK_OVERLAP, DEFAULT_FILE_VIEWER_TEXT_CHUNK_SIZE, DEFAULT_FILE_VIEWER_ZOOM_SCALE, buildFileViewerDocumentTextChunks, createEmptyFileViewerSearchState, createFileViewerZoomState, normalizeFileViewerAiOptions, normalizeFileViewerSearchOptions, } from './features/document/model';
5
7
  export { DEFAULT_FILE_VIEWER_SEARCH_ACTIVE_CLASS, DEFAULT_FILE_VIEWER_SEARCH_MATCH_CLASS, DEFAULT_FILE_VIEWER_SEARCH_MAX_MATCHES, applyFileViewerSearchState, cloneFileViewerSearchState, createFileViewerDomSearchController, createFileViewerDomSearchControllerActionHandlers, destroyFileViewerDomSearchController, observeFileViewerDomSearchController, runFileViewerDomSearchControllerAction, syncFileViewerDomSearchControllerState, } from './features/document/search';
6
8
  export type { FileViewerDocumentAnchorsTarget, FileViewerDomSearchController, FileViewerDomSearchControllerActionHandlers, FileViewerDomSearchControllerStateTarget, MutableFileViewerSearchState, } from './features/document/search';
@@ -67,7 +69,7 @@ export { DEFAULT_FILE_VIEWER_STATE_THEME, DEFAULT_FILE_VIEWER_UNSUPPORTED_DESCRI
67
69
  export type { FileViewerErrorMessageFormatter, FileViewerRendererInstallHint, } from './viewer/state';
68
70
  export { buildFileViewerWatermarkBackgroundImage, buildFileViewerWatermarkInlineStyle, buildFileViewerWatermarkStyle, buildFileViewerWatermarkSvg, normalizeFileViewerWatermark, resolveFileViewerWatermarkPresentationState, } from './features/watermark';
69
71
  export type { FileViewerWatermarkPresentationState, FileViewerWatermarkStyle, } from './features/watermark';
70
- export { buildFileViewerPrintMaskOverlayHtml, applyFileViewerPagePrintMasksToHtml, normalizeFileViewerPrintMaskOptions, normalizeFileViewerPrintMaskRegion, FILE_VIEWER_PRINT_MASK_STYLE, } from './features/printMask';
72
+ export { buildFileViewerPrintMaskOverlayHtml, applyFileViewerPagePrintMasksToHtml, normalizeFileViewerPrintMaskOptions, normalizeFileViewerPrintMaskRegion, normalizeFileViewerPrintStamp, FILE_VIEWER_PRINT_MASK_STYLE, } from './features/printMask';
71
73
  export { openFileViewerPrintMaskDesignerAsync, } from './features/printMaskLoader';
72
74
  export type { FileViewerPrintMaskDesignerResult, OpenFileViewerPrintMaskDesignerOptions, } from './features/printMaskDesigner';
73
75
  export { cancelFileViewerPreviewRequest, DEFAULT_FILE_VIEWER_STREAMING_PDF_FILENAME, DEFAULT_FILE_VIEWER_PREVIEW_LOAD_ERROR_LOGGER, DEFAULT_PDF_RANGE_CHUNK_SIZE, FILE_VIEWER_PREVIEW_LOAD_ERROR_PREFIXES, FILE_VIEWER_REMOTE_MISSING_DATA_ERROR_MESSAGE, applyFileViewerEmptyPreviewState, applyFileViewerPreviewFilenameState, applyFileViewerPreviewSourceUrlState, applyFileViewerReadPreviewState, applyFileViewerRenderReadinessState, applyFileViewerPreviewRequestResetState, commitFileViewerEmptyPreviewResetState, commitFileViewerLoadStartState, commitFileViewerPreviewRequestStartState, commitFileViewerRenderCompleteState, commitFileViewerRemoteDownloadState, createFileViewerEmptyPreviewState, createFileViewerLoadStartState, createFileViewerPreviewStateTarget, createFileViewerSourceLoadingActionHandlers, createFileViewerReadPreviewState, createFileViewerPreviewRequestResetState, createFileViewerRenderCompleteState, createFileViewerRequestController, createFileViewerRequestScope, createFileViewerStreamingPdfPlaceholderFile, finalizeFileViewerPreviewLoadState, hasFileViewerPreviewSource, isFileViewerAbortError, isSameOriginUrl, normalizeFileViewerSourceUrl, normalizePdfStreamingMode, resolveFileViewerFileRefSourcePlan, resolveFileViewerLoadStartMessage, resolveFileViewerMissingRemoteDataErrorMessage, resolveFileViewerPreviewLoadErrorMessage, resolveFileViewerPreviewRequestReason, resolveFileViewerRemoteSourcePlan, resolveFileViewerPageHref, reportFileViewerMissingRemoteData, reportFileViewerPreviewLoadError, runFileViewerLocalFilePreview, runFileViewerPreviewComponentUnmount, runFileViewerPreviewRequest, runFileViewerPreviewSourceChange, runFileViewerRemoteFilePreview, runFileViewerReadAndRenderFile, runFileViewerStreamingPdfPreview, shouldStreamPdfUrl, } from './source/loading';
@@ -88,4 +90,4 @@ export type { CreateFileViewerZoomControllerOptions, FileViewerZoomOperation, }
88
90
  export type { CreateViewerOptions } from './viewer/createViewer';
89
91
  export type { BuildExportHtmlDocumentOptions, BuildFileViewerRenderedHtmlDocumentOptions, } from './output/export';
90
92
  export type { CreateFileViewerWorkerControllerOptions, FileViewerWorkerContext, FileViewerWorkerController, FileViewerWorkerErrorHook, FileViewerWorkerEventHandler, FileViewerWorkerFactory, FileViewerWorkerMessageHook, WorkerProvider, WorkerRef, } from './platform/worker';
91
- export type { FileViewerAiOptions, FileViewerArchiveEntryActionContext, FileViewerArchiveEntryActionPolicy, FileViewerArchiveEntryActionsOptions, FileViewerArchivePasswordRequestContext, FileViewerArchivePasswordRequestReason, FileViewerArchiveOptions, FileViewerApplyViewStateOptions, FileViewerBeforeOperation, FileViewerCadDwfLineWeightMode, FileViewerCadOptions, FileViewerCadRenderer, FileViewerModelLinearUnit, FileViewerModelOptions, FileViewerComponentEmits, FileViewerComponentEventMap, FileViewerComponentProps, FileViewerDocumentAnchor, FileViewerDocumentChunk, FileViewerDownloadOptions, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerEvent, FileViewerEventHandler, FileViewerEventType, FileViewerExportHtmlOptions, FileViewerFileRef, FileViewerFitMode, FileViewerFitOptions, FileViewerFitRequest, FileViewerFitResize, FileViewerFitResult, FileViewerGeoBasemapOptions, FileViewerGeoBasemapPreset, FileViewerGeoOptions, FileRenderContext, FileRenderExportAdapter, FileRenderThumbnailAdapter, FileRenderExportMode, FileRenderExportOptions, FileRenderHandler, FileRenderHandlerComposite, FileViewerBuiltinRendererPreset, FileViewerInstance, FileViewerLoadOptions, FileViewerLifecycleContext, FileViewerLifecycleHooks, FileViewerLifecyclePhase, FileViewerI18nOptions, FileViewerLocale, FileViewerMessageKey, FileViewerMessageParams, FileViewerMessageResolver, FileViewerMessages, FileViewerNavigationState, FileViewerOperationAvailability, FileViewerOperationContext, FileViewerOperationType, FileViewerOptions, FileViewerPdfOptions, FileViewerPresentationOptions, FileViewerPrintOptions, FileViewerPublicApi, FileViewerRenderedInstance, FileViewerRendererMode, FileViewerRendererPluginAssetKind, FileViewerRendererPluginAssetManifest, FileViewerRendererPluginAssetEntry, FileViewerRenderStateKind, FileViewerRenderPurpose, FileViewerRendererCategory, FileViewerRendererHandlerRegistration, FileViewerRendererInstallContext, FileViewerRendererPlugin, FileViewerRendererPluginInput, FileViewerRendererPresetInput, FileViewerRendererPresetName, FileViewerRendererPreset, FileViewerSearchMatch, FileViewerSearchOptions, FileViewerSearchProvider, FileViewerSearchState, FileViewerSource, FileViewerSourceKind, FileViewerThumbnailCaptureOptions, FileViewerThumbnailFit, FileViewerThumbnailFormat, FileViewerSpreadsheetOptions, FileViewerStateDescriptor, FileViewerStateTheme, FileViewerStyleIsolation, FileViewerTextOptions, FileViewerResolvedThemeMode, FileViewerThemeMode, FileViewerToolbarActionMap, FileViewerToolbarItem, FileViewerToolbarOptions, FileViewerToolbarPosition, FileViewerResolvedToolbarItem, FileViewerUiDensity, FileViewerUiOptions, FileViewerTypstOptions, FileViewerViewScrollState, FileViewerViewState, FileViewerViewStateChange, FileViewerViewStateChangeAction, FileViewerViewStateChangeSource, FileViewerViewStateProvider, FileViewerWatermarkOptions, FileViewerZoomProvider, FileViewerZoomState, NormalizedFileViewerSource, RendererCapability, RendererDefinition, RendererPlugin, RendererLoadContext, RendererLoader, RendererRegistry, RendererSession, RenderSurface, ViewerCapabilityState, ViewerLifecycleContext, ViewerOperationContext, } from './contracts/types';
93
+ export type { FileViewerAiOptions, FileViewerArchiveEntryActionContext, FileViewerArchiveEntryActionPolicy, FileViewerArchiveEntryActionsOptions, FileViewerArchivePasswordRequestContext, FileViewerArchivePasswordRequestReason, FileViewerArchiveOptions, FileViewerApplyViewStateOptions, FileViewerBeforeOperation, FileViewerCadDwfLineWeightMode, FileViewerCadOptions, FileViewerCadRenderer, FileViewerModelLinearUnit, FileViewerModelOptions, FileViewerComponentEmits, FileViewerComponentEventMap, FileViewerComponentProps, FileViewerDocumentAnchor, FileViewerDocumentChunk, FileViewerDownloadOptions, FileViewerDocxOptions, FileViewerDrawingOptions, FileViewerEvent, FileViewerEventHandler, FileViewerEventType, FileViewerExportHtmlOptions, FileViewerFileRef, FileViewerFitMode, FileViewerFitOptions, FileViewerFitRequest, FileViewerFitResize, FileViewerFitResult, FileViewerGeoBasemapOptions, FileViewerGeoBasemapPreset, FileViewerGeoOptions, FileViewerTiandituMapStyle, FileRenderContext, FileRenderExportAdapter, FileRenderThumbnailAdapter, FileRenderExportMode, FileRenderExportOptions, FileRenderHandler, FileRenderHandlerComposite, FileViewerBuiltinRendererPreset, FileViewerInstance, FileViewerLoadOptions, FileViewerLifecycleContext, FileViewerLifecycleHooks, FileViewerLifecyclePhase, FileViewerI18nOptions, FileViewerLocale, FileViewerMessageKey, FileViewerMessageParams, FileViewerMessageResolver, FileViewerMessages, FileViewerNavigationState, FileViewerOperationAvailability, FileViewerOperationContext, FileViewerOperationType, FileViewerOptions, FileViewerPdfBoundingBox, FileViewerPdfBoundingBoxOrigin, FileViewerPdfBoundingBoxUnit, FileViewerPdfOptions, FileViewerPresentationOptions, FileViewerPrintOptions, FileViewerPrintMaskOptions, FileViewerPrintMaskRegion, FileViewerPrintStamp, FileViewerPublicApi, FileViewerRenderedInstance, FileViewerRendererMode, FileViewerRendererPluginAssetKind, FileViewerRendererPluginAssetManifest, FileViewerRendererPluginAssetEntry, FileViewerRenderStateKind, FileViewerRenderPurpose, FileViewerRendererCategory, FileViewerRendererHandlerRegistration, FileViewerRendererInstallContext, FileViewerRendererPlugin, FileViewerRendererPluginInput, FileViewerRendererPresetInput, FileViewerRendererPresetName, FileViewerRendererPreset, FileViewerSearchMatch, FileViewerSearchOptions, FileViewerSearchProvider, FileViewerSearchState, FileViewerSource, FileViewerSourceKind, FileViewerThumbnailCaptureOptions, FileViewerThumbnailFit, FileViewerThumbnailFormat, FileViewerSpreadsheetOptions, FileViewerStateDescriptor, FileViewerStateTheme, FileViewerStyleIsolation, FileViewerTextOptions, FileViewerResolvedThemeMode, FileViewerThemeMode, FileViewerToolbarActionMap, FileViewerToolbarItem, FileViewerToolbarOptions, FileViewerToolbarPosition, FileViewerResolvedToolbarItem, FileViewerUiDensity, FileViewerUiOptions, FileViewerTypstOptions, FileViewerViewScrollState, FileViewerViewState, FileViewerViewStateChange, FileViewerViewStateChangeAction, FileViewerViewStateChangeSource, FileViewerViewStateProvider, FileViewerWatermarkOptions, FileViewerZoomProvider, FileViewerZoomState, NormalizedFileViewerSource, RendererCapability, RendererDefinition, RendererPlugin, RendererLoadContext, RendererLoader, RendererRegistry, RendererSession, RenderSurface, ViewerCapabilityState, ViewerLifecycleContext, ViewerOperationContext, } from './contracts/types';
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_LIBREDWG_SCRIPT_PATH, DEFAULT_FILE_VIEWER_CAD_LIBREDWG_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_RUNTIME_VERSION, DEFAULT_FILE_VIEWER_CAD_WASM_PATH, DEFAULT_FILE_VIEWER_CAD_WORKER_PATH, DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL, DEFAULT_FILE_VIEWER_MODEL_RUNTIME_PACKAGE_PATH, DEFAULT_FILE_VIEWER_MODEL_RUNTIME_URL, DEFAULT_FILE_VIEWER_MODEL_IMPORT_LICENSE_PACKAGE_PATH, DEFAULT_FILE_VIEWER_MODEL_IMPORT_LICENSE_URL, DEFAULT_FILE_VIEWER_MODEL_OCCT_LICENSE_PACKAGE_PATH, DEFAULT_FILE_VIEWER_MODEL_OCCT_LICENSE_URL, DEFAULT_FILE_VIEWER_MODEL_WASM_PACKAGE_PATH, DEFAULT_FILE_VIEWER_MODEL_WASM_URL, DEFAULT_FILE_VIEWER_MODEL_WORKER_URL, DEFAULT_FILE_VIEWER_DOCX_WORKER_JSZIP_PATH, DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH, DEFAULT_FILE_VIEWER_DOCX_RUNTIME_VERSION, DEFAULT_FILE_VIEWER_PDF_CMAP_PATH, DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH, DEFAULT_FILE_VIEWER_PDF_WASM_PATH, DEFAULT_FILE_VIEWER_PDF_WORKER_PATH, DEFAULT_FILE_VIEWER_PPT_FONT_PATH, DEFAULT_FILE_VIEWER_PPT_FRAME_CACHE_PATH, DEFAULT_FILE_VIEWER_PPT_MODULE_PATH, DEFAULT_FILE_VIEWER_PPT_RUNTIME_PATH, DEFAULT_FILE_VIEWER_PPT_RUNTIME_VERSION, DEFAULT_FILE_VIEWER_PPT_WASM_PATH, DEFAULT_FILE_VIEWER_PPT_WORKER_PATH, DEFAULT_FILE_VIEWER_PRESENTATION_WORKER_PATH, DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS, DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH, DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL, DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH, getDefaultFileViewerAssetBaseUrl, getFileViewerRendererAssetManifest, listFileViewerRendererAssetManifests, normalizeFileViewerAssetBaseUrl, resetDefaultFileViewerAssetBaseUrl, resolveFileViewerArchiveWasmUrl, resolveFileViewerArchiveWorkerUrl, resolveFileViewerAssetUrl, resolveFileViewerCadAssetUrls, resolveFileViewerDataSqlWasmUrl, resolveFileViewerDocxWorkerJsZipUrl, resolveFileViewerDocxWorkerUrl, resolveFileViewerDrawioViewerScriptUrl, resolveFileViewerModelAssetUrls, resolveFileViewerPdfAssetUrls, resolveFileViewerPresentationWorkerUrl, resolveFileViewerRendererAssets, resolveFileViewerRuntimeAssetBaseUrl, resolveFileViewerSpreadsheetWorkerUrl, resolveFileViewerTypstCompilerWasmUrl, resolveFileViewerTypstRendererWasmUrl, setDefaultFileViewerAssetBaseUrl, } from './assets.js';
2
2
  export { ARCHIVE_EXTENSIONS, DEFAULT_RENDERER_DEFINITIONS, DEFAULT_SUPPORTED_EXTENSIONS, IMAGE_EXTENSIONS, MODEL_EXTENSIONS, TEXT_EXTENSIONS, } from './registry/formats.js';
3
+ export { precheckFileViewerSource } from './source/precheck.js';
3
4
  export { DEFAULT_FILE_VIEWER_TEXT_CHUNK_OVERLAP, DEFAULT_FILE_VIEWER_TEXT_CHUNK_SIZE, DEFAULT_FILE_VIEWER_ZOOM_SCALE, buildFileViewerDocumentTextChunks, createEmptyFileViewerSearchState, createFileViewerZoomState, normalizeFileViewerAiOptions, normalizeFileViewerSearchOptions, } from './features/document/model.js';
4
5
  export { DEFAULT_FILE_VIEWER_SEARCH_ACTIVE_CLASS, DEFAULT_FILE_VIEWER_SEARCH_MATCH_CLASS, DEFAULT_FILE_VIEWER_SEARCH_MAX_MATCHES, applyFileViewerSearchState, cloneFileViewerSearchState, createFileViewerDomSearchController, createFileViewerDomSearchControllerActionHandlers, destroyFileViewerDomSearchController, observeFileViewerDomSearchController, runFileViewerDomSearchControllerAction, syncFileViewerDomSearchControllerState, } from './features/document/search.js';
5
6
  export { createFileViewerDocumentFeatureActions, createFileViewerDocumentFeatureControllerActionHandlers, createFileViewerDocumentChangeSnapshot, createFileViewerSearchChangeState, dispatchFileViewerLocationChange, dispatchFileViewerSearchChange, resolveFileViewerLocationChangeAnchor, } from './features/document/events.js';
@@ -173,7 +174,7 @@ export { appendFileViewerStyle, buildFileRenderContextFromLoadContext, applyFile
173
174
  export { DEFAULT_FILE_VIEWER_SOURCE_FILENAME, decodeFilename, getExtension, normalizeFileExtension, normalizeFilename, resolveFileViewerSourceFilename, normalizeSource, readFileViewerBuffer, readFileViewerDataUrl, readFileViewerText, wrapFileViewerFileRef, } from './source/index.js';
174
175
  export { DEFAULT_FILE_VIEWER_STATE_THEME, DEFAULT_FILE_VIEWER_UNSUPPORTED_DESCRIPTION, FILE_VIEWER_PREVIEW_MESSAGES, createFileViewerEmptyState, createFileViewerErrorState, createFileViewerPreviewLoadingState, createFileViewerReadyState, createFileViewerUnsupportedState, formatFileViewerErrorMessage, normalizeFileViewerErrorMessage, resolveFileViewerRendererInstallHint, } from './viewer/state.js';
175
176
  export { buildFileViewerWatermarkBackgroundImage, buildFileViewerWatermarkInlineStyle, buildFileViewerWatermarkStyle, buildFileViewerWatermarkSvg, normalizeFileViewerWatermark, resolveFileViewerWatermarkPresentationState, } from './features/watermark.js';
176
- export { buildFileViewerPrintMaskOverlayHtml, applyFileViewerPagePrintMasksToHtml, normalizeFileViewerPrintMaskOptions, normalizeFileViewerPrintMaskRegion, FILE_VIEWER_PRINT_MASK_STYLE, } from './features/printMask.js';
177
+ export { buildFileViewerPrintMaskOverlayHtml, applyFileViewerPagePrintMasksToHtml, normalizeFileViewerPrintMaskOptions, normalizeFileViewerPrintMaskRegion, normalizeFileViewerPrintStamp, FILE_VIEWER_PRINT_MASK_STYLE, } from './features/printMask.js';
177
178
  export { openFileViewerPrintMaskDesignerAsync, } from './features/printMaskLoader.js';
178
179
  export { cancelFileViewerPreviewRequest, DEFAULT_FILE_VIEWER_STREAMING_PDF_FILENAME, DEFAULT_FILE_VIEWER_PREVIEW_LOAD_ERROR_LOGGER, DEFAULT_PDF_RANGE_CHUNK_SIZE, FILE_VIEWER_PREVIEW_LOAD_ERROR_PREFIXES, FILE_VIEWER_REMOTE_MISSING_DATA_ERROR_MESSAGE, applyFileViewerEmptyPreviewState, applyFileViewerPreviewFilenameState, applyFileViewerPreviewSourceUrlState, applyFileViewerReadPreviewState, applyFileViewerRenderReadinessState, applyFileViewerPreviewRequestResetState, commitFileViewerEmptyPreviewResetState, commitFileViewerLoadStartState, commitFileViewerPreviewRequestStartState, commitFileViewerRenderCompleteState, commitFileViewerRemoteDownloadState, createFileViewerEmptyPreviewState, createFileViewerLoadStartState, createFileViewerPreviewStateTarget, createFileViewerSourceLoadingActionHandlers, createFileViewerReadPreviewState, createFileViewerPreviewRequestResetState, createFileViewerRenderCompleteState, createFileViewerRequestController, createFileViewerRequestScope, createFileViewerStreamingPdfPlaceholderFile, finalizeFileViewerPreviewLoadState, hasFileViewerPreviewSource, isFileViewerAbortError, isSameOriginUrl, normalizeFileViewerSourceUrl, normalizePdfStreamingMode, resolveFileViewerFileRefSourcePlan, resolveFileViewerLoadStartMessage, resolveFileViewerMissingRemoteDataErrorMessage, resolveFileViewerPreviewLoadErrorMessage, resolveFileViewerPreviewRequestReason, resolveFileViewerRemoteSourcePlan, resolveFileViewerPageHref, reportFileViewerMissingRemoteData, reportFileViewerPreviewLoadError, runFileViewerLocalFilePreview, runFileViewerPreviewComponentUnmount, runFileViewerPreviewRequest, runFileViewerPreviewSourceChange, runFileViewerRemoteFilePreview, runFileViewerReadAndRenderFile, runFileViewerStreamingPdfPreview, shouldStreamPdfUrl, } from './source/loading.js';
179
180
  export { createViewer } from './viewer/createViewer.js';
@@ -289,7 +289,7 @@ export const collectDocumentStyles = () => {
289
289
  .join('\n');
290
290
  };
291
291
  export const buildExportHtmlDocument = ({ contentHtml, includeDocumentStyles = true, printStyle = '', title, watermarkInlineStyle = '', mask = null, }) => {
292
- var _a;
292
+ var _a, _b;
293
293
  const watermark = watermarkInlineStyle
294
294
  ? `<div class="viewer-export-watermark" style="${watermarkInlineStyle}"></div>`
295
295
  : '';
@@ -298,6 +298,7 @@ export const buildExportHtmlDocument = ({ contentHtml, includeDocumentStyles = t
298
298
  ? {
299
299
  ...normalizedMask,
300
300
  regions: (_a = normalizedMask.regions) === null || _a === void 0 ? void 0 : _a.filter(region => region.pageIndex === undefined),
301
+ stamps: (_b = normalizedMask.stamps) === null || _b === void 0 ? void 0 : _b.filter(stamp => stamp.pageIndex === undefined),
301
302
  }
302
303
  : null;
303
304
  const maskHtml = buildFileViewerPrintMaskOverlayHtml(globalMask);