@file-viewer/core 2.0.11 → 2.1.1

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.
Files changed (116) hide show
  1. package/README.en.md +2 -2
  2. package/README.md +2 -2
  3. package/dist/config/options.d.ts +1 -1
  4. package/dist/config/options.js +1 -1
  5. package/dist/contracts/types.d.ts +76 -1
  6. package/dist/headless.d.ts +3 -3
  7. package/dist/headless.js +2 -2
  8. package/dist/index.d.ts +10 -7
  9. package/dist/index.js +106 -49
  10. package/dist/lifecycle/operations.d.ts +1 -0
  11. package/dist/lifecycle/operations.js +65 -6
  12. package/dist/platform/assets.d.ts +3 -1
  13. package/dist/platform/assets.js +43 -6
  14. package/dist/registry/capabilities.d.ts +2 -2
  15. package/dist/registry/capabilities.js +2 -1
  16. package/dist/registry/formats.d.ts +20 -7
  17. package/dist/registry/formats.js +14 -5
  18. package/dist/registry/registry.d.ts +8 -1
  19. package/dist/registry/registry.js +29 -0
  20. package/dist/renderers/image.js +1 -10
  21. package/dist/renderers/index.d.ts +320 -2
  22. package/dist/renderers/index.js +27 -157
  23. package/dist/viewer/createViewer.js +86 -3
  24. package/package.json +17 -44
  25. package/dist/renderers/archive.d.ts +0 -2
  26. package/dist/renderers/archive.js +0 -547
  27. package/dist/renderers/archiveCache.d.ts +0 -10
  28. package/dist/renderers/archiveCache.js +0 -96
  29. package/dist/renderers/archiveFallback.d.ts +0 -7
  30. package/dist/renderers/archiveFallback.js +0 -166
  31. package/dist/renderers/archiveShared.d.ts +0 -23
  32. package/dist/renderers/archiveShared.js +0 -71
  33. package/dist/renderers/audio.d.ts +0 -8
  34. package/dist/renderers/audio.js +0 -219
  35. package/dist/renderers/cad.d.ts +0 -2
  36. package/dist/renderers/cad.js +0 -446
  37. package/dist/renderers/code.d.ts +0 -11
  38. package/dist/renderers/code.js +0 -233
  39. package/dist/renderers/data.d.ts +0 -7
  40. package/dist/renderers/data.js +0 -370
  41. package/dist/renderers/drawing.d.ts +0 -10
  42. package/dist/renderers/drawing.js +0 -882
  43. package/dist/renderers/eda.d.ts +0 -2
  44. package/dist/renderers/eda.js +0 -434
  45. package/dist/renderers/edaParser.d.ts +0 -77
  46. package/dist/renderers/edaParser.js +0 -569
  47. package/dist/renderers/email.d.ts +0 -2
  48. package/dist/renderers/email.js +0 -463
  49. package/dist/renderers/epub.d.ts +0 -2
  50. package/dist/renderers/epub.js +0 -331
  51. package/dist/renderers/geo.d.ts +0 -2
  52. package/dist/renderers/geo.js +0 -284
  53. package/dist/renderers/markdown.d.ts +0 -2
  54. package/dist/renderers/markdown.js +0 -83
  55. package/dist/renderers/model.d.ts +0 -2
  56. package/dist/renderers/model.js +0 -567
  57. package/dist/renderers/ofd.d.ts +0 -2
  58. package/dist/renderers/ofd.js +0 -256
  59. package/dist/renderers/openDocument.d.ts +0 -2
  60. package/dist/renderers/openDocument.js +0 -122
  61. package/dist/renderers/pdf.d.ts +0 -3
  62. package/dist/renderers/pdf.js +0 -1001
  63. package/dist/renderers/pdfStyles.d.ts +0 -1
  64. package/dist/renderers/pdfStyles.js +0 -1
  65. package/dist/renderers/pptx.d.ts +0 -2
  66. package/dist/renderers/pptx.js +0 -217
  67. package/dist/renderers/spreadsheet/state.d.ts +0 -80
  68. package/dist/renderers/spreadsheet/state.js +0 -96
  69. package/dist/renderers/spreadsheet/view.d.ts +0 -25
  70. package/dist/renderers/spreadsheet/view.js +0 -833
  71. package/dist/renderers/spreadsheet/worker/index.d.ts +0 -2
  72. package/dist/renderers/spreadsheet/worker/index.js +0 -1
  73. package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.d.ts +0 -73
  74. package/dist/renderers/spreadsheet/worker/sheetjs/SheetJsModel.js +0 -623
  75. package/dist/renderers/spreadsheet/worker/sheetjs/color.d.ts +0 -2
  76. package/dist/renderers/spreadsheet/worker/sheetjs/color.js +0 -73
  77. package/dist/renderers/spreadsheet/worker/sheetjs/index.d.ts +0 -1
  78. package/dist/renderers/spreadsheet/worker/sheetjs/index.js +0 -1
  79. package/dist/renderers/spreadsheet/worker/sheetjs/parser.d.ts +0 -18
  80. package/dist/renderers/spreadsheet/worker/sheetjs/parser.js +0 -106
  81. package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.d.ts +0 -1
  82. package/dist/renderers/spreadsheet/worker/sheetjs/sheet.worker.js +0 -11
  83. package/dist/renderers/spreadsheet/worker/type.d.ts +0 -57
  84. package/dist/renderers/spreadsheet/worker/type.js +0 -1
  85. package/dist/renderers/spreadsheet.d.ts +0 -3
  86. package/dist/renderers/spreadsheet.js +0 -929
  87. package/dist/renderers/typst.d.ts +0 -8
  88. package/dist/renderers/typst.js +0 -547
  89. package/dist/renderers/umd/parser.d.ts +0 -30
  90. package/dist/renderers/umd/parser.js +0 -408
  91. package/dist/renderers/umd.d.ts +0 -2
  92. package/dist/renderers/umd.js +0 -297
  93. package/dist/renderers/video.d.ts +0 -8
  94. package/dist/renderers/video.js +0 -108
  95. package/dist/renderers/wordDoc.d.ts +0 -5
  96. package/dist/renderers/wordDoc.js +0 -284
  97. package/dist/renderers/wordDocx.d.ts +0 -5
  98. package/dist/renderers/wordDocx.js +0 -985
  99. package/dist/renderers/wordDocx.worker.d.ts +0 -1
  100. package/dist/renderers/wordDocx.worker.js +0 -96
  101. package/vendor/ofd/dltech/jbig2/arithmetic_decoder.js +0 -183
  102. package/vendor/ofd/dltech/jbig2/ccitt.js +0 -1070
  103. package/vendor/ofd/dltech/jbig2/compatibility.js +0 -12
  104. package/vendor/ofd/dltech/jbig2/core_utils.js +0 -180
  105. package/vendor/ofd/dltech/jbig2/is_node.js +0 -27
  106. package/vendor/ofd/dltech/jbig2/jbig2.js +0 -2589
  107. package/vendor/ofd/dltech/jbig2/jbig2_stream.js +0 -81
  108. package/vendor/ofd/dltech/jbig2/primitives.js +0 -387
  109. package/vendor/ofd/dltech/jbig2/stream.js +0 -1348
  110. package/vendor/ofd/dltech/jbig2/util.js +0 -972
  111. package/vendor/ofd/dltech/ofd/ofd.d.ts +0 -11
  112. package/vendor/ofd/dltech/ofd/ofd.js +0 -100
  113. package/vendor/ofd/dltech/ofd/ofd_parser.js +0 -395
  114. package/vendor/ofd/dltech/ofd/ofd_render.js +0 -473
  115. package/vendor/ofd/dltech/ofd/ofd_util.js +0 -350
  116. package/vendor/ofd/dltech/ofd/pipeline.js +0 -26
