@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.
- package/README.en.md +3 -121
- package/README.md +3 -126
- package/dist/assets.d.ts +2 -2
- package/dist/assets.js +1 -5
- package/dist/browser/controller.d.ts +1 -2
- package/dist/browser/controller.js +2 -34
- package/dist/browser.d.ts +2 -2
- package/dist/browser.js +2 -2
- package/dist/config/options.d.ts +1 -1
- package/dist/contracts/types.d.ts +30 -416
- package/dist/contracts/xml.d.ts +48 -0
- package/dist/contracts/xml.js +1 -0
- package/dist/export.d.ts +3 -10
- package/dist/export.js +2 -9
- package/dist/exportDocument.d.ts +1 -12
- package/dist/exportDocument.js +7 -31
- package/dist/features/document/dom/anchors.d.ts +1 -1
- package/dist/features/document/dom/index.d.ts +5 -5
- package/dist/features/document/dom/index.js +3 -3
- package/dist/features/document/dom/providers.d.ts +1 -1
- package/dist/features/document/events.d.ts +2 -2
- package/dist/features/document/events.js +3 -3
- package/dist/features/document/fit.d.ts +1 -1
- package/dist/features/document/fit.js +1 -1
- package/dist/features/document/model.d.ts +1 -1
- package/dist/features/document/search.d.ts +1 -1
- package/dist/features/document/search.js +2 -2
- package/dist/features/document/viewState.d.ts +1 -1
- package/dist/features/document/viewState.js +2 -2
- package/dist/features/document/zoom.d.ts +3 -2
- package/dist/features/document/zoom.js +19 -3
- package/dist/features/document/zoomGestures.d.ts +11 -0
- package/dist/features/document/zoomGestures.js +111 -0
- package/dist/features/printMask.d.ts +1 -1
- package/dist/features/printMaskDesigner.d.ts +2 -6
- package/dist/features/printMaskDesigner.js +2 -11
- package/dist/features/printMaskLoader.d.ts +1 -7
- package/dist/features/printMaskLoader.js +1 -7
- package/dist/features/watermark.d.ts +1 -1
- package/dist/headless.d.ts +29 -29
- package/dist/headless.js +16 -21
- package/dist/i18n/messages.d.ts +1 -1
- package/dist/i18n/messages.de.d.ts +1 -5
- package/dist/i18n/messages.de.js +0 -4
- package/dist/i18n/messages.ja.d.ts +1 -6
- package/dist/i18n/messages.ja.js +0 -5
- package/dist/i18n/messages.js +2 -2
- package/dist/index.d.ts +74 -73
- package/dist/index.js +37 -37
- package/dist/lifecycle/facade.d.ts +4 -4
- package/dist/lifecycle/facade.js +2 -2
- package/dist/lifecycle/operations.d.ts +4 -4
- package/dist/lifecycle/operations.js +4 -9
- package/dist/output/canvasImage.d.ts +1 -2
- package/dist/output/canvasImage.js +1 -4
- package/dist/output/export.d.ts +2 -4
- package/dist/output/export.js +133 -81
- package/dist/output/printLayout.d.ts +2 -5
- package/dist/output/printLayout.js +37 -9
- package/dist/output/snapshotDownload.d.ts +1 -2
- package/dist/output/snapshotDownload.js +2 -3
- package/dist/platform/assets.d.ts +9 -16
- package/dist/platform/assets.js +60 -17
- package/dist/platform/copiedAssets.d.ts +0 -1
- package/dist/platform/copiedAssets.js +1 -2
- package/dist/presentation/state.d.ts +1 -1
- package/dist/presentation/state.js +3 -3
- package/dist/print-mask.d.ts +2 -2
- package/dist/print-mask.js +1 -1
- package/dist/registry/capabilities.d.ts +3 -16
- package/dist/registry/capabilities.js +2 -15
- package/dist/registry/formats.d.ts +5 -5
- package/dist/registry/formats.generated.d.ts +26 -8
- package/dist/registry/formats.generated.js +36 -4
- package/dist/registry/formats.js +2 -2
- package/dist/registry/registry.d.ts +6 -15
- package/dist/registry/registry.js +24 -10
- package/dist/renderers/image.d.ts +1 -1
- package/dist/renderers/image.js +26 -5
- package/dist/renderers/index.d.ts +30 -11
- package/dist/renderers/index.js +5 -11
- package/dist/rendering/dispatcher.d.ts +1 -6
- package/dist/rendering/dispatcher.js +3 -3
- package/dist/rendering/handler.d.ts +10 -15
- package/dist/rendering/handler.js +20 -27
- package/dist/security/svgResources.d.ts +0 -10
- package/dist/security/svgResources.js +2 -11
- package/dist/source/index.d.ts +3 -3
- package/dist/source/index.js +1 -1
- package/dist/source/loading.d.ts +56 -15
- package/dist/source/loading.js +177 -87
- package/dist/source/precheck.d.ts +1 -13
- package/dist/source/precheck.js +2 -9
- package/dist/source/textEncoding.d.ts +6 -3
- package/dist/source/textEncoding.js +58 -8
- package/dist/viewer/createViewer.d.ts +1 -1
- package/dist/viewer/createViewer.js +103 -33
- package/dist/viewer/loading.d.ts +2 -6
- package/dist/viewer/loading.js +1 -9
- package/dist/viewer/operations.d.ts +3 -3
- package/dist/viewer/operations.js +6 -14
- package/dist/viewer/state.d.ts +2 -6
- package/dist/viewer/state.js +3 -8
- 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.
|
|
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
|
-
|
|
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.
|
|
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;
|
package/dist/registry/formats.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { DEFAULT_REGISTERED_EXTENSIONS, DEFAULT_RENDERER_DEFINITIONS, DEFAULT_STABLE_SUPPORTED_EXTENSIONS, DEFAULT_SUPPORTED_EXTENSIONS, } from
|
|
2
|
-
import { DEFAULT_RENDERER_DEFINITIONS } from
|
|
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
|
|
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
|
|
2
|
-
import { normalizeFileExtension } from
|
|
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
|
|
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>;
|
package/dist/renderers/image.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { registerFileViewerZoomProvider, unregisterFileViewerZoomProvider, } from
|
|
2
|
-
import { resolveFileViewerFitScale, } from
|
|
3
|
-
import { createFileViewerTranslator } from
|
|
4
|
-
import { createFileViewerZoomChangeEmitter as createZoomChangeEmitter } from
|
|
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
|
|
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
|
|
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.
|
|
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("
|
|
896
|
-
registry: import("
|
|
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("
|
|
901
|
-
registry: import("
|
|
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("
|
|
905
|
-
export declare const fileViewerCoreRendererDispatcher: import("
|
|
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 {};
|
package/dist/renderers/index.js
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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(
|
|
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
|
|
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
|
|
2
|
-
import { createRendererRegistry } from
|
|
3
|
-
import { normalizeFileExtension } from
|
|
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
|
|
2
|
-
import { type FileViewerMutableAccessor, type MutableFileViewerRenderReadinessState } from
|
|
3
|
-
import type { FileRenderExportAdapter, FileRenderThumbnailAdapter, FileRenderContext, FileRenderHandler, FileViewerLifecycleContext, FileViewerOptions, FileViewerStyleIsolation, RenderSurface, RendererDefinition, RendererLoadContext, RendererLoader, RendererRegistry, RendererSession } from
|
|
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>;
|