@flyfish-group/file-viewer-web 1.0.11 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/LICENSE +160 -0
  2. package/README.md +2 -2
  3. package/package.json +8 -8
  4. package/viewer/assets/{3MFLoader-8o7H9qFn.js → 3MFLoader-Cu6MV1Tf.js} +1 -1
  5. package/viewer/assets/{AMFLoader-D845-fN9.js → AMFLoader-lvPchvXS.js} +1 -1
  6. package/viewer/assets/{ArchiveViewer-DSRTOkgE.js → ArchiveViewer-NfbsPg8P.js} +1 -1
  7. package/viewer/assets/{AudioViewer-C9EoBNW7.js → AudioViewer-97GGkEEb.js} +1 -1
  8. package/viewer/assets/CadViewer-CU6FVGs9.js +1 -0
  9. package/viewer/assets/CadViewer-DZAS6XFY.css +1 -0
  10. package/viewer/assets/CodeViewer-B9xa3vtn.js +2 -0
  11. package/viewer/assets/{CodeViewer-HGV-dwr6.css → CodeViewer-KlbtXDJA.css} +1 -1
  12. package/viewer/assets/{ColladaLoader-B-O9yZEn.js → ColladaLoader-9JnWW2qx.js} +1 -1
  13. package/viewer/assets/DrawingViewer-Az8LMAqS.js +2 -0
  14. package/viewer/assets/DrawingViewer-DHdPw80C.css +1 -0
  15. package/viewer/assets/EdaViewer-BVyqEjSm.js +8 -0
  16. package/viewer/assets/EdaViewer-CKf1YQnh.css +1 -0
  17. package/viewer/assets/{EmailViewer-BaPKkcv-.js → EmailViewer--0GuXwkb.js} +3 -3
  18. package/viewer/assets/{EpubViewer-DythX0Nc.js → EpubViewer-DU9_vw0u.js} +2 -2
  19. package/viewer/assets/{FBXLoader-COXKyweW.js → FBXLoader-BR2WOnav.js} +1 -1
  20. package/viewer/assets/{GLTFLoader-SxxJ3jR6.js → GLTFLoader-Oe_gNr7z.js} +1 -1
  21. package/viewer/assets/{ImageViewer-BpCBeqmp.js → ImageViewer-BHgJqiyd.js} +1 -1
  22. package/viewer/assets/{KMZLoader-D2ynO6pl.js → KMZLoader-BT5-fslH.js} +1 -1
  23. package/viewer/assets/{MarkdownViewer-DtFOeZc8.js → MarkdownViewer-rDHDAsRR.js} +1 -1
  24. package/viewer/assets/{ModelViewer-CUFF5ZFd.js → ModelViewer-DVsWlNIj.js} +2 -2
  25. package/viewer/assets/{OBJLoader-CMVDS2qn.js → OBJLoader-Dr_zHthK.js} +1 -1
  26. package/viewer/assets/{OfdViewer-BGg4yT1N.js → OfdViewer-Hnl-p77U.js} +2 -2
  27. package/viewer/assets/{PCDLoader-D_de5eCn.js → PCDLoader-C8E_Z0Lp.js} +1 -1
  28. package/viewer/assets/{PLYLoader-DuwMVS96.js → PLYLoader-BIvJFvLy.js} +1 -1
  29. package/viewer/assets/{PdfView-CS_IFVnD.css → PdfView-DkzMi2E1.css} +1 -1
  30. package/viewer/assets/{PdfView-AM0U2bj7.js → PdfView-wBByYWNp.js} +2 -2
  31. package/viewer/assets/{PptxRender-BJqTJw-8.js → PptxRender-DqPUVEH7.js} +1 -1
  32. package/viewer/assets/{STLLoader-la2gvyyP.js → STLLoader-yuZC5ZKB.js} +1 -1
  33. package/viewer/assets/{TDSLoader-x7iwK70T.js → TDSLoader-Bh0I9gg5.js} +1 -1
  34. package/viewer/assets/{USDLoader-Cp_SS3wA.js → USDLoader-YAA4d1kg.js} +1 -1
  35. package/viewer/assets/{UmdViewer-DHF8jwpk.js → UmdViewer-CjLLjACq.js} +1 -1
  36. package/viewer/assets/{VRMLLoader-CXZLXnWJ.js → VRMLLoader-Bg8OB7AO.js} +1 -1
  37. package/viewer/assets/{VTKLoader-CWbNh6LS.js → VTKLoader-CGwQVf82.js} +1 -1
  38. package/viewer/assets/{XYZLoader-DOXanbK4.js → XYZLoader-BPX1CIj8.js} +1 -1
  39. package/viewer/assets/{XlsxTable-CypKqqh6.js → XlsxTable-BXrc7pg9.js} +1 -1
  40. package/viewer/assets/{ar-SA-G6X2FPQ2-CgdCEJk7.js → ar-SA-G6X2FPQ2-7Yfb7IVE.js} +1 -1
  41. package/viewer/assets/architecture-7EHR7CIX-jshZEJoX.js +1 -0
  42. package/viewer/assets/{architectureDiagram-3BPJPVTR-BzhJuZD8.js → architectureDiagram-3BPJPVTR-By83Z4Dy.js} +1 -1
  43. package/viewer/assets/{archive-BIL6RrWA.js → archive-C4O9C597.js} +2 -2
  44. package/viewer/assets/{audio-DIKf2J_Z.js → audio-K4Kvc3je.js} +2 -2
  45. package/viewer/assets/{az-AZ-76LH7QW2-Brd6e3FL.js → az-AZ-76LH7QW2-Dk-IKJn2.js} +1 -1
  46. package/viewer/assets/bash-BJm0Os9e.js +1 -0
  47. package/viewer/assets/{bg-BG-XCXSNQG7-BQ2fZxuu.js → bg-BG-XCXSNQG7-8-qGQPgY.js} +1 -1
  48. package/viewer/assets/{blockDiagram-GPEHLZMM-BlfzAkrY.js → blockDiagram-GPEHLZMM-BabaWPB3.js} +1 -1
  49. package/viewer/assets/{bn-BD-2XOGV67Q-ChDArhrr.js → bn-BD-2XOGV67Q-KD6EiSD1.js} +1 -1
  50. package/viewer/assets/{c4Diagram-AAUBKEIU-B0xn2mQy.js → c4Diagram-AAUBKEIU-BD4yevCw.js} +1 -1
  51. package/viewer/assets/{ca-ES-6MX7JW3Y-CwgwYfhS.js → ca-ES-6MX7JW3Y-Cpknnn3e.js} +1 -1
  52. package/viewer/assets/cad-BeV0g8S1.js +2 -0
  53. package/viewer/assets/{cfb-BvVcdfEr.js → cfb-_EGih8Zd.js} +1 -1
  54. package/viewer/assets/channel-sVdBQlZV.js +1 -0
  55. package/viewer/assets/{chunk-2J33WTMH-CExj7hZH.js → chunk-2J33WTMH-DB4-y_rM.js} +1 -1
  56. package/viewer/assets/{chunk-3OPIFGDE-DHkn_EKf.js → chunk-3OPIFGDE-DA1TDHS3.js} +1 -1
  57. package/viewer/assets/{chunk-4BX2VUAB-CsD3MpP4.js → chunk-4BX2VUAB-hvT3TGR9.js} +1 -1
  58. package/viewer/assets/{chunk-55IACEB6-B2h9xlji.js → chunk-55IACEB6-CNly-jgo.js} +1 -1
  59. package/viewer/assets/{chunk-5ZQYHXKU-BT8BfFwa.js → chunk-5ZQYHXKU-DndElAUK.js} +1 -1
  60. package/viewer/assets/{chunk-727SXJPM-Cbzsk2sx.js → chunk-727SXJPM-BS1lsRVq.js} +1 -1
  61. package/viewer/assets/{chunk-AGHRB4JF-BlQgX4eu.js → chunk-AGHRB4JF-BJwbBkzn.js} +1 -1
  62. package/viewer/assets/{chunk-AQP2D5EJ-kAA_M8ev.js → chunk-AQP2D5EJ-YVK63cg5.js} +1 -1
  63. package/viewer/assets/{chunk-BSJP7CBP-QRmLe2ra.js → chunk-BSJP7CBP-5u9nMcO_.js} +1 -1
  64. package/viewer/assets/{chunk-CSCIHK7Q-DR7Fh2vz.js → chunk-CSCIHK7Q-aUHEuAJU.js} +2 -2
  65. package/viewer/assets/{chunk-EIO257PC-HryAQxfP.js → chunk-EIO257PC-DY2R9DTC.js} +1 -1
  66. package/viewer/assets/{chunk-FMBD7UC4-DoCeRNMM.js → chunk-FMBD7UC4-CdslJ4pQ.js} +1 -1
  67. package/viewer/assets/{chunk-K2UTITRG-DAyQWDjk.js → chunk-K2UTITRG-C8pNkET-.js} +4 -4
  68. package/viewer/assets/{chunk-KSCS5N6A-D3hkbb9N.js → chunk-KSCS5N6A-DJut5NSh.js} +1 -1
  69. package/viewer/assets/{chunk-L5ZTLDWV-CTW9UcbB.js → chunk-L5ZTLDWV-h_4TuYfT.js} +1 -1
  70. package/viewer/assets/{chunk-LZXEDZCA-DmTR94qs.js → chunk-LZXEDZCA-c-l7SEO-.js} +2 -2
  71. package/viewer/assets/{chunk-ND2GUHAM-cWS-Hj50.js → chunk-ND2GUHAM-BD4-_4Zd.js} +1 -1
  72. package/viewer/assets/{chunk-NZK2D7GU-Brqkts5c.js → chunk-NZK2D7GU-BddajR4u.js} +1 -1
  73. package/viewer/assets/{chunk-O5CBEL6O-DcTS0WR4.js → chunk-O5CBEL6O-oyfoyK1O.js} +1 -1
  74. package/viewer/assets/chunk-QZHKN3VN-CpkFZLKv.js +1 -0
  75. package/viewer/assets/{chunk-SRAX5OIU-Bnk-J_Ic.js → chunk-SRAX5OIU-DMV7GEw_.js} +1 -1
  76. package/viewer/assets/{chunk-WU5MYG2G-ApR-uaBj.js → chunk-WU5MYG2G-DB3V6ZLl.js} +1 -1
  77. package/viewer/assets/{chunk-XPW4576I-X39GVyft.js → chunk-XPW4576I-CH0K5jrN.js} +1 -1
  78. package/viewer/assets/classDiagram-4FO5ZUOK-BCwN9xcr.js +1 -0
  79. package/viewer/assets/classDiagram-v2-Q7XG4LA2-QYFWT1oJ.js +1 -0
  80. package/viewer/assets/core-BVRa96uX.js +3 -0
  81. package/viewer/assets/{cose-bilkent-S5V4N54A-ao81kk8g.js → cose-bilkent-S5V4N54A-ChhxOJ9h.js} +1 -1
  82. package/viewer/assets/cpp-DF3_Y4Y1.js +1 -0
  83. package/viewer/assets/{cs-CZ-2BRQDIVT-CuoHtiJx.js → cs-CZ-2BRQDIVT-DKIPyzMJ.js} +1 -1
  84. package/viewer/assets/csharp-BtVV86wX.js +1 -0
  85. package/viewer/assets/css-wZv8YE7b.js +1 -0
  86. package/viewer/assets/{da-DK-5WZEPLOC-CU2TS9iq.js → da-DK-5WZEPLOC-DFTB5hy9.js} +1 -1
  87. package/viewer/assets/{dagre-BM42HDAG-G6BhJRQw.js → dagre-BM42HDAG-DcsF4wwf.js} +1 -1
  88. package/viewer/assets/{dagre-DCGZDEN0.js → dagre-QzaNJyV9.js} +1 -1
  89. package/viewer/assets/{de-DE-XR44H4JA-D_P0eboZ.js → de-DE-XR44H4JA-BgG1iBbI.js} +1 -1
  90. package/viewer/assets/{diagram-2AECGRRQ-CSkr-y6p.js → diagram-2AECGRRQ-DfByblqP.js} +1 -1
  91. package/viewer/assets/{diagram-5GNKFQAL-DmDfwinH.js → diagram-5GNKFQAL-Bi_HJ7-j.js} +1 -1
  92. package/viewer/assets/{diagram-KO2AKTUF-2JOenJyz.js → diagram-KO2AKTUF-D-_4qBpw.js} +1 -1
  93. package/viewer/assets/{diagram-LMA3HP47-DWpGa_n-.js → diagram-LMA3HP47-1MJDHHD9.js} +1 -1
  94. package/viewer/assets/{diagram-OG6HWLK6-CAw1FF9r.js → diagram-OG6HWLK6-C5gRKt_U.js} +1 -1
  95. package/viewer/assets/diff-Bxf4Bdyj.js +1 -0
  96. package/viewer/assets/{dist-BSmD-gaM.js → dist-BQnvv8B_.js} +1 -1
  97. package/viewer/assets/{dist-MkuKpZxJ.js → dist-DmIQVi2n.js} +4 -4
  98. package/viewer/assets/{docx-preview-DJ3akTi1.js → docx-preview-DFFbtrN8.js} +1 -1
  99. package/viewer/assets/drawing-CKiuL0Gu.js +2 -0
  100. package/viewer/assets/{ebook-DdzrIQwY.js → ebook-Bqj9i_mn.js} +2 -2
  101. package/viewer/assets/eda-Cut-V5p4.js +2 -0
  102. package/viewer/assets/{el-GR-BZB4AONW-773rjakn.js → el-GR-BZB4AONW-CM4TmZEV.js} +1 -1
  103. package/viewer/assets/email-DsVmxkp7.js +2 -0
  104. package/viewer/assets/{en-B4ZKOASM-KXkyKCCD.js → en-B4ZKOASM-BHkn7JSy.js} +1 -1
  105. package/viewer/assets/{erDiagram-TEJ5UH35-COUyT6HR.js → erDiagram-TEJ5UH35-uuyF6F1p.js} +1 -1
  106. package/viewer/assets/{es-ES-U4NZUMDT-DS_Wl_sD.js → es-ES-U4NZUMDT-CJniQfFN.js} +1 -1
  107. package/viewer/assets/{eu-ES-A7QVB2H4-DycoEJ3W.js → eu-ES-A7QVB2H4-B6o_xrtp.js} +1 -1
  108. package/viewer/assets/eventmodeling-FCH6USID-C97Fvtb3.js +1 -0
  109. package/viewer/assets/{fa-IR-HGAKTJCU-BnGo0pi9.js → fa-IR-HGAKTJCU-DVVwsG-Y.js} +1 -1
  110. package/viewer/assets/{fi-FI-Z5N7JZ37-CwM4pX49.js → fi-FI-Z5N7JZ37-7NYhxBL8.js} +1 -1
  111. package/viewer/assets/{flowDiagram-I6XJVG4X-CW3PcNVR.js → flowDiagram-I6XJVG4X-6NqZMRvf.js} +1 -1
  112. package/viewer/assets/{fr-FR-RHASNOE6-DtTRvGy5.js → fr-FR-RHASNOE6-CY44wyYP.js} +1 -1
  113. package/viewer/assets/{ganttDiagram-6RSMTGT7-C7ks3ZPy.js → ganttDiagram-6RSMTGT7-DOFaZYdO.js} +1 -1
  114. package/viewer/assets/gitGraph-WXDBUCRP-CSoW_aaW.js +1 -0
  115. package/viewer/assets/{gitGraphDiagram-PVQCEYII-BlLdhGvx.js → gitGraphDiagram-PVQCEYII-B6A4Cg7c.js} +1 -1
  116. package/viewer/assets/{gl-ES-HMX3MZ6V-BR2PDtxx.js → gl-ES-HMX3MZ6V-DhXijeDV.js} +1 -1
  117. package/viewer/assets/go-B7mD4oi7.js +1 -0
  118. package/viewer/assets/{he-IL-6SHJWFNN-fF0tLsJk.js → he-IL-6SHJWFNN-D8TmRSpx.js} +1 -1
  119. package/viewer/assets/{hi-IN-IWLTKZ5I-DLZJkiTj.js → hi-IN-IWLTKZ5I-Ch4G41KT.js} +1 -1
  120. package/viewer/assets/{hu-HU-A5ZG7DT2-ChzvsLjq.js → hu-HU-A5ZG7DT2-BIHcVGyk.js} +1 -1
  121. package/viewer/assets/{id-ID-SAP4L64H-Cn7gY12W.js → id-ID-SAP4L64H-2E5Kix_C.js} +1 -1
  122. package/viewer/assets/{image-ChcQpIrp.js → image-G614m4ZM.js} +2 -2
  123. package/viewer/assets/image-GAAHSSAO-Rpwb0N4h.js +1 -0
  124. package/viewer/assets/index-BI5HB5Rl.js +123 -0
  125. package/viewer/assets/{index-GSEVFUM2.css → index-CJLM3dyI.css} +1 -1
  126. package/viewer/assets/info-J43DQDTF-CT1r1cjw.js +1 -0
  127. package/viewer/assets/{infoDiagram-5YYISTIA-Rb6tIZBi.js → infoDiagram-5YYISTIA-kZJtAbP_.js} +1 -1
  128. package/viewer/assets/ini-BMQSfYcX.js +1 -0
  129. package/viewer/assets/{ishikawaDiagram-YF4QCWOH-BZIT_2T6.js → ishikawaDiagram-YF4QCWOH-DG9HV9q6.js} +1 -1
  130. package/viewer/assets/{it-IT-JPQ66NNP-CfJGGmT2.js → it-IT-JPQ66NNP-CnQ-3QH7.js} +1 -1
  131. package/viewer/assets/{ja-JP-DBVTYXUO-DOgm32os.js → ja-JP-DBVTYXUO-CRxCqKsa.js} +1 -1
  132. package/viewer/assets/java-CLKxIYNp.js +1 -0
  133. package/viewer/assets/javascript-KR3bXd09.js +1 -0
  134. package/viewer/assets/{journeyDiagram-JHISSGLW-B0Kahpq5.js → journeyDiagram-JHISSGLW-C1JJID5L.js} +1 -1
  135. package/viewer/assets/json-CKtDrYhA.js +1 -0
  136. package/viewer/assets/{jszip.min-BZbZNX2m.js → jszip.min-Id5IBz7f.js} +1 -1
  137. package/viewer/assets/{kaa-6HZHGXH3-0IvBggIR.js → kaa-6HZHGXH3-ChFA9tK_.js} +1 -1
  138. package/viewer/assets/{kab-KAB-ZGHBKWFO-BKWgCEfl.js → kab-KAB-ZGHBKWFO-Ciml9-Uf.js} +1 -1
  139. package/viewer/assets/{kanban-definition-UN3LZRKU-CA4wOtV_.js → kanban-definition-UN3LZRKU-D49STH2K.js} +1 -1
  140. package/viewer/assets/{kk-KZ-P5N5QNE5-CNB8g-8E.js → kk-KZ-P5N5QNE5-DlV2CBm3.js} +1 -1
  141. package/viewer/assets/{km-KH-HSX4SM5Z-ePtupWf-.js → km-KH-HSX4SM5Z-BhyNYLlM.js} +1 -1
  142. package/viewer/assets/{ko-KR-MTYHY66A-Bmc8s4Fj.js → ko-KR-MTYHY66A-9-e8MhLA.js} +1 -1
  143. package/viewer/assets/{ku-TR-6OUDTVRD-DYvSmdMb.js → ku-TR-6OUDTVRD-CM3iYy93.js} +1 -1
  144. package/viewer/assets/{lib-BLtD-8__.js → lib-psK2Wz13.js} +1 -1
  145. package/viewer/assets/{lt-LT-XHIRWOB4-ilcPBuZy.js → lt-LT-XHIRWOB4-CJ6Q3vnw.js} +1 -1
  146. package/viewer/assets/{lv-LV-5QDEKY6T-UzsbOMqB.js → lv-LV-5QDEKY6T-BvBzM-RF.js} +1 -1
  147. package/viewer/assets/markdown-DQnm92SS.js +1 -0
  148. package/viewer/assets/{md-BMcJ03D5.js → md-B2QLvkDU.js} +2 -2
  149. package/viewer/assets/{mermaid-parser.core-Bb8JWOnL.js → mermaid-parser.core-CGXz-aOL.js} +2 -2
  150. package/viewer/assets/{mindmap-definition-RKZ34NQL-B8_8CkXx.js → mindmap-definition-RKZ34NQL-COgSb4CU.js} +1 -1
  151. package/viewer/assets/model-Kxmh2HCZ.js +2 -0
  152. package/viewer/assets/{mr-IN-CRQNXWMA-BXiqB3ZQ.js → mr-IN-CRQNXWMA-CDMu-dLJ.js} +1 -1
  153. package/viewer/assets/{my-MM-5M5IBNSE-DvAy5Bw5.js → my-MM-5M5IBNSE-C1OkeTjw.js} +1 -1
  154. package/viewer/assets/{nb-NO-T6EIAALU-B9km4_yF.js → nb-NO-T6EIAALU-DrGZuVqT.js} +1 -1
  155. package/viewer/assets/{nestedRender-CLSeYn_G.js → nestedRender-BLI6hG0n.js} +3 -3
  156. package/viewer/assets/{nl-NL-IS3SIHDZ-BfRDQb5e.js → nl-NL-IS3SIHDZ-CN6sWvX2.js} +1 -1
  157. package/viewer/assets/{nn-NO-6E72VCQL-DgbfEKD7.js → nn-NO-6E72VCQL-CQJ_VCAI.js} +1 -1
  158. package/viewer/assets/{oc-FR-POXYY2M6-WCFsWM6_.js → oc-FR-POXYY2M6-C8J-uyoA.js} +1 -1
  159. package/viewer/assets/{ofd-BnehVcOy.js → ofd-CxvvgBTM.js} +1 -1
  160. package/viewer/assets/{ofd-9G35BreV.js → ofd-Dbx1OVn7.js} +2 -2
  161. package/viewer/assets/{pa-IN-N4M65BXN-CzSvMz1c.js → pa-IN-N4M65BXN-C0G2S4NI.js} +1 -1
  162. package/viewer/assets/packet-YPE3B663-CzaR_2DU.js +1 -0
  163. package/viewer/assets/pdf-K9Ihj4XO.js +2 -0
  164. package/viewer/assets/percentages-BXMCSKIN-ftLbELJe.js +1 -0
  165. package/viewer/assets/php-B8QdQEEH.js +2 -0
  166. package/viewer/assets/{pica-Bv7SZkwC.js → pica-BgE9bY4k.js} +1 -1
  167. package/viewer/assets/pie-LRSECV5Y-CTORHwxP.js +1 -0
  168. package/viewer/assets/{pieDiagram-4H26LBE5-i2Hk1QdC.js → pieDiagram-4H26LBE5-V2yLncw7.js} +1 -1
  169. package/viewer/assets/{pl-PL-T2D74RX3-D5jKAjH3.js → pl-PL-T2D74RX3-CdWoEIFY.js} +1 -1
  170. package/viewer/assets/{pptx-DUpbC-i9.js → pptx-CH689gIE.js} +2 -2
  171. package/viewer/assets/{prod-BMo_HI_d.js → prod-Dop7HS69.js} +6 -6
  172. package/viewer/assets/{pt-BR-5N22H2LF-BOuLuCic.js → pt-BR-5N22H2LF-BWPNiz8Q.js} +1 -1
  173. package/viewer/assets/{pt-PT-UZXXM6DQ-IaWI7MhK.js → pt-PT-UZXXM6DQ-CnfiqDQO.js} +1 -1
  174. package/viewer/assets/python-5t6UGqKu.js +1 -0
  175. package/viewer/assets/{quadrantDiagram-W4KKPZXB-DAK7tnXK.js → quadrantDiagram-W4KKPZXB-BxQ2gYVx.js} +1 -1
  176. package/viewer/assets/radar-GUYGQ44K-D4MEjruV.js +1 -0
  177. package/viewer/assets/{requirementDiagram-4Y6WPE33-Qe1tMsuz.js → requirementDiagram-4Y6WPE33-BR9yUmZe.js} +1 -1
  178. package/viewer/assets/{ro-RO-JPDTUUEW-CVjUeVDX.js → ro-RO-JPDTUUEW-CciehhCy.js} +1 -1
  179. package/viewer/assets/rough.esm-Oxxs0Vlt.js +1 -0
  180. package/viewer/assets/{ru-RU-B4JR7IUQ-DZoFd6WW.js → ru-RU-B4JR7IUQ-Cy6AtC5Q.js} +1 -1
  181. package/viewer/assets/rust-CKj8FOnD.js +1 -0
  182. package/viewer/assets/{sankeyDiagram-5OEKKPKP-DkifBY1g.js → sankeyDiagram-5OEKKPKP-bGlglRj3.js} +1 -1
  183. package/viewer/assets/{sequenceDiagram-3UESZ5HK-nN3sfh-M.js → sequenceDiagram-3UESZ5HK-DLOdVhYj.js} +1 -1
  184. package/viewer/assets/{si-LK-N5RQ5JYF-1DE87iHx.js → si-LK-N5RQ5JYF-Bh2n8Jz_.js} +1 -1
  185. package/viewer/assets/{sk-SK-C5VTKIMK-CfK25T_B.js → sk-SK-C5VTKIMK-B61DyQt2.js} +1 -1
  186. package/viewer/assets/{sl-SI-NN7IZMDC-X1aagPrK.js → sl-SI-NN7IZMDC-BvvQlaip.js} +1 -1
  187. package/viewer/assets/sql-Ce6HY06Z.js +1 -0
  188. package/viewer/assets/{src-vkV3wo-k.js → src-GH_ooRi9.js} +1 -1
  189. package/viewer/assets/{stateDiagram-AJRCARHV-Bz218kDr.js → stateDiagram-AJRCARHV-DPbU7NMP.js} +1 -1
  190. package/viewer/assets/stateDiagram-v2-BHNVJYJU-j8H26LIF.js +1 -0
  191. package/viewer/assets/subset-shared.chunk-DiZ-pMTc.js +1 -0
  192. package/viewer/assets/{subset-worker.chunk-CEbx-0kL.js → subset-worker.chunk-12m1jjNs.js} +1 -1
  193. package/viewer/assets/{sv-SE-XGPEYMSR-CzvygZQ0.js → sv-SE-XGPEYMSR-Crjxdi6Y.js} +1 -1
  194. package/viewer/assets/{ta-IN-2NMHFXQM-CaihQzsz.js → ta-IN-2NMHFXQM-BhWbH9xv.js} +1 -1
  195. package/viewer/assets/text-C6RjJEhD.js +2 -0
  196. package/viewer/assets/{th-TH-HPSO5L25-BJjmvFhx.js → th-TH-HPSO5L25-32L5IsHm.js} +1 -1
  197. package/viewer/assets/{timeline-definition-PNZ67QCA-z7k1VtBV.js → timeline-definition-PNZ67QCA-CMdEFUEy.js} +1 -1
  198. package/viewer/assets/{tr-TR-DEFEU3FU-B91i2gCj.js → tr-TR-DEFEU3FU-Dj12R0xq.js} +1 -1
  199. package/viewer/assets/treeView-BLDUP644-BgNHZB0M.js +1 -0
  200. package/viewer/assets/treemap-LRROVOQU--QX_2nHK.js +1 -0
  201. package/viewer/assets/typescript-CL2ByGCA.js +1 -0
  202. package/viewer/assets/{uk-UA-QMV73CPH-DYR95Cef.js → uk-UA-QMV73CPH-DWig11co.js} +1 -1
  203. package/viewer/assets/{umd-DthhID5n.js → umd-Cj_YkrnK.js} +2 -2
  204. package/viewer/assets/{vennDiagram-CIIHVFJN-oy77Gs4f.js → vennDiagram-CIIHVFJN-Bbdl2UQ1.js} +1 -1
  205. package/viewer/assets/{vi-VN-M7AON7JQ-C62OWduz.js → vi-VN-M7AON7JQ-DQw-biKt.js} +1 -1
  206. package/viewer/assets/wardley-L42UT6IY-Hqa4moPl.js +1 -0
  207. package/viewer/assets/{wardleyDiagram-YWT4CUSO-DhotzNg3.js → wardleyDiagram-YWT4CUSO-CvhtSm1x.js} +1 -1
  208. package/viewer/assets/{word-C3Fv1vLf.js → word-Dtuehran.js} +2 -2
  209. package/viewer/assets/xlsx-VzwwO4SI.js +2 -0
  210. package/viewer/assets/xml-CKLaISb_.js +1 -0
  211. package/viewer/assets/{xychartDiagram-2RQKCTM6-D8oWIz35.js → xychartDiagram-2RQKCTM6-BKVhKsL4.js} +1 -1
  212. package/viewer/assets/yaml-CnW-k44d.js +1 -0
  213. package/viewer/assets/{zh-CN-LNUGB5OW-DRDYWYqf.js → zh-CN-LNUGB5OW-Ba6LaMER.js} +1 -1
  214. package/viewer/assets/{zh-HK-E62DVLB3-DqsSgURR.js → zh-HK-E62DVLB3-jEQ4gtnU.js} +1 -1
  215. package/viewer/assets/{zh-TW-RAJ6MFWO-DNaQ_tzk.js → zh-TW-RAJ6MFWO-DaF3AfHy.js} +1 -1
  216. package/viewer/flyfish-viewer-manifest.json +1 -1
  217. package/viewer/index.html +288 -5
  218. package/viewer/assets/CadViewer-BxKziBoL.js +0 -1
  219. package/viewer/assets/CadViewer-KY38lZv8.css +0 -1
  220. package/viewer/assets/CodeViewer-iJqnFvBo.js +0 -4
  221. package/viewer/assets/DrawingViewer-3xubz-e_.js +0 -2
  222. package/viewer/assets/DrawingViewer-CHm6iXmV.css +0 -1
  223. package/viewer/assets/EdaViewer-TWUlf_kL.js +0 -3
  224. package/viewer/assets/EdaViewer-fzRr-hJQ.css +0 -1
  225. package/viewer/assets/architecture-7EHR7CIX-DJe_E9I0.js +0 -1
  226. package/viewer/assets/cad-BLjc0ZUr.js +0 -2
  227. package/viewer/assets/channel-CB6_Gbjf.js +0 -1
  228. package/viewer/assets/chunk-QZHKN3VN-DPzbUv5V.js +0 -1
  229. package/viewer/assets/classDiagram-4FO5ZUOK-rRBtXK0L.js +0 -1
  230. package/viewer/assets/classDiagram-v2-Q7XG4LA2-CsuF8M2k.js +0 -1
  231. package/viewer/assets/drawing-B56wLK6L.js +0 -2
  232. package/viewer/assets/eda-Ct0fvfLE.js +0 -2
  233. package/viewer/assets/email-CalaS-yq.js +0 -2
  234. package/viewer/assets/eventmodeling-FCH6USID-iyGldGGx.js +0 -1
  235. package/viewer/assets/gitGraph-WXDBUCRP-3fiTtpJH.js +0 -1
  236. package/viewer/assets/image-GAAHSSAO-CZ_-H6__.js +0 -1
  237. package/viewer/assets/index-C0UtzWhe.js +0 -37
  238. package/viewer/assets/info-J43DQDTF-DqF-grBv.js +0 -1
  239. package/viewer/assets/model-CxRLH2Y1.js +0 -2
  240. package/viewer/assets/packet-YPE3B663-BPatVCfY.js +0 -1
  241. package/viewer/assets/pdf-Csx_l8dg.js +0 -2
  242. package/viewer/assets/percentages-BXMCSKIN-DLumFujS.js +0 -1
  243. package/viewer/assets/pie-LRSECV5Y-C1xYL0T3.js +0 -1
  244. package/viewer/assets/radar-GUYGQ44K-CX2_yVT9.js +0 -1
  245. package/viewer/assets/rough.esm-BrTFrov0.js +0 -1
  246. package/viewer/assets/stateDiagram-v2-BHNVJYJU-Drk91Wud.js +0 -1
  247. package/viewer/assets/subset-shared.chunk-D5fTz4et.js +0 -1
  248. package/viewer/assets/text-B0SSRZLf.js +0 -2
  249. package/viewer/assets/treeView-BLDUP644-Dq_dAvv1.js +0 -1
  250. package/viewer/assets/treemap-LRROVOQU-B9cQPlPD.js +0 -1
  251. package/viewer/assets/wardley-L42UT6IY-CH37fIcF.js +0 -1
  252. package/viewer/assets/xlsx-CQfe5LBR.js +0 -2
  253. /package/viewer/assets/{cytoscape.esm-D3dnj5Y5.js → cytoscape.esm-BO4b6pVn.js} +0 -0
  254. /package/viewer/assets/{fflate.module-IyciJBwI.js → fflate.module-DmN2iWjn.js} +0 -0
  255. /package/viewer/assets/{graphlib-5aGczWtL.js → graphlib-BpbuYmc5.js} +0 -0
  256. /package/viewer/assets/{image-blob-reduce.esm-CchPTdAc.js → image-blob-reduce.esm-ClRzuTkj.js} +0 -0
  257. /package/viewer/assets/{katex-DMEfcw6w.js → katex-BRA9miIt.js} +0 -0
  258. /package/viewer/assets/{libarchive-DrK073qr.js → libarchive-BWmjBS7s.js} +0 -0
  259. /package/viewer/assets/{mp4-DM3FRbWc.js → mp4-E_aU-TOR.js} +0 -0
  260. /package/viewer/assets/{postal-mime-Bjwaq0co.js → postal-mime-CuiVR6kZ.js} +0 -0
  261. /package/viewer/assets/{three.module-Co97Nwgn.js → three.module-DQeeIQFF.js} +0 -0
  262. /package/viewer/assets/{worker-bundle-39P8NeRQ.js → worker-bundle-D-AQnxpp.js} +0 -0
  263. /package/viewer/assets/{worker-ref-B1EGXVKD.js → worker-ref-BqLasdQ2.js} +0 -0