@@ -22,6 +22,12 @@ export const FILE_VIEWER_OPERATION_LABELS = {
22
22
  };
23
23
  export const FILE_VIEWER_BEFORE_OPERATION_ERROR_PREFIX = '操作前置校验失败';
24
24
  export const FILE_VIEWER_LIFECYCLE_HOOK_ERROR_MESSAGE_PREFIX = 'FileViewer';
25
+ const FILE_VIEWER_ZOOM_OPERATIONS = ['zoom-in', 'zoom-out', 'zoom-reset'];
26
+ const FILE_VIEWER_ZOOM_BUTTON_OPERATIONS = {
27
+ canZoomIn: 'zoom-in',
28
+ canZoomOut: 'zoom-out',
29
+ canReset: 'zoom-reset',
30
+ };
25
31
  export const buildFileViewerLifecycleContext = ({ phase, version, source, filename, file, url, size, bufferSize, startedAt, duration, timestamp, reason, }) => {
26
32
  var _a;
27
33
  const resolvedFilename = normalizeFilename((file === null || file === void 0 ? void 0 : file.name) || filename || url || '');
@@ -219,9 +225,49 @@ export const getFileViewerBeforeOperationHooks = (options, operation) => {
219
225
  : undefined;
220
226
  return [options === null || options === void 0 ? void 0 : options.beforeOperation, toolbar.beforeOperation, specificHook];
221
227
  };
228
+ const isToolbarActionMapAllowed = (map, operation) => (map === null || map === void 0 ? void 0 : map[operation]) !== false;
229
+ export const isFileViewerToolbarOperationPermitted = (toolbar, operation) => {
230
+ if (!toolbar || typeof toolbar !== 'object') {
231
+ return true;
232
+ }
233
+ return isToolbarActionMapAllowed(toolbar.permissions, operation);
234
+ };
235
+ const isFileViewerToolbarOperationVisible = (toolbar, operation) => isToolbarActionMapAllowed(toolbar.items, operation) &&
236
+ isToolbarActionMapAllowed(toolbar.permissions, operation);
237
+ const hasAnyToolbarZoomOperation = (toolbar) => FILE_VIEWER_ZOOM_OPERATIONS.some(operation => isFileViewerToolbarOperationVisible(toolbar, operation));
238
+ const applyToolbarPermissionsToAvailability = (availability, toolbar) => {
239
+ if (!toolbar || typeof toolbar !== 'object' || !toolbar.permissions) {
240
+ return availability;
241
+ }
242
+ const next = cloneFileViewerOperationAvailability(availability);
243
+ if (!isFileViewerToolbarOperationPermitted(toolbar, 'download')) {
244
+ next.download = false;
245
+ }
246
+ if (!isFileViewerToolbarOperationPermitted(toolbar, 'print')) {
247
+ next.print = false;
248
+ }
249
+ if (!isFileViewerToolbarOperationPermitted(toolbar, 'export-html')) {
250
+ next.exportHtml = false;
251
+ }
252
+ if (!isFileViewerToolbarOperationPermitted(toolbar, 'zoom-in')) {
253
+ next.zoomIn = false;
254
+ }
255
+ if (!isFileViewerToolbarOperationPermitted(toolbar, 'zoom-out')) {
256
+ next.zoomOut = false;
257
+ }
258
+ if (!isFileViewerToolbarOperationPermitted(toolbar, 'zoom-reset')) {
259
+ next.zoomReset = false;
260
+ }
261
+ next.zoom = next.zoom && (next.zoomIn || next.zoomOut || next.zoomReset);
262
+ return next;
263
+ };
222
264
  export const runFileViewerBeforeOperation = async ({ context, options, onBefore, onCancel, onError, }) => {
223
265
  onBefore === null || onBefore === void 0 ? void 0 : onBefore(context);
224
266
  try {
267
+ if (!isFileViewerToolbarOperationPermitted(options === null || options === void 0 ? void 0 : options.toolbar, context.operation)) {
268
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel(context);
269
+ return false;
270
+ }
225
271
  for (const hook of getFileViewerBeforeOperationHooks(options, context.operation)) {
226
272
  if (!hook) {
227
273
  continue;
@@ -413,10 +459,17 @@ export const normalizeFileViewerToolbar = (options) => {
413
459
  }
414
460
  if (toolbar && typeof toolbar === 'object') {
415
461
  return {
416
- download: toolbar.download !== false,
417
- print: toolbar.print !== false,
418
- exportHtml: toolbar.exportHtml !== false,
419
- zoom: toolbar.zoom !== false,
462
+ download: toolbar.download !== false && isFileViewerToolbarOperationVisible(toolbar, 'download'),
463
+ print: toolbar.print !== false && isFileViewerToolbarOperationVisible(toolbar, 'print'),
464
+ exportHtml: toolbar.exportHtml !== false && isFileViewerToolbarOperationVisible(toolbar, 'export-html'),
465
+ zoom: toolbar.zoom !== false && hasAnyToolbarZoomOperation(toolbar),
466
+ items: toolbar.items,
467
+ permissions: toolbar.permissions,
468
+ position: toolbar.position,
469
+ beforeOperation: toolbar.beforeOperation,
470
+ beforeDownload: toolbar.beforeDownload,
471
+ beforePrint: toolbar.beforePrint,
472
+ beforeExportHtml: toolbar.beforeExportHtml,
420
473
  };
421
474
  }
422
475
  return {
@@ -461,13 +514,19 @@ export const hasVisibleFileViewerToolbarActions = (toolbar) => {
461
514
  return !!(toolbar.download || toolbar.print || toolbar.exportHtml || toolbar.zoom);
462
515
  };
463
516
  export const isFileViewerZoomButtonDisabled = ({ toolbarDisabled = false, availability, zoomState, action, }) => {
464
- return toolbarDisabled || !availability.zoom || !zoomState[action];
517
+ const operation = FILE_VIEWER_ZOOM_BUTTON_OPERATIONS[action];
518
+ const operationAllowed = operation === 'zoom-in'
519
+ ? availability.zoomIn
520
+ : operation === 'zoom-out'
521
+ ? availability.zoomOut
522
+ : availability.zoomReset;
523
+ return toolbarDisabled || !availability.zoom || !operationAllowed || !zoomState[action];
465
524
  };
466
525
  export const isFileViewerToolbarDisabled = ({ loading = false, hasError = false, }) => {
467
526
  return !!(loading || hasError);
468
527
  };
469
528
  export const resolveFileViewerToolbarState = ({ toolbar, options, loading = false, ...availabilityInput }) => {
470
- const operationAvailability = resolveFileViewerOperationAvailability(availabilityInput);
529
+ const operationAvailability = applyToolbarPermissionsToAvailability(resolveFileViewerOperationAvailability(availabilityInput), options === null || options === void 0 ? void 0 : options.toolbar);
471
530
  const visibleToolbar = resolveVisibleFileViewerToolbar(toolbar, operationAvailability);
472
531
  return {
473
532
  operationAvailability,
@@ -15,6 +15,7 @@ export declare const DEFAULT_FILE_VIEWER_CAD_WORKER_PATH = "wasm/cad/dwg-worker.
15
15
  export declare const DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH = "wasm/cad/dwfv-render.wasm";
16
16
  export declare const DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL = "wasm/typst/typst_ts_web_compiler_bg.wasm";
17
17
  export declare const DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL = "wasm/typst/typst_ts_renderer_bg.wasm";
18
+ export declare const DEFAULT_FILE_VIEWER_TYPST_FONT_ASSETS_URL = "wasm/typst/fonts/";
18
19
  export declare const FALLBACK_FILE_VIEWER_TYPST_COMPILER_WASM_URL = "wasm/typst/typst_ts_web_compiler_bg.wasm";
19
20
  export declare const FALLBACK_FILE_VIEWER_TYPST_RENDERER_WASM_URL = "wasm/typst/typst_ts_renderer_bg.wasm";
20
21
  export declare const DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_PACKAGE_PATH = "@myriaddreamin/typst-ts-web-compiler/pkg/typst_ts_web_compiler_bg.wasm";
@@ -39,7 +40,7 @@ export interface ResolvedFileViewerPdfAssetUrls {
39
40
  }
40
41
  export type FileViewerRendererAssetKind = 'directory' | 'worker' | 'wasm' | 'wasm-directory' | 'script' | 'bundled-wasm';
41
42
  export type FileViewerRendererAssetTarget = 'public' | 'bundled' | 'external';
42
- export type FileViewerRendererAssetOptionPath = 'archive.workerUrl' | 'archive.wasmUrl' | 'cad.wasmPath' | 'cad.workerUrl' | 'cad.dwfWasmUrl' | 'data.sqlWasmUrl' | 'docx.workerJsZipUrl' | 'docx.workerUrl' | 'drawing.viewerScriptUrl' | 'pdf.workerUrl' | 'pdf.cMapUrl' | 'pdf.wasmUrl' | 'pdf.standardFontDataUrl' | 'spreadsheet.workerUrl' | 'typst.compilerWasmUrl' | 'typst.rendererWasmUrl';
43
+ export type FileViewerRendererAssetOptionPath = 'archive.workerUrl' | 'archive.wasmUrl' | 'cad.wasmPath' | 'cad.workerUrl' | 'cad.dwfWasmUrl' | 'data.sqlWasmUrl' | 'docx.workerJsZipUrl' | 'docx.workerUrl' | 'drawing.viewerScriptUrl' | 'pdf.workerUrl' | 'pdf.cMapUrl' | 'pdf.wasmUrl' | 'pdf.standardFontDataUrl' | 'spreadsheet.workerUrl' | 'typst.compilerWasmUrl' | 'typst.fontAssetsUrl' | 'typst.rendererWasmUrl';
43
44
  export interface FileViewerRendererAssetDefinition {
44
45
  id: string;
45
46
  rendererId: string;
@@ -76,6 +77,7 @@ export declare const resolveFileViewerDocxWorkerJsZipUrl: (options?: Pick<FileVi
76
77
  export declare const resolveFileViewerSpreadsheetWorkerUrl: (options?: Pick<FileViewerSpreadsheetOptions, "workerUrl"> | null, documentBaseUrl?: string) => string;
77
78
  export declare const resolveFileViewerTypstCompilerWasmUrl: (options?: Pick<FileViewerTypstOptions, "compilerWasmUrl"> | null, overrides?: Array<string | undefined>, documentBaseUrl?: string) => string;
78
79
  export declare const resolveFileViewerTypstRendererWasmUrl: (options?: Pick<FileViewerTypstOptions, "rendererWasmUrl"> | null, overrides?: Array<string | undefined>, documentBaseUrl?: string) => string;
80
+ export declare const resolveFileViewerTypstFontAssetsUrl: (options?: Pick<FileViewerTypstOptions, "fontAssetsUrl"> | null, overrides?: Array<string | undefined>, documentBaseUrl?: string) => string;
79
81
  export declare const resolveFileViewerDataSqlWasmUrl: (options?: Pick<FileViewerDataOptions, "sqlWasmUrl"> | null, overrides?: Array<string | undefined>, documentBaseUrl?: string) => string;
80
82
  export declare const listFileViewerRendererAssetManifests: () => FileViewerRendererAssetManifest[];
81
83
  export declare const getFileViewerRendererAssetManifest: (rendererId: string) => FileViewerRendererAssetManifest | null;
@@ -14,6 +14,7 @@ export const DEFAULT_FILE_VIEWER_CAD_WORKER_PATH = 'wasm/cad/dwg-worker.js';
14
14
  export const DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH = 'wasm/cad/dwfv-render.wasm';
15
15
  export const DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL = 'wasm/typst/typst_ts_web_compiler_bg.wasm';
16
16
  export const DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL = 'wasm/typst/typst_ts_renderer_bg.wasm';
17
+ export const DEFAULT_FILE_VIEWER_TYPST_FONT_ASSETS_URL = 'wasm/typst/fonts/';
17
18
  // Compatibility aliases kept for older imports. They intentionally resolve to
18
19
  // local viewer assets; the preview runtime must not fall back to a public CDN.
19
20
  export const FALLBACK_FILE_VIEWER_TYPST_COMPILER_WASM_URL = DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL;
@@ -217,6 +218,16 @@ export const DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS = [
217
218
  optionPath: 'typst.rendererWasmUrl',
218
219
  description: 'Typst SVG renderer WebAssembly module copied to the public assets directory.',
219
220
  },
221
+ {
222
+ id: 'typst-font-assets',
223
+ rendererId: 'typst',
224
+ kind: 'directory',
225
+ target: 'public',
226
+ required: true,
227
+ defaultPath: DEFAULT_FILE_VIEWER_TYPST_FONT_ASSETS_URL,
228
+ optionPath: 'typst.fontAssetsUrl',
229
+ description: 'Self-hosted default Typst text fonts used by typst.ts without public CDN requests.',
230
+ },
220
231
  ],
221
232
  },
222
233
  {
@@ -249,6 +260,27 @@ export const resolveFileViewerAssetUrl = (value, fallback, options = {}) => {
249
260
  const resolved = new URL(raw, resolvedBase).href;
250
261
  return options.trimTrailingSlash ? resolved.replace(/\/+$/, '') : resolved;
251
262
  };
263
+ const getFileViewerDocumentOriginBaseUrl = (documentBaseUrl) => {
264
+ try {
265
+ const parsed = new URL(documentBaseUrl || DEFAULT_FILE_VIEWER_DOCUMENT_BASE_URL, DEFAULT_FILE_VIEWER_DOCUMENT_BASE_URL);
266
+ if (parsed.origin && parsed.origin !== 'null') {
267
+ return `${parsed.origin}/`;
268
+ }
269
+ }
270
+ catch {
271
+ // Keep the resolver deterministic in non-browser tests and unusual URL schemes.
272
+ }
273
+ return DEFAULT_FILE_VIEWER_DOCUMENT_BASE_URL;
274
+ };
275
+ const resolveFileViewerRootDefaultAssetUrl = (value, fallback, options = {}) => {
276
+ if (value !== undefined && value !== null && String(value).trim()) {
277
+ return resolveFileViewerAssetUrl(value, fallback, options);
278
+ }
279
+ return resolveFileViewerAssetUrl(undefined, fallback, {
280
+ ...options,
281
+ baseUrl: getFileViewerDocumentOriginBaseUrl(options.documentBaseUrl),
282
+ });
283
+ };
252
284
  export const resolveFileViewerArchiveWorkerUrl = (options, baseUrl) => {
253
285
  return resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.workerUrl, DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH, { baseUrl });
254
286
  };
@@ -274,16 +306,16 @@ export const resolveFileViewerCadAssetUrls = (options, documentBaseUrl) => {
274
306
  };
275
307
  export const resolveFileViewerPdfAssetUrls = (options, documentBaseUrl) => {
276
308
  return {
277
- workerUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.workerUrl, DEFAULT_FILE_VIEWER_PDF_WORKER_PATH, {
309
+ workerUrl: resolveFileViewerRootDefaultAssetUrl(options === null || options === void 0 ? void 0 : options.workerUrl, DEFAULT_FILE_VIEWER_PDF_WORKER_PATH, {
278
310
  documentBaseUrl,
279
311
  }),
280
- cMapUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.cMapUrl, DEFAULT_FILE_VIEWER_PDF_CMAP_PATH, {
312
+ cMapUrl: resolveFileViewerRootDefaultAssetUrl(options === null || options === void 0 ? void 0 : options.cMapUrl, DEFAULT_FILE_VIEWER_PDF_CMAP_PATH, {
281
313
  documentBaseUrl,
282
314
  }),
283
- wasmUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.wasmUrl, DEFAULT_FILE_VIEWER_PDF_WASM_PATH, {
315
+ wasmUrl: resolveFileViewerRootDefaultAssetUrl(options === null || options === void 0 ? void 0 : options.wasmUrl, DEFAULT_FILE_VIEWER_PDF_WASM_PATH, {
284
316
  documentBaseUrl,
285
317
  }),
286
- standardFontDataUrl: resolveFileViewerAssetUrl(options === null || options === void 0 ? void 0 : options.standardFontDataUrl, DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH, { documentBaseUrl }),
318
+ standardFontDataUrl: resolveFileViewerRootDefaultAssetUrl(options === null || options === void 0 ? void 0 : options.standardFontDataUrl, DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH, { documentBaseUrl }),
287
319
  };
288
320
  };
289
321
  export const resolveFileViewerDrawioViewerScriptUrl = (options, documentBaseUrl) => {
@@ -308,6 +340,9 @@ export const resolveFileViewerTypstCompilerWasmUrl = (options, overrides = [], d
308
340
  export const resolveFileViewerTypstRendererWasmUrl = (options, overrides = [], documentBaseUrl) => {
309
341
  return resolveFileViewerAssetUrl((options === null || options === void 0 ? void 0 : options.rendererWasmUrl) || overrides.find(Boolean), DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL, { documentBaseUrl });
310
342
  };
343
+ export const resolveFileViewerTypstFontAssetsUrl = (options, overrides = [], documentBaseUrl) => {
344
+ return resolveFileViewerAssetUrl((options === null || options === void 0 ? void 0 : options.fontAssetsUrl) || overrides.find(Boolean), DEFAULT_FILE_VIEWER_TYPST_FONT_ASSETS_URL, { documentBaseUrl, trimTrailingSlash: true });
345
+ };
311
346
  export const resolveFileViewerDataSqlWasmUrl = (options, overrides = [], documentBaseUrl) => {
312
347
  return resolveFileViewerAssetUrl((options === null || options === void 0 ? void 0 : options.sqlWasmUrl) || overrides.find(Boolean), DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL, { documentBaseUrl });
313
348
  };
@@ -318,7 +353,7 @@ export const getFileViewerRendererAssetManifest = (rendererId) => {
318
353
  return DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS.find(manifest => manifest.rendererId === rendererId) || null;
319
354
  };
320
355
  const getRendererAssetOptionValue = (options, optionPath) => {
321
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
356
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
322
357
  switch (optionPath) {
323
358
  case 'archive.workerUrl':
324
359
  return (_a = options === null || options === void 0 ? void 0 : options.archive) === null || _a === void 0 ? void 0 : _a.workerUrl;
@@ -350,8 +385,10 @@ const getRendererAssetOptionValue = (options, optionPath) => {
350
385
  return (_p = options === null || options === void 0 ? void 0 : options.spreadsheet) === null || _p === void 0 ? void 0 : _p.workerUrl;
351
386
  case 'typst.compilerWasmUrl':
352
387
  return (_q = options === null || options === void 0 ? void 0 : options.typst) === null || _q === void 0 ? void 0 : _q.compilerWasmUrl;
388
+ case 'typst.fontAssetsUrl':
389
+ return (_r = options === null || options === void 0 ? void 0 : options.typst) === null || _r === void 0 ? void 0 : _r.fontAssetsUrl;
353
390
  case 'typst.rendererWasmUrl':
354
- return (_r = options === null || options === void 0 ? void 0 : options.typst) === null || _r === void 0 ? void 0 : _r.rendererWasmUrl;
391
+ return (_s = options === null || options === void 0 ? void 0 : options.typst) === null || _s === void 0 ? void 0 : _s.rendererWasmUrl;
355
392
  default:
356
393
  return undefined;
357
394
  }
@@ -13,11 +13,11 @@ export declare const ADAPTER_PRINT_REQUIRED_EXTENSIONS: readonly ["docx", "docm"
13
13
  * 这些格式的预览结果是完整 DOM / SVG / Canvas 截图,解除滚动容器裁切后
14
14
  * 可以稳定进入浏览器打印流程。
15
15
  */
16
- export declare const DOM_PRINTABLE_EXTENSIONS: readonly ["pptx", "pptm", "potx", "potm", "ppsx", "ppsm", "ofd", "dxf", "dwg", "dwf", "dwfx", "xps", "excalidraw", "drawio", "dio", "umd", "md", "markdown", "olb", "dra", "txt", "json", "js", "mjs", "cjs", "css", "java", "py", "html", "htm", "jsx", "ts", "tsx", "xml", "log", "vue", "yaml", "yml", "ini", "sh", "bash", "sql", "go", "rs", "php", "c", "cpp", "cc", "h", "hpp", "cs", "diff", "jsonc", "json5", "ipynb", "toml", "proto", "hcl", "tex", "gv", "http", "react", "rb", "swift", "kt", "gif", "jpg", "jpeg", "bmp", "tiff", "tif", "png", "svg", "webp", "avif", "ico", "heic", "heif", "jxl"];
16
+ export declare const DOM_PRINTABLE_EXTENSIONS: readonly ["pptx", "pptm", "potx", "potm", "ppsx", "ppsm", "ofd", "dxf", "dwg", "dwf", "dwfx", "xps", "excalidraw", "drawio", "dio", "mermaid", "mmd", "plantuml", "puml", "umd", "md", "markdown", "olb", "dra", "txt", "json", "js", "mjs", "cjs", "css", "java", "py", "html", "htm", "jsx", "ts", "tsx", "xml", "log", "vue", "yaml", "yml", "ini", "sh", "bash", "sql", "go", "rs", "php", "c", "cpp", "cc", "h", "hpp", "cs", "diff", "patch", "bundle", "bdl", "jsonc", "json5", "ipynb", "toml", "proto", "hcl", "tex", "gv", "http", "react", "rb", "swift", "kt", "gif", "jpg", "jpeg", "bmp", "tiff", "tif", "png", "svg", "webp", "avif", "ico", "heic", "heif", "jxl"];
17
17
  /**
18
18
  * 这些格式默认不展示打印按钮,避免导出半截内容。
19
19
  */
20
- export declare const NON_PRINTABLE_EXTENSIONS: readonly ["xlsx", "xltx", "xlsm", "xlsb", "xls", "xlt", "xltm", "csv", "ods", "fods", "numbers", "zip", "zipx", "7z", "rar", "tar", "gz", "gzip", "tgz", "bz2", "bzip2", "tbz", "tbz2", "xz", "txz", "lzma", "zst", "tzst", "cab", "ar", "cpio", "iso", "xar", "lha", "lzh", "jar", "war", "ear", "apk", "cbz", "cbr", "eml", "msg", "epub", "mp4", "mp3", "mpeg", "wav", "ogg", "oga", "opus", "m4a", "aac", "flac", "weba", "glb", "gltf", "obj", "stl", "ply", "fbx", "dae", "3ds", "3mf", "amf", "usd", "usda", "usdc", "usdz", "kmz", "step", "stp", "iges", "igs", "ifc", "3dm", "pcd", "wrl", "vrml", "xyz", "vtk", "vtp"];
20
+ export declare const NON_PRINTABLE_EXTENSIONS: readonly ["xlsx", "xltx", "xlsm", "xlsb", "xls", "xlt", "xltm", "csv", "ods", "fods", "numbers", "zip", "zipx", "7z", "rar", "tar", "gz", "gzip", "tgz", "bz2", "bzip2", "tbz", "tbz2", "xz", "txz", "lzma", "zst", "tzst", "cab", "ar", "cpio", "iso", "xar", "lha", "lzh", "jar", "war", "ear", "apk", "cbz", "cbr", "eml", "msg", "epub", "mp4", "mp3", "mpeg", "wav", "ogg", "oga", "opus", "m4a", "aac", "flac", "weba", "glb", "gltf", "obj", "stl", "ply", "fbx", "dae", "3ds", "3mf", "amf", "usd", "usda", "usdc", "usdz", "kmz", "step", "stp", "iges", "igs", "ifc", "3dm", "brep", "pcd", "wrl", "vrml", "xyz", "vtk", "vtp"];
21
21
  export declare const needsDedicatedPrintAdapter: (extension: string) => boolean;
22
22
  export declare const isDomPrintableExtension: (extension: string) => boolean;
23
23
  export declare const isKnownNonPrintableExtension: (extension: string) => boolean;
@@ -50,7 +50,8 @@ export const ADAPTER_PRINT_REQUIRED_EXTENSIONS = [
50
50
  */
51
51
  export const DOM_PRINTABLE_EXTENSIONS = [
52
52
  'pptx', 'pptm', 'potx', 'potm', 'ppsx', 'ppsm', 'ofd', 'dxf', 'dwg', 'dwf', 'dwfx', 'xps',
53
- 'excalidraw', 'drawio', 'dio', 'umd', 'md', 'markdown', 'olb', 'dra',
53
+ 'excalidraw', 'drawio', 'dio', 'mermaid', 'mmd', 'plantuml', 'puml', 'umd', 'md', 'markdown',
54
+ 'olb', 'dra',
54
55
  ...TEXT_EXTENSIONS,
55
56
  ...IMAGE_EXTENSIONS,
56
57
  ];
@@ -1,6 +1,6 @@
1
1
  export declare const ARCHIVE_EXTENSIONS: readonly ["zip", "zipx", "7z", "rar", "tar", "gz", "gzip", "tgz", "bz2", "bzip2", "tbz", "tbz2", "xz", "txz", "lzma", "zst", "tzst", "cab", "ar", "cpio", "iso", "xar", "lha", "lzh", "jar", "war", "ear", "apk", "cbz", "cbr"];
2
- export declare const MODEL_EXTENSIONS: readonly ["glb", "gltf", "obj", "stl", "ply", "fbx", "dae", "3ds", "3mf", "amf", "usd", "usda", "usdc", "usdz", "kmz", "step", "stp", "iges", "igs", "ifc", "3dm", "pcd", "wrl", "vrml", "xyz", "vtk", "vtp"];
3
- export declare const TEXT_EXTENSIONS: readonly ["txt", "json", "js", "mjs", "cjs", "css", "java", "py", "html", "htm", "jsx", "ts", "tsx", "xml", "log", "vue", "yaml", "yml", "ini", "sh", "bash", "sql", "go", "rs", "php", "c", "cpp", "cc", "h", "hpp", "cs", "diff", "jsonc", "json5", "ipynb", "toml", "proto", "hcl", "tex", "gv", "http", "react", "rb", "swift", "kt"];
2
+ export declare const MODEL_EXTENSIONS: readonly ["glb", "gltf", "obj", "stl", "ply", "fbx", "dae", "3ds", "3mf", "amf", "usd", "usda", "usdc", "usdz", "kmz", "step", "stp", "iges", "igs", "ifc", "3dm", "brep", "pcd", "wrl", "vrml", "xyz", "vtk", "vtp"];
3
+ export declare const TEXT_EXTENSIONS: readonly ["txt", "json", "js", "mjs", "cjs", "css", "java", "py", "html", "htm", "jsx", "ts", "tsx", "xml", "log", "vue", "yaml", "yml", "ini", "sh", "bash", "sql", "go", "rs", "php", "c", "cpp", "cc", "h", "hpp", "cs", "diff", "patch", "bundle", "bdl", "jsonc", "json5", "ipynb", "toml", "proto", "hcl", "tex", "gv", "http", "react", "rb", "swift", "kt"];
4
4
  export declare const IMAGE_EXTENSIONS: readonly ["gif", "jpg", "jpeg", "bmp", "tiff", "tif", "png", "svg", "webp", "avif", "ico", "heic", "heif", "jxl"];
5
5
  export declare const DEFAULT_RENDERER_DEFINITIONS: readonly [{
6
6
  readonly id: "office-word-openxml";
@@ -136,7 +136,7 @@ export declare const DEFAULT_RENDERER_DEFINITIONS: readonly [{
136
136
  readonly id: "eda";
137
137
  readonly label: "EDA";
138
138
  readonly category: "eda";
139
- readonly extensions: readonly ["olb", "dra"];
139
+ readonly extensions: readonly ["olb", "dra", "gds", "oas", "oasis"];
140
140
  readonly async: true;
141
141
  readonly capabilities: {
142
142
  readonly download: true;
@@ -162,7 +162,7 @@ export declare const DEFAULT_RENDERER_DEFINITIONS: readonly [{
162
162
  readonly id: "model";
163
163
  readonly label: "3D Model";
164
164
  readonly category: "model";
165
- readonly extensions: readonly ["glb", "gltf", "obj", "stl", "ply", "fbx", "dae", "3ds", "3mf", "amf", "usd", "usda", "usdc", "usdz", "kmz", "step", "stp", "iges", "igs", "ifc", "3dm", "pcd", "wrl", "vrml", "xyz", "vtk", "vtp"];
165
+ readonly extensions: readonly ["glb", "gltf", "obj", "stl", "ply", "fbx", "dae", "3ds", "3mf", "amf", "usd", "usda", "usdc", "usdz", "kmz", "step", "stp", "iges", "igs", "ifc", "3dm", "brep", "pcd", "wrl", "vrml", "xyz", "vtk", "vtp"];
166
166
  readonly async: true;
167
167
  readonly capabilities: {
168
168
  readonly download: true;
@@ -188,7 +188,20 @@ export declare const DEFAULT_RENDERER_DEFINITIONS: readonly [{
188
188
  readonly id: "drawing";
189
189
  readonly label: "Drawing";
190
190
  readonly category: "drawing";
191
- readonly extensions: readonly ["excalidraw", "drawio", "dio"];
191
+ readonly extensions: readonly ["excalidraw", "drawio", "dio", "mermaid", "mmd", "plantuml", "puml"];
192
+ readonly async: true;
193
+ readonly capabilities: {
194
+ readonly download: true;
195
+ readonly print: true;
196
+ readonly exportHtml: true;
197
+ readonly zoom: "provider";
198
+ readonly search: true;
199
+ };
200
+ }, {
201
+ readonly id: "mindmap";
202
+ readonly label: "Mind Map";
203
+ readonly category: "mindmap";
204
+ readonly extensions: readonly ["xmind"];
192
205
  readonly async: true;
193
206
  readonly capabilities: {
194
207
  readonly download: true;
@@ -253,7 +266,7 @@ export declare const DEFAULT_RENDERER_DEFINITIONS: readonly [{
253
266
  readonly id: "code";
254
267
  readonly label: "Code and Text";
255
268
  readonly category: "code";
256
- readonly extensions: readonly ["txt", "json", "js", "mjs", "cjs", "css", "java", "py", "html", "htm", "jsx", "ts", "tsx", "xml", "log", "vue", "yaml", "yml", "ini", "sh", "bash", "sql", "go", "rs", "php", "c", "cpp", "cc", "h", "hpp", "cs", "diff", "jsonc", "json5", "ipynb", "toml", "proto", "hcl", "tex", "gv", "http", "react", "rb", "swift", "kt"];
269
+ readonly extensions: readonly ["txt", "json", "js", "mjs", "cjs", "css", "java", "py", "html", "htm", "jsx", "ts", "tsx", "xml", "log", "vue", "yaml", "yml", "ini", "sh", "bash", "sql", "go", "rs", "php", "c", "cpp", "cc", "h", "hpp", "cs", "diff", "patch", "bundle", "bdl", "jsonc", "json5", "ipynb", "toml", "proto", "hcl", "tex", "gv", "http", "react", "rb", "swift", "kt"];
257
270
  readonly async: true;
258
271
  readonly capabilities: {
259
272
  readonly download: true;
@@ -302,4 +315,4 @@ export declare const DEFAULT_RENDERER_DEFINITIONS: readonly [{
302
315
  readonly search: true;
303
316
  };
304
317
  }];
305
- export declare const DEFAULT_SUPPORTED_EXTENSIONS: readonly ("markdown" | "wasm" | "pdf" | "typst" | "zip" | "zipx" | "7z" | "rar" | "tar" | "gz" | "gzip" | "tgz" | "bz2" | "bzip2" | "tbz" | "tbz2" | "xz" | "txz" | "lzma" | "zst" | "tzst" | "cab" | "ar" | "cpio" | "iso" | "xar" | "lha" | "lzh" | "jar" | "war" | "ear" | "apk" | "cbz" | "cbr" | "glb" | "gltf" | "obj" | "stl" | "ply" | "fbx" | "dae" | "3ds" | "3mf" | "amf" | "usd" | "usda" | "usdc" | "usdz" | "kmz" | "step" | "stp" | "iges" | "igs" | "ifc" | "3dm" | "pcd" | "wrl" | "vrml" | "xyz" | "vtk" | "vtp" | "txt" | "json" | "js" | "mjs" | "cjs" | "css" | "java" | "py" | "html" | "htm" | "jsx" | "ts" | "tsx" | "xml" | "log" | "vue" | "yaml" | "yml" | "ini" | "sh" | "bash" | "sql" | "go" | "rs" | "php" | "c" | "cpp" | "cc" | "h" | "hpp" | "cs" | "diff" | "jsonc" | "json5" | "ipynb" | "toml" | "proto" | "hcl" | "tex" | "gv" | "http" | "react" | "rb" | "swift" | "kt" | "gif" | "jpg" | "jpeg" | "bmp" | "tiff" | "tif" | "png" | "svg" | "webp" | "avif" | "ico" | "heic" | "heif" | "jxl" | "docx" | "docm" | "dotx" | "dotm" | "doc" | "dot" | "pptx" | "pptm" | "potx" | "potm" | "ppsx" | "ppsm" | "rtf" | "odt" | "odp" | "xlsx" | "xltx" | "xlsm" | "xlsb" | "xls" | "xlt" | "xltm" | "csv" | "ods" | "fods" | "numbers" | "ofd" | "typ" | "eml" | "msg" | "mbox" | "olb" | "dra" | "dxf" | "dwg" | "dwf" | "dwfx" | "xps" | "geojson" | "kml" | "gpx" | "shp" | "excalidraw" | "drawio" | "dio" | "epub" | "umd" | "md" | "mp4" | "webm" | "m3u8" | "mp3" | "mpeg" | "wav" | "ogg" | "oga" | "opus" | "m4a" | "aac" | "flac" | "weba" | "midi" | "mid" | "ttf" | "otf" | "woff" | "woff2" | "psd" | "ai" | "eps" | "sqlite" | "parquet" | "avro" | "webarchive")[];
318
+ export declare const DEFAULT_SUPPORTED_EXTENSIONS: readonly ("markdown" | "wasm" | "pdf" | "typst" | "zip" | "zipx" | "7z" | "rar" | "tar" | "gz" | "gzip" | "tgz" | "bz2" | "bzip2" | "tbz" | "tbz2" | "xz" | "txz" | "lzma" | "zst" | "tzst" | "cab" | "ar" | "cpio" | "iso" | "xar" | "lha" | "lzh" | "jar" | "war" | "ear" | "apk" | "cbz" | "cbr" | "glb" | "gltf" | "obj" | "stl" | "ply" | "fbx" | "dae" | "3ds" | "3mf" | "amf" | "usd" | "usda" | "usdc" | "usdz" | "kmz" | "step" | "stp" | "iges" | "igs" | "ifc" | "3dm" | "brep" | "pcd" | "wrl" | "vrml" | "xyz" | "vtk" | "vtp" | "txt" | "json" | "js" | "mjs" | "cjs" | "css" | "java" | "py" | "html" | "htm" | "jsx" | "ts" | "tsx" | "xml" | "log" | "vue" | "yaml" | "yml" | "ini" | "sh" | "bash" | "sql" | "go" | "rs" | "php" | "c" | "cpp" | "cc" | "h" | "hpp" | "cs" | "diff" | "patch" | "bundle" | "bdl" | "jsonc" | "json5" | "ipynb" | "toml" | "proto" | "hcl" | "tex" | "gv" | "http" | "react" | "rb" | "swift" | "kt" | "gif" | "jpg" | "jpeg" | "bmp" | "tiff" | "tif" | "png" | "svg" | "webp" | "avif" | "ico" | "heic" | "heif" | "jxl" | "docx" | "docm" | "dotx" | "dotm" | "doc" | "dot" | "pptx" | "pptm" | "potx" | "potm" | "ppsx" | "ppsm" | "rtf" | "odt" | "odp" | "xlsx" | "xltx" | "xlsm" | "xlsb" | "xls" | "xlt" | "xltm" | "csv" | "ods" | "fods" | "numbers" | "ofd" | "typ" | "eml" | "msg" | "mbox" | "olb" | "dra" | "gds" | "oas" | "oasis" | "dxf" | "dwg" | "dwf" | "dwfx" | "xps" | "geojson" | "kml" | "gpx" | "shp" | "excalidraw" | "drawio" | "dio" | "mermaid" | "mmd" | "plantuml" | "puml" | "xmind" | "epub" | "umd" | "md" | "mp4" | "webm" | "m3u8" | "mp3" | "mpeg" | "wav" | "ogg" | "oga" | "opus" | "m4a" | "aac" | "flac" | "weba" | "midi" | "mid" | "ttf" | "otf" | "woff" | "woff2" | "psd" | "ai" | "eps" | "sqlite" | "parquet" | "avro" | "webarchive")[];
@@ -5,14 +5,15 @@ export const ARCHIVE_EXTENSIONS = [
5
5
  ];
6
6
  export const MODEL_EXTENSIONS = [
7
7
  'glb', 'gltf', 'obj', 'stl', 'ply', 'fbx', 'dae', '3ds', '3mf', 'amf', 'usd', 'usda',
8
- 'usdc', 'usdz', 'kmz', 'step', 'stp', 'iges', 'igs', 'ifc', '3dm', 'pcd', 'wrl',
8
+ 'usdc', 'usdz', 'kmz', 'step', 'stp', 'iges', 'igs', 'ifc', '3dm', 'brep', 'pcd', 'wrl',
9
9
  'vrml', 'xyz', 'vtk', 'vtp',
10
10
  ];
11
11
  export const TEXT_EXTENSIONS = [
12
12
  'txt', 'json', 'js', 'mjs', 'cjs', 'css', 'java', 'py', 'html', 'htm', 'jsx', 'ts',
13
13
  'tsx', 'xml', 'log', 'vue', 'yaml', 'yml', 'ini', 'sh', 'bash', 'sql', 'go', 'rs',
14
- 'php', 'c', 'cpp', 'cc', 'h', 'hpp', 'cs', 'diff', 'jsonc', 'json5', 'ipynb', 'toml',
15
- 'proto', 'hcl', 'tex', 'gv', 'http', 'react', 'rb', 'swift', 'kt',
14
+ 'php', 'c', 'cpp', 'cc', 'h', 'hpp', 'cs', 'diff', 'patch', 'bundle', 'bdl',
15
+ 'jsonc', 'json5', 'ipynb', 'toml', 'proto', 'hcl', 'tex', 'gv', 'http', 'react',
16
+ 'rb', 'swift', 'kt',
16
17
  ];
17
18
  export const IMAGE_EXTENSIONS = [
18
19
  'gif', 'jpg', 'jpeg', 'bmp', 'tiff', 'tif', 'png', 'svg', 'webp', 'avif', 'ico',
@@ -103,7 +104,7 @@ export const DEFAULT_RENDERER_DEFINITIONS = [
103
104
  id: 'eda',
104
105
  label: 'EDA',
105
106
  category: 'eda',
106
- extensions: ['olb', 'dra'],
107
+ extensions: ['olb', 'dra', 'gds', 'oas', 'oasis'],
107
108
  async: true,
108
109
  capabilities: { download: true, print: true, exportHtml: true, zoom: false, search: true },
109
110
  },
@@ -135,7 +136,15 @@ export const DEFAULT_RENDERER_DEFINITIONS = [
135
136
  id: 'drawing',
136
137
  label: 'Drawing',
137
138
  category: 'drawing',
138
- extensions: ['excalidraw', 'drawio', 'dio'],
139
+ extensions: ['excalidraw', 'drawio', 'dio', 'mermaid', 'mmd', 'plantuml', 'puml'],
140
+ async: true,
141
+ capabilities: { download: true, print: true, exportHtml: true, zoom: 'provider', search: true },
142
+ },
143
+ {
144
+ id: 'mindmap',
145
+ label: 'Mind Map',
146
+ category: 'mindmap',
147
+ extensions: ['xmind'],
139
148
  async: true,
140
149
  capabilities: { download: true, print: true, exportHtml: true, zoom: 'provider', search: true },
141
150
  },
@@ -1,2 +1,9 @@
1
- import type { RendererDefinition, RendererRegistry } from '../contracts/types';
1
+ import type { FileViewerRendererHandlerRegistration, FileViewerRendererPluginInput, FileViewerRendererPlugin, RendererDefinition, RendererRegistry } from '../contracts/types';
2
2
  export declare const createRendererRegistry: (initialDefinitions?: readonly RendererDefinition[]) => RendererRegistry;
3
+ export interface InstallFileViewerRendererPluginsOptions<Handler = unknown> {
4
+ registry: RendererRegistry;
5
+ plugins: Iterable<FileViewerRendererPlugin<Handler>>;
6
+ registerHandler?: (registration: FileViewerRendererHandlerRegistration<Handler>) => void;
7
+ }
8
+ export declare const collectFileViewerRendererPlugins: <Handler = unknown>(input?: FileViewerRendererPluginInput<Handler> | null) => FileViewerRendererPlugin<Handler>[];
9
+ export declare const installFileViewerRendererPlugins: <Handler = unknown>({ registry, plugins, registerHandler, }: InstallFileViewerRendererPluginsOptions<Handler>) => Promise<RendererRegistry>;
@@ -61,3 +61,32 @@ export const createRendererRegistry = (initialDefinitions = DEFAULT_RENDERER_DEF
61
61
  },
62
62
  };
63
63
  };
64
+ const isRendererPreset = (input) => {
65
+ return !!input && typeof input === 'object' && !Array.isArray(input) &&
66
+ Array.isArray(input.renderers);
67
+ };
68
+ export const collectFileViewerRendererPlugins = (input) => {
69
+ if (!input) {
70
+ return [];
71
+ }
72
+ if (Array.isArray(input)) {
73
+ return input.flatMap(item => collectFileViewerRendererPlugins(item));
74
+ }
75
+ if (isRendererPreset(input)) {
76
+ return collectFileViewerRendererPlugins(input.renderers);
77
+ }
78
+ return [input];
79
+ };
80
+ export const installFileViewerRendererPlugins = async ({ registry, plugins, registerHandler, }) => {
81
+ var _a, _b, _c;
82
+ for (const plugin of plugins) {
83
+ (_a = plugin.definitions) === null || _a === void 0 ? void 0 : _a.forEach(definition => {
84
+ registry.register(definition);
85
+ });
86
+ (_b = plugin.handlers) === null || _b === void 0 ? void 0 : _b.forEach(registration => {
87
+ registerHandler === null || registerHandler === void 0 ? void 0 : registerHandler(registration);
88
+ });
89
+ await ((_c = plugin.install) === null || _c === void 0 ? void 0 : _c.call(plugin, { registry, registerHandler }));
90
+ }
91
+ return registry;
92
+ };
@@ -53,19 +53,10 @@ const readBlobDataUrl = async (blob) => {
53
53
  reader.readAsDataURL(blob);
54
54
  });
55
55
  };
56
- const renderHeic = async (buffer, type) => {
57
- const { default: heic2any } = await import('heic2any');
58
- const result = await heic2any({
59
- blob: new Blob([buffer], { type: getImageBlobType(type) }),
60
- toType: 'image/png',
61
- });
62
- const blob = Array.isArray(result) ? result[0] : result;
63
- return readBlobDataUrl(blob);
64
- };
65
56
  const resolveImageUrl = async (buffer, type) => {
66
57
  const normalizedType = (type || '').trim().toLowerCase();
67
58
  if (normalizedType === 'heic' || normalizedType === 'heif') {
68
- return renderHeic(buffer, normalizedType);
59
+ throw new Error('HEIC/HEIF image conversion has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-image, or use @file-viewer/preset-all.');
69
60
  }
70
61
  return readBlobDataUrl(new Blob([buffer], { type: getImageBlobType(normalizedType) }));
71
62
  };