@eternalheart/angular-file-preview 1.6.5

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 (119) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +879 -0
  3. package/README.zh-CN.md +876 -0
  4. package/lib/LICENSE +22 -0
  5. package/lib/README.md +879 -0
  6. package/lib/components/preview/file-preview-toolbar.d.ts +19 -0
  7. package/lib/components/preview/nav-arrows.d.ts +25 -0
  8. package/lib/components/preview/renderer-outlet.d.ts +23 -0
  9. package/lib/components/preview/toolbar-button.d.ts +12 -0
  10. package/lib/components/resizable-split.d.ts +32 -0
  11. package/lib/di/locale.service.d.ts +12 -0
  12. package/lib/di/request.service.d.ts +20 -0
  13. package/lib/di/theme-mode.d.ts +6 -0
  14. package/lib/di/theme.service.d.ts +9 -0
  15. package/lib/fesm2022/eternalheart-angular-file-preview-avifLoader-BP3fgcMm-CZsJ9svm.mjs +55 -0
  16. package/lib/fesm2022/eternalheart-angular-file-preview-avifLoader-BP3fgcMm-CZsJ9svm.mjs.map +1 -0
  17. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-RendererError-DtNihCIX-DtNihCIX.mjs +58 -0
  18. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-RendererError-DtNihCIX-DtNihCIX.mjs.map +1 -0
  19. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-UobTf36G.mjs +5835 -0
  20. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-UobTf36G.mjs.map +1 -0
  21. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-base.types-D5x7QPey-D5x7QPey.mjs +17 -0
  22. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-base.types-D5x7QPey-D5x7QPey.mjs.map +1 -0
  23. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index--7d8Hgi0-D-sg24Qs.mjs +284 -0
  24. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index--7d8Hgi0-D-sg24Qs.mjs.map +1 -0
  25. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-6dZS_Cfs-B1itLV5R.mjs +703 -0
  26. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-6dZS_Cfs-B1itLV5R.mjs.map +1 -0
  27. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B1ANUCTy-BRs7TMLn.mjs +231 -0
  28. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B1ANUCTy-BRs7TMLn.mjs.map +1 -0
  29. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BEaqpRV8-BidVIVlO.mjs +552 -0
  30. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BEaqpRV8-BidVIVlO.mjs.map +1 -0
  31. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BGqTRZbm-CAOLRw20.mjs +688 -0
  32. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BGqTRZbm-CAOLRw20.mjs.map +1 -0
  33. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Bv3JRXKn-B4Wewc-4.mjs +273 -0
  34. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Bv3JRXKn-B4Wewc-4.mjs.map +1 -0
  35. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C0McUoqT-DJ35bhIz.mjs +288 -0
  36. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C0McUoqT-DJ35bhIz.mjs.map +1 -0
  37. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C518mdUd-B5SCzrzU.mjs +550 -0
  38. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C518mdUd-B5SCzrzU.mjs.map +1 -0
  39. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CDjKPqyW-CmX5sdkL.mjs +102 -0
  40. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CDjKPqyW-CmX5sdkL.mjs.map +1 -0
  41. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CHi9tOe0-NOeQYAnM.mjs +516 -0
  42. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CHi9tOe0-NOeQYAnM.mjs.map +1 -0
  43. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CQwhffym-DAGw4Xy_.mjs +823 -0
  44. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CQwhffym-DAGw4Xy_.mjs.map +1 -0
  45. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CSCTj7ft-BfqruUyY.mjs +164 -0
  46. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CSCTj7ft-BfqruUyY.mjs.map +1 -0
  47. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cb1RLXeO-Bj9gjS1Z.mjs +655 -0
  48. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cb1RLXeO-Bj9gjS1Z.mjs.map +1 -0
  49. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cw90Kdyg-BzrW_cyx.mjs +207 -0
  50. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cw90Kdyg-BzrW_cyx.mjs.map +1 -0
  51. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D35x1nwM-CugEEXjg.mjs +199 -0
  52. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D35x1nwM-CugEEXjg.mjs.map +1 -0
  53. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D9jJNzeM-mWX59Aj2.mjs +194 -0
  54. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D9jJNzeM-mWX59Aj2.mjs.map +1 -0
  55. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DbmuvdvN-C29uLyt2.mjs +94 -0
  56. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DbmuvdvN-C29uLyt2.mjs.map +1 -0
  57. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DsNNZ59Q-C8MaSME6.mjs +468 -0
  58. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DsNNZ59Q-C8MaSME6.mjs.map +1 -0
  59. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DufW2Fuc-CTosCut6.mjs +193 -0
  60. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DufW2Fuc-CTosCut6.mjs.map +1 -0
  61. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-TSTa_Q7E-DBhkL6pV.mjs +184 -0
  62. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-TSTa_Q7E-DBhkL6pV.mjs.map +1 -0
  63. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-pG0Ko5mI-DthQJg-X.mjs +492 -0
  64. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-pG0Ko5mI-DthQJg-X.mjs.map +1 -0
  65. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CL9cG481-BKfwdOpN.mjs +68 -0
  66. package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CL9cG481-BKfwdOpN.mjs.map +1 -0
  67. package/lib/fesm2022/eternalheart-angular-file-preview-heicLoader-CH_raQNn-BSXHd_oi.mjs +36 -0
  68. package/lib/fesm2022/eternalheart-angular-file-preview-heicLoader-CH_raQNn-BSXHd_oi.mjs.map +1 -0
  69. package/lib/fesm2022/eternalheart-angular-file-preview-jp2Loader-ldvCSsvm-DJEhfimG.mjs +121 -0
  70. package/lib/fesm2022/eternalheart-angular-file-preview-jp2Loader-ldvCSsvm-DJEhfimG.mjs.map +1 -0
  71. package/lib/fesm2022/eternalheart-angular-file-preview-psdLoader-D5CkupyY-D5Gegcdg.mjs +78 -0
  72. package/lib/fesm2022/eternalheart-angular-file-preview-psdLoader-D5CkupyY-D5Gegcdg.mjs.map +1 -0
  73. package/lib/fesm2022/eternalheart-angular-file-preview-rawLoader-0mLvxCNp-CCXn9Rdp.mjs +81 -0
  74. package/lib/fesm2022/eternalheart-angular-file-preview-rawLoader-0mLvxCNp-CCXn9Rdp.mjs.map +1 -0
  75. package/lib/fesm2022/eternalheart-angular-file-preview-tiffLoader-CmUAD1vO-0JqIws9t.mjs +59 -0
  76. package/lib/fesm2022/eternalheart-angular-file-preview-tiffLoader-CmUAD1vO-0JqIws9t.mjs.map +1 -0
  77. package/lib/fesm2022/eternalheart-angular-file-preview.mjs +2 -0
  78. package/lib/fesm2022/eternalheart-angular-file-preview.mjs.map +1 -0
  79. package/lib/file-preview-content.d.ts +65 -0
  80. package/lib/file-preview-embed.d.ts +30 -0
  81. package/lib/file-preview-modal.d.ts +34 -0
  82. package/lib/fp-core.d.ts +1 -0
  83. package/lib/index.css +2119 -0
  84. package/lib/index.d.ts +11 -0
  85. package/lib/renderers/Audio/index.d.ts +74 -0
  86. package/lib/renderers/Cad/index.d.ts +45 -0
  87. package/lib/renderers/Cad/toolbar.d.ts +15 -0
  88. package/lib/renderers/Csv/index.d.ts +26 -0
  89. package/lib/renderers/Doc/index.d.ts +19 -0
  90. package/lib/renderers/Docx/index.d.ts +42 -0
  91. package/lib/renderers/Epub/index.d.ts +57 -0
  92. package/lib/renderers/Font/font-preview-line.d.ts +26 -0
  93. package/lib/renderers/Font/index.d.ts +52 -0
  94. package/lib/renderers/Image/index.d.ts +79 -0
  95. package/lib/renderers/Json/index.d.ts +61 -0
  96. package/lib/renderers/Markdown/index.d.ts +35 -0
  97. package/lib/renderers/Mobi/index.d.ts +51 -0
  98. package/lib/renderers/Msg/index.d.ts +47 -0
  99. package/lib/renderers/Pdf/index.d.ts +55 -0
  100. package/lib/renderers/Ppt/index.d.ts +19 -0
  101. package/lib/renderers/Pptx/index.d.ts +29 -0
  102. package/lib/renderers/RendererError.d.ts +9 -0
  103. package/lib/renderers/RendererLoading.d.ts +7 -0
  104. package/lib/renderers/Subtitle/index.d.ts +25 -0
  105. package/lib/renderers/Text/index.d.ts +29 -0
  106. package/lib/renderers/Unsupported/index.d.ts +15 -0
  107. package/lib/renderers/Video/index.d.ts +28 -0
  108. package/lib/renderers/Xlsx/index.d.ts +25 -0
  109. package/lib/renderers/Xml/index.d.ts +26 -0
  110. package/lib/renderers/Zip/index.d.ts +58 -0
  111. package/lib/renderers/Zip/tree-item.d.ts +29 -0
  112. package/lib/renderers/base.types.d.ts +10 -0
  113. package/lib/renderers/lazy.d.ts +23 -0
  114. package/lib/renderers/registry.d.ts +13 -0
  115. package/lib/renderers/toolbar.types.d.ts +19 -0
  116. package/lib/types.d.ts +26 -0
  117. package/lib/utils/audio-player.d.ts +20 -0
  118. package/lib/utils/shiki-highlight.d.ts +7 -0
  119. package/package.json +119 -0