package/LICENSE ADDED
@@ -0,0 +1,160 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction, and
10
+ distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by the copyright
13
+ owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all other entities
16
+ that control, are controlled by, or are under common control with that entity.
17
+ For the purposes of this definition, "control" means (i) the power, direct or
18
+ indirect, to cause the direction or management of such entity, whether by
19
+ contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
20
+ outstanding shares, or (iii) beneficial ownership of such entity.
21
+
22
+ "You" (or "Your") shall mean an individual or Legal Entity exercising
23
+ permissions granted by this License.
24
+
25
+ "Source" form shall mean the preferred form for making modifications, including
26
+ but not limited to software source code, documentation source, and configuration
27
+ files.
28
+
29
+ "Object" form shall mean any form resulting from mechanical transformation or
30
+ translation of a Source form, including but not limited to compiled object code,
31
+ generated documentation, and conversions to other media types.
32
+
33
+ "Work" shall mean the work of authorship, whether in Source or Object form,
34
+ made available under the License, as indicated by a copyright notice that is
35
+ included in or attached to the work.
36
+
37
+ "Derivative Works" shall mean any work, whether in Source or Object form, that
38
+ is based on (or derived from) the Work and for which the editorial revisions,
39
+ annotations, elaborations, or other modifications represent, as a whole, an
40
+ original work of authorship. For the purposes of this License, Derivative Works
41
+ shall not include works that remain separable from, or merely link (or bind by
42
+ name) to the interfaces of, the Work and Derivative Works thereof.
43
+
44
+ "Contribution" shall mean any work of authorship, including the original version
45
+ of the Work and any modifications or additions to that Work or Derivative Works
46
+ thereof, that is intentionally submitted to Licensor for inclusion in the Work by
47
+ the copyright owner or by an individual or Legal Entity authorized to submit on
48
+ behalf of the copyright owner. For the purposes of this definition, "submitted"
49
+ means any form of electronic, verbal, or written communication sent to the
50
+ Licensor or its representatives, including but not limited to communication on
51
+ electronic mailing lists, source code control systems, and issue tracking systems
52
+ that are managed by, or on behalf of, the Licensor for the purpose of discussing
53
+ and improving the Work, but excluding communication that is conspicuously marked
54
+ or otherwise designated in writing by the copyright owner as "Not a
55
+ Contribution."
56
+
57
+ "Contributor" shall mean Licensor and any individual or Legal Entity on behalf
58
+ of whom a Contribution has been received by Licensor and subsequently
59
+ incorporated within the Work.
60
+
61
+ 2. Grant of Copyright License. Subject to the terms and conditions of this
62
+ License, each Contributor hereby grants to You a perpetual, worldwide,
63
+ non-exclusive, no-charge, royalty-free, irrevocable copyright license to
64
+ reproduce, prepare Derivative Works of, publicly display, publicly perform,
65
+ sublicense, and distribute the Work and such Derivative Works in Source or
66
+ Object form.
67
+
68
+ 3. Grant of Patent License. Subject to the terms and conditions of this License,
69
+ each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
70
+ no-charge, royalty-free, irrevocable (except as stated in this section) patent
71
+ license to make, have made, use, offer to sell, sell, import, and otherwise
72
+ transfer the Work, where such license applies only to those patent claims
73
+ licensable by such Contributor that are necessarily infringed by their
74
+ Contribution(s) alone or by combination of their Contribution(s) with the Work to
75
+ which such Contribution(s) was submitted. If You institute patent litigation
76
+ against any entity (including a cross-claim or counterclaim in a lawsuit)
77
+ alleging that the Work or a Contribution incorporated within the Work
78
+ constitutes direct or contributory patent infringement, then any patent licenses
79
+ granted to You under this License for that Work shall terminate as of the date
80
+ such litigation is filed.
81
+
82
+ 4. Redistribution. You may reproduce and distribute copies of the Work or
83
+ Derivative Works thereof in any medium, with or without modifications, and in
84
+ Source or Object form, provided that You meet the following conditions:
85
+
86
+ (a) You must give any other recipients of the Work or Derivative Works a copy of
87
+ this License; and
88
+
89
+ (b) You must cause any modified files to carry prominent notices stating that
90
+ You changed the files; and
91
+
92
+ (c) You must retain, in the Source form of any Derivative Works that You
93
+ distribute, all copyright, patent, trademark, and attribution notices from the
94
+ Source form of the Work, excluding those notices that do not pertain to any part
95
+ of the Derivative Works; and
96
+
97
+ (d) If the Work includes a "NOTICE" text file as part of its distribution, then
98
+ any Derivative Works that You distribute must include a readable copy of the
99
+ attribution notices contained within such NOTICE file, excluding those notices
100
+ that do not pertain to any part of the Derivative Works, in at least one of the
101
+ following places: within a NOTICE text file distributed as part of the Derivative
102
+ Works; within the Source form or documentation, if provided along with the
103
+ Derivative Works; or, within a display generated by the Derivative Works, if and
104
+ wherever such third-party notices normally appear. The contents of the NOTICE
105
+ file are for informational purposes only and do not modify the License. You may
106
+ add Your own attribution notices within Derivative Works that You distribute,
107
+ alongside or as an addendum to the NOTICE text from the Work, provided that such
108
+ additional attribution notices cannot be construed as modifying the License.
109
+
110
+ You may add Your own copyright statement to Your modifications and may provide
111
+ additional or different license terms and conditions for use, reproduction, or
112
+ distribution of Your modifications, or for any such Derivative Works as a whole,
113
+ provided Your use, reproduction, and distribution of the Work otherwise complies
114
+ with the conditions stated in this License.
115
+
116
+ 5. Submission of Contributions. Unless You explicitly state otherwise, any
117
+ Contribution intentionally submitted for inclusion in the Work by You to the
118
+ Licensor shall be under the terms and conditions of this License, without any
119
+ additional terms or conditions. Notwithstanding the above, nothing herein shall
120
+ supersede or modify the terms of any separate license agreement you may have
121
+ executed with Licensor regarding such Contributions.
122
+
123
+ 6. Trademarks. This License does not grant permission to use the trade names,
124
+ trademarks, service marks, or product names of the Licensor, except as required
125
+ for reasonable and customary use in describing the origin of the Work and
126
+ reproducing the content of the NOTICE file.
127
+
128
+ 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in
129
+ writing, Licensor provides the Work (and each Contributor provides its
130
+ Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
131
+ KIND, either express or implied, including, without limitation, any warranties or
132
+ conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
133
+ PARTICULAR PURPOSE. You are solely responsible for determining the
134
+ appropriateness of using or redistributing the Work and assume any risks
135
+ associated with Your exercise of permissions under this License.
136
+
137
+ 8. Limitation of Liability. In no event and under no legal theory, whether in
138
+ tort (including negligence), contract, or otherwise, unless required by
139
+ applicable law (such as deliberate and grossly negligent acts) or agreed to in
140
+ writing, shall any Contributor be liable to You for damages, including any
141
+ direct, indirect, special, incidental, or consequential damages of any character
142
+ arising as a result of this License or out of the use or inability to use the
143
+ Work (including but not limited to damages for loss of goodwill, work stoppage,
144
+ computer failure or malfunction, or any and all other commercial damages or
145
+ losses), even if such Contributor has been advised of the possibility of such
146
+ damages.
147
+
148
+ 9. Accepting Warranty or Additional Liability. While redistributing the Work or
149
+ Derivative Works thereof, You may choose to offer, and charge a fee for,
150
+ acceptance of support, warranty, indemnity, or other liability obligations and/or
151
+ rights consistent with this License. However, in accepting such obligations, You
152
+ may act only on Your own behalf and on Your sole responsibility, not on behalf of
153
+ any other Contributor, and only if You agree to indemnify, defend, and hold each
154
+ Contributor harmless for any liability incurred by, or claims asserted against,
155
+ such Contributor by reason of your accepting any such warranty or additional
156
+ liability.
157
+
158
+ END OF TERMS AND CONDITIONS
159
+
160
+ Copyright 2026 Flyfish Viewer
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.11
6
+ npm install @flyfish-group/file-viewer-web@1.0.13
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`。
@@ -47,4 +47,4 @@ mountViewerFrame(el, {
47
47
  })
48
48
  ```
49
49
 
50
- `options` 会透传给 Vue 基线预览器,可配置下载/打印/导出 HTML 操作栏、文字或图片水印,以及压缩包预览的 `libarchive.js` Worker、IndexedDB 缓存和体积上限。
50
+ `options` 会透传给 Vue 基线预览器,可配置下载/打印/导出 HTML 操作栏、文字或图片水印,以及压缩包预览的 `libarchive.js` Worker、IndexedDB 缓存和体积上限。PDF 打印和导出会逐页生成完整页面,不依赖当前 iframe 视口或已渲染 canvas。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flyfish-group/file-viewer-web",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Private-deploy pure web component for Flyfish Viewer",
@@ -54,14 +54,14 @@
54
54
  "viewer",
55
55
  "README.md"
56
56
  ],
