code.ts 879 B

1234567891011121314151617181920212223242526272829
  1. type ViewerPreset = 'lite' | 'office' | 'engineering' | 'all'
  2. interface ViewerBootstrapOptions {
  3. container: HTMLElement
  4. src: string
  5. locale?: 'auto' | 'zh-CN' | 'en-US'
  6. preset?: ViewerPreset
  7. }
  8. const presetHint: Record<ViewerPreset, string> = {
  9. lite: 'Small attachment previews',
  10. office: 'Office, PDF, OFD, and OpenDocument previews',
  11. engineering: 'CAD, 3D, diagrams, Typst, archive, and data previews',
  12. all: 'Complete demo and internal workbench capability'
  13. }
  14. export async function bootstrapViewer(options: ViewerBootstrapOptions) {
  15. const { mountViewer } = await import('@file-viewer/web')
  16. return mountViewer(options.container, {
  17. src: options.src,
  18. locale: options.locale ?? 'auto',
  19. toolbar: { download: true, print: true, exportHtml: true },
  20. watermark: false,
  21. meta: {
  22. presetHint: presetHint[options.preset ?? 'lite']
  23. }
  24. })
  25. }