@@ -0,0 +1,78 @@
1
+ class i {
2
+ async needsDecode(t) {
3
+ return t === "image/vnd.adobe.photoshop";
4
+ }
5
+ async decode(t, a) {
6
+ var n;
7
+ try {
8
+ const e = await import('ag-psd'), r = e.readPsd || ((n = e.default) == null ? void 0 : n.readPsd);
9
+ if (typeof r != "function")
10
+ throw new Error("ag-psd 库 API 不符合预期");
11
+ const s = t instanceof Blob ? await t.arrayBuffer() : t, d = r(s, {
12
+ skipLayerImageData: !0,
13
+ // 不需要单独图层数据
14
+ skipCompositeImageData: !1,
15
+ // 需要合并预览
16
+ skipThumbnail: !0,
17
+ // 保留像素数据,避免 Worker 环境依赖 document/HTMLCanvasElement
18
+ useImageData: !0
19
+ });
20
+ if (d.imageData && d.width && d.height) {
21
+ const c = new ImageData(
22
+ new Uint8ClampedArray(d.imageData.data || d.imageData),
23
+ d.width,
24
+ d.height
25
+ );
26
+ return await f(c, (a == null ? void 0 : a.outputFormat) || "image/png");
27
+ }
28
+ throw new Error("PSD 文件不包含合并的预览图像(可能仅含图层数据)");
29
+ } catch (e) {
30
+ throw new Error(`PSD 解码失败: ${(e == null ? void 0 : e.message) || "未知错误"}`);
31
+ }
32
+ }
33
+ async getMetadata(t) {
34
+ var a;
35
+ try {
36
+ const n = await import('ag-psd'), e = n.readPsd || ((a = n.default) == null ? void 0 : a.readPsd);
37
+ if (typeof e != "function")
38
+ return { format: "psd" };
39
+ const r = t instanceof Blob ? await t.arrayBuffer() : t, s = e(r, {
40
+ skipLayerImageData: !0,
41
+ skipCompositeImageData: !0,
42
+ skipThumbnail: !0
43
+ });
44
+ return {
45
+ format: "psd",
46
+ width: s.width,
47
+ height: s.height
48
+ };
49
+ } catch {
50
+ return { format: "psd" };
51
+ }
52
+ }
53
+ }
54
+ async function f(o, t) {
55
+ if (typeof OffscreenCanvas < "u") {
56
+ const e = new OffscreenCanvas(o.width, o.height), r = e.getContext("2d");
57
+ if (!r) throw new Error("无法创建 OffscreenCanvas 2D 上下文");
58
+ return r.putImageData(o, 0, 0), e.convertToBlob({ type: t });
59
+ }
60
+ if (typeof document > "u")
61
+ throw new Error("当前 Worker 环境不支持 OffscreenCanvas");
62
+ const a = document.createElement("canvas");
63
+ a.width = o.width, a.height = o.height;
64
+ const n = a.getContext("2d");
65
+ if (!n) throw new Error("无法创建 Canvas 2D 上下文");
66
+ return n.putImageData(o, 0, 0), new Promise((e, r) => {
67
+ a.toBlob(
68
+ (s) => {
69
+ s ? e(s) : r(new Error("PSD Canvas 转换为 Blob 失败"));
70
+ },
71
+ t
72
+ );
73
+ });
74
+ }
75
+ const u = new i();
76
+
77
+ export { u as default };
78
+ //# sourceMappingURL=eternalheart-angular-file-preview-psdLoader-D5CkupyY-D5Gegcdg.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eternalheart-angular-file-preview-psdLoader-D5CkupyY-D5Gegcdg.mjs","sources":["../../../file-preview-core/lib/psdLoader-D5CkupyY.js"],"sourcesContent":["class i {\n async needsDecode(t) {\n return t === \"image/vnd.adobe.photoshop\";\n }\n async decode(t, a) {\n var n;\n try {\n const e = await import(\"ag-psd\"), r = e.readPsd || ((n = e.default) == null ? void 0 : n.readPsd);\n if (typeof r != \"function\")\n throw new Error(\"ag-psd 库 API 不符合预期\");\n const s = t instanceof Blob ? await t.arrayBuffer() : t, d = r(s, {\n skipLayerImageData: !0,\n // 不需要单独图层数据\n skipCompositeImageData: !1,\n // 需要合并预览\n skipThumbnail: !0,\n // 保留像素数据,避免 Worker 环境依赖 document/HTMLCanvasElement\n useImageData: !0\n });\n if (d.imageData && d.width && d.height) {\n const c = new ImageData(\n new Uint8ClampedArray(d.imageData.data || d.imageData),\n d.width,\n d.height\n );\n return await f(c, (a == null ? void 0 : a.outputFormat) || \"image/png\");\n }\n throw new Error(\"PSD 文件不包含合并的预览图像(可能仅含图层数据)\");\n } catch (e) {\n throw new Error(`PSD 解码失败: ${(e == null ? void 0 : e.message) || \"未知错误\"}`);\n }\n }\n async getMetadata(t) {\n var a;\n try {\n const n = await import(\"ag-psd\"), e = n.readPsd || ((a = n.default) == null ? void 0 : a.readPsd);\n if (typeof e != \"function\")\n return { format: \"psd\" };\n const r = t instanceof Blob ? await t.arrayBuffer() : t, s = e(r, {\n skipLayerImageData: !0,\n skipCompositeImageData: !0,\n skipThumbnail: !0\n });\n return {\n format: \"psd\",\n width: s.width,\n height: s.height\n };\n } catch {\n return { format: \"psd\" };\n }\n }\n}\nasync function f(o, t) {\n if (typeof OffscreenCanvas < \"u\") {\n const e = new OffscreenCanvas(o.width, o.height), r = e.getContext(\"2d\");\n if (!r) throw new Error(\"无法创建 OffscreenCanvas 2D 上下文\");\n return r.putImageData(o, 0, 0), e.convertToBlob({ type: t });\n }\n if (typeof document > \"u\")\n throw new Error(\"当前 Worker 环境不支持 OffscreenCanvas\");\n const a = document.createElement(\"canvas\");\n a.width = o.width, a.height = o.height;\n const n = a.getContext(\"2d\");\n if (!n) throw new Error(\"无法创建 Canvas 2D 上下文\");\n return n.putImageData(o, 0, 0), new Promise((e, r) => {\n a.toBlob(\n (s) => {\n s ? e(s) : r(new Error(\"PSD Canvas 转换为 Blob 失败\"));\n },\n t\n );\n });\n}\nconst u = new i();\nexport {\n u as default\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ const p = /* @__PURE__ */ new Set([
2
+ "image/x-canon-cr2",
3
+ "image/x-nikon-nef",
4
+ "image/x-sony-arw",
5
+ "image/x-adobe-dng",
6
+ "image/x-fuji-raf",
7
+ "image/x-olympus-orf"
8
+ ]);
9
+ async function b(r) {
10
+ const e = new Uint8Array(r);
11
+ if (e.length < 8) return null;
12
+ let a;
13
+ if (e[0] === 73 && e[1] === 73)
14
+ a = true;
15
+ else if (e[0] === 77 && e[1] === 77)
16
+ a = false;
17
+ else
18
+ return w(e);
19
+ const l = new DataView(r), t = (o) => l.getUint16(o, a), f = (o) => l.getUint32(o, a);
20
+ if (t(2) !== 42)
21
+ return w(e);
22
+ let n = f(4), i = 0, s = 0;
23
+ for (let o = 0; o < 10 && n !== 0 && n + 2 < e.length; o++) {
24
+ const h = t(n);
25
+ let c = 0, g = 0;
26
+ for (let u = 0; u < h; u++) {
27
+ const d = n + 2 + u * 12;
28
+ if (d + 12 > e.length) break;
29
+ const j = t(d), x = d + 8;
30
+ j === 513 ? c = f(x) : j === 514 && (g = f(x));
31
+ }
32
+ c > 0 && g > s && c + g <= e.length && (i = c, s = g);
33
+ const m = n + 2 + h * 12;
34
+ if (m + 4 > e.length) break;
35
+ n = f(m);
36
+ }
37
+ return i > 0 && s > 0 ? new Blob([e.slice(i, i + s)], {
38
+ type: "image/jpeg"
39
+ }) : w(e);
40
+ }
41
+ function w(r) {
42
+ let e = -1, a = -1, l = 0;
43
+ for (let t = 0; t < r.length - 4; t++)
44
+ if (r[t] === 255 && r[t + 1] === 216 && r[t + 2] === 255) {
45
+ const f = t;
46
+ for (let n = t + 2; n < r.length - 1; n++)
47
+ if (r[n] === 255 && r[n + 1] === 217) {
48
+ const i = n + 2 - f;
49
+ i > l && (e = f, a = n + 2, l = i), t = n + 2;
50
+ break;
51
+ }
52
+ }
53
+ return e >= 0 && a > e ? new Blob([r.slice(e, a)], { type: "image/jpeg" }) : null;
54
+ }
55
+ class y {
56
+ async needsDecode(e) {
57
+ return p.has(e);
58
+ }
59
+ async decode(e, a) {
60
+ const l = e instanceof Blob ? await e.arrayBuffer() : e;
61
+ if (!(a != null && a.fullQuality)) {
62
+ const f = await b(l);
63
+ if (f)
64
+ return f;
65
+ throw new Error("未在 RAW 文件中找到嵌入的预览图像(该文件可能已被剥离 JPEG 预览)。");
66
+ }
67
+ const t = await b(l);
68
+ if (t)
69
+ return t;
70
+ throw new Error("完整 RAW 解码暂未实现,且无法提取嵌入预览图。");
71
+ }
72
+ async getMetadata(e) {
73
+ return {
74
+ format: "raw"
75
+ };
76
+ }
77
+ }
78
+ const E = new y();
79
+
80
+ export { E as default };
81
+ //# sourceMappingURL=eternalheart-angular-file-preview-rawLoader-0mLvxCNp-CCXn9Rdp.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eternalheart-angular-file-preview-rawLoader-0mLvxCNp-CCXn9Rdp.mjs","sources":["../../../file-preview-core/lib/rawLoader-0mLvxCNp.js"],"sourcesContent":["const p = /* @__PURE__ */ new Set([\n \"image/x-canon-cr2\",\n \"image/x-nikon-nef\",\n \"image/x-sony-arw\",\n \"image/x-adobe-dng\",\n \"image/x-fuji-raf\",\n \"image/x-olympus-orf\"\n]);\nasync function b(r) {\n const e = new Uint8Array(r);\n if (e.length < 8) return null;\n let a;\n if (e[0] === 73 && e[1] === 73)\n a = !0;\n else if (e[0] === 77 && e[1] === 77)\n a = !1;\n else\n return w(e);\n const l = new DataView(r), t = (o) => l.getUint16(o, a), f = (o) => l.getUint32(o, a);\n if (t(2) !== 42)\n return w(e);\n let n = f(4), i = 0, s = 0;\n for (let o = 0; o < 10 && n !== 0 && n + 2 < e.length; o++) {\n const h = t(n);\n let c = 0, g = 0;\n for (let u = 0; u < h; u++) {\n const d = n + 2 + u * 12;\n if (d + 12 > e.length) break;\n const j = t(d), x = d + 8;\n j === 513 ? c = f(x) : j === 514 && (g = f(x));\n }\n c > 0 && g > s && c + g <= e.length && (i = c, s = g);\n const m = n + 2 + h * 12;\n if (m + 4 > e.length) break;\n n = f(m);\n }\n return i > 0 && s > 0 ? new Blob([e.slice(i, i + s)], {\n type: \"image/jpeg\"\n }) : w(e);\n}\nfunction w(r) {\n let e = -1, a = -1, l = 0;\n for (let t = 0; t < r.length - 4; t++)\n if (r[t] === 255 && r[t + 1] === 216 && r[t + 2] === 255) {\n const f = t;\n for (let n = t + 2; n < r.length - 1; n++)\n if (r[n] === 255 && r[n + 1] === 217) {\n const i = n + 2 - f;\n i > l && (e = f, a = n + 2, l = i), t = n + 2;\n break;\n }\n }\n return e >= 0 && a > e ? new Blob([r.slice(e, a)], { type: \"image/jpeg\" }) : null;\n}\nclass y {\n async needsDecode(e) {\n return p.has(e);\n }\n async decode(e, a) {\n const l = e instanceof Blob ? await e.arrayBuffer() : e;\n if (!(a != null && a.fullQuality)) {\n const f = await b(l);\n if (f)\n return f;\n throw new Error(\"未在 RAW 文件中找到嵌入的预览图像(该文件可能已被剥离 JPEG 预览)。\");\n }\n const t = await b(l);\n if (t)\n return t;\n throw new Error(\"完整 RAW 解码暂未实现,且无法提取嵌入预览图。\");\n }\n async getMetadata(e) {\n return {\n format: \"raw\"\n };\n }\n}\nconst E = new y();\nexport {\n E as default\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ class y {
2
+ /**
3
+ * TIFF 浏览器均不原生支持(除 Safari 部分版本),始终需要解码
4
+ */
5
+ async needsDecode(a) {
6
+ return a === "image/tiff";
7
+ }
8
+ /**
9
+ * 解码 TIFF 文件为 PNG Blob
10
+ */
11
+ async decode(a, r) {
12
+ try {
13
+ const e = await import('utif'), n = a instanceof Blob ? await a.arrayBuffer() : a, t = e.decode(n);
14
+ if (t.length === 0)
15
+ throw new Error("TIFF 文件不包含任何图像");
16
+ const f = Math.max(0, Math.min(((r == null ? void 0 : r.page) ?? 1) - 1, t.length - 1)), c = t[f];
17
+ e.decodeImage(n, c);
18
+ const w = e.toRGBA8(c), h = c.width, d = c.height, o = document.createElement("canvas");
19
+ o.width = h, o.height = d;
20
+ const g = o.getContext("2d");
21
+ if (!g)
22
+ throw new Error("无法创建 Canvas 2D 上下文");
23
+ const i = new ImageData(new Uint8ClampedArray(w.buffer), h, d);
24
+ return g.putImageData(i, 0, 0), new Promise((m, u) => {
25
+ o.toBlob(
26
+ (s) => {
27
+ s ? m(s) : u(new Error("TIFF Canvas 转换为 PNG 失败"));
28
+ },
29
+ (r == null ? void 0 : r.outputFormat) || "image/png"
30
+ );
31
+ });
32
+ } catch (e) {
33
+ throw new Error(`TIFF 解码失败: ${(e == null ? void 0 : e.message) || "未知错误"}`);
34
+ }
35
+ }
36
+ /**
37
+ * 获取 TIFF 元数据(包括页数)
38
+ */
39
+ async getMetadata(a) {
40
+ try {
41
+ const r = await import('utif'), e = a instanceof Blob ? await a.arrayBuffer() : a, n = r.decode(e), t = n[0];
42
+ return {
43
+ format: "tiff",
44
+ pageCount: n.length,
45
+ width: t == null ? void 0 : t.width,
46
+ height: t == null ? void 0 : t.height
47
+ };
48
+ } catch {
49
+ return {
50
+ format: "tiff",
51
+ pageCount: 1
52
+ };
53
+ }
54
+ }
55
+ }
56
+ const B = new y();
57
+
58
+ export { B as default };
59
+ //# sourceMappingURL=eternalheart-angular-file-preview-tiffLoader-CmUAD1vO-0JqIws9t.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eternalheart-angular-file-preview-tiffLoader-CmUAD1vO-0JqIws9t.mjs","sources":["../../../file-preview-core/lib/tiffLoader-CmUAD1vO.js"],"sourcesContent":["class y {\n /**\n * TIFF 浏览器均不原生支持(除 Safari 部分版本),始终需要解码\n */\n async needsDecode(a) {\n return a === \"image/tiff\";\n }\n /**\n * 解码 TIFF 文件为 PNG Blob\n */\n async decode(a, r) {\n try {\n const e = await import(\"utif\"), n = a instanceof Blob ? await a.arrayBuffer() : a, t = e.decode(n);\n if (t.length === 0)\n throw new Error(\"TIFF 文件不包含任何图像\");\n const f = Math.max(0, Math.min(((r == null ? void 0 : r.page) ?? 1) - 1, t.length - 1)), c = t[f];\n e.decodeImage(n, c);\n const w = e.toRGBA8(c), h = c.width, d = c.height, o = document.createElement(\"canvas\");\n o.width = h, o.height = d;\n const g = o.getContext(\"2d\");\n if (!g)\n throw new Error(\"无法创建 Canvas 2D 上下文\");\n const i = new ImageData(new Uint8ClampedArray(w.buffer), h, d);\n return g.putImageData(i, 0, 0), new Promise((m, u) => {\n o.toBlob(\n (s) => {\n s ? m(s) : u(new Error(\"TIFF Canvas 转换为 PNG 失败\"));\n },\n (r == null ? void 0 : r.outputFormat) || \"image/png\"\n );\n });\n } catch (e) {\n throw new Error(`TIFF 解码失败: ${(e == null ? void 0 : e.message) || \"未知错误\"}`);\n }\n }\n /**\n * 获取 TIFF 元数据(包括页数)\n */\n async getMetadata(a) {\n try {\n const r = await import(\"utif\"), e = a instanceof Blob ? await a.arrayBuffer() : a, n = r.decode(e), t = n[0];\n return {\n format: \"tiff\",\n pageCount: n.length,\n width: t == null ? void 0 : t.width,\n height: t == null ? void 0 : t.height\n };\n } catch {\n return {\n format: \"tiff\",\n pageCount: 1\n };\n }\n }\n}\nconst B = new y();\nexport {\n B as default\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { F as FilePreviewContent, m as FilePreviewEmbed, o as FilePreviewModal, L as LocaleService, R as RequestService, z as SUPPORTED_FILE_TYPES, T as ThemeService, q as VERSION, A as configurePdfWorker, V as getFileType, t as normalizeFile, N as normalizeFiles } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-UobTf36G.mjs';
2
+ //# sourceMappingURL=eternalheart-angular-file-preview.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eternalheart-angular-file-preview.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,65 @@
1
+ import { type Locale, type Messages, type PreviewFile, type PreviewFileInput, type RequestHandler, type RequestInitFactory, type ShouldFetchAsBlob, type Theme, type CustomRendererEventPayload } from './fp-core';
2
+ import type { CustomRenderer, CustomRendererContext } from './types';
3
+ import type { RendererHandle } from './renderers/base.types';
4
+ import type { ToolbarGroup } from './renderers/toolbar.types';
5
+ import type { RendererLoader } from './renderers/lazy';
6
+ import * as i0 from "@angular/core";
7
+ export declare class FilePreviewContent {
8
+ files: import("@angular/core").InputSignal<PreviewFileInput[]>;
9
+ currentIndex: import("@angular/core").InputSignal<number>;
10
+ customRenderers: import("@angular/core").InputSignal<CustomRenderer[]>;
11
+ mode: import("@angular/core").InputSignal<"embed" | "modal">;
12
+ zipNestingDepth: import("@angular/core").InputSignal<number>;
13
+ locale: import("@angular/core").InputSignal<Locale | undefined>;
14
+ messages: import("@angular/core").InputSignal<Partial<Record<Locale, Partial<Messages>>> | undefined>;
15
+ headless: import("@angular/core").InputSignal<boolean>;
16
+ theme: import("@angular/core").InputSignal<Theme>;
17
+ requestInit: import("@angular/core").InputSignal<RequestInitFactory | undefined>;
18
+ requestHandler: import("@angular/core").InputSignal<RequestHandler | undefined>;
19
+ shouldFetchAsBlob: import("@angular/core").InputSignal<ShouldFetchAsBlob | undefined>;
20
+ onDownload: import("@angular/core").InputSignal<((file: PreviewFile) => void | Promise<void>) | undefined>;
21
+ showClose: import("@angular/core").InputSignal<boolean | undefined>;
22
+ showDownload: import("@angular/core").InputSignal<boolean>;
23
+ navigate: import("@angular/core").OutputEmitterRef<number>;
24
+ close: import("@angular/core").OutputEmitterRef<void>;
25
+ customEvent: import("@angular/core").OutputEmitterRef<CustomRendererEventPayload<unknown>>;
26
+ protected readonly maxZipDepth = 3;
27
+ private readonly localeService;
28
+ private readonly themeService;
29
+ private readonly requestService;
30
+ private readonly destroyRef;
31
+ private readonly root;
32
+ private readonly content;
33
+ private readonly system;
34
+ readonly resolvedUrl: import("@angular/core").WritableSignal<string>;
35
+ private createdBlobUrl;
36
+ private unsubscribeToolbar;
37
+ readonly rendererToolbarGroups: import("@angular/core").WritableSignal<ToolbarGroup[]>;
38
+ readonly normalizedFiles: import("@angular/core").Signal<PreviewFile[]>;
39
+ readonly currentFile: import("@angular/core").Signal<PreviewFile | undefined>;
40
+ readonly fileType: import("@angular/core").Signal<import("@eternalheart/file-preview-core").FileType>;
41
+ readonly t: import("@angular/core").Signal<import("@eternalheart/file-preview-core").Translator>;
42
+ readonly resolvedTheme: import("@angular/core").Signal<"dark" | "light">;
43
+ readonly showCloseButton: import("@angular/core").Signal<boolean>;
44
+ readonly contentEl: import("@angular/core").Signal<HTMLDivElement | null>;
45
+ readonly customRenderer: import("@angular/core").Signal<CustomRenderer | null>;
46
+ readonly customCtx: import("@angular/core").Signal<CustomRendererContext>;
47
+ readonly customRendererCmp: import("@angular/core").Signal<import("@angular/core").Type<unknown> | null>;
48
+ readonly customInputs: import("@angular/core").Signal<{
49
+ file: PreviewFile | undefined;
50
+ ctx: CustomRendererContext;
51
+ }>;
52
+ readonly builtinConfig: import("@angular/core").Signal<import("./renderers/registry").BuiltinRendererConfig | null>;
53
+ readonly builtinLoader: import("@angular/core").Signal<RendererLoader | null>;
54
+ readonly builtinInputs: import("@angular/core").Signal<Record<string, unknown>>;
55
+ readonly toolGroups: import("@angular/core").Signal<ToolbarGroup[]>;
56
+ constructor();
57
+ onRendererHandle(handle: RendererHandle | null): void;
58
+ handleDownload(): Promise<void>;
59
+ private handleKeyDown;
60
+ private cleanupSubscription;
61
+ private revokeBlob;
62
+ private refreshResolvedUrl;
63
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilePreviewContent, never>;
64
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilePreviewContent, "FilePreviewContent, afp-file-preview-content", never, { "files": { "alias": "files"; "required": true; "isSignal": true; }; "currentIndex": { "alias": "currentIndex"; "required": false; "isSignal": true; }; "customRenderers": { "alias": "customRenderers"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "zipNestingDepth": { "alias": "zipNestingDepth"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "headless": { "alias": "headless"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "requestInit": { "alias": "requestInit"; "required": false; "isSignal": true; }; "requestHandler": { "alias": "requestHandler"; "required": false; "isSignal": true; }; "shouldFetchAsBlob": { "alias": "shouldFetchAsBlob"; "required": false; "isSignal": true; }; "onDownload": { "alias": "onDownload"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "showDownload": { "alias": "showDownload"; "required": false; "isSignal": true; }; }, { "navigate": "navigate"; "close": "close"; "customEvent": "customEvent"; }, never, never, true, never>;
65
+ }
@@ -0,0 +1,30 @@
1
+ import type { CustomRendererEventPayload, Locale, Messages, PreviewFile, PreviewFileInput, RequestHandler, RequestInitFactory, ShouldFetchAsBlob, Theme } from './fp-core';
2
+ import type { CustomRenderer } from './types';
3
+ import * as i0 from "@angular/core";
4
+ export declare class FilePreviewEmbed {
5
+ files: import("@angular/core").InputSignal<PreviewFileInput[]>;
6
+ currentIndex: import("@angular/core").InputSignal<number>;
7
+ customRenderers: import("@angular/core").InputSignal<CustomRenderer[]>;
8
+ width: import("@angular/core").InputSignal<string | number>;
9
+ height: import("@angular/core").InputSignal<string | number>;
10
+ locale: import("@angular/core").InputSignal<Locale | undefined>;
11
+ messages: import("@angular/core").InputSignal<Partial<Record<Locale, Partial<Messages>>> | undefined>;
12
+ headless: import("@angular/core").InputSignal<boolean>;
13
+ theme: import("@angular/core").InputSignal<Theme>;
14
+ requestInit: import("@angular/core").InputSignal<RequestInitFactory | undefined>;
15
+ requestHandler: import("@angular/core").InputSignal<RequestHandler | undefined>;
16
+ shouldFetchAsBlob: import("@angular/core").InputSignal<ShouldFetchAsBlob | undefined>;
17
+ onDownload: import("@angular/core").InputSignal<((file: PreviewFile) => void | Promise<void>) | undefined>;
18
+ showClose: import("@angular/core").InputSignal<boolean | undefined>;
19
+ showDownload: import("@angular/core").InputSignal<boolean>;
20
+ navigate: import("@angular/core").OutputEmitterRef<number>;
21
+ customEvent: import("@angular/core").OutputEmitterRef<CustomRendererEventPayload<unknown>>;
22
+ close: import("@angular/core").OutputEmitterRef<void>;
23
+ private readonly system;
24
+ readonly resolvedTheme: import("@angular/core").Signal<"dark" | "light">;
25
+ readonly widthCss: import("@angular/core").Signal<string>;
26
+ readonly heightCss: import("@angular/core").Signal<string>;
27
+ constructor();
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilePreviewEmbed, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilePreviewEmbed, "FilePreviewEmbed, afp-file-preview-embed", never, { "files": { "alias": "files"; "required": true; "isSignal": true; }; "currentIndex": { "alias": "currentIndex"; "required": false; "isSignal": true; }; "customRenderers": { "alias": "customRenderers"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "headless": { "alias": "headless"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "requestInit": { "alias": "requestInit"; "required": false; "isSignal": true; }; "requestHandler": { "alias": "requestHandler"; "required": false; "isSignal": true; }; "shouldFetchAsBlob": { "alias": "shouldFetchAsBlob"; "required": false; "isSignal": true; }; "onDownload": { "alias": "onDownload"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "showDownload": { "alias": "showDownload"; "required": false; "isSignal": true; }; }, { "navigate": "navigate"; "customEvent": "customEvent"; "close": "close"; }, never, never, true, never>;
30
+ }
@@ -0,0 +1,34 @@
1
+ import type { CustomRendererEventPayload, Locale, Messages, PreviewFile, PreviewFileInput, RequestHandler, RequestInitFactory, ShouldFetchAsBlob, Theme } from './fp-core';
2
+ import type { CustomRenderer } from './types';
3
+ import * as i0 from "@angular/core";
4
+ export declare class FilePreviewModal {
5
+ files: import("@angular/core").InputSignal<PreviewFileInput[]>;
6
+ currentIndex: import("@angular/core").InputSignal<number>;
7
+ isOpen: import("@angular/core").InputSignal<boolean>;
8
+ customRenderers: import("@angular/core").InputSignal<CustomRenderer[]>;
9
+ locale: import("@angular/core").InputSignal<Locale | undefined>;
10
+ messages: import("@angular/core").InputSignal<Partial<Record<Locale, Partial<Messages>>> | undefined>;
11
+ headless: import("@angular/core").InputSignal<boolean>;
12
+ theme: import("@angular/core").InputSignal<Theme>;
13
+ requestInit: import("@angular/core").InputSignal<RequestInitFactory | undefined>;
14
+ requestHandler: import("@angular/core").InputSignal<RequestHandler | undefined>;
15
+ shouldFetchAsBlob: import("@angular/core").InputSignal<ShouldFetchAsBlob | undefined>;
16
+ onDownload: import("@angular/core").InputSignal<((file: PreviewFile) => void | Promise<void>) | undefined>;
17
+ showClose: import("@angular/core").InputSignal<boolean | undefined>;
18
+ showDownload: import("@angular/core").InputSignal<boolean>;
19
+ close: import("@angular/core").OutputEmitterRef<void>;
20
+ navigate: import("@angular/core").OutputEmitterRef<number>;
21
+ customEvent: import("@angular/core").OutputEmitterRef<CustomRendererEventPayload<unknown>>;
22
+ private readonly host;
23
+ private readonly destroyRef;
24
+ private readonly system;
25
+ private originalOverflow;
26
+ private originalPaddingRight;
27
+ private locked;
28
+ readonly resolvedTheme: import("@angular/core").Signal<"dark" | "light">;
29
+ constructor();
30
+ private lock;
31
+ private unlock;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilePreviewModal, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilePreviewModal, "FilePreviewModal, afp-file-preview-modal", never, { "files": { "alias": "files"; "required": true; "isSignal": true; }; "currentIndex": { "alias": "currentIndex"; "required": true; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "customRenderers": { "alias": "customRenderers"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "messages": { "alias": "messages"; "required": false; "isSignal": true; }; "headless": { "alias": "headless"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "requestInit": { "alias": "requestInit"; "required": false; "isSignal": true; }; "requestHandler": { "alias": "requestHandler"; "required": false; "isSignal": true; }; "shouldFetchAsBlob": { "alias": "shouldFetchAsBlob"; "required": false; "isSignal": true; }; "onDownload": { "alias": "onDownload"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "showDownload": { "alias": "showDownload"; "required": false; "isSignal": true; }; }, { "close": "close"; "navigate": "navigate"; "customEvent": "customEvent"; }, never, never, true, never>;
34
+ }
@@ -0,0 +1 @@
1
+ export * from '@eternalheart/file-preview-core';