@eternalheart/react-file-preview 1.3.11 → 1.3.13

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 (226) hide show
  1. package/README.md +27 -0
  2. package/README.zh-CN.md +27 -0
  3. package/lib/chunks/{index-nVblatyi.mjs → index-8pqs-pW7.mjs} +3 -3
  4. package/lib/chunks/{index-nVblatyi.mjs.map → index-8pqs-pW7.mjs.map} +1 -1
  5. package/lib/chunks/{index-CCkHAeLh.mjs → index-B0QA380T.mjs} +2 -2
  6. package/lib/chunks/{index-CCkHAeLh.mjs.map → index-B0QA380T.mjs.map} +1 -1
  7. package/lib/chunks/{index-D660ENHx.mjs → index-B2IlXQPc.mjs} +2 -2
  8. package/lib/chunks/{index-D660ENHx.mjs.map → index-B2IlXQPc.mjs.map} +1 -1
  9. package/lib/chunks/{index-BiyghBxu.mjs → index-BgMhDDkd.mjs} +2 -2
  10. package/lib/chunks/{index-BiyghBxu.mjs.map → index-BgMhDDkd.mjs.map} +1 -1
  11. package/lib/chunks/{index-BYdqrqnR.mjs → index-BvjPzMFc.mjs} +2 -2
  12. package/lib/chunks/{index-BYdqrqnR.mjs.map → index-BvjPzMFc.mjs.map} +1 -1
  13. package/lib/chunks/{index-B57rEPin.mjs → index-C8r2-Evl.mjs} +3 -3
  14. package/lib/chunks/{index-B57rEPin.mjs.map → index-C8r2-Evl.mjs.map} +1 -1
  15. package/lib/chunks/{index-CdmkF0CO.mjs → index-CIqtwqgy.mjs} +2 -2
  16. package/lib/chunks/{index-CdmkF0CO.mjs.map → index-CIqtwqgy.mjs.map} +1 -1
  17. package/lib/chunks/{index-C8CyS_sj.mjs → index-CRn7LdHD.mjs} +3 -3
  18. package/lib/chunks/{index-C8CyS_sj.mjs.map → index-CRn7LdHD.mjs.map} +1 -1
  19. package/lib/chunks/{index-CuAALtwC.mjs → index-CWCNvV2X.mjs} +500 -476
  20. package/lib/chunks/index-CWCNvV2X.mjs.map +1 -0
  21. package/lib/chunks/{index-BJ6vTNxc.mjs → index-Ctf8mG_u.mjs} +2 -2
  22. package/lib/chunks/{index-BJ6vTNxc.mjs.map → index-Ctf8mG_u.mjs.map} +1 -1
  23. package/lib/chunks/{index-DBEG73K1.mjs → index-DN4Lc1dx.mjs} +2 -2
  24. package/lib/chunks/{index-DBEG73K1.mjs.map → index-DN4Lc1dx.mjs.map} +1 -1
  25. package/lib/chunks/{index-rUfsiVR8.mjs → index-DYNPnFww.mjs} +2 -2
  26. package/lib/chunks/{index-rUfsiVR8.mjs.map → index-DYNPnFww.mjs.map} +1 -1
  27. package/lib/chunks/{index-qOC5xQyK.mjs → index-DZxzCMp2.mjs} +2 -2
  28. package/lib/chunks/{index-qOC5xQyK.mjs.map → index-DZxzCMp2.mjs.map} +1 -1
  29. package/lib/chunks/index-DfkP0zX3.mjs +357 -0
  30. package/lib/chunks/index-DfkP0zX3.mjs.map +1 -0
  31. package/lib/chunks/{index-DaFlk9dd.mjs → index-DqXfw2eb.mjs} +2 -2
  32. package/lib/chunks/{index-DaFlk9dd.mjs.map → index-DqXfw2eb.mjs.map} +1 -1
  33. package/lib/chunks/index-DtZwBUd0.mjs +270 -0
  34. package/lib/chunks/index-DtZwBUd0.mjs.map +1 -0
  35. package/lib/chunks/{index-C8OrFLd5.mjs → index-_EpQHlUY.mjs} +2 -2
  36. package/lib/chunks/{index-C8OrFLd5.mjs.map → index-_EpQHlUY.mjs.map} +1 -1
  37. package/lib/chunks/{index-ow-nGpuu.mjs → index-p4mew8Hx.mjs} +2 -2
  38. package/lib/chunks/{index-ow-nGpuu.mjs.map → index-p4mew8Hx.mjs.map} +1 -1
  39. package/lib/chunks/{index-_mP0FkqE.mjs → index-sft0uUd7.mjs} +2 -2
  40. package/lib/chunks/{index-_mP0FkqE.mjs.map → index-sft0uUd7.mjs.map} +1 -1
  41. package/lib/chunks/{useShikiHighlight-ClbUXJ2p.mjs → useShikiHighlight-CDDi36pF.mjs} +2 -2
  42. package/lib/chunks/{useShikiHighlight-ClbUXJ2p.mjs.map → useShikiHighlight-CDDi36pF.mjs.map} +1 -1
  43. package/lib/components/ResizableSplit.d.ts +12 -2
  44. package/lib/components/ResizableSplit.d.ts.map +1 -1
  45. package/lib/index.cjs +29 -29
  46. package/lib/index.cjs.map +1 -1
  47. package/lib/index.css +1 -1
  48. package/lib/index.mjs +1 -1
  49. package/lib/renderers/Image/index.d.ts.map +1 -1
  50. package/lib/renderers/Zip/index.d.ts.map +1 -1
  51. package/package.json +1 -1
  52. package/lib/chunks/index-BCuRRLYt.mjs +0 -222
  53. package/lib/chunks/index-BCuRRLYt.mjs.map +0 -1
  54. package/lib/chunks/index-CuAALtwC.mjs.map +0 -1
  55. package/lib/chunks/index-nLTQXCV7.mjs +0 -301
  56. package/lib/chunks/index-nLTQXCV7.mjs.map +0 -1
  57. package/lib/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
  58. package/lib/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
  59. package/lib/pdfjs/cmaps/78-H.bcmap +0 -0
  60. package/lib/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
  61. package/lib/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
  62. package/lib/pdfjs/cmaps/78-V.bcmap +0 -0
  63. package/lib/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
  64. package/lib/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
  65. package/lib/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
  66. package/lib/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
  67. package/lib/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
  68. package/lib/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
  69. package/lib/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
  70. package/lib/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
  71. package/lib/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
  72. package/lib/pdfjs/cmaps/Add-H.bcmap +0 -0
  73. package/lib/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
  74. package/lib/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
  75. package/lib/pdfjs/cmaps/Add-V.bcmap +0 -0
  76. package/lib/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
  77. package/lib/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
  78. package/lib/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
  79. package/lib/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
  80. package/lib/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
  81. package/lib/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
  82. package/lib/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
  83. package/lib/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  84. package/lib/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
  85. package/lib/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
  86. package/lib/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
  87. package/lib/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
  88. package/lib/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
  89. package/lib/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
  90. package/lib/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  91. package/lib/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
  92. package/lib/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
  93. package/lib/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
  94. package/lib/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
  95. package/lib/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
  96. package/lib/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
  97. package/lib/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
  98. package/lib/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  99. package/lib/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
  100. package/lib/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
  101. package/lib/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
  102. package/lib/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  103. package/lib/pdfjs/cmaps/B5-H.bcmap +0 -0
  104. package/lib/pdfjs/cmaps/B5-V.bcmap +0 -0
  105. package/lib/pdfjs/cmaps/B5pc-H.bcmap +0 -0
  106. package/lib/pdfjs/cmaps/B5pc-V.bcmap +0 -0
  107. package/lib/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
  108. package/lib/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
  109. package/lib/pdfjs/cmaps/CNS1-H.bcmap +0 -0
  110. package/lib/pdfjs/cmaps/CNS1-V.bcmap +0 -0
  111. package/lib/pdfjs/cmaps/CNS2-H.bcmap +0 -0
  112. package/lib/pdfjs/cmaps/CNS2-V.bcmap +0 -3
  113. package/lib/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
  114. package/lib/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
  115. package/lib/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
  116. package/lib/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
  117. package/lib/pdfjs/cmaps/ETenms-B5-H.bcmap +0 -3
  118. package/lib/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
  119. package/lib/pdfjs/cmaps/EUC-H.bcmap +0 -0
  120. package/lib/pdfjs/cmaps/EUC-V.bcmap +0 -0
  121. package/lib/pdfjs/cmaps/Ext-H.bcmap +0 -0
  122. package/lib/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
  123. package/lib/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
  124. package/lib/pdfjs/cmaps/Ext-V.bcmap +0 -0
  125. package/lib/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
  126. package/lib/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
  127. package/lib/pdfjs/cmaps/GB-H.bcmap +0 -4
  128. package/lib/pdfjs/cmaps/GB-V.bcmap +0 -0
  129. package/lib/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
  130. package/lib/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
  131. package/lib/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
  132. package/lib/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
  133. package/lib/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
  134. package/lib/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
  135. package/lib/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
  136. package/lib/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
  137. package/lib/pdfjs/cmaps/GBT-H.bcmap +0 -0
  138. package/lib/pdfjs/cmaps/GBT-V.bcmap +0 -0
  139. package/lib/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
  140. package/lib/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
  141. package/lib/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
  142. package/lib/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
  143. package/lib/pdfjs/cmaps/H.bcmap +0 -0
  144. package/lib/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
  145. package/lib/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
  146. package/lib/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
  147. package/lib/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
  148. package/lib/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
  149. package/lib/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
  150. package/lib/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
  151. package/lib/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
  152. package/lib/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
  153. package/lib/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
  154. package/lib/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
  155. package/lib/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
  156. package/lib/pdfjs/cmaps/Hankaku.bcmap +0 -0
  157. package/lib/pdfjs/cmaps/Hiragana.bcmap +0 -0
  158. package/lib/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
  159. package/lib/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
  160. package/lib/pdfjs/cmaps/KSC-H.bcmap +0 -0
  161. package/lib/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
  162. package/lib/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
  163. package/lib/pdfjs/cmaps/KSC-V.bcmap +0 -0
  164. package/lib/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
  165. package/lib/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  166. package/lib/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  167. package/lib/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
  168. package/lib/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
  169. package/lib/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
  170. package/lib/pdfjs/cmaps/Katakana.bcmap +0 -0
  171. package/lib/pdfjs/cmaps/LICENSE +0 -36
  172. package/lib/pdfjs/cmaps/NWP-H.bcmap +0 -0
  173. package/lib/pdfjs/cmaps/NWP-V.bcmap +0 -0
  174. package/lib/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
  175. package/lib/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
  176. package/lib/pdfjs/cmaps/Roman.bcmap +0 -0
  177. package/lib/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  178. package/lib/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  179. package/lib/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  180. package/lib/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  181. package/lib/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  182. package/lib/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  183. package/lib/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  184. package/lib/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  185. package/lib/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
  186. package/lib/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
  187. package/lib/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
  188. package/lib/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
  189. package/lib/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
  190. package/lib/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
  191. package/lib/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
  192. package/lib/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
  193. package/lib/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  194. package/lib/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  195. package/lib/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  196. package/lib/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  197. package/lib/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  198. package/lib/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  199. package/lib/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  200. package/lib/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  201. package/lib/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  202. package/lib/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  203. package/lib/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  204. package/lib/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  205. package/lib/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  206. package/lib/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  207. package/lib/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  208. package/lib/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  209. package/lib/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  210. package/lib/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  211. package/lib/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  212. package/lib/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  213. package/lib/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  214. package/lib/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  215. package/lib/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  216. package/lib/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
  217. package/lib/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
  218. package/lib/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
  219. package/lib/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
  220. package/lib/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
  221. package/lib/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
  222. package/lib/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
  223. package/lib/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
  224. package/lib/pdfjs/cmaps/V.bcmap +0 -0
  225. package/lib/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
  226. package/lib/pdfjs/pdf.worker.min.mjs +0 -21