57
- "scripts": {
58
- "build": "tsc -b tsconfig.json",
59
- "postinstall": "node ./scripts/copy-assets.mjs --postinstall",
60
- "type-check": "tsc -b tsconfig.json"
61
- },
62
57
  "devDependencies": {
63
58
  "@types/node": "^25.8.0",
64
59
  "typescript": "^6.0.3"
65
60
  },
66
- "license": "Apache-2.0"
67
- }
61
+ "license": "Apache-2.0",
62
+ "scripts": {
63
+ "build": "tsc -b tsconfig.json",
64
+ "postinstall": "node ./scripts/copy-assets.mjs --postinstall",
65
+ "type-check": "tsc -b tsconfig.json"
66
+ }
67
+ }
@@ -1 +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-Co97Nwgn.js";import{t as y}from"./fflate.module-IyciJBwI.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};
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};
@@ -1 +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-Co97Nwgn.js";import{t as c}from"./fflate.module-IyciJBwI.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};
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};
@@ -1 +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-C0UtzWhe.js";import{t as ae}from"./nestedRender-CLSeYn_G.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-39P8NeRQ.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-DrK073qr.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};
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-BI5HB5Rl.js";import{t as ae}from"./nestedRender-BLI6hG0n.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};
@@ -1 +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-C0UtzWhe.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};
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-BI5HB5Rl.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-BI5HB5Rl.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-BVRa96uX.js","./index-BI5HB5Rl.js","./index-CJLM3dyI.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-BI5HB5Rl.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-BVRa96uX.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}
@@ -1,3 +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-Co97Nwgn.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.
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
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
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,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./rough.esm-Oxxs0Vlt.js","./index-BI5HB5Rl.js","./index-CJLM3dyI.css","./prod-Dop7HS69.js","./chunk-K2UTITRG-C8pNkET-.js","./chunk-SRAX5OIU-DMV7GEw_.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-BI5HB5Rl.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-Oxxs0Vlt.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-Dop7HS69.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
+ .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}}