@file-viewer/core 3.1.1 → 3.2.0

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 (104) hide show
  1. package/README.en.md +3 -121
  2. package/README.md +3 -126
  3. package/dist/assets.d.ts +2 -2
  4. package/dist/assets.js +1 -5
  5. package/dist/browser/controller.d.ts +1 -2
  6. package/dist/browser/controller.js +2 -34
  7. package/dist/browser.d.ts +2 -2
  8. package/dist/browser.js +2 -2
  9. package/dist/config/options.d.ts +1 -1
  10. package/dist/contracts/types.d.ts +30 -416
  11. package/dist/contracts/xml.d.ts +48 -0
  12. package/dist/contracts/xml.js +1 -0
  13. package/dist/export.d.ts +3 -10
  14. package/dist/export.js +2 -9
  15. package/dist/exportDocument.d.ts +1 -12
  16. package/dist/exportDocument.js +7 -31
  17. package/dist/features/document/dom/anchors.d.ts +1 -1
  18. package/dist/features/document/dom/index.d.ts +5 -5
  19. package/dist/features/document/dom/index.js +3 -3
  20. package/dist/features/document/dom/providers.d.ts +1 -1
  21. package/dist/features/document/events.d.ts +2 -2
  22. package/dist/features/document/events.js +3 -3
  23. package/dist/features/document/fit.d.ts +1 -1
  24. package/dist/features/document/fit.js +1 -1
  25. package/dist/features/document/model.d.ts +1 -1
  26. package/dist/features/document/search.d.ts +1 -1
  27. package/dist/features/document/search.js +2 -2
  28. package/dist/features/document/viewState.d.ts +1 -1
  29. package/dist/features/document/viewState.js +2 -2
  30. package/dist/features/document/zoom.d.ts +3 -2
  31. package/dist/features/document/zoom.js +19 -3
  32. package/dist/features/document/zoomGestures.d.ts +11 -0
  33. package/dist/features/document/zoomGestures.js +111 -0
  34. package/dist/features/printMask.d.ts +1 -1
  35. package/dist/features/printMaskDesigner.d.ts +2 -6
  36. package/dist/features/printMaskDesigner.js +2 -11
  37. package/dist/features/printMaskLoader.d.ts +1 -7
  38. package/dist/features/printMaskLoader.js +1 -7
  39. package/dist/features/watermark.d.ts +1 -1
  40. package/dist/headless.d.ts +29 -29
  41. package/dist/headless.js +16 -21
  42. package/dist/i18n/messages.d.ts +1 -1
  43. package/dist/i18n/messages.de.d.ts +1 -5
  44. package/dist/i18n/messages.de.js +0 -4
  45. package/dist/i18n/messages.ja.d.ts +1 -6
  46. package/dist/i18n/messages.ja.js +0 -5
  47. package/dist/i18n/messages.js +2 -2
  48. package/dist/index.d.ts +74 -73
  49. package/dist/index.js +37 -37
  50. package/dist/lifecycle/facade.d.ts +4 -4
  51. package/dist/lifecycle/facade.js +2 -2
  52. package/dist/lifecycle/operations.d.ts +4 -4
  53. package/dist/lifecycle/operations.js +4 -9
  54. package/dist/output/canvasImage.d.ts +1 -2
  55. package/dist/output/canvasImage.js +1 -4
  56. package/dist/output/export.d.ts +2 -4
  57. package/dist/output/export.js +133 -81
  58. package/dist/output/printLayout.d.ts +2 -5
  59. package/dist/output/printLayout.js +37 -9
  60. package/dist/output/snapshotDownload.d.ts +1 -2
  61. package/dist/output/snapshotDownload.js +2 -3
  62. package/dist/platform/assets.d.ts +9 -16
  63. package/dist/platform/assets.js +60 -17
  64. package/dist/platform/copiedAssets.d.ts +0 -1
  65. package/dist/platform/copiedAssets.js +1 -2
  66. package/dist/presentation/state.d.ts +1 -1
  67. package/dist/presentation/state.js +3 -3
  68. package/dist/print-mask.d.ts +2 -2
  69. package/dist/print-mask.js +1 -1
  70. package/dist/registry/capabilities.d.ts +3 -16
  71. package/dist/registry/capabilities.js +2 -15
  72. package/dist/registry/formats.d.ts +5 -5
  73. package/dist/registry/formats.generated.d.ts +26 -8
  74. package/dist/registry/formats.generated.js +36 -4
  75. package/dist/registry/formats.js +2 -2
  76. package/dist/registry/registry.d.ts +6 -15
  77. package/dist/registry/registry.js +24 -10
  78. package/dist/renderers/image.d.ts +1 -1
  79. package/dist/renderers/image.js +26 -5
  80. package/dist/renderers/index.d.ts +30 -11
  81. package/dist/renderers/index.js +5 -11
  82. package/dist/rendering/dispatcher.d.ts +1 -6
  83. package/dist/rendering/dispatcher.js +3 -3
  84. package/dist/rendering/handler.d.ts +10 -15
  85. package/dist/rendering/handler.js +20 -27
  86. package/dist/security/svgResources.d.ts +0 -10
  87. package/dist/security/svgResources.js +2 -11
  88. package/dist/source/index.d.ts +3 -3
  89. package/dist/source/index.js +1 -1
  90. package/dist/source/loading.d.ts +56 -15
  91. package/dist/source/loading.js +177 -87
  92. package/dist/source/precheck.d.ts +1 -13
  93. package/dist/source/precheck.js +2 -9
  94. package/dist/source/textEncoding.d.ts +6 -3
  95. package/dist/source/textEncoding.js +58 -8
  96. package/dist/viewer/createViewer.d.ts +1 -1
  97. package/dist/viewer/createViewer.js +103 -33
  98. package/dist/viewer/loading.d.ts +2 -6
  99. package/dist/viewer/loading.js +1 -9
  100. package/dist/viewer/operations.d.ts +3 -3
  101. package/dist/viewer/operations.js +6 -14
  102. package/dist/viewer/state.d.ts +2 -6
  103. package/dist/viewer/state.js +3 -8
  104. package/package.json +127 -19
