@flyfish-group/file-viewer-web 1.0.10 → 1.0.12

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 (271) hide show
  1. package/README.md +9 -2
  2. package/dist/index.d.ts +34 -0
  3. package/dist/index.js +8 -0
  4. package/package.json +1 -1
  5. package/viewer/assets/3MFLoader-Cu6MV1Tf.js +1 -0
  6. package/viewer/assets/AMFLoader-lvPchvXS.js +1 -0
  7. package/viewer/assets/ArchiveViewer-BZsHY7Zq.css +1 -0
  8. package/viewer/assets/ArchiveViewer-ChRj3qeU.js +1 -0
  9. package/viewer/assets/AudioViewer-DqNniamm.js +1 -0
  10. package/viewer/assets/CadViewer-BFihXVVK.js +1 -0
  11. package/viewer/assets/CadViewer-DZAS6XFY.css +1 -0
  12. package/viewer/assets/CodeViewer-Cm8fxtvw.js +2 -0
  13. package/viewer/assets/{CodeViewer-HGV-dwr6.css → CodeViewer-KlbtXDJA.css} +1 -1
  14. package/viewer/assets/ColladaLoader-9JnWW2qx.js +3 -0
  15. package/viewer/assets/DrawingViewer-DHdPw80C.css +1 -0
  16. package/viewer/assets/DrawingViewer-Do29ZtAf.js +2 -0
  17. package/viewer/assets/EdaViewer-CKf1YQnh.css +1 -0
  18. package/viewer/assets/EdaViewer-rb6ew4vx.js +8 -0
  19. package/viewer/assets/EmailViewer-BhW7hwna.js +4 -0
  20. package/viewer/assets/EmailViewer-BwvGE4ns.css +1 -0
  21. package/viewer/assets/{EpubViewer-5hOhOgl5.js → EpubViewer-DlehYUbF.js} +2 -2
  22. package/viewer/assets/FBXLoader-BR2WOnav.js +1 -0
  23. package/viewer/assets/GLTFLoader-Oe_gNr7z.js +1 -0
  24. package/viewer/assets/ImageViewer-y2k0Kgfw.js +1 -0
  25. package/viewer/assets/KMZLoader-BT5-fslH.js +1 -0
  26. package/viewer/assets/{MarkdownViewer-CauCMix8.js → MarkdownViewer-dCKraImn.js} +2 -2
  27. package/viewer/assets/ModelViewer-5dX0zG_N.js +2 -0
  28. package/viewer/assets/ModelViewer-C4ir9AyI.css +1 -0
  29. package/viewer/assets/OBJLoader-Dr_zHthK.js +5 -0
  30. package/viewer/assets/OfdViewer-CySuJJ6I.js +2 -0
  31. package/viewer/assets/PCDLoader-C8E_Z0Lp.js +3 -0
  32. package/viewer/assets/PLYLoader-BIvJFvLy.js +2 -0
  33. package/viewer/assets/{PdfView-CS_IFVnD.css → PdfView-DkzMi2E1.css} +1 -1
  34. package/viewer/assets/{PdfView-BmvyynSl.js → PdfView-DpBMjzzt.js} +4 -4
  35. package/viewer/assets/{PptxRender-DPUrsWGR.js → PptxRender-7JpDsaMj.js} +2 -2
  36. package/viewer/assets/STLLoader-yuZC5ZKB.js +1 -0
  37. package/viewer/assets/TDSLoader-Bh0I9gg5.js +1 -0
  38. package/viewer/assets/USDLoader-YAA4d1kg.js +6 -0
  39. package/viewer/assets/{UmdViewer-DgDIrlID.js → UmdViewer-CPzL2g6G.js} +2 -2
  40. package/viewer/assets/VRMLLoader-Bg8OB7AO.js +140 -0
  41. package/viewer/assets/VTKLoader-CGwQVf82.js +3 -0
  42. package/viewer/assets/XYZLoader-BPX1CIj8.js +2 -0
  43. package/viewer/assets/{XlsxTable-Dca8o5_N.js → XlsxTable-CkfquQVR.js} +2 -2
  44. package/viewer/assets/{ar-SA-G6X2FPQ2-DWAZRxPu.js → ar-SA-G6X2FPQ2-CB1lUbnK.js} +1 -1
  45. package/viewer/assets/architecture-7EHR7CIX-E8_ZtUGk.js +1 -0
  46. package/viewer/assets/{architectureDiagram-3BPJPVTR-ourcMGqp.js → architectureDiagram-3BPJPVTR-D8WSwju1.js} +1 -1
  47. package/viewer/assets/archive-BC_UwA3L.js +2 -0
  48. package/viewer/assets/audio-CQKWXgJO.js +2 -0
  49. package/viewer/assets/{az-AZ-76LH7QW2-CD-SA1wC.js → az-AZ-76LH7QW2-CfKAG8NZ.js} +1 -1
  50. package/viewer/assets/bash-BJm0Os9e.js +1 -0
  51. package/viewer/assets/{bg-BG-XCXSNQG7-lFFvFyxW.js → bg-BG-XCXSNQG7-Bd9bLO2K.js} +1 -1
  52. package/viewer/assets/{blockDiagram-GPEHLZMM-DETJLwVU.js → blockDiagram-GPEHLZMM-CTu9iFT_.js} +1 -1
  53. package/viewer/assets/{bn-BD-2XOGV67Q-CuUcZaL8.js → bn-BD-2XOGV67Q-1fmnpM-S.js} +1 -1
  54. package/viewer/assets/{c4Diagram-AAUBKEIU-DCfnD0yS.js → c4Diagram-AAUBKEIU-Dj7Wqd9r.js} +1 -1
  55. package/viewer/assets/{ca-ES-6MX7JW3Y-Cj4OlC6R.js → ca-ES-6MX7JW3Y-BEVTKe-H.js} +1 -1
  56. package/viewer/assets/cad-BdTYK4zt.js +2 -0
  57. package/viewer/assets/cfb-w_71-bTW.js +11 -0
  58. package/viewer/assets/channel-D3Cre9qO.js +1 -0
  59. package/viewer/assets/{chunk-2J33WTMH-vXxffsmH.js → chunk-2J33WTMH-Dj325_X1.js} +1 -1
  60. package/viewer/assets/{chunk-3OPIFGDE-C9LtEwmG.js → chunk-3OPIFGDE-DW3F2IJ8.js} +1 -1
  61. package/viewer/assets/{chunk-4BX2VUAB-CIKyExbu.js → chunk-4BX2VUAB-DJAfYzcc.js} +1 -1
  62. package/viewer/assets/{chunk-55IACEB6-uprZKw0K.js → chunk-55IACEB6-BWzJRqQ_.js} +1 -1
  63. package/viewer/assets/{chunk-5ZQYHXKU-C2girjDc.js → chunk-5ZQYHXKU-Bquiasoi.js} +1 -1
  64. package/viewer/assets/{chunk-727SXJPM-BJJusOVj.js → chunk-727SXJPM-CDXLTA4c.js} +1 -1
  65. package/viewer/assets/{chunk-AGHRB4JF-vbzngFky.js → chunk-AGHRB4JF-DQOQWGJs.js} +1 -1
  66. package/viewer/assets/{chunk-AQP2D5EJ-BPoH0fiI.js → chunk-AQP2D5EJ-bNADy1-9.js} +1 -1
  67. package/viewer/assets/{chunk-BSJP7CBP-9m7kELGq.js → chunk-BSJP7CBP-kuQaugkg.js} +1 -1
  68. package/viewer/assets/{chunk-CSCIHK7Q-OdsAx3G8.js → chunk-CSCIHK7Q-CwrZldqU.js} +2 -2
  69. package/viewer/assets/{chunk-EIO257PC-B13QElRc.js → chunk-EIO257PC-BI5igNBI.js} +1 -1
  70. package/viewer/assets/{chunk-FMBD7UC4-DiXlV5mw.js → chunk-FMBD7UC4-CnjeUbaY.js} +1 -1
  71. package/viewer/assets/{chunk-K2UTITRG-CJkr0tXj.js → chunk-K2UTITRG-B-1sR338.js} +4 -4
  72. package/viewer/assets/{chunk-KSCS5N6A-WSLcjFr5.js → chunk-KSCS5N6A-CZ7RNlru.js} +1 -1
  73. package/viewer/assets/{chunk-L5ZTLDWV-B_HlbJUe.js → chunk-L5ZTLDWV-C-Upm26c.js} +1 -1
  74. package/viewer/assets/{chunk-LZXEDZCA-Cqd1LSkM.js → chunk-LZXEDZCA-TRWdpsWK.js} +2 -2
  75. package/viewer/assets/{chunk-ND2GUHAM-28eJdx7E.js → chunk-ND2GUHAM-BbrXIbM5.js} +1 -1
  76. package/viewer/assets/{chunk-NZK2D7GU-BUIZFEFT.js → chunk-NZK2D7GU-BmI3B8V6.js} +1 -1
  77. package/viewer/assets/{chunk-O5CBEL6O-DZNjSn6F.js → chunk-O5CBEL6O-BrMq6sdg.js} +1 -1
  78. package/viewer/assets/chunk-QZHKN3VN-CFHCXO_E.js +1 -0
  79. package/viewer/assets/{chunk-SRAX5OIU-D2mqL_eA.js → chunk-SRAX5OIU-Nxy8Tzq3.js} +1 -1
  80. package/viewer/assets/{chunk-WU5MYG2G-CI2E4kog.js → chunk-WU5MYG2G-J_2NibrG.js} +1 -1
  81. package/viewer/assets/{chunk-XPW4576I-CvDbpA2d.js → chunk-XPW4576I-BcLhFQvu.js} +1 -1
  82. package/viewer/assets/classDiagram-4FO5ZUOK-BuAEQIC5.js +1 -0
  83. package/viewer/assets/classDiagram-v2-Q7XG4LA2-DGiKlp7z.js +1 -0
  84. package/viewer/assets/core-CRLmsskK.js +3 -0
  85. package/viewer/assets/{cose-bilkent-S5V4N54A-DT4OXn3T.js → cose-bilkent-S5V4N54A-mjOXzgbN.js} +1 -1
  86. package/viewer/assets/cpp-DF3_Y4Y1.js +1 -0
  87. package/viewer/assets/{cs-CZ-2BRQDIVT-9YP2OnzR.js → cs-CZ-2BRQDIVT-BEu5Gu40.js} +1 -1
  88. package/viewer/assets/csharp-BtVV86wX.js +1 -0
  89. package/viewer/assets/css-wZv8YE7b.js +1 -0
  90. package/viewer/assets/{da-DK-5WZEPLOC-DyH5OvyC.js → da-DK-5WZEPLOC-zjwheHko.js} +1 -1
  91. package/viewer/assets/{dagre-BM42HDAG-BQqjetsc.js → dagre-BM42HDAG-C8sJW_Ua.js} +1 -1
  92. package/viewer/assets/{dagre-D7L3ChvY.js → dagre-QzaNJyV9.js} +1 -1
  93. package/viewer/assets/{de-DE-XR44H4JA-Dm-lIYs8.js → de-DE-XR44H4JA-BGtdJ-CK.js} +1 -1
  94. package/viewer/assets/{diagram-2AECGRRQ-DQj687EE.js → diagram-2AECGRRQ-Dz6wtzLe.js} +1 -1
  95. package/viewer/assets/{diagram-5GNKFQAL-C9cKajpJ.js → diagram-5GNKFQAL-B0eW3QHX.js} +1 -1
  96. package/viewer/assets/{diagram-KO2AKTUF-BrHr9ddz.js → diagram-KO2AKTUF-8rEv9nbd.js} +1 -1
  97. package/viewer/assets/{diagram-LMA3HP47-B_3VIpAA.js → diagram-LMA3HP47-DqAI9RJC.js} +1 -1
  98. package/viewer/assets/{diagram-OG6HWLK6-CKGkIofl.js → diagram-OG6HWLK6-B-N8ZOjb.js} +1 -1
  99. package/viewer/assets/diff-Bxf4Bdyj.js +1 -0
  100. package/viewer/assets/{dist-BWLXExfL.js → dist-BtHEcd1u.js} +4 -4
  101. package/viewer/assets/{dist-Bl_HJvJC.js → dist-CwYTJqYS.js} +1 -1
  102. package/viewer/assets/{docx-preview-CiJ_X4bw.js → docx-preview-DqCuLb1l.js} +1 -1
  103. package/viewer/assets/drawing-hJlah-cU.js +2 -0
  104. package/viewer/assets/ebook-CSM2MHSf.js +2 -0
  105. package/viewer/assets/eda-Dhg-MI0M.js +2 -0
  106. package/viewer/assets/{el-GR-BZB4AONW-r581kidc.js → el-GR-BZB4AONW-B8fiITw1.js} +1 -1
  107. package/viewer/assets/email-BCvf_4kt.js +2 -0
  108. package/viewer/assets/{en-B4ZKOASM-Crn8bm25.js → en-B4ZKOASM-DidczqYU.js} +1 -1
  109. package/viewer/assets/{erDiagram-TEJ5UH35-BEdSv6Fr.js → erDiagram-TEJ5UH35-D-liy63Y.js} +1 -1
  110. package/viewer/assets/{es-ES-U4NZUMDT-Cwbu6VfM.js → es-ES-U4NZUMDT-DDab8Doc.js} +1 -1
  111. package/viewer/assets/{eu-ES-A7QVB2H4-BQQ8mY2m.js → eu-ES-A7QVB2H4-COlIn7GW.js} +1 -1
  112. package/viewer/assets/eventmodeling-FCH6USID-eYgNvYb6.js +1 -0
  113. package/viewer/assets/{fa-IR-HGAKTJCU-eYy7h0Hx.js → fa-IR-HGAKTJCU-DcISfvo9.js} +1 -1
  114. package/viewer/assets/fflate.module-DmN2iWjn.js +1 -0
  115. package/viewer/assets/{fi-FI-Z5N7JZ37-0dUJDB5b.js → fi-FI-Z5N7JZ37-BKa6OvOE.js} +1 -1
  116. package/viewer/assets/{flowDiagram-I6XJVG4X-BuWsqPkc.js → flowDiagram-I6XJVG4X-Bp38J4Yk.js} +1 -1
  117. package/viewer/assets/{fr-FR-RHASNOE6-CcYw1Zvt.js → fr-FR-RHASNOE6-BWV8XdX9.js} +1 -1
  118. package/viewer/assets/{ganttDiagram-6RSMTGT7-CJySS69b.js → ganttDiagram-6RSMTGT7-D_FHCvEN.js} +1 -1
  119. package/viewer/assets/gitGraph-WXDBUCRP-BLCpejRG.js +1 -0
  120. package/viewer/assets/{gitGraphDiagram-PVQCEYII-DR2VhZO_.js → gitGraphDiagram-PVQCEYII-C-eYfko6.js} +1 -1
  121. package/viewer/assets/{gl-ES-HMX3MZ6V-C3Iv5ndX.js → gl-ES-HMX3MZ6V-BFi01nkB.js} +1 -1
  122. package/viewer/assets/go-B7mD4oi7.js +1 -0
  123. package/viewer/assets/{he-IL-6SHJWFNN-CL8Or2hC.js → he-IL-6SHJWFNN-Dk5YqRlq.js} +1 -1
  124. package/viewer/assets/{hi-IN-IWLTKZ5I-DgAD87B-.js → hi-IN-IWLTKZ5I-BIHZmBkA.js} +1 -1
  125. package/viewer/assets/{hu-HU-A5ZG7DT2-B8ITrvUt.js → hu-HU-A5ZG7DT2-uGTZAnbA.js} +1 -1
  126. package/viewer/assets/{id-ID-SAP4L64H-VQ2OqDi1.js → id-ID-SAP4L64H-B7i3a2eV.js} +1 -1
  127. package/viewer/assets/image-D10T_iax.js +2 -0
  128. package/viewer/assets/image-GAAHSSAO-hQBhWjS_.js +1 -0
  129. package/viewer/assets/index-D8hVflyC.css +1 -0
  130. package/viewer/assets/index-kFSstoL8.js +123 -0
  131. package/viewer/assets/info-J43DQDTF-Bw2UVBYA.js +1 -0
  132. package/viewer/assets/{infoDiagram-5YYISTIA-DxNv4IA7.js → infoDiagram-5YYISTIA-Bo-Hrkyn.js} +1 -1
  133. package/viewer/assets/ini-BMQSfYcX.js +1 -0
  134. package/viewer/assets/{ishikawaDiagram-YF4QCWOH-2rCqsio7.js → ishikawaDiagram-YF4QCWOH-iXf-4sS_.js} +1 -1
  135. package/viewer/assets/{it-IT-JPQ66NNP-D777F8zf.js → it-IT-JPQ66NNP-xJ2TLHO9.js} +1 -1
  136. package/viewer/assets/{ja-JP-DBVTYXUO-D1PJdPJe.js → ja-JP-DBVTYXUO-C-iG7c92.js} +1 -1
  137. package/viewer/assets/java-CLKxIYNp.js +1 -0
  138. package/viewer/assets/javascript-KR3bXd09.js +1 -0
  139. package/viewer/assets/{journeyDiagram-JHISSGLW-DQQq5Lp7.js → journeyDiagram-JHISSGLW-DpBW-qay.js} +1 -1
  140. package/viewer/assets/json-CKtDrYhA.js +1 -0
  141. package/viewer/assets/{jszip.min-D1xSKQ08.js → jszip.min-DnCauUac.js} +1 -1
  142. package/viewer/assets/{kaa-6HZHGXH3-fRgBr8Mi.js → kaa-6HZHGXH3-kOFHl1W7.js} +1 -1
  143. package/viewer/assets/{kab-KAB-ZGHBKWFO-DlQ49dRn.js → kab-KAB-ZGHBKWFO-B8ayGPmN.js} +1 -1
  144. package/viewer/assets/{kanban-definition-UN3LZRKU-B5eO6Mg1.js → kanban-definition-UN3LZRKU-CoAEv9C_.js} +1 -1
  145. package/viewer/assets/{kk-KZ-P5N5QNE5-Hq_H-Gj0.js → kk-KZ-P5N5QNE5-BkFKmnHM.js} +1 -1
  146. package/viewer/assets/{km-KH-HSX4SM5Z-BhI31DxZ.js → km-KH-HSX4SM5Z-BLk5CN5Z.js} +1 -1
  147. package/viewer/assets/{ko-KR-MTYHY66A-ImUZQcvz.js → ko-KR-MTYHY66A-ChIoO5QK.js} +1 -1
  148. package/viewer/assets/{ku-TR-6OUDTVRD-DfaC8QXn.js → ku-TR-6OUDTVRD-DMV9YIRz.js} +1 -1
  149. package/viewer/assets/lib-BWPMQv-F.js +6 -0
  150. package/viewer/assets/libarchive-BWmjBS7s.js +1 -0
  151. package/viewer/assets/{lt-LT-XHIRWOB4-I-ZCC3dU.js → lt-LT-XHIRWOB4-CYXyAYWA.js} +1 -1
  152. package/viewer/assets/{lv-LV-5QDEKY6T-Qq5QdgfN.js → lv-LV-5QDEKY6T--5Qg0C69.js} +1 -1
  153. package/viewer/assets/markdown-DQnm92SS.js +1 -0
  154. package/viewer/assets/md-DJI9yitg.js +2 -0
  155. package/viewer/assets/{mermaid-parser.core-Bdy3q53b.js → mermaid-parser.core-DNBTQpZm.js} +2 -2
  156. package/viewer/assets/{mindmap-definition-RKZ34NQL-m96D2ClP.js → mindmap-definition-RKZ34NQL-B70TvEH-.js} +1 -1
  157. package/viewer/assets/model-CtJpb99w.js +2 -0
  158. package/viewer/assets/mp4-E_aU-TOR.js +1 -0
  159. package/viewer/assets/{mr-IN-CRQNXWMA-BeP3PnlU.js → mr-IN-CRQNXWMA-CLY3bXgU.js} +1 -1
  160. package/viewer/assets/{my-MM-5M5IBNSE-BYx0eFn7.js → my-MM-5M5IBNSE-NR6S4X8y.js} +1 -1
  161. package/viewer/assets/{nb-NO-T6EIAALU-C9J5JzGe.js → nb-NO-T6EIAALU-DGM4T3-d.js} +1 -1
  162. package/viewer/assets/nestedRender-agTARb8M.js +3 -0
  163. package/viewer/assets/{nl-NL-IS3SIHDZ-CMVLrD7F.js → nl-NL-IS3SIHDZ-BzXabHU6.js} +1 -1
  164. package/viewer/assets/{nn-NO-6E72VCQL-BBxsrvc2.js → nn-NO-6E72VCQL-CAdCSKJX.js} +1 -1
  165. package/viewer/assets/{oc-FR-POXYY2M6-CHEXPovt.js → oc-FR-POXYY2M6-DO-CEdhO.js} +1 -1
  166. package/viewer/assets/ofd-D9Q3WATB.js +2 -0
  167. package/viewer/assets/{ofd-D8TA6tcU.js → ofd-DKC8ZhaL.js} +1 -1
  168. package/viewer/assets/{pa-IN-N4M65BXN-Bnyu119-.js → pa-IN-N4M65BXN-DXqteMU-.js} +1 -1
  169. package/viewer/assets/packet-YPE3B663-DG40CXmn.js +1 -0
  170. package/viewer/assets/pdf-B564pyJf.js +2 -0
  171. package/viewer/assets/percentages-BXMCSKIN-B5emcqXz.js +1 -0
  172. package/viewer/assets/php-B8QdQEEH.js +2 -0
  173. package/viewer/assets/{pica-CB7jwGa3.js → pica-CM0Qb9Bg.js} +1 -1
  174. package/viewer/assets/pie-LRSECV5Y-kQyvycPp.js +1 -0
  175. package/viewer/assets/{pieDiagram-4H26LBE5-DVleOheM.js → pieDiagram-4H26LBE5-BZc3n-sg.js} +1 -1
  176. package/viewer/assets/{pl-PL-T2D74RX3-Cw72z8vE.js → pl-PL-T2D74RX3-CLEZIlu9.js} +1 -1
  177. package/viewer/assets/postal-mime-CuiVR6kZ.js +29 -0
  178. package/viewer/assets/pptx-DrPXyatj.js +2 -0
  179. package/viewer/assets/{prod-Npfld6sP.js → prod-CY-THQBC.js} +7 -7
  180. package/viewer/assets/{pt-BR-5N22H2LF-ok3TV3dt.js → pt-BR-5N22H2LF-Bsj-57xw.js} +1 -1
  181. package/viewer/assets/{pt-PT-UZXXM6DQ-BX423IXU.js → pt-PT-UZXXM6DQ-X6MmEloy.js} +1 -1
  182. package/viewer/assets/python-5t6UGqKu.js +1 -0
  183. package/viewer/assets/{quadrantDiagram-W4KKPZXB-CV_EkNJ-.js → quadrantDiagram-W4KKPZXB-DtCxOPTd.js} +1 -1
  184. package/viewer/assets/radar-GUYGQ44K-DpjXncxt.js +1 -0
  185. package/viewer/assets/{requirementDiagram-4Y6WPE33-B_kmlnjO.js → requirementDiagram-4Y6WPE33-xfwA6TzG.js} +1 -1
  186. package/viewer/assets/{ro-RO-JPDTUUEW-Pv4aDgxu.js → ro-RO-JPDTUUEW-C8xD9ffY.js} +1 -1
  187. package/viewer/assets/rough.esm-DZoaBsBN.js +1 -0
  188. package/viewer/assets/{ru-RU-B4JR7IUQ-BGRCDPgW.js → ru-RU-B4JR7IUQ-C1FQltCi.js} +1 -1
  189. package/viewer/assets/rust-CKj8FOnD.js +1 -0
  190. package/viewer/assets/{sankeyDiagram-5OEKKPKP-CCXvqmNS.js → sankeyDiagram-5OEKKPKP-BAAdRCbn.js} +1 -1
  191. package/viewer/assets/{sequenceDiagram-3UESZ5HK-CoR9l1O_.js → sequenceDiagram-3UESZ5HK-4K-5Eo67.js} +1 -1
  192. package/viewer/assets/{si-LK-N5RQ5JYF-CSeZ8jFh.js → si-LK-N5RQ5JYF-OPown7wD.js} +1 -1
  193. package/viewer/assets/{sk-SK-C5VTKIMK-BrMoO_Q1.js → sk-SK-C5VTKIMK-C7m1mJNr.js} +1 -1
  194. package/viewer/assets/{sl-SI-NN7IZMDC-B_x--94y.js → sl-SI-NN7IZMDC-CN0ko2RM.js} +1 -1
  195. package/viewer/assets/sql-Ce6HY06Z.js +1 -0
  196. package/viewer/assets/{src-BbUo_1sw.js → src-nayzRmN3.js} +4 -4
  197. package/viewer/assets/{stateDiagram-AJRCARHV-DdTaUVJA.js → stateDiagram-AJRCARHV-V3SSt2ZK.js} +1 -1
  198. package/viewer/assets/stateDiagram-v2-BHNVJYJU-LozT2G7Z.js +1 -0
  199. package/viewer/assets/subset-shared.chunk-CTQKAvEN.js +1 -0
  200. package/viewer/assets/{subset-worker.chunk-DoDHTOze.js → subset-worker.chunk-CSjccB_s.js} +1 -1
  201. package/viewer/assets/{sv-SE-XGPEYMSR-BB4gq_Zc.js → sv-SE-XGPEYMSR-NcR2tIgR.js} +1 -1
  202. package/viewer/assets/{ta-IN-2NMHFXQM-9zxtttPw.js → ta-IN-2NMHFXQM-DQ3KI7kE.js} +1 -1
  203. package/viewer/assets/text-DkNcXP2L.js +2 -0
  204. package/viewer/assets/{th-TH-HPSO5L25-Bu674ZxS.js → th-TH-HPSO5L25-CPi0bWo8.js} +1 -1
  205. package/viewer/assets/three.module-DQeeIQFF.js +4104 -0
  206. package/viewer/assets/{timeline-definition-PNZ67QCA-CLUsDmue.js → timeline-definition-PNZ67QCA-B3C7YX67.js} +1 -1
  207. package/viewer/assets/{tr-TR-DEFEU3FU-BOU8hW6c.js → tr-TR-DEFEU3FU-RORLYuSJ.js} +1 -1
  208. package/viewer/assets/treeView-BLDUP644-BfUsBpTQ.js +1 -0
  209. package/viewer/assets/treemap-LRROVOQU-BpJlw8g_.js +1 -0
  210. package/viewer/assets/typescript-CL2ByGCA.js +1 -0
  211. package/viewer/assets/{uk-UA-QMV73CPH-DExt1pCB.js → uk-UA-QMV73CPH-Dp86zjS6.js} +1 -1
  212. package/viewer/assets/umd-BAgKkWAQ.js +2 -0
  213. package/viewer/assets/{vennDiagram-CIIHVFJN-DFmAzwyu.js → vennDiagram-CIIHVFJN-Cyyziky_.js} +1 -1
  214. package/viewer/assets/{vi-VN-M7AON7JQ-ChzDxy_w.js → vi-VN-M7AON7JQ-DQQvaBwM.js} +1 -1
  215. package/viewer/assets/wardley-L42UT6IY-BPY9hq76.js +1 -0
  216. package/viewer/assets/{wardleyDiagram-YWT4CUSO-DpnSL_l7.js → wardleyDiagram-YWT4CUSO-oaIiPVhB.js} +1 -1
  217. package/viewer/assets/word-6a6IAmBa.js +94 -0
  218. package/viewer/assets/worker-bundle-D-AQnxpp.js +1 -0
  219. package/viewer/assets/worker-bundle-Dx5mKZOL.js +6 -0
  220. package/viewer/assets/xlsx-ClqN48ie.js +2 -0
  221. package/viewer/assets/xml-CKLaISb_.js +1 -0
  222. package/viewer/assets/{xychartDiagram-2RQKCTM6-DTybmPGf.js → xychartDiagram-2RQKCTM6-Cq0ztHcZ.js} +1 -1
  223. package/viewer/assets/yaml-CnW-k44d.js +1 -0
  224. package/viewer/assets/{zh-CN-LNUGB5OW-AIyEr3br.js → zh-CN-LNUGB5OW-CrEJqe-w.js} +1 -1
  225. package/viewer/assets/{zh-HK-E62DVLB3-CyQvIghB.js → zh-HK-E62DVLB3-QAJFizTz.js} +1 -1
  226. package/viewer/assets/{zh-TW-RAJ6MFWO-C9bb32Ou.js → zh-TW-RAJ6MFWO-zVjl0SCX.js} +1 -1
  227. package/viewer/flyfish-viewer-manifest.json +1 -1
  228. package/viewer/index.html +2 -2
  229. package/viewer/vendor/libarchive/libarchive.wasm +0 -0
  230. package/viewer/vendor/libarchive/worker-bundle.js +6 -0
  231. package/viewer/assets/AudioViewer-HHLkFx24.js +0 -1
  232. package/viewer/assets/CadViewer-BYC0zQ0T.js +0 -1
  233. package/viewer/assets/CadViewer-Cv8b95Gj.css +0 -1
  234. package/viewer/assets/CodeViewer-VQE6BewI.js +0 -4
  235. package/viewer/assets/DrawingViewer-BtEGTvJQ.js +0 -2
  236. package/viewer/assets/DrawingViewer-CHm6iXmV.css +0 -1
  237. package/viewer/assets/ImageViewer-D8t2LOeu.js +0 -1
  238. package/viewer/assets/OfdViewer-d-bt92VG.js +0 -2
  239. package/viewer/assets/architecture-7EHR7CIX-PuoqTBea.js +0 -1
  240. package/viewer/assets/channel-Cvj3_InT.js +0 -1
  241. package/viewer/assets/chunk-QZHKN3VN-DQmrlo26.js +0 -1
  242. package/viewer/assets/classDiagram-4FO5ZUOK-BR_8dE4R.js +0 -1
  243. package/viewer/assets/classDiagram-v2-Q7XG4LA2-BSPdc-Mh.js +0 -1
  244. package/viewer/assets/eventmodeling-FCH6USID-ClPyqCMG.js +0 -1
  245. package/viewer/assets/gitGraph-WXDBUCRP-ce180Qdx.js +0 -1
  246. package/viewer/assets/image-GAAHSSAO-DbYjE9JA.js +0 -1
  247. package/viewer/assets/index-0hvuUhZv.js +0 -106
  248. package/viewer/assets/index-Bwjgtadn.css +0 -1
  249. package/viewer/assets/info-J43DQDTF-CMRAUPs-.js +0 -1
  250. package/viewer/assets/packet-YPE3B663-mGtuymGQ.js +0 -1
  251. package/viewer/assets/percentages-BXMCSKIN-CBvdjJLu.js +0 -1
  252. package/viewer/assets/pie-LRSECV5Y-CGMZQePM.js +0 -1
  253. package/viewer/assets/radar-GUYGQ44K-C81hKZN2.js +0 -1
  254. package/viewer/assets/rough.esm-BrTFrov0.js +0 -1
  255. package/viewer/assets/stateDiagram-v2-BHNVJYJU-D9_r8kG7.js +0 -1
  256. package/viewer/assets/subset-shared.chunk-DpZLNUjP.js +0 -1
  257. package/viewer/assets/treeView-BLDUP644-NZTNRLdP.js +0 -1
  258. package/viewer/assets/treemap-LRROVOQU-BMknj0en.js +0 -1
  259. package/viewer/assets/wardley-L42UT6IY-D9i-Iven.js +0 -1
  260. /package/viewer/assets/{cytoscape.esm-DQPqE0MR.js → cytoscape.esm-BO4b6pVn.js} +0 -0
  261. /package/viewer/assets/{directory-open-01563666-DJpMaT5E.js → directory-open-01563666-BniaG4fL.js} +0 -0
  262. /package/viewer/assets/{directory-open-4ed118d0-vrMz6VGC.js → directory-open-4ed118d0-BHba9d9p.js} +0 -0
  263. /package/viewer/assets/{file-open-002ab408-D8YX4_im.js → file-open-002ab408-CbDP93PM.js} +0 -0
  264. /package/viewer/assets/{file-open-7c801643-ssV9zcu_.js → file-open-7c801643-CWQArfXm.js} +0 -0
  265. /package/viewer/assets/{file-save-3189631c-DxUkN-yO.js → file-save-3189631c-BmTfrWvU.js} +0 -0
  266. /package/viewer/assets/{file-save-745eba88-VPL_lGKy.js → file-save-745eba88-DNetLxMl.js} +0 -0
  267. /package/viewer/assets/{graphlib-Bk2wNdF0.js → graphlib-BpbuYmc5.js} +0 -0
  268. /package/viewer/assets/{image-blob-reduce.esm-Co0wHMYu.js → image-blob-reduce.esm-ClRzuTkj.js} +0 -0
  269. /package/viewer/assets/{katex-C22v-RF3.js → katex-BRA9miIt.js} +0 -0
  270. /package/viewer/assets/{roundRect-BDOnP7qU.js → roundRect-Bcu5tbLc.js} +0 -0
  271. /package/viewer/assets/{worker-ref-zQl5Zn-S.js → worker-ref-BqLasdQ2.js} +0 -0
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  纯 Web 文件预览组件。只提供私有化部署路线: npm 包随包携带 Vue 基线 viewer 产物;使用 `npm install` 或已允许 pnpm 安装脚本后,会自动复制到宿主项目的 `public/file-viewer`,组件默认加载 `/file-viewer/index.html`。
4
4
 