package/lib/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { d as r, e as i, f as o, L as l, v as P, V as d, g as f, B as m, w as n, h as t, u as F } from "./chunks/index-CuAALtwC.mjs";
1
+ import { d as r, e as i, f as o, L as l, v as P, V as d, g as f, B as m, w as n, h as t, u as F } from "./chunks/index-CWCNvV2X.mjs";
2
2
  import * as e from "pdfjs-dist/build/pdf.mjs";
3
3
  export {
4
4
  r as FilePreviewContent,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderers/Image/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,qBAAqB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgZtD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderers/Image/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGnE,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,qBAAqB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA6ftD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderers/Zip/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAwB1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AASjD,UAAU,gBAAgB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;CACzD;AA4HD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAsOlD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderers/Zip/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAwB1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AASjD,UAAU,gBAAgB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,KAAK,IAAI,CAAC;CACzD;AA4HD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA6OlD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eternalheart/react-file-preview",
3
- "version": "1.3.11",
3
+ "version": "1.3.13",
4
4
  "description": "A modern, feature-rich file preview component for React with support for images, videos, audio, PDFs, Office documents (Word, Excel, PowerPoint), Markdown, and code files.",
5
5
  "type": "module",
6
6
  "main": "./lib/index.cjs",
@@ -1,222 +0,0 @@
1
- import { jsxs as v, jsx as i } from "react/jsx-runtime";
2
- import { useState as c, useRef as w, useEffect as P, useCallback as $ } from "react";
3
- import { motion as me } from "framer-motion";
4
- import { Loader2 as be } from "lucide-react";
5
- import { u as ge, G as he, q as xe } from "./index-CuAALtwC.mjs";
6
- import { R as se } from "./RendererError-BH6fzLrN.mjs";
7
- const Ue = ({
8
- url: B,
9
- zoom: K,
10
- rotation: ae,
11
- resetKey: Q,
12
- fileSize: b,
13
- file: R,
14
- onZoomChange: d,
15
- onNaturalWidthChange: T,
16
- onNaturalHeightChange: F
17
- }) => {
18
- const A = ge(), [N, q] = c(!1), [g, J] = c(null), [O, u] = c(!1), [V, z] = c(0), [L, G] = c(null), [C, h] = c(""), [M, S] = c(1), [U, Z] = c(1), [j, k] = c({ x: 0, y: 0 }), [I, ee] = c(!1), [W, ce] = c({ x: 0, y: 0 }), [_, Y] = c(1), [p, oe] = c({ width: 0, height: 0 }), fe = w(null), H = w(null), x = w(null), D = w(null), E = w(null), o = w(/* @__PURE__ */ new Map());
19
- P(() => {
20
- let e = !1;
21
- return (async () => {
22
- if (h(""), q(!1), J(null), u(!1), G(null), z(0), k({ x: 0, y: 0 }), Y(1), S(1), Z(1), x.current && (URL.revokeObjectURL(x.current), x.current = null), o.current.forEach((r) => URL.revokeObjectURL(r)), o.current.clear(), D.current = null, E.current = null, !R) {
23
- e || h(B);
24
- return;
25
- }
26
- try {
27
- const r = await he(R), t = await xe(r);
28
- if (!t || !await t.needsDecode(r)) {
29
- e || h(B);
30
- return;
31
- }
32
- u(!0);
33
- let n;
34
- if (R instanceof Blob)
35
- n = R;
36
- else {
37
- const a = await fetch(B);
38
- if (!a.ok) throw new Error("Failed to fetch file");
39
- n = await a.blob();
40
- }
41
- if (e) return;
42
- if (D.current = n, E.current = t, D.current = n, E.current = t, t.getMetadata)
43
- try {
44
- const a = await t.getMetadata(n);
45
- !e && a.pageCount && a.pageCount > 1 && Z(a.pageCount);
46
- } catch {
47
- }
48
- const f = await t.decode(n, {
49
- page: 1,
50
- fullQuality: !1,
51
- onProgress: (a) => {
52
- e || z(a);
53
- }
54
- });
55
- if (e) return;
56
- const m = typeof f == "string" ? f : URL.createObjectURL(f);
57
- x.current = m, o.current.set(1, m), h(m), u(!1);
58
- } catch (r) {
59
- e || (G((r == null ? void 0 : r.message) || "解码失败"), u(!1));
60
- }
61
- })(), () => {
62
- e = !0;
63
- };
64
- }, [B, R]);
65
- const re = $(async (e) => {
66
- if (!D.current || !E.current || e < 1 || e > U) return;
67
- const s = o.current.get(e);
68
- if (s) {
69
- S(e), h(s);
70
- return;
71
- }
72
- u(!0);
73
- try {
74
- const r = await E.current.decode(D.current, { page: e }), t = typeof r == "string" ? r : URL.createObjectURL(r);
75
- if (o.current.size >= 10) {
76
- const n = o.current.keys().next().value;
77
- if (n !== void 0) {
78
- const f = o.current.get(n);
79
- f && URL.revokeObjectURL(f), o.current.delete(n);
80
- }
81
- }
82
- o.current.set(e, t), S(e), h(t), u(!1);
83
- } catch (r) {
84
- G((r == null ? void 0 : r.message) || "翻页解码失败"), u(!1);
85
- }
86
- }, [U]);
87
- P(() => () => {
88
- x.current && URL.revokeObjectURL(x.current), o.current.forEach((e) => URL.revokeObjectURL(e)), o.current.clear();
89
- }, []), P(() => {
90
- Y(K);
91
- }, [K]), P(() => {
92
- Q !== void 0 && k({ x: 0, y: 0 });
93
- }, [Q]);
94
- const ie = (e) => {
95
- q(!0);
96
- const s = e.currentTarget;
97
- oe({ width: s.naturalWidth, height: s.naturalHeight }), T == null || T(s.naturalWidth), F == null || F(s.naturalHeight);
98
- }, X = $((e, s) => {
99
- const r = H.current;
100
- if (!r || p.width === 0) return e;
101
- const t = r.clientWidth, n = r.clientHeight, f = p.width * s, m = p.height * s, a = Math.min(80, t * 0.15, n * 0.15), l = (t + f) / 2 - a, y = (n + m) / 2 - a;
102
- return {
103
- x: l > 0 ? Math.max(-l, Math.min(l, e.x)) : 0,
104
- y: y > 0 ? Math.max(-y, Math.min(y, e.y)) : 0
105
- };
106
- }, [p]), le = () => {
107
- J(A("image.load_failed")), q(!0);
108
- }, de = () => {
109
- k({ x: 0, y: 0 }), Y(1), d == null || d(1);
110
- };
111
- P(() => {
112
- const e = H.current;
113
- if (!e) return;
114
- const s = (r) => {
115
- r.preventDefault(), r.stopPropagation();
116
- const t = e.getBoundingClientRect(), n = r.clientX - t.left - t.width / 2, f = r.clientY - t.top - t.height / 2, m = r.deltaY > 0 ? -0.05 : 0.05;
117
- Y((a) => {
118
- const l = Math.max(0.01, Math.min(10, a + m)), y = l / a;
119
- return k((ne) => X({
120
- x: n - y * (n - ne.x),
121
- y: f - y * (f - ne.y)
122
- }, l)), d == null || d(l), l;
123
- });
124
- };
125
- return e.addEventListener("wheel", s, { passive: !1 }), () => e.removeEventListener("wheel", s);
126
- }, [d, X]);
127
- const ue = $((e) => {
128
- e.button === 0 && (ee(!0), ce({
129
- x: e.clientX - j.x,
130
- y: e.clientY - j.y
131
- }));
132
- }, [j]), pe = $((e) => {
133
- I && k(X({
134
- x: e.clientX - W.x,
135
- y: e.clientY - W.y
136
- }, _));
137
- }, [I, W, _, X]), te = $(() => {
138
- ee(!1);
139
- }, []);
140
- return /* @__PURE__ */ v(
141
- "div",
142
- {
143
- ref: H,
144
- className: "rfp-relative rfp-flex rfp-items-center rfp-justify-center rfp-w-full rfp-h-full rfp-overflow-hidden",
145
- onMouseDown: ue,
146
- onMouseMove: pe,
147
- onMouseUp: te,
148
- onMouseLeave: te,
149
- style: { cursor: I ? "grabbing" : "grab" },
150
- children: [
151
- O && /* @__PURE__ */ v("div", { className: "rfp-absolute rfp-inset-0 rfp-flex rfp-flex-col rfp-items-center rfp-justify-center rfp-bg-surface-1/80 rfp-z-10", children: [
152
- /* @__PURE__ */ i(be, { className: "rfp-w-12 rfp-h-12 rfp-text-fg-primary rfp-animate-spin" }),
153
- /* @__PURE__ */ v("p", { className: "rfp-mt-4 rfp-text-fg-secondary", children: [
154
- "正在解码... ",
155
- V > 0 && `${Math.round(V)}%`
156
- ] })
157
- ] }),
158
- L && /* @__PURE__ */ i("div", { className: "rfp-absolute rfp-inset-0 rfp-flex rfp-items-center rfp-justify-center rfp-bg-surface-1/80 rfp-z-10", children: /* @__PURE__ */ i(se, { message: A("image.decode_failed"), detail: L }) }),
159
- !N && !g && !O && !L && /* @__PURE__ */ i("div", { className: "rfp-flex rfp-items-center rfp-justify-center", children: /* @__PURE__ */ i("div", { className: "rfp-w-12 rfp-h-12 rfp-border-4 rfp-border-line-strong rfp-border-t-spinner-head rfp-rounded-full rfp-animate-spin" }) }),
160
- g && /* @__PURE__ */ i(se, { message: g }),
161
- C && /* @__PURE__ */ i(
162
- me.img,
163
- {
164
- ref: fe,
165
- src: C,
166
- alt: "Preview",
167
- className: `rfp-max-w-none rfp-select-none ${!N || g || L ? "rfp-hidden" : ""}`,
168
- style: {
169
- transform: `translate(${j.x}px, ${j.y}px) scale(${_}) rotate(${ae}deg)`,
170
- transformOrigin: "center",
171
- transition: I ? "none" : "transform 0.3s ease-out"
172
- },
173
- onLoad: ie,
174
- onError: le,
175
- onDoubleClick: de,
176
- initial: { opacity: 0 },
177
- animate: { opacity: N && !g && !L ? 1 : 0 },
178
- transition: { duration: 0.3 },
179
- draggable: !1
180
- }
181
- ),
182
- N && !g && p.width > 0 && /* @__PURE__ */ v("div", { className: "rfp-absolute rfp-bottom-2 rfp-right-3 rfp-text-[10px] rfp-text-fg-disabled hover:rfp-text-fg-secondary rfp-transition-colors rfp-pointer-events-auto rfp-select-none rfp-cursor-default", children: [
183
- p.width,
184
- " × ",
185
- p.height,
186
- b != null && ` · ${b < 1024 ? `${b} B` : b < 1024 * 1024 ? `${(b / 1024).toFixed(1)} KB` : `${(b / (1024 * 1024)).toFixed(1)} MB`}`
187
- ] }),
188
- U > 1 && /* @__PURE__ */ v("div", { className: "rfp-absolute rfp-bottom-2 rfp-left-1/2 -rfp-translate-x-1/2 rfp-flex rfp-items-center rfp-gap-2 rfp-px-3 rfp-py-1.5 rfp-bg-surface-toolbar rfp-border rfp-border-line rfp-rounded-lg rfp-text-sm rfp-text-fg-primary rfp-shadow-md", children: [
189
- /* @__PURE__ */ i(
190
- "button",
191
- {
192
- type: "button",
193
- onClick: () => re(M - 1),
194
- disabled: M <= 1 || O,
195
- className: "rfp-px-2 rfp-py-0.5 rfp-rounded hover:rfp-bg-surface-nav-hover disabled:rfp-opacity-40 disabled:rfp-cursor-not-allowed",
196
- children: "上一页"
197
- }
198
- ),
199
- /* @__PURE__ */ v("span", { className: "rfp-text-fg-secondary rfp-tabular-nums", children: [
200
- M,
201
- " / ",
202
- U
203
- ] }),
204
- /* @__PURE__ */ i(
205
- "button",
206
- {
207
- type: "button",
208
- onClick: () => re(M + 1),
209
- disabled: M >= U || O,
210
- className: "rfp-px-2 rfp-py-0.5 rfp-rounded hover:rfp-bg-surface-nav-hover disabled:rfp-opacity-40 disabled:rfp-cursor-not-allowed",
211
- children: "下一页"
212
- }
213
- )
214
- ] })
215
- ]
216
- }
217
- );
218
- };
219
- export {
220
- Ue as ImageRenderer
221
- };
222
- //# sourceMappingURL=index-BCuRRLYt.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BCuRRLYt.mjs","sources":["../../src/renderers/Image/index.tsx"],"sourcesContent":["import { useState, useEffect, useRef, useCallback } from 'react';\nimport { motion } from 'framer-motion';\nimport { Loader2 } from 'lucide-react';\nimport { useTranslator } from '../../i18n/LocaleContext';\nimport { detectImageFormat, getLoaderForMimeType } from '@eternalheart/file-preview-core';\nimport type { PreviewFile } from '@eternalheart/file-preview-core';\nimport { RendererError } from '../RendererError';\n\ninterface ImageRendererProps {\n url: string;\n zoom: number;\n rotation: number;\n resetKey?: number;\n fileSize?: number;\n file?: PreviewFile | File;\n onZoomChange?: (zoom: number) => void;\n onNaturalWidthChange?: (width: number) => void;\n onNaturalHeightChange?: (height: number) => void;\n}\n\nexport const ImageRenderer: React.FC<ImageRendererProps> = ({\n url,\n zoom,\n rotation,\n resetKey,\n fileSize,\n file,\n onZoomChange,\n onNaturalWidthChange,\n onNaturalHeightChange\n}) => {\n const t = useTranslator();\n const [loaded, setLoaded] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [decoding, setDecoding] = useState(false);\n const [decodeProgress, setDecodeProgress] = useState(0);\n const [decodeError, setDecodeError] = useState<string | null>(null);\n const [imageSrc, setImageSrc] = useState<string>('');\n const [currentPage, setCurrentPage] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n const [position, setPosition] = useState({ x: 0, y: 0 });\n const [isDragging, setIsDragging] = useState(false);\n const [dragStart, setDragStart] = useState({ x: 0, y: 0 });\n const [internalZoom, setInternalZoom] = useState(1);\n const [naturalSize, setNaturalSize] = useState({ width: 0, height: 0 });\n const imgRef = useRef<HTMLImageElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const blobUrlRef = useRef<string | null>(null);\n const fileBlobRef = useRef<Blob | null>(null);\n const loaderRef = useRef<any>(null);\n const pageCacheRef = useRef<Map<number, string>>(new Map());\n\n // 解码逻辑:检测格式并按需解码\n useEffect(() => {\n let cancelled = false;\n\n const decodeIfNeeded = async () => {\n // 重置状态:清空 src 以避免上一张图片的 onLoad/onError 误触发到新文件\n setImageSrc('');\n setLoaded(false);\n setError(null);\n setDecoding(false);\n setDecodeError(null);\n setDecodeProgress(0);\n setPosition({ x: 0, y: 0 });\n setInternalZoom(1);\n setCurrentPage(1);\n setTotalPages(1);\n\n // 清理旧的 blob URL 与缓存\n if (blobUrlRef.current) {\n URL.revokeObjectURL(blobUrlRef.current);\n blobUrlRef.current = null;\n }\n pageCacheRef.current.forEach((url) => URL.revokeObjectURL(url));\n pageCacheRef.current.clear();\n fileBlobRef.current = null;\n loaderRef.current = null;\n\n // 如果没有 file 对象,直接使用 url\n if (!file) {\n if (!cancelled) setImageSrc(url);\n return;\n }\n\n try {\n // 检测图片格式\n const mimeType = await detectImageFormat(file);\n const loader = await getLoaderForMimeType(mimeType);\n\n // 如果不需要解码,直接使用原 URL\n if (!loader || !(await loader.needsDecode(mimeType))) {\n if (!cancelled) setImageSrc(url);\n return;\n }\n\n // 需要解码\n setDecoding(true);\n\n // 获取文件 Blob\n let fileBlob: Blob;\n if (file instanceof Blob) {\n fileBlob = file;\n } else {\n const response = await fetch(url);\n if (!response.ok) throw new Error('Failed to fetch file');\n fileBlob = await response.blob();\n }\n\n if (cancelled) return;\n\n // 缓存 Blob 与 loader 以便后续翻页\n fileBlobRef.current = fileBlob;\n loaderRef.current = loader;\n\n // 缓存 Blob 与 loader 以便后续翻页\n fileBlobRef.current = fileBlob;\n loaderRef.current = loader;\n\n // 获取元数据(用于检测多页 TIFF)\n if (loader.getMetadata) {\n try {\n const metadata = await loader.getMetadata(fileBlob);\n if (!cancelled && metadata.pageCount && metadata.pageCount > 1) {\n setTotalPages(metadata.pageCount);\n }\n } catch {\n // 忽略元数据获取失败\n }\n }\n\n // 调用 loader 解码(第 1 页 / 缩略图模式)\n const decodedBlob = await loader.decode(fileBlob, {\n page: 1,\n fullQuality: false,\n onProgress: (percent: number) => {\n if (!cancelled) {\n setDecodeProgress(percent);\n }\n },\n });\n\n if (cancelled) return;\n\n // 生成 blob URL\n const blobUrl = typeof decodedBlob === 'string'\n ? decodedBlob\n : URL.createObjectURL(decodedBlob);\n\n blobUrlRef.current = blobUrl;\n pageCacheRef.current.set(1, blobUrl);\n setImageSrc(blobUrl);\n setDecoding(false);\n } catch (err: any) {\n if (!cancelled) {\n setDecodeError(err?.message || '解码失败');\n setDecoding(false);\n }\n }\n };\n\n decodeIfNeeded();\n\n return () => {\n cancelled = true;\n };\n }, [url, file]);\n\n // 多页 TIFF 翻页:切换页码时重新解码\n const handlePageChange = useCallback(async (page: number) => {\n if (!fileBlobRef.current || !loaderRef.current) return;\n if (page < 1 || page > totalPages) return;\n\n // 命中缓存:直接切换\n const cached = pageCacheRef.current.get(page);\n if (cached) {\n setCurrentPage(page);\n setImageSrc(cached);\n return;\n }\n\n // 解码新页面\n setDecoding(true);\n try {\n const decodedBlob = await loaderRef.current.decode(fileBlobRef.current, { page });\n const blobUrl = typeof decodedBlob === 'string'\n ? decodedBlob\n : URL.createObjectURL(decodedBlob);\n\n // LRU:缓存超过 10 页时删除最早的\n if (pageCacheRef.current.size >= 10) {\n const firstKey = pageCacheRef.current.keys().next().value;\n if (firstKey !== undefined) {\n const oldUrl = pageCacheRef.current.get(firstKey);\n if (oldUrl) URL.revokeObjectURL(oldUrl);\n pageCacheRef.current.delete(firstKey);\n }\n }\n\n pageCacheRef.current.set(page, blobUrl);\n setCurrentPage(page);\n setImageSrc(blobUrl);\n setDecoding(false);\n } catch (err: any) {\n setDecodeError(err?.message || '翻页解码失败');\n setDecoding(false);\n }\n }, [totalPages]);\n\n // Cleanup blob URL on unmount\n useEffect(() => {\n return () => {\n if (blobUrlRef.current) {\n URL.revokeObjectURL(blobUrlRef.current);\n }\n pageCacheRef.current.forEach((url) => URL.revokeObjectURL(url));\n pageCacheRef.current.clear();\n };\n }, []);\n\n // 当外部 zoom 改变时,同步内部 zoom\n useEffect(() => {\n setInternalZoom(zoom);\n }, [zoom]);\n\n // 适应窗口/原始尺寸等操作时重置位置居中\n useEffect(() => {\n if (resetKey !== undefined) {\n setPosition({ x: 0, y: 0 });\n }\n }, [resetKey]);\n\n const handleLoad = (e: React.SyntheticEvent<HTMLImageElement>) => {\n setLoaded(true);\n const img = e.currentTarget;\n setNaturalSize({ width: img.naturalWidth, height: img.naturalHeight });\n onNaturalWidthChange?.(img.naturalWidth);\n onNaturalHeightChange?.(img.naturalHeight);\n };\n\n // 边界限制:确保图片至少有一部分可见\n const clampPosition = useCallback((pos: { x: number; y: number }, currentZoom: number) => {\n const container = containerRef.current;\n if (!container || naturalSize.width === 0) return pos;\n\n const containerW = container.clientWidth;\n const containerH = container.clientHeight;\n const imgW = naturalSize.width * currentZoom;\n const imgH = naturalSize.height * currentZoom;\n\n // 至少保留 margin px 的图片在视口内\n const margin = Math.min(80, containerW * 0.15, containerH * 0.15);\n const rangeX = (containerW + imgW) / 2 - margin;\n const rangeY = (containerH + imgH) / 2 - margin;\n\n return {\n x: rangeX > 0 ? Math.max(-rangeX, Math.min(rangeX, pos.x)) : 0,\n y: rangeY > 0 ? Math.max(-rangeY, Math.min(rangeY, pos.y)) : 0,\n };\n }, [naturalSize]);\n\n const handleError = () => {\n setError(t('image.load_failed'));\n setLoaded(true);\n };\n\n // 双击复原:居中 + 缩放100%\n const handleDoubleClick = () => {\n setPosition({ x: 0, y: 0 });\n setInternalZoom(1);\n onZoomChange?.(1);\n };\n\n // 鼠标滚轮缩放 —— 以鼠标位置为缩放原点\n // 使用原生事件 + passive: false,确保 preventDefault 生效,\n // 避免滚轮事件冒泡触发外层(如嵌入模式下的页面滚动)\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const handleWheelNative = (e: WheelEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n const rect = container.getBoundingClientRect();\n const mouseX = e.clientX - rect.left - rect.width / 2;\n const mouseY = e.clientY - rect.top - rect.height / 2;\n\n const delta = e.deltaY > 0 ? -0.05 : 0.05;\n\n setInternalZoom(prev => {\n const newZoom = Math.max(0.01, Math.min(10, prev + delta));\n const scale = newZoom / prev;\n\n setPosition(pos => clampPosition({\n x: mouseX - scale * (mouseX - pos.x),\n y: mouseY - scale * (mouseY - pos.y),\n }, newZoom));\n\n onZoomChange?.(newZoom);\n return newZoom;\n });\n };\n\n container.addEventListener('wheel', handleWheelNative, { passive: false });\n return () => container.removeEventListener('wheel', handleWheelNative);\n }, [onZoomChange, clampPosition]);\n\n const handleMouseDown = useCallback((e: React.MouseEvent) => {\n if (e.button !== 0) return;\n setIsDragging(true);\n setDragStart({\n x: e.clientX - position.x,\n y: e.clientY - position.y,\n });\n }, [position]);\n\n const handleMouseMove = useCallback((e: React.MouseEvent) => {\n if (!isDragging) return;\n setPosition(clampPosition({\n x: e.clientX - dragStart.x,\n y: e.clientY - dragStart.y,\n }, internalZoom));\n }, [isDragging, dragStart, internalZoom, clampPosition]);\n\n const handleMouseUp = useCallback(() => {\n setIsDragging(false);\n }, []);\n\n return (\n <div\n ref={containerRef}\n className=\"rfp-relative rfp-flex rfp-items-center rfp-justify-center rfp-w-full rfp-h-full rfp-overflow-hidden\"\n onMouseDown={handleMouseDown}\n onMouseMove={handleMouseMove}\n onMouseUp={handleMouseUp}\n onMouseLeave={handleMouseUp}\n style={{ cursor: isDragging ? 'grabbing' : 'grab' }}\n >\n {/* 解码中 */}\n {decoding && (\n <div className=\"rfp-absolute rfp-inset-0 rfp-flex rfp-flex-col rfp-items-center rfp-justify-center rfp-bg-surface-1/80 rfp-z-10\">\n <Loader2 className=\"rfp-w-12 rfp-h-12 rfp-text-fg-primary rfp-animate-spin\" />\n <p className=\"rfp-mt-4 rfp-text-fg-secondary\">\n 正在解码... {decodeProgress > 0 && `${Math.round(decodeProgress)}%`}\n </p>\n </div>\n )}\n\n {/* 解码错误 */}\n {decodeError && (\n <div className=\"rfp-absolute rfp-inset-0 rfp-flex rfp-items-center rfp-justify-center rfp-bg-surface-1/80 rfp-z-10\">\n <RendererError message={t('image.decode_failed')} detail={decodeError} />\n </div>\n )}\n\n {!loaded && !error && !decoding && !decodeError && (\n <div className=\"rfp-flex rfp-items-center rfp-justify-center\">\n <div className=\"rfp-w-12 rfp-h-12 rfp-border-4 rfp-border-line-strong rfp-border-t-spinner-head rfp-rounded-full rfp-animate-spin\" />\n </div>\n )}\n\n {error && (\n <RendererError message={error} />\n )}\n\n {imageSrc && (\n <motion.img\n ref={imgRef}\n src={imageSrc}\n alt=\"Preview\"\n className={`rfp-max-w-none rfp-select-none ${!loaded || error || decodeError ? 'rfp-hidden' : ''}`}\n style={{\n transform: `translate(${position.x}px, ${position.y}px) scale(${internalZoom}) rotate(${rotation}deg)`,\n transformOrigin: 'center',\n transition: isDragging ? 'none' : 'transform 0.3s ease-out',\n }}\n onLoad={handleLoad}\n onError={handleError}\n onDoubleClick={handleDoubleClick}\n initial={{ opacity: 0 }}\n animate={{ opacity: loaded && !error && !decodeError ? 1 : 0 }}\n transition={{ duration: 0.3 }}\n draggable={false}\n />\n )}\n\n {/* 右下角分辨率 */}\n {loaded && !error && naturalSize.width > 0 && (\n <div className=\"rfp-absolute rfp-bottom-2 rfp-right-3 rfp-text-[10px] rfp-text-fg-disabled hover:rfp-text-fg-secondary rfp-transition-colors rfp-pointer-events-auto rfp-select-none rfp-cursor-default\">\n {naturalSize.width} × {naturalSize.height}{fileSize != null && ` · ${fileSize < 1024 ? `${fileSize} B` : fileSize < 1024 * 1024 ? `${(fileSize / 1024).toFixed(1)} KB` : `${(fileSize / (1024 * 1024)).toFixed(1)} MB`}`}\n </div>\n )}\n\n {/* 多页 TIFF 翻页器 */}\n {totalPages > 1 && (\n <div className=\"rfp-absolute rfp-bottom-2 rfp-left-1/2 -rfp-translate-x-1/2 rfp-flex rfp-items-center rfp-gap-2 rfp-px-3 rfp-py-1.5 rfp-bg-surface-toolbar rfp-border rfp-border-line rfp-rounded-lg rfp-text-sm rfp-text-fg-primary rfp-shadow-md\">\n <button\n type=\"button\"\n onClick={() => handlePageChange(currentPage - 1)}\n disabled={currentPage <= 1 || decoding}\n className=\"rfp-px-2 rfp-py-0.5 rfp-rounded hover:rfp-bg-surface-nav-hover disabled:rfp-opacity-40 disabled:rfp-cursor-not-allowed\"\n >\n 上一页\n </button>\n <span className=\"rfp-text-fg-secondary rfp-tabular-nums\">\n {currentPage} / {totalPages}\n </span>\n <button\n type=\"button\"\n onClick={() => handlePageChange(currentPage + 1)}\n disabled={currentPage >= totalPages || decoding}\n className=\"rfp-px-2 rfp-py-0.5 rfp-rounded hover:rfp-bg-surface-nav-hover disabled:rfp-opacity-40 disabled:rfp-cursor-not-allowed\"\n >\n 下一页\n </button>\n </div>\n )}\n </div>\n );\n};\n"],"names":["ImageRenderer","url","zoom","rotation","resetKey","fileSize","file","onZoomChange","onNaturalWidthChange","onNaturalHeightChange","t","useTranslator","loaded","setLoaded","useState","error","setError","decoding","setDecoding","decodeProgress","setDecodeProgress","decodeError","setDecodeError","imageSrc","setImageSrc","currentPage","setCurrentPage","totalPages","setTotalPages","position","setPosition","isDragging","setIsDragging","dragStart","setDragStart","internalZoom","setInternalZoom","naturalSize","setNaturalSize","imgRef","useRef","containerRef","blobUrlRef","fileBlobRef","loaderRef","pageCacheRef","useEffect","cancelled","mimeType","detectImageFormat","loader","getLoaderForMimeType","fileBlob","response","metadata","decodedBlob","percent","blobUrl","err","handlePageChange","useCallback","page","cached","firstKey","oldUrl","handleLoad","img","clampPosition","pos","currentZoom","container","containerW","containerH","imgW","imgH","margin","rangeX","rangeY","handleError","handleDoubleClick","handleWheelNative","e","rect","mouseX","mouseY","delta","prev","newZoom","scale","handleMouseDown","handleMouseMove","handleMouseUp","jsxs","jsx","Loader2","RendererError","motion"],"mappings":"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"}