@@ -435,6 +435,25 @@ export declare const DEFAULT_RENDERER_DEFINITIONS: readonly [{
435
435
  readonly zoom: "provider";
436
436
  readonly search: true;
437
437
  };
438
+ }, {
439
+ readonly id: "bpmn";
440
+ readonly label: "BPMN 2.0";
441
+ readonly category: "drawing";
442
+ readonly extensions: readonly ["bpmn"];
443
+ readonly async: true;
444
+ readonly supportLevel: "structured";
445
+ readonly status: "experimental";
446
+ readonly packageName: "@file-viewer/renderer-drawing";
447
+ readonly presets: readonly [];
448
+ readonly containerVersions: readonly ["BPMN 2.0 XML with BPMN DI"];
449
+ readonly knownLimits: readonly ["Explicit opt-in with bpmn-js", "Diagram preview requires BPMN DI layout; source remains available without it", "Read-only preview; process scripts are never executed", "The bpmn.io watermark is retained under the upstream license"];
450
+ readonly capabilities: {
451
+ readonly download: true;
452
+ readonly print: false;
453
+ readonly exportHtml: false;
454
+ readonly zoom: "provider";
455
+ readonly search: false;
456
+ };
438
457
  }, {
439
458
  readonly id: "mindmap";
440
459
  readonly label: "Mind Map";
@@ -591,14 +610,14 @@ export declare const DEFAULT_RENDERER_DEFINITIONS: readonly [{
591
610
  readonly id: "code";
592
611
  readonly label: "Code and Text";
593
612
  readonly category: "code";
594
- 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"];
613
+ readonly extensions: readonly ["txt", "lrc", "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"];
595
614
  readonly async: true;
596
615
  readonly supportLevel: "structured";
597
616
  readonly status: "stable";
598
617
  readonly packageName: "@file-viewer/renderer-text";
599
618
  readonly presets: readonly ["lite", "standard", "all"];
600
- readonly containerVersions: readonly ["Plain text", "source code", "Git bundle"];
601
- readonly knownLimits: readonly [];
619
+ readonly containerVersions: readonly ["Plain text", "source code", "Git bundle", "LRC lyrics"];
620
+ readonly knownLimits: readonly ["LRC is a static annotated/lyrics/source preview, not synchronized audio playback"];
602
621
  readonly capabilities: {
603
622
  readonly download: true;
604
623
  readonly print: true;
@@ -696,7 +715,7 @@ export declare const DEFAULT_RENDERER_DEFINITIONS: readonly [{
696
715
  readonly status: "experimental";
697
716
  readonly packageName: "@file-viewer/renderer-design";
698
717
  readonly presets: readonly [];
699
- readonly containerVersions: readonly ["IDML package", "@paged-media/introspect-wasm 0.62.0"];
718
+ readonly containerVersions: readonly ["IDML package", "@paged-media/introspect-wasm 0.70.2"];
700
719
  readonly knownLimits: readonly ["Pages are rendered locally by the CPU WASM engine in a module Worker; the browser never uploads the IDML package", "ZIP64, encrypted, multi-disk, overlapping, unsafe-path, unsupported-compression, and configured expansion-limit packages are rejected before the WASM engine opens them", "The current engine page tree lists TextFrame and Rectangle objects only even though other supported objects may still appear in rendered page pixels", "Each page render rebuilds the upstream document internally; interactive requests are latest-wins, preview is lazy, and print-all is bounded by the configured total RGBA working-set limit"];
701
720
  readonly capabilities: {
702
721
  readonly download: true;
@@ -879,7 +898,6 @@ export declare const DEFAULT_RENDERER_DEFINITIONS: readonly [{
879
898
  readonly search: false;
880
899
  };
881
900
  }];
882
- export declare const DEFAULT_REGISTERED_EXTENSIONS: readonly ("markdown" | "webp" | "jpeg" | "png" | "pdf" | "xyz" | "wasm" | "chm" | "typst" | "xd" | "fla" | "js" | "html" | "svg" | "rb" | "docx" | "docm" | "dotx" | "dotm" | "doc" | "dot" | "ppt" | "pot" | "pptx" | "pptm" | "potx" | "potm" | "ppsx" | "ppsm" | "rtf" | "odt" | "odp" | "xlsx" | "xltx" | "xlsm" | "xlsb" | "xls" | "xlt" | "xla" | "xlam" | "xltm" | "csv" | "tsv" | "ods" | "fods" | "pages" | "numbers" | "key" | "wpd" | "wp" | "wp5" | "wp6" | "dbf" | "ofd" | "hwp" | "hwpx" | "typ" | "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" | "mbox" | "olb" | "dra" | "gds" | "oas" | "oasis" | "dxf" | "dwg" | "dwf" | "dwfx" | "xps" | "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" | "vtk" | "vtp" | "geojson" | "kml" | "gpx" | "shp" | "excalidraw" | "drawio" | "dio" | "mermaid" | "mmd" | "plantuml" | "puml" | "xmind" | "epub" | "fb2" | "umd" | "gif" | "jpg" | "bmp" | "tiff" | "tif" | "avif" | "ico" | "heic" | "heif" | "jxl" | "dicom" | "dcm" | "p7m" | "p7s" | "p7c" | "p7b" | "pkcs7" | "cms" | "cmsc" | "tsd" | "tst" | "tsq" | "tsr" | "asics" | "scs" | "asice" | "sce" | "ers" | "asc" | "sig" | "pgp" | "gpg" | "jws" | "md" | "txt" | "json" | "mjs" | "cjs" | "css" | "java" | "py" | "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" | "swift" | "kt" | "mp4" | "webm" | "m3u8" | "mp3" | "mpeg" | "wav" | "ogg" | "oga" | "opus" | "m4a" | "aac" | "flac" | "weba" | "midi" | "mid" | "psb" | "pdd" | "psdt" | "psd" | "ait" | "ai" | "idml" | "icml" | "idms" | "inx" | "xfl" | "indd" | "indt" | "ps" | "eps" | "ase" | "aco" | "abr" | "csh" | "pat" | "grd" | "asl" | "ttf" | "otf" | "woff" | "woff2" | "sqlite" | "parquet" | "avro" | "webarchive" | "bin" | "hex" | "elf" | "exe" | "dll" | "class" | "macho")[];
883
- export declare const DEFAULT_STABLE_SUPPORTED_EXTENSIONS: readonly ("markdown" | "webp" | "jpeg" | "png" | "pdf" | "xyz" | "wasm" | "chm" | "typst" | "js" | "html" | "svg" | "rb" | "docx" | "docm" | "dotx" | "dotm" | "doc" | "dot" | "ppt" | "pot" | "pptx" | "pptm" | "potx" | "potm" | "ppsx" | "ppsm" | "rtf" | "odt" | "odp" | "xlsx" | "xltx" | "xlsm" | "xlsb" | "xls" | "xlt" | "xla" | "xlam" | "xltm" | "csv" | "tsv" | "ods" | "fods" | "pages" | "numbers" | "key" | "wpd" | "wp" | "wp5" | "wp6" | "dbf" | "ofd" | "hwp" | "hwpx" | "typ" | "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" | "mbox" | "olb" | "dra" | "gds" | "oas" | "oasis" | "dxf" | "dwg" | "dwf" | "dwfx" | "xps" | "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" | "vtk" | "vtp" | "geojson" | "kml" | "gpx" | "shp" | "excalidraw" | "drawio" | "dio" | "mermaid" | "mmd" | "plantuml" | "puml" | "xmind" | "epub" | "fb2" | "umd" | "gif" | "jpg" | "bmp" | "tiff" | "tif" | "avif" | "ico" | "heic" | "heif" | "jxl" | "md" | "txt" | "json" | "mjs" | "cjs" | "css" | "java" | "py" | "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" | "swift" | "kt" | "mp4" | "webm" | "m3u8" | "mp3" | "mpeg" | "wav" | "ogg" | "oga" | "opus" | "m4a" | "aac" | "flac" | "weba" | "midi" | "mid" | "psd" | "ai" | "eps" | "ase" | "aco" | "ttf" | "otf" | "woff" | "woff2" | "sqlite" | "parquet" | "avro" | "webarchive")[];
884
- /** @deprecated Use DEFAULT_REGISTERED_EXTENSIONS when the experimental/stable distinction matters. */
885
- export declare const DEFAULT_SUPPORTED_EXTENSIONS: readonly ("markdown" | "webp" | "jpeg" | "png" | "pdf" | "xyz" | "wasm" | "chm" | "typst" | "xd" | "fla" | "js" | "html" | "svg" | "rb" | "docx" | "docm" | "dotx" | "dotm" | "doc" | "dot" | "ppt" | "pot" | "pptx" | "pptm" | "potx" | "potm" | "ppsx" | "ppsm" | "rtf" | "odt" | "odp" | "xlsx" | "xltx" | "xlsm" | "xlsb" | "xls" | "xlt" | "xla" | "xlam" | "xltm" | "csv" | "tsv" | "ods" | "fods" | "pages" | "numbers" | "key" | "wpd" | "wp" | "wp5" | "wp6" | "dbf" | "ofd" | "hwp" | "hwpx" | "typ" | "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" | "mbox" | "olb" | "dra" | "gds" | "oas" | "oasis" | "dxf" | "dwg" | "dwf" | "dwfx" | "xps" | "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" | "vtk" | "vtp" | "geojson" | "kml" | "gpx" | "shp" | "excalidraw" | "drawio" | "dio" | "mermaid" | "mmd" | "plantuml" | "puml" | "xmind" | "epub" | "fb2" | "umd" | "gif" | "jpg" | "bmp" | "tiff" | "tif" | "avif" | "ico" | "heic" | "heif" | "jxl" | "dicom" | "dcm" | "p7m" | "p7s" | "p7c" | "p7b" | "pkcs7" | "cms" | "cmsc" | "tsd" | "tst" | "tsq" | "tsr" | "asics" | "scs" | "asice" | "sce" | "ers" | "asc" | "sig" | "pgp" | "gpg" | "jws" | "md" | "txt" | "json" | "mjs" | "cjs" | "css" | "java" | "py" | "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" | "swift" | "kt" | "mp4" | "webm" | "m3u8" | "mp3" | "mpeg" | "wav" | "ogg" | "oga" | "opus" | "m4a" | "aac" | "flac" | "weba" | "midi" | "mid" | "psb" | "pdd" | "psdt" | "psd" | "ait" | "ai" | "idml" | "icml" | "idms" | "inx" | "xfl" | "indd" | "indt" | "ps" | "eps" | "ase" | "aco" | "abr" | "csh" | "pat" | "grd" | "asl" | "ttf" | "otf" | "woff" | "woff2" | "sqlite" | "parquet" | "avro" | "webarchive" | "bin" | "hex" | "elf" | "exe" | "dll" | "class" | "macho")[];
901
+ export declare const DEFAULT_REGISTERED_EXTENSIONS: readonly ("markdown" | "webp" | "jpeg" | "png" | "pdf" | "xyz" | "wasm" | "chm" | "typst" | "xd" | "fla" | "js" | "html" | "svg" | "rb" | "docx" | "docm" | "dotx" | "dotm" | "doc" | "dot" | "ppt" | "pot" | "pptx" | "pptm" | "potx" | "potm" | "ppsx" | "ppsm" | "rtf" | "odt" | "odp" | "xlsx" | "xltx" | "xlsm" | "xlsb" | "xls" | "xlt" | "xla" | "xlam" | "xltm" | "csv" | "tsv" | "ods" | "fods" | "pages" | "numbers" | "key" | "wpd" | "wp" | "wp5" | "wp6" | "dbf" | "ofd" | "hwp" | "hwpx" | "typ" | "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" | "mbox" | "olb" | "dra" | "gds" | "oas" | "oasis" | "dxf" | "dwg" | "dwf" | "dwfx" | "xps" | "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" | "vtk" | "vtp" | "geojson" | "kml" | "gpx" | "shp" | "excalidraw" | "drawio" | "dio" | "mermaid" | "mmd" | "plantuml" | "puml" | "bpmn" | "xmind" | "epub" | "fb2" | "umd" | "gif" | "jpg" | "bmp" | "tiff" | "tif" | "avif" | "ico" | "heic" | "heif" | "jxl" | "dicom" | "dcm" | "p7m" | "p7s" | "p7c" | "p7b" | "pkcs7" | "cms" | "cmsc" | "tsd" | "tst" | "tsq" | "tsr" | "asics" | "scs" | "asice" | "sce" | "ers" | "asc" | "sig" | "pgp" | "gpg" | "jws" | "md" | "txt" | "lrc" | "json" | "mjs" | "cjs" | "css" | "java" | "py" | "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" | "swift" | "kt" | "mp4" | "webm" | "m3u8" | "mp3" | "mpeg" | "wav" | "ogg" | "oga" | "opus" | "m4a" | "aac" | "flac" | "weba" | "midi" | "mid" | "psb" | "pdd" | "psdt" | "psd" | "ait" | "ai" | "idml" | "icml" | "idms" | "inx" | "xfl" | "indd" | "indt" | "ps" | "eps" | "ase" | "aco" | "abr" | "csh" | "pat" | "grd" | "asl" | "ttf" | "otf" | "woff" | "woff2" | "sqlite" | "parquet" | "avro" | "webarchive" | "bin" | "hex" | "elf" | "exe" | "dll" | "class" | "macho")[];
902
+ export declare const DEFAULT_STABLE_SUPPORTED_EXTENSIONS: readonly ("markdown" | "webp" | "jpeg" | "png" | "pdf" | "xyz" | "wasm" | "chm" | "typst" | "js" | "html" | "svg" | "rb" | "docx" | "docm" | "dotx" | "dotm" | "doc" | "dot" | "ppt" | "pot" | "pptx" | "pptm" | "potx" | "potm" | "ppsx" | "ppsm" | "rtf" | "odt" | "odp" | "xlsx" | "xltx" | "xlsm" | "xlsb" | "xls" | "xlt" | "xla" | "xlam" | "xltm" | "csv" | "tsv" | "ods" | "fods" | "pages" | "numbers" | "key" | "wpd" | "wp" | "wp5" | "wp6" | "dbf" | "ofd" | "hwp" | "hwpx" | "typ" | "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" | "mbox" | "olb" | "dra" | "gds" | "oas" | "oasis" | "dxf" | "dwg" | "dwf" | "dwfx" | "xps" | "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" | "vtk" | "vtp" | "geojson" | "kml" | "gpx" | "shp" | "excalidraw" | "drawio" | "dio" | "mermaid" | "mmd" | "plantuml" | "puml" | "xmind" | "epub" | "fb2" | "umd" | "gif" | "jpg" | "bmp" | "tiff" | "tif" | "avif" | "ico" | "heic" | "heif" | "jxl" | "md" | "txt" | "lrc" | "json" | "mjs" | "cjs" | "css" | "java" | "py" | "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" | "swift" | "kt" | "mp4" | "webm" | "m3u8" | "mp3" | "mpeg" | "wav" | "ogg" | "oga" | "opus" | "m4a" | "aac" | "flac" | "weba" | "midi" | "mid" | "psd" | "ai" | "eps" | "ase" | "aco" | "ttf" | "otf" | "woff" | "woff2" | "sqlite" | "parquet" | "avro" | "webarchive")[];
903
+ export declare const DEFAULT_SUPPORTED_EXTENSIONS: readonly ("markdown" | "webp" | "jpeg" | "png" | "pdf" | "xyz" | "wasm" | "chm" | "typst" | "xd" | "fla" | "js" | "html" | "svg" | "rb" | "docx" | "docm" | "dotx" | "dotm" | "doc" | "dot" | "ppt" | "pot" | "pptx" | "pptm" | "potx" | "potm" | "ppsx" | "ppsm" | "rtf" | "odt" | "odp" | "xlsx" | "xltx" | "xlsm" | "xlsb" | "xls" | "xlt" | "xla" | "xlam" | "xltm" | "csv" | "tsv" | "ods" | "fods" | "pages" | "numbers" | "key" | "wpd" | "wp" | "wp5" | "wp6" | "dbf" | "ofd" | "hwp" | "hwpx" | "typ" | "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" | "mbox" | "olb" | "dra" | "gds" | "oas" | "oasis" | "dxf" | "dwg" | "dwf" | "dwfx" | "xps" | "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" | "vtk" | "vtp" | "geojson" | "kml" | "gpx" | "shp" | "excalidraw" | "drawio" | "dio" | "mermaid" | "mmd" | "plantuml" | "puml" | "bpmn" | "xmind" | "epub" | "fb2" | "umd" | "gif" | "jpg" | "bmp" | "tiff" | "tif" | "avif" | "ico" | "heic" | "heif" | "jxl" | "dicom" | "dcm" | "p7m" | "p7s" | "p7c" | "p7b" | "pkcs7" | "cms" | "cmsc" | "tsd" | "tst" | "tsq" | "tsr" | "asics" | "scs" | "asice" | "sce" | "ers" | "asc" | "sig" | "pgp" | "gpg" | "jws" | "md" | "txt" | "lrc" | "json" | "mjs" | "cjs" | "css" | "java" | "py" | "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" | "swift" | "kt" | "mp4" | "webm" | "m3u8" | "mp3" | "mpeg" | "wav" | "ogg" | "oga" | "opus" | "m4a" | "aac" | "flac" | "weba" | "midi" | "mid" | "psb" | "pdd" | "psdt" | "psd" | "ait" | "ai" | "idml" | "icml" | "idms" | "inx" | "xfl" | "indd" | "indt" | "ps" | "eps" | "ase" | "aco" | "abr" | "csh" | "pat" | "grd" | "asl" | "ttf" | "otf" | "woff" | "woff2" | "sqlite" | "parquet" | "avro" | "webarchive" | "bin" | "hex" | "elf" | "exe" | "dll" | "class" | "macho")[];
@@ -792,6 +792,35 @@ export const DEFAULT_RENDERER_DEFINITIONS = [
792
792
  "search": true
793
793
  }
794
794
  },
795
+ {
796
+ "id": "bpmn",
797
+ "label": "BPMN 2.0",
798
+ "category": "drawing",
799
+ "extensions": [
800
+ "bpmn"
801
+ ],
802
+ "async": true,
803
+ "supportLevel": "structured",
804
+ "status": "experimental",
805
+ "packageName": "@file-viewer/renderer-drawing",
806
+ "presets": [],
807
+ "containerVersions": [
808
+ "BPMN 2.0 XML with BPMN DI"
809
+ ],
810
+ "knownLimits": [
811
+ "Explicit opt-in with bpmn-js",
812
+ "Diagram preview requires BPMN DI layout; source remains available without it",
813
+ "Read-only preview; process scripts are never executed",
814
+ "The bpmn.io watermark is retained under the upstream license"
815
+ ],
816
+ "capabilities": {
817
+ "download": true,
818
+ "print": false,
819
+ "exportHtml": false,
820
+ "zoom": "provider",
821
+ "search": false
822
+ }
823
+ },
795
824
  {
796
825
  "id": "mindmap",
797
826
  "label": "Mind Map",
@@ -1060,6 +1089,7 @@ export const DEFAULT_RENDERER_DEFINITIONS = [
1060
1089
  "category": "code",
1061
1090
  "extensions": [
1062
1091
  "txt",
1092
+ "lrc",
1063
1093
  "json",
1064
1094
  "js",
1065
1095
  "mjs",
@@ -1120,9 +1150,12 @@ export const DEFAULT_RENDERER_DEFINITIONS = [
1120
1150
  "containerVersions": [
1121
1151
  "Plain text",
1122
1152
  "source code",
1123
- "Git bundle"
1153
+ "Git bundle",
1154
+ "LRC lyrics"
1155
+ ],
1156
+ "knownLimits": [
1157
+ "LRC is a static annotated/lyrics/source preview, not synchronized audio playback"
1124
1158
  ],
1125
- "knownLimits": [],
1126
1159
  "capabilities": {
1127
1160
  "download": true,
1128
1161
  "print": true,
@@ -1294,7 +1327,7 @@ export const DEFAULT_RENDERER_DEFINITIONS = [
1294
1327
  "presets": [],
1295
1328
  "containerVersions": [
1296
1329
  "IDML package",
1297
- "@paged-media/introspect-wasm 0.62.0"
1330
+ "@paged-media/introspect-wasm 0.70.2"
1298
1331
  ],
1299
1332
  "knownLimits": [
1300
1333
  "Pages are rendered locally by the CPU WASM engine in a module Worker; the browser never uploads the IDML package",
@@ -1623,5 +1656,4 @@ export const DEFAULT_REGISTERED_EXTENSIONS = Object.freeze(Array.from(new Set(DE
1623
1656
  export const DEFAULT_STABLE_SUPPORTED_EXTENSIONS = Object.freeze(Array.from(new Set(DEFAULT_RENDERER_DEFINITIONS
1624
1657
  .filter(definition => definition.status === 'stable')
1625
1658
  .flatMap(definition => definition.extensions))).sort());
1626
- /** @deprecated Use DEFAULT_REGISTERED_EXTENSIONS when the experimental/stable distinction matters. */
1627
1659
  export const DEFAULT_SUPPORTED_EXTENSIONS = DEFAULT_REGISTERED_EXTENSIONS;
@@ -1,5 +1,5 @@
1
- export { DEFAULT_REGISTERED_EXTENSIONS, DEFAULT_RENDERER_DEFINITIONS, DEFAULT_STABLE_SUPPORTED_EXTENSIONS, DEFAULT_SUPPORTED_EXTENSIONS, } from './formats.generated.js';
2
- import { DEFAULT_RENDERER_DEFINITIONS } from './formats.generated.js';
1
+ export { DEFAULT_REGISTERED_EXTENSIONS, DEFAULT_RENDERER_DEFINITIONS, DEFAULT_STABLE_SUPPORTED_EXTENSIONS, DEFAULT_SUPPORTED_EXTENSIONS, } from "./formats.generated.js";
2
+ import { DEFAULT_RENDERER_DEFINITIONS } from "./formats.generated.js";
3
3
  const extensionsFor = (rendererId) => {
4
4
  var _a, _b;
5
5
  return Object.freeze([...((_b = (_a = DEFAULT_RENDERER_DEFINITIONS.find(definition => definition.id === rendererId)) === null || _a === void 0 ? void 0 : _a.extensions) !== null && _b !== void 0 ? _b : [])]);
@@ -1,13 +1,6 @@
1
- import type { FileViewerRendererHandlerRegistration, FileViewerRendererPluginInput, FileViewerRendererPlugin, FileViewerRendererPresetInput, FileViewerRendererPresetName, RendererDefinition, RendererRegistry } from '../contracts/types';
1
+ import type { FileViewerRendererHandlerRegistration, FileViewerRendererPluginInput, FileViewerRendererPlugin, FileViewerRendererPresetInput, FileViewerRendererPresetName, RendererDefinition, RendererRegistry } from "../contracts/types.js";
2
2
  export interface RegisterFileViewerAutoRendererPresetOptions {
3
- /**
4
- * Stable key used to replace an existing auto preset registration.
5
- */
6
3
  id?: string;
7
- /**
8
- * Package name is useful for diagnostics and gives generated integrations a
9
- * deterministic id even when the preset input is an array.
10
- */
11
4
  packageName?: string;
12
5
  }
13
6
  export interface FileViewerAutoRendererPresetEntry<Handler = unknown> {
@@ -16,6 +9,11 @@ export interface FileViewerAutoRendererPresetEntry<Handler = unknown> {
16
9
  input: FileViewerRendererPluginInput<Handler>;
17
10
  }
18
11
  export declare const createRendererRegistry: (initialDefinitions?: readonly RendererDefinition[]) => RendererRegistry;
12
+ export declare const matchesFileViewerRendererFilename: (definition: Pick<RendererDefinition, "filenamePatterns">, filename: string) => boolean;
13
+ export declare const resolveFileViewerRendererDefinition: (registry: Pick<RendererRegistry, "getByExtension" | "list">, input: {
14
+ filename?: string;
15
+ extension?: string;
16
+ }) => RendererDefinition | undefined;
19
17
  export interface InstallFileViewerRendererPluginsOptions<Handler = unknown> {
20
18
  registry: RendererRegistry;
21
19
  plugins: Iterable<FileViewerRendererPlugin<Handler>>;
@@ -34,12 +32,5 @@ export declare const listFileViewerAutoRendererPresetEntries: <Handler = unknown
34
32
  export declare const findFileViewerAutoRendererPreset: <Handler = unknown>(id: FileViewerRendererPresetName | string) => FileViewerRendererPluginInput<Handler> | undefined;
35
33
  export declare const getFileViewerAutoRendererPresetVersion: () => number;
36
34
  export declare const hasFileViewerRendererPresetName: (input?: FileViewerRendererPresetInput | null) => boolean;
37
- /**
38
- * Normalizes `options.preset` / `options.presets` into renderer plugin inputs.
39
- *
40
- * Passing a preset object is the most portable integration style because it
41
- * works in any bundler. String selectors intentionally only resolve presets
42
- * that are already registered by a side-effect import or by build tooling.
43
- */
44
35
  export declare const resolveFileViewerRendererPresetInputs: <Handler = unknown>(input?: FileViewerRendererPresetInput<Handler> | null) => FileViewerRendererPluginInput<Handler>[];
45
36
  export declare const installFileViewerRendererPlugins: <Handler = unknown>({ registry, plugins, registerHandler, }: InstallFileViewerRendererPluginsOptions<Handler>) => Promise<RendererRegistry>;
@@ -1,5 +1,5 @@
1
- import { DEFAULT_RENDERER_DEFINITIONS } from './formats.js';
2
- import { normalizeFileExtension } from '../source/index.js';
1
+ import { DEFAULT_RENDERER_DEFINITIONS } from "./formats.js";
2
+ import { getExtension, normalizeFileExtension, normalizeFilename } from "../source/index.js";
3
3
  const autoRendererBucketKey = '__flyfish_file_viewer_auto_renderer_presets__';
4
4
  const getAutoRendererBucket = () => {
5
5
  const host = globalThis;
@@ -76,6 +76,28 @@ export const createRendererRegistry = (initialDefinitions = DEFAULT_RENDERER_DEF
76
76
  },
77
77
  };
78
78
  };
79
+ export const matchesFileViewerRendererFilename = (definition, filename) => {
80
+ const normalizedFilename = normalizeFilename(filename, '').toLowerCase();
81
+ if (!normalizedFilename)
82
+ return false;
83
+ return (definition.filenamePatterns || []).some(pattern => {
84
+ const normalizedPattern = pattern.trim().toLowerCase();
85
+ if (!normalizedPattern)
86
+ return false;
87
+ if (normalizedPattern.startsWith('*.'))
88
+ return normalizedFilename.endsWith(normalizedPattern.slice(1));
89
+ return normalizedFilename === normalizedPattern;
90
+ });
91
+ };
92
+ export const resolveFileViewerRendererDefinition = (registry, input) => {
93
+ const filenameMatch = input.filename
94
+ ? registry.list().find(definition => matchesFileViewerRendererFilename(definition, input.filename || ''))
95
+ : undefined;
96
+ if (filenameMatch)
97
+ return filenameMatch;
98
+ const extension = normalizeFileExtension(input.extension || getExtension(input.filename || ''));
99
+ return extension ? registry.getByExtension(extension) : undefined;
100
+ };
79
101
  const collectRendererEnhancementClaims = (registry, definitions) => {
80
102
  var _a, _b;
81
103
  const normalizedDefinitions = definitions.map(normalizeDefinition);
@@ -195,7 +217,6 @@ const createRendererDefinitionInstallPlan = (registry, definitions) => {
195
217
  ...regularDefinitions,
196
218
  ...enhancerDefinitions,
197
219
  ];
198
- // Validate the complete ownership transition before mutating the caller's registry.
199
220
  const validationRegistry = createRendererRegistry(registry.list());
200
221
  plannedDefinitions.forEach(definition => validationRegistry.register(definition));
201
222
  return { definitions: plannedDefinitions };
@@ -306,13 +327,6 @@ export const hasFileViewerRendererPresetName = (input) => {
306
327
  }
307
328
  return false;
308
329
  };
309
- /**
310
- * Normalizes `options.preset` / `options.presets` into renderer plugin inputs.
311
- *
312
- * Passing a preset object is the most portable integration style because it
313
- * works in any bundler. String selectors intentionally only resolve presets
314
- * that are already registered by a side-effect import or by build tooling.
315
- */
316
330
  export const resolveFileViewerRendererPresetInputs = (input) => {
317
331
  if (!input) {
318
332
  return [];
@@ -1,2 +1,2 @@
1
- import type { FileRenderContext, FileViewerRenderedInstance } from '../contracts/types';
1
+ import type { FileRenderContext, FileViewerRenderedInstance } from "../contracts/types.js";
2
2
  export default function renderImage(buffer: ArrayBuffer, target: HTMLDivElement, type?: string, context?: FileRenderContext): Promise<FileViewerRenderedInstance>;
@@ -1,7 +1,7 @@
1
- import { registerFileViewerZoomProvider, unregisterFileViewerZoomProvider, } from '../features/document/dom/index.js';
2
- import { resolveFileViewerFitScale, } from '../features/document/fit.js';
3
- import { createFileViewerTranslator } from '../i18n/messages.js';
4
- import { createFileViewerZoomChangeEmitter as createZoomChangeEmitter } from '../features/document/zoom.js';
1
+ import { registerFileViewerZoomProvider, unregisterFileViewerZoomProvider, } from "../features/document/dom/index.js";
2
+ import { resolveFileViewerFitScale, } from "../features/document/fit.js";
3
+ import { createFileViewerTranslator } from "../i18n/messages.js";
4
+ import { createFileViewerZoomChangeEmitter as createZoomChangeEmitter } from "../features/document/zoom.js";
5
5
  const imageMimeMap = {
6
6
  avif: 'image/avif',
7
7
  bmp: 'image/bmp',
@@ -130,6 +130,7 @@ export default async function renderImage(buffer, target, type, context) {
130
130
  var _a, _b;
131
131
  const t = createFileViewerTranslator(context === null || context === void 0 ? void 0 : context.options);
132
132
  const documentRef = target.ownerDocument || document;
133
+ const targetWindow = documentRef.defaultView;
133
134
  const src = await resolveImageUrl(buffer, type);
134
135
  (_a = context === null || context === void 0 ? void 0 : context.registerThumbnailAdapter) === null || _a === void 0 ? void 0 : _a.call(context, {
135
136
  capture: () => new Blob([buffer], { type: getImageBlobType(type) }),
@@ -138,6 +139,8 @@ export default async function renderImage(buffer, target, type, context) {
138
139
  let fitScale = 1;
139
140
  let currentScale = 1;
140
141
  let viewportHeight = 0;
142
+ let viewportResizeFrame = null;
143
+ let destroyed = false;
141
144
  const zoomEmitter = createZoomChangeEmitter();
142
145
  const root = documentRef.createElement('div');
143
146
  root.className = 'image-viewer';
@@ -195,7 +198,20 @@ export default async function renderImage(buffer, target, type, context) {
195
198
  applyImageZoom();
196
199
  zoomEmitter.emit();
197
200
  };
198
- const resizeObserver = new ResizeObserver(updateViewportSize);
201
+ const scheduleViewportUpdate = () => {
202
+ if (destroyed || viewportResizeFrame !== null)
203
+ return;
204
+ if (!(targetWindow === null || targetWindow === void 0 ? void 0 : targetWindow.requestAnimationFrame)) {
205
+ updateViewportSize();
206
+ return;
207
+ }
208
+ viewportResizeFrame = targetWindow.requestAnimationFrame(() => {
209
+ viewportResizeFrame = null;
210
+ if (!destroyed)
211
+ updateViewportSize();
212
+ });
213
+ };
214
+ const resizeObserver = new ResizeObserver(scheduleViewportUpdate);
199
215
  resizeObserver.observe(root);
200
216
  image.addEventListener('load', updateViewportSize);
201
217
  const getZoomState = () => ({
@@ -280,6 +296,11 @@ export default async function renderImage(buffer, target, type, context) {
280
296
  $el: target,
281
297
  unmount() {
282
298
  var _a;
299
+ destroyed = true;
300
+ if (viewportResizeFrame !== null) {
301
+ targetWindow === null || targetWindow === void 0 ? void 0 : targetWindow.cancelAnimationFrame(viewportResizeFrame);
302
+ viewportResizeFrame = null;
303
+ }
283
304
  (_a = context === null || context === void 0 ? void 0 : context.registerThumbnailAdapter) === null || _a === void 0 ? void 0 : _a.call(context, null);
284
305
  unregisterFileViewerZoomProvider(root);
285
306
  resizeObserver.disconnect();
@@ -1,4 +1,4 @@
1
- import type { FileViewerBuiltinRendererPreset, FileRenderHandler, FileViewerRenderedInstance } from '../contracts/types';
1
+ import type { FileViewerBuiltinRendererPreset, FileRenderHandler, FileViewerRenderedInstance } from "../contracts/types.js";
2
2
  type CoreBrowserRendererHandler = FileRenderHandler<FileViewerRenderedInstance, HTMLDivElement>;
3
3
  interface CoreBrowserRendererHandlerEntry {
4
4
  rendererId: string;
@@ -444,6 +444,25 @@ export declare const coreLiteRendererDefinitions: ({
444
444
  readonly zoom: "provider";
445
445
  readonly search: true;
446
446
  };
447
+ } | {
448
+ readonly id: "bpmn";
449
+ readonly label: "BPMN 2.0";
450
+ readonly category: "drawing";
451
+ readonly extensions: readonly ["bpmn"];
452
+ readonly async: true;
453
+ readonly supportLevel: "structured";
454
+ readonly status: "experimental";
455
+ readonly packageName: "@file-viewer/renderer-drawing";
456
+ readonly presets: readonly [];
457
+ readonly containerVersions: readonly ["BPMN 2.0 XML with BPMN DI"];
458
+ readonly knownLimits: readonly ["Explicit opt-in with bpmn-js", "Diagram preview requires BPMN DI layout; source remains available without it", "Read-only preview; process scripts are never executed", "The bpmn.io watermark is retained under the upstream license"];
459
+ readonly capabilities: {
460
+ readonly download: true;
461
+ readonly print: false;
462
+ readonly exportHtml: false;
463
+ readonly zoom: "provider";
464
+ readonly search: false;
465
+ };
447
466
  } | {
448
467
  readonly id: "mindmap";
449
468
  readonly label: "Mind Map";
@@ -600,14 +619,14 @@ export declare const coreLiteRendererDefinitions: ({
600
619
  readonly id: "code";
601
620
  readonly label: "Code and Text";
602
621
  readonly category: "code";
603
- 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"];
622
+ readonly extensions: readonly ["txt", "lrc", "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"];
604
623
  readonly async: true;
605
624
  readonly supportLevel: "structured";
606
625
  readonly status: "stable";
607
626
  readonly packageName: "@file-viewer/renderer-text";
608
627
  readonly presets: readonly ["lite", "standard", "all"];
609
- readonly containerVersions: readonly ["Plain text", "source code", "Git bundle"];
610
- readonly knownLimits: readonly [];
628
+ readonly containerVersions: readonly ["Plain text", "source code", "Git bundle", "LRC lyrics"];
629
+ readonly knownLimits: readonly ["LRC is a static annotated/lyrics/source preview, not synchronized audio playback"];
611
630
  readonly capabilities: {
612
631
  readonly download: true;
613
632
  readonly print: true;
@@ -705,7 +724,7 @@ export declare const coreLiteRendererDefinitions: ({
705
724
  readonly status: "experimental";
706
725
  readonly packageName: "@file-viewer/renderer-design";
707
726
  readonly presets: readonly [];
708
- readonly containerVersions: readonly ["IDML package", "@paged-media/introspect-wasm 0.62.0"];
727
+ readonly containerVersions: readonly ["IDML package", "@paged-media/introspect-wasm 0.70.2"];
709
728
  readonly knownLimits: readonly ["Pages are rendered locally by the CPU WASM engine in a module Worker; the browser never uploads the IDML package", "ZIP64, encrypted, multi-disk, overlapping, unsafe-path, unsupported-compression, and configured expansion-limit packages are rejected before the WASM engine opens them", "The current engine page tree lists TextFrame and Rectangle objects only even though other supported objects may still appear in rendered page pixels", "Each page render rebuilds the upstream document internally; interactive requests are latest-wins, preview is lazy, and print-all is bounded by the configured total RGBA working-set limit"];
710
729
  readonly capabilities: {
711
730
  readonly download: true;
@@ -892,16 +911,16 @@ export interface CreateFileViewerCoreRendererRegistryOptions {
892
911
  builtinRenderers?: FileViewerBuiltinRendererPreset;
893
912
  }
894
913
  export declare const createFileViewerCoreRendererRegistry: (options?: CreateFileViewerCoreRendererRegistryOptions) => {
895
- dispatcher: import("..").FileViewerRendererDispatcher<CoreBrowserRendererHandler>;
896
- registry: import("..").RendererRegistry;
914
+ dispatcher: import("../index.js").FileViewerRendererDispatcher<CoreBrowserRendererHandler>;
915
+ registry: import("../index.js").RendererRegistry;
897
916
  missingRendererIds: string[];
898
917
  };
899
918
  export declare const fileViewerCoreRendererRegistryBridge: {
900
- dispatcher: import("..").FileViewerRendererDispatcher<CoreBrowserRendererHandler>;
901
- registry: import("..").RendererRegistry;
919
+ dispatcher: import("../index.js").FileViewerRendererDispatcher<CoreBrowserRendererHandler>;
920
+ registry: import("../index.js").RendererRegistry;
902
921
  missingRendererIds: string[];
903
922
  };
904
- export declare const fileViewerCoreRendererRegistry: import("..").RendererRegistry;
905
- export declare const fileViewerCoreRendererDispatcher: import("..").FileViewerRendererDispatcher<CoreBrowserRendererHandler>;
923
+ export declare const fileViewerCoreRendererRegistry: import("../index.js").RendererRegistry;
924
+ export declare const fileViewerCoreRendererDispatcher: import("../index.js").FileViewerRendererDispatcher<CoreBrowserRendererHandler>;
906
925
  export declare const missingFileViewerCoreRendererHandlers: string[];
907
926
  export {};
@@ -1,23 +1,17 @@
1
- // Browser renderer strategy registry.
2
- //
3
- // Each entry lazy-loads a concrete renderer only after its format is selected.
4
- // Keep renderer-specific dependencies inside the leaf renderer files so the
5
- // core shell and framework wrappers stay fast on first load.
6
- import { DEFAULT_RENDERER_DEFINITIONS } from '../registry/formats.js';
7
- import { createFileRenderHandlerRegistry } from '../rendering/handler.js';
8
- import { createFileViewerRendererDispatcher } from '../rendering/dispatcher.js';
9
- import { createFileViewerUnsupportedState } from '../viewer/state.js';
1
+ import { DEFAULT_RENDERER_DEFINITIONS } from "../registry/formats.js";
2
+ import { createFileRenderHandlerRegistry } from "../rendering/handler.js";
3
+ import { createFileViewerRendererDispatcher } from "../rendering/dispatcher.js";
4
+ import { createFileViewerUnsupportedState } from "../viewer/state.js";
10
5
  const createWrapper = (el) => ({
11
6
  $el: el,
12
7
  unmount() {
13
- // DOM renderers clean themselves up through their own returned instance.
14
8
  },
15
9
  });
16
10
  export const coreBrowserRendererHandlers = [
17
11
  {
18
12
  rendererId: 'image',
19
13
  handler: async (buffer, target, type, context) => {
20
- const { default: renderImage } = await import('./image.js');
14
+ const { default: renderImage } = await import("./image.js");
21
15
  return renderImage(buffer, target, type, context);
22
16
  },
23
17
  },
@@ -1,13 +1,8 @@
1
- import type { RendererRegistry } from '../contracts/types';
1
+ import type { RendererRegistry } from "../contracts/types.js";
2
2
  export interface FileViewerRendererHandlerEntry<Handler> {
3
3
  rendererId: string;
4
4
  handler: Handler;
5
5
  }
6
- /**
7
- * Content-signature aware renderers can throw this shape when the filename
8
- * extension points at the wrong container. The orchestration layer follows the
9
- * redirect once, using the handler registered for the detected renderer id.
10
- */
11
6
  export interface FileViewerRendererRedirectError extends Error {
12
7
  actualRendererId: string;
13
8
  }
@@ -1,6 +1,6 @@
1
- import { DEFAULT_RENDERER_DEFINITIONS } from '../registry/formats.js';
2
- import { createRendererRegistry } from '../registry/registry.js';
3
- import { normalizeFileExtension } from '../source/index.js';
1
+ import { DEFAULT_RENDERER_DEFINITIONS } from "../registry/formats.js";
2
+ import { createRendererRegistry } from "../registry/registry.js";
3
+ import { normalizeFileExtension } from "../source/index.js";
4
4
  export const resolveFileViewerRendererRedirectId = (error) => {
5
5
  if (!error || typeof error !== 'object' || !('actualRendererId' in error)) {
6
6
  return undefined;
@@ -1,6 +1,6 @@
1
- import type { FileViewerRendererDispatcher } from './dispatcher';
2
- import { type FileViewerMutableAccessor, type MutableFileViewerRenderReadinessState } from '../source/loading';
3
- import type { FileRenderExportAdapter, FileRenderThumbnailAdapter, FileRenderContext, FileRenderHandler, FileViewerLifecycleContext, FileViewerOptions, FileViewerStyleIsolation, RenderSurface, RendererDefinition, RendererLoadContext, RendererLoader, RendererRegistry, RendererSession } from '../contracts/types';
1
+ import type { FileViewerRendererDispatcher } from "./dispatcher.js";
2
+ import { type FileViewerMutableAccessor, type MutableFileViewerRenderReadinessState } from "../source/loading.js";
3
+ import type { FileRenderExportAdapter, FileRenderThumbnailAdapter, FileRenderContext, FileRenderHandler, FileViewerLifecycleContext, FileViewerOptions, FileViewerStyleIsolation, RenderSurface, RendererDefinition, RendererLoadContext, RendererLoader, RendererRegistry, RendererSession } from "../contracts/types.js";
4
4
  export declare const FILE_VIEWER_RENDER_SESSION_DISPOSE_ERROR_MESSAGE = "\u9884\u89C8\u5185\u5BB9\u5378\u8F7D\u5931\u8D25";
5
5
  export interface ResolveFileViewerRenderSessionDisposeErrorMessageInput {
6
6
  message?: string;
@@ -21,6 +21,7 @@ export interface RenderFileViewerHandlerInput<Rendered = unknown, Target extends
21
21
  export interface CreateFileRenderHandlerLoaderOptions<Rendered = unknown, Target extends HTMLElement = HTMLElement> {
22
22
  handler: FileRenderHandler<Rendered, Target>;
23
23
  rendererId?: string;
24
+ allowUrlSource?: boolean;
24
25
  getTarget?: (context: RendererLoadContext) => Target;
25
26
  createContext?: (context: RendererLoadContext) => FileRenderContext;
26
27
  destroy?: (rendered: Rendered, context: RendererLoadContext) => void | Promise<void>;
@@ -59,10 +60,6 @@ export interface FileViewerStyleHandle {
59
60
  remove(): void;
60
61
  }
61
62
  export interface AppendFileViewerStyleOptions {
62
- /**
63
- * Constructable stylesheets are useful for long-lived ShadowRoots. Keep this
64
- * opt-in so renderer styles still clean up naturally with their target node.
65
- */
66
63
  adoptedStyleSheet?: boolean;
67
64
  }
68
65
  export interface ResetFileViewerRenderSurfaceInput<Session extends RendererSession = RendererSession> {
@@ -80,6 +77,7 @@ export interface FileViewerRenderSurfaceMountContext<Session extends RendererSes
80
77
  filename: string;
81
78
  sourceUrl?: string;
82
79
  streamUrl?: string;
80
+ signal?: AbortSignal;
83
81
  onProgressiveRender: () => void;
84
82
  registerExportAdapter: (adapter: FileRenderExportAdapter | null) => void;
85
83
  surfaceState: MutableFileViewerRenderSurfaceState<Session>;
@@ -91,6 +89,8 @@ export interface RunFileViewerRenderSurfaceMountInput<Session extends RendererSe
91
89
  version: number;
92
90
  sourceUrl?: string;
93
91
  streamUrl?: string;
92
+ signal?: AbortSignal;
93
+ typeOverride?: string;
94
94
  getContainer: () => HTMLElement | null | undefined;
95
95
  surfaceState: MutableFileViewerRenderSurfaceState<Session>;
96
96
  readinessState: MutableFileViewerRenderReadinessState;
@@ -133,7 +133,7 @@ export interface FileViewerRenderSurfaceActionHandlers<Session extends RendererS
133
133
  destroyRenderSession: (session?: Session | null) => void;
134
134
  setActiveRenderSession: (session: Session | null) => MutableFileViewerRenderSurfaceState<Session>;
135
135
  clearRenderedContent: (reason?: FileViewerLifecycleContext['reason']) => FileViewerRenderSurfaceClearState<Session, UnloadContext>;
136
- mountRenderedContent: (buffer: ArrayBuffer, file: File, version: number, sourceUrl?: string, streamUrl?: string) => Promise<Session | undefined>;
136
+ mountRenderedContent: (buffer: ArrayBuffer, file: File, version: number, sourceUrl?: string, streamUrl?: string, signal?: AbortSignal, typeOverride?: string) => Promise<Session | undefined>;
137
137
  }
138
138
  export interface CreateFileViewerRenderSurfaceActionHandlersInput<Session extends RendererSession = RendererSession, UnloadContext = FileViewerLifecycleContext | null> {
139
139
  getContainer: () => HTMLElement | null | undefined;
@@ -164,11 +164,6 @@ export interface CreateFileViewerRenderSurfaceActionHandlersInput<Session extend
164
164
  export declare const DEFAULT_FILE_VIEWER_RENDER_TARGET_CLASS = "file-render";
165
165
  export declare const FILE_VIEWER_RENDER_SURFACE_BACKGROUND_PROPERTY = "--file-viewer-render-surface-background";
166
166
  export declare const normalizeFileViewerRenderSurfaceBackground: (value: unknown) => string | null;
167
- /**
168
- * Keeps the public UI option and the renderer-facing CSS custom property in
169
- * sync. Custom properties inherit through Shadow DOM, so setting this on the
170
- * render host covers both scoped and shadow-isolated renderer targets.
171
- */
172
167
  export declare const syncFileViewerRenderSurfaceBackground: (target: HTMLElement | null | undefined, options?: Pick<FileViewerOptions, "ui"> | null) => string | null;
173
168
  export declare const isFileViewerShadowRoot: (value: unknown) => value is ShadowRoot;
174
169
  export declare const getFileViewerShadowRootForNode: (node: Node | null | undefined) => ShadowRoot | null;
@@ -204,9 +199,9 @@ export declare const disposeFileViewerRendererSession: (session?: RendererSessio
204
199
  export declare const disposeActiveFileViewerRendererSession: <Session extends RendererSession, Target extends MutableFileViewerRenderSurfaceState<Session>>(target: Target, options?: DisposeFileViewerRendererSessionOptions) => Session | null;
205
200
  export declare const resetFileViewerRenderSurface: <Session extends RendererSession>({ surfaceState, readinessState, container, disposeOptions, }: ResetFileViewerRenderSurfaceInput<Session>) => Session | null;
206
201
  export declare const runFileViewerRenderSurfaceClear: <Session extends RendererSession, UnloadContext = FileViewerLifecycleContext | null>({ reason, surfaceState, readinessState, container, disposeOptions, onUnloadStart, onUnloadComplete, onClearActiveDocumentContext, onClearDocumentState, onStopZoomObserver, onClearZoomProvider, onStopFitObserver, onStopViewStateObserver, onClearViewStateProvider, }: RunFileViewerRenderSurfaceClearInput<Session, UnloadContext>) => FileViewerRenderSurfaceClearState<Session, UnloadContext>;
207
- export declare const runFileViewerRenderSurfaceMount: <Session extends RendererSession>({ buffer, file, version, sourceUrl, streamUrl, getContainer, surfaceState, readinessState, isCurrent, clearRenderedContent, render, waitForContainer, waitForPaint, disposeSession, onStartZoomObserver, onStartFitObserver, onStartViewStateObserver, onApplyInitialFit, onRefreshDocumentIndex, onRefreshZoomProvider, onRefreshViewStateProvider, }: RunFileViewerRenderSurfaceMountInput<Session>) => Promise<Session | undefined>;
202
+ export declare const runFileViewerRenderSurfaceMount: <Session extends RendererSession>({ buffer, file, version, sourceUrl, streamUrl, signal, typeOverride, getContainer, surfaceState, readinessState, isCurrent, clearRenderedContent, render, waitForContainer, waitForPaint, disposeSession, onStartZoomObserver, onStartFitObserver, onStartViewStateObserver, onApplyInitialFit, onRefreshDocumentIndex, onRefreshZoomProvider, onRefreshViewStateProvider, }: RunFileViewerRenderSurfaceMountInput<Session>) => Promise<Session | undefined>;
208
203
  export declare const createFileViewerRenderSurfaceActionHandlers: <Session extends RendererSession, UnloadContext = FileViewerLifecycleContext | null>({ getContainer, surfaceState, readinessState, isCurrent, render, waitForContainer, waitForPaint, disposeOptions, onUnloadStart, onUnloadComplete, onClearActiveDocumentContext, onClearDocumentState, onStartZoomObserver, onStopZoomObserver, onClearZoomProvider, onStartFitObserver, onStopFitObserver, onStartViewStateObserver, onStopViewStateObserver, onClearViewStateProvider, onApplyInitialFit, onRefreshDocumentIndex, onRefreshZoomProvider, onRefreshViewStateProvider, }: CreateFileViewerRenderSurfaceActionHandlersInput<Session, UnloadContext>) => FileViewerRenderSurfaceActionHandlers<Session, UnloadContext>;
209
204
  export declare const buildFileRenderContextFromLoadContext: ({ source, surface, options, signal, registerExportAdapter, registerThumbnailAdapter, renderContext, }: RendererLoadContext) => FileRenderContext;
210
205
  export declare const renderFileViewerHandler: <Rendered = unknown, Target extends HTMLElement = HTMLElement>({ dispatcher, buffer, target, type, context, throwOnMissingHandler, }: RenderFileViewerHandlerInput<Rendered, Target>) => Promise<Rendered | undefined>;
211
- export declare const createFileRenderHandlerLoader: <Rendered = unknown, Target extends HTMLElement = HTMLElement>({ handler, rendererId, getTarget, createContext, destroy, }: CreateFileRenderHandlerLoaderOptions<Rendered, Target>) => RendererLoader;
206
+ export declare const createFileRenderHandlerLoader: <Rendered = unknown, Target extends HTMLElement = HTMLElement>({ handler, rendererId, allowUrlSource, getTarget, createContext, destroy, }: CreateFileRenderHandlerLoaderOptions<Rendered, Target>) => RendererLoader;
212
207
  export declare const createFileRenderHandlerRegistry: <Rendered = unknown, Target extends HTMLElement = HTMLElement>({ definitions, handlers, getTarget, createContext, destroy, }: CreateFileRenderHandlerRegistryOptions<Rendered, Target>) => FileRenderHandlerRegistryResult<Rendered, Target>;