index.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import {
  2. DEFAULT_RENDERER_DEFINITIONS,
  3. type FileRenderContext,
  4. type FileRenderHandler,
  5. type FileViewerRenderedInstance,
  6. type FileViewerRendererPlugin,
  7. type RendererDefinition,
  8. } from '@file-viewer/core';
  9. const epubDefinition = DEFAULT_RENDERER_DEFINITIONS.find(
  10. definition => definition.id === 'epub'
  11. ) as RendererDefinition | undefined;
  12. const umdDefinition = DEFAULT_RENDERER_DEFINITIONS.find(
  13. definition => definition.id === 'umd'
  14. ) as RendererDefinition | undefined;
  15. if (!epubDefinition || !umdDefinition) {
  16. throw new Error('@file-viewer/renderer-epub could not locate the shared ebook format definitions.');
  17. }
  18. export const ebookRendererDefinition = epubDefinition;
  19. export const umdRendererDefinition = umdDefinition;
  20. export const renderFileViewerEpub: FileRenderHandler<FileViewerRenderedInstance, HTMLDivElement> = (
  21. buffer,
  22. target,
  23. _type,
  24. context?: FileRenderContext
  25. ) => import('./epub.js').then(({ default: renderEpub }) => renderEpub(buffer, target, context));
  26. export const renderFileViewerUmd: FileRenderHandler<FileViewerRenderedInstance, HTMLDivElement> = (
  27. buffer,
  28. target,
  29. _type,
  30. context?: FileRenderContext
  31. ) => import('./umd.js').then(({ default: renderUmd }) => renderUmd(buffer, target, context));
  32. export const ebookRenderer: FileViewerRendererPlugin<FileRenderHandler<FileViewerRenderedInstance, HTMLDivElement>> = {
  33. id: 'file-viewer-renderer-epub',
  34. label: 'Flyfish File Viewer ebook renderer',
  35. definitions: [ebookRendererDefinition, umdRendererDefinition],
  36. handlers: [
  37. {
  38. rendererId: ebookRendererDefinition.id,
  39. handler: renderFileViewerEpub,
  40. },
  41. {
  42. rendererId: umdRendererDefinition.id,
  43. handler: renderFileViewerUmd,
  44. },
  45. ],
  46. };
  47. export default ebookRenderer;