5
5
  ```bash
6
- npm install @flyfish-group/file-viewer-web@1.0.10
6
+ npm install @flyfish-group/file-viewer-web@1.0.12
7
7
  ```
8
8
 
9
9
  pnpm 10 默认会拦截依赖包的 `postinstall`。如果安装后提示 `Ignored build scripts: @flyfish-group/file-viewer-web`,请执行 `pnpm approve-builds` 允许该包,或运行 `pnpm exec file-viewer-copy-assets ./public/file-viewer`。
@@ -12,7 +12,12 @@ pnpm 10 默认会拦截依赖包的 `postinstall`。如果安装后提示 `Ignor
12
12
  import { mountViewerFrame } from '@flyfish-group/file-viewer-web'
13
13
 
14
14
  mountViewerFrame(document.getElementById('viewer')!, {
15
- url: 'https://example.com/demo.pdf'
15
+ url: 'https://example.com/demo.pdf',
16
+ options: {
17
+ toolbar: true,
18
+ watermark: { text: '内部预览', opacity: 0.14 },
19
+ archive: { workerUrl: '/file-viewer/vendor/libarchive/worker-bundle.js', cache: true }
20
+ }
16
21
  })
17
22
  ```
18
23
 
@@ -41,3 +46,5 @@ mountViewerFrame(el, {
41
46
  url
42
47
  })
43
48
  ```
49
+
50
+ `options` 会透传给 Vue 基线预览器,可配置下载/打印/导出 HTML 操作栏、文字或图片水印,以及压缩包预览的 `libarchive.js` Worker、IndexedDB 缓存和体积上限。
package/dist/index.d.ts CHANGED
@@ -1,5 +1,35 @@
1
1
  export type FileRef = File | Blob | ArrayBuffer;
2
2
  export type ViewerFrameParamValue = string | number | boolean | null | undefined;
3
+ export interface ViewerWatermarkOptions {
4
+ enabled?: boolean;
5
+ text?: string;
6
+ image?: string;
7
+ opacity?: number;
8
+ rotate?: number;
9
+ gapX?: number;
10
+ gapY?: number;
11
+ width?: number;
12
+ height?: number;
13
+ fontSize?: number;
14
+ color?: string;
15
+ fontFamily?: string;
16
+ }
17
+ export interface ViewerToolbarOptions {
18
+ download?: boolean;
19
+ print?: boolean;
20
+ exportHtml?: boolean;
21
+ }
22
+ export interface ViewerArchiveOptions {
23
+ workerUrl?: string;
24
+ cache?: boolean;
25
+ maxArchiveSize?: number;
26
+ maxEntryPreviewSize?: number;
27
+ }
28
+ export interface ViewerRuntimeOptions {
29
+ watermark?: boolean | ViewerWatermarkOptions;
30
+ toolbar?: boolean | ViewerToolbarOptions;
31
+ archive?: ViewerArchiveOptions;
32
+ }
3
33
  export interface ViewerFrameOptions {
4
34
  /**
5
35
  * 私有化部署后的 Vue 基线预览器页面地址。
@@ -31,6 +61,10 @@ export interface ViewerFrameOptions {
31
61
  * 预留给后续 Vue 基线页面扩展的查询参数。
32
62
  */
33
63
  params?: Record<string, ViewerFrameParamValue>;
64
+ /**
65
+ * 透传给 Vue 基线预览器的运行时选项,例如水印、工具栏和压缩包缓存限制。
66
+ */
67
+ options?: ViewerRuntimeOptions;
34
68
  }
35
69
  export interface CreateViewerFrameOptions extends ViewerFrameOptions {
36
70
  autoPostFile?: boolean;
package/dist/index.js CHANGED
@@ -33,6 +33,13 @@ const appendSearchParam = (target, key, value) => {
33
33
  }
34
34
  target.searchParams.set(key, String(value));
35
35
  };
36
+ const appendJsonSearchParam = (target, key, value) => {
37
+ if (value === undefined || value === null) {
38
+ target.searchParams.delete(key);
39
+ return;
40
+ }
41
+ target.searchParams.set(key, JSON.stringify(value));
42
+ };
36
43
  export const getCurrentOrigin = () => {
37
44
  return canUseDom() ? window.location.origin : '';
38
45
  };
@@ -62,6 +69,7 @@ export const buildViewerSrc = (options = {}) => {
62
69
  Object.entries(options.params || {}).forEach(([key, value]) => {
63
70
  appendSearchParam(src, key, value);
64
71
  });
72
+ appendJsonSearchParam(src, 'options', options.options);
65
73
  if (options.file) {
66
74
  appendSearchParam(src, 'url', undefined);
67
75
  appendSearchParam(src, 'name', getSourceFilename(options));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flyfish-group/file-viewer-web",
3
- "version": "1.0.10",
3
+ "version": "1.0.12",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Private-deploy pure web component for Flyfish Viewer",
@@ -0,0 +1 @@
1
+ import{$ as e,C as t,Ct as n,E as r,Ft as i,H as a,K as o,U as s,at as c,et as l,f as u,l as d,ot as f,p,rt as m,st as h,u as g,w as _,wt as v}from"./three.module-DQeeIQFF.js";import{t as y}from"./fflate.module-DmN2iWjn.js";var b=v,x=class extends o{constructor(e){super(e),this.availableExtensions=[]}load(e,n,r,i){let a=this,o=new t(a.manager);o.setPath(a.path),o.setResponseType(`arraybuffer`),o.setRequestHeader(a.requestHeader),o.setWithCredentials(a.withCredentials),o.load(e,function(t){try{n(a.parse(t))}catch(t){i?i(t):console.error(t),a.manager.itemError(e)}},r,i)}parse(t){let v=this,x=new i(this.manager);function S(e){let t=null,n=null,r,i,a=[],o=[],s,c={},l={},u={},d=new TextDecoder;try{t=y(new Uint8Array(e))}catch(e){if(e instanceof ReferenceError)return console.error(`THREE.3MFLoader: fflate missing and file is compressed.`),null}let f=null;for(n in t)n.match(/\_rels\/.rels$/)?r=n:n.match(/3D\/_rels\/.*\.model\.rels$/)?i=n:n.match(/^3D\/[^\/]*\.model$/)?f=n:n.match(/^3D\/.*\/.*\.model$/)?a.push(n):n.match(/^3D\/Textures?\/.*/)&&o.push(n);if(a.push(f),r===void 0)throw Error("THREE.ThreeMFLoader: Cannot find relationship file `rels` in 3MF archive.");let p=t[r],m=C(d.decode(p));if(i){let e=t[i];s=C(d.decode(e))}for(let e=0;e<a.length;e++){let n=a[e],r=t[n],i=d.decode(r),o=new DOMParser().parseFromString(i,`application/xml`);o.documentElement.nodeName.toLowerCase()!==`model`&&console.error(`THREE.3MFLoader: Error loading 3MF - no 3MF document found: `,n);let s=o.querySelector(`model`),l={};for(let e=0;e<s.attributes.length;e++){let t=s.attributes[e];t.name.match(/^xmlns:(.+)$/)&&(l[t.value]=RegExp.$1)}let u=R(s);u.xml=s,0<Object.keys(l).length&&(u.extensions=l),c[n]=u}for(let e=0;e<o.length;e++){let n=o[e];u[n]=t[n].buffer}return{rels:m,modelRels:s,model:c,printTicket:l,texture:u}}function C(e){let t=[],n=new DOMParser().parseFromString(e,`application/xml`).querySelectorAll(`Relationship`);for(let e=0;e<n.length;e++){let r=n[e],i={target:r.getAttribute(`Target`),id:r.getAttribute(`Id`),type:r.getAttribute(`Type`)};t.push(i)}return t}function w(e){let t={};for(let n=0;n<e.length;n++){let r=e[n],i=r.getAttribute(`name`);0<=[`Title`,`Designer`,`Description`,`Copyright`,`LicenseTerms`,`Rating`,`CreationDate`,`ModificationDate`].indexOf(i)&&(t[i]=r.textContent)}return t}function T(e){let t={id:e.getAttribute(`id`),basematerials:[]},n=e.querySelectorAll(`base`);for(let e=0;e<n.length;e++){let r=n[e],i=A(r);i.index=e,t.basematerials.push(i)}return t}function E(e){return{id:e.getAttribute(`id`),path:e.getAttribute(`path`),contenttype:e.getAttribute(`contenttype`),tilestyleu:e.getAttribute(`tilestyleu`),tilestylev:e.getAttribute(`tilestylev`),filter:e.getAttribute(`filter`)}}function ee(e){let t={id:e.getAttribute(`id`),texid:e.getAttribute(`texid`),displaypropertiesid:e.getAttribute(`displaypropertiesid`)},n=e.querySelectorAll(`tex2coord`),r=[];for(let e=0;e<n.length;e++){let t=n[e],i=t.getAttribute(`u`),a=t.getAttribute(`v`);r.push(parseFloat(i),parseFloat(a))}return t.uvs=new Float32Array(r),t}function te(e){let t={id:e.getAttribute(`id`),displaypropertiesid:e.getAttribute(`displaypropertiesid`)},n=e.querySelectorAll(`color`),r=[],i=new p;for(let e=0;e<n.length;e++){let t=n[e].getAttribute(`color`);i.setStyle(t.substring(0,7),b),r.push(i.r,i.g,i.b)}return t.colors=new Float32Array(r),t}function D(e){let t=e.children,n={};for(let e=0;e<t.length;e++){let r={type:t[e].nodeName.substring(2)};for(let n=0;n<t[e].attributes.length;n++){let i=t[e].attributes[n];i.specified&&(r[i.name]=i.value)}n[t[e].getAttribute(`identifier`)]=r}return n}function O(e){let t={id:e.getAttribute(`id`),displayname:e.getAttribute(`displayname`)},n=e.children,r={};for(let e=0;e<n.length;e++){let t=n[e];if(t.nodeName===`i:in`||t.nodeName===`i:out`)r[t.nodeName===`i:in`?`inputs`:`outputs`]=D(t);else{let e=t.children,n={op:t.nodeName.substring(2),identifier:t.getAttribute(`identifier`)};for(let t=0;t<e.length;t++)n[e[t].nodeName.substring(2)]=D(e[t]);r[n.identifier]=n}}return t.operations=r,t}function k(e){let t={id:e.getAttribute(`id`)},n=e.querySelectorAll(`pbmetallic`),r=[];for(let e=0;e<n.length;e++){let t=n[e];r.push({name:t.getAttribute(`name`),metallicness:parseFloat(t.getAttribute(`metallicness`)),roughness:parseFloat(t.getAttribute(`roughness`))})}return t.data=r,t}function A(e){let t={};return t.name=e.getAttribute(`name`),t.displaycolor=e.getAttribute(`displaycolor`),t.displaypropertiesid=e.getAttribute(`displaypropertiesid`),t}function j(e){let t={},n=[],r=e.querySelectorAll(`vertices vertex`);for(let e=0;e<r.length;e++){let t=r[e],i=t.getAttribute(`x`),a=t.getAttribute(`y`),o=t.getAttribute(`z`);n.push(parseFloat(i),parseFloat(a),parseFloat(o))}t.vertices=new Float32Array(n);let i=[],a=[],o=e.querySelectorAll(`triangles triangle`);for(let e=0;e<o.length;e++){let t=o[e],n=t.getAttribute(`v1`),r=t.getAttribute(`v2`),s=t.getAttribute(`v3`),c=t.getAttribute(`p1`),l=t.getAttribute(`p2`),u=t.getAttribute(`p3`),d=t.getAttribute(`pid`),f={};f.v1=parseInt(n,10),f.v2=parseInt(r,10),f.v3=parseInt(s,10),a.push(f.v1,f.v2,f.v3),c&&(f.p1=parseInt(c,10)),l&&(f.p2=parseInt(l,10)),u&&(f.p3=parseInt(u,10)),d&&(f.pid=d),0<Object.keys(f).length&&i.push(f)}return t.triangleProperties=i,t.triangles=new Uint32Array(a),t}function M(e){let t=[],n=e.querySelectorAll(`component`);for(let e=0;e<n.length;e++){let r=n[e],i=N(r);t.push(i)}return t}function N(e){let t={};t.objectId=e.getAttribute(`objectid`);let n=e.getAttribute(`transform`);return n&&(t.transform=P(n)),t}function P(t){let n=[];t.split(` `).forEach(function(e){n.push(parseFloat(e))});let r=new e;return r.set(n[0],n[3],n[6],n[9],n[1],n[4],n[7],n[10],n[2],n[5],n[8],n[11],0,0,0,1),r}function F(e){let t={type:e.getAttribute(`type`)},n=e.getAttribute(`id`);n&&(t.id=n);let r=e.getAttribute(`pid`);r&&(t.pid=r);let i=e.getAttribute(`pindex`);i&&(t.pindex=i);let a=e.getAttribute(`thumbnail`);a&&(t.thumbnail=a);let o=e.getAttribute(`partnumber`);o&&(t.partnumber=o);let s=e.getAttribute(`name`);s&&(t.name=s);let c=e.querySelector(`mesh`);c&&(t.mesh=j(c));let l=e.querySelector(`components`);return l&&(t.components=M(l)),t}function I(e){let t={};t.basematerials={};let n=e.querySelectorAll(`basematerials`);for(let e=0;e<n.length;e++){let r=n[e],i=T(r);t.basematerials[i.id]=i}t.texture2d={};let r=e.querySelectorAll(`texture2d`);for(let e=0;e<r.length;e++){let n=r[e],i=E(n);t.texture2d[i.id]=i}t.colorgroup={};let i=e.querySelectorAll(`colorgroup`);for(let e=0;e<i.length;e++){let n=i[e],r=te(n);t.colorgroup[r.id]=r}let a=e.querySelectorAll(`implicitfunction`);a.length>0&&(t.implicitfunction={});for(let e=0;e<a.length;e++){let n=a[e],r=O(n);t.implicitfunction[r.id]=r}t.pbmetallicdisplayproperties={};let o=e.querySelectorAll(`pbmetallicdisplayproperties`);for(let e=0;e<o.length;e++){let n=o[e],r=k(n);t.pbmetallicdisplayproperties[r.id]=r}t.texture2dgroup={};let s=e.querySelectorAll(`texture2dgroup`);for(let e=0;e<s.length;e++){let n=s[e],r=ee(n);t.texture2dgroup[r.id]=r}t.object={};let c=e.querySelectorAll(`object`);for(let e=0;e<c.length;e++){let n=c[e],r=F(n);t.object[r.id]=r}return t}function L(e){let t=[],n=e.querySelectorAll(`item`);for(let e=0;e<n.length;e++){let r=n[e],i={objectId:r.getAttribute(`objectid`)},a=r.getAttribute(`transform`);a&&(i.transform=P(a)),t.push(i)}return t}function R(e){let t={unit:e.getAttribute(`unit`)||`millimeter`},n=e.querySelectorAll(`metadata`);n&&(t.metadata=w(n));let r=e.querySelector(`resources`);r&&(t.resources=I(r));let i=e.querySelector(`build`);return i&&(t.build=L(i)),t}function z(e,t,r,i){let o=e.texid,c=r.resources.texture2d[o];if(c){let e=i[c.path],t=c.contenttype,r=new Blob([e],{type:t}),o=URL.createObjectURL(r),l=x.load(o,function(){URL.revokeObjectURL(o)});switch(l.colorSpace=b,c.tilestyleu){case`wrap`:l.wrapS=n;break;case`mirror`:l.wrapS=f;break;case`none`:case`clamp`:l.wrapS=u;break;default:l.wrapS=n}switch(c.tilestylev){case`wrap`:l.wrapT=n;break;case`mirror`:l.wrapT=f;break;case`none`:case`clamp`:l.wrapT=u;break;default:l.wrapT=n}switch(c.filter){case`auto`:l.magFilter=a,l.minFilter=s;break;case`linear`:l.magFilter=a,l.minFilter=a,l.generateMipmaps=!1;break;case`nearest`:l.magFilter=h,l.minFilter=h,l.generateMipmaps=!1;break;default:l.magFilter=a,l.minFilter=s}return l}else return null}function B(e,t,n,r,i,a,o){let s=o.pindex,c={};for(let e=0,n=t.length;e<n;e++){let n=t[e],r=n.p1===void 0?s:n.p1;c[r]===void 0&&(c[r]=[]),c[r].push(n)}let u=Object.keys(c),d=[];for(let t=0,s=u.length;t<s;t++){let s=u[t],f=c[s],p=e.basematerials[s],m=Y(p,r,i,a,o,X),h=new g,v=[],y=n.vertices;for(let e=0,t=f.length;e<t;e++){let t=f[e];v.push(y[t.v1*3+0]),v.push(y[t.v1*3+1]),v.push(y[t.v1*3+2]),v.push(y[t.v2*3+0]),v.push(y[t.v2*3+1]),v.push(y[t.v2*3+2]),v.push(y[t.v3*3+0]),v.push(y[t.v3*3+1]),v.push(y[t.v3*3+2])}h.setAttribute(`position`,new _(v,3));let b=new l(h,m);d.push(b)}return d}function V(e,t,n,r,i,a,o){let s=new g,c=[],u=[],d=n.vertices,f=e.uvs;for(let e=0,n=t.length;e<n;e++){let n=t[e];c.push(d[n.v1*3+0]),c.push(d[n.v1*3+1]),c.push(d[n.v1*3+2]),c.push(d[n.v2*3+0]),c.push(d[n.v2*3+1]),c.push(d[n.v2*3+2]),c.push(d[n.v3*3+0]),c.push(d[n.v3*3+1]),c.push(d[n.v3*3+2]),u.push(f[n.p1*2+0]),u.push(f[n.p1*2+1]),u.push(f[n.p2*2+0]),u.push(f[n.p2*2+1]),u.push(f[n.p3*2+0]),u.push(f[n.p3*2+1])}return s.setAttribute(`position`,new _(c,3)),s.setAttribute(`uv`,new _(u,2)),new l(s,new m({map:Y(e,r,i,a,o,z),flatShading:!0}))}function H(e,t,n,r){let i=new g,a=[],o=[],s=n.vertices,c=e.colors;for(let e=0,n=t.length;e<n;e++){let n=t[e],i=n.v1,l=n.v2,u=n.v3;a.push(s[i*3+0]),a.push(s[i*3+1]),a.push(s[i*3+2]),a.push(s[l*3+0]),a.push(s[l*3+1]),a.push(s[l*3+2]),a.push(s[u*3+0]),a.push(s[u*3+1]),a.push(s[u*3+2]);let d=n.p1===void 0?r.pindex:n.p1,f=n.p2===void 0?d:n.p2,p=n.p3===void 0?d:n.p3;o.push(c[d*3+0]),o.push(c[d*3+1]),o.push(c[d*3+2]),o.push(c[f*3+0]),o.push(c[f*3+1]),o.push(c[f*3+2]),o.push(c[p*3+0]),o.push(c[p*3+1]),o.push(c[p*3+2])}return i.setAttribute(`position`,new _(a,3)),i.setAttribute(`color`,new _(o,3)),new l(i,new m({vertexColors:!0,flatShading:!0}))}function U(e){let t=new g;return t.setIndex(new d(e.triangles,1)),t.setAttribute(`position`,new d(e.vertices,3)),new l(t,new m({name:o.DEFAULT_MATERIAL_NAME,color:16777215,flatShading:!0}))}function W(e,t,n,r,i,a){let o=Object.keys(e),s=[];for(let c=0,l=o.length;c<l;c++){let l=o[c],u=e[l];switch(G(l,r)){case`material`:let e=r.resources.basematerials[l],o=B(e,u,t,n,r,i,a);for(let e=0,t=o.length;e<t;e++)s.push(o[e]);break;case`texture`:let c=r.resources.texture2dgroup[l];s.push(V(c,u,t,n,r,i,a));break;case`vertexColors`:let d=r.resources.colorgroup[l];s.push(H(d,u,t,a));break;case`default`:s.push(U(t));break;default:console.error(`THREE.3MFLoader: Unsupported resource type.`)}}if(a.name)for(let e=0;e<s.length;e++)s[e].name=a.name;return s}function G(e,t){if(t.resources.texture2dgroup[e]!==void 0)return`texture`;if(t.resources.basematerials[e]!==void 0)return`material`;if(t.resources.colorgroup[e]!==void 0)return`vertexColors`;if(e===`default`)return`default`}function K(e,t){let n={},r=e.triangleProperties,i=t.pid;for(let e=0,t=r.length;e<t;e++){let t=r[e],a=t.pid===void 0?i:t.pid;a===void 0&&(a=`default`),n[a]===void 0&&(n[a]=[]),n[a].push(t)}return n}function q(e,t,n,i,a){let o=new r,s=W(K(e,a),e,t,n,i,a);for(let e=0,t=s.length;e<t;e++)o.add(s[e]);return o}function J(e,t,n){if(!e)return;let r=[],i=Object.keys(e);for(let e=0;e<i.length;e++){let t=i[e];for(let e=0;e<v.availableExtensions.length;e++){let n=v.availableExtensions[e];n.ns===t&&r.push(n)}}for(let i=0;i<r.length;i++){let a=r[i];a.apply(n,e[a.ns],t)}}function Y(e,t,n,r,i,a){return e.build===void 0&&(e.build=a(e,t,n,r,i)),e.build}function X(e,t,n){let r,i=e.displaypropertiesid,a=n.resources.pbmetallicdisplayproperties;if(i!==null&&a[i]!==void 0){let t=a[i].data[e.index];r=new c({flatShading:!0,roughness:t.roughness,metalness:t.metallicness})}else r=new m({flatShading:!0});r.name=e.name;let o=e.displaycolor,s=o.substring(0,7);return r.color.setStyle(s,b),o.length===9&&(r.opacity=parseInt(o.charAt(7)+o.charAt(8),16)/255),r}function Z(e,t,n,i){let a=new r;for(let r=0;r<e.length;r++){let o=e[r],s=t[o.objectId];s===void 0&&(Q(o.objectId,t,n,i),s=t[o.objectId]);let c=s.clone(),l=o.transform;l&&c.applyMatrix4(l),a.add(c)}return a}function Q(e,t,n,r){let i=n.resources.object[e];if(i.mesh){let e=i.mesh,a=n.extensions,o=n.xml;J(a,e,o),t[i.id]=Y(e,t,n,r,i,q)}else{let e=i.components;t[i.id]=Y(e,t,n,r,i,Z)}i.name&&(t[i.id].name=i.name),n.resources.implicitfunction&&console.warn(`THREE.ThreeMFLoader: Implicit Functions are implemented in data-only.`,n.resources.implicitfunction)}function ne(e){let t=e.model,n=e.modelRels,r={},i=Object.keys(t),a={};if(n)for(let t=0,r=n.length;t<r;t++){let r=n[t],i=r.target.substring(1);e.texture[i]&&(a[r.target]=e.texture[i])}for(let e=0;e<i.length;e++){let n=t[i[e]],o=Object.keys(n.resources.object);for(let e=0;e<o.length;e++){let t=o[e];Q(t,r,n,a)}}return r}function re(e){for(let t=0;t<e.length;t++){let n=e[t];if(n.target.split(`.`).pop().toLowerCase()===`model`)return n}}function ie(e,t){let n=new r,i=re(t.rels),a=t.model[i.target.substring(1)].build;for(let t=0;t<a.length;t++){let r=a[t],i=e[r.objectId].clone(),o=r.transform;o&&i.applyMatrix4(o),n.add(i)}return n}let $=S(t);return ie(ne($),$)}addExtension(e){this.availableExtensions.push(e)}};export{x as ThreeMFLoader};
@@ -0,0 +1 @@
1
+ import{C as e,E as t,K as n,et as r,p as i,rt as a,u as o,w as s}from"./three.module-DQeeIQFF.js";import{t as c}from"./fflate.module-DmN2iWjn.js";var l=class extends n{constructor(e){super(e)}load(t,n,r,i){let a=this,o=new e(a.manager);o.setPath(a.path),o.setResponseType(`arraybuffer`),o.setRequestHeader(a.requestHeader),o.setWithCredentials(a.withCredentials),o.load(t,function(e){try{n(a.parse(e))}catch(e){i?i(e):console.error(e),a.manager.itemError(t)}},r,i)}parse(e){function l(e){let t=new DataView(e);if(String.fromCharCode(t.getUint8(0),t.getUint8(1))===`PK`){let n=null,r=null;console.log(`THREE.AMFLoader: Loading Zip`);try{n=c(new Uint8Array(e))}catch(e){if(e instanceof ReferenceError)return console.log(`THREE.AMFLoader: fflate missing and file is compressed.`),null}for(r in n)if(r.toLowerCase().slice(-4)===`.amf`)break;console.log(`THREE.AMFLoader: Trying to load file asset: `+r),t=new DataView(n[r].buffer)}let n=new TextDecoder().decode(t),r=new DOMParser().parseFromString(n,`application/xml`);return r.documentElement.nodeName.toLowerCase()===`amf`?r:(console.log(`THREE.AMFLoader: Error loading AMF - no AMF document found.`),null)}function u(e){let t=1,n=`millimeter`;e.documentElement.attributes.unit!==void 0&&(n=e.documentElement.attributes.unit.value.toLowerCase());let r={millimeter:1,inch:25.4,feet:304.8,meter:1e3,micron:.001};return r[n]!==void 0&&(t=r[n]),console.log(`THREE.AMFLoader: Unit scale: `+t),t}function d(e){let t=`AMF Material`,n=e.attributes.id.textContent,r={r:1,g:1,b:1,a:1},o=null;for(let n=0;n<e.childNodes.length;n++){let i=e.childNodes[n];i.nodeName===`metadata`&&i.attributes.type!==void 0?i.attributes.type.value===`name`&&(t=i.textContent):i.nodeName===`color`&&(r=f(i))}return o=new a({flatShading:!0,color:new i(r.r,r.g,r.b),name:t}),r.a!==1&&(o.transparent=!0,o.opacity=r.a),{id:n,material:o}}function f(e){let t={r:1,g:1,b:1,a:1};for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];r.nodeName===`r`?t.r=r.textContent:r.nodeName===`g`?t.g=r.textContent:r.nodeName===`b`?t.b=r.textContent:r.nodeName===`a`&&(t.a=r.textContent)}return t}function p(e){let t={name:``,triangles:[],materialId:null},n=e.firstElementChild;for(e.attributes.materialid!==void 0&&(t.materialId=e.attributes.materialid.nodeValue);n;){if(n.nodeName===`metadata`)n.attributes.type!==void 0&&n.attributes.type.value===`name`&&(t.name=n.textContent);else if(n.nodeName===`triangle`){let e=n.getElementsByTagName(`v1`)[0].textContent,r=n.getElementsByTagName(`v2`)[0].textContent,i=n.getElementsByTagName(`v3`)[0].textContent;t.triangles.push(e,r,i)}n=n.nextElementSibling}return t}function m(e){let t=[],n=[],r=e.firstElementChild;for(;r;){if(r.nodeName===`vertex`){let e=r.firstElementChild;for(;e;){if(e.nodeName===`coordinates`){let n=e.getElementsByTagName(`x`)[0].textContent,r=e.getElementsByTagName(`y`)[0].textContent,i=e.getElementsByTagName(`z`)[0].textContent;t.push(n,r,i)}else if(e.nodeName===`normal`){let t=e.getElementsByTagName(`nx`)[0].textContent,r=e.getElementsByTagName(`ny`)[0].textContent,i=e.getElementsByTagName(`nz`)[0].textContent;n.push(t,r,i)}e=e.nextElementSibling}}r=r.nextElementSibling}return{vertices:t,normals:n}}function h(e){let t=e.attributes.id.textContent,n={name:`amfobject`,meshes:[]},r=null,i=e.firstElementChild;for(;i;){if(i.nodeName===`metadata`)i.attributes.type!==void 0&&i.attributes.type.value===`name`&&(n.name=i.textContent);else if(i.nodeName===`color`)r=f(i);else if(i.nodeName===`mesh`){let e=i.firstElementChild,t={vertices:[],normals:[],volumes:[],color:r};for(;e;){if(e.nodeName===`vertices`){let n=m(e);t.normals=t.normals.concat(n.normals),t.vertices=t.vertices.concat(n.vertices)}else e.nodeName===`volume`&&t.volumes.push(p(e));e=e.nextElementSibling}n.meshes.push(t)}i=i.nextElementSibling}return{id:t,obj:n}}let g=l(e),_=``,v=``,y=u(g),b={},x={},S=g.documentElement.childNodes,C,w;for(C=0;C<S.length;C++){let e=S[C];if(e.nodeName===`metadata`)e.attributes.type!==void 0&&(e.attributes.type.value===`name`?_=e.textContent:e.attributes.type.value===`author`&&(v=e.textContent));else if(e.nodeName===`material`){let t=d(e);b[t.id]=t.material}else if(e.nodeName===`object`){let t=h(e);x[t.id]=t.obj}}let T=new t,E=new a({name:n.DEFAULT_MATERIAL_NAME,color:11184895,flatShading:!0});T.name=_,T.userData.author=v,T.userData.loader=`AMF`;for(let e in x){let n=x[e],a=n.meshes,c=new t;for(c.name=n.name||``,C=0;C<a.length;C++){let e=E,t=a[C],n=new s(t.vertices,3),l=null;if(t.normals.length&&(l=new s(t.normals,3)),t.color){let n=t.color;e=E.clone(),e.color=new i(n.r,n.g,n.b),n.a!==1&&(e.transparent=!0,e.opacity=n.a)}let u=t.volumes;for(w=0;w<u.length;w++){let t=u[w],i=new o,a=e;i.setIndex(t.triangles),i.setAttribute(`position`,n.clone()),l&&i.setAttribute(`normal`,l.clone()),b[t.materialId]!==void 0&&(a=b[t.materialId]),i.scale(y,y,y),c.add(new r(i,a.clone()))}}T.add(c)}return T}};export{l as AMFLoader};
@@ -0,0 +1 @@
1
+ .archive-viewer[data-v-3a5c7aee]{color:#172033;background:#edf2f7;grid-template-columns:minmax(280px,34%) minmax(0,1fr);height:100%;display:grid;position:relative}.archive-sidebar[data-v-3a5c7aee]{background:#ffffffb8;border-right:1px solid #17203314;flex-direction:column;gap:12px;min-width:0;min-height:0;padding:16px;display:flex}.archive-head span[data-v-3a5c7aee],.archive-preview-toolbar span[data-v-3a5c7aee]{color:#6c7c90;letter-spacing:0;font-size:12px;font-weight:800}.archive-head strong[data-v-3a5c7aee],.archive-preview-toolbar strong[data-v-3a5c7aee]{margin-top:4px;font-size:18px;line-height:1.25;display:block}.archive-head p[data-v-3a5c7aee]{color:#69798b;margin:8px 0 0;font-size:13px}.archive-warning[data-v-3a5c7aee],.archive-error[data-v-3a5c7aee]{color:#8a4b00;background:#fff7e8;border-radius:12px;padding:10px 12px;font-size:13px;line-height:1.5}.archive-search[data-v-3a5c7aee]{width:100%;height:42px;font:inherit;border:1px solid #1720331a;border-radius:12px;outline:none;padding:0 12px}.archive-list[data-v-3a5c7aee]{flex-direction:column;flex:1;gap:7px;min-height:0;padding-right:4px;display:flex;overflow:auto}.archive-entry[data-v-3a5c7aee]{width:100%;min-height:58px;padding:8px 10px 8px calc(10px + var(--entry-depth,0) * 10px);color:inherit;text-align:left;cursor:pointer;background:#ffffffdb;border:1px solid #17203312;border-radius:12px;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.archive-entry[data-v-3a5c7aee]:hover,.archive-entry.active[data-v-3a5c7aee]{border-color:#21815f47;box-shadow:0 10px 22px #17203314}.entry-ext[data-v-3a5c7aee]{color:#1d7a56;text-transform:uppercase;background:#21815f1f;border-radius:10px;justify-content:center;align-items:center;height:34px;font-size:11px;font-weight:900;display:inline-flex}.entry-copy[data-v-3a5c7aee]{min-width:0}.entry-copy strong[data-v-3a5c7aee],.entry-copy em[data-v-3a5c7aee]{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.entry-copy em[data-v-3a5c7aee],.archive-entry small[data-v-3a5c7aee]{color:#718096;font-size:12px;font-style:normal}.archive-preview[data-v-3a5c7aee]{flex-direction:column;min-width:0;min-height:0;display:flex}.archive-preview-toolbar[data-v-3a5c7aee]{background:#ffffffc2;border-bottom:1px solid #17203314;justify-content:space-between;align-items:center;gap:14px;min-height:64px;padding:12px 16px;display:flex}.archive-preview-toolbar button[data-v-3a5c7aee]{color:#fff;height:34px;font:inherit;cursor:pointer;background:#1f7a58;border:0;border-radius:10px;padding:0 12px;font-size:13px;font-weight:800}.archive-nested-target[data-v-3a5c7aee]{flex:1;min-height:0;position:relative;overflow:auto}.archive-empty[data-v-3a5c7aee]{text-align:center;color:#64748b;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:28px;display:flex}.archive-empty strong[data-v-3a5c7aee]{color:#172033;font-size:18px}.archive-state[data-v-3a5c7aee]{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f1f5f9d1;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.archive-state>div[data-v-3a5c7aee]{background:#fff;border-radius:16px;align-items:center;gap:14px;width:min(92%,430px);padding:18px;display:flex;box-shadow:0 18px 42px #0f172a24}.archive-state p[data-v-3a5c7aee]{color:#64748b;margin:4px 0 0}.archive-spinner[data-v-3a5c7aee]{border:3px solid #1f7a5829;border-top-color:#1f7a58;border-radius:999px;flex-shrink:0;width:34px;height:34px;animation:.9s linear infinite archive-spin-3a5c7aee}.archive-error[data-v-3a5c7aee]{width:min(460px,100% - 36px);position:absolute;bottom:18px;right:18px;box-shadow:0 16px 36px #17203324}@keyframes archive-spin-3a5c7aee{to{transform:rotate(360deg)}}@media (width<=860px){.archive-viewer[data-v-3a5c7aee]{grid-template-rows:minmax(220px,38%) minmax(0,1fr);grid-template-columns:1fr}.archive-sidebar[data-v-3a5c7aee]{border-bottom:1px solid #17203314;border-right:0}}.archive-nested-content{width:100%;height:100%;min-height:420px}
@@ -0,0 +1 @@
1
+ import{A as e,B as t,C as n,D as r,E as i,F as a,I as o,L as s,P as c,R as ee,T as te,a as l,g as u,h as d,i as ne,k as f,l as p,m,o as h,p as re,t as g,v as _,y as v,z as ie}from"./index-kFSstoL8.js";import{t as ae}from"./nestedRender-agTARb8M.js";var y=`flyfish-file-viewer-cache`,b=`archiveEntries`,x=1,S=24*1024*1024,C=96*1024*1024,w=null,T=()=>typeof indexedDB<`u`,E=()=>T()?w||(w=new Promise((e,t)=>{let n=indexedDB.open(y,x);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(b)||e.createObjectStore(b,{keyPath:`key`}).createIndex(`updatedAt`,`updatedAt`)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)}),w):Promise.reject(Error(`IndexedDB 不可用`)),D=async(e,t)=>{let n=await E();return new Promise((r,i)=>{let a=n.transaction(b,e),o=t(a.objectStore(b));o.onsuccess=()=>r(o.result),o.onerror=()=>i(o.error),a.onerror=()=>i(a.error)})},O=async e=>{try{return await D(`readonly`,t=>t.get(e))||null}catch{return null}},k=async()=>{try{let e=await E();await new Promise((t,n)=>{let r=e.transaction(b,`readwrite`),i=r.objectStore(b),a=i.index(`updatedAt`),o=[],s=0;a.openCursor().onsuccess=e=>{let t=e.target.result;if(!t){for(;s>C&&o.length;){let e=o.shift();e&&(s-=e.size,i.delete(e.key))}return}let n=t.value;s+=n.size||0,o.push({key:n.key,size:n.size||0}),t.continue()},r.oncomplete=()=>t(),r.onerror=()=>n(r.error)})}catch{}},A=async e=>{if(!(e.size>S))try{await D(`readwrite`,t=>t.put({...e,updatedAt:Date.now()})),await k()}catch{}},j={class:`archive-viewer`},M={class:`archive-sidebar`},N={class:`archive-head`},P={key:0,class:`archive-warning`},F={class:`archive-list`,role:`list`},I=[`onClick`],L={class:`entry-ext`},R={class:`entry-copy`},z={class:`archive-preview`},B={class:`archive-preview-toolbar`},V={key:0,class:`archive-empty`},H={key:0,class:`archive-state`},U={key:1,class:`archive-error`},oe=320*1024*1024,W=64*1024*1024,G=5e3,K=p(n({__name:`ArchiveViewer`,props:{data:{},filename:{},options:{}},setup(n){let p=n,y=o(null),b=a([]),x=a(null),S=a(!1),C=a(`正在读取压缩包目录...`),w=a(``),T=a(``),E=a(null),D=a(null),k,K=[],q=d(()=>p.options?.maxArchiveSize||oe),J=d(()=>p.options?.maxEntryPreviewSize||W),Y=d(()=>p.options?.cache!==!1),se=d(()=>({archive:p.options})),X=d(()=>{let e=b.value.reduce((e,t)=>e+t.size,0),t=b.value.filter(e=>e.previewable).length;return{count:b.value.length,totalSize:e,previewableCount:t}}),ce=d(()=>{let e=T.value.trim().toLowerCase();return(e?b.value.filter(t=>t.path.toLowerCase().includes(e)):b.value).slice(0,G)}),le=async()=>{if(p.options?.workerUrl)return p.options.workerUrl;let e=new URL(`/vendor/libarchive/worker-bundle.js`,window.location.href).toString();try{if((await fetch(e,{method:`HEAD`})).ok)return e}catch{}return(await g(()=>import(`./worker-bundle-D-AQnxpp.js`),[],import.meta.url)).default},Z=()=>{k?.unmount?.(),k=void 0;let e=D.value;if(e)for(;e.firstChild;)e.removeChild(e.firstChild)},ue=async()=>{await y.value?.close?.(),y.value=null},Q=async()=>{if(p.data.byteLength>q.value){w.value=`压缩包体积 ${h(p.data.byteLength)} 超过安全上限 ${h(q.value)},请下载后在本地解压。`;return}S.value=!0,C.value=`正在初始化压缩包解析 Worker...`,w.value=``;try{let[{Archive:e},t]=await Promise.all([g(()=>import(`./libarchive-BWmjBS7s.js`),[],import.meta.url),le()]);e.init({workerUrl:t}),C.value=`正在读取压缩包目录...`;let n=new File([p.data],p.filename||`archive.bin`),r=await e.open(n);y.value=r,E.value=await r.hasEncryptedData().catch(()=>null),b.value=l(await r.getFilesObject()).sort((e,t)=>e.path.localeCompare(t.path))}catch(e){console.error(e),w.value=e instanceof Error?e.message:String(e)}finally{S.value=!1}},de=async(e,t)=>{await te();let n=D.value;if(!n)return;Z();let r=document.createElement(`div`);r.className=`archive-nested-content`,n.appendChild(r),k=await ae(t,e.extension,r,{filename:e.name,options:se.value})},$=async e=>{let t=ne(p.filename,p.data.byteLength,e);if(Y.value){let e=await O(t);if(e)return e.buffer}let n=await(await e.compressedFile.extract()).arrayBuffer();return Y.value&&await A({key:t,filename:e.name,size:n.byteLength,updatedAt:Date.now(),buffer:n}),n},fe=async e=>{if(x.value=e,e.size>J.value){w.value=`压缩包内文件 ${e.name} 体积 ${h(e.size)} 超过预览上限 ${h(J.value)}。`;return}S.value=!0,C.value=`正在按需解压 ${e.name}...`,w.value=``;try{let t=await $(e);C.value=`正在渲染 ${e.name}...`,await de(e,t)}catch(e){console.error(e),w.value=e instanceof Error?e.message:String(e)}finally{S.value=!1}},pe=async e=>{S.value=!0,C.value=`正在导出 ${e.name}...`;try{let t=await $(e),n=URL.createObjectURL(new Blob([t]));K.push(n);let r=document.createElement(`a`);r.href=n,r.download=e.name,document.body.appendChild(r),r.click(),r.remove()}finally{S.value=!1}};return r(()=>{Q()}),i(()=>{Z(),ue(),K.forEach(e=>URL.revokeObjectURL(e))}),(r,i)=>(f(),v(`section`,j,[u(`aside`,M,[u(`div`,N,[i[2]||=u(`span`,null,`ARCHIVE`,-1),u(`strong`,null,t(n.filename),1),u(`p`,null,t(X.value.count)+` 个文件 · `+t(s(h)(X.value.totalSize))+` · `+t(X.value.previewableCount)+` 个可直接预览`,1)]),E.value?(f(),v(`div`,P,`检测到加密内容,当前在线预览不接收密码,建议下载后本地解压。`)):_(``,!0),c(u(`input`,{"onUpdate:modelValue":i[0]||=e=>T.value=e,class:`archive-search`,type:`search`,placeholder:`筛选压缩包内文件`},null,512),[[re,T.value]]),u(`div`,F,[(f(!0),v(m,null,e(ce.value,e=>(f(),v(`button`,{key:e.id,type:`button`,class:ee([`archive-entry`,{active:x.value?.id===e.id}]),style:ie({"--entry-depth":e.depth}),onClick:t=>fe(e)},[u(`span`,L,t(e.extension||`file`),1),u(`span`,R,[u(`strong`,null,t(e.name),1),u(`em`,null,t(e.path),1)]),u(`small`,null,t(s(h)(e.size)),1)],14,I))),128))])]),u(`main`,z,[u(`div`,B,[u(`div`,null,[i[3]||=u(`span`,null,`压缩包内预览`,-1),u(`strong`,null,t(x.value?.name||`请选择一个文件`),1)]),x.value?(f(),v(`button`,{key:0,type:`button`,onClick:i[1]||=e=>pe(x.value)},`下载文件`)):_(``,!0)]),u(`div`,{ref_key:`nestedTarget`,ref:D,class:`archive-nested-target`},[!x.value&&!S.value?(f(),v(`div`,V,[...i[4]||=[u(`strong`,null,`选择左侧文件即可预览`,-1),u(`p`,null,`压缩包只读取目录;文件内容会在点击后按需解压,并在体积允许时缓存到 IndexedDB。`,-1)]])):_(``,!0)],512)]),S.value?(f(),v(`div`,H,[u(`div`,null,[i[5]||=u(`span`,{class:`archive-spinner`},null,-1),u(`strong`,null,t(C.value),1),i[6]||=u(`p`,null,`大文件会在 Worker 中解析,避免阻塞主线程。`,-1)])])):_(``,!0),w.value?(f(),v(`div`,U,[i[7]||=u(`strong`,null,`压缩包预览提示`,-1),u(`p`,null,t(w.value),1)])):_(``,!0)]))}}),[[`__scopeId`,`data-v-3a5c7aee`]]);export{K as default};
@@ -0,0 +1 @@
1
+ import{B as e,C as t,D as n,E as r,F as i,M as a,g as o,h as s,k as c,l,y as u,z as d}from"./index-kFSstoL8.js";var f={class:`audio-viewer`},p={class:`audio-card`},m={class:`audio-copy`},h={class:`audio-kicker`},g={class:`audio-meter`},_={class:`audio-progress`,"aria-hidden":`true`},v=[`src`],y=l(t({__name:`AudioViewer`,props:{data:{},type:{}},setup(t){let l=t,y=i(null),b=i(``),x=i(0),S=i(0),C=i(!1),w={aac:`audio/aac`,flac:`audio/flac`,m4a:`audio/mp4`,mp3:`audio/mpeg`,mpeg:`audio/mpeg`,oga:`audio/ogg`,ogg:`audio/ogg`,opus:`audio/ogg; codecs=opus`,wav:`audio/wav`,weba:`audio/webm`},T=s(()=>l.type.trim().toLowerCase()),E=s(()=>w[T.value]||`audio/*`),D=s(()=>T.value.toUpperCase()||`AUDIO`),O=s(()=>!Number.isFinite(S.value)||S.value<=0?0:Math.min(100,Math.max(0,x.value/S.value*100))),k=e=>{if(!Number.isFinite(e)||e<=0)return`00:00`;let t=Math.floor(e/60),n=Math.floor(e%60);return`${String(t).padStart(2,`0`)}:${String(n).padStart(2,`0`)}`},A=()=>{b.value&&=(URL.revokeObjectURL(b.value),``)},j=()=>{A(),x.value=0,S.value=0,C.value=!1,b.value=URL.createObjectURL(new Blob([l.data],{type:E.value}))},M=()=>{S.value=y.value?.duration||0,C.value=!0},N=()=>{x.value=y.value?.currentTime||0};return n(j),a(()=>[l.data,l.type],j),r(A),(t,n)=>(c(),u(`div`,f,[o(`section`,p,[n[2]||=o(`div`,{class:`audio-art`},[o(`span`),o(`i`)],-1),o(`div`,m,[o(`span`,h,e(D.value),1),n[0]||=o(`strong`,null,`音频预览`,-1),n[1]||=o(`p`,null,`使用浏览器原生播放器打开,兼容性取决于当前浏览器支持的音频编码。`,-1)]),o(`div`,g,[o(`span`,null,e(k(x.value)),1),o(`div`,_,[o(`i`,{style:d({width:`${O.value}%`})},null,4)]),o(`span`,null,e(C.value?k(S.value):`--:--`),1)]),o(`audio`,{ref_key:`audioRef`,ref:y,class:`audio-control`,src:b.value,controls:``,preload:`metadata`,onLoadedmetadata:M,onTimeupdate:N},` 当前浏览器不支持音频播放。 `,40,v)])]))}}),[[`__scopeId`,`data-v-608bd328`]]);export{y as default};
@@ -0,0 +1 @@
1
+ import{A as e,B as t,C as n,D as r,E as i,F as a,R as o,T as s,g as c,h as l,k as u,l as d,m as f,t as p,v as m,y as h,z as g}from"./index-kFSstoL8.js";var _={class:`cad-viewer`},v={class:`cad-toolbar`},y={class:`cad-tools`},b={class:`cad-zoom`},x={key:0,class:`cad-layers`},S=[`onClick`],C={class:`cad-canvas-wrap`},w={key:0,class:`cad-state`},T={key:1,class:`dwg-preview`},E={class:`dwg-preview-frame`},ee=[`src`],D={key:2,class:`cad-state error`},O=1800,k=d(n({__name:`CadViewer`,props:{data:{},type:{}},setup(n){let d=n,k=a(null),A=a([]),j=a(`pan`),M=a(`loading`),N=a(``),P=a(``),F=a(``),I=a(1),L=null,R=null,z=new TextDecoder(`utf-8`),B=O*O,V={AC1015:`AutoCAD 2000/2000i/2002`,AC1018:`AutoCAD 2004/2005/2006`,AC1021:`AutoCAD 2007/2008/2009`,AC1024:`AutoCAD 2010/2011/2012`,AC1027:`AutoCAD 2013/2014/2015/2016/2017`,AC1032:`AutoCAD 2018/2019/2020/2021/2022/2023/2024`},te=e=>e instanceof Error?e.message:typeof e==`string`?e:JSON.stringify(e),H=()=>{P.value&&=(URL.revokeObjectURL(P.value),``)},ne=e=>Number(Math.min(4,Math.max(.35,e)).toFixed(2)),U=l(()=>({width:`${I.value*100}%`})),W=e=>{I.value=ne(I.value+e)},G=e=>new Promise((t,n)=>{let r=URL.createObjectURL(e),i=new Image;i.onload=()=>{URL.revokeObjectURL(r),t(i)},i.onerror=()=>{URL.revokeObjectURL(r),n(Error(`DWG 预览图加载失败`))},i.src=r}),K=(e,t,n)=>{let r=[0,(t-1)*4,(n-1)*t*4,((n-1)*t+t-1)*4],i=r.reduce((t,n)=>(t.r+=e[n],t.g+=e[n+1],t.b+=e[n+2],t.a+=e[n+3],t),{r:0,g:0,b:0,a:0});return{r:i.r/r.length,g:i.g/r.length,b:i.b/r.length,a:i.a/r.length}},q=(e,t,n)=>{let r=e[t]-n.r,i=e[t+1]-n.g,a=e[t+2]-n.b,o=e[t+3]-n.a;return Math.sqrt(r*r+i*i+a*a+o*o)},J=(e,t,n)=>e[t+3]<=12?!1:q(e,t,n)>28,Y=async e=>{let t=await G(e),n=t.naturalWidth||t.width,r=t.naturalHeight||t.height;if(!n||!r)return{blob:e,cropped:!1};let i=Math.min(1,O/Math.max(n,r),Math.sqrt(B/(n*r))),a=Math.max(1,Math.round(n*i)),o=Math.max(1,Math.round(r*i)),s=document.createElement(`canvas`);s.width=a,s.height=o;let c=s.getContext(`2d`,{willReadFrequently:!0});if(!c)return{blob:e,cropped:!1};c.drawImage(t,0,0,a,o);let l=c.getImageData(0,0,a,o),u=K(l.data,a,o),d=a,f=o,p=-1,m=-1;for(let e=0;e<o;e+=1)for(let t=0;t<a;t+=1){let n=(e*a+t)*4;J(l.data,n,u)&&(d=Math.min(d,t),f=Math.min(f,e),p=Math.max(p,t),m=Math.max(m,e))}if(p<d||m<f)return{blob:e,cropped:!1};let h=p-d+1,g=m-f+1;if(h/a>.94&&g/o>.94)return{blob:e,cropped:!1};let _=Math.max(8,Math.round(Math.max(h,g)*.04)),v=Math.max(0,Math.floor((d-_)/i)),y=Math.max(0,Math.floor((f-_)/i)),b=Math.min(n,Math.ceil((p+_+1)/i)),x=Math.min(r,Math.ceil((m+_+1)/i)),S=b-v,C=x-y;if(S<=0||C<=0)return{blob:e,cropped:!1};let w=document.createElement(`canvas`);w.width=S,w.height=C;let T=w.getContext(`2d`);if(!T)return{blob:e,cropped:!1};T.drawImage(t,v,y,S,C,0,0,S,C);let E=await new Promise(e=>{w.toBlob(e,`image/png`)});return{blob:E||e,cropped:!!E}},X=(e,t,n=0)=>{for(let r=n;r<=e.length-t.length;r+=1){let n=!0;for(let i=0;i<t.length;i+=1)if(e[r+i]!==t[i]){n=!1;break}if(n)return r}return-1},re=()=>{let e=new Uint8Array(d.data),t=X(e,[137,80,78,71,13,10,26,10]);if(t>=0){let n=X(e,[73,69,78,68,174,66,96,130],t);if(n>t)return new Blob([e.slice(t,n+8)],{type:`image/png`})}let n=X(e,[255,216,255]);if(n>=0){let t=X(e,[255,217],n+3);if(t>n)return new Blob([e.slice(n,t+2)],{type:`image/jpeg`})}let r=X(e,[66,77]);if(r>=0&&r+6<e.length){let t=new DataView(d.data,r).getUint32(2,!0);if(t>14&&r+t<=e.length)return new Blob([e.slice(r,r+t)],{type:`image/bmp`})}return null},ie=()=>{let e=new Uint8Array(d.data.slice(0,64));return Array.from(e).map(e=>e>=32&&e<=126?String.fromCharCode(e):` `).join(``).trim()},ae=()=>{let e=z.decode(d.data.slice(0,Math.min(d.data.byteLength,512)));return/\bSECTION\b/.test(e)||/\$ACADVER/.test(e)},Z=e=>{j.value=e,L?.setTool(e)},Q=()=>{if(M.value===`preview`){I.value=1;return}L?.resize(),L?.fitToView()},oe=e=>{let t=e.isOff;L?.setLayerVisible(e.name,t),A.value=A.value.map(n=>n.name===e.name?{...n,isOff:!t}:n)},$=async()=>{let e=k.value;if(e){M.value=`loading`,N.value=``,I.value=1,H();try{let{CadViewer:t}=await p(async()=>{let{CadViewer:e}=await import(`./dist-CDIdMEAB.js`);return{CadViewer:e}},[],import.meta.url);L?.destroy(),L=new t(e,{theme:`light`,initialTool:j.value,worker:!1}),L.loadArrayBuffer(d.data),await s(),Q(),A.value=L.getLayers(),M.value=`ready`}catch(e){console.error(e),M.value=`error`,N.value=te(e)||`CAD 图纸解析失败`}}},se=async()=>{if(ae()){await $();return}M.value=`loading`,N.value=``,H();let e=ie().slice(0,6),t=V[e]?`${e}(${V[e]})`:e||`未知 DWG 版本`,n=re();if(n){let e=await Y(n);P.value=URL.createObjectURL(e.blob),F.value=`已从 DWG 二进制中提取内嵌预览图,版本 ${t}。${e.cropped?`已自动裁剪空白边距,便于查看有效内容。`:``}这是文件保存时写入的快照,不等同于完整 CAD 几何解析。`,M.value=`preview`;return}M.value=`error`,N.value=`DWG 是专有二进制 CAD 格式,当前 Apache-2.0 前端包未内置 GPL 或闭源 DWG 解码器;此文件也没有可提取的内嵌预览图。请在业务侧转换为 DXF 后预览,或接入私有服务端转换链路。检测到的版本为 ${t}。`},ce=async()=>{if(d.type.toLowerCase()===`dwg`){await se();return}await $()};return r(()=>{ce();let e=k.value;e&&(R=new ResizeObserver(()=>{L?.resize(),L?.requestRender()}),R.observe(e))}),i(()=>{R?.disconnect(),R=null,L?.destroy(),L=null,H()}),(r,i)=>(u(),h(`div`,_,[c(`div`,v,[c(`div`,y,[c(`button`,{type:`button`,class:o({active:j.value===`pan`}),onClick:i[0]||=e=>Z(`pan`)},`平移`,2),c(`button`,{type:`button`,class:o({active:j.value===`select`}),onClick:i[1]||=e=>Z(`select`)},`选择`,2),c(`button`,{type:`button`,class:o({active:j.value===`measure`}),onClick:i[2]||=e=>Z(`measure`)},`测量`,2),c(`button`,{type:`button`,onClick:Q},`适配`),M.value===`preview`?(u(),h(f,{key:0},[c(`button`,{type:`button`,title:`缩小 DWG 预览`,onClick:i[3]||=e=>W(-.15)},`-`),c(`span`,b,t(Math.round(I.value*100))+`%`,1),c(`button`,{type:`button`,title:`放大 DWG 预览`,onClick:i[4]||=e=>W(.15)},`+`)],64)):m(``,!0)]),c(`span`,null,t(n.type.toUpperCase()),1)]),c(`div`,{class:o([`cad-body`,{"without-layers":!A.value.length}])},[A.value.length?(u(),h(`aside`,x,[(u(!0),h(f,null,e(A.value,e=>(u(),h(`button`,{key:e.name,type:`button`,class:o({muted:e.isOff}),onClick:t=>oe(e)},t(e.name),11,S))),128))])):m(``,!0),c(`div`,C,[c(`canvas`,{ref_key:`canvas`,ref:k},null,512),M.value===`loading`?(u(),h(`div`,w,`正在解析 CAD...`)):M.value===`preview`?(u(),h(`div`,T,[c(`div`,E,[c(`img`,{src:P.value,alt:`DWG 内嵌预览图`,style:g(U.value)},null,12,ee)]),c(`p`,null,t(F.value),1)])):M.value===`error`?(u(),h(`div`,D,t(N.value),1)):m(``,!0)])],2)]))}}),[[`__scopeId`,`data-v-4d603439`]]);export{k as default};
@@ -0,0 +1 @@
1
+ .cad-viewer[data-v-4d603439]{color:#142335;background:#f8fafc;flex-direction:column;height:100%;min-height:100%;display:flex}.cad-toolbar[data-v-4d603439]{background:#fff;border-bottom:1px solid #0f172a14;justify-content:space-between;align-items:center;gap:16px;min-height:46px;padding:0 12px;display:flex}.cad-toolbar span[data-v-4d603439]{color:#64748b;letter-spacing:0;font-size:12px;font-weight:800}.cad-tools[data-v-4d603439]{align-items:center;gap:6px;display:flex}.cad-tools button[data-v-4d603439],.cad-layers button[data-v-4d603439]{cursor:pointer;border:0;transition:background-color .18s,color .18s}.cad-tools button[data-v-4d603439]{color:#475569;background:#0f172a0f;border-radius:8px;min-height:30px;padding:0 10px;font-size:12px;font-weight:700}.cad-tools button.active[data-v-4d603439],.cad-tools button[data-v-4d603439]:hover{color:#16804f;background:#21a36624}.cad-zoom[data-v-4d603439]{color:#475569;text-align:center;min-width:46px;font-size:12px;font-weight:800}.cad-body[data-v-4d603439]{flex:1;grid-template-columns:minmax(132px,180px) minmax(0,1fr);min-height:0;display:grid}.cad-body.without-layers[data-v-4d603439]{grid-template-columns:minmax(0,1fr)}.cad-layers[data-v-4d603439]{background:#fff;border-right:1px solid #0f172a14;min-height:0;padding:10px;overflow:auto}.cad-layers button[data-v-4d603439]{color:#334155;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:#0f172a0d;border-radius:7px;width:100%;min-height:30px;margin-bottom:6px;padding:0 8px;display:block;overflow:hidden}.cad-layers button.muted[data-v-4d603439]{color:#94a3b8;text-decoration:line-through}.cad-canvas-wrap[data-v-4d603439]{min-width:0;min-height:0;position:relative;overflow:hidden}.cad-canvas-wrap canvas[data-v-4d603439]{width:100%;height:100%;display:block}.cad-state[data-v-4d603439]{color:#64748b;text-align:center;background:#f8fafce6;justify-content:center;align-items:center;padding:24px;line-height:1.7;display:flex;position:absolute;inset:0}.cad-state.error[data-v-4d603439]{color:#b42318}.dwg-preview[data-v-4d603439]{background:#f8fafc;grid-template-rows:minmax(0,1fr) auto;gap:12px;padding:18px;display:grid;position:absolute;inset:0}.dwg-preview-frame[data-v-4d603439]{background:#fff;border:1px solid #0f172a14;justify-content:center;align-items:flex-start;min-width:0;min-height:0;display:flex;overflow:auto}.dwg-preview img[data-v-4d603439]{transform-origin:top;flex:none;min-width:0;max-width:none;height:auto;transition:width .18s;display:block}.dwg-preview p[data-v-4d603439]{color:#5f6f82;text-align:center;margin:0;font-size:13px;line-height:1.6}@media (width<=720px){.cad-body[data-v-4d603439]{grid-template-columns:1fr}.cad-layers[data-v-4d603439]{display:none}}
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./core-CRLmsskK.js","./index-kFSstoL8.js","./index-D8hVflyC.css"])))=>i.map(i=>d[i]);
2
+ import{B as e,C as t,F as n,M as r,R as i,g as a,h as o,k as s,l as c,t as l,y as u}from"./index-kFSstoL8.js";var d={class:`code-viewer`},f={class:`code-toolbar`},p={class:`code-area`},m=[`innerHTML`],h=c(t({__name:`CodeViewer`,props:{value:{},type:{}},setup(t){let c=t,h={bash:`bash`,c:`cpp`,cc:`cpp`,cjs:`javascript`,cpp:`cpp`,cs:`csharp`,css:`css`,diff:`diff`,go:`go`,h:`cpp`,hpp:`cpp`,html:`xml`,htm:`xml`,ini:`ini`,java:`java`,js:`javascript`,json:`json`,jsx:`javascript`,log:`plaintext`,md:`markdown`,markdown:`markdown`,mjs:`javascript`,php:`php`,py:`python`,rs:`rust`,sh:`bash`,sql:`sql`,ts:`typescript`,tsx:`typescript`,txt:`plaintext`,vue:`xml`,xml:`xml`,yaml:`yaml`,yml:`yaml`},g={bash:()=>l(()=>import(`./bash-BJm0Os9e.js`),[],import.meta.url),cpp:()=>l(()=>import(`./cpp-DF3_Y4Y1.js`),[],import.meta.url),csharp:()=>l(()=>import(`./csharp-BtVV86wX.js`),[],import.meta.url),css:()=>l(()=>import(`./css-wZv8YE7b.js`),[],import.meta.url),diff:()=>l(()=>import(`./diff-Bxf4Bdyj.js`),[],import.meta.url),go:()=>l(()=>import(`./go-B7mD4oi7.js`),[],import.meta.url),ini:()=>l(()=>import(`./ini-BMQSfYcX.js`),[],import.meta.url),java:()=>l(()=>import(`./java-CLKxIYNp.js`),[],import.meta.url),javascript:()=>l(()=>import(`./javascript-KR3bXd09.js`),[],import.meta.url),json:()=>l(()=>import(`./json-CKtDrYhA.js`),[],import.meta.url),markdown:()=>l(()=>import(`./markdown-DQnm92SS.js`),[],import.meta.url),php:()=>l(()=>import(`./php-B8QdQEEH.js`),[],import.meta.url),python:()=>l(()=>import(`./python-5t6UGqKu.js`),[],import.meta.url),rust:()=>l(()=>import(`./rust-CKj8FOnD.js`),[],import.meta.url),sql:()=>l(()=>import(`./sql-Ce6HY06Z.js`),[],import.meta.url),typescript:()=>l(()=>import(`./typescript-CL2ByGCA.js`),[],import.meta.url),xml:()=>l(()=>import(`./xml-CKLaISb_.js`),[],import.meta.url),yaml:()=>l(()=>import(`./yaml-CnW-k44d.js`),[],import.meta.url)},_=null,v=new Set,y=async()=>(_||=l(()=>import(`./core-CRLmsskK.js`).then(e=>e.default),__vite__mapDeps([0,1,2]),import.meta.url),_),b=async(e,t)=>{if(v.has(t))return!0;let n=g[t];if(!n)return!1;let{default:r}=await n();return e.registerLanguage(t,r),v.add(t),!0},x=o(()=>h[c.type.toLowerCase()]||`plaintext`),S=e=>e.replace(/[&<>"']/g,e=>({"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`})[e]),C=n(``),w=0;r(()=>[c.value,x.value],async()=>{let e=++w,t=x.value;if(t===`plaintext`){C.value=S(c.value);return}try{let n=await y(),r=await b(n,t);if(e!==w)return;C.value=r?n.highlight(c.value,{language:t,ignoreIllegals:!0}).value:S(c.value)}catch{e===w&&(C.value=S(c.value))}},{immediate:!0});let T=o(()=>c.value.split(/\r\n|\r|\n/).length);return(n,r)=>(s(),u(`div`,d,[a(`div`,f,[a(`span`,null,e(t.type.toUpperCase()),1),a(`strong`,null,e(T.value)+` lines`,1)]),a(`pre`,p,[a(`code`,{class:i([`hljs`,`language-${x.value}`]),innerHTML:C.value},null,10,m)])]))}}),[[`__scopeId`,`data-v-81405bd8`]]);export{h as default};
@@ -1 +1 @@
1
- pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.code-viewer[data-v-b59da2ad]{color:#e6edf3;background:#0d1117;min-height:100%}.code-toolbar[data-v-b59da2ad]{z-index:1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0d1117eb;border-bottom:1px solid #8b949e3d;justify-content:space-between;align-items:center;gap:16px;height:42px;padding:0 16px;display:flex;position:sticky;top:0}.code-toolbar span[data-v-b59da2ad],.code-toolbar strong[data-v-b59da2ad]{color:#8b949e;letter-spacing:0;font-size:12px;font-weight:700}.code-area[data-v-b59da2ad]{background:0 0;min-width:min-content;margin:0;padding:18px 20px 28px;display:block;overflow:auto}.code-area code[data-v-b59da2ad]{color:inherit;tab-size:2;white-space:pre;background:0 0;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.7;display:block;overflow:visible}
1
+ pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}.code-viewer[data-v-81405bd8]{color:#e6edf3;background:#0d1117;min-height:100%}.code-toolbar[data-v-81405bd8]{z-index:1;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0d1117eb;border-bottom:1px solid #8b949e3d;justify-content:space-between;align-items:center;gap:16px;height:42px;padding:0 16px;display:flex;position:sticky;top:0}.code-toolbar span[data-v-81405bd8],.code-toolbar strong[data-v-81405bd8]{color:#8b949e;letter-spacing:0;font-size:12px;font-weight:700}.code-area[data-v-81405bd8]{background:0 0;min-width:min-content;margin:0;padding:18px 20px 28px;display:block;overflow:auto}.code-area code[data-v-81405bd8]{color:inherit;tab-size:2;white-space:pre;background:0 0;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:13px;line-height:1.7;display:block;overflow:visible}
@@ -0,0 +1,3 @@
1
+ import{$ as e,Bt as t,C as n,Ct as r,Dt as i,E as a,Et as o,F as s,Ft as c,Ht as l,I as u,K as d,Lt as f,Mt as p,Ot as m,R as h,Tt as g,U as _,V as v,Z as y,b,bt as x,et as S,f as C,ft as w,ht as T,m as E,n as D,nt as O,o as k,p as A,pt as j,q as M,r as N,rt as P,tt as F,u as I,w as L,wt as R,x as z,yt as B,z as V,zt as H}from"./three.module-DQeeIQFF.js";var U=class extends b{constructor(e){super(e)}parse(e){function t(e){switch(e.image_type){case d:case m:if(e.colormap_length>256||e.colormap_size!==24||e.colormap_type!==1)throw Error(`THREE.TGALoader: Invalid type colormap data for indexed type.`);break;case f:case p:case h:case g:if(e.colormap_type)throw Error(`THREE.TGALoader: Invalid type colormap data for colormap type.`);break;case u:throw Error(`THREE.TGALoader: No data.`);default:throw Error(`THREE.TGALoader: Invalid type `+e.image_type)}if(e.width<=0||e.height<=0)throw Error(`THREE.TGALoader: Invalid image size.`);if(e.pixel_size!==8&&e.pixel_size!==16&&e.pixel_size!==24&&e.pixel_size!==32)throw Error(`THREE.TGALoader: Invalid pixel size `+e.pixel_size)}function n(e,t,n,r,i){let a,o,s=n.pixel_size>>3,c=n.width*n.height*s;if(t&&(o=i.subarray(r,r+=n.colormap_length*(n.colormap_size>>3))),e){a=new Uint8Array(c);let e,t,n,o=0,l=new Uint8Array(s);for(;o<c;)if(e=i[r++],t=(e&127)+1,e&128){for(n=0;n<s;++n)l[n]=i[r++];for(n=0;n<t;++n)a.set(l,o+n*s);o+=s*t}else{for(t*=s,n=0;n<t;++n)a[o+n]=i[r++];o+=t}}else a=i.subarray(r,r+=t?n.width*n.height:c);return{pixel_data:a,palettes:o}}function r(e,t,n,r,i,a,o,s,c){let l=c,u,d=0,f,p,m=E.width;for(p=t;p!==r;p+=n)for(f=i;f!==o;f+=a,d++)u=s[d],e[(f+m*p)*4+3]=255,e[(f+m*p)*4+2]=l[u*3+0],e[(f+m*p)*4+1]=l[u*3+1],e[(f+m*p)*4+0]=l[u*3+2];return e}function i(e,t,n,r,i,a,o,s){let c,l=0,u,d,f=E.width;for(d=t;d!==r;d+=n)for(u=i;u!==o;u+=a,l+=2)c=s[l+0]+(s[l+1]<<8),e[(u+f*d)*4+0]=(c&31744)>>7,e[(u+f*d)*4+1]=(c&992)>>2,e[(u+f*d)*4+2]=(c&31)<<3,e[(u+f*d)*4+3]=c&32768?0:255;return e}function a(e,t,n,r,i,a,o,s){let c=0,l,u,d=E.width;for(u=t;u!==r;u+=n)for(l=i;l!==o;l+=a,c+=3)e[(l+d*u)*4+3]=255,e[(l+d*u)*4+2]=s[c+0],e[(l+d*u)*4+1]=s[c+1],e[(l+d*u)*4+0]=s[c+2];return e}function o(e,t,n,r,i,a,o,s){let c=0,l,u,d=E.width;for(u=t;u!==r;u+=n)for(l=i;l!==o;l+=a,c+=4)e[(l+d*u)*4+2]=s[c+0],e[(l+d*u)*4+1]=s[c+1],e[(l+d*u)*4+0]=s[c+2],e[(l+d*u)*4+3]=s[c+3];return e}function s(e,t,n,r,i,a,o,s){let c,l=0,u,d,f=E.width;for(d=t;d!==r;d+=n)for(u=i;u!==o;u+=a,l++)c=s[l],e[(u+f*d)*4+0]=c,e[(u+f*d)*4+1]=c,e[(u+f*d)*4+2]=c,e[(u+f*d)*4+3]=255;return e}function c(e,t,n,r,i,a,o,s){let c=0,l,u,d=E.width;for(u=t;u!==r;u+=n)for(l=i;l!==o;l+=a,c+=2)e[(l+d*u)*4+0]=s[c+0],e[(l+d*u)*4+1]=s[c+0],e[(l+d*u)*4+2]=s[c+0],e[(l+d*u)*4+3]=s[c+1];return e}function l(e,t,n,l,u){let d,f,p,m,h,g;switch((E.flags&v)>>y){default:case S:d=0,p=1,h=t,f=0,m=1,g=n;break;case b:d=0,p=1,h=t,f=n-1,m=-1,g=-1;break;case C:d=t-1,p=-1,h=-1,f=0,m=1,g=n;break;case x:d=t-1,p=-1,h=-1,f=n-1,m=-1,g=-1;break}if(k)switch(E.pixel_size){case 8:s(e,f,m,g,d,p,h,l);break;case 16:c(e,f,m,g,d,p,h,l);break;default:throw Error(`THREE.TGALoader: Format not supported.`)}else switch(E.pixel_size){case 8:r(e,f,m,g,d,p,h,l,u);break;case 16:i(e,f,m,g,d,p,h,l);break;case 24:a(e,f,m,g,d,p,h,l);break;case 32:o(e,f,m,g,d,p,h,l);break;default:throw Error(`THREE.TGALoader: Format not supported.`)}return e}let u=0,d=1,f=2,p=3,m=9,h=10,g=11,v=48,y=4,b=0,x=1,S=2,C=3;if(e.length<19)throw Error(`THREE.TGALoader: Not enough data to contain header.`);let w=0,T=new Uint8Array(e),E={id_length:T[w++],colormap_type:T[w++],image_type:T[w++],colormap_index:T[w++]|T[w++]<<8,colormap_length:T[w++]|T[w++]<<8,colormap_size:T[w++],origin:[T[w++]|T[w++]<<8,T[w++]|T[w++]<<8],width:T[w++]|T[w++]<<8,height:T[w++]|T[w++]<<8,pixel_size:T[w++],flags:T[w++]};if(t(E),E.id_length+w>e.length)throw Error(`THREE.TGALoader: No data.`);w+=E.id_length;let D=!1,O=!1,k=!1;switch(E.image_type){case 9:D=!0,O=!0;break;case 1:O=!0;break;case 10:D=!0;break;case 2:break;case 11:D=!0,k=!0;break;case 3:k=!0;break}let A=new Uint8Array(E.width*E.height*4),j=n(D,O,E,w,T);return l(A,E.width,E.height,j.pixel_data,j.palettes),{data:A,width:E.width,height:E.height,flipY:!0,generateMipmaps:!0,minFilter:_}}};function W(e,t){let n=[],r=e.childNodes;for(let e=0,i=r.length;e<i;e++){let i=r[e];i.nodeName===t&&n.push(i)}return n}function G(e){return e.length===0?[]:e.trim().split(/\s+/)}function K(e){return e.length===0?[]:e.trim().split(/\s+/).map(parseFloat)}function q(e){return e.length===0?[]:e.trim().split(/\s+/).map(e=>parseInt(e))}function J(e){return e.substring(1)}var Y=class{constructor(){this.count=0}generateId(){return`three_default_`+ this.count++}parse(e){if(e.length===0)return null;let t=new DOMParser().parseFromString(e,`application/xml`),n=W(t,`COLLADA`)[0],r=t.getElementsByTagName(`parsererror`)[0];if(r!==void 0){let e=W(r,`div`)[0],t;return t=e?e.textContent:this.parserErrorToText(r),console.error(`THREE.ColladaLoader: Failed to parse collada file.
2
+ `,t),null}let i=n.getAttribute(`version`);console.debug(`THREE.ColladaLoader: File version`,i);let a=this.parseAsset(W(n,`asset`)[0]),o={animations:{},clips:{},controllers:{},images:{},effects:{},materials:{},cameras:{},lights:{},geometries:{},nodes:{},visualScenes:{},kinematicsModels:{},physicsModels:{},kinematicsScenes:{},joints:{}};return this.library=o,this.collada=n,this.parseLibrary(n,`library_animations`,`animation`,this.parseAnimation.bind(this)),this.parseLibrary(n,`library_animation_clips`,`animation_clip`,this.parseAnimationClip.bind(this)),this.parseLibrary(n,`library_controllers`,`controller`,this.parseController.bind(this)),this.parseLibrary(n,`library_images`,`image`,this.parseImage.bind(this)),this.parseLibrary(n,`library_effects`,`effect`,this.parseEffect.bind(this)),this.parseLibrary(n,`library_materials`,`material`,this.parseMaterial.bind(this)),this.parseLibrary(n,`library_cameras`,`camera`,this.parseCamera.bind(this)),this.parseLibrary(n,`library_lights`,`light`,this.parseLight.bind(this)),this.parseLibrary(n,`library_geometries`,`geometry`,this.parseGeometry.bind(this)),this.parseLibrary(n,`library_nodes`,`node`,this.parseNode.bind(this)),this.parseLibrary(n,`library_visual_scenes`,`visual_scene`,this.parseVisualScene.bind(this)),this.parseLibrary(n,`library_joints`,`joint`,this.parseLibraryJoint.bind(this)),this.parseLibrary(n,`library_kinematics_models`,`kinematics_model`,this.parseKinematicsModel.bind(this)),this.parseLibrary(n,`library_physics_models`,`physics_model`,this.parsePhysicsModel.bind(this)),this.parseLibrary(n,`scene`,`instance_kinematics_scene`,this.parseKinematicsScene.bind(this)),{library:o,asset:a,collada:n}}parserErrorToText(e){let t=[],n=[e];for(;n.length;){let e=n.shift();e.nodeType===Node.TEXT_NODE?t.push(e.textContent):(t.push(`
3
+ `),n.push(...e.childNodes))}return t.join(``).trim()}parseAsset(e){return{unit:this.parseAssetUnit(W(e,`unit`)[0]),upAxis:this.parseAssetUpAxis(W(e,`up_axis`)[0])}}parseAssetUnit(e){return e!==void 0&&e.hasAttribute(`meter`)===!0?parseFloat(e.getAttribute(`meter`)):1}parseAssetUpAxis(e){return e===void 0?`Y_UP`:e.textContent}parseLibrary(e,t,n,r){let i=W(e,t)[0];if(i!==void 0){let e=W(i,n);for(let t=0;t<e.length;t++)r(e[t])}}parseAnimation(e){let t={sources:{},samplers:{},channels:{}},n=!1;for(let r=0,i=e.childNodes.length;r<i;r++){let i=e.childNodes[r];if(i.nodeType!==1)continue;let a;switch(i.nodeName){case`source`:a=i.getAttribute(`id`),t.sources[a]=this.parseSource(i);break;case`sampler`:a=i.getAttribute(`id`),t.samplers[a]=this.parseAnimationSampler(i);break;case`channel`:a=i.getAttribute(`target`),t.channels[a]=this.parseAnimationChannel(i);break;case`animation`:this.parseAnimation(i),n=!0;break;default:}}n===!1&&(this.library.animations[e.getAttribute(`id`)||y.generateUUID()]=t)}parseAnimationSampler(e){let t={inputs:{}};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`input`:let e=J(r.getAttribute(`source`)),n=r.getAttribute(`semantic`);t.inputs[n]=e;break}}return t}parseAnimationChannel(e){let t={},n=e.getAttribute(`target`).split(`/`),r=n.shift(),i=n.shift(),a=i.indexOf(`(`)!==-1,o=i.indexOf(`.`)!==-1;if(o)n=i.split(`.`),i=n.shift(),t.member=n.shift();else if(a){let e=i.split(`(`);i=e.shift();for(let t=0;t<e.length;t++)e[t]=parseInt(e[t].replace(/\)/,``));t.indices=e}return t.id=r,t.sid=i,t.arraySyntax=a,t.memberSyntax=o,t.sampler=J(e.getAttribute(`source`)),t}parseAnimationClip(e){let t={name:e.getAttribute(`id`)||`default`,start:parseFloat(e.getAttribute(`start`)||0),end:parseFloat(e.getAttribute(`end`)||0),animations:[]};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`instance_animation`:t.animations.push(J(r.getAttribute(`url`)));break}}this.library.clips[e.getAttribute(`id`)]=t}parseController(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`skin`:t.id=J(r.getAttribute(`source`)),t.skin=this.parseSkin(r);break;case`morph`:t.id=J(r.getAttribute(`source`)),console.warn(`THREE.ColladaLoader: Morph target animation not supported yet.`);break}}this.library.controllers[e.getAttribute(`id`)]=t}parseSkin(e){let t={sources:{}};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`bind_shape_matrix`:t.bindShapeMatrix=K(r.textContent);break;case`source`:let e=r.getAttribute(`id`);t.sources[e]=this.parseSource(r);break;case`joints`:t.joints=this.parseJoints(r);break;case`vertex_weights`:t.vertexWeights=this.parseVertexWeights(r);break}}return t}parseJoints(e){let t={inputs:{}};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`input`:let e=r.getAttribute(`semantic`),n=J(r.getAttribute(`source`));t.inputs[e]=n;break}}return t}parseVertexWeights(e){let t={inputs:{}};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`input`:let e=r.getAttribute(`semantic`),n=J(r.getAttribute(`source`)),i=parseInt(r.getAttribute(`offset`));t.inputs[e]={id:n,offset:i};break;case`vcount`:t.vcount=q(r.textContent);break;case`v`:t.v=q(r.textContent);break}}return t}parseImage(e){let t={init_from:W(e,`init_from`)[0].textContent};this.library.images[e.getAttribute(`id`)]=t}parseEffect(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`profile_COMMON`:t.profile=this.parseEffectProfileCOMMON(r);break}}this.library.effects[e.getAttribute(`id`)]=t}parseEffectProfileCOMMON(e){let t={surfaces:{},samplers:{}};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`newparam`:this.parseEffectNewparam(r,t);break;case`technique`:t.technique=this.parseEffectTechnique(r);break;case`extra`:t.extra=this.parseEffectExtra(r);break}}return t}parseEffectNewparam(e,t){let n=e.getAttribute(`sid`);for(let r=0,i=e.childNodes.length;r<i;r++){let i=e.childNodes[r];if(i.nodeType===1)switch(i.nodeName){case`surface`:t.surfaces[n]=this.parseEffectSurface(i);break;case`sampler2D`:t.samplers[n]=this.parseEffectSampler(i);break}}}parseEffectSurface(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`init_from`:t.init_from=r.textContent;break}}return t}parseEffectSampler(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`source`:t.source=r.textContent;break}}return t}parseEffectTechnique(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`constant`:case`lambert`:case`blinn`:case`phong`:t.type=r.nodeName,t.parameters=this.parseEffectParameters(r);break;case`extra`:t.extra=this.parseEffectExtra(r);break}}return t}parseEffectParameters(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`emission`:case`diffuse`:case`specular`:case`bump`:case`ambient`:case`shininess`:case`transparency`:t[r.nodeName]=this.parseEffectParameter(r);break;case`transparent`:t[r.nodeName]={opaque:r.hasAttribute(`opaque`)?r.getAttribute(`opaque`):`A_ONE`,data:this.parseEffectParameter(r)};break}}return t}parseEffectParameter(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`color`:t[r.nodeName]=K(r.textContent);break;case`float`:t[r.nodeName]=parseFloat(r.textContent);break;case`texture`:t[r.nodeName]={id:r.getAttribute(`texture`),extra:this.parseEffectParameterTexture(r)};break}}return t}parseEffectParameterTexture(e){let t={technique:{}};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`extra`:this.parseEffectParameterTextureExtra(r,t);break}}return t}parseEffectParameterTextureExtra(e,t){for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`technique`:this.parseEffectParameterTextureExtraTechnique(r,t);break}}}parseEffectParameterTextureExtraTechnique(e,t){for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`repeatU`:case`repeatV`:case`offsetU`:case`offsetV`:t.technique[r.nodeName]=parseFloat(r.textContent);break;case`wrapU`:case`wrapV`:r.textContent.toUpperCase()===`TRUE`?t.technique[r.nodeName]=1:r.textContent.toUpperCase()===`FALSE`?t.technique[r.nodeName]=0:t.technique[r.nodeName]=parseInt(r.textContent);break;case`bump`:t[r.nodeName]=this.parseEffectExtraTechniqueBump(r);break}}}parseEffectExtra(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`technique`:t.technique=this.parseEffectExtraTechnique(r);break}}return t}parseEffectExtraTechnique(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`double_sided`:t[r.nodeName]=parseInt(r.textContent);break;case`bump`:t[r.nodeName]=this.parseEffectExtraTechniqueBump(r);break}}return t}parseEffectExtraTechniqueBump(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`texture`:t[r.nodeName]={id:r.getAttribute(`texture`),texcoord:r.getAttribute(`texcoord`),extra:this.parseEffectParameterTexture(r)};break}}return t}parseMaterial(e){let t={name:e.getAttribute(`name`)};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`instance_effect`:t.url=J(r.getAttribute(`url`));break}}this.library.materials[e.getAttribute(`id`)]=t}parseCamera(e){let t={name:e.getAttribute(`name`)};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`optics`:t.optics=this.parseCameraOptics(r);break}}this.library.cameras[e.getAttribute(`id`)]=t}parseCameraOptics(e){for(let t=0;t<e.childNodes.length;t++){let n=e.childNodes[t];switch(n.nodeName){case`technique_common`:return this.parseCameraTechnique(n)}}return{}}parseCameraTechnique(e){let t={};for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];switch(r.nodeName){case`perspective`:case`orthographic`:t.technique=r.nodeName,t.parameters=this.parseCameraParameters(r);break}}return t}parseCameraParameters(e){let t={};for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];switch(r.nodeName){case`xfov`:case`yfov`:case`xmag`:case`ymag`:case`znear`:case`zfar`:case`aspect_ratio`:t[r.nodeName]=parseFloat(r.textContent);break}}return t}parseLight(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`technique_common`:t=this.parseLightTechnique(r);break}}this.library.lights[e.getAttribute(`id`)]=t}parseLightTechnique(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`directional`:case`point`:case`spot`:case`ambient`:t.technique=r.nodeName,t.parameters=this.parseLightParameters(r);break}}return t}parseLightParameters(e){let t={};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`color`:let e=K(r.textContent);t.color=new A().fromArray(e),E.colorSpaceToWorking(t.color,R);break;case`falloff_angle`:t.falloffAngle=parseFloat(r.textContent);break;case`quadratic_attenuation`:let n=parseFloat(r.textContent);t.distance=n?Math.sqrt(1/n):0;break}}return t}parseGeometry(e){let t={name:e.getAttribute(`name`),sources:{},vertices:{},primitives:[]},n=W(e,`mesh`)[0];if(n!==void 0){for(let e=0;e<n.childNodes.length;e++){let r=n.childNodes[e];if(r.nodeType!==1)continue;let i=r.getAttribute(`id`);switch(r.nodeName){case`source`:t.sources[i]=this.parseSource(r);break;case`vertices`:t.vertices=this.parseGeometryVertices(r);break;case`polygons`:case`lines`:case`linestrips`:case`polylist`:case`triangles`:t.primitives.push(this.parseGeometryPrimitive(r));break;default:}}this.library.geometries[e.getAttribute(`id`)]=t}}parseSource(e){let t={array:[],stride:3};for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`float_array`:t.array=K(r.textContent);break;case`Name_array`:t.array=G(r.textContent);break;case`technique_common`:let e=W(r,`accessor`)[0];e!==void 0&&(t.stride=parseInt(e.getAttribute(`stride`)));break}}return t}parseGeometryVertices(e){let t={};for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];r.nodeType===1&&(t[r.getAttribute(`semantic`)]=J(r.getAttribute(`source`)))}return t}parseGeometryPrimitive(e){let t={type:e.nodeName,material:e.getAttribute(`material`),count:parseInt(e.getAttribute(`count`)),inputs:{},stride:0,hasUV:!1};for(let n=0,r=e.childNodes.length;n<r;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`input`:let e=J(r.getAttribute(`source`)),n=r.getAttribute(`semantic`),i=parseInt(r.getAttribute(`offset`)),a=parseInt(r.getAttribute(`set`)),o=a>0?n+a:n;t.inputs[o]={id:e,offset:i},t.stride=Math.max(t.stride,i+1),n===`TEXCOORD`&&(t.hasUV=!0);break;case`vcount`:t.vcount=q(r.textContent);break;case`p`:t.p=q(r.textContent);break}}return t.type===`polygons`&&(t.vcount=[t.p.length/t.stride]),t}parseLibraryJoint(e){this.library.joints[e.getAttribute(`id`)]=this.parseKinematicsJoint(e)}parseKinematicsModel(e){let t={name:e.getAttribute(`name`)||``,joints:{},links:[]};for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`technique_common`:this.parseKinematicsTechniqueCommon(r,t);break}}this.library.kinematicsModels[e.getAttribute(`id`)]=t}parseKinematicsTechniqueCommon(e,t){for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`joint`:t.joints[r.getAttribute(`sid`)]=this.parseKinematicsJoint(r);break;case`instance_joint`:t.joints[r.getAttribute(`sid`)]=this.library.joints[J(r.getAttribute(`url`))];break;case`link`:t.links.push(this.parseKinematicsLink(r));break}}}parseKinematicsJoint(e){let t;for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`prismatic`:case`revolute`:t=this.parseKinematicsJointParameter(r);break}}return t}parseKinematicsJointParameter(e){let n={sid:e.getAttribute(`sid`),name:e.getAttribute(`name`)||``,axis:new t,limits:{min:0,max:0},type:e.nodeName,static:!1,zeroPosition:0,middlePosition:0};for(let t=0;t<e.childNodes.length;t++){let r=e.childNodes[t];if(r.nodeType===1)switch(r.nodeName){case`axis`:let e=K(r.textContent);n.axis.fromArray(e);break;case`limits`:let t=r.getElementsByTagName(`max`)[0],i=r.getElementsByTagName(`min`)[0];n.limits.max=parseFloat(t.textContent),n.limits.min=parseFloat(i.textContent);break}}return n.limits.min>=n.limits.max&&(n.static=!0),n.middlePosition=(n.limits.min+n.limits.max)/2,n}parseKinematicsLink(e){let t={sid:e.getAttribute(`sid`),name:e.getAttribute(`name`)||``,attachments:[],transforms:[]};for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`attachment_full`:t.attachments.push(this.parseKinematicsAttachment(r));break;case`matrix`:case`translate`:case`rotate`:t.transforms.push(this.parseKinematicsTransform(r));break}}return t}parseKinematicsAttachment(e){let t={joint:e.getAttribute(`joint`).split(`/`).pop(),transforms:[],links:[]};for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`link`:t.links.push(this.parseKinematicsLink(r));break;case`matrix`:case`translate`:case`rotate`:t.transforms.push(this.parseKinematicsTransform(r));break}}return t}parseKinematicsTransform(n){let r={type:n.nodeName},i=K(n.textContent);switch(r.type){case`matrix`:r.obj=new e,r.obj.fromArray(i).transpose();break;case`translate`:r.obj=new t,r.obj.fromArray(i);break;case`rotate`:r.obj=new t,r.obj.fromArray(i),r.angle=y.degToRad(i[3]);break}return r}parsePhysicsModel(e){let t={name:e.getAttribute(`name`)||``,rigidBodies:{}};for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`rigid_body`:t.rigidBodies[r.getAttribute(`name`)]={},this.parsePhysicsRigidBody(r,t.rigidBodies[r.getAttribute(`name`)]);break}}this.library.physicsModels[e.getAttribute(`id`)]=t}parsePhysicsRigidBody(e,t){for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`technique_common`:this.parsePhysicsTechniqueCommon(r,t);break}}}parsePhysicsTechniqueCommon(e,t){for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`inertia`:t.inertia=K(r.textContent);break;case`mass`:t.mass=K(r.textContent)[0];break}}}parseKinematicsScene(e){let t={bindJointAxis:[]};for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`bind_joint_axis`:t.bindJointAxis.push(this.parseKinematicsBindJointAxis(r));break}}this.library.kinematicsScenes[J(e.getAttribute(`url`))]=t}parseKinematicsBindJointAxis(e){let t={target:e.getAttribute(`target`).split(`/`).pop()};for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];if(r.nodeType===1)switch(r.nodeName){case`axis`:t.axis=r.getElementsByTagName(`param`)[0].textContent;let e=t.axis.split(`inst_`).pop().split(`axis`)[0];t.jointIndex=e.substring(0,e.length-1);break}}return t}prepareNodes(e){let t=e.getElementsByTagName(`node`);for(let e=0;e<t.length;e++){let n=t[e];n.hasAttribute(`id`)===!1&&n.setAttribute(`id`,this.generateId())}}parseNode(n){let r=new e,i=new t,a={name:n.getAttribute(`name`)||``,type:n.getAttribute(`type`),id:n.getAttribute(`id`),sid:n.getAttribute(`sid`),matrix:new e,nodes:[],instanceCameras:[],instanceControllers:[],instanceLights:[],instanceGeometries:[],instanceNodes:[],transforms:{},transformData:{},transformOrder:[]};for(let e=0;e<n.childNodes.length;e++){let t=n.childNodes[e];if(t.nodeType!==1)continue;let o;switch(t.nodeName){case`node`:a.nodes.push(t.getAttribute(`id`)),this.parseNode(t);break;case`instance_camera`:a.instanceCameras.push(J(t.getAttribute(`url`)));break;case`instance_controller`:a.instanceControllers.push(this.parseNodeInstance(t));break;case`instance_light`:a.instanceLights.push(J(t.getAttribute(`url`)));break;case`instance_geometry`:a.instanceGeometries.push(this.parseNodeInstance(t));break;case`instance_node`:a.instanceNodes.push(J(t.getAttribute(`url`)));break;case`matrix`:o=K(t.textContent),a.matrix.multiply(r.fromArray(o).transpose());{let e=t.getAttribute(`sid`);a.transforms[e]=t.nodeName,a.transformData[e]={type:`matrix`,array:o},a.transformOrder.push(e)}break;case`translate`:o=K(t.textContent),i.fromArray(o),a.matrix.multiply(r.makeTranslation(i.x,i.y,i.z));{let e=t.getAttribute(`sid`);a.transforms[e]=t.nodeName,a.transformData[e]={type:`translate`,x:o[0],y:o[1],z:o[2]},a.transformOrder.push(e)}break;case`rotate`:o=K(t.textContent);{let e=y.degToRad(o[3]);a.matrix.multiply(r.makeRotationAxis(i.fromArray(o),e));let n=t.getAttribute(`sid`);a.transforms[n]=t.nodeName,a.transformData[n]={type:`rotate`,axis:[o[0],o[1],o[2]],angle:o[3]},a.transformOrder.push(n)}break;case`scale`:o=K(t.textContent),a.matrix.scale(i.fromArray(o));{let e=t.getAttribute(`sid`);a.transforms[e]=t.nodeName,a.transformData[e]={type:`scale`,x:o[0],y:o[1],z:o[2]},a.transformOrder.push(e)}break;case`extra`:break;default:}}return this.hasNode(a.id)?console.warn(`THREE.ColladaLoader: There is already a node with ID %s. Exclude current node from further processing.`,a.id):this.library.nodes[a.id]=a,a}parseNodeInstance(e){let t={id:J(e.getAttribute(`url`)),materials:{},skeletons:[]};for(let n=0;n<e.childNodes.length;n++){let r=e.childNodes[n];switch(r.nodeName){case`bind_material`:let e=r.getElementsByTagName(`instance_material`);for(let n=0;n<e.length;n++){let r=e[n],i=r.getAttribute(`symbol`),a=r.getAttribute(`target`);t.materials[i]=J(a)}break;case`skeleton`:t.skeletons.push(J(r.textContent));break;default:break}}return t}parseVisualScene(e){let t={name:e.getAttribute(`name`),children:[]};this.prepareNodes(e);let n=W(e,`node`);for(let e=0;e<n.length;e++)t.children.push(this.parseNode(n[e]));this.library.visualScenes[e.getAttribute(`id`)]=t}hasNode(e){return this.library.nodes[e]!==void 0}},X=class{constructor(n,r,i,a){this.library=n,this.collada=r,this.textureLoader=i,this.tgaLoader=a,this.tempColor=new A,this.animations=[],this.kinematics={},this.position=new t,this.scale=new t,this.quaternion=new B,this.matrix=new e,this.deferredPivotAnimations={},this.transformNodes={}}compose(){let e=this.library;this.buildLibrary(e.animations,this.buildAnimation.bind(this)),this.buildLibrary(e.clips,this.buildAnimationClip.bind(this)),this.buildLibrary(e.controllers,this.buildController.bind(this)),this.buildLibrary(e.images,this.buildImage.bind(this)),this.buildLibrary(e.effects,this.buildEffect.bind(this)),this.buildLibrary(e.materials,this.buildMaterial.bind(this)),this.buildLibrary(e.cameras,this.buildCamera.bind(this)),this.buildLibrary(e.lights,this.buildLight.bind(this)),this.buildLibrary(e.geometries,this.buildGeometry.bind(this)),this.buildLibrary(e.visualScenes,this.buildVisualScene.bind(this)),this.setupAnimations(),this.setupKinematics();let t=this.parseScene(W(this.collada,`scene`)[0]);return t.animations=this.animations,{scene:t,animations:this.animations,kinematics:this.kinematics}}buildLibrary(e,t){for(let n in e){let r=e[n];r.build=t(e[n])}}getBuild(e,t){return e.build===void 0&&(e.build=t(e)),e.build}isEmpty(e){return Object.keys(e).length===0}buildAnimation(e){let t=[],n=e.channels,r=e.samplers,i=e.sources,a=this.aggregateAnimationChannels(n,r,i);for(let e in a){let n=this.library.nodes[e];if(!n)continue;let r=a[e];if(this.hasPivotTransforms(n))this.collectDeferredPivotAnimation(e,r);else{let i=this.getNode(e),a=!1;for(let e in r){let o=n.transforms[e],s=n.transformData[e],c=r[e];switch(o){case`matrix`:this.buildMatrixTracks(i,c,n,t);break;case`translate`:this.buildTranslateTrack(i,c,s,t);break;case`rotate`:a||=(this.buildRotateTrack(i,e,c,s,n,t),!0);break;case`scale`:this.buildScaleTrack(i,c,s,t);break}}}}return t}collectDeferredPivotAnimation(e,t){this.deferredPivotAnimations[e]||(this.deferredPivotAnimations[e]={});let n=this.deferredPivotAnimations[e];for(let e in t){n[e]||(n[e]={});for(let r in t[e])n[e][r]=t[e][r]}}hasPivotTransforms(e){for(let t of[`rotatePivot`,`rotatePivotInverse`,`rotatePivotTranslation`,`scalePivot`,`scalePivotInverse`,`scalePivotTranslation`])if(e.transforms[t]!==void 0)return!0;return!1}getAnimation(e){return this.getBuild(this.library.animations[e],this.buildAnimation.bind(this))}aggregateAnimationChannels(e,t,n){let r={};for(let i in e){if(!e.hasOwnProperty(i))continue;let a=e[i],o=t[a.sampler],s=o.inputs.INPUT,c=o.inputs.OUTPUT,l=n[s],u=n[c],d=o.inputs.INTERPOLATION,f=o.inputs.IN_TANGENT,p=o.inputs.OUT_TANGENT,m=d?n[d]:null,h=f?n[f]:null,g=p?n[p]:null,_=a.id,v=a.sid,y=a.member||`default`;r[_]||(r[_]={}),r[_][v]||(r[_][v]={}),r[_][v][y]={times:l.array,values:u.array,stride:u.stride,arraySyntax:a.arraySyntax,indices:a.indices,interpolation:m?m.array:null,inTangent:h?h.array:null,outTangent:g?g.array:null,inTangentStride:h?h.stride:0,outTangentStride:g?g.stride:0}}return r}buildMatrixTracks(e,t,n,r){let i=n.matrix.clone().transpose(),a={};for(let e in t){let n=t[e],r=n.times,i=n.values,o=n.stride;for(let e=0,t=r.length;e<t;e++){let t=r[e],s=e*o;if(a[t]===void 0&&(a[t]={}),n.arraySyntax===!0){let e=i[s],r=n.indices[0]+4*n.indices[1];a[t][r]=e}else for(let e=0;e<o;e++)a[t][e]=i[s+e]}}let o=this.prepareAnimationData(a,i),s={name:e.uuid,keyframes:o};this.createKeyframeTracks(s,r)}buildTranslateTrack(e,t,n,r){if(t.default&&t.default.stride===3){let n=t.default,i=Array.from(n.times),a=Array.from(n.values),o=new l(e.uuid+`.position`,i,a),s=this.getInterpolationInfo(t);this.applyInterpolation(o,s,t),r.push(o);return}let i=this.getTimesForAllAxes(t);if(i.length===0)return;let a=[],o=this.getInterpolationInfo(t);for(let e=0;e<i.length;e++){let r=i[e],o=this.getValueAtTime(t.X,r,n.x),s=this.getValueAtTime(t.Y,r,n.y),c=this.getValueAtTime(t.Z,r,n.z);a.push(o,s,c)}let s=new l(e.uuid+`.position`,i,a);this.applyInterpolation(s,o),r.push(s)}buildRotateTrack(e,n,r,i,a,o){let s=r.ANGLE||r.default;if(!s)return;let c=Array.from(s.times);if(c.length===0)return;let l=[];for(let e of a.transformOrder)if(a.transforms[e]===`rotate`){let n=a.transformData[e];l.push({sid:e,axis:new t(n.axis[0],n.axis[1],n.axis[2]),defaultAngle:n.angle})}let u=new B,d=new B,f=new B,p=[],m=this.getInterpolationInfo(r);for(let e=0;e<c.length;e++){let t=c[e];u.identity();for(let e of l){let r;r=e.sid===n?this.getValueAtTime(s,t,e.defaultAngle):e.defaultAngle;let i=y.degToRad(r);f.setFromAxisAngle(e.axis,i),u.multiply(f)}e>0&&d.dot(u)<0&&(u.x=-u.x,u.y=-u.y,u.z=-u.z,u.w=-u.w),d.copy(u),p.push(u.x,u.y,u.z,u.w)}let h=new x(e.uuid+`.quaternion`,c,p);this.applyInterpolation(h,m),o.push(h)}buildScaleTrack(e,t,n,r){if(t.default&&t.default.stride===3){let n=t.default,i=Array.from(n.times),a=Array.from(n.values),o=new l(e.uuid+`.scale`,i,a),s=this.getInterpolationInfo(t);this.applyInterpolation(o,s,t),r.push(o);return}let i=this.getTimesForAllAxes(t);if(i.length===0)return;let a=[],o=this.getInterpolationInfo(t);for(let e=0;e<i.length;e++){let r=i[e],o=this.getValueAtTime(t.X,r,n.x),s=this.getValueAtTime(t.Y,r,n.y),c=this.getValueAtTime(t.Z,r,n.z);a.push(o,s,c)}let s=new l(e.uuid+`.scale`,i,a);this.applyInterpolation(s,o),r.push(s)}getTimesForAllAxes(e){let t=[];return e.X&&(t=t.concat(Array.from(e.X.times))),e.Y&&(t=t.concat(Array.from(e.Y.times))),e.Z&&(t=t.concat(Array.from(e.Z.times))),e.ANGLE&&(t=t.concat(Array.from(e.ANGLE.times))),e.default&&(t=t.concat(Array.from(e.default.times))),t=[...new Set(t)].sort((e,t)=>e-t),t}getValueAtTime(e,t,n){if(!e)return n;let r=e.times,i=e.values,a=e.interpolation;for(let n=0;n<r.length;n++){if(r[n]===t)return i[n];if(r[n]>t){if(n===0)return i[0];let o=n-1,s=n,c=r[o],l=r[s],u=i[o],d=i[s],f=a?a[o]:`LINEAR`;return f===`STEP`?u:f===`BEZIER`&&e.inTangent&&e.outTangent?this.evaluateBezierComponent(e,o,s,c,l,t):u+(t-c)/(l-c)*(d-u)}}return i[i.length-1]}evaluateBezierComponent(e,t,n,r,i,a){let o=e.values,s=e.inTangent,c=e.outTangent,l=e.inTangentStride||1,u=o[t],d=o[n],f,p,m,h;l===2?(f=c[t*2],p=c[t*2+1],m=s[n*2],h=s[n*2+1]):(f=r+(i-r)/3,p=c[t],m=i-(i-r)/3,h=s[n]);let g=(a-r)/(i-r);for(let e=0;e<8;e++){let e=g*g,t=e*g,n=1-g,o=n*n,s=o*n*r+3*o*g*f+3*n*e*m+t*i,c=3*o*(f-r)+6*n*g*(m-f)+3*e*(i-m);if(Math.abs(c)<1e-10)break;let l=s-a;if(Math.abs(l)<1e-10)break;g-=l/c,g=Math.max(0,Math.min(1,g))}let _=g*g,v=_*g,y=1-g,b=y*y;return b*y*u+3*b*g*p+3*y*_*h+v*d}getInterpolationInfo(e){let t=[`X`,`Y`,`Z`,`ANGLE`,`default`],n=null,r=!0;for(let i of t){let t=e[i];if(!t||!t.interpolation)continue;let a=t.interpolation;for(let e=0;e<a.length;e++){let t=a[e];n===null?n=t:t!==n&&(r=!1)}}return{type:n||`LINEAR`,uniform:r}}applyInterpolation(e,t,n=null){if(t.type===`STEP`&&t.uniform)e.setInterpolation(u);else if(t.type===`BEZIER`&&t.uniform&&n){let t=n.default;t&&t.inTangent&&t.outTangent&&(e.setInterpolation(s),e.settings={inTangents:new Float32Array(t.inTangent),outTangents:new Float32Array(t.outTangent)})}}prepareAnimationData(e,t){let n=[];for(let t in e)n.push({time:parseFloat(t),value:e[t]});n.sort((e,t)=>e.time-t.time);for(let e=0;e<16;e++)this.transformAnimationData(n,e,t.elements[e]);return n}createKeyframeTracks(e,t){let n=e.keyframes,r=e.name,i=[],a=[],o=[],s=[],c=this.position,u=this.quaternion,d=this.scale,f=this.matrix;for(let e=0,t=n.length;e<t;e++){let t=n[e],r=t.time,l=t.value;f.fromArray(l).transpose(),f.decompose(c,u,d),i.push(r),a.push(c.x,c.y,c.z),o.push(u.x,u.y,u.z,u.w),s.push(d.x,d.y,d.z)}return a.length>0&&t.push(new l(r+`.position`,i,a)),o.length>0&&t.push(new x(r+`.quaternion`,i,o)),s.length>0&&t.push(new l(r+`.scale`,i,s)),t}transformAnimationData(e,t,n){let r,i=!0,a,o;for(a=0,o=e.length;a<o;a++)r=e[a],r.value[t]===void 0?r.value[t]=null:i=!1;if(i===!0)for(a=0,o=e.length;a<o;a++)r=e[a],r.value[t]=n;else this.createMissingKeyframes(e,t)}createMissingKeyframes(e,t){let n,r;for(let i=0,a=e.length;i<a;i++){let a=e[i];if(a.value[t]===null){if(n=this.getPrev(e,i,t),r=this.getNext(e,i,t),n===null){a.value[t]=r.value[t];continue}if(r===null){a.value[t]=n.value[t];continue}this.interpolate(a,n,r,t)}}}getPrev(e,t,n){for(;t>=0;){let r=e[t];if(r.value[n]!==null)return r;t--}return null}getNext(e,t,n){for(;t<e.length;){let r=e[t];if(r.value[n]!==null)return r;t++}return null}interpolate(e,t,n,r){if(n.time-t.time===0){e.value[r]=t.value[r];return}e.value[r]=(e.time-t.time)*(n.value[r]-t.value[r])/(n.time-t.time)+t.value[r]}buildAnimationClip(e){let t=[],n=e.name,r=e.end-e.start||-1,i=e.animations;for(let e=0,n=i.length;e<n;e++){let n=this.getAnimation(i[e]);for(let e=0,r=n.length;e<r;e++)t.push(n[e])}return new N(n,r,t)}getAnimationClip(e){return this.getBuild(this.library.clips[e],this.buildAnimationClip.bind(this))}buildController(e){let t={id:e.id},n=this.library.geometries[t.id];return e.skin!==void 0&&(t.skin=this.buildSkin(e.skin),n.sources.skinIndices=t.skin.indices,n.sources.skinWeights=t.skin.weights),t}buildSkin(t){let n={joints:[],indices:{array:[],stride:4},weights:{array:[],stride:4}},r=t.sources,i=t.vertexWeights,a=i.vcount,o=i.v,s=i.inputs.JOINT.offset,c=i.inputs.WEIGHT.offset,l=t.sources[t.joints.inputs.JOINT],u=t.sources[t.joints.inputs.INV_BIND_MATRIX],d=r[i.inputs.WEIGHT.id].array,f=0,p,m,h;for(p=0,h=a.length;p<h;p++){let e=a[p],t=[];for(m=0;m<e;m++){let e=o[f+s],n=d[o[f+c]];t.push({index:e,weight:n}),f+=2}for(t.sort(g),m=0;m<4;m++){let e=t[m];e===void 0?(n.indices.array.push(0),n.weights.array.push(0)):(n.indices.array.push(e.index),n.weights.array.push(e.weight))}}for(t.bindShapeMatrix?n.bindMatrix=new e().fromArray(t.bindShapeMatrix).transpose():n.bindMatrix=new e().identity(),p=0,h=l.array.length;p<h;p++){let t=l.array[p],r=new e().fromArray(u.array,p*u.stride).transpose();n.joints.push({name:t,boneInverse:r})}return n;function g(e,t){return t.weight-e.weight}}getController(e){return this.getBuild(this.library.controllers[e],this.buildController.bind(this))}buildImage(e){return e.build===void 0?e.init_from:e.build}getImage(e){let t=this.library.images[e];return t===void 0?(console.warn(`THREE.ColladaLoader: Couldn't find image with ID:`,e),null):this.getBuild(t,this.buildImage.bind(this))}buildEffect(e){return e}getEffect(e){return this.getBuild(this.library.effects[e],this.buildEffect.bind(this))}getTextureLoader(e){let t,n=e.slice((e.lastIndexOf(`.`)-1>>>0)+2);switch(n=n.toLowerCase(),n){case`tga`:t=this.tgaLoader;break;default:t=this.textureLoader}return t}buildMaterial(e){let t=this.getEffect(e.url),n=t.profile.technique,i;switch(n.type){case`phong`:case`blinn`:i=new P;break;case`lambert`:i=new O;break;default:i=new F;break}i.name=e.name||``;let a=this;function o(e,n=null){let i=t.profile.samplers[e.id],o=null;if(i!==void 0){let e=t.profile.surfaces[i.source];o=a.getImage(e.init_from)}else console.warn(`THREE.ColladaLoader: Undefined sampler. Access image directly (see #12530).`),o=a.getImage(e.id);if(o!==null){let t=a.getTextureLoader(o);if(t!==void 0){let i=t.load(o),s=e.extra;if(s!==void 0&&s.technique!==void 0&&a.isEmpty(s.technique)===!1){let e=s.technique;i.wrapS=e.wrapU?r:C,i.wrapT=e.wrapV?r:C,i.offset.set(e.offsetU||0,e.offsetV||0),i.repeat.set(e.repeatU||1,e.repeatV||1)}else i.wrapS=r,i.wrapT=r;return n!==null&&(i.colorSpace=n),i}else return console.warn(`THREE.ColladaLoader: Loader for texture %s not found.`,o),null}else return console.warn(`THREE.ColladaLoader: Couldn't create texture with ID:`,e.id),null}let s=n.parameters;for(let e in s){let t=s[e];switch(e){case`diffuse`:t.color&&i.color.fromArray(t.color),t.texture&&(i.map=o(t.texture,R));break;case`specular`:t.color&&i.specular&&i.specular.fromArray(t.color),t.texture&&(i.specularMap=o(t.texture));break;case`bump`:t.texture&&(i.normalMap=o(t.texture));break;case`ambient`:t.texture&&(i.lightMap=o(t.texture,R));break;case`shininess`:t.float&&i.shininess&&(i.shininess=t.float);break;case`emission`:t.color&&i.emissive&&i.emissive.fromArray(t.color),t.texture&&(i.emissiveMap=o(t.texture,R));break}}E.colorSpaceToWorking(i.color,R),i.specular&&E.colorSpaceToWorking(i.specular,R),i.emissive&&E.colorSpaceToWorking(i.emissive,R);let c=s.transparent,l=s.transparency;if(l===void 0&&c&&(l={float:1}),c===void 0&&l&&(c={opaque:`A_ONE`,data:{color:[1,1,1,1]}}),c&&l)if(c.data.texture)i.transparent=!0;else{let e=c.data.color;switch(c.opaque){case`A_ONE`:i.opacity=e[3]*l.float;break;case`RGB_ZERO`:i.opacity=1-e[0]*l.float;break;case`A_ZERO`:i.opacity=1-e[3]*l.float;break;case`RGB_ONE`:i.opacity=e[0]*l.float;break;default:console.warn(`THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.`,c.opaque)}i.opacity<1&&(i.transparent=!0)}if(n.extra!==void 0&&n.extra.technique!==void 0){let e=n.extra.technique;for(let t in e){let n=e[t];switch(t){case`double_sided`:i.side=n===1?2:0;break;case`bump`:i.normalMap=o(n.texture),i.normalScale=new H(1,1);break}}}return i}getMaterial(e){return this.getBuild(this.library.materials[e],this.buildMaterial.bind(this))}buildCamera(e){let t;switch(e.optics.technique){case`perspective`:t=new j(e.optics.parameters.yfov,e.optics.parameters.aspect_ratio,e.optics.parameters.znear,e.optics.parameters.zfar);break;case`orthographic`:let n=e.optics.parameters.ymag,r=e.optics.parameters.xmag,i=e.optics.parameters.aspect_ratio;r=r===void 0?n*i:r,n=n===void 0?r/i:n,r*=.5,n*=.5,t=new w(-r,r,n,-n,e.optics.parameters.znear,e.optics.parameters.zfar);break;default:t=new j;break}return t.name=e.name||``,t}getCamera(e){let t=this.library.cameras[e];return t===void 0?(console.warn(`THREE.ColladaLoader: Couldn't find camera with ID:`,e),null):this.getBuild(t,this.buildCamera.bind(this))}buildLight(e){let t;switch(e.technique){case`directional`:t=new z;break;case`point`:t=new T;break;case`spot`:t=new p;break;case`ambient`:t=new D;break}return e.parameters.color&&t.color.copy(e.parameters.color),e.parameters.distance&&(t.distance=e.parameters.distance),e.parameters.falloffAngle&&(t.angle=y.degToRad(e.parameters.falloffAngle)),t}getLight(e){let t=this.library.lights[e];return t===void 0?(console.warn(`THREE.ColladaLoader: Couldn't find light with ID:`,e),null):this.getBuild(t,this.buildLight.bind(this))}groupPrimitives(e){let t={};for(let n=0;n<e.length;n++){let r=e[n];t[r.type]===void 0&&(t[r.type]=[]),t[r.type].push(r)}return t}checkUVCoordinates(e){let t=0;for(let n=0,r=e.length;n<r;n++)e[n].hasUV===!0&&t++;t>0&&t<e.length&&(e.uvsNeedsFix=!0)}buildGeometry(e){let t={},n=e.sources,r=e.vertices,i=e.primitives;if(i.length===0)return{};let a=this.groupPrimitives(i);for(let e in a){let i=a[e];this.checkUVCoordinates(i),t[e]=this.buildGeometryType(i,n,r)}return t}buildGeometryType(e,t,n){let r={},i={array:[],stride:0},a={array:[],stride:0},o={array:[],stride:0},s={array:[],stride:0},c={array:[],stride:0},l={array:[],stride:4},u={array:[],stride:4},d=new I,f=[],p=0;for(let r=0;r<e.length;r++){let m=e[r],h=m.inputs,g=0;switch(m.type){case`lines`:case`linestrips`:g=m.count*2;break;case`triangles`:g=m.count*3;break;case`polygons`:case`polylist`:for(let e=0;e<m.count;e++){let t=m.vcount[e];switch(t){case 3:g+=3;break;case 4:g+=6;break;default:g+=(t-2)*3;break}}break;default:console.warn(`THREE.ColladaLoader: Unknown primitive type:`,m.type)}d.addGroup(p,g,r),p+=g,m.material&&f.push(m.material);for(let r in h){let d=h[r];switch(r){case`VERTEX`:for(let r in n){let f=n[r];switch(r){case`POSITION`:let n=i.array.length;if(this.buildGeometryData(m,t[f],d.offset,i.array),i.stride=t[f].stride,t.skinWeights&&t.skinIndices&&(this.buildGeometryData(m,t.skinIndices,d.offset,l.array),this.buildGeometryData(m,t.skinWeights,d.offset,u.array)),m.hasUV===!1&&e.uvsNeedsFix===!0){let e=(i.array.length-n)/i.stride;for(let t=0;t<e;t++)o.array.push(0,0)}break;case`NORMAL`:this.buildGeometryData(m,t[f],d.offset,a.array),a.stride=t[f].stride;break;case`COLOR`:this.buildGeometryData(m,t[f],d.offset,c.array),c.stride=t[f].stride;break;case`TEXCOORD`:this.buildGeometryData(m,t[f],d.offset,o.array),o.stride=t[f].stride;break;case`TEXCOORD1`:this.buildGeometryData(m,t[f],d.offset,s.array),o.stride=t[f].stride;break;default:console.warn(`THREE.ColladaLoader: Semantic "%s" not handled in geometry build process.`,r)}}break;case`NORMAL`:this.buildGeometryData(m,t[d.id],d.offset,a.array),a.stride=t[d.id].stride;break;case`COLOR`:this.buildGeometryData(m,t[d.id],d.offset,c.array,!0),c.stride=t[d.id].stride;break;case`TEXCOORD`:this.buildGeometryData(m,t[d.id],d.offset,o.array),o.stride=t[d.id].stride;break;case`TEXCOORD1`:this.buildGeometryData(m,t[d.id],d.offset,s.array),s.stride=t[d.id].stride;break}}}return i.array.length>0&&d.setAttribute(`position`,new L(i.array,i.stride)),a.array.length>0&&d.setAttribute(`normal`,new L(a.array,a.stride)),c.array.length>0&&d.setAttribute(`color`,new L(c.array,c.stride)),o.array.length>0&&d.setAttribute(`uv`,new L(o.array,o.stride)),s.array.length>0&&d.setAttribute(`uv1`,new L(s.array,s.stride)),l.array.length>0&&d.setAttribute(`skinIndex`,new L(l.array,l.stride)),u.array.length>0&&d.setAttribute(`skinWeight`,new L(u.array,u.stride)),r.data=d,r.type=e[0].type,r.materialKeys=f,r}buildGeometryData(e,n,r,i,a=!1){let s=e.p,c=e.stride,l=e.vcount,u=this.tempColor;function d(e){let t=s[e+r]*m,n=t+m;for(;t<n;t++)i.push(p[t]);if(a){let e=i.length-m-1;u.setRGB(i[e+0],i[e+1],i[e+2],R),i[e+0]=u.r,i[e+1]=u.g,i[e+2]=u.b}}let p=n.array,m=n.stride;if(e.vcount!==void 0){let e=0;for(let n=0,r=l.length;n<r;n++){let r=l[n];if(r===4){let t=e+c*0,n=e+c*1,r=e+c*2,i=e+c*3;d(t),d(n),d(i),d(n),d(r),d(i)}else if(r===3){let t=e+c*0,n=e+c*1,r=e+c*2;d(t),d(n),d(r)}else if(r>4){let n=[];for(let i=0;i<r;i++){let r=s[e+c*i]*m,a=p[r],o=p[r+1],l=p[r+2];n.push(new t(a,o,l))}let i=new t,a=new f;a.a=n[0],a.b=n[1],a.c=n[2],a.getNormal(i);let l=[];if(Math.abs(i.x)>Math.abs(i.y)&&Math.abs(i.x)>Math.abs(i.z))for(let e=0;e<r;e++)l.push(new H(n[e].y,n[e].z));else if(Math.abs(i.y)>Math.abs(i.z))for(let e=0;e<r;e++)l.push(new H(n[e].x,n[e].z));else for(let e=0;e<r;e++)l.push(new H(n[e].x,n[e].y));let u=o.isClockWise(l);u===!0&&l.reverse();let h=o.triangulateShape(l,[]);for(let t=0;t<h.length;t++){let n=h[t],i,a,o;u===!1?(i=n[0],a=n[1],o=n[2]):(i=r-1-n[0],a=r-1-n[2],o=r-1-n[1]);let s=e+c*i,l=e+c*a,f=e+c*o;d(s),d(l),d(f)}}e+=c*r}}else for(let e=0,t=s.length;e<t;e+=c)d(e)}getGeometry(e){return this.getBuild(this.library.geometries[e],this.buildGeometry.bind(this))}buildKinematicsModel(e){return e.build===void 0?e:e.build}getKinematicsModel(e){return this.getBuild(this.library.kinematicsModels[e],this.buildKinematicsModel.bind(this))}buildKinematicsScene(e){return e.build===void 0?e:e.build}getKinematicsScene(e){return this.getBuild(this.library.kinematicsScenes[e],this.buildKinematicsScene.bind(this))}setupKinematics(){let t=Object.keys(this.library.kinematicsModels)[0],n=Object.keys(this.library.kinematicsScenes)[0],r=Object.keys(this.library.visualScenes)[0];if(t===void 0||n===void 0)return;let i=this.getKinematicsModel(t),a=this.getKinematicsScene(n),o=this.getVisualScene(r),s=a.bindJointAxis,c={},l=this.collada,u=this;for(let e=0,t=s.length;e<t;e++){let t=s[e],n=l.querySelector(`[sid="`+t.target+`"]`);if(n){let e=n.parentElement;d(t.jointIndex,e)}}function d(e,t){let n=t.getAttribute(`name`),r=i.joints[e],a=u.buildTransformList(t);o.traverse(function(t){t.name===n&&(c[e]={object:t,transforms:a,joint:r,position:r.zeroPosition})})}let f=new e,p=this.matrix;this.kinematics={joints:i&&i.joints,getJointValue:function(e){let t=c[e];if(t)return t.position;console.warn(`THREE.ColladaLoader: Joint `+e+` doesn't exist.`)},setJointValue:function(e,t){let n=c[e];if(n){let r=n.joint;if(t>r.limits.max||t<r.limits.min)console.warn(`THREE.ColladaLoader: Joint `+e+` value `+t+` outside of limits (min: `+r.limits.min+`, max: `+r.limits.max+`).`);else if(r.static)console.warn(`THREE.ColladaLoader: Joint `+e+` is static.`);else{let i=n.object,a=r.axis,o=n.transforms;p.identity();for(let n=0;n<o.length;n++){let i=o[n];if(i.sid&&i.sid.indexOf(e)!==-1)switch(r.type){case`revolute`:p.multiply(f.makeRotationAxis(a,y.degToRad(t)));break;case`prismatic`:p.multiply(f.makeTranslation(a.x*t,a.y*t,a.z*t));break;default:console.warn(`THREE.ColladaLoader: Unknown joint type: `+r.type);break}else switch(i.type){case`matrix`:p.multiply(i.obj);break;case`translate`:p.multiply(f.makeTranslation(i.obj.x,i.obj.y,i.obj.z));break;case`scale`:p.scale(i.obj);break;case`rotate`:p.multiply(f.makeRotationAxis(i.obj,i.angle));break}}i.matrix.copy(p),i.matrix.decompose(i.position,i.quaternion,i.scale),c[e].position=t}}else console.warn(`THREE.ColladaLoader: Joint `+e+` does not exist.`)}}}buildTransformList(n){let r=[],i=this.collada.querySelector(`[id="`+n.id+`"]`);for(let n=0;n<i.childNodes.length;n++){let a=i.childNodes[n];if(a.nodeType!==1)continue;let o,s;switch(a.nodeName){case`matrix`:o=K(a.textContent);let n=new e().fromArray(o).transpose();r.push({sid:a.getAttribute(`sid`),type:a.nodeName,obj:n});break;case`translate`:case`scale`:o=K(a.textContent),s=new t().fromArray(o),r.push({sid:a.getAttribute(`sid`),type:a.nodeName,obj:s});break;case`rotate`:o=K(a.textContent),s=new t().fromArray(o);let i=y.degToRad(o[3]);r.push({sid:a.getAttribute(`sid`),type:a.nodeName,obj:s,angle:i});break}}return r}buildSkeleton(e,t){let n=[],r=[],a,o,s;for(a=0;a<e.length;a++){let r=e[a],i;if(this.hasNode(r))i=this.getNode(r),this.buildBoneHierarchy(i,t,n);else if(this.hasVisualScene(r)){let e=this.library.visualScenes[r].children;for(let r=0;r<e.length;r++){let i=e[r];if(i.type===`JOINT`){let e=this.getNode(i.id);this.buildBoneHierarchy(e,t,n)}}}else console.error(`THREE.ColladaLoader: Unable to find root bone of skeleton with ID:`,r)}for(a=0;a<t.length;a++)for(o=0;o<n.length;o++)if(s=n[o],s.bone.name===t[a].name){r[a]=s,s.processed=!0;break}for(a=0;a<n.length;a++)s=n[a],s.processed===!1&&(r.push(s),s.processed=!0);let c=[],l=[];for(a=0;a<r.length;a++)s=r[a],c.push(s.bone),l.push(s.boneInverse);return new i(c,l)}buildBoneHierarchy(t,n,r){t.traverse(function(t){if(t.isBone===!0){let i;for(let e=0;e<n.length;e++){let r=n[e];if(r.name===t.name){i=r.boneInverse;break}}i===void 0&&(i=new e),r.push({bone:t,boneInverse:i,processed:!1})}})}buildNode(e){let t=[],n=e.matrix,r=e.nodes,i=e.type,o=e.instanceCameras,s=e.instanceControllers,c=e.instanceLights,l=e.instanceGeometries,u=e.instanceNodes;for(let e=0,n=r.length;e<n;e++)t.push(this.getNode(r[e]));for(let e=0,n=o.length;e<n;e++){let n=this.getCamera(o[e]);n!==null&&t.push(n.clone())}for(let e=0,n=s.length;e<n;e++){let n=s[e],r=this.getController(n.id),i=this.getGeometry(r.id),a=this.buildObjects(i,n.materials),o=n.skeletons,c=r.skin.joints,l=this.buildSkeleton(o,c);for(let e=0,n=a.length;e<n;e++){let n=a[e];n.isSkinnedMesh&&(n.bind(l,r.skin.bindMatrix),n.normalizeSkinWeights()),t.push(n)}}for(let e=0,n=c.length;e<n;e++){let n=this.getLight(c[e]);n!==null&&t.push(n.clone())}for(let e=0,n=l.length;e<n;e++){let n=l[e],r=this.getGeometry(n.id),i=this.buildObjects(r,n.materials);for(let e=0,n=i.length;e<n;e++)t.push(i[e])}for(let e=0,n=u.length;e<n;e++)t.push(this.getNode(u[e]).clone());let d;if(r.length===0&&t.length===1)d=t[0];else{d=i===`JOINT`?new k:new a;for(let e=0;e<t.length;e++)d.add(t[e])}return d.name=i===`JOINT`?e.sid:e.name,i!==`JOINT`&&this.hasPivotTransforms(e)?this.wrapWithTransformHierarchy(d,e):(d.matrix.copy(n),d.matrix.decompose(d.position,d.quaternion,d.scale),d)}wrapWithTransformHierarchy(n,r){let i=r.id;this.transformNodes[i]={};let o=r.transformOrder,s=r.transformData,c=new a;c.name=r.name;let l=c;for(let n=0;n<o.length;n++){let c=o[n],u=s[c],d=new a;switch(d.name=r.name+`_`+c,u.type){case`translate`:d.position.set(u.x,u.y,u.z);break;case`rotate`:{let e=new t(u.axis[0],u.axis[1],u.axis[2]),n=y.degToRad(u.angle);d.quaternion.setFromAxisAngle(e,n),d.userData.rotationAxis=e;break}case`scale`:d.scale.set(u.x,u.y,u.z);break;case`matrix`:new e().fromArray(u.array).transpose().decompose(d.position,d.quaternion,d.scale);break}this.transformNodes[i][c]=d,l.add(d),l=d}return l.add(n),c}resolveMaterialBinding(e,t){let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];i===void 0?(console.warn(`THREE.ColladaLoader: Material with key %s not found. Apply fallback material.`,e[r]),n.push(this.fallbackMaterial)):n.push(this.getMaterial(i))}return n}get fallbackMaterial(){return this._fallbackMaterial===void 0&&(this._fallbackMaterial=new F({name:d.DEFAULT_MATERIAL_NAME,color:16711935})),this._fallbackMaterial}buildObjects(e,t){let n=[];for(let r in e){let i=e[r],a=this.resolveMaterialBinding(i.materialKeys,t);if(a.length===0&&(r===`lines`||r===`linestrips`?a.push(new V):a.push(new P)),r===`lines`||r===`linestrips`)for(let e=0,t=a.length;e<t;e++){let t=a[e];if(t.isMeshPhongMaterial===!0||t.isMeshLambertMaterial===!0){let n=new V;n.color.copy(t.color),n.opacity=t.opacity,n.transparent=t.transparent,a[e]=n}}let o=i.data.attributes.skinIndex!==void 0,s=a.length===1?a[0]:a,c;switch(r){case`lines`:c=new v(i.data,s);break;case`linestrips`:c=new h(i.data,s);break;case`triangles`:case`polygons`:case`polylist`:c=o?new m(i.data,s):new S(i.data,s);break}n.push(c)}return n}hasNode(e){return this.library.nodes[e]!==void 0}getNode(e){return this.getBuild(this.library.nodes[e],this.buildNode.bind(this))}buildVisualScene(e){let t=new a;t.name=e.name;let n=e.children;for(let e=0;e<n.length;e++){let r=n[e];t.add(this.getNode(r.id))}return t}hasVisualScene(e){return this.library.visualScenes[e]!==void 0}getVisualScene(e){return this.getBuild(this.library.visualScenes[e],this.buildVisualScene.bind(this))}parseScene(e){let t=W(e,`instance_visual_scene`)[0];return this.getVisualScene(this.parseId(t.getAttribute(`url`)))}parseId(e){return e.substring(1)}setupAnimations(){let e=this.library.clips;if(this.isEmpty(e)===!0){if(this.isEmpty(this.library.animations)===!1){let e=[];for(let t in this.library.animations){let n=this.getAnimation(t);for(let t=0,r=n.length;t<r;t++)e.push(n[t])}this.buildDeferredPivotAnimationTracks(e),this.animations.push(new N(`default`,-1,e))}}else for(let t in e)this.animations.push(this.getAnimationClip(t))}buildDeferredPivotAnimationTracks(e){for(let t in this.deferredPivotAnimations){let n=this.library.nodes[t];if(!n)continue;let r=this.deferredPivotAnimations[t];this.buildTransformHierarchyTracks(t,r,n,e)}}buildTransformHierarchyTracks(e,t,n,r){let i=this.transformNodes[e];if(!i){console.warn(`THREE.ColladaLoader: Transform hierarchy not found for node:`,e);return}for(let e in t){let a=i[e];if(!a)continue;let o=n.transforms[e],s=n.transformData[e],c=t[e];switch(o){case`translate`:this.buildHierarchyTranslateTrack(a,c,s,r);break;case`rotate`:this.buildHierarchyRotateTrack(a,c,s,r);break;case`scale`:this.buildHierarchyScaleTrack(a,c,s,r);break}}}buildHierarchyTranslateTrack(e,t,n,r){if(t.default&&t.default.stride===3){let n=t.default,i=new l(e.uuid+`.position`,Array.from(n.times),Array.from(n.values)),a=this.getInterpolationInfo(t);this.applyInterpolation(i,a,t),r.push(i);return}let i=this.getTimesForAllAxes(t);if(i.length===0)return;let a=[],o=this.getInterpolationInfo(t);for(let e=0;e<i.length;e++){let r=i[e],o=this.getValueAtTime(t.X,r,n.x),s=this.getValueAtTime(t.Y,r,n.y),c=this.getValueAtTime(t.Z,r,n.z);a.push(o,s,c)}let s=new l(e.uuid+`.position`,i,a);this.applyInterpolation(s,o),r.push(s)}buildHierarchyRotateTrack(e,n,r,i){let a=n.ANGLE||n.default;if(!a)return;let o=Array.from(a.times);if(o.length===0)return;let s=e.userData.rotationAxis||new t(r.axis[0],r.axis[1],r.axis[2]),c=new B,l=new B,u=[],d=this.getInterpolationInfo(n);for(let e=0;e<o.length;e++){let t=o[e],n=this.getValueAtTime(a,t,r.angle),i=y.degToRad(n);c.setFromAxisAngle(s,i),e>0&&l.dot(c)<0&&(c.x=-c.x,c.y=-c.y,c.z=-c.z,c.w=-c.w),l.copy(c),u.push(c.x,c.y,c.z,c.w)}let f=new x(e.uuid+`.quaternion`,o,u);this.applyInterpolation(f,d),i.push(f)}buildHierarchyScaleTrack(e,t,n,r){if(t.default&&t.default.stride===3){let n=t.default,i=new l(e.uuid+`.scale`,Array.from(n.times),Array.from(n.values)),a=this.getInterpolationInfo(t);this.applyInterpolation(i,a,t),r.push(i);return}let i=this.getTimesForAllAxes(t);if(i.length===0)return;let a=[],o=this.getInterpolationInfo(t);for(let e=0;e<i.length;e++){let r=i[e],o=this.getValueAtTime(t.X,r,n.x),s=this.getValueAtTime(t.Y,r,n.y),c=this.getValueAtTime(t.Z,r,n.z);a.push(o,s,c)}let s=new l(e.uuid+`.scale`,i,a);this.applyInterpolation(s,o),r.push(s)}},Z=class extends d{load(e,t,r,i){let a=this,o=a.path===``?M.extractUrlBase(e):a.path,s=new n(a.manager);s.setPath(a.path),s.setRequestHeader(a.requestHeader),s.setWithCredentials(a.withCredentials),s.load(e,function(n){try{t(a.parse(n,o))}catch(t){i?i(t):console.error(t),a.manager.itemError(e)}},r,i)}parse(e,t){if(e.length===0)return{scene:new g};let n=new Y().parse(e);if(n===null)return null;let{library:r,asset:i,collada:a}=n,o=new c(this.manager);o.setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin);let s;U&&(s=new U(this.manager),s.setPath(this.resourcePath||t));let{scene:l,animations:u,kinematics:d}=new X(r,a,o,s).compose();return l.animations=u,i.upAxis===`Z_UP`&&(console.warn(`THREE.ColladaLoader: You are loading an asset with a Z-UP coordinate system. The loader just rotates the asset to transform it into Y-UP. The vertex data are not converted, see #24289.`),l.rotation.set(-Math.PI/2,0,0)),l.scale.multiplyScalar(i.unit),{get animations(){return console.warn(`THREE.ColladaLoader: Please access animations over scene.animations now.`),u},kinematics:d,library:r,scene:l}}};export{Z as ColladaLoader};
@@ -0,0 +1 @@
1
+ .drawing-viewer[data-v-6f438c82]{color:#172033;background:#edf2f7;flex-direction:column;height:100%;min-height:360px;display:flex}.drawing-toolbar[data-v-6f438c82]{z-index:2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f8fafceb;border-bottom:1px solid #94a3b859;justify-content:space-between;align-items:center;gap:16px;min-height:46px;padding:8px 14px;display:flex;position:sticky;top:0}.drawing-title[data-v-6f438c82]{align-items:center;gap:10px;min-width:0;display:flex}.drawing-title span[data-v-6f438c82]{color:#fff;letter-spacing:0;background:#0f766e;border-radius:6px;justify-content:center;align-items:center;height:24px;padding:0 8px;font-size:11px;font-weight:800;display:inline-flex}.drawing-title strong[data-v-6f438c82]{color:#172033;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:800;overflow:hidden}.drawing-actions[data-v-6f438c82]{flex-shrink:0;align-items:center;gap:6px;display:flex}.drawing-actions button[data-v-6f438c82]{color:#0f172a;cursor:pointer;background:#fff;border:1px solid #64748b47;border-radius:6px;min-width:32px;height:28px;font-size:12px;font-weight:800}.drawing-actions button[data-v-6f438c82]:hover{color:#0f766e;border-color:#0f766e80}.drawing-actions span[data-v-6f438c82]{color:#64748b;text-align:center;min-width:48px;font-size:12px;font-weight:800}.drawing-stage[data-v-6f438c82]{flex:1;min-height:0;position:relative;overflow:hidden}.drawing-scroll[data-v-6f438c82]{height:100%;padding:22px;overflow:auto}.drawing-canvas[data-v-6f438c82]{width:100%;min-height:420px;transition:transform .18s,zoom .18s}.drawing-canvas[data-v-6f438c82] .drawing-svg,.drawing-canvas[data-v-6f438c82] svg{background:#fff;border-radius:10px;max-width:100%;height:auto;margin:0 auto;display:block;box-shadow:0 18px 42px #0f172a1f}.drawing-canvas[data-v-6f438c82] .drawing-mxgraph{background:#fff;border-radius:10px;min-height:420px;overflow:hidden;box-shadow:0 18px 42px #0f172a1f}.drawing-state[data-v-6f438c82]{z-index:1;color:#64748b;text-align:center;justify-content:center;align-items:center;padding:24px;font-size:14px;font-weight:700;display:flex;position:absolute;inset:0}.drawing-state.error[data-v-6f438c82]{color:#b42318}@media (width<=720px){.drawing-toolbar[data-v-6f438c82]{flex-direction:column;align-items:flex-start}.drawing-actions[data-v-6f438c82]{justify-content:space-between;width:100%}.drawing-scroll[data-v-6f438c82]{padding:12px}}
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./rough.esm-DZoaBsBN.js","./index-kFSstoL8.js","./index-D8hVflyC.css","./prod-CY-THQBC.js","./chunk-K2UTITRG-B-1sR338.js","./chunk-SRAX5OIU-Nxy8Tzq3.js","./chunk-ZUYEQ4TG-DaQMhOk1.js","./chunk-6U3AYISY-sM9HnDSj.js","./chunk-Z3N5DIM6-DVAc8Qv7.js"])))=>i.map(i=>d[i]);
2
+ import{B as e,C as t,D as n,F as r,T as i,c as a,g as o,h as s,k as c,l,t as u,v as d,y as f,z as p}from"./index-kFSstoL8.js";var m={class:`drawing-viewer`},h={class:`drawing-toolbar`},g={class:`drawing-title`},_={class:`drawing-actions`},v={class:`drawing-stage`},y={key:0,class:`drawing-state`},b={key:1,class:`drawing-state error`},x={class:`drawing-scroll`},S=`https://viewer.diagrams.net/js/viewer-static.min.js`,C=`http://www.w3.org/2000/svg`,w=6e3,T=l(t({__name:`DrawingViewer`,props:{data:{},type:{}},setup(t){let l=t,T=null,E=r(`loading`),D=r(``),O=r(null),k=r(1),A=s(()=>l.type.toLowerCase()),j=s(()=>A.value===`excalidraw`),M=s(()=>A.value===`dio`?`DRAWIO`:A.value.toUpperCase()),N=s(()=>j.value?{transform:`scale(${k.value})`,transformOrigin:`top center`}:{zoom:k.value}),P=e=>Math.min(3,Math.max(.5,Number(e.toFixed(2)))),F=()=>{k.value=P(k.value+.15)},I=()=>{k.value=P(k.value-.15)},L=()=>{k.value=1},R=()=>{let e=O.value;if(e)for(delete e.dataset.drawingRendered;e.firstChild;)e.removeChild(e.firstChild)},z=()=>window.GraphViewer?Promise.resolve():(T||=new Promise((e,t)=>{let n=document.querySelector(`script[src="${S}"]`);if(n){n.addEventListener(`load`,()=>e(),{once:!0}),n.addEventListener(`error`,()=>t(Error(`diagrams.net viewer 加载失败`)),{once:!0});return}let r=document.createElement(`script`);r.src=S,r.async=!0,r.onload=()=>e(),r.onerror=()=>t(Error(`diagrams.net viewer 加载失败`)),document.head.appendChild(r)}),T),B=(e,t=0)=>{let n=Number(e);return Number.isFinite(n)?n:t},V=e=>!e||e===`transparent`||e===`rgba(0, 0, 0, 0)`,H=e=>document.createElementNS(C,e),U=async(e,t,n)=>{let r;try{return await Promise.race([e,new Promise((e,i)=>{r=setTimeout(()=>i(Error(n)),t)})])}finally{r&&clearTimeout(r)}},W=(e,t)=>e.dataset.drawingRendered?!1:(e.dataset.drawingRendered=t,!0),G=(e,t,n)=>{W(e,n)&&(t.classList.add(`drawing-svg`),e.appendChild(t))},K=()=>{let e=console.error,t=(...t)=>{t.map(e=>String(e)).join(` `).includes(`Failed to use workers for subsetting`)||e(...t)};return console.error=t,()=>{console.error===t&&(console.error=e)}},q=e=>Array.isArray(e.points)&&e.points.length?e.points.map(t=>[B(e.x)+B(t[0]),B(e.y)+B(t[1])]):[[B(e.x),B(e.y)],[B(e.x)+B(e.width),B(e.y)+B(e.height)]],J=e=>{let t=q(e),n=t.map(e=>e[0]),r=t.map(e=>e[1]);return Array.isArray(e.points)||(n.push(B(e.x)+B(e.width)),r.push(B(e.y)+B(e.height))),{minX:Math.min(...n),minY:Math.min(...r),maxX:Math.max(...n),maxY:Math.max(...r)}},Y=e=>{let t=e.reduce((e,t)=>{let n=J(t);return{minX:Math.min(e.minX,n.minX),minY:Math.min(e.minY,n.minY),maxX:Math.max(e.maxX,n.maxX),maxY:Math.max(e.maxY,n.maxY)}},{minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0});return Number.isFinite(t.minX)?t:{minX:0,minY:0,maxX:800,maxY:480}},X=e=>{let t=V(e.backgroundColor)?void 0:e.backgroundColor;return{stroke:e.strokeColor||`#1e1e1e`,strokeWidth:Math.max(1,B(e.strokeWidth,1)),roughness:Math.max(0,B(e.roughness,1)),fill:t,fillStyle:e.fillStyle||`hachure`,seed:B(e.seed,1),strokeLineDash:e.strokeStyle===`dashed`?[10,8]:e.strokeStyle===`dotted`?[2,6]:void 0}},Z=(e,t,n)=>{let r=B(t.opacity,100)/100;r<1&&n.setAttribute(`opacity`,String(r)),e.appendChild(n)},Q=e=>{let t=H(`g`),n=B(e.angle);if(n){let r=B(e.x)+B(e.width)/2,i=B(e.y)+B(e.height)/2;t.setAttribute(`transform`,`rotate(${n*180/Math.PI} ${r} ${i})`)}return t},$=(e,t)=>{let n=String(t.text||``);if(!n.trim())return;let r=H(`text`),i=Math.max(8,B(t.fontSize,20)),a=i*1.25,o=n.split(/\r?\n/),s={1:`Virgil, Segoe Print, Comic Sans MS, sans-serif`,2:`Helvetica, Arial, sans-serif`,3:`Cascadia Mono, Menlo, Consolas, monospace`};r.setAttribute(`x`,String(B(t.x))),r.setAttribute(`y`,String(B(t.y)+i)),r.setAttribute(`fill`,t.strokeColor||`#1e1e1e`),r.setAttribute(`font-size`,String(i)),r.setAttribute(`font-family`,s[B(t.fontFamily,1)]||s[1]),r.setAttribute(`font-weight`,String(t.fontWeight||400)),r.setAttribute(`text-anchor`,t.textAlign===`center`?`middle`:t.textAlign===`right`?`end`:`start`),t.textAlign===`center`?r.setAttribute(`x`,String(B(t.x)+B(t.width)/2)):t.textAlign===`right`&&r.setAttribute(`x`,String(B(t.x)+B(t.width))),o.forEach((e,n)=>{let i=H(`tspan`);i.setAttribute(`x`,r.getAttribute(`x`)||String(B(t.x))),i.setAttribute(`dy`,n===0?`0`:String(a)),i.textContent=e,r.appendChild(i)}),Z(e,t,r)},ee=(e,t,n)=>{if(!(t.endArrowhead||t.startArrowhead)||n.length<2)return;let r=n[n.length-1],i=n[n.length-2],a=Math.atan2(r[1]-i[1],r[0]-i[0]),o=Math.max(10,B(t.strokeWidth,1)*7),s=[r[0]-o*Math.cos(a-Math.PI/7),r[1]-o*Math.sin(a-Math.PI/7)],c=[r[0]-o*Math.cos(a+Math.PI/7),r[1]-o*Math.sin(a+Math.PI/7)],l=H(`polygon`);l.setAttribute(`points`,`${r.join(`,`)} ${s.join(`,`)} ${c.join(`,`)}`),l.setAttribute(`fill`,t.strokeColor||`#1e1e1e`),l.setAttribute(`stroke`,t.strokeColor||`#1e1e1e`),Z(e,t,l)},te=async(e,t,n)=>{let{default:r}=await u(async()=>{let{default:e}=await import(`./rough.esm-DZoaBsBN.js`).then(e=>e.n);return{default:e}},__vite__mapDeps([0,1,2]),import.meta.url),i=Y(t),a=Math.max(320,i.maxX-i.minX+160),o=Math.max(220,i.maxY-i.minY+160),s=H(`svg`),c=H(`g`),l=r.svg(s);s.setAttribute(`viewBox`,`${i.minX-80} ${i.minY-80} ${a} ${o}`),s.setAttribute(`width`,String(a)),s.setAttribute(`height`,String(o)),s.setAttribute(`role`,`img`),s.setAttribute(`aria-label`,`Excalidraw rough.js preview`);let d=H(`rect`);d.setAttribute(`x`,String(i.minX-80)),d.setAttribute(`y`,String(i.minY-80)),d.setAttribute(`width`,String(a)),d.setAttribute(`height`,String(o)),d.setAttribute(`fill`,e.appState?.viewBackgroundColor||`#ffffff`),s.appendChild(d),s.appendChild(c),t.forEach(e=>{let t=Q(e),n=X(e),r=B(e.x),i=B(e.y),a=B(e.width),o=B(e.height);if(e.type===`text`)$(t,e);else if(e.type===`rectangle`)Z(t,e,l.rectangle(r,i,a,o,n));else if(e.type===`diamond`)Z(t,e,l.polygon([[r+a/2,i],[r+a,i+o/2],[r+a/2,i+o],[r,i+o/2]],n));else if(e.type===`ellipse`)Z(t,e,l.ellipse(r+a/2,i+o/2,Math.abs(a),Math.abs(o),n));else if(e.type===`line`||e.type===`arrow`||e.type===`freedraw`){let r=q(e);Z(t,e,l.linearPath(r,n)),e.type===`arrow`&&ee(t,e,r)}t.childNodes.length&&c.appendChild(t)}),G(n,s,`rough`)},ne=async(e,t,n)=>{let r=K(),i=setTimeout(r,w+1e3),{exportToSvg:a,restore:o}=await u(async()=>{let{exportToSvg:e,restore:t}=await import(`./prod-CY-THQBC.js`);return{exportToSvg:e,restore:t}},__vite__mapDeps([3,1,2,4,5,6,7,8]),import.meta.url);try{let r=o({elements:t,appState:e.appState||{},files:e.files||{}},null,null,{repairBindings:!0,refreshDimensions:!0});G(n,await a({elements:r.elements.filter(e=>!e.isDeleted),appState:{...r.appState,exportBackground:!0,viewBackgroundColor:r.appState.viewBackgroundColor||`#ffffff`},files:r.files||{}}),`official`)}finally{clearTimeout(i),r()}},re=async e=>{let t=O.value;if(!t)return;let n=JSON.parse(e),r=Array.isArray(n.elements)?n.elements.filter(e=>!e.isDeleted):[];if(!r.length)throw Error(`Excalidraw 文件中没有可预览图元`);try{await U(ne(n,r,t),w,`Excalidraw 官方导出超时,自动切换 rough.js 兼容渲染`)}catch(e){console.warn(e),await te(n,r,t)}},ie=async e=>{let t=O.value;if(!t)return;await z(),await i();let n=document.createElement(`div`);if(n.className=`mxgraph drawing-mxgraph`,n.setAttribute(`data-mxgraph`,JSON.stringify({xml:e,toolbar:`zoom layers lightbox`,nav:!0,resize:!0,"auto-fit":!0,"auto-crop":!0,"auto-origin":!0,"allow-zoom-in":!0,"allow-zoom-out":!0,border:16,highlight:`#0f766e`})),t.appendChild(n),!window.GraphViewer)throw Error(`diagrams.net viewer 未正确初始化`);window.GraphViewer.createViewerForElement(n)};return n(async()=>{E.value=`loading`,D.value=``,k.value=1,R();try{let e=await a(l.data);j.value?await re(e):await ie(e),E.value=`ready`}catch(e){console.error(e),D.value=e instanceof Error?e.message:String(e),E.value=`error`}}),(t,n)=>(c(),f(`div`,m,[o(`div`,h,[o(`div`,g,[o(`span`,null,e(M.value),1),o(`strong`,null,e(j.value?`Excalidraw 官方 SVG 预览`:`diagrams.net 官方 Viewer 预览`),1)]),o(`div`,_,[o(`button`,{type:`button`,title:`缩小`,onClick:I},`-`),o(`span`,null,e(Math.round(k.value*100))+`%`,1),o(`button`,{type:`button`,title:`放大`,onClick:F},`+`),o(`button`,{type:`button`,title:`适合宽度`,onClick:L},`适合`)])]),o(`div`,v,[E.value===`loading`?(c(),f(`div`,y,`正在加载官方绘图预览器...`)):E.value===`error`?(c(),f(`div`,b,e(D.value),1)):d(``,!0),o(`div`,x,[o(`div`,{ref_key:`stage`,ref:O,class:`drawing-canvas`,style:p(N.value)},null,4)])])]))}}),[[`__scopeId`,`data-v-6f438c82`]]);export{T as default};
@@ -0,0 +1 @@
1
+ .eda-viewer[data-v-9eb9b927]{color:#172033;background:#edf1f5;flex-direction:column;height:100%;min-height:0;display:flex;position:relative}.eda-header[data-v-9eb9b927]{background:#fff;border-bottom:1px solid #17203314;justify-content:space-between;align-items:center;gap:18px;min-height:84px;padding:18px 176px 18px 22px;display:flex}.eda-header span[data-v-9eb9b927],.eda-panel-head span[data-v-9eb9b927]{color:#0b7480;letter-spacing:0;font-size:12px;font-weight:900}.eda-header h2[data-v-9eb9b927]{margin:4px 0 0;font-size:22px;line-height:1.2}.eda-header dl[data-v-9eb9b927]{grid-template-columns:repeat(4,minmax(70px,auto));gap:10px;margin:0;display:grid}.eda-header dt[data-v-9eb9b927],.eda-header dd[data-v-9eb9b927],.eda-entity-group dl[data-v-9eb9b927],.eda-entity-group dt[data-v-9eb9b927],.eda-entity-group dd[data-v-9eb9b927]{margin:0}.eda-header dt[data-v-9eb9b927]{color:#718096;font-size:12px}.eda-header dd[data-v-9eb9b927]{color:#172033;font-weight:900}.eda-body[data-v-9eb9b927]{flex:1;grid-template-columns:minmax(300px,32%) minmax(0,1fr);min-height:0;display:grid}.eda-sidebar[data-v-9eb9b927]{background:#ffffffbd;border-right:1px solid #17203314;flex-direction:column;gap:12px;min-height:0;padding:16px;display:flex}.eda-summary[data-v-9eb9b927],.eda-warning[data-v-9eb9b927],.eda-panel[data-v-9eb9b927],.eda-error[data-v-9eb9b927]{background:#fff;border-radius:14px;box-shadow:inset 0 0 0 1px #1720330f}.eda-summary[data-v-9eb9b927],.eda-warning[data-v-9eb9b927]{padding:12px}.eda-summary strong[data-v-9eb9b927]{color:#172033;display:block}.eda-summary p[data-v-9eb9b927],.eda-warning p[data-v-9eb9b927],.eda-empty p[data-v-9eb9b927],.eda-entity-group p[data-v-9eb9b927]{color:#64748b;margin:6px 0 0;line-height:1.55}.eda-mini-grid[data-v-9eb9b927],.eda-stat-grid[data-v-9eb9b927]{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.eda-mini-grid div[data-v-9eb9b927],.eda-stat-grid div[data-v-9eb9b927]{background:#fff;border-radius:12px;min-width:0;padding:10px;box-shadow:inset 0 0 0 1px #1720330f}.eda-mini-grid span[data-v-9eb9b927],.eda-stat-grid span[data-v-9eb9b927]{color:#718096;font-size:12px;display:block}.eda-mini-grid strong[data-v-9eb9b927],.eda-stat-grid strong[data-v-9eb9b927]{color:#172033;text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:18px;display:block;overflow:hidden}.eda-warning[data-v-9eb9b927]{color:#8a4b00;background:#fff7e8}.eda-search[data-v-9eb9b927]{height:42px;font:inherit;background:#fff;border:1px solid #1720331a;border-radius:12px;outline:none;padding:0 12px}.eda-stream-list[data-v-9eb9b927]{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex;overflow:auto}.eda-stream[data-v-9eb9b927]{min-height:78px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:#fff;border:1px solid #17203314;border-radius:13px;grid-template-columns:74px minmax(0,1fr);align-items:center;gap:8px 10px;padding:10px;display:grid}.eda-stream[data-v-9eb9b927]:hover,.eda-stream.active[data-v-9eb9b927],.eda-tree button[data-v-9eb9b927]:hover,.eda-tree button.active[data-v-9eb9b927],.eda-entity-group button[data-v-9eb9b927]:hover{border-color:#0b74804d;box-shadow:0 10px 22px #17203314}.eda-stream span[data-v-9eb9b927]{color:#0b7480;background:#0b74801f;border-radius:10px;grid-row:span 3;justify-content:center;align-items:center;min-height:40px;padding:0 8px;font-size:11px;font-weight:900;display:inline-flex}.eda-stream span[data-role=symbol][data-v-9eb9b927]{color:#1d7a52;background:#22865a24}.eda-stream span[data-role=footprint][data-v-9eb9b927],.eda-stream span[data-role=padstack][data-v-9eb9b927]{color:#5c47a5;background:#6f57be24}.eda-stream strong[data-v-9eb9b927],.eda-stream em[data-v-9eb9b927],.eda-tree strong[data-v-9eb9b927],.eda-tree em[data-v-9eb9b927],.eda-tree small[data-v-9eb9b927],.eda-entity-group strong[data-v-9eb9b927],.eda-entity-group span[data-v-9eb9b927],.eda-entity-group dd[data-v-9eb9b927]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.eda-stream em[data-v-9eb9b927],.eda-stream small[data-v-9eb9b927]{color:#718096;font-size:12px;font-style:normal}.eda-preview[data-v-9eb9b927]{flex-direction:column;gap:14px;min-width:0;min-height:0;padding:16px;display:flex;overflow:auto}.eda-panel[data-v-9eb9b927]{min-height:0;overflow:hidden}.eda-panel-head[data-v-9eb9b927]{border-bottom:1px solid #17203314;min-height:54px;padding:12px 14px}.eda-panel-head strong[data-v-9eb9b927]{text-overflow:ellipsis;white-space:nowrap;margin-top:4px;display:block;overflow:hidden}.eda-panel--compact .eda-panel-head[data-v-9eb9b927]{min-height:auto}.eda-stat-grid[data-v-9eb9b927]{padding:14px}.eda-stat-grid div[data-v-9eb9b927]{background:#f6f9fb}.eda-topology[data-v-9eb9b927],.eda-bottom[data-v-9eb9b927]{grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:14px;min-height:300px;display:grid}.eda-topology>.eda-panel[data-v-9eb9b927]{flex-direction:column;min-height:360px;max-height:min(58vh,620px);display:flex}.eda-tree[data-v-9eb9b927],.eda-entities[data-v-9eb9b927],.eda-diagnostics[data-v-9eb9b927],.eda-string-grid[data-v-9eb9b927]{overscroll-behavior:contain;min-height:0;max-height:380px;overflow:auto}.eda-tree[data-v-9eb9b927]{flex:1;max-height:none;padding:10px}.eda-entities[data-v-9eb9b927]{flex:1;max-height:none}.eda-tree button[data-v-9eb9b927]{width:100%;min-height:42px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:#f8fafc;border:1px solid #1720330f;border-radius:10px;grid-template-columns:minmax(22px,auto) minmax(0,1fr) minmax(72px,auto) minmax(72px,auto);align-items:center;gap:8px;margin-bottom:6px;padding:8px;display:grid}.eda-tree span[data-v-9eb9b927]{color:#0b7480;font-weight:900}.eda-tree em[data-v-9eb9b927],.eda-tree small[data-v-9eb9b927]{color:#718096;font-size:12px;font-style:normal}.eda-entities[data-v-9eb9b927]{padding:12px}.eda-entity-group+.eda-entity-group[data-v-9eb9b927]{margin-top:16px}.eda-entity-group h3[data-v-9eb9b927]{color:#172033;margin:0 0 8px;font-size:14px}.eda-entity-group button[data-v-9eb9b927]{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:#f8fafc;border:1px solid #17203314;border-radius:12px;margin-bottom:8px;padding:12px;display:block}.eda-entity-group button>span[data-v-9eb9b927]{color:#718096;margin-top:4px;font-size:12px;display:block}.eda-entity-group dl[data-v-9eb9b927]{gap:6px;margin-top:10px;display:grid}.eda-entity-group dl div[data-v-9eb9b927]{color:#475569;grid-template-columns:90px minmax(0,1fr);gap:8px;min-width:0;font-size:12px;display:grid}.eda-entity-group dt[data-v-9eb9b927]{color:#718096;font-weight:800}.eda-selected-meta[data-v-9eb9b927],.eda-property-grid[data-v-9eb9b927],.eda-local-strings[data-v-9eb9b927]{flex-wrap:wrap;gap:8px;padding:12px 14px 0;display:flex}.eda-selected-meta span[data-v-9eb9b927],.eda-property-grid div[data-v-9eb9b927],.eda-local-strings span[data-v-9eb9b927]{color:#0b7480;background:#eef6f7;border-radius:999px;align-items:center;gap:6px;min-width:0;font-size:12px;font-weight:800;display:inline-flex}.eda-selected-meta span[data-v-9eb9b927],.eda-local-strings span[data-v-9eb9b927]{padding:6px 10px}.eda-property-grid div[data-v-9eb9b927]{max-width:100%;padding:6px 10px}.eda-property-grid span[data-v-9eb9b927]{color:#64748b;font-weight:700}.eda-property-grid strong[data-v-9eb9b927]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.eda-panel pre[data-v-9eb9b927]{color:#d9e7ff;white-space:pre-wrap;word-break:break-word;background:#101725;border-top:1px solid #17203314;min-height:220px;max-height:440px;margin:12px 0 0;padding:16px;font-size:13px;line-height:1.6;overflow:auto}.eda-empty[data-v-9eb9b927]{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:180px;padding:24px;display:flex}.eda-string-grid[data-v-9eb9b927]{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));align-content:start;gap:8px;padding:14px;display:grid}.eda-string-grid span[data-v-9eb9b927]{color:#334155;text-overflow:ellipsis;white-space:nowrap;background:#f6f9fb;border-radius:10px;min-width:0;padding:8px 10px;font-size:12px;overflow:hidden}.eda-diagnostics[data-v-9eb9b927]{padding:14px}.eda-diagnostics p[data-v-9eb9b927]{color:#475569;background:#f6f9fb;border-radius:10px;margin:0 0 8px;padding:10px;line-height:1.5}.eda-diagnostics p[data-level=warning][data-v-9eb9b927]{color:#8a4b00;background:#fff7e8}.eda-diagnostics span[data-v-9eb9b927]{color:#0b7480;text-transform:uppercase;margin-right:8px;font-size:11px;font-weight:900;display:inline-flex}.eda-local-strings[data-v-9eb9b927]{padding-bottom:14px}.eda-local-strings strong[data-v-9eb9b927]{color:#172033;width:100%;font-size:13px}.eda-state[data-v-9eb9b927]{background:#edf1f5e6;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}.eda-state span[data-v-9eb9b927]{border:3px solid #0b748029;border-top-color:#0b7480;border-radius:999px;width:32px;height:32px;animation:.9s linear infinite eda-spin-9eb9b927}.eda-error[data-v-9eb9b927]{color:#8a4b00;background:#fff7e8;width:min(440px,100% - 36px);padding:14px;position:absolute;bottom:18px;right:18px}@keyframes eda-spin-9eb9b927{to{transform:rotate(360deg)}}@media (width<=980px){.eda-header[data-v-9eb9b927],.eda-body[data-v-9eb9b927],.eda-topology[data-v-9eb9b927],.eda-bottom[data-v-9eb9b927]{grid-template-columns:1fr}.eda-header[data-v-9eb9b927]{flex-direction:column;align-items:flex-start;padding-right:22px}.eda-body[data-v-9eb9b927]{flex-direction:column;display:flex}.eda-sidebar[data-v-9eb9b927]{border-bottom:1px solid #17203314;border-right:0;max-height:42vh}}@media (width<=640px){.eda-header dl[data-v-9eb9b927],.eda-mini-grid[data-v-9eb9b927],.eda-stat-grid[data-v-9eb9b927]{grid-template-columns:repeat(2,minmax(0,1fr))}.eda-tree button[data-v-9eb9b927]{grid-template-columns:minmax(22px,auto) minmax(0,1fr)}.eda-tree em[data-v-9eb9b927],.eda-tree small[data-v-9eb9b927]{display:none}}
@@ -0,0 +1,8 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cfb-w_71-bTW.js","./index-kFSstoL8.js","./index-D8hVflyC.css"])))=>i.map(i=>d[i]);
2
+ import{A as e,B as t,C as n,D as r,F as i,K as a,L as o,P as s,R as c,b as l,g as u,h as d,k as f,l as p,m,o as h,p as ee,t as g,v as _,y as v,z as te}from"./index-kFSstoL8.js";var y=[208,207,17,224,161,177,26,225],b=200,x=4096,S=192,C=180,w=24,T=420,E=e=>new Uint8Array(e),D=e=>y.every((t,n)=>e[n]===t),O=e=>e instanceof Uint8Array?e:new Uint8Array(e),k=e=>e.replace(/\u0000/g,``).replace(/[^\S\r\n]+/g,` `).replace(/\r\n/g,`
3
+ `).trim(),A=e=>k(e).toLowerCase(),j=e=>{let t=e.split(`/`).filter(Boolean);return t[t.length-1]||e||`/`},M=e=>e.replace(/\.[a-z0-9]+$/i,``),N=(e,t,n=1/0)=>{let r=k(t);!r||e.includes(r)||e.length>=n||e.push(r)},P=e=>{if(!e.length)return!1;let t=e.slice(0,Math.min(e.length,x)),n=0,r=0;for(let e of t)e===0&&(r+=1),(e===9||e===10||e===13||e>=32&&e<=126||e>=128)&&(n+=1);return n/t.length>.82||r/t.length>.25},F=e=>{let t=e.slice(0,Math.min(e.length,x));if(!t.length)return``;try{let e=0,n=0;for(let r=0;r<t.length;r+=1)t[r]===0&&(r%2==0?n+=1:e+=1);return k((e>t.length/5&&e>n*2?new TextDecoder(`utf-16le`,{fatal:!1}):new TextDecoder(`utf-8`,{fatal:!1})).decode(t))}catch{return``}},I=e=>{let t=e.slice(0,Math.min(e.length,S)),n=[];for(let e=0;e<t.length;e+=16){let r=t.slice(e,e+16),i=Array.from(r).map(e=>e.toString(16).padStart(2,`0`)).join(` `),a=Array.from(r).map(e=>e>=32&&e<=126?String.fromCharCode(e):`.`).join(``);n.push(`${e.toString(16).padStart(8,`0`)} ${i.padEnd(47)} ${a}`)}return n.join(`
4
+ `)},L=e=>{let t=[],n=``;for(let r of e){if(r>=32&&r<=126){n+=String.fromCharCode(r);continue}n.length>=4&&t.push(n),n=``}return n.length>=4&&t.push(n),t},R=e=>{let t=[],n=``;for(let r=0;r+1<e.length;r+=2){let i=e[r];if(e[r+1]===0&&i>=32&&i<=126){n+=String.fromCharCode(i);continue}n.length>=4&&t.push(n),n=``}return n.length>=4&&t.push(n),t},z=(e,t=C)=>{let n=new Set,r=[];return e.forEach(e=>{[...L(e),...R(e)].forEach(e=>{let i=k(e);!i||i.length<4||n.has(i)||r.length>=t||(n.add(i),r.push(i))})}),r},ne=/^\s*([A-Za-z][A-Za-z0-9_. /#-]{1,56})\s*[:=]\s*(.{1,240})\s*$/,re=/\b([A-Za-z][A-Za-z0-9_. /#-]{1,56})\s*=\s*([^;\n\r|]{1,240})/g,ie=e=>k(e).replace(/\s+/g,` `),B=(e,t,n,r,i)=>{if(e.length>=T)return;let a=ie(n),o=k(r);if(!a||!o)return;let s=`${i}\u0000${a.toLowerCase()}\u0000${o}`;t.has(s)||(t.add(s),e.push({key:a,value:o,source:i}))},V=(e,t,n)=>{let r=[],i=new Set;return[e,...t].filter(Boolean).forEach(e=>{k(e).split(/\n|[|;]/).forEach(e=>{let t=e.match(ne);t&&B(r,i,t[1],t[2],n)});for(let t of e.matchAll(re))B(r,i,t[1],t[2],n)}),r},H=(e,t)=>{let n=t.map(e=>e.toLowerCase());return e.some(e=>n.includes(e.key.toLowerCase()))},U=(e,t)=>{let n=t.map(e=>e.toLowerCase());return e.find(e=>n.includes(e.key.toLowerCase()))?.value},W=(e,t,n,r,i,a,o)=>{let s=A(`${t}\n${n}\n${r}\n${i.join(`
5
+ `)}`);if(s===`/`||t===`/`)return`root`;if(o===`storage`&&/(^|\/)(library|libraries)(\/|$)/i.test(t))return`library`;if(/(header|version|source|author|metadata|property|properties)/.test(s))return H(a,[`Name`,`Pins`,`Footprint`,`Padstack`])?`property`:`metadata`;if(e===`olb`){if(/(^|\/)(symbols?|parts?)(\/|$)/.test(s)||H(a,[`Pins`,`Footprint`,`PCB Footprint`,`Part Number`]))return`symbol`;if(/(^|\/)(library|capture|orcad)(\/|$)/.test(s))return`library`}if(e===`dra`){if(/(padstack|pad stack|thermal|antipad|drill)/.test(s)||H(a,[`Padstack`,`Drill`]))return`padstack`;if(/(footprint|package|psm|bsm|fsm|ssm|symbol)/.test(s))return`footprint`;if(/(route|net|via|ratsnest)/.test(s))return`net`;if(/(line |arc |circle|shape|outline|silk|place_bound|assembly|soldermask|pastemask)/.test(s))return`geometry`;if(/(drawing|units|layers?|constraint|allegro)/.test(s)||H(a,[`Units`,`Layers`]))return`drawing`}return a.length?`property`:o===`storage`?`library`:`unknown`},G=(e,t,n,r,i,a)=>{if(i===`storage`||!a)return{path:t,name:n,size:r,kind:i,role:W(e,t,n,``,[],[],i),strings:[],properties:[]};let o=P(a)?F(a):``,s=z([a],w),c=V(o,s,t),l=W(e,t,n,o,s,c,o?`text`:`binary`);return{path:t,name:n,size:r,kind:o?`text`:`binary`,role:l,sample:o,hex:o?void 0:I(a),strings:s,properties:c}},K=e=>{e.children.sort((e,t)=>e.children.length===t.children.length?e.name.localeCompare(t.name):t.children.length-e.children.length),e.children.forEach(K)},q=(e,t)=>{let n={id:`${t}:root`,path:`/`,name:t.toUpperCase(),kind:`storage`,role:`root`,size:0,children:[]},r=new Map([[`/`,n]]);return e.forEach(e=>{let i=e.path.split(`/`).filter(Boolean),a=n,o=``;i.forEach((n,s)=>{o+=`/${n}`;let c=s===i.length-1,l=r.get(o);l||(l={id:`${t}:${o}`,path:o,name:n,kind:c?e.kind:`storage`,role:c?e.role:W(t,o,n,``,[],[],`storage`),size:c?e.size:0,children:[]},r.set(o,l),a.children.push(l)),c&&(l.kind=e.kind,l.role=e.role,l.size=e.size),a=l})}),K(n),n.children},J=e=>{if(!e)return[];let t=[];return e.split(/[,/;| ]+/).forEach(e=>{/^[A-Za-z0-9_.+-]+$/.test(e)&&N(t,e,64)}),t},Y=(e,t)=>t===`olb`?e.role===`symbol`&&e.kind!==`storage`?`symbol`:null:e.role===`padstack`?`padstack`:e.role===`footprint`||e.role===`geometry`&&/\/footprint\//i.test(e.path)?`footprint`:e.role===`drawing`?`drawing`:null,ae=(e,t)=>t===`footprint`?e.path.match(/^(.+?\/Footprint)(?:\/|$)/i)?.[1]||e.path:t===`drawing`&&e.path.match(/^(.+?\/Drawing)(?:\/|$)/i)?.[1]||e.path,oe=(e,t,n)=>{let r=U(e.properties,[`Name`,`Part`,`Part Name`,`Symbol`,`Device`,`Footprint`,`PCB Footprint`,`Package`,`Padstack`,`Pad Stack`,`Drawing`]);if(r)return r;let i=M(j(n));return i&&i!==`/`?i:t.toUpperCase()},se=(e,t)=>{let n=[],r=`${e.path}\n${e.sample||``}\n${e.strings.join(`
6
+ `)}`.toLowerCase();return(t===`symbol`?[`pins`,`footprint`,`pspice`,`part`,`symbol`]:[`units`,`layers`,`padstack`,`drill`,`outline`,`route`,`constraint`,`shape`,`place_bound`]).forEach(e=>{r.includes(e)&&N(n,e,12)}),n},X=(e,t)=>{let n=new Set(e.map(e=>`${e.key.toLowerCase()}\u0000${e.value}`));t.forEach(t=>{let r=`${t.key.toLowerCase()}\u0000${t.value}`;n.has(r)||(n.add(r),e.push(t))})},ce=(e,t)=>{let n=new Map;return e.forEach(e=>{let r=Y(e,t);if(!r)return;let i=ae(e,r),a=`${r}:${i.toLowerCase()}`,o=n.get(a)||{id:a,name:oe(e,r,i),role:r,path:i,streamCount:0,byteLength:0,properties:[],pins:[],layers:[],keywords:[]};o.streamCount+=1,o.byteLength+=e.size,X(o.properties,e.properties),J(U(e.properties,[`Pins`,`Pin`,`Pin Numbers`])).forEach(e=>N(o.pins,e,96)),J(U(e.properties,[`Layers`,`Layer`])).forEach(e=>N(o.layers,e,64)),se(e,r).forEach(e=>N(o.keywords,e,16)),o.description||=U(o.properties,[`Description`,`Desc`]),o.footprint||=U(o.properties,[`Footprint`,`PCB Footprint`,`Package`]),n.set(a,o)}),Array.from(n.values()).sort((e,t)=>{let n={symbol:0,footprint:1,padstack:2,drawing:3};return(n[e.role]??9)-(n[t.role]??9)||e.name.localeCompare(t.name)})},le=e=>{let t=[];return e.forEach(e=>{(e.role===`metadata`||e.role===`library`||e.role===`drawing`)&&X(t,e.properties)}),t.slice(0,80)},ue=(e,t,n,r)=>{let i={textStreams:e.filter(e=>e.kind===`text`).length,binaryStreams:e.filter(e=>e.kind===`binary`).length,storageEntries:e.filter(e=>e.kind===`storage`).length,propertyCount:e.reduce((e,t)=>e+t.properties.length,0),stringCount:n.length,symbolCount:t.filter(e=>e.role===`symbol`).length,footprintCount:t.filter(e=>e.role===`footprint`).length,padstackCount:t.filter(e=>e.role===`padstack`).length,confidence:`low`};return r===`cfb`&&t.length&&i.propertyCount?i.confidence=`high`:(r===`cfb`||n.length||i.propertyCount)&&(i.confidence=`medium`),i},de=(e,t,n,r,i,a)=>{let o=a.map((e,t)=>({level:`warning`,code:`warning-${t+1}`,message:e}));o.push({level:`info`,code:`parser`,message:t===`cfb`?`已识别为 Microsoft Compound File / OLE2 复合文档容器,并在浏览器端解析目录与流。`:`未识别为 CFB 容器,已使用二进制字符串索引模式展示可读信息。`}),o.push({level:`info`,code:`coverage`,message:`已索引 ${n.length} 个条目、${i.length} 个可读字符串、${r.length} 个 EDA 结构候选。`});let s=e===`olb`&&!r.some(e=>e.role===`symbol`),c=e===`dra`&&!r.some(e=>e.role===`footprint`||e.role===`padstack`);return(s||c)&&o.push({level:`warning`,code:`domain-candidates`,message:e===`olb`?`未发现明确的元件符号候选,文件可能使用了私有二进制编码或需要专业工具导出 ASCII/XML 后再检查。`:`未发现明确的封装、图形或 padstack 候选,文件可能使用了私有二进制数据库编码。`}),o},Z=(e,t,n,r,i,a,o)=>{let s=i.reduce((e,t)=>e+t.size,0),c=ce(i,t),l=le(i),u=de(t,n,i,c,a,o);return{type:t,parser:n,title:t===`olb`?n===`cfb`?`OrCAD Capture Symbol Library`:`OLB Binary Library`:n===`cfb`?`OrCAD / Allegro Drawing Library`:`DRA Binary Drawing`,byteLength:e.byteLength,streamCount:r,totalStreamBytes:s,streams:i,tree:q(i,t),entities:c,metadata:l,strings:a,warnings:o,diagnostics:u,stats:ue(i,c,a,n)}},fe=async(e,t)=>{let n=(await g(()=>import(`./cfb-w_71-bTW.js`).then(e=>a(e.default,1)),__vite__mapDeps([0,1,2]),import.meta.url)).parse(E(e),{type:`array`}),r=n.FileIndex.map((e,t)=>({entry:e,path:n.FullPaths[t]||e.name})).filter(e=>e.entry.type!==5&&e.path!==`/`&&e.entry.name).slice(0,b),i=[],o=r.map(({entry:e,path:n})=>{if(e.type===1)return G(t,n,e.name,e.size||0,`storage`);let r=O(e.content||[]);return i.push(r),G(t,n,e.name,e.size||r.byteLength||0,`binary`,r)}),s=r.length>=b?[`仅展示前 ${b} 个 CFB 项,完整文件仍可下载后在专业 EDA 工具中打开。`]:[];return Z(e,t,`cfb`,n.FileIndex.length,o,z(i),s)},Q=(e,t)=>{let n=E(e);return Z(e,t,`binary`,1,[G(t,`${t}.${t}`,`${t}.${t}`,e.byteLength,`binary`,n)],z([n]),[`该文件不是标准 CFB 容器,已退化为安全的二进制字符串索引预览。`])},pe=async(e,t=`olb`)=>{let n=t===`dra`?`dra`:`olb`;if(!D(E(e)))return Q(e,n);try{return await fe(e,n)}catch(t){let r=Q(e,n);return r.warnings.unshift(t instanceof Error?t.message:String(t)),r.diagnostics.unshift({level:`warning`,code:`cfb-parse-failed`,message:t instanceof Error?t.message:String(t)}),r}},me={class:`eda-viewer`},he={class:`eda-header`},ge={key:0},_e={key:0,class:`eda-body`},ve={class:`eda-sidebar`},ye={class:`eda-summary`},be={class:`eda-mini-grid`},xe={key:0,class:`eda-warning`},Se={class:`eda-stream-list`},Ce=[`onClick`],we=[`data-role`],Te={class:`eda-preview`},Ee={class:`eda-panel eda-panel--compact`},De={class:`eda-panel-head`},Oe={class:`eda-stat-grid`},ke={class:`eda-topology`},Ae={class:`eda-panel`},je={class:`eda-panel-head`},Me={class:`eda-tree`},Ne=[`onClick`],Pe={class:`eda-panel`},Fe={class:`eda-panel-head`},Ie={key:0,class:`eda-entities`},Le=[`onClick`],Re={key:0},ze={key:0},Be={key:1},Ve={key:2},He={key:3},Ue={key:1,class:`eda-empty`},We={class:`eda-panel`},Ge={class:`eda-panel-head`},Ke={key:0,class:`eda-selected-meta`},qe={key:1,class:`eda-property-grid`},Je={key:2},$={key:3,class:`eda-empty`},Ye={class:`eda-bottom`},Xe={class:`eda-panel`},Ze={class:`eda-panel-head`},Qe={class:`eda-string-grid`},$e={class:`eda-panel`},et={class:`eda-panel-head`},tt={class:`eda-diagnostics`},nt=[`data-level`],rt={key:0,class:`eda-local-strings`},it={key:1,class:`eda-state`},at={key:2,class:`eda-error`},ot=p(n({__name:`EdaViewer`,props:{data:{},type:{},filename:{}},setup(n){let a=n,p=i(null),g=i(!0),y=i(``),b=i(null),x=i(``),S={root:`根`,library:`库`,symbol:`元件符号`,footprint:`封装`,padstack:`Padstack`,drawing:`图纸`,metadata:`元数据`,property:`属性`,geometry:`几何`,net:`网络`,unknown:`未知`},C={high:`高`,medium:`中`,low:`低`},w=e=>S[e]||e,T=e=>e===`storage`?`目录`:e===`text`?`文本`:`二进制`,E=e=>e.replace(/^\/+/,``).toLowerCase(),D=d(()=>{if(!p.value)return[];let e=p.value.stats;return[{label:`文本流`,value:e.textStreams},{label:`二进制流`,value:e.binaryStreams},{label:`目录`,value:e.storageEntries},{label:`属性`,value:e.propertyCount},{label:`符号`,value:e.symbolCount},{label:`封装`,value:e.footprintCount},{label:`Padstack`,value:e.padstackCount},{label:`可信度`,value:C[e.confidence]}]}),O=d(()=>{let e=p.value?.entities||[],t=[{role:`symbol`,label:`元件符号`,items:[]},{role:`footprint`,label:`封装图形`,items:[]},{role:`padstack`,label:`Padstack`,items:[]},{role:`drawing`,label:`图纸信息`,items:[]}];return t.forEach(t=>{t.items=e.filter(e=>e.role===t.role)}),t.filter(e=>e.items.length)}),k=d(()=>{let e=x.value.trim().toLowerCase(),t=p.value?.streams||[];return e?t.filter(t=>{let n=t.properties.map(e=>`${e.key}=${e.value}`).join(`
7
+ `);return`${t.path}\n${t.name}\n${t.kind}\n${t.role}\n${t.sample||``}\n${t.strings.join(`
8
+ `)}\n${n}`.toLowerCase().includes(e)}):t}),A=(e,t=0)=>e.flatMap(e=>[{...e,depth:t},...A(e.children,t+1)]),j=d(()=>A(p.value?.tree||[])),M=d(()=>b.value?.properties||[]),N=d(()=>b.value?.strings||[]),P=d(()=>b.value?.sample||b.value?.hex||``),F=e=>{b.value=e},I=e=>{let t=E(e.path),n=p.value?.streams.find(e=>E(e.path)===t);n&&(b.value=n)},L=e=>{let t=E(e.path),n=p.value?.streams.find(e=>{let n=E(e.path);return n===t||n.startsWith(`${t}/`)});n&&(b.value=n)},R=async()=>{g.value=!0,y.value=``;try{let e=await pe(a.data,a.type);p.value=e,b.value=e.streams.find(e=>e.properties.length)||e.streams.find(e=>e.kind===`text`)||e.streams[0]||null}catch(e){console.error(e),y.value=e instanceof Error?e.message:String(e)}finally{g.value=!1}};return r(()=>{R()}),(r,i)=>(f(),v(`section`,me,[u(`header`,he,[u(`div`,null,[u(`span`,null,t(p.value?.parser===`cfb`?`CFB STRUCTURE VIEWER`:`BINARY STRUCTURE VIEWER`),1),u(`h2`,null,t(n.filename),1)]),p.value?(f(),v(`dl`,ge,[u(`div`,null,[i[1]||=u(`dt`,null,`格式`,-1),u(`dd`,null,t(p.value.type.toUpperCase()),1)]),u(`div`,null,[i[2]||=u(`dt`,null,`大小`,-1),u(`dd`,null,t(o(h)(p.value.byteLength)),1)]),u(`div`,null,[i[3]||=u(`dt`,null,`条目`,-1),u(`dd`,null,t(p.value.streamCount),1)]),u(`div`,null,[i[4]||=u(`dt`,null,`可信度`,-1),u(`dd`,null,t(C[p.value.stats.confidence]),1)])])):_(``,!0)]),p.value?(f(),v(`div`,_e,[u(`aside`,ve,[u(`div`,ye,[u(`strong`,null,t(p.value.title),1),i[5]||=u(`p`,null,`OLB / DRA 属于 OrCAD / Allegro 生态的私有设计数据。预览器优先解析 CFB 结构、对象候选、属性和可读文本,并在纯前端安全退化。`,-1)]),u(`div`,be,[(f(!0),v(m,null,e(D.value.slice(0,4),e=>(f(),v(`div`,{key:e.label},[u(`span`,null,t(e.label),1),u(`strong`,null,t(e.value),1)]))),128))]),p.value.warnings.length?(f(),v(`div`,xe,[(f(!0),v(m,null,e(p.value.warnings,e=>(f(),v(`p`,{key:e},t(e),1))),128))])):_(``,!0),s(u(`input`,{"onUpdate:modelValue":i[0]||=e=>x.value=e,class:`eda-search`,type:`search`,placeholder:`筛选路径、角色、属性或文本`},null,512),[[ee,x.value]]),u(`div`,Se,[(f(!0),v(m,null,e(k.value,e=>(f(),v(`button`,{key:e.path,type:`button`,class:c([`eda-stream`,{active:b.value?.path===e.path}]),onClick:t=>F(e)},[u(`span`,{"data-role":e.role},t(w(e.role)),9,we),u(`strong`,null,t(e.name||e.path),1),u(`em`,null,t(e.path),1),u(`small`,null,t(T(e.kind))+` · `+t(o(h)(e.size)),1)],10,Ce))),128))])]),u(`main`,Te,[u(`section`,Ee,[u(`div`,De,[i[6]||=u(`span`,null,`解析概览`,-1),u(`strong`,null,t(p.value.parser.toUpperCase())+` · `+t(o(h)(p.value.totalStreamBytes)),1)]),u(`div`,Oe,[(f(!0),v(m,null,e(D.value,e=>(f(),v(`div`,{key:e.label},[u(`span`,null,t(e.label),1),u(`strong`,null,t(e.value),1)]))),128))])]),u(`section`,ke,[u(`div`,Ae,[u(`div`,je,[i[7]||=u(`span`,null,`结构树`,-1),u(`strong`,null,t(j.value.length)+` 节点`,1)]),u(`div`,Me,[(f(!0),v(m,null,e(j.value,e=>(f(),v(`button`,{key:e.id,type:`button`,class:c({active:E(b.value?.path||``)===E(e.path)}),onClick:t=>I(e)},[u(`span`,{style:te({paddingLeft:`${e.depth*14}px`})},t(e.children.length?`▸`:`•`),5),u(`strong`,null,t(e.name),1),u(`em`,null,t(w(e.role)),1),u(`small`,null,t(e.size?o(h)(e.size):T(e.kind)),1)],10,Ne))),128))])]),u(`div`,Pe,[u(`div`,Fe,[i[8]||=u(`span`,null,`EDA 对象`,-1),u(`strong`,null,t(p.value.entities.length)+` 项`,1)]),O.value.length?(f(),v(`div`,Ie,[(f(!0),v(m,null,e(O.value,n=>(f(),v(`div`,{key:n.role,class:`eda-entity-group`},[u(`h3`,null,t(n.label),1),(f(!0),v(m,null,e(n.items,e=>(f(),v(`button`,{key:e.id,type:`button`,onClick:t=>L(e)},[u(`strong`,null,t(e.name),1),u(`span`,null,t(o(h)(e.byteLength))+` · `+t(e.streamCount)+` 条目`,1),e.description?(f(),v(`p`,Re,t(e.description),1)):_(``,!0),u(`dl`,null,[e.footprint?(f(),v(`div`,ze,[i[9]||=u(`dt`,null,`Footprint`,-1),u(`dd`,null,t(e.footprint),1)])):_(``,!0),e.pins.length?(f(),v(`div`,Be,[i[10]||=u(`dt`,null,`Pins`,-1),u(`dd`,null,t(e.pins.join(`, `)),1)])):_(``,!0),e.layers.length?(f(),v(`div`,Ve,[i[11]||=u(`dt`,null,`Layers`,-1),u(`dd`,null,t(e.layers.join(`, `)),1)])):_(``,!0),e.keywords.length?(f(),v(`div`,He,[i[12]||=u(`dt`,null,`Keywords`,-1),u(`dd`,null,t(e.keywords.join(`, `)),1)])):_(``,!0)])],8,Le))),128))]))),128))])):(f(),v(`div`,Ue,[...i[13]||=[u(`strong`,null,`没有明确对象候选`,-1),u(`p`,null,`仍可从结构树、属性和字符串索引中查看可读内容。`,-1)]]))])]),u(`section`,We,[u(`div`,Ge,[i[14]||=u(`span`,null,`当前条目`,-1),u(`strong`,null,t(b.value?.path||`未选择`),1)]),b.value?(f(),v(`div`,Ke,[u(`span`,null,t(w(b.value.role)),1),u(`span`,null,t(T(b.value.kind)),1),u(`span`,null,t(o(h)(b.value.size)),1)])):_(``,!0),M.value.length?(f(),v(`div`,qe,[(f(!0),v(m,null,e(M.value,e=>(f(),v(`div`,{key:`${e.source}-${e.key}-${e.value}`},[u(`span`,null,t(e.key),1),u(`strong`,null,t(e.value),1)]))),128))])):_(``,!0),P.value?(f(),v(`pre`,Je,t(P.value),1)):(f(),v(`div`,$,[...i[15]||=[u(`strong`,null,`目录条目`,-1),u(`p`,null,`该节点用于组织下级流,没有可直接展示的文本或十六进制片段。`,-1)]]))]),u(`section`,Ye,[u(`div`,Xe,[u(`div`,Ze,[i[16]||=u(`span`,null,`可读字符串`,-1),u(`strong`,null,t(p.value.strings.length)+` 项`,1)]),u(`div`,Qe,[(f(!0),v(m,null,e(p.value.strings,(e,n)=>(f(),v(`span`,{key:`${e}-${n}`},t(e),1))),128))])]),u(`div`,$e,[u(`div`,et,[i[17]||=u(`span`,null,`诊断`,-1),u(`strong`,null,t(p.value.diagnostics.length)+` 条`,1)]),u(`div`,tt,[(f(!0),v(m,null,e(p.value.diagnostics,e=>(f(),v(`p`,{key:`${e.code}-${e.message}`,"data-level":e.level},[u(`span`,null,t(e.level),1),l(` `+t(e.message),1)],8,nt))),128))]),N.value.length?(f(),v(`div`,rt,[i[18]||=u(`strong`,null,`当前条目字符串`,-1),(f(!0),v(m,null,e(N.value,(e,n)=>(f(),v(`span`,{key:`${e}-${n}`},t(e),1))),128))])):_(``,!0)])])])])):_(``,!0),g.value?(f(),v(`div`,it,[i[19]||=u(`span`,null,null,-1),u(`strong`,null,`正在解析 `+t(n.type.toUpperCase())+`...`,1)])):_(``,!0),y.value?(f(),v(`div`,at,[i[20]||=u(`strong`,null,`EDA 预览提示`,-1),u(`p`,null,t(y.value),1)])):_(``,!0)]))}}),[[`__scopeId`,`data-v-9eb9b927`]]);export{ot as default};
@@ -0,0 +1,4 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./lib-BWPMQv-F.js","./index-kFSstoL8.js","./index-D8hVflyC.css"])))=>i.map(i=>d[i]);
2
+ import{A as e,B as t,C as n,D as r,E as i,F as a,K as o,R as s,T as c,b as l,g as u,h as d,k as f,l as p,m,t as h,v as g,y as _}from"./index-kFSstoL8.js";import{t as v}from"./nestedRender-agTARb8M.js";var y={class:`email-viewer`},b={class:`email-header`},x={key:0,class:`email-meta`},S={key:0},C={key:0,class:`email-body`},w={class:`email-sidebar`},T={class:`body-tabs`},E=[`disabled`,`onClick`],D={class:`attachment-panel`},O={class:`attachment-title`},k=[`onClick`],A={class:`message-panel`},ee=[`srcdoc`],te={key:1,class:`email-text`},j={key:2,class:`email-text`},M={key:3,class:`attachment-preview`},N={class:`attachment-preview-head`},P={key:1,class:`email-state`},F={key:2,class:`email-error`},I=p(n({__name:`EmailViewer`,props:{data:{},type:{},filename:{},options:{}},setup(n){let p=n,I=a(null),L=a(!0),R=a(`正在解析邮件...`),z=a(``),B=a(`html`),V=a(null),H=a(null),U=new Map,W=[],G,K=e=>{if(!Number.isFinite(e)||e<0)return`-`;if(e<1024)return`${e} B`;let t=e/1024/1024;return t>=1?`${t.toFixed(+(t<10))} MB`:`${(e/1024).toFixed(+(e<10*1024))} KB`},q=e=>e?(Array.isArray(e)?e:[e]).flatMap(e=>{let t=e;return t.group?q(t.group):[{name:t.name||``,address:t.address||t.email||``}]}):[],J=e=>e.map(e=>e.name&&e.address?`${e.name} <${e.address}>`:e.address||e.name||``).filter(Boolean).join(`, `),Y=d(()=>{let e=I.value?.html||``;if(!e)return``;let t=e;return U.forEach((e,n)=>{t=t.replace(RegExp(`cid:${n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}`,`gi`),e)}),`<!doctype html><html><head><meta charset="utf-8"><base target="_blank"><style>body{margin:0;padding:18px;font-family:Aptos,"Segoe UI",sans-serif;line-height:1.6;color:#172033;word-break:break-word;}img{max-width:100%;height:auto;}</style></head><body>${t}</body></html>`}),X=d(()=>[{key:`html`,label:`HTML`,disabled:!I.value?.html},{key:`text`,label:`正文`,disabled:!I.value?.text},{key:`headers`,label:`头信息`,disabled:!I.value?.headers}]),Z=async e=>{if(e instanceof ArrayBuffer)return e;if(e instanceof Uint8Array){let t=new Uint8Array(e.byteLength);return t.set(e),t.buffer}return Z(new TextEncoder().encode(e))},Q=async()=>{let e=await(await h(async()=>{let{default:e}=await import(`./postal-mime-CuiVR6kZ.js`);return{default:e}},[],import.meta.url)).default.parse(p.data,{attachmentEncoding:`arraybuffer`,maxNestingDepth:24,maxHeadersSize:2*1024*1024}),t=e.attachments.map((e,t)=>{let n=typeof e.content==`string`?e.content.length:e.content.byteLength,r=e.filename||`attachment-${t+1}`;return{id:`${t}-${r}`,name:r,mimeType:e.mimeType,size:n,contentId:e.contentId,load:()=>Z(e.content)}});return await Promise.all(t.map(async e=>{if(!e.contentId||!e.mimeType?.startsWith(`image/`))return;let t=await e.load(),n=URL.createObjectURL(new Blob([t],{type:e.mimeType}));W.push(n),U.set(e.contentId.replace(/[<>]/g,``),n)})),{kind:`eml`,subject:e.subject||p.filename,from:q(e.from),to:q(e.to),cc:q(e.cc),date:e.date,text:e.text,html:e.html,headers:e.headerLines?.map(e=>e.line).join(`
3
+ `)||e.headers?.map(e=>`${e.originalKey}: ${e.value}`).join(`
4
+ `),attachments:t}},ne=async()=>{let e=await h(()=>import(`./lib-BWPMQv-F.js`).then(e=>o(e.default,1)),__vite__mapDeps([0,1,2]),import.meta.url),t=new(e.default?.default||e.default)(p.data),n=t.getFileData(),r=(n.attachments||[]).map((e,n)=>{let r=e.fileName||e.fileNameShort||e.name||`attachment-${n+1}${e.extension||``}`;return{id:`${n}-${r}`,name:r,mimeType:`application/octet-stream`,size:e.contentLength||e.size||0,contentId:e.pidContentId,async load(){return Z(t.getAttachment(e).content)}}});return{kind:`msg`,subject:n.subject||p.filename,from:q({name:n.senderName,address:n.senderEmail}),to:q(n.recipients||[]).filter(e=>e.name||e.address),cc:[],date:n.messageDeliveryTime||n.clientSubmitTime||n.creationTime,text:n.body,html:n.html||``,headers:n.headers,attachments:r}},re=async()=>{L.value=!0,z.value=``;try{I.value=p.type===`msg`?await ne():await Q(),B.value=I.value.html?`html`:I.value.text?`text`:`headers`}catch(e){console.error(e),z.value=e instanceof Error?e.message:String(e)}finally{L.value=!1}},$=()=>{G?.unmount?.(),G=void 0;let e=H.value;if(e)for(;e.firstChild;)e.removeChild(e.firstChild)},ie=async e=>{V.value=e,L.value=!0,R.value=`正在打开附件 ${e.name}...`;try{let t=await e.load();await c(),$();let n=H.value;if(!n)return;let r=document.createElement(`div`);r.className=`email-attachment-render`,n.appendChild(r),G=await v(t,e.name.includes(`.`)?e.name.slice(e.name.lastIndexOf(`.`)+1).toLowerCase():`txt`,r,{filename:e.name,options:p.options})}catch(e){console.error(e),z.value=e instanceof Error?e.message:String(e)}finally{L.value=!1,R.value=`正在解析邮件...`}},ae=async e=>{let t=await e.load(),n=URL.createObjectURL(new Blob([t],{type:e.mimeType||`application/octet-stream`}));W.push(n);let r=document.createElement(`a`);r.href=n,r.download=e.name,document.body.appendChild(r),r.click(),r.remove()};return r(()=>{re()}),i(()=>{$(),W.forEach(e=>URL.revokeObjectURL(e))}),(r,i)=>(f(),_(`section`,y,[u(`header`,b,[u(`span`,null,t(I.value?.kind?.toUpperCase()||n.type.toUpperCase()),1),u(`h2`,null,t(I.value?.subject||n.filename),1),I.value?(f(),_(`div`,x,[u(`p`,null,[i[1]||=u(`strong`,null,`发件人`,-1),l(t(J(I.value.from)||`-`),1)]),u(`p`,null,[i[2]||=u(`strong`,null,`收件人`,-1),l(t(J(I.value.to)||`-`),1)]),I.value.cc.length?(f(),_(`p`,S,[i[3]||=u(`strong`,null,`抄送`,-1),l(t(J(I.value.cc)),1)])):g(``,!0),u(`p`,null,[i[4]||=u(`strong`,null,`时间`,-1),l(t(I.value.date||`-`),1)])])):g(``,!0)]),I.value?(f(),_(`div`,C,[u(`aside`,w,[u(`div`,T,[(f(!0),_(m,null,e(X.value,e=>(f(),_(`button`,{key:e.key,type:`button`,disabled:e.disabled,class:s({active:B.value===e.key}),onClick:t=>B.value=e.key},t(e.label),11,E))),128))]),u(`section`,D,[u(`div`,O,[i[5]||=u(`strong`,null,`附件`,-1),u(`span`,null,t(I.value.attachments.length),1)]),(f(!0),_(m,null,e(I.value.attachments,e=>(f(),_(`button`,{key:e.id,type:`button`,class:s([`attachment-item`,{active:V.value?.id===e.id}]),onClick:t=>ie(e)},[u(`span`,null,t(e.name.split(`.`).pop()?.toUpperCase()||`FILE`),1),u(`strong`,null,t(e.name),1),u(`em`,null,t(K(e.size)),1)],10,k))),128))])]),u(`main`,A,[B.value===`html`&&Y.value?(f(),_(`iframe`,{key:0,class:`email-html`,sandbox:``,srcdoc:Y.value},null,8,ee)):B.value===`text`?(f(),_(`pre`,te,t(I.value.text),1)):(f(),_(`pre`,j,t(I.value.headers),1)),V.value?(f(),_(`section`,M,[u(`div`,N,[u(`strong`,null,t(V.value.name),1),u(`button`,{type:`button`,onClick:i[0]||=e=>ae(V.value)},`下载附件`)]),u(`div`,{ref_key:`attachmentTarget`,ref:H,class:`attachment-target`},null,512)])):g(``,!0)])])):g(``,!0),L.value?(f(),_(`div`,P,[i[6]||=u(`span`,null,null,-1),u(`strong`,null,t(R.value),1)])):g(``,!0),z.value?(f(),_(`div`,F,[i[7]||=u(`strong`,null,`邮件预览提示`,-1),u(`p`,null,t(z.value),1)])):g(``,!0)]))}}),[[`__scopeId`,`data-v-0989d798`]]);export{I as default};
@@ -0,0 +1 @@
1
+ .email-viewer[data-v-0989d798]{color:#172033;background:#f3f6f8;flex-direction:column;height:100%;min-height:0;display:flex;position:relative}.email-header[data-v-0989d798]{background:#fff;border-bottom:1px solid #17203314;padding:18px 22px}.email-header>span[data-v-0989d798]{color:#1f7a58;font-size:12px;font-weight:900}.email-header h2[data-v-0989d798]{margin:4px 0 12px;font-size:22px;line-height:1.25}.email-meta[data-v-0989d798]{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;display:grid}.email-meta p[data-v-0989d798]{color:#526275;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;overflow:hidden}.email-meta strong[data-v-0989d798]{color:#172033;margin-right:8px}.email-body[data-v-0989d798]{flex:1;grid-template-columns:minmax(240px,300px) minmax(0,1fr);min-height:0;display:grid}.email-sidebar[data-v-0989d798]{background:#ffffffb3;border-right:1px solid #17203314;flex-direction:column;gap:14px;min-height:0;padding:14px;display:flex}.body-tabs[data-v-0989d798]{background:#1720330f;border-radius:12px;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:4px;display:grid}.body-tabs button[data-v-0989d798],.attachment-item[data-v-0989d798],.attachment-preview-head button[data-v-0989d798]{font:inherit;cursor:pointer}.body-tabs button[data-v-0989d798]{color:#64748b;background:0 0;border:0;border-radius:9px;height:34px;font-size:12px;font-weight:800}.body-tabs button.active[data-v-0989d798]{color:#172033;background:#fff}.body-tabs button[data-v-0989d798]:disabled{opacity:.4;cursor:not-allowed}.attachment-panel[data-v-0989d798]{min-height:0;overflow:auto}.attachment-title[data-v-0989d798]{color:#172033;justify-content:space-between;margin-bottom:8px;font-size:14px;display:flex}.attachment-title span[data-v-0989d798]{color:#64748b}.attachment-item[data-v-0989d798]{text-align:left;background:#fff;border:1px solid #17203314;border-radius:12px;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:10px;width:100%;min-height:62px;margin-bottom:8px;padding:9px;display:grid}.attachment-item[data-v-0989d798]:hover,.attachment-item.active[data-v-0989d798]{border-color:#1f7a5847;box-shadow:0 10px 22px #17203314}.attachment-item span[data-v-0989d798]{color:#1f7a58;background:#1f7a581f;border-radius:10px;grid-row:span 2;justify-content:center;align-items:center;height:38px;font-size:11px;font-weight:900;display:inline-flex}.attachment-item strong[data-v-0989d798],.attachment-item em[data-v-0989d798]{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.attachment-item em[data-v-0989d798]{color:#64748b;font-size:12px;font-style:normal}.message-panel[data-v-0989d798]{grid-template-rows:minmax(240px,46%) minmax(0,1fr);min-width:0;min-height:0;display:grid}.email-html[data-v-0989d798],.email-text[data-v-0989d798]{background:#fff;border:0;width:100%;height:100%}.email-text[data-v-0989d798]{white-space:pre-wrap;word-break:break-word;margin:0;padding:20px;line-height:1.65;overflow:auto}.attachment-preview[data-v-0989d798]{border-top:1px solid #17203314;flex-direction:column;min-height:0;display:flex}.attachment-preview-head[data-v-0989d798]{background:#ffffffc7;justify-content:space-between;align-items:center;gap:12px;min-height:48px;padding:8px 14px;display:flex}.attachment-preview-head button[data-v-0989d798]{color:#fff;background:#1f7a58;border:0;border-radius:9px;height:32px;padding:0 12px;font-weight:800}.attachment-target[data-v-0989d798]{flex:1;min-height:0;overflow:auto}.email-state[data-v-0989d798]{background:#f3f6f8db;justify-content:center;align-items:center;gap:14px;display:flex;position:absolute;inset:0}.email-state span[data-v-0989d798]{border:3px solid #1f7a5829;border-top-color:#1f7a58;border-radius:999px;width:34px;height:34px;animation:.9s linear infinite email-spin-0989d798}.email-error[data-v-0989d798]{color:#8a4b00;background:#fff7e8;border-radius:14px;width:min(460px,100% - 36px);padding:14px;position:absolute;bottom:18px;right:18px;box-shadow:0 16px 36px #17203324}@keyframes email-spin-0989d798{to{transform:rotate(360deg)}}@media (width<=860px){.email-meta[data-v-0989d798],.email-body[data-v-0989d798]{grid-template-columns:1fr}.email-body[data-v-0989d798]{grid-template-rows:auto minmax(0,1fr)}.email-sidebar[data-v-0989d798]{border-bottom:1px solid #17203314;border-right:0}}.email-attachment-render{width:100%;height:100%;min-height:320px}
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./src-BbUo_1sw.js","./index-0hvuUhZv.js","./index-Bwjgtadn.css"])))=>i.map(i=>d[i]);
2
- import{E as e,S as t,T as n,_ as r,a as i,d as a,h as o,l as s,m as c,o as l,p as u,r as d,s as f,t as p,u as m,v as h,w as g}from"./index-0hvuUhZv.js";var _={class:`epub-toolbar`},v={class:`epub-title`},y={class:`epub-actions`},b=[`disabled`],x={class:`epub-progress`},S=[`disabled`],C={class:`epub-body`},w={key:0,class:`epub-toc`},T={class:`epub-toc-head`},E={class:`epub-toc-list`},D=[`onClick`],O={class:`epub-stage-wrap`},k={key:0,class:`epub-state`},A={key:1,class:`epub-state error`},j=d(a({__name:`EpubViewer`,props:{data:{}},setup(a){let d=a,j=t(null),M=t(`loading`),N=t(``),P=t(!0),F=t(`EPUB 电子书`),I=t(``),L=t([]),R=t(``),z=t(null),B=t(!0),V=t(!1),H,U,W=!1,G,K=l(()=>{if(!R.value)return``;let e=L.value.find(e=>e.href===R.value);return e?e.label:L.value.find(e=>R.value.includes(e.href.split(`#`)[0]))?.label||``}),q=l(()=>typeof z.value==`number`?`${z.value}%`:K.value||`阅读中`),J=(e,t)=>typeof e==`string`&&e.trim()?e.trim():t,Y=(e,t=0)=>Array.isArray(e)?e.flatMap((e,n)=>{let r=e,i=typeof r.href==`string`?r.href:``,a=J(r.label||r.title,`章节 ${n+1}`),o=Y(r.subitems||r.children,t+1);return i?[{depth:t,href:i,id:`${t}-${n}-${i}`,label:a},...o]:o}):[],X=e=>{let t=e.find(e=>{let t=e.label.toLowerCase();return/(^|\s)(chapter|part|book|prologue|preface|introduction)\b/.test(t)||/第[一二三四五六七八九十百千0-9]+[章节回部卷篇]/.test(e.label)});return t?t.href:e.find(e=>{let t=`${e.label} ${e.href}`.toLowerCase();return!/(cover|titlepage|title-page|copyright|license|toc|contents|nav|table-of-contents|wrap0000)/.test(t)})?.href||e[0]?.href},Z=e=>{B.value=!!e?.atStart,V.value=!!e?.atEnd,R.value=e?.start?.href||``,typeof e?.start?.percentage==`number`&&(z.value=Math.round(e.start.percentage*100))},Q=e=>new Promise(t=>{G=window.setTimeout(t,e)}),$=()=>{let e=(j.value?.querySelector(`iframe`))?.contentDocument?.body;return e?!!(e.innerText.trim()||e.querySelector(`img, svg, canvas`)):!1},ee=async()=>{for(let e=0;e<20;e++){if(W||$())return $();await Q(100)}return $()},te=async()=>{M.value=`loading`,await u();let e=j.value;if(e)try{let{default:t}=await p(async()=>{let{default:e}=await import(`./src-BbUo_1sw.js`);return{default:e}},__vite__mapDeps([0,1,2]),import.meta.url);if(W)return;H=t(d.data.slice(0),{openAs:`binary`,replacements:`blobUrl`}),U=H.renderTo(e,{allowScriptedContent:!1,flow:`scrolled`,height:`100%`,manager:`continuous`,resizeOnOrientationChange:!0,spread:`none`,width:`100%`}),U.themes.default({body:{color:`#172033`,fontFamily:`Georgia, "Times New Roman", serif`,lineHeight:`1.72`,padding:`0 8px`},img:{maxWidth:`100%`},html:{height:`auto`,overflow:`auto`}}),U.on(`relocated`,Z),await H.ready;let n=await H.loaded.metadata.catch(()=>void 0);F.value=J(n?.title,F.value),I.value=J(n?.creator,``),L.value=Y((await H.loaded.navigation.catch(()=>void 0))?.toc);let r=X(L.value);if(await U.display(r),!await ee())throw Error(`EPUB 正文渲染未完成,请刷新后重试`);if(W)return;M.value=`ready`,H.locations.generate(1200).catch(()=>void 0)}catch(e){console.error(e),N.value=e instanceof Error?e.message:String(e),M.value=`error`}},ne=async()=>{await U?.prev()},re=async()=>{await U?.next()},ie=async e=>{await U?.display(e.href),P.value=!1};return o(te),c(()=>{W=!0,G!==void 0&&(clearTimeout(G),G=void 0),U&&=(U.off(`relocated`,Z),U.destroy(),void 0),H?.destroy(),H=void 0}),(t,a)=>(r(),m(`div`,{class:g([`epub-viewer`,{"epub-viewer--toc-hidden":!P.value}])},[f(`div`,_,[f(`button`,{type:`button`,class:g([`epub-icon-button`,{active:P.value}]),title:`目录`,onClick:a[0]||=e=>P.value=!P.value},[...a[1]||=[f(`span`,null,null,-1)]],2),f(`div`,v,[f(`strong`,null,e(F.value),1),f(`span`,null,e(I.value||q.value),1)]),f(`div`,y,[f(`button`,{type:`button`,class:`epub-button`,disabled:M.value!==`ready`||B.value,onClick:ne},` 上一页 `,8,b),f(`span`,x,e(q.value),1),f(`button`,{type:`button`,class:`epub-button`,disabled:M.value!==`ready`||V.value,onClick:re},` 下一页 `,8,S)])]),f(`div`,C,[P.value?(r(),m(`aside`,w,[f(`div`,T,[a[2]||=f(`strong`,null,`目录`,-1),f(`span`,null,e(L.value.length)+` 项`,1)]),f(`div`,E,[(r(!0),m(i,null,h(L.value,t=>(r(),m(`button`,{key:t.id,type:`button`,class:g([`epub-toc-item`,{active:t.href===R.value}]),style:n({paddingLeft:`${12+t.depth*14}px`}),onClick:e=>ie(t)},e(t.label),15,D))),128))])])):s(``,!0),f(`main`,O,[f(`div`,{ref_key:`stage`,ref:j,class:`epub-stage`},null,512),M.value===`loading`?(r(),m(`div`,k,`正在解析 EPUB...`)):M.value===`error`?(r(),m(`div`,A,e(N.value),1)):s(``,!0)])])],2))}}),[[`__scopeId`,`data-v-8f8a2b3b`]]);export{j as default};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./src-nayzRmN3.js","./index-kFSstoL8.js","./index-D8hVflyC.css"])))=>i.map(i=>d[i]);
2
+ import{A as e,B as t,C as n,D as r,E as i,F as a,R as o,T as s,g as c,h as l,k as u,l as d,m as f,t as p,v as m,y as h,z as g}from"./index-kFSstoL8.js";var _={class:`epub-toolbar`},v={class:`epub-title`},y={class:`epub-actions`},b=[`disabled`],x={class:`epub-progress`},S=[`disabled`],C={class:`epub-body`},w={key:0,class:`epub-toc`},T={class:`epub-toc-head`},E={class:`epub-toc-list`},D=[`onClick`],O={class:`epub-stage-wrap`},k={key:0,class:`epub-state`},A={key:1,class:`epub-state error`},j=d(n({__name:`EpubViewer`,props:{data:{}},setup(n){let d=n,j=a(null),M=a(`loading`),N=a(``),P=a(!0),F=a(`EPUB 电子书`),I=a(``),L=a([]),R=a(``),z=a(null),B=a(!0),V=a(!1),H,U,W=!1,G,K=l(()=>{if(!R.value)return``;let e=L.value.find(e=>e.href===R.value);return e?e.label:L.value.find(e=>R.value.includes(e.href.split(`#`)[0]))?.label||``}),q=l(()=>typeof z.value==`number`?`${z.value}%`:K.value||`阅读中`),J=(e,t)=>typeof e==`string`&&e.trim()?e.trim():t,Y=(e,t=0)=>Array.isArray(e)?e.flatMap((e,n)=>{let r=e,i=typeof r.href==`string`?r.href:``,a=J(r.label||r.title,`章节 ${n+1}`),o=Y(r.subitems||r.children,t+1);return i?[{depth:t,href:i,id:`${t}-${n}-${i}`,label:a},...o]:o}):[],X=e=>{let t=e.find(e=>{let t=e.label.toLowerCase();return/(^|\s)(chapter|part|book|prologue|preface|introduction)\b/.test(t)||/第[一二三四五六七八九十百千0-9]+[章节回部卷篇]/.test(e.label)});return t?t.href:e.find(e=>{let t=`${e.label} ${e.href}`.toLowerCase();return!/(cover|titlepage|title-page|copyright|license|toc|contents|nav|table-of-contents|wrap0000)/.test(t)})?.href||e[0]?.href},Z=e=>{B.value=!!e?.atStart,V.value=!!e?.atEnd,R.value=e?.start?.href||``,typeof e?.start?.percentage==`number`&&(z.value=Math.round(e.start.percentage*100))},Q=e=>new Promise(t=>{G=window.setTimeout(t,e)}),$=()=>{let e=(j.value?.querySelector(`iframe`))?.contentDocument?.body;return e?!!(e.innerText.trim()||e.querySelector(`img, svg, canvas`)):!1},ee=async()=>{for(let e=0;e<20;e++){if(W||$())return $();await Q(100)}return $()},te=async()=>{M.value=`loading`,await s();let e=j.value;if(e)try{let{default:t}=await p(async()=>{let{default:e}=await import(`./src-nayzRmN3.js`);return{default:e}},__vite__mapDeps([0,1,2]),import.meta.url);if(W)return;H=t(d.data.slice(0),{openAs:`binary`,replacements:`blobUrl`}),U=H.renderTo(e,{allowScriptedContent:!1,flow:`scrolled`,height:`100%`,manager:`continuous`,resizeOnOrientationChange:!0,spread:`none`,width:`100%`}),U.themes.default({body:{color:`#172033`,fontFamily:`Georgia, "Times New Roman", serif`,lineHeight:`1.72`,padding:`0 8px`},img:{maxWidth:`100%`},html:{height:`auto`,overflow:`auto`}}),U.on(`relocated`,Z),await H.ready;let n=await H.loaded.metadata.catch(()=>void 0);F.value=J(n?.title,F.value),I.value=J(n?.creator,``),L.value=Y((await H.loaded.navigation.catch(()=>void 0))?.toc);let r=X(L.value);if(await U.display(r),!await ee())throw Error(`EPUB 正文渲染未完成,请刷新后重试`);if(W)return;M.value=`ready`,H.locations.generate(1200).catch(()=>void 0)}catch(e){console.error(e),N.value=e instanceof Error?e.message:String(e),M.value=`error`}},ne=async()=>{await U?.prev()},re=async()=>{await U?.next()},ie=async e=>{await U?.display(e.href),P.value=!1};return r(te),i(()=>{W=!0,G!==void 0&&(clearTimeout(G),G=void 0),U&&=(U.off(`relocated`,Z),U.destroy(),void 0),H?.destroy(),H=void 0}),(n,r)=>(u(),h(`div`,{class:o([`epub-viewer`,{"epub-viewer--toc-hidden":!P.value}])},[c(`div`,_,[c(`button`,{type:`button`,class:o([`epub-icon-button`,{active:P.value}]),title:`目录`,onClick:r[0]||=e=>P.value=!P.value},[...r[1]||=[c(`span`,null,null,-1)]],2),c(`div`,v,[c(`strong`,null,t(F.value),1),c(`span`,null,t(I.value||q.value),1)]),c(`div`,y,[c(`button`,{type:`button`,class:`epub-button`,disabled:M.value!==`ready`||B.value,onClick:ne},` 上一页 `,8,b),c(`span`,x,t(q.value),1),c(`button`,{type:`button`,class:`epub-button`,disabled:M.value!==`ready`||V.value,onClick:re},` 下一页 `,8,S)])]),c(`div`,C,[P.value?(u(),h(`aside`,w,[c(`div`,T,[r[2]||=c(`strong`,null,`目录`,-1),c(`span`,null,t(L.value.length)+` 项`,1)]),c(`div`,E,[(u(!0),h(f,null,e(L.value,e=>(u(),h(`button`,{key:e.id,type:`button`,class:o([`epub-toc-item`,{active:e.href===R.value}]),style:g({paddingLeft:`${12+e.depth*14}px`}),onClick:t=>ie(e)},t(e.label),15,D))),128))])])):m(``,!0),c(`main`,O,[c(`div`,{ref_key:`stage`,ref:j,class:`epub-stage`},null,512),M.value===`loading`?(u(),h(`div`,k,`正在解析 EPUB...`)):M.value===`error`?(u(),h(`div`,A,t(N.value),1)):m(``,!0)])])],2))}}),[[`__scopeId`,`data-v-8f8a2b3b`]]);export{j as default};