@flyfish-group/file-viewer-web 1.0.20 → 1.0.22

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 (341) hide show
  1. package/README.md +18 -4
  2. package/dist/index.d.ts +18 -0
  3. package/dist/index.js +50 -5
  4. package/package.json +1 -1
  5. package/viewer/assets/{3MFLoader-BLLnIDfF.js → 3MFLoader--yjh7udp.js} +1 -1
  6. package/viewer/assets/{AMFLoader-Co6GFjGd.js → AMFLoader-C0y7NIAO.js} +1 -1
  7. package/viewer/assets/ArchiveViewer-CPhpkbIj.js +1 -0
  8. package/viewer/assets/AudioViewer-B_qZjmsL.js +1 -0
  9. package/viewer/assets/CadViewer-DU2h_miC.js +1 -0
  10. package/viewer/assets/CodeViewer-CWJinXd-.css +1 -0
  11. package/viewer/assets/CodeViewer-n64org7g.js +2 -0
  12. package/viewer/assets/{ColladaLoader-DLsqbaWZ.js → ColladaLoader-DTiuvWJL.js} +1 -1
  13. package/viewer/assets/DrawingViewer-BsPDsvje.js +2 -0
  14. package/viewer/assets/EdaViewer-CRXNBqD8.js +8 -0
  15. package/viewer/assets/EmailViewer-BdKEJv7y.js +4 -0
  16. package/viewer/assets/EpubViewer-wPFt5vlJ.js +2 -0
  17. package/viewer/assets/{FBXLoader-CDJxWnMq.js → FBXLoader-Bj34Z_uf.js} +1 -1
  18. package/viewer/assets/{GLTFLoader-tdpRj7x3.js → GLTFLoader-BNUIXeRP.js} +1 -1
  19. package/viewer/assets/ImageViewer-3xUYPq4w.js +1 -0
  20. package/viewer/assets/{KMZLoader-Co2u3IuK.js → KMZLoader-DTmXWzX_.js} +1 -1
  21. package/viewer/assets/{MarkdownViewer-oNfC_8ZI.js → MarkdownViewer-DUe9OWgX.js} +19 -19
  22. package/viewer/assets/{MarkdownViewer-eiSmDN4C.css → MarkdownViewer-DfpNPUlw.css} +1 -1
  23. package/viewer/assets/ModelViewer-LeKRgAjH.js +2 -0
  24. package/viewer/assets/{OBJLoader-CIcUmaIR.js → OBJLoader-DW4Mv-mq.js} +1 -1
  25. package/viewer/assets/OfdViewer-yYh014I9.js +2 -0
  26. package/viewer/assets/{PCDLoader-Ckik2ZNQ.js → PCDLoader-CHA1g8rk.js} +1 -1
  27. package/viewer/assets/{PLYLoader-CpoozyyG.js → PLYLoader-DwTzA-Dg.js} +1 -1
  28. package/viewer/assets/{PdfView-d7S_ChQk.css → PdfView-CtiDN2FA.css} +1 -1
  29. package/viewer/assets/PdfView-qL9biz6K.js +558 -0
  30. package/viewer/assets/{PptxRender-BQ5mqB0E.css → PptxRender-CbGXiqYZ.css} +1 -1
  31. package/viewer/assets/PptxRender-CgGc0Lmd.js +32 -0
  32. package/viewer/assets/{STLLoader--ClWNq9A.js → STLLoader-Bt7FMgMu.js} +1 -1
  33. package/viewer/assets/{TDSLoader-Dat6-0hj.js → TDSLoader-D__OhSS9.js} +1 -1
  34. package/viewer/assets/TypstViewer-BWfhuA9V.js +60 -0
  35. package/viewer/assets/TypstViewer-DGGaqvFG.css +1 -0
  36. package/viewer/assets/{USDLoader-D5bNRrcv.js → USDLoader-BovI5HgZ.js} +1 -1
  37. package/viewer/assets/UmdViewer-BQg9tWl-.js +3 -0
  38. package/viewer/assets/{VRMLLoader-Cc44JIu6.js → VRMLLoader-_VxVXPvX.js} +13 -13
  39. package/viewer/assets/{VTKLoader-B7r87HF1.js → VTKLoader-BfnzBXsa.js} +1 -1
  40. package/viewer/assets/{XYZLoader-D0wrbuYP.js → XYZLoader-DbQZs-aZ.js} +1 -1
  41. package/viewer/assets/{XlsxTable-Dw0Jcxvw.js → XlsxTable-weyE_CEp.js} +4 -4
  42. package/viewer/assets/__vite-browser-external-BEGdo7Ij.js +1 -0
  43. package/viewer/assets/{ar-SA-G6X2FPQ2-BFhEDKSC.js → ar-SA-G6X2FPQ2-Ct8pPIA9.js} +1 -1
  44. package/viewer/assets/{arc-Dimj_7G-.js → arc-C_eH0vTw.js} +1 -1
  45. package/viewer/assets/architecture-7EHR7CIX-BTlHPVaJ.js +1 -0
  46. package/viewer/assets/architectureDiagram-3BPJPVTR-B-eDaTQ2.js +36 -0
  47. package/viewer/assets/archive-DwmH2EER.js +2 -0
  48. package/viewer/assets/audio-DP7_SHBq.js +2 -0
  49. package/viewer/assets/{az-AZ-76LH7QW2-X4BKx5b-.js → az-AZ-76LH7QW2-CzGVqBxA.js} +1 -1
  50. package/viewer/assets/{bg-BG-XCXSNQG7-5o1TFhxr.js → bg-BG-XCXSNQG7-BC1WHeuj.js} +1 -1
  51. package/viewer/assets/{blockDiagram-GPEHLZMM-BaxQac23.js → blockDiagram-GPEHLZMM-CzYTB9qf.js} +1 -1
  52. package/viewer/assets/{bn-BD-2XOGV67Q-BmHkUh14.js → bn-BD-2XOGV67Q-oDxumlGl.js} +1 -1
  53. package/viewer/assets/{c4Diagram-AAUBKEIU-DlQu80c9.js → c4Diagram-AAUBKEIU-Ce3rQlcz.js} +1 -1
  54. package/viewer/assets/{ca-ES-6MX7JW3Y-BppuWJIV.js → ca-ES-6MX7JW3Y-DlRpGNhJ.js} +1 -1
  55. package/viewer/assets/cad-S62Z1ew-.js +2 -0
  56. package/viewer/assets/cfb-BzFYazhG.js +11 -0
  57. package/viewer/assets/channel-DdWUR2sn.js +1 -0
  58. package/viewer/assets/{chunk-2J33WTMH-DJMn9D2P.js → chunk-2J33WTMH-sJnJZdWK.js} +1 -1
  59. package/viewer/assets/{chunk-3OPIFGDE-D3k-y1T_.js → chunk-3OPIFGDE-Dy9HIqGz.js} +1 -1
  60. package/viewer/assets/{chunk-4BX2VUAB-D9CCa3ZN.js → chunk-4BX2VUAB-_gCngxqj.js} +1 -1
  61. package/viewer/assets/chunk-55IACEB6-DJVZWNP2.js +1 -0
  62. package/viewer/assets/{chunk-5ZQYHXKU-Dt0AW7Zd.js → chunk-5ZQYHXKU-BmHYmhZg.js} +1 -1
  63. package/viewer/assets/{chunk-727SXJPM-ynA6Cu0a.js → chunk-727SXJPM-Bat8V6oA.js} +1 -1
  64. package/viewer/assets/chunk-AGHRB4JF-N1YYSFfw.js +1 -0
  65. package/viewer/assets/{chunk-AQP2D5EJ-DoPeDIuu.js → chunk-AQP2D5EJ-1mc6GFJc.js} +1 -1
  66. package/viewer/assets/{chunk-BSJP7CBP-KzA514ql.js → chunk-BSJP7CBP-B5-KaGur.js} +1 -1
  67. package/viewer/assets/{chunk-CSCIHK7Q-BejYIrDO.js → chunk-CSCIHK7Q-B8WcTeuL.js} +2 -2
  68. package/viewer/assets/{chunk-EIO257PC-KzrtKBd7.js → chunk-EIO257PC-DamrG-x6.js} +7 -7
  69. package/viewer/assets/{chunk-FMBD7UC4-CrxD0CA5.js → chunk-FMBD7UC4-UHfET5Yn.js} +1 -1
  70. package/viewer/assets/chunk-K2UTITRG-CW6VmW0l.js +35 -0
  71. package/viewer/assets/{chunk-KSCS5N6A-DW6DrVYV.js → chunk-KSCS5N6A-D-BXbKOk.js} +1 -1
  72. package/viewer/assets/{chunk-L5ZTLDWV-GaltCiZi.js → chunk-L5ZTLDWV-CMDQijEU.js} +1 -1
  73. package/viewer/assets/chunk-LZXEDZCA-C3SSYZJ5.js +2 -0
  74. package/viewer/assets/{chunk-ND2GUHAM-Dkwaucui.js → chunk-ND2GUHAM-Vx_Lzab7.js} +1 -1
  75. package/viewer/assets/chunk-NNHCCRGN-DlpIbxXb.js +159 -0
  76. package/viewer/assets/{chunk-NZK2D7GU-BXZ5n5sm.js → chunk-NZK2D7GU-grlSNYf9.js} +1 -1
  77. package/viewer/assets/{chunk-O5CBEL6O-BJuZKW5r.js → chunk-O5CBEL6O-MjJGEUAK.js} +1 -1
  78. package/viewer/assets/chunk-QZHKN3VN-BsA9NQqS.js +1 -0
  79. package/viewer/assets/chunk-SRAX5OIU-WEWN8Pf_.js +1 -0
  80. package/viewer/assets/chunk-WU5MYG2G-CpDqo4az.js +1 -0
  81. package/viewer/assets/{chunk-XPW4576I-pnqD549R.js → chunk-XPW4576I-CSqlWRxK.js} +1 -1
  82. package/viewer/assets/classDiagram-4FO5ZUOK-CNHAm630.js +1 -0
  83. package/viewer/assets/classDiagram-v2-Q7XG4LA2-CNHAm630.js +1 -0
  84. package/viewer/assets/compare-BDsbatdp.css +1 -0
  85. package/viewer/assets/compare-Bfimd92S.js +1 -0
  86. package/viewer/assets/{compiler-Qh6d_b5m.js → compiler-BV9U7LKi.js} +1 -1
  87. package/viewer/assets/core-CxoxnOTi.js +3 -0
  88. package/viewer/assets/cose-bilkent-S5V4N54A-COeDszYN.js +1 -0
  89. package/viewer/assets/cpp-V0F2hNk9.js +1 -0
  90. package/viewer/assets/{cs-CZ-2BRQDIVT-DuBx-KE8.js → cs-CZ-2BRQDIVT-C_SPqQME.js} +1 -1
  91. package/viewer/assets/{cytoscape.esm-BsFEMzg7.js → cytoscape.esm-C8YCVR3_.js} +2 -2
  92. package/viewer/assets/{da-DK-5WZEPLOC-D__2K29n.js → da-DK-5WZEPLOC-CEZavbB3.js} +1 -1
  93. package/viewer/assets/{dagre-BM42HDAG-Dw1xNQJG.js → dagre-BM42HDAG-lquvmcKk.js} +1 -1
  94. package/viewer/assets/{dagre-D0es08Si.js → dagre-Bx709z4p.js} +1 -1
  95. package/viewer/assets/{de-DE-XR44H4JA-Bk-_VAqx.js → de-DE-XR44H4JA-D2nL0tOJ.js} +1 -1
  96. package/viewer/assets/{diagram-2AECGRRQ-CubhPlh2.js → diagram-2AECGRRQ-BgQ_zxBV.js} +1 -1
  97. package/viewer/assets/{diagram-5GNKFQAL-lcCwHKpr.js → diagram-5GNKFQAL-BC3w3tNm.js} +1 -1
  98. package/viewer/assets/{diagram-KO2AKTUF-DobOKV0C.js → diagram-KO2AKTUF-D3cznkJB.js} +1 -1
  99. package/viewer/assets/{diagram-LMA3HP47-BtrCo4rD.js → diagram-LMA3HP47--wquG14e.js} +1 -1
  100. package/viewer/assets/{diagram-OG6HWLK6-C0AEdDFW.js → diagram-OG6HWLK6-C_POLZjQ.js} +1 -1
  101. package/viewer/assets/{directory-open-4ed118d0-CTCUDMMl.js → directory-open-4ed118d0-1i309Asm.js} +1 -1
  102. package/viewer/assets/{dist-Ddjj4E9h.js → dist-BPGt6zWy.js} +5 -5
  103. package/viewer/assets/dist-BT9pIsX0.js +1 -0
  104. package/viewer/assets/docx-preview-DdnRdWo4.js +20 -0
  105. package/viewer/assets/drawing-CMJwN97z.js +2 -0
  106. package/viewer/assets/ebook-DMvVt15d.js +2 -0
  107. package/viewer/assets/eda-DBL4Aevf.js +2 -0
  108. package/viewer/assets/{el-GR-BZB4AONW-ClFE4N7r.js → el-GR-BZB4AONW-Dj2P_01-.js} +1 -1
  109. package/viewer/assets/email-DeRFcYIE.js +2 -0
  110. package/viewer/assets/{en-B4ZKOASM-DBe8Q8-a.js → en-B4ZKOASM-C1I96dn5.js} +1 -1
  111. package/viewer/assets/{erDiagram-TEJ5UH35-B2m2BuHV.js → erDiagram-TEJ5UH35-DJEqPp7l.js} +1 -1
  112. package/viewer/assets/{es-ES-U4NZUMDT-wL5hCh7L.js → es-ES-U4NZUMDT-DrUBr8IT.js} +1 -1
  113. package/viewer/assets/{eu-ES-A7QVB2H4-DeE2jNFU.js → eu-ES-A7QVB2H4-C-B8VObw.js} +1 -1
  114. package/viewer/assets/eventmodeling-FCH6USID-B7JUE007.js +1 -0
  115. package/viewer/assets/{fa-IR-HGAKTJCU-D82MLeqy.js → fa-IR-HGAKTJCU-D2fbIqFb.js} +1 -1
  116. package/viewer/assets/{fi-FI-Z5N7JZ37-lO7MSiJw.js → fi-FI-Z5N7JZ37-ljqLaVsp.js} +1 -1
  117. package/viewer/assets/{flowDiagram-I6XJVG4X-CeEbcFuy.js → flowDiagram-I6XJVG4X-Brfn5DdP.js} +2 -2
  118. package/viewer/assets/{fr-FR-RHASNOE6-DgX1wyXR.js → fr-FR-RHASNOE6-So7R4D2i.js} +1 -1
  119. package/viewer/assets/{ganttDiagram-6RSMTGT7-B03SOSpP.js → ganttDiagram-6RSMTGT7-DdIjVTfn.js} +1 -1
  120. package/viewer/assets/gitGraph-WXDBUCRP-oU5uBMJp.js +1 -0
  121. package/viewer/assets/{gitGraphDiagram-PVQCEYII-mHEQgNfb.js → gitGraphDiagram-PVQCEYII-5HIom59P.js} +1 -1
  122. package/viewer/assets/{gl-ES-HMX3MZ6V-9KoX61Oe.js → gl-ES-HMX3MZ6V-C7WCIWks.js} +1 -1
  123. package/viewer/assets/{he-IL-6SHJWFNN-69L5ObUT.js → he-IL-6SHJWFNN-EBe1DN0h.js} +1 -1
  124. package/viewer/assets/{hi-IN-IWLTKZ5I-D0f5F2Wb.js → hi-IN-IWLTKZ5I-BKN0Rgs4.js} +1 -1
  125. package/viewer/assets/{hu-HU-A5ZG7DT2-Rjx2yH6Q.js → hu-HU-A5ZG7DT2-B0fRz8s0.js} +1 -1
  126. package/viewer/assets/{id-ID-SAP4L64H-qMtwIenq.js → id-ID-SAP4L64H-D-3naLhp.js} +1 -1
  127. package/viewer/assets/image-Cr2N5G2B.js +2 -0
  128. package/viewer/assets/image-GAAHSSAO-fNZpvZ4Y.js +1 -0
  129. package/viewer/assets/info-J43DQDTF-Cj7_d75e.js +1 -0
  130. package/viewer/assets/{infoDiagram-5YYISTIA-CNXh2C8P.js → infoDiagram-5YYISTIA-BFSVMUo8.js} +1 -1
  131. package/viewer/assets/{ishikawaDiagram-YF4QCWOH-CcEwHo89.js → ishikawaDiagram-YF4QCWOH-yoVOo1dl.js} +1 -1
  132. package/viewer/assets/{it-IT-JPQ66NNP-CZ0glSTd.js → it-IT-JPQ66NNP-BAUX4Gc2.js} +1 -1
  133. package/viewer/assets/{ja-JP-DBVTYXUO-D_g1i_kv.js → ja-JP-DBVTYXUO-DI1TIyfM.js} +1 -1
  134. package/viewer/assets/java-ChVphriW.js +1 -0
  135. package/viewer/assets/javascript-w9aIBC1S.js +1 -0
  136. package/viewer/assets/{journeyDiagram-JHISSGLW-Bdq1KGcd.js → journeyDiagram-JHISSGLW-Bbi4OnEP.js} +1 -1
  137. package/viewer/assets/{jszip.min-2KGdI7OW.js → jszip.min-9ZVZbTBP.js} +1 -1
  138. package/viewer/assets/{kaa-6HZHGXH3-Ciy4tIWa.js → kaa-6HZHGXH3-CDl8fx0o.js} +1 -1
  139. package/viewer/assets/{kab-KAB-ZGHBKWFO-DStCEYdM.js → kab-KAB-ZGHBKWFO-DpRjaTvY.js} +1 -1
  140. package/viewer/assets/{kanban-definition-UN3LZRKU-DKeeGN4i.js → kanban-definition-UN3LZRKU-CjkfgLaF.js} +1 -1
  141. package/viewer/assets/{kk-KZ-P5N5QNE5-CpgZ8UeG.js → kk-KZ-P5N5QNE5-zK-_fVIW.js} +1 -1
  142. package/viewer/assets/{km-KH-HSX4SM5Z-0OSO_DJy.js → km-KH-HSX4SM5Z-DehsMGky.js} +1 -1
  143. package/viewer/assets/{ko-KR-MTYHY66A-B4fUmV2s.js → ko-KR-MTYHY66A-MXYhOsjv.js} +1 -1
  144. package/viewer/assets/{ku-TR-6OUDTVRD-D_CCtBZL.js → ku-TR-6OUDTVRD-C7q1COiN.js} +1 -1
  145. package/viewer/assets/{lib-6sh2y9xa.js → lib-DIWU3KRt.js} +2 -2
  146. package/viewer/assets/{linear-CjCAJGt1.js → linear-DAeDjlp3.js} +1 -1
  147. package/viewer/assets/{lt-LT-XHIRWOB4-CnSvxOcs.js → lt-LT-XHIRWOB4-DdM8RTKz.js} +1 -1
  148. package/viewer/assets/{lv-LV-5QDEKY6T-yIZXLULP.js → lv-LV-5QDEKY6T-JLG8FSEV.js} +1 -1
  149. package/viewer/assets/main-CKt4m6T4.js +4 -0
  150. package/viewer/assets/main-Qy_H7MQU.css +1 -0
  151. package/viewer/assets/md-wWevhORM.js +2 -0
  152. package/viewer/assets/mermaid-parser.core-BENCcCsY.js +4 -0
  153. package/viewer/assets/{mindmap-definition-RKZ34NQL-bEw579ip.js → mindmap-definition-RKZ34NQL-Da3VSyjd.js} +1 -1
  154. package/viewer/assets/model-Bdx2Fqb-.js +2 -0
  155. package/viewer/assets/{mr-IN-CRQNXWMA-DzxKpSKQ.js → mr-IN-CRQNXWMA-CVFsyXLA.js} +1 -1
  156. package/viewer/assets/{my-MM-5M5IBNSE-CETT4oOr.js → my-MM-5M5IBNSE-D0d4LZCZ.js} +1 -1
  157. package/viewer/assets/{nb-NO-T6EIAALU-CAnmje1E.js → nb-NO-T6EIAALU-zKIQ8i0_.js} +1 -1
  158. package/viewer/assets/nestedRender-BecIPX74.js +3 -0
  159. package/viewer/assets/{nl-NL-IS3SIHDZ-CYiI_F71.js → nl-NL-IS3SIHDZ-nx6qzVMe.js} +1 -1
  160. package/viewer/assets/{nn-NO-6E72VCQL-DfK33vgs.js → nn-NO-6E72VCQL-DlUCFzXM.js} +1 -1
  161. package/viewer/assets/{oc-FR-POXYY2M6-rsDUyd92.js → oc-FR-POXYY2M6-B_FaqiYz.js} +1 -1
  162. package/viewer/assets/ofd-C8N_zW41.js +2 -0
  163. package/viewer/assets/{ofd-BxyAgdTZ.js → ofd-CmAfXjFW.js} +4 -4
  164. package/viewer/assets/{ordinal-CEZ33b-s.js → ordinal-hYBb2elL.js} +1 -1
  165. package/viewer/assets/{pa-IN-N4M65BXN-D3fxb7s8.js → pa-IN-N4M65BXN-YH5GORnI.js} +1 -1
  166. package/viewer/assets/package-D9RNadqh.js +296 -0
  167. package/viewer/assets/package-Dwgf8BpP.css +1 -0
  168. package/viewer/assets/packet-YPE3B663-CbkeKKRx.js +1 -0
  169. package/viewer/assets/pdf-ENBCQnjn.js +2 -0
  170. package/viewer/assets/percentages-BXMCSKIN-d_HmO-5v.js +1 -0
  171. package/viewer/assets/pica-BnQTSY_g.js +2 -0
  172. package/viewer/assets/{pie-DUmD7IHG.js → pie-CZr-MxNa.js} +1 -1
  173. package/viewer/assets/pie-LRSECV5Y-DtfPCqZg.js +1 -0
  174. package/viewer/assets/{pieDiagram-4H26LBE5-DRm24cUR.js → pieDiagram-4H26LBE5-DKuS6vJG.js} +1 -1
  175. package/viewer/assets/{pl-PL-T2D74RX3-Dcj-mgYc.js → pl-PL-T2D74RX3-BmZoKFT7.js} +1 -1
  176. package/viewer/assets/pptx-CJoRHTVc.js +2 -0
  177. package/viewer/assets/{prod-Be_zziKY.js → prod-DPLJAbJU.js} +8 -8
  178. package/viewer/assets/{pt-BR-5N22H2LF-BC6AJ2XQ.js → pt-BR-5N22H2LF-sN9sRoQ_.js} +1 -1
  179. package/viewer/assets/{pt-PT-UZXXM6DQ-BQRA2Ei2.js → pt-PT-UZXXM6DQ-CY-MOlkp.js} +1 -1
  180. package/viewer/assets/{quadrantDiagram-W4KKPZXB-Cpex5d0w.js → quadrantDiagram-W4KKPZXB-NwMS_YqW.js} +1 -1
  181. package/viewer/assets/radar-GUYGQ44K-DOIjAHXC.js +1 -0
  182. package/viewer/assets/renderer-CtCQDwvN.js +1 -0
  183. package/viewer/assets/{requirementDiagram-4Y6WPE33-Bi-Gqe6A.js → requirementDiagram-4Y6WPE33-sPbqvYv9.js} +1 -1
  184. package/viewer/assets/{ro-RO-JPDTUUEW-ChYTHueN.js → ro-RO-JPDTUUEW-CR28nHgw.js} +1 -1
  185. package/viewer/assets/rough.esm-C4Phtcrp.js +1 -0
  186. package/viewer/assets/{ru-RU-B4JR7IUQ-Bx00WSTh.js → ru-RU-B4JR7IUQ-CGKVxm63.js} +1 -1
  187. package/viewer/assets/rust-Dk33Kfe-.js +1 -0
  188. package/viewer/assets/{sankeyDiagram-5OEKKPKP-84kfwo8z.js → sankeyDiagram-5OEKKPKP-C50FIC8Y.js} +1 -1
  189. package/viewer/assets/{sequenceDiagram-3UESZ5HK-BBMDtPQb.js → sequenceDiagram-3UESZ5HK-Bi1R7g7S.js} +2 -2
  190. package/viewer/assets/{si-LK-N5RQ5JYF-BLYCVFa-.js → si-LK-N5RQ5JYF-BW7AdTgs.js} +1 -1
  191. package/viewer/assets/{sk-SK-C5VTKIMK-BdHbc0aq.js → sk-SK-C5VTKIMK-B9b1lWlx.js} +1 -1
  192. package/viewer/assets/{sl-SI-NN7IZMDC-yEFJ1FCu.js → sl-SI-NN7IZMDC-DOPNH4Mv.js} +1 -1
  193. package/viewer/assets/{src-DJvfcK9f.js → src-D_WiFutn.js} +5 -5
  194. package/viewer/assets/{stateDiagram-AJRCARHV-DpWMSn6f.js → stateDiagram-AJRCARHV-laY9nBdY.js} +1 -1
  195. package/viewer/assets/stateDiagram-v2-BHNVJYJU-D-TcJvmH.js +1 -0
  196. package/viewer/assets/subset-shared.chunk-BMWMi2iF.js +1 -0
  197. package/viewer/assets/{subset-worker.chunk-bqXfw36l.js → subset-worker.chunk-CvvTW5M7.js} +1 -1
  198. package/viewer/assets/{sv-SE-XGPEYMSR-LJunb4rU.js → sv-SE-XGPEYMSR-CPLWZrAn.js} +1 -1
  199. package/viewer/assets/{ta-IN-2NMHFXQM-C9tS4YNI.js → ta-IN-2NMHFXQM-D55L614R.js} +1 -1
  200. package/viewer/assets/text-DQQak32L.js +2 -0
  201. package/viewer/assets/{th-TH-HPSO5L25-pB850Qy6.js → th-TH-HPSO5L25-D3MPD0Md.js} +1 -1
  202. package/viewer/assets/{three.module-DGhmpURB.js → three.module-BFsVh7r1.js} +3 -3
  203. package/viewer/assets/{time-0omzMTb_.js → time-B8nkukJS.js} +1 -1
  204. package/viewer/assets/{timeline-definition-PNZ67QCA-DeHl9yso.js → timeline-definition-PNZ67QCA-DqotLxx2.js} +1 -1
  205. package/viewer/assets/{tr-TR-DEFEU3FU-BfsnnzYD.js → tr-TR-DEFEU3FU-Q8xsSXAo.js} +1 -1
  206. package/viewer/assets/treeView-BLDUP644-CPi2xY7A.js +1 -0
  207. package/viewer/assets/treemap-LRROVOQU-C8Mj1X4O.js +1 -0
  208. package/viewer/assets/typescript-BvteI6YB.js +1 -0
  209. package/viewer/assets/typst-LCgT-gly.js +2 -0
  210. package/viewer/assets/{uk-UA-QMV73CPH-hozuzLQP.js → uk-UA-QMV73CPH-Dnl8D1p8.js} +1 -1
  211. package/viewer/assets/umd--jna8_t9.js +2 -0
  212. package/viewer/assets/{vennDiagram-CIIHVFJN-ntTg_y9t.js → vennDiagram-CIIHVFJN-BIkyq-4v.js} +2 -2
  213. package/viewer/assets/{vi-VN-M7AON7JQ-D-o2NbvO.js → vi-VN-M7AON7JQ-DQI4i_hS.js} +1 -1
  214. package/viewer/assets/wardley-L42UT6IY-DJWWSlJn.js +1 -0
  215. package/viewer/assets/{wardleyDiagram-YWT4CUSO-XxEarUzP.js → wardleyDiagram-YWT4CUSO-2IdxQGv-.js} +1 -1
  216. package/viewer/assets/{word-C1KqDob2.js → word-TCDf8xQo.js} +3 -3
  217. package/viewer/assets/xlsx-D3PqLMcm.js +2 -0
  218. package/viewer/assets/{xychartDiagram-2RQKCTM6-CD_eFT84.js → xychartDiagram-2RQKCTM6-Bks5TALn.js} +1 -1
  219. package/viewer/assets/yaml-1XF8XcZB.js +1 -0
  220. package/viewer/assets/{zh-CN-LNUGB5OW-BGtuRT1n.js → zh-CN-LNUGB5OW-ByzhDQAP.js} +1 -1
  221. package/viewer/assets/{zh-HK-E62DVLB3-YIetx3Of.js → zh-HK-E62DVLB3-Dyd19evA.js} +1 -1
  222. package/viewer/assets/{zh-TW-RAJ6MFWO-ZHpfnA6Q.js → zh-TW-RAJ6MFWO-D2sseOtI.js} +1 -1
  223. package/viewer/compare.html +19 -0
  224. package/viewer/flyfish-viewer-manifest.json +1 -1
  225. package/viewer/index.html +5 -2
  226. package/viewer/assets/ArchiveViewer-BMJ8ixUE.js +0 -1
  227. package/viewer/assets/AudioViewer-CDHIKRNg.js +0 -1
  228. package/viewer/assets/CadViewer-DHqSLOq3.js +0 -1
  229. package/viewer/assets/CodeViewer-KlbtXDJA.css +0 -1
  230. package/viewer/assets/CodeViewer-elZC5_N5.js +0 -2
  231. package/viewer/assets/DrawingViewer-BtxOj-Gs.js +0 -2
  232. package/viewer/assets/EdaViewer-CkERmUTW.js +0 -8
  233. package/viewer/assets/EmailViewer-DHtoEemj.js +0 -4
  234. package/viewer/assets/EpubViewer-C-y1Yxuf.js +0 -2
  235. package/viewer/assets/ImageViewer-CkbkF92U.js +0 -1
  236. package/viewer/assets/ModelViewer-gMxpjdoy.js +0 -2
  237. package/viewer/assets/OfdViewer-B431vHsV.js +0 -2
  238. package/viewer/assets/PdfView-CoVz5YgH.js +0 -558
  239. package/viewer/assets/PptxRender-NZXFW_yB.js +0 -32
  240. package/viewer/assets/TypstViewer-BgO4CftA.js +0 -60
  241. package/viewer/assets/TypstViewer-CYzlZT3R.css +0 -1
  242. package/viewer/assets/UmdViewer-DOnvsKP9.js +0 -3
  243. package/viewer/assets/architecture-7EHR7CIX-DZ0FMAJv.js +0 -1
  244. package/viewer/assets/architectureDiagram-3BPJPVTR-7Bjepzmi.js +0 -36
  245. package/viewer/assets/archive-DQ5P8M1W.js +0 -2
  246. package/viewer/assets/audio-Bkx6GgKW.js +0 -2
  247. package/viewer/assets/cad-CvbH3H5s.js +0 -2
  248. package/viewer/assets/cfb-z-t_baTx.js +0 -11
  249. package/viewer/assets/channel-DSRv-gEi.js +0 -1
  250. package/viewer/assets/chunk-55IACEB6-BxMlg3uk.js +0 -1
  251. package/viewer/assets/chunk-AGHRB4JF-CGwx4hVn.js +0 -1
  252. package/viewer/assets/chunk-K2UTITRG-DXfKb63q.js +0 -35
  253. package/viewer/assets/chunk-LZXEDZCA-Ad0rMmnf.js +0 -2
  254. package/viewer/assets/chunk-QZHKN3VN-Ctvlkpgr.js +0 -1
  255. package/viewer/assets/chunk-SRAX5OIU-ca-Jd-qc.js +0 -1
  256. package/viewer/assets/chunk-WU5MYG2G-DBI7WOLB.js +0 -1
  257. package/viewer/assets/classDiagram-4FO5ZUOK-DFuDCleV.js +0 -1
  258. package/viewer/assets/classDiagram-v2-Q7XG4LA2-D5AtHBzM.js +0 -1
  259. package/viewer/assets/core-Dw5gmsJk.js +0 -3
  260. package/viewer/assets/cose-bilkent-S5V4N54A-COdvc8g3.js +0 -1
  261. package/viewer/assets/cpp-CzPJnyWn.js +0 -1
  262. package/viewer/assets/dist-Dj6dnR61.js +0 -1
  263. package/viewer/assets/docx-preview-QBQnGzxq.js +0 -20
  264. package/viewer/assets/drawing-Bf13GcVj.js +0 -2
  265. package/viewer/assets/ebook-B8feQEjI.js +0 -2
  266. package/viewer/assets/eda-DgG7ZdZb.js +0 -2
  267. package/viewer/assets/email-C6R5vWPC.js +0 -2
  268. package/viewer/assets/eventmodeling-FCH6USID-DAUOWXUA.js +0 -1
  269. package/viewer/assets/gitGraph-WXDBUCRP-B9WMYi3w.js +0 -1
  270. package/viewer/assets/image-Cd_jEwgA.js +0 -2
  271. package/viewer/assets/image-GAAHSSAO-CB1oJrYk.js +0 -1
  272. package/viewer/assets/index-Da-_mMtb.css +0 -1
  273. package/viewer/assets/index-Wv8YWT7J.js +0 -299
  274. package/viewer/assets/info-J43DQDTF-DTr9gjto.js +0 -1
  275. package/viewer/assets/java-wxwgypiQ.js +0 -1
  276. package/viewer/assets/javascript-DVXHcAAd.js +0 -1
  277. package/viewer/assets/md-DbNdm2Si.js +0 -2
  278. package/viewer/assets/mermaid-parser.core-DTeJC58J.js +0 -161
  279. package/viewer/assets/model-CV4SMZZ6.js +0 -2
  280. package/viewer/assets/nestedRender-B6UKcdX4.js +0 -3
  281. package/viewer/assets/ofd-BxfWMAIn.js +0 -2
  282. package/viewer/assets/packet-YPE3B663-BtC974QL.js +0 -1
  283. package/viewer/assets/pdf-BtF-yTwh.js +0 -2
  284. package/viewer/assets/percentages-BXMCSKIN-rHVIt6Og.js +0 -1
  285. package/viewer/assets/pica-LwlR7GZ_.js +0 -2
  286. package/viewer/assets/pie-LRSECV5Y-muMG-ZB-.js +0 -1
  287. package/viewer/assets/pptx-CykgL7yb.js +0 -2
  288. package/viewer/assets/radar-GUYGQ44K-DjwaY-WI.js +0 -1
  289. package/viewer/assets/renderer-AG2ARmm1.js +0 -1
  290. package/viewer/assets/rough.esm-C7pj5SVA.js +0 -1
  291. package/viewer/assets/rust-cznU34-d.js +0 -1
  292. package/viewer/assets/stateDiagram-v2-BHNVJYJU-BZAIiz9H.js +0 -1
  293. package/viewer/assets/subset-shared.chunk-CeMN1KJe.js +0 -1
  294. package/viewer/assets/text-CXq6Yvj4.js +0 -2
  295. package/viewer/assets/treeView-BLDUP644-B1td6hO4.js +0 -1
  296. package/viewer/assets/treemap-LRROVOQU-CyDF1cUl.js +0 -1
  297. package/viewer/assets/typescript-xkhBQGCI.js +0 -1
  298. package/viewer/assets/typst-FnG1RrXx.js +0 -2
  299. package/viewer/assets/umd-Bznc3NVB.js +0 -2
  300. package/viewer/assets/wardley-L42UT6IY-B4Pi_ryj.js +0 -1
  301. package/viewer/assets/xlsx-CmfThisG.js +0 -2
  302. package/viewer/assets/yaml-CZIBJyY6.js +0 -1
  303. /package/viewer/assets/{bash-v6a5s0TG.js → bash-LmRjUKlR.js} +0 -0
  304. /package/viewer/assets/{chunk-6U3AYISY-sM9HnDSj.js → chunk-6U3AYISY-C6-Mtja1.js} +0 -0
  305. /package/viewer/assets/{chunk-Z3N5DIM6-DVAc8Qv7.js → chunk-Z3N5DIM6-D9TMVU7m.js} +0 -0
  306. /package/viewer/assets/{chunk-ZUYEQ4TG-DaQMhOk1.js → chunk-ZUYEQ4TG-BzFOpW--.js} +0 -0
  307. /package/viewer/assets/{csharp-CUZg0Piy.js → csharp-GZmu99Fo.js} +0 -0
  308. /package/viewer/assets/{css-CmdNZR7s.js → css-D5l_8KUR.js} +0 -0
  309. /package/viewer/assets/{defaultLocale-GXPQCpCV.js → defaultLocale-C8Fc0cco.js} +0 -0
  310. /package/viewer/assets/{diff-C4YBjULe.js → diff-CJb8JxGC.js} +0 -0
  311. /package/viewer/assets/{directory-open-01563666-BnIEPxMj.js → directory-open-01563666-D4xXyWb_.js} +0 -0
  312. /package/viewer/assets/{dist-CDIdMEAB.js → dist-sSvuNO1e.js} +0 -0
  313. /package/viewer/assets/{fflate.module-CnrP-VZU.js → fflate.module-BIQmJeC9.js} +0 -0
  314. /package/viewer/assets/{file-open-002ab408-CmWWDvbm.js → file-open-002ab408-BHUWm0Sh.js} +0 -0
  315. /package/viewer/assets/{file-open-7c801643-0DFC1QL7.js → file-open-7c801643-DZtJT5zp.js} +0 -0
  316. /package/viewer/assets/{file-save-3189631c-CGw7IQIT.js → file-save-3189631c-CO9S4HFW.js} +0 -0
  317. /package/viewer/assets/{file-save-745eba88-BaJCoLHk.js → file-save-745eba88-Bwdfz6OZ.js} +0 -0
  318. /package/viewer/assets/{global-compiler-Bh6eQCsc.js → global-compiler-D1EEBbpA.js} +0 -0
  319. /package/viewer/assets/{global-renderer-D05nc19Q.js → global-renderer-AKzBLvRw.js} +0 -0
  320. /package/viewer/assets/{go-DRIfKlug.js → go-B-PCS5zA.js} +0 -0
  321. /package/viewer/assets/{graphlib-DWHYYbzM.js → graphlib-B8gBHxth.js} +0 -0
  322. /package/viewer/assets/{image-blob-reduce.esm-U4cJkLwY.js → image-blob-reduce.esm-NzmDxm1v.js} +0 -0
  323. /package/viewer/assets/{ini-mGJCE6tP.js → ini-B1CroMsf.js} +0 -0
  324. /package/viewer/assets/{init-Bj57mB65.js → init-D6jRqBbL.js} +0 -0
  325. /package/viewer/assets/{json-BGVZ214P.js → json-DS4EA3dC.js} +0 -0
  326. /package/viewer/assets/{katex-BMZGv2yo.js → katex-Vhh-h91d.js} +0 -0
  327. /package/viewer/assets/{libarchive-BdUg47Sl.js → libarchive-DknIq1tb.js} +0 -0
  328. /package/viewer/assets/{markdown-D4bsoCMs.js → markdown-C8bVcNXx.js} +0 -0
  329. /package/viewer/assets/{mp4-B-BC_K8Z.js → mp4-Dho29Zd7.js} +0 -0
  330. /package/viewer/assets/{php-DjR7_33H.js → php-5k5YNuRS.js} +0 -0
  331. /package/viewer/assets/{postal-mime-DhooDFq1.js → postal-mime-kkzCFkih.js} +0 -0
  332. /package/viewer/assets/{printLayout-BKR9eA_I.js → printLayout-D2pf0W9y.js} +0 -0
  333. /package/viewer/assets/{python-knoOST3F.js → python-DwhXSSGr.js} +0 -0
  334. /package/viewer/assets/{roundRect-BgfzMm9N.js → roundRect-D01gJrlt.js} +0 -0
  335. /package/viewer/assets/{sql-BtslwpxF.js → sql-DWRKyvJ-.js} +0 -0
  336. /package/viewer/assets/{src-BBw8FbvP.js → src-BrOGWJpF.js} +0 -0
  337. /package/viewer/assets/{wasm-7R9pz8Yn.js → wasm-C3ukMqzA.js} +0 -0
  338. /package/viewer/assets/{wasm-pack-shim-C-PtSIYt.js → wasm-pack-shim-BShYmbRf.js} +0 -0
  339. /package/viewer/assets/{wasm-pack-shim-CXDHyOYK.js → wasm-pack-shim-BnuNh1z7.js} +0 -0
  340. /package/viewer/assets/{worker-ref-BcbHdN1M.js → worker-ref-BbTnHTC-.js} +0 -0
  341. /package/viewer/assets/{xml-RJsMctTC.js → xml-DasnpDVC.js} +0 -0
@@ -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-DGhmpURB.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-BFsVh7r1.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-C4Phtcrp.js","./package-D9RNadqh.js","./package-Dwgf8BpP.css","./prod-DPLJAbJU.js","./chunk-K2UTITRG-CW6VmW0l.js","./chunk-SRAX5OIU-WEWN8Pf_.js","./chunk-ZUYEQ4TG-BzFOpW--.js","./chunk-6U3AYISY-C6-Mtja1.js","./chunk-Z3N5DIM6-D9TMVU7m.js"])))=>i.map(i=>d[i]);
2
+ import{F as e,J as t,N as n,S as r,T as i,U as a,f as o,j as s,k as c,q as l,r as u,u as d,w as f,x as p}from"./package-D9RNadqh.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=o(c({__name:`DrawingViewer`,props:{data:{},type:{}},setup(o){let c=o,T=null,E=a(`loading`),D=a(``),O=a(null),k=a(1),A=p(()=>c.type.toLowerCase()),j=p(()=>A.value===`excalidraw`),M=p(()=>A.value===`dio`?`DRAWIO`:A.value.toUpperCase()),N=p(()=>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-C4Phtcrp.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,7e3),{exportToSvg:a,restore:o}=await u(async()=>{let{exportToSvg:e,restore:t}=await import(`./prod-DPLJAbJU.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 s();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 d(c.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`}}),(n,a)=>(e(),i(`div`,m,[r(`div`,h,[r(`div`,g,[r(`span`,null,t(M.value),1),r(`strong`,null,t(j.value?`Excalidraw 官方 SVG 预览`:`diagrams.net 官方 Viewer 预览`),1)]),r(`div`,_,[r(`button`,{type:`button`,title:`缩小`,onClick:I},`-`),r(`span`,null,t(Math.round(k.value*100))+`%`,1),r(`button`,{type:`button`,title:`放大`,onClick:F},`+`),r(`button`,{type:`button`,title:`适合宽度`,onClick:L},`适合`)])]),r(`div`,v,[E.value===`loading`?(e(),i(`div`,y,`正在加载官方绘图预览器...`)):E.value===`error`?(e(),i(`div`,b,t(D.value),1)):f(``,!0),r(`div`,x,[r(`div`,{ref_key:`stage`,ref:O,class:`drawing-canvas`,style:l(N.value)},null,4)])])]))}}),[[`__scopeId`,`data-v-6f438c82`]]);export{T as default};
@@ -0,0 +1,8 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cfb-BzFYazhG.js","./package-D9RNadqh.js","./package-Dwgf8BpP.css","./__vite-browser-external-BEGdo7Ij.js"])))=>i.map(i=>d[i]);
2
+ import{E as e,F as t,G as n,I as r,J as i,K as a,N as o,S as s,T as c,U as l,V as u,_ as ee,b as d,c as f,et as p,f as m,k as h,q as te,r as g,w as _,x as v}from"./package-D9RNadqh.js";var y=[208,207,17,224,161,177,26,225],b=200,x=4096,S=192,C=180,w=24,T=420,E=e=>new Uint8Array(e),D=e=>y.every((t,n)=>e[n]===t),O=e=>e instanceof Uint8Array?e:new Uint8Array(e),k=e=>e.replace(/\u0000/g,``).replace(/[^\S\r\n]+/g,` `).replace(/\r\n/g,`
3
+ `).trim(),A=e=>k(e).toLowerCase(),j=e=>{let t=e.split(`/`).filter(Boolean);return t[t.length-1]||e||`/`},M=e=>e.replace(/\.[a-z0-9]+$/i,``),N=(e,t,n=1/0)=>{let r=k(t);!r||e.includes(r)||e.length>=n||e.push(r)},P=e=>{if(!e.length)return!1;let t=e.slice(0,Math.min(e.length,x)),n=0,r=0;for(let e of t)e===0&&(r+=1),(e===9||e===10||e===13||e>=32&&e<=126||e>=128)&&(n+=1);return n/t.length>.82||r/t.length>.25},F=e=>{let t=e.slice(0,Math.min(e.length,x));if(!t.length)return``;try{let e=0,n=0;for(let r=0;r<t.length;r+=1)t[r]===0&&(r%2==0?n+=1:e+=1);return k((e>t.length/5&&e>n*2?new TextDecoder(`utf-16le`,{fatal:!1}):new TextDecoder(`utf-8`,{fatal:!1})).decode(t))}catch{return``}},I=e=>{let t=e.slice(0,Math.min(e.length,S)),n=[];for(let e=0;e<t.length;e+=16){let r=t.slice(e,e+16),i=Array.from(r).map(e=>e.toString(16).padStart(2,`0`)).join(` `),a=Array.from(r).map(e=>e>=32&&e<=126?String.fromCharCode(e):`.`).join(``);n.push(`${e.toString(16).padStart(8,`0`)} ${i.padEnd(47)} ${a}`)}return n.join(`
4
+ `)},L=e=>{let t=[],n=``;for(let r of e){if(r>=32&&r<=126){n+=String.fromCharCode(r);continue}n.length>=4&&t.push(n),n=``}return n.length>=4&&t.push(n),t},R=e=>{let t=[],n=``;for(let r=0;r+1<e.length;r+=2){let i=e[r];if(e[r+1]===0&&i>=32&&i<=126){n+=String.fromCharCode(i);continue}n.length>=4&&t.push(n),n=``}return n.length>=4&&t.push(n),t},z=(e,t=C)=>{let n=new Set,r=[];return e.forEach(e=>{[...L(e),...R(e)].forEach(e=>{let i=k(e);!i||i.length<4||n.has(i)||r.length>=t||(n.add(i),r.push(i))})}),r},ne=/^\s*([A-Za-z][A-Za-z0-9_. /#-]{1,56})\s*[:=]\s*(.{1,240})\s*$/,re=/\b([A-Za-z][A-Za-z0-9_. /#-]{1,56})\s*=\s*([^;\n\r|]{1,240})/g,ie=e=>k(e).replace(/\s+/g,` `),B=(e,t,n,r,i)=>{if(e.length>=T)return;let a=ie(n),o=k(r);if(!a||!o)return;let s=`${i}\u0000${a.toLowerCase()}\u0000${o}`;t.has(s)||(t.add(s),e.push({key:a,value:o,source:i}))},V=(e,t,n)=>{let r=[],i=new Set;return[e,...t].filter(Boolean).forEach(e=>{k(e).split(/\n|[|;]/).forEach(e=>{let t=e.match(ne);t&&B(r,i,t[1],t[2],n)});for(let t of e.matchAll(re))B(r,i,t[1],t[2],n)}),r},H=(e,t)=>{let n=t.map(e=>e.toLowerCase());return e.some(e=>n.includes(e.key.toLowerCase()))},U=(e,t)=>{let n=t.map(e=>e.toLowerCase());return e.find(e=>n.includes(e.key.toLowerCase()))?.value},W=(e,t,n,r,i,a,o)=>{let s=A(`${t}\n${n}\n${r}\n${i.join(`
5
+ `)}`);if(s===`/`||t===`/`)return`root`;if(o===`storage`&&/(^|\/)(library|libraries)(\/|$)/i.test(t))return`library`;if(/(header|version|source|author|metadata|property|properties)/.test(s))return H(a,[`Name`,`Pins`,`Footprint`,`Padstack`])?`property`:`metadata`;if(e===`olb`){if(/(^|\/)(symbols?|parts?)(\/|$)/.test(s)||H(a,[`Pins`,`Footprint`,`PCB Footprint`,`Part Number`]))return`symbol`;if(/(^|\/)(library|capture|orcad)(\/|$)/.test(s))return`library`}if(e===`dra`){if(/(padstack|pad stack|thermal|antipad|drill)/.test(s)||H(a,[`Padstack`,`Drill`]))return`padstack`;if(/(footprint|package|psm|bsm|fsm|ssm|symbol)/.test(s))return`footprint`;if(/(route|net|via|ratsnest)/.test(s))return`net`;if(/(line |arc |circle|shape|outline|silk|place_bound|assembly|soldermask|pastemask)/.test(s))return`geometry`;if(/(drawing|units|layers?|constraint|allegro)/.test(s)||H(a,[`Units`,`Layers`]))return`drawing`}return a.length?`property`:o===`storage`?`library`:`unknown`},G=(e,t,n,r,i,a)=>{if(i===`storage`||!a)return{path:t,name:n,size:r,kind:i,role:W(e,t,n,``,[],[],i),strings:[],properties:[]};let o=P(a)?F(a):``,s=z([a],w),c=V(o,s,t),l=W(e,t,n,o,s,c,o?`text`:`binary`);return{path:t,name:n,size:r,kind:o?`text`:`binary`,role:l,sample:o,hex:o?void 0:I(a),strings:s,properties:c}},K=e=>{e.children.sort((e,t)=>e.children.length===t.children.length?e.name.localeCompare(t.name):t.children.length-e.children.length),e.children.forEach(K)},q=(e,t)=>{let n={id:`${t}:root`,path:`/`,name:t.toUpperCase(),kind:`storage`,role:`root`,size:0,children:[]},r=new Map([[`/`,n]]);return e.forEach(e=>{let i=e.path.split(`/`).filter(Boolean),a=n,o=``;i.forEach((n,s)=>{o+=`/${n}`;let c=s===i.length-1,l=r.get(o);l||(l={id:`${t}:${o}`,path:o,name:n,kind:c?e.kind:`storage`,role:c?e.role:W(t,o,n,``,[],[],`storage`),size:c?e.size:0,children:[]},r.set(o,l),a.children.push(l)),c&&(l.kind=e.kind,l.role=e.role,l.size=e.size),a=l})}),K(n),n.children},J=e=>{if(!e)return[];let t=[];return e.split(/[,/;| ]+/).forEach(e=>{/^[A-Za-z0-9_.+-]+$/.test(e)&&N(t,e,64)}),t},Y=(e,t)=>t===`olb`?e.role===`symbol`&&e.kind!==`storage`?`symbol`:null:e.role===`padstack`?`padstack`:e.role===`footprint`||e.role===`geometry`&&/\/footprint\//i.test(e.path)?`footprint`:e.role===`drawing`?`drawing`:null,ae=(e,t)=>t===`footprint`?e.path.match(/^(.+?\/Footprint)(?:\/|$)/i)?.[1]||e.path:t===`drawing`&&e.path.match(/^(.+?\/Drawing)(?:\/|$)/i)?.[1]||e.path,oe=(e,t,n)=>{let r=U(e.properties,[`Name`,`Part`,`Part Name`,`Symbol`,`Device`,`Footprint`,`PCB Footprint`,`Package`,`Padstack`,`Pad Stack`,`Drawing`]);if(r)return r;let i=M(j(n));return i&&i!==`/`?i:t.toUpperCase()},se=(e,t)=>{let n=[],r=`${e.path}\n${e.sample||``}\n${e.strings.join(`
6
+ `)}`.toLowerCase();return(t===`symbol`?[`pins`,`footprint`,`pspice`,`part`,`symbol`]:[`units`,`layers`,`padstack`,`drill`,`outline`,`route`,`constraint`,`shape`,`place_bound`]).forEach(e=>{r.includes(e)&&N(n,e,12)}),n},X=(e,t)=>{let n=new Set(e.map(e=>`${e.key.toLowerCase()}\u0000${e.value}`));t.forEach(t=>{let r=`${t.key.toLowerCase()}\u0000${t.value}`;n.has(r)||(n.add(r),e.push(t))})},ce=(e,t)=>{let n=new Map;return e.forEach(e=>{let r=Y(e,t);if(!r)return;let i=ae(e,r),a=`${r}:${i.toLowerCase()}`,o=n.get(a)||{id:a,name:oe(e,r,i),role:r,path:i,streamCount:0,byteLength:0,properties:[],pins:[],layers:[],keywords:[]};o.streamCount+=1,o.byteLength+=e.size,X(o.properties,e.properties),J(U(e.properties,[`Pins`,`Pin`,`Pin Numbers`])).forEach(e=>N(o.pins,e,96)),J(U(e.properties,[`Layers`,`Layer`])).forEach(e=>N(o.layers,e,64)),se(e,r).forEach(e=>N(o.keywords,e,16)),o.description||=U(o.properties,[`Description`,`Desc`]),o.footprint||=U(o.properties,[`Footprint`,`PCB Footprint`,`Package`]),n.set(a,o)}),Array.from(n.values()).sort((e,t)=>{let n={symbol:0,footprint:1,padstack:2,drawing:3};return(n[e.role]??9)-(n[t.role]??9)||e.name.localeCompare(t.name)})},le=e=>{let t=[];return e.forEach(e=>{(e.role===`metadata`||e.role===`library`||e.role===`drawing`)&&X(t,e.properties)}),t.slice(0,80)},ue=(e,t,n,r)=>{let i={textStreams:e.filter(e=>e.kind===`text`).length,binaryStreams:e.filter(e=>e.kind===`binary`).length,storageEntries:e.filter(e=>e.kind===`storage`).length,propertyCount:e.reduce((e,t)=>e+t.properties.length,0),stringCount:n.length,symbolCount:t.filter(e=>e.role===`symbol`).length,footprintCount:t.filter(e=>e.role===`footprint`).length,padstackCount:t.filter(e=>e.role===`padstack`).length,confidence:`low`};return r===`cfb`&&t.length&&i.propertyCount?i.confidence=`high`:(r===`cfb`||n.length||i.propertyCount)&&(i.confidence=`medium`),i},de=(e,t,n,r,i,a)=>{let o=a.map((e,t)=>({level:`warning`,code:`warning-${t+1}`,message:e}));o.push({level:`info`,code:`parser`,message:t===`cfb`?`已识别为 Microsoft Compound File / OLE2 复合文档容器,并在浏览器端解析目录与流。`:`未识别为 CFB 容器,已使用二进制字符串索引模式展示可读信息。`}),o.push({level:`info`,code:`coverage`,message:`已索引 ${n.length} 个条目、${i.length} 个可读字符串、${r.length} 个 EDA 结构候选。`});let s=e===`olb`&&!r.some(e=>e.role===`symbol`),c=e===`dra`&&!r.some(e=>e.role===`footprint`||e.role===`padstack`);return(s||c)&&o.push({level:`warning`,code:`domain-candidates`,message:e===`olb`?`未发现明确的元件符号候选,文件可能使用了私有二进制编码或需要专业工具导出 ASCII/XML 后再检查。`:`未发现明确的封装、图形或 padstack 候选,文件可能使用了私有二进制数据库编码。`}),o},Z=(e,t,n,r,i,a,o)=>{let s=i.reduce((e,t)=>e+t.size,0),c=ce(i,t),l=le(i),u=de(t,n,i,c,a,o);return{type:t,parser:n,title:t===`olb`?n===`cfb`?`OrCAD Capture Symbol Library`:`OLB Binary Library`:n===`cfb`?`OrCAD / Allegro Drawing Library`:`DRA Binary Drawing`,byteLength:e.byteLength,streamCount:r,totalStreamBytes:s,streams:i,tree:q(i,t),entities:c,metadata:l,strings:a,warnings:o,diagnostics:u,stats:ue(i,c,a,n)}},fe=async(e,t)=>{let n=(await g(()=>import(`./cfb-BzFYazhG.js`).then(e=>p(e.default,1)),__vite__mapDeps([0,1,2,3]),import.meta.url)).parse(E(e),{type:`array`}),r=n.FileIndex.map((e,t)=>({entry:e,path:n.FullPaths[t]||e.name})).filter(e=>e.entry.type!==5&&e.path!==`/`&&e.entry.name).slice(0,b),i=[],a=r.map(({entry:e,path:n})=>{if(e.type===1)return G(t,n,e.name,e.size||0,`storage`);let r=O(e.content||[]);return i.push(r),G(t,n,e.name,e.size||r.byteLength||0,`binary`,r)}),o=r.length>=b?[`仅展示前 ${b} 个 CFB 项,完整文件仍可下载后在专业 EDA 工具中打开。`]:[];return Z(e,t,`cfb`,n.FileIndex.length,a,z(i),o)},Q=(e,t)=>{let n=E(e);return Z(e,t,`binary`,1,[G(t,`${t}.${t}`,`${t}.${t}`,e.byteLength,`binary`,n)],z([n]),[`该文件不是标准 CFB 容器,已退化为安全的二进制字符串索引预览。`])},pe=async(e,t=`olb`)=>{let n=t===`dra`?`dra`:`olb`;if(!D(E(e)))return Q(e,n);try{return await fe(e,n)}catch(t){let r=Q(e,n);return r.warnings.unshift(t instanceof Error?t.message:String(t)),r.diagnostics.unshift({level:`warning`,code:`cfb-parse-failed`,message:t instanceof Error?t.message:String(t)}),r}},me={class:`eda-viewer`},he={class:`eda-header`},ge={key:0},_e={key:0,class:`eda-body`},ve={class:`eda-sidebar`},ye={class:`eda-summary`},be={class:`eda-mini-grid`},xe={key:0,class:`eda-warning`},Se={class:`eda-stream-list`},Ce=[`onClick`],we=[`data-role`],Te={class:`eda-preview`},Ee={class:`eda-panel eda-panel--compact`},De={class:`eda-panel-head`},Oe={class:`eda-stat-grid`},ke={class:`eda-topology`},Ae={class:`eda-panel`},je={class:`eda-panel-head`},Me={class:`eda-tree`},Ne=[`onClick`],Pe={class:`eda-panel`},Fe={class:`eda-panel-head`},Ie={key:0,class:`eda-entities`},Le=[`onClick`],Re={key:0},ze={key:0},Be={key:1},Ve={key:2},He={key:3},Ue={key:1,class:`eda-empty`},We={class:`eda-panel`},Ge={class:`eda-panel-head`},Ke={key:0,class:`eda-selected-meta`},qe={key:1,class:`eda-property-grid`},Je={key:2},$={key:3,class:`eda-empty`},Ye={class:`eda-bottom`},Xe={class:`eda-panel`},Ze={class:`eda-panel-head`},Qe={class:`eda-string-grid`},$e={class:`eda-panel`},et={class:`eda-panel-head`},tt={class:`eda-diagnostics`},nt=[`data-level`],rt={key:0,class:`eda-local-strings`},it={key:1,class:`eda-state`},at={key:2,class:`eda-error`},ot=m(h({__name:`EdaViewer`,props:{data:{},type:{},filename:{}},setup(p){let m=p,h=l(null),g=l(!0),y=l(``),b=l(null),x=l(``),S={root:`根`,library:`库`,symbol:`元件符号`,footprint:`封装`,padstack:`Padstack`,drawing:`图纸`,metadata:`元数据`,property:`属性`,geometry:`几何`,net:`网络`,unknown:`未知`},C={high:`高`,medium:`中`,low:`低`},w=e=>S[e]||e,T=e=>e===`storage`?`目录`:e===`text`?`文本`:`二进制`,E=e=>e.replace(/^\/+/,``).toLowerCase(),D=v(()=>{if(!h.value)return[];let e=h.value.stats;return[{label:`文本流`,value:e.textStreams},{label:`二进制流`,value:e.binaryStreams},{label:`目录`,value:e.storageEntries},{label:`属性`,value:e.propertyCount},{label:`符号`,value:e.symbolCount},{label:`封装`,value:e.footprintCount},{label:`Padstack`,value:e.padstackCount},{label:`可信度`,value:C[e.confidence]}]}),O=v(()=>{let e=h.value?.entities||[],t=[{role:`symbol`,label:`元件符号`,items:[]},{role:`footprint`,label:`封装图形`,items:[]},{role:`padstack`,label:`Padstack`,items:[]},{role:`drawing`,label:`图纸信息`,items:[]}];return t.forEach(t=>{t.items=e.filter(e=>e.role===t.role)}),t.filter(e=>e.items.length)}),k=v(()=>{let e=x.value.trim().toLowerCase(),t=h.value?.streams||[];return e?t.filter(t=>{let n=t.properties.map(e=>`${e.key}=${e.value}`).join(`
7
+ `);return`${t.path}\n${t.name}\n${t.kind}\n${t.role}\n${t.sample||``}\n${t.strings.join(`
8
+ `)}\n${n}`.toLowerCase().includes(e)}):t}),A=(e,t=0)=>e.flatMap(e=>[{...e,depth:t},...A(e.children,t+1)]),j=v(()=>A(h.value?.tree||[])),M=v(()=>b.value?.properties||[]),N=v(()=>b.value?.strings||[]),P=v(()=>b.value?.sample||b.value?.hex||``),F=e=>{b.value=e},I=e=>{let t=E(e.path),n=h.value?.streams.find(e=>E(e.path)===t);n&&(b.value=n)},L=e=>{let t=E(e.path),n=h.value?.streams.find(e=>{let n=E(e.path);return n===t||n.startsWith(`${t}/`)});n&&(b.value=n)},R=async()=>{g.value=!0,y.value=``;try{let e=await pe(m.data,m.type);h.value=e,b.value=e.streams.find(e=>e.properties.length)||e.streams.find(e=>e.kind===`text`)||e.streams[0]||null}catch(e){console.error(e),y.value=e instanceof Error?e.message:String(e)}finally{g.value=!1}};return o(()=>{R()}),(o,l)=>(t(),c(`section`,me,[s(`header`,he,[s(`div`,null,[s(`span`,null,i(h.value?.parser===`cfb`?`CFB STRUCTURE VIEWER`:`BINARY STRUCTURE VIEWER`),1),s(`h2`,null,i(p.filename),1)]),h.value?(t(),c(`dl`,ge,[s(`div`,null,[l[1]||=s(`dt`,null,`格式`,-1),s(`dd`,null,i(h.value.type.toUpperCase()),1)]),s(`div`,null,[l[2]||=s(`dt`,null,`大小`,-1),s(`dd`,null,i(n(f)(h.value.byteLength)),1)]),s(`div`,null,[l[3]||=s(`dt`,null,`条目`,-1),s(`dd`,null,i(h.value.streamCount),1)]),s(`div`,null,[l[4]||=s(`dt`,null,`可信度`,-1),s(`dd`,null,i(C[h.value.stats.confidence]),1)])])):_(``,!0)]),h.value?(t(),c(`div`,_e,[s(`aside`,ve,[s(`div`,ye,[s(`strong`,null,i(h.value.title),1),l[5]||=s(`p`,null,`OLB / DRA 属于 OrCAD / Allegro 生态的私有设计数据。预览器优先解析 CFB 结构、对象候选、属性和可读文本,并在纯前端安全退化。`,-1)]),s(`div`,be,[(t(!0),c(d,null,r(D.value.slice(0,4),e=>(t(),c(`div`,{key:e.label},[s(`span`,null,i(e.label),1),s(`strong`,null,i(e.value),1)]))),128))]),h.value.warnings.length?(t(),c(`div`,xe,[(t(!0),c(d,null,r(h.value.warnings,e=>(t(),c(`p`,{key:e},i(e),1))),128))])):_(``,!0),u(s(`input`,{"onUpdate:modelValue":l[0]||=e=>x.value=e,class:`eda-search`,type:`search`,placeholder:`筛选路径、角色、属性或文本`},null,512),[[ee,x.value]]),s(`div`,Se,[(t(!0),c(d,null,r(k.value,e=>(t(),c(`button`,{key:e.path,type:`button`,class:a([`eda-stream`,{active:b.value?.path===e.path}]),onClick:t=>F(e)},[s(`span`,{"data-role":e.role},i(w(e.role)),9,we),s(`strong`,null,i(e.name||e.path),1),s(`em`,null,i(e.path),1),s(`small`,null,i(T(e.kind))+` · `+i(n(f)(e.size)),1)],10,Ce))),128))])]),s(`main`,Te,[s(`section`,Ee,[s(`div`,De,[l[6]||=s(`span`,null,`解析概览`,-1),s(`strong`,null,i(h.value.parser.toUpperCase())+` · `+i(n(f)(h.value.totalStreamBytes)),1)]),s(`div`,Oe,[(t(!0),c(d,null,r(D.value,e=>(t(),c(`div`,{key:e.label},[s(`span`,null,i(e.label),1),s(`strong`,null,i(e.value),1)]))),128))])]),s(`section`,ke,[s(`div`,Ae,[s(`div`,je,[l[7]||=s(`span`,null,`结构树`,-1),s(`strong`,null,i(j.value.length)+` 节点`,1)]),s(`div`,Me,[(t(!0),c(d,null,r(j.value,e=>(t(),c(`button`,{key:e.id,type:`button`,class:a({active:E(b.value?.path||``)===E(e.path)}),onClick:t=>I(e)},[s(`span`,{style:te({paddingLeft:`${e.depth*14}px`})},i(e.children.length?`▸`:`•`),5),s(`strong`,null,i(e.name),1),s(`em`,null,i(w(e.role)),1),s(`small`,null,i(e.size?n(f)(e.size):T(e.kind)),1)],10,Ne))),128))])]),s(`div`,Pe,[s(`div`,Fe,[l[8]||=s(`span`,null,`EDA 对象`,-1),s(`strong`,null,i(h.value.entities.length)+` 项`,1)]),O.value.length?(t(),c(`div`,Ie,[(t(!0),c(d,null,r(O.value,e=>(t(),c(`div`,{key:e.role,class:`eda-entity-group`},[s(`h3`,null,i(e.label),1),(t(!0),c(d,null,r(e.items,e=>(t(),c(`button`,{key:e.id,type:`button`,onClick:t=>L(e)},[s(`strong`,null,i(e.name),1),s(`span`,null,i(n(f)(e.byteLength))+` · `+i(e.streamCount)+` 条目`,1),e.description?(t(),c(`p`,Re,i(e.description),1)):_(``,!0),s(`dl`,null,[e.footprint?(t(),c(`div`,ze,[l[9]||=s(`dt`,null,`Footprint`,-1),s(`dd`,null,i(e.footprint),1)])):_(``,!0),e.pins.length?(t(),c(`div`,Be,[l[10]||=s(`dt`,null,`Pins`,-1),s(`dd`,null,i(e.pins.join(`, `)),1)])):_(``,!0),e.layers.length?(t(),c(`div`,Ve,[l[11]||=s(`dt`,null,`Layers`,-1),s(`dd`,null,i(e.layers.join(`, `)),1)])):_(``,!0),e.keywords.length?(t(),c(`div`,He,[l[12]||=s(`dt`,null,`Keywords`,-1),s(`dd`,null,i(e.keywords.join(`, `)),1)])):_(``,!0)])],8,Le))),128))]))),128))])):(t(),c(`div`,Ue,[...l[13]||=[s(`strong`,null,`没有明确对象候选`,-1),s(`p`,null,`仍可从结构树、属性和字符串索引中查看可读内容。`,-1)]]))])]),s(`section`,We,[s(`div`,Ge,[l[14]||=s(`span`,null,`当前条目`,-1),s(`strong`,null,i(b.value?.path||`未选择`),1)]),b.value?(t(),c(`div`,Ke,[s(`span`,null,i(w(b.value.role)),1),s(`span`,null,i(T(b.value.kind)),1),s(`span`,null,i(n(f)(b.value.size)),1)])):_(``,!0),M.value.length?(t(),c(`div`,qe,[(t(!0),c(d,null,r(M.value,e=>(t(),c(`div`,{key:`${e.source}-${e.key}-${e.value}`},[s(`span`,null,i(e.key),1),s(`strong`,null,i(e.value),1)]))),128))])):_(``,!0),P.value?(t(),c(`pre`,Je,i(P.value),1)):(t(),c(`div`,$,[...l[15]||=[s(`strong`,null,`目录条目`,-1),s(`p`,null,`该节点用于组织下级流,没有可直接展示的文本或十六进制片段。`,-1)]]))]),s(`section`,Ye,[s(`div`,Xe,[s(`div`,Ze,[l[16]||=s(`span`,null,`可读字符串`,-1),s(`strong`,null,i(h.value.strings.length)+` 项`,1)]),s(`div`,Qe,[(t(!0),c(d,null,r(h.value.strings,(e,n)=>(t(),c(`span`,{key:`${e}-${n}`},i(e),1))),128))])]),s(`div`,$e,[s(`div`,et,[l[17]||=s(`span`,null,`诊断`,-1),s(`strong`,null,i(h.value.diagnostics.length)+` 条`,1)]),s(`div`,tt,[(t(!0),c(d,null,r(h.value.diagnostics,n=>(t(),c(`p`,{key:`${n.code}-${n.message}`,"data-level":n.level},[s(`span`,null,i(n.level),1),e(` `+i(n.message),1)],8,nt))),128))]),N.value.length?(t(),c(`div`,rt,[l[18]||=s(`strong`,null,`当前条目字符串`,-1),(t(!0),c(d,null,r(N.value,(e,n)=>(t(),c(`span`,{key:`${e}-${n}`},i(e),1))),128))])):_(``,!0)])])])])):_(``,!0),g.value?(t(),c(`div`,it,[l[19]||=s(`span`,null,null,-1),s(`strong`,null,`正在解析 `+i(p.type.toUpperCase())+`...`,1)])):_(``,!0),y.value?(t(),c(`div`,at,[l[20]||=s(`strong`,null,`EDA 预览提示`,-1),s(`p`,null,i(y.value),1)])):_(``,!0)]))}}),[[`__scopeId`,`data-v-9eb9b927`]]);export{ot as default};
@@ -0,0 +1,4 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./lib-DIWU3KRt.js","./package-D9RNadqh.js","./package-Dwgf8BpP.css","./__vite-browser-external-BEGdo7Ij.js"])))=>i.map(i=>d[i]);
2
+ import{E as e,F as t,I as n,J as r,K as i,M as a,N as o,S as s,T as c,U as l,b as u,et as d,f,j as p,k as m,r as h,w as g,x as _}from"./package-D9RNadqh.js";import{t as v}from"./nestedRender-BecIPX74.js";var y={class:`email-viewer`},b={class:`email-header`},x={key:0,class:`email-meta`},S={key:0},C={key:0,class:`email-body`},w={class:`email-sidebar`},T={class:`body-tabs`},E=[`disabled`,`onClick`],D={class:`attachment-panel`},O={class:`attachment-title`},k=[`onClick`],ee={class:`message-panel`},A=[`srcdoc`],j={key:1,class:`email-text`},M={key:2,class:`email-text`},N={key:3,class:`attachment-preview`},P={class:`attachment-preview-head`},F={key:1,class:`email-state`},I={key:2,class:`email-error`},L=f(m({__name:`EmailViewer`,props:{data:{},type:{},filename:{},options:{}},setup(f){let m=f,L=l(null),R=l(!0),z=l(`正在解析邮件...`),B=l(``),V=l(`html`),H=l(null),U=l(null),W=new Map,G=[],K,q=e=>{if(!Number.isFinite(e)||e<0)return`-`;if(e<1024)return`${e} B`;let t=e/1024/1024;return t>=1?`${t.toFixed(+(t<10))} MB`:`${(e/1024).toFixed(+(e<10*1024))} KB`},J=e=>e?(Array.isArray(e)?e:[e]).flatMap(e=>{let t=e;return t.group?J(t.group):[{name:t.name||``,address:t.address||t.email||``}]}):[],Y=e=>e.map(e=>e.name&&e.address?`${e.name} <${e.address}>`:e.address||e.name||``).filter(Boolean).join(`, `),X=_(()=>{let e=L.value?.html||``;if(!e)return``;let t=e;return W.forEach((e,n)=>{t=t.replace(RegExp(`cid:${n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}`,`gi`),e)}),`<!doctype html><html><head><meta charset="utf-8"><base target="_blank"><style>body{margin:0;padding:18px;font-family:Aptos,"Segoe UI",sans-serif;line-height:1.6;color:#172033;word-break:break-word;}img{max-width:100%;height:auto;}</style></head><body>${t}</body></html>`}),Z=_(()=>[{key:`html`,label:`HTML`,disabled:!L.value?.html},{key:`text`,label:`正文`,disabled:!L.value?.text},{key:`headers`,label:`头信息`,disabled:!L.value?.headers}]),Q=async e=>{if(e instanceof ArrayBuffer)return e;if(e instanceof Uint8Array){let t=new Uint8Array(e.byteLength);return t.set(e),t.buffer}return Q(new TextEncoder().encode(e))},te=async()=>{let e=await(await h(async()=>{let{default:e}=await import(`./postal-mime-kkzCFkih.js`);return{default:e}},[],import.meta.url)).default.parse(m.data,{attachmentEncoding:`arraybuffer`,maxNestingDepth:24,maxHeadersSize:2*1024*1024}),t=e.attachments.map((e,t)=>{let n=typeof e.content==`string`?e.content.length:e.content.byteLength,r=e.filename||`attachment-${t+1}`;return{id:`${t}-${r}`,name:r,mimeType:e.mimeType,size:n,contentId:e.contentId,load:()=>Q(e.content)}});return await Promise.all(t.map(async e=>{if(!e.contentId||!e.mimeType?.startsWith(`image/`))return;let t=await e.load(),n=URL.createObjectURL(new Blob([t],{type:e.mimeType}));G.push(n),W.set(e.contentId.replace(/[<>]/g,``),n)})),{kind:`eml`,subject:e.subject||m.filename,from:J(e.from),to:J(e.to),cc:J(e.cc),date:e.date,text:e.text,html:e.html,headers:e.headerLines?.map(e=>e.line).join(`
3
+ `)||e.headers?.map(e=>`${e.originalKey}: ${e.value}`).join(`
4
+ `),attachments:t}},ne=async()=>{let e=await h(()=>import(`./lib-DIWU3KRt.js`).then(e=>d(e.default,1)),__vite__mapDeps([0,1,2,3]),import.meta.url),t=new(e.default?.default||e.default)(m.data),n=t.getFileData(),r=(n.attachments||[]).map((e,n)=>{let r=e.fileName||e.fileNameShort||e.name||`attachment-${n+1}${e.extension||``}`;return{id:`${n}-${r}`,name:r,mimeType:`application/octet-stream`,size:e.contentLength||e.size||0,contentId:e.pidContentId,async load(){return Q(t.getAttachment(e).content)}}});return{kind:`msg`,subject:n.subject||m.filename,from:J({name:n.senderName,address:n.senderEmail}),to:J(n.recipients||[]).filter(e=>e.name||e.address),cc:[],date:n.messageDeliveryTime||n.clientSubmitTime||n.creationTime,text:n.body,html:n.html||``,headers:n.headers,attachments:r}},re=async()=>{R.value=!0,B.value=``;try{L.value=m.type===`msg`?await ne():await te(),V.value=L.value.html?`html`:L.value.text?`text`:`headers`}catch(e){console.error(e),B.value=e instanceof Error?e.message:String(e)}finally{R.value=!1}},$=()=>{K?.unmount?.(),K=void 0;let e=U.value;if(e)for(;e.firstChild;)e.removeChild(e.firstChild)},ie=async e=>{H.value=e,R.value=!0,z.value=`正在打开附件 ${e.name}...`;try{let t=await e.load();await p(),$();let n=U.value;if(!n)return;let r=document.createElement(`div`);r.className=`email-attachment-render`,n.appendChild(r),K=await v(t,e.name.includes(`.`)?e.name.slice(e.name.lastIndexOf(`.`)+1).toLowerCase():`txt`,r,{filename:e.name,options:m.options})}catch(e){console.error(e),B.value=e instanceof Error?e.message:String(e)}finally{R.value=!1,z.value=`正在解析邮件...`}},ae=async e=>{let t=await e.load(),n=URL.createObjectURL(new Blob([t],{type:e.mimeType||`application/octet-stream`}));G.push(n);let r=document.createElement(`a`);r.href=n,r.download=e.name,document.body.appendChild(r),r.click(),r.remove()};return o(()=>{re()}),a(()=>{$(),G.forEach(e=>URL.revokeObjectURL(e))}),(a,o)=>(t(),c(`section`,y,[s(`header`,b,[s(`span`,null,r(L.value?.kind?.toUpperCase()||f.type.toUpperCase()),1),s(`h2`,null,r(L.value?.subject||f.filename),1),L.value?(t(),c(`div`,x,[s(`p`,null,[o[1]||=s(`strong`,null,`发件人`,-1),e(r(Y(L.value.from)||`-`),1)]),s(`p`,null,[o[2]||=s(`strong`,null,`收件人`,-1),e(r(Y(L.value.to)||`-`),1)]),L.value.cc.length?(t(),c(`p`,S,[o[3]||=s(`strong`,null,`抄送`,-1),e(r(Y(L.value.cc)),1)])):g(``,!0),s(`p`,null,[o[4]||=s(`strong`,null,`时间`,-1),e(r(L.value.date||`-`),1)])])):g(``,!0)]),L.value?(t(),c(`div`,C,[s(`aside`,w,[s(`div`,T,[(t(!0),c(u,null,n(Z.value,e=>(t(),c(`button`,{key:e.key,type:`button`,disabled:e.disabled,class:i({active:V.value===e.key}),onClick:t=>V.value=e.key},r(e.label),11,E))),128))]),s(`section`,D,[s(`div`,O,[o[5]||=s(`strong`,null,`附件`,-1),s(`span`,null,r(L.value.attachments.length),1)]),(t(!0),c(u,null,n(L.value.attachments,e=>(t(),c(`button`,{key:e.id,type:`button`,class:i([`attachment-item`,{active:H.value?.id===e.id}]),onClick:t=>ie(e)},[s(`span`,null,r(e.name.split(`.`).pop()?.toUpperCase()||`FILE`),1),s(`strong`,null,r(e.name),1),s(`em`,null,r(q(e.size)),1)],10,k))),128))])]),s(`main`,ee,[V.value===`html`&&X.value?(t(),c(`iframe`,{key:0,class:`email-html`,sandbox:``,srcdoc:X.value},null,8,A)):V.value===`text`?(t(),c(`pre`,j,r(L.value.text),1)):(t(),c(`pre`,M,r(L.value.headers),1)),H.value?(t(),c(`section`,N,[s(`div`,P,[s(`strong`,null,r(H.value.name),1),s(`button`,{type:`button`,onClick:o[0]||=e=>ae(H.value)},`下载附件`)]),s(`div`,{ref_key:`attachmentTarget`,ref:U,class:`attachment-target`},null,512)])):g(``,!0)])])):g(``,!0),R.value?(t(),c(`div`,F,[o[6]||=s(`span`,null,null,-1),s(`strong`,null,r(z.value),1)])):g(``,!0),B.value?(t(),c(`div`,I,[o[7]||=s(`strong`,null,`邮件预览提示`,-1),s(`p`,null,r(B.value),1)])):g(``,!0)]))}}),[[`__scopeId`,`data-v-0989d798`]]);export{L as default};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./src-D_WiFutn.js","./package-D9RNadqh.js","./package-Dwgf8BpP.css"])))=>i.map(i=>d[i]);
2
+ import{F as e,I as t,J as n,K as r,M as i,N as a,S as o,T as s,U as c,b as l,f as u,j as d,k as f,q as p,r as m,w as h,x as g}from"./package-D9RNadqh.js";var _={class:`epub-toolbar`},v={class:`epub-title`},y={class:`epub-actions`},b=[`disabled`],x={class:`epub-progress`},S=[`disabled`],C={class:`epub-body`},w={key:0,class:`epub-toc`},T={class:`epub-toc-head`},E={class:`epub-toc-list`},D=[`onClick`],O={class:`epub-stage-wrap`},k={key:0,class:`epub-state`},A={key:1,class:`epub-state error`},j=u(f({__name:`EpubViewer`,props:{data:{}},setup(u){let f=u,j=c(null),M=c(`loading`),N=c(``),P=c(!0),F=c(`EPUB 电子书`),I=c(``),L=c([]),R=c(``),z=c(null),B=c(!0),V=c(!1),H,U,W=!1,G,K=g(()=>{if(!R.value)return``;let e=L.value.find(e=>e.href===R.value);return e?e.label:L.value.find(e=>R.value.includes(e.href.split(`#`)[0]))?.label||``}),q=g(()=>typeof z.value==`number`?`${z.value}%`:K.value||`阅读中`),J=(e,t)=>typeof e==`string`&&e.trim()?e.trim():t,Y=(e,t=0)=>Array.isArray(e)?e.flatMap((e,n)=>{let r=e,i=typeof r.href==`string`?r.href:``,a=J(r.label||r.title,`章节 ${n+1}`),o=Y(r.subitems||r.children,t+1);return i?[{depth:t,href:i,id:`${t}-${n}-${i}`,label:a},...o]:o}):[],X=e=>{let t=e.find(e=>{let t=e.label.toLowerCase();return/(^|\s)(chapter|part|book|prologue|preface|introduction)\b/.test(t)||/第[一二三四五六七八九十百千0-9]+[章节回部卷篇]/.test(e.label)});return t?t.href:e.find(e=>{let t=`${e.label} ${e.href}`.toLowerCase();return!/(cover|titlepage|title-page|copyright|license|toc|contents|nav|table-of-contents|wrap0000)/.test(t)})?.href||e[0]?.href},Z=e=>{B.value=!!e?.atStart,V.value=!!e?.atEnd,R.value=e?.start?.href||``,typeof e?.start?.percentage==`number`&&(z.value=Math.round(e.start.percentage*100))},Q=e=>new Promise(t=>{G=window.setTimeout(t,e)}),$=()=>{let e=(j.value?.querySelector(`iframe`))?.contentDocument?.body;return e?!!(e.innerText.trim()||e.querySelector(`img, svg, canvas`)):!1},ee=async()=>{for(let e=0;e<20;e++){if(W||$())return $();await Q(100)}return $()},te=async()=>{M.value=`loading`,await d();let e=j.value;if(e)try{let{default:t}=await m(async()=>{let{default:e}=await import(`./src-D_WiFutn.js`);return{default:e}},__vite__mapDeps([0,1,2]),import.meta.url);if(W)return;H=t(f.data.slice(0),{openAs:`binary`,replacements:`blobUrl`}),U=H.renderTo(e,{allowScriptedContent:!1,flow:`scrolled`,height:`100%`,manager:`continuous`,resizeOnOrientationChange:!0,spread:`none`,width:`100%`}),U.themes.default({body:{color:`#172033`,fontFamily:`Georgia, "Times New Roman", serif`,lineHeight:`1.72`,padding:`0 8px`},img:{maxWidth:`100%`},html:{height:`auto`,overflow:`auto`}}),U.on(`relocated`,Z),await H.ready;let n=await H.loaded.metadata.catch(()=>void 0);F.value=J(n?.title,F.value),I.value=J(n?.creator,``),L.value=Y((await H.loaded.navigation.catch(()=>void 0))?.toc);let r=X(L.value);if(await U.display(r),!await ee())throw Error(`EPUB 正文渲染未完成,请刷新后重试`);if(W)return;M.value=`ready`,H.locations.generate(1200).catch(()=>void 0)}catch(e){console.error(e),N.value=e instanceof Error?e.message:String(e),M.value=`error`}},ne=async()=>{await U?.prev()},re=async()=>{await U?.next()},ie=async e=>{await U?.display(e.href),P.value=!1};return a(te),i(()=>{W=!0,G!==void 0&&(clearTimeout(G),G=void 0),U&&=(U.off(`relocated`,Z),U.destroy(),void 0),H?.destroy(),H=void 0}),(i,a)=>(e(),s(`div`,{class:r([`epub-viewer`,{"epub-viewer--toc-hidden":!P.value}])},[o(`div`,_,[o(`button`,{type:`button`,class:r([`epub-icon-button`,{active:P.value}]),title:`目录`,onClick:a[0]||=e=>P.value=!P.value},[...a[1]||=[o(`span`,null,null,-1)]],2),o(`div`,v,[o(`strong`,null,n(F.value),1),o(`span`,null,n(I.value||q.value),1)]),o(`div`,y,[o(`button`,{type:`button`,class:`epub-button`,disabled:M.value!==`ready`||B.value,onClick:ne},` 上一页 `,8,b),o(`span`,x,n(q.value),1),o(`button`,{type:`button`,class:`epub-button`,disabled:M.value!==`ready`||V.value,onClick:re},` 下一页 `,8,S)])]),o(`div`,C,[P.value?(e(),s(`aside`,w,[o(`div`,T,[a[2]||=o(`strong`,null,`目录`,-1),o(`span`,null,n(L.value.length)+` 项`,1)]),o(`div`,E,[(e(!0),s(l,null,t(L.value,t=>(e(),s(`button`,{key:t.id,type:`button`,class:r([`epub-toc-item`,{active:t.href===R.value}]),style:p({paddingLeft:`${12+t.depth*14}px`}),onClick:e=>ie(t)},n(t.label),15,D))),128))])])):h(``,!0),o(`main`,O,[o(`div`,{ref_key:`stage`,ref:j,class:`epub-stage`},null,512),M.value===`loading`?(e(),s(`div`,k,`正在解析 EPUB...`)):M.value===`error`?(e(),s(`div`,A,n(N.value),1)):h(``,!0)])])],2))}}),[[`__scopeId`,`data-v-8f8a2b3b`]]);export{j as default};
@@ -1 +1 @@
1
- import{$ as e,Bt as t,C as n,Ct as r,Dt as i,E as a,Et as o,Ft as s,Ht as c,K as l,Mt as u,Ot as d,Pt as f,Q as p,R as m,Rt as h,S as g,Vt as _,Z as v,_ as y,bt as b,dt as x,et as S,f as C,ht as w,m as T,n as E,nt as D,o as O,p as k,pt as A,q as ee,r as j,rt as M,u as N,ut as te,vt as P,w as F,wt as I,x as ne,yt as L,z as re,zt as ie}from"./three.module-DGhmpURB.js";import{n as ae}from"./fflate.module-CnrP-VZU.js";function R(e,t,n){let r=n.length-e-1;if(t>=n[r])return r-1;if(t<=n[e])return e;let i=e,a=r,o=Math.floor((i+a)/2);for(;t<n[o]||t>=n[o+1];)t<n[o]?a=o:i=o,o=Math.floor((i+a)/2);return o}function oe(e,t,n,r){let i=[],a=[],o=[];i[0]=1;for(let s=1;s<=n;++s){a[s]=t-r[e+1-s],o[s]=r[e+s]-t;let n=0;for(let e=0;e<s;++e){let t=o[e+1],r=a[s-e],c=i[e]/(t+r);i[e]=n+t*c,n=r*c}i[s]=n}return i}function se(e,t,n,r){let i=R(e,r,t),a=oe(i,r,e,t),o=new _(0,0,0,0);for(let t=0;t<=e;++t){let r=n[i-e+t],s=a[t],c=r.w*s;o.x+=r.x*c,o.y+=r.y*c,o.z+=r.z*c,o.w+=r.w*s}return o}function ce(e,t,n,r,i){let a=[];for(let e=0;e<=n;++e)a[e]=0;let o=[];for(let e=0;e<=r;++e)o[e]=a.slice(0);let s=[];for(let e=0;e<=n;++e)s[e]=a.slice(0);s[0][0]=1;let c=a.slice(0),l=a.slice(0);for(let r=1;r<=n;++r){c[r]=t-i[e+1-r],l[r]=i[e+r]-t;let n=0;for(let e=0;e<r;++e){let t=l[e+1],i=c[r-e];s[r][e]=t+i;let a=s[e][r-1]/s[r][e];s[e][r]=n+t*a,n=i*a}s[r][r]=n}for(let e=0;e<=n;++e)o[0][e]=s[e][n];for(let e=0;e<=n;++e){let t=0,i=1,c=[];for(let e=0;e<=n;++e)c[e]=a.slice(0);c[0][0]=1;for(let a=1;a<=r;++a){let r=0,l=e-a,u=n-a;e>=a&&(c[i][0]=c[t][0]/s[u+1][l],r=c[i][0]*s[l][u]);let d=l>=-1?1:-l,f=e-1<=u?a-1:n-e;for(let e=d;e<=f;++e)c[i][e]=(c[t][e]-c[t][e-1])/s[u+1][l+e],r+=c[i][e]*s[l+e][u];e<=u&&(c[i][a]=-c[t][a-1]/s[u+1][e],r+=c[i][a]*s[e][u]),o[a][e]=r;let p=t;t=i,i=p}}let u=n;for(let e=1;e<=r;++e){for(let t=0;t<=n;++t)o[e][t]*=u;u*=n-e}return o}function le(e,t,n,r,i){let a=i<e?i:e,o=[],s=R(e,r,t),c=ce(s,r,e,a,t),l=[];for(let e=0;e<n.length;++e){let t=n[e].clone(),r=t.w;t.x*=r,t.y*=r,t.z*=r,l[e]=t}for(let t=0;t<=a;++t){let n=l[s-e].clone().multiplyScalar(c[t][0]);for(let r=1;r<=e;++r)n.add(l[s-e+r].clone().multiplyScalar(c[t][r]));o[t]=n}for(let e=a+1;e<=i+1;++e)o[e]=new _(0,0,0);return o}function ue(e,t){let n=1;for(let t=2;t<=e;++t)n*=t;let r=1;for(let e=2;e<=t;++e)r*=e;for(let n=2;n<=e-t;++n)r*=n;return n/r}function de(e){let n=e.length,r=[],i=[];for(let a=0;a<n;++a){let n=e[a];r[a]=new t(n.x,n.y,n.z),i[a]=n.w}let a=[];for(let e=0;e<n;++e){let t=r[e].clone();for(let n=1;n<=e;++n)t.sub(a[e-n].clone().multiplyScalar(ue(e,n)*i[n]));a[e]=t.divideScalar(i[0])}return a}function z(e,t,n,r,i){return de(le(e,t,n,r,i))}var B=class extends y{constructor(e,t,n,r,i){super();let a=t?t.length-1:0,o=n?n.length:0;this.degree=e,this.knots=t,this.controlPoints=[],this.startKnot=r||0,this.endKnot=i||a;for(let e=0;e<o;++e){let t=n[e];this.controlPoints[e]=new _(t.x,t.y,t.z,t.w)}}getPoint(e,n=new t){let r=n,i=this.knots[this.startKnot]+e*(this.knots[this.endKnot]-this.knots[this.startKnot]),a=se(this.degree,this.knots,this.controlPoints,i);return a.w!==1&&a.divideScalar(a.w),r.set(a.x,a.y,a.z)}getTangent(e,n=new t){let r=n,i=this.knots[0]+e*(this.knots[this.knots.length-1]-this.knots[0]),a=z(this.degree,this.knots,this.controlPoints,i,1);return r.copy(a[1]).normalize(),r}toJSON(){let e=super.toJSON();return e.degree=this.degree,e.knots=[...this.knots],e.controlPoints=this.controlPoints.map(e=>e.toArray()),e.startKnot=this.startKnot,e.endKnot=this.endKnot,e}fromJSON(e){return super.fromJSON(e),this.degree=e.degree,this.knots=[...e.knots],this.controlPoints=e.controlPoints.map(e=>new _(e[0],e[1],e[2],e[3])),this.startKnot=e.startKnot,this.endKnot=e.endKnot,this}},V,H,U,fe=class extends l{constructor(e){super(e)}load(e,t,r,i){let a=this,o=a.path===``?ee.extractUrlBase(e):a.path,s=new n(this.manager);s.setPath(a.path),s.setResponseType(`arraybuffer`),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(ve(e))V=new _e().parse(e);else{let t=$(e);if(!ye(t))throw Error(`THREE.FBXLoader: Unknown format.`);if(K(t)<7e3)throw Error(`THREE.FBXLoader: FBX version not supported, FileVersion: `+K(t));V=new ge().parse(t)}return new pe(new s(this.manager).setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin),this.manager).parse(V)}},pe=class{constructor(e,t){this.textureLoader=e,this.manager=t}parse(){H=this.parseConnections();let e=this.parseImages(),t=this.parseTextures(e),n=this.parseMaterials(t),r=this.parseDeformers(),i=new me().parse(r);return this.parseScene(r,i,n),U}parseConnections(){let e=new Map;return`Connections`in V&&V.Connections.connections.forEach(function(t){let n=t[0],r=t[1],i=t[2];e.has(n)||e.set(n,{parents:[],children:[]});let a={ID:r,relationship:i};e.get(n).parents.push(a),e.has(r)||e.set(r,{parents:[],children:[]});let o={ID:n,relationship:i};e.get(r).children.push(o)}),e}parseImages(){let e={},t={};if(`Video`in V.Objects){let n=V.Objects.Video;for(let r in n){let i=n[r],a=parseInt(r);if(e[a]=i.RelativeFilename||i.Filename,`Content`in i){let e=i.Content instanceof ArrayBuffer&&i.Content.byteLength>0,a=typeof i.Content==`string`&&i.Content!==``;if(e||a){let e=this.parseImage(n[r]);t[i.RelativeFilename||i.Filename]=e}}}}for(let n in e){let r=e[n];t[r]===void 0?e[n]=e[n].split(`\\`).pop():e[n]=t[r]}return e}parseImage(e){let t=e.Content,n=e.RelativeFilename||e.Filename,r=n.slice(n.lastIndexOf(`.`)+1).toLowerCase(),i;switch(r){case`bmp`:i=`image/bmp`;break;case`jpg`:case`jpeg`:i=`image/jpeg`;break;case`png`:i=`image/png`;break;case`tif`:i=`image/tiff`;break;case`tga`:this.manager.getHandler(`.tga`)===null&&console.warn(`FBXLoader: TGA loader not found, skipping `,n),i=`image/tga`;break;case`webp`:i=`image/webp`;break;default:console.warn(`FBXLoader: Image type "`+r+`" is not supported.`);return}if(typeof t==`string`)return`data:`+i+`;base64,`+t;{let e=new Uint8Array(t);return window.URL.createObjectURL(new Blob([e],{type:i}))}}parseTextures(e){let t=new Map;if(`Texture`in V.Objects){let n=V.Objects.Texture;for(let r in n){let i=this.parseTexture(n[r],e);t.set(parseInt(r),i)}}return t}parseTexture(e,t){let n=this.loadTexture(e,t);n.ID=e.id,n.name=e.attrName;let i=e.WrapModeU,a=e.WrapModeV,o=i===void 0?0:i.value,s=a===void 0?0:a.value;if(n.wrapS=o===0?r:C,n.wrapT=s===0?r:C,`Scaling`in e){let t=e.Scaling.value;n.repeat.x=t[0],n.repeat.y=t[1]}if(`Translation`in e){let t=e.Translation.value;n.offset.x=t[0],n.offset.y=t[1]}return n}loadTexture(e,t){let n=e.FileName.split(`.`).pop().toLowerCase(),r=this.manager.getHandler(`.${n}`);r===null&&(r=this.textureLoader);let i=r.path;i||r.setPath(this.textureLoader.path);let a=H.get(e.id).children,o;if(a!==void 0&&a.length>0&&t[a[0].ID]!==void 0&&(o=t[a[0].ID],(o.indexOf(`blob:`)===0||o.indexOf(`data:`)===0)&&r.setPath(void 0)),o===void 0)return console.warn(`FBXLoader: Undefined filename, creating placeholder texture.`),new f;let s=r.load(o);return r.setPath(i),s}parseMaterials(e){let t=new Map;if(`Material`in V.Objects){let n=V.Objects.Material;for(let r in n){let i=this.parseMaterial(n[r],e);i!==null&&t.set(parseInt(r),i)}}return t}parseMaterial(e,t){let n=e.id,r=e.attrName,i=e.ShadingModel;if(typeof i==`object`&&(i=i.value),!H.has(n))return null;let a=this.parseParameters(e,t,n),o;switch(i.toLowerCase()){case`phong`:o=new M;break;case`lambert`:o=new D;break;default:console.warn(`THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.`,i),o=new M;break}return o.setValues(a),o.name=r,o}parseParameters(e,t,n){let r={};e.BumpFactor&&(r.bumpScale=e.BumpFactor.value),e.Diffuse?r.color=T.colorSpaceToWorking(new k().fromArray(e.Diffuse.value),I):e.DiffuseColor&&(e.DiffuseColor.type===`Color`||e.DiffuseColor.type===`ColorRGB`)&&(r.color=T.colorSpaceToWorking(new k().fromArray(e.DiffuseColor.value),I)),e.DisplacementFactor&&(r.displacementScale=e.DisplacementFactor.value),e.Emissive?r.emissive=T.colorSpaceToWorking(new k().fromArray(e.Emissive.value),I):e.EmissiveColor&&(e.EmissiveColor.type===`Color`||e.EmissiveColor.type===`ColorRGB`)&&(r.emissive=T.colorSpaceToWorking(new k().fromArray(e.EmissiveColor.value),I)),e.EmissiveFactor&&(r.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),r.opacity=1-(e.TransparencyFactor?parseFloat(e.TransparencyFactor.value):0),(r.opacity===1||r.opacity===0)&&(r.opacity=e.Opacity?parseFloat(e.Opacity.value):null,r.opacity===null&&(r.opacity=1)),r.opacity<1&&(r.transparent=!0),e.ReflectionFactor&&(r.reflectivity=e.ReflectionFactor.value),e.Shininess&&(r.shininess=e.Shininess.value),e.Specular?r.specular=T.colorSpaceToWorking(new k().fromArray(e.Specular.value),I):e.SpecularColor&&e.SpecularColor.type===`Color`&&(r.specular=T.colorSpaceToWorking(new k().fromArray(e.SpecularColor.value),I));let i=this;return H.get(n).children.forEach(function(e){let n=e.relationship;switch(n){case`Bump`:r.bumpMap=i.getTexture(t,e.ID);break;case`Maya|TEX_ao_map`:r.aoMap=i.getTexture(t,e.ID);break;case`DiffuseColor`:case`Maya|TEX_color_map`:r.map=i.getTexture(t,e.ID),r.map!==void 0&&(r.map.colorSpace=I);break;case`DisplacementColor`:r.displacementMap=i.getTexture(t,e.ID);break;case`EmissiveColor`:r.emissiveMap=i.getTexture(t,e.ID),r.emissiveMap!==void 0&&(r.emissiveMap.colorSpace=I);break;case`NormalMap`:case`Maya|TEX_normal_map`:r.normalMap=i.getTexture(t,e.ID);break;case`ReflectionColor`:r.envMap=i.getTexture(t,e.ID),r.envMap!==void 0&&(r.envMap.mapping=303,r.envMap.colorSpace=I);break;case`SpecularColor`:r.specularMap=i.getTexture(t,e.ID),r.specularMap!==void 0&&(r.specularMap.colorSpace=I);break;case`TransparentColor`:case`TransparencyFactor`:r.alphaMap=i.getTexture(t,e.ID),r.transparent=!0;break;default:console.warn(`THREE.FBXLoader: %s map is not supported in three.js, skipping texture.`,n);break}}),r}getTexture(e,t){return`LayeredTexture`in V.Objects&&t in V.Objects.LayeredTexture&&(console.warn(`THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.`),t=H.get(t).children[0].ID),e.get(t)}parseDeformers(){let e={},t={};if(`Deformer`in V.Objects){let n=V.Objects.Deformer;for(let r in n){let i=n[r],a=H.get(parseInt(r));if(i.attrType===`Skin`){let t=this.parseSkeleton(a,n);t.ID=r,a.parents.length>1&&console.warn(`THREE.FBXLoader: skeleton attached to more than one geometry is not supported.`),t.geometryID=a.parents[0].ID,e[r]=t}else if(i.attrType===`BlendShape`){let e={id:r};e.rawTargets=this.parseMorphTargets(a,n),e.id=r,a.parents.length>1&&console.warn(`THREE.FBXLoader: morph target attached to more than one geometry is not supported.`),t[r]=e}}}return{skeletons:e,morphTargets:t}}parseSkeleton(t,n){let r=[];return t.children.forEach(function(t){let i=n[t.ID];if(i.attrType!==`Cluster`)return;let a={ID:t.ID,indices:[],weights:[],transformLink:new e().fromArray(i.TransformLink.a)};`Indexes`in i&&(a.indices=i.Indexes.a,a.weights=i.Weights.a),r.push(a)}),{rawBones:r,bones:[]}}parseMorphTargets(e,t){let n=[];for(let r=0;r<e.children.length;r++){let i=e.children[r],a=t[i.ID],o={name:a.attrName,initialWeight:a.DeformPercent,id:a.id,fullWeights:a.FullWeights.a};if(a.attrType!==`BlendShapeChannel`)return;o.geoID=H.get(parseInt(i.ID)).children.filter(function(e){return e.relationship===void 0})[0].ID,n.push(o)}return n}parseScene(t,n,r){U=new a;let i=this.parseModels(t.skeletons,n,r),o=V.Objects.Model,s=this;i.forEach(function(e){let t=o[e.ID];s.setLookAtProperties(e,t),H.get(e.ID).parents.forEach(function(t){let n=i.get(t.ID);n!==void 0&&n.add(e)}),e.parent===null&&U.add(e)}),this.addGlobalSceneSettings(),U.traverse(function(e){if(e.userData.transformData){e.parent&&(e.userData.transformData.parentMatrix=e.parent.matrix,e.userData.transformData.parentMatrixWorld=e.parent.matrixWorld);let t=X(e.userData.transformData);e.applyMatrix4(t),e.updateWorldMatrix()}});let c=this.parsePoseNodes(),l=new Set;for(let e in t.skeletons)t.skeletons[e].rawBones.forEach(function(n,r){let i=t.skeletons[e].bones[r];i&&l.add(i.ID)});let u=new e;U.traverse(function(e){if(e.isBone&&e.ID!==void 0&&!l.has(e.ID)){let t=c[e.ID];t!==void 0&&(e.parent?(u.copy(e.parent.matrixWorld).invert(),u.multiply(t)):u.copy(t),u.decompose(e.position,e.quaternion,e.scale),e.updateMatrix(),e.matrixWorld.copy(t))}}),this.bindSkeleton(t.skeletons,n,i);let d=new he().parse();U.children.length===1&&U.children[0].isGroup&&(U.children[0].animations=d,U=U.children[0]),U.animations=d,`GlobalSettings`in V&&`UpAxis`in V.GlobalSettings&&V.GlobalSettings.UpAxis.value===2&&(console.warn(`THREE.FBXLoader: 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.`),U.rotation.set(-Math.PI/2,0,0))}parseModels(e,t,n){let r=new Map,i=V.Objects.Model;for(let o in i){let s=parseInt(o),c=i[o],l=H.get(s),u=this.buildSkeleton(l,e,s,c.attrName);if(!u){switch(c.attrType){case`Camera`:u=this.createCamera(l);break;case`Light`:u=this.createLight(l);break;case`Mesh`:u=this.createMesh(l,t,n);break;case`NurbsCurve`:u=this.createCurve(l,t);break;case`LimbNode`:case`Root`:u=new O;break;default:u=new a;break}u.name=c.attrName?P.sanitizeNodeName(c.attrName):``,u.userData.originalName=c.attrName,u.ID=s}this.getTransformData(u,c),r.set(s,u)}return r}buildSkeleton(e,t,n,r){let i=null;return e.parents.forEach(function(e){for(let a in t){let o=t[a];o.rawBones.forEach(function(t,a){if(t.ID===e.ID){let e=i;i=new O,i.matrixWorld.copy(t.transformLink),i.name=r?P.sanitizeNodeName(r):``,i.userData.originalName=r,i.ID=n,o.bones[a]=i,e!==null&&i.add(e)}})}}),i}createCamera(e){let t,n;if(e.children.forEach(function(e){let t=V.Objects.NodeAttribute[e.ID];t!==void 0&&(n=t)}),n===void 0)t=new x;else{let e=0;n.CameraProjectionType!==void 0&&n.CameraProjectionType.value===1&&(e=1);let r=1;n.NearPlane!==void 0&&(r=n.NearPlane.value/1e3);let i=1e3;n.FarPlane!==void 0&&(i=n.FarPlane.value/1e3);let a=window.innerWidth,o=window.innerHeight;n.AspectWidth!==void 0&&n.AspectHeight!==void 0&&(a=n.AspectWidth.value,o=n.AspectHeight.value);let s=a/o,c=45;n.FieldOfView!==void 0&&(c=n.FieldOfView.value);let l=n.FocalLength?n.FocalLength.value:null;switch(e){case 0:t=new A(c,s,r,i),l!==null&&t.setFocalLength(l);break;case 1:console.warn(`THREE.FBXLoader: Orthographic cameras not supported yet.`),t=new x;break;default:console.warn(`THREE.FBXLoader: Unknown camera type `+e+`.`),t=new x;break}}return t}createLight(e){let t,n;if(e.children.forEach(function(e){let t=V.Objects.NodeAttribute[e.ID];t!==void 0&&(n=t)}),n===void 0)t=new x;else{let e;e=n.LightType===void 0?0:n.LightType.value;let r=16777215;n.Color!==void 0&&(r=T.colorSpaceToWorking(new k().fromArray(n.Color.value),I));let i=n.Intensity===void 0?1:n.Intensity.value/100;n.CastLightOnObject!==void 0&&n.CastLightOnObject.value===0&&(i=0);let a=0;switch(n.FarAttenuationEnd!==void 0&&(a=n.EnableFarAttenuation!==void 0&&n.EnableFarAttenuation.value===0?0:n.FarAttenuationEnd.value),e){case 0:t=new w(r,i,a,1);break;case 1:t=new ne(r,i);break;case 2:let e=Math.PI/3,o=0;n.OuterAngle===void 0?n.InnerAngle!==void 0&&(e=v.degToRad(n.InnerAngle.value)):(e=v.degToRad(n.OuterAngle.value),n.InnerAngle!==void 0&&(o=1-n.InnerAngle.value/n.OuterAngle.value,o=Math.max(0,o))),t=new u(r,i,a,e,o,1);break;default:console.warn(`THREE.FBXLoader: Unknown light type `+n.LightType.value+`, defaulting to a PointLight.`),t=new w(r,i);break}n.CastShadows!==void 0&&n.CastShadows.value===1&&(t.castShadow=!0)}return t}createMesh(e,t,n){let r,i=null,a=null,o=[];if(e.children.forEach(function(e){t.has(e.ID)&&(i=t.get(e.ID)),n.has(e.ID)&&o.push(n.get(e.ID))}),o.length>1?a=o:o.length>0?a=o[0]:(a=new M({name:l.DEFAULT_MATERIAL_NAME,color:13421772}),o.push(a)),`color`in i.attributes&&o.forEach(function(e){e.vertexColors=!0}),i.groups.length>0){let e=!1;for(let t=0,n=i.groups.length;t<n;t++){let n=i.groups[t];(n.materialIndex<0||n.materialIndex>=o.length)&&(n.materialIndex=o.length,e=!0)}if(e){let e=new M;o.push(e)}}return i.FBX_Deformer?(r=new d(i,a),r.normalizeSkinWeights()):r=new S(i,a),r}createCurve(e,t){return new m(e.children.reduce(function(e,n){return t.has(n.ID)&&(e=t.get(n.ID)),e},null),new re({name:l.DEFAULT_MATERIAL_NAME,color:3342591,linewidth:1}))}getTransformData(e,t){let n={};`InheritType`in t&&(n.inheritType=parseInt(t.InheritType.value)),`RotationOrder`in t?n.eulerOrder=Z(t.RotationOrder.value):n.eulerOrder=Z(0),`Lcl_Translation`in t&&(n.translation=t.Lcl_Translation.value),`PreRotation`in t&&(n.preRotation=t.PreRotation.value),`Lcl_Rotation`in t&&(n.rotation=t.Lcl_Rotation.value),`PostRotation`in t&&(n.postRotation=t.PostRotation.value),`Lcl_Scaling`in t&&(n.scale=t.Lcl_Scaling.value),`ScalingOffset`in t&&(n.scalingOffset=t.ScalingOffset.value),`ScalingPivot`in t&&(n.scalingPivot=t.ScalingPivot.value),`RotationOffset`in t&&(n.rotationOffset=t.RotationOffset.value),`RotationPivot`in t&&(n.rotationPivot=t.RotationPivot.value),e.userData.transformData=n}setLookAtProperties(e,n){`LookAtProperty`in n&&H.get(e.ID).children.forEach(function(n){if(n.relationship===`LookAtProperty`){let r=V.Objects.Model[n.ID];if(`Lcl_Translation`in r){let n=r.Lcl_Translation.value;e.target===void 0?e.lookAt(new t().fromArray(n)):(e.target.position.fromArray(n),U.add(e.target))}}})}bindSkeleton(t,n,r){for(let a in t){let o=t[a],s=[];for(let t=0,n=o.bones.length;t<n;t++){let n=new e;o.bones[t]&&o.rawBones[t]&&n.copy(o.rawBones[t].transformLink).invert(),s.push(n)}H.get(parseInt(o.ID)).parents.forEach(function(e){if(n.has(e.ID)){let t=e.ID;H.get(t).parents.forEach(function(e){if(r.has(e.ID)){let t=r.get(e.ID);t.updateMatrixWorld(!0),t.bind(new i(o.bones,s),t.matrixWorld)}})}})}}parsePoseNodes(){let t={};if(`Pose`in V.Objects){let n=V.Objects.Pose;for(let r in n)if(n[r].attrType===`BindPose`&&n[r].NbPoseNodes>0){let i=n[r].PoseNode;Array.isArray(i)?i.forEach(function(n){t[n.Node]=new e().fromArray(n.Matrix.a)}):t[i.Node]=new e().fromArray(i.Matrix.a)}}return t}addGlobalSceneSettings(){if(`GlobalSettings`in V){if(`AmbientColor`in V.GlobalSettings){let e=V.GlobalSettings.AmbientColor.value,t=e[0],n=e[1],r=e[2];if(t!==0||n!==0||r!==0){let e=new k().setRGB(t,n,r,I);U.add(new E(e,1))}}`UnitScaleFactor`in V.GlobalSettings&&(U.userData.unitScaleFactor=V.GlobalSettings.UnitScaleFactor.value)}}},me=class{constructor(){this.negativeMaterialIndices=!1}parse(e){let t=new Map;if(`Geometry`in V.Objects){let n=V.Objects.Geometry;for(let r in n){let i=H.get(parseInt(r)),a=this.parseGeometry(i,n[r],e);t.set(parseInt(r),a)}}return this.negativeMaterialIndices===!0&&console.warn(`THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected.`),t}parseGeometry(e,t,n){switch(t.attrType){case`Mesh`:return this.parseMeshGeometry(e,t,n);case`NurbsCurve`:return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,n){let r=n.skeletons,i=[],a=e.parents.map(function(e){return V.Objects.Model[e.ID]});if(a.length===0)return;let o=e.children.reduce(function(e,t){return r[t.ID]!==void 0&&(e=r[t.ID]),e},null);e.children.forEach(function(e){n.morphTargets[e.ID]!==void 0&&i.push(n.morphTargets[e.ID])});let s=a[0],c={};`RotationOrder`in s&&(c.eulerOrder=Z(s.RotationOrder.value)),`InheritType`in s&&(c.inheritType=parseInt(s.InheritType.value)),`GeometricTranslation`in s&&(c.translation=s.GeometricTranslation.value),`GeometricRotation`in s&&(c.rotation=s.GeometricRotation.value),`GeometricScaling`in s&&(c.scale=s.GeometricScaling.value);let l=X(c);return this.genGeometry(t,o,i,l)}genGeometry(e,t,n,r){let i=new N;e.attrName&&(i.name=e.attrName);let a=this.parseGeoNode(e,t),o=this.genBuffers(a),s=new F(o.vertex,3);if(s.applyMatrix4(r),i.setAttribute(`position`,s),o.colors.length>0&&i.setAttribute(`color`,new F(o.colors,3)),t&&(i.setAttribute(`skinIndex`,new h(o.weightsIndices,4)),i.setAttribute(`skinWeight`,new F(o.vertexWeights,4)),i.FBX_Deformer=t),o.normal.length>0){let e=new p().getNormalMatrix(r),t=new F(o.normal,3);t.applyNormalMatrix(e),i.setAttribute(`normal`,t)}if(o.uvs.forEach(function(e,t){let n=t===0?`uv`:`uv${t}`;i.setAttribute(n,new F(o.uvs[t],2))}),a.material&&a.material.mappingType!==`AllSame`){let e=o.materialIndex[0],t=0;if(o.materialIndex.forEach(function(n,r){n!==e&&(i.addGroup(t,r-t,e),e=n,t=r)}),i.groups.length>0){let t=i.groups[i.groups.length-1],n=t.start+t.count;n!==o.materialIndex.length&&i.addGroup(n,o.materialIndex.length-n,e)}i.groups.length===0&&i.addGroup(0,o.materialIndex.length,o.materialIndex[0])}return this.addMorphTargets(i,e,n,r),i}parseGeoNode(e,t){let n={};if(n.vertexPositions=e.Vertices===void 0?[]:e.Vertices.a,n.vertexIndices=e.PolygonVertexIndex===void 0?[]:e.PolygonVertexIndex.a,e.LayerElementColor&&e.LayerElementColor[0].Colors&&(n.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(n.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(n.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){n.uv=[];let t=0;for(;e.LayerElementUV[t];)e.LayerElementUV[t].UV&&n.uv.push(this.parseUVs(e.LayerElementUV[t])),t++}return n.weightTable={},t!==null&&(n.skeleton=t,t.rawBones.forEach(function(e,t){e.indices.forEach(function(r,i){n.weightTable[r]===void 0&&(n.weightTable[r]=[]),n.weightTable[r].push({id:t,weight:e.weights[i]})})})),n}genBuffers(e){let t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},n=0,r=0,i=!1,a=[],o=[],s=[],c=[],l=[],u=[],d=this;return e.vertexIndices.forEach(function(f,p){let m,h=!1;f<0&&(f^=-1,h=!0);let g=[],_=[];if(a.push(f*3,f*3+1,f*3+2),e.color){let t=q(p,n,f,e.color);s.push(t[0],t[1],t[2])}if(e.skeleton){if(e.weightTable[f]!==void 0&&e.weightTable[f].forEach(function(e){_.push(e.weight),g.push(e.id)}),_.length>4){i||=(console.warn(`THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.`),!0);let e=[0,0,0,0],t=[0,0,0,0];_.forEach(function(n,r){let i=n,a=g[r];t.forEach(function(t,n,r){if(i>t){r[n]=i,i=t;let o=e[n];e[n]=a,a=o}})}),g=e,_=t}for(;_.length<4;)_.push(0),g.push(0);for(let e=0;e<4;++e)l.push(_[e]),u.push(g[e])}if(e.normal){let t=q(p,n,f,e.normal);o.push(t[0],t[1],t[2])}e.material&&e.material.mappingType!==`AllSame`&&(m=q(p,n,f,e.material)[0],m<0&&(d.negativeMaterialIndices=!0,m=0)),e.uv&&e.uv.forEach(function(e,t){let r=q(p,n,f,e);c[t]===void 0&&(c[t]=[]),c[t].push(r[0]),c[t].push(r[1])}),r++,h&&(d.genFace(t,e,a,m,o,s,c,l,u,r),n++,r=0,a=[],o=[],s=[],c=[],l=[],u=[])}),t}getNormalNewell(e){let n=new t(0,0,0);for(let t=0;t<e.length;t++){let r=e[t],i=e[(t+1)%e.length];n.x+=(r.y-i.y)*(r.z+i.z),n.y+=(r.z-i.z)*(r.x+i.x),n.z+=(r.x-i.x)*(r.y+i.y)}return n.normalize(),n}getNormalTangentAndBitangent(e){let n=this.getNormalNewell(e),r=(Math.abs(n.z)>.5?new t(0,1,0):new t(0,0,1)).cross(n).normalize();return{normal:n,tangent:r,bitangent:n.clone().cross(r).normalize()}}flattenVertex(e,t,n){return new ie(e.dot(t),e.dot(n))}genFace(e,n,r,i,a,s,c,l,u,d){let f;if(d>3){let e=[],i=n.baseVertexPositions||n.vertexPositions;for(let n=0;n<r.length;n+=3)e.push(new t(i[r[n]],i[r[n+1]],i[r[n+2]]));let{tangent:a,bitangent:s}=this.getNormalTangentAndBitangent(e),c=[];for(let t of e)c.push(this.flattenVertex(t,a,s));f=o.triangulateShape(c,[])}else f=[[0,1,2]];for(let[t,o,d]of f)e.vertex.push(n.vertexPositions[r[t*3]]),e.vertex.push(n.vertexPositions[r[t*3+1]]),e.vertex.push(n.vertexPositions[r[t*3+2]]),e.vertex.push(n.vertexPositions[r[o*3]]),e.vertex.push(n.vertexPositions[r[o*3+1]]),e.vertex.push(n.vertexPositions[r[o*3+2]]),e.vertex.push(n.vertexPositions[r[d*3]]),e.vertex.push(n.vertexPositions[r[d*3+1]]),e.vertex.push(n.vertexPositions[r[d*3+2]]),n.skeleton&&(e.vertexWeights.push(l[t*4]),e.vertexWeights.push(l[t*4+1]),e.vertexWeights.push(l[t*4+2]),e.vertexWeights.push(l[t*4+3]),e.vertexWeights.push(l[o*4]),e.vertexWeights.push(l[o*4+1]),e.vertexWeights.push(l[o*4+2]),e.vertexWeights.push(l[o*4+3]),e.vertexWeights.push(l[d*4]),e.vertexWeights.push(l[d*4+1]),e.vertexWeights.push(l[d*4+2]),e.vertexWeights.push(l[d*4+3]),e.weightsIndices.push(u[t*4]),e.weightsIndices.push(u[t*4+1]),e.weightsIndices.push(u[t*4+2]),e.weightsIndices.push(u[t*4+3]),e.weightsIndices.push(u[o*4]),e.weightsIndices.push(u[o*4+1]),e.weightsIndices.push(u[o*4+2]),e.weightsIndices.push(u[o*4+3]),e.weightsIndices.push(u[d*4]),e.weightsIndices.push(u[d*4+1]),e.weightsIndices.push(u[d*4+2]),e.weightsIndices.push(u[d*4+3])),n.color&&(e.colors.push(s[t*3]),e.colors.push(s[t*3+1]),e.colors.push(s[t*3+2]),e.colors.push(s[o*3]),e.colors.push(s[o*3+1]),e.colors.push(s[o*3+2]),e.colors.push(s[d*3]),e.colors.push(s[d*3+1]),e.colors.push(s[d*3+2])),n.material&&n.material.mappingType!==`AllSame`&&(e.materialIndex.push(i),e.materialIndex.push(i),e.materialIndex.push(i)),n.normal&&(e.normal.push(a[t*3]),e.normal.push(a[t*3+1]),e.normal.push(a[t*3+2]),e.normal.push(a[o*3]),e.normal.push(a[o*3+1]),e.normal.push(a[o*3+2]),e.normal.push(a[d*3]),e.normal.push(a[d*3+1]),e.normal.push(a[d*3+2])),n.uv&&n.uv.forEach(function(n,r){e.uvs[r]===void 0&&(e.uvs[r]=[]),e.uvs[r].push(c[r][t*2]),e.uvs[r].push(c[r][t*2+1]),e.uvs[r].push(c[r][o*2]),e.uvs[r].push(c[r][o*2+1]),e.uvs[r].push(c[r][d*2]),e.uvs[r].push(c[r][d*2+1])})}addMorphTargets(e,t,n,r){if(n.length===0)return;e.morphTargetsRelative=!0,e.morphAttributes.position=[];let i=r.clone().setPosition(0,0,0),a=this;n.forEach(function(n){n.rawTargets.forEach(function(n){let r=V.Objects.Geometry[n.geoID];r!==void 0&&a.genMorphGeometry(e,t,r,i,n.name)})})}genMorphGeometry(e,t,n,r,i){let a=t.Vertices===void 0?[]:t.Vertices.a,o=t.PolygonVertexIndex===void 0?[]:t.PolygonVertexIndex.a,s=n.Vertices===void 0?[]:n.Vertices.a,c=n.Indexes===void 0?[]:n.Indexes.a,l=e.attributes.position.count*3,u=new Float32Array(l);for(let e=0;e<c.length;e++){let t=c[e]*3;u[t]=s[e*3],u[t+1]=s[e*3+1],u[t+2]=s[e*3+2]}let d={vertexIndices:o,vertexPositions:u,baseVertexPositions:a},f=new F(this.genBuffers(d).vertex,3);f.name=i||n.attrName,f.applyMatrix4(r),e.morphAttributes.position.push(f)}parseNormals(e){let t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.Normals.a,i=[];return n===`IndexToDirect`&&(`NormalIndex`in e?i=e.NormalIndex.a:`NormalsIndex`in e&&(i=e.NormalsIndex.a)),{dataSize:3,buffer:r,indices:i,mappingType:t,referenceType:n}}parseUVs(e){let t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.UV.a,i=[];return n===`IndexToDirect`&&(i=e.UVIndex.a),{dataSize:2,buffer:r,indices:i,mappingType:t,referenceType:n}}parseVertexColors(e){let t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.Colors.a,i=[];n===`IndexToDirect`&&(i=e.ColorIndex.a);for(let e=0,t=new k;e<r.length;e+=4)t.fromArray(r,e),T.colorSpaceToWorking(t,I),t.toArray(r,e);return{dataSize:4,buffer:r,indices:i,mappingType:t,referenceType:n}}parseMaterialIndices(e){let t=e.MappingInformationType,n=e.ReferenceInformationType;if(t===`NoMappingInformation`)return{dataSize:1,buffer:[0],indices:[0],mappingType:`AllSame`,referenceType:n};let r=e.Materials.a,i=[];for(let e=0;e<r.length;++e)i.push(e);return{dataSize:1,buffer:r,indices:i,mappingType:t,referenceType:n}}parseNurbsGeometry(e){let t=parseInt(e.Order);if(isNaN(t))return console.error(`THREE.FBXLoader: Invalid Order %s given for geometry ID: %s`,e.Order,e.id),new N;let n=t-1,r=e.KnotVector.a,i=[],a=e.Points.a;for(let e=0,t=a.length;e<t;e+=4)i.push(new _().fromArray(a,e));let o,s;if(e.Form===`Closed`)i.push(i[0]);else if(e.Form===`Periodic`){o=n,s=r.length-1-o;for(let e=0;e<n;++e)i.push(i[e])}let c=new B(n,r,i,o,s).getPoints(i.length*12);return new N().setFromPoints(c)}},he=class{parse(){let e=[],t=this.parseClips();if(t!==void 0)for(let n in t){let r=t[n],i=this.addClip(r);e.push(i)}return e}parseClips(){if(V.Objects.AnimationCurve===void 0)return;let e=this.parseAnimationCurveNodes();this.parseAnimationCurves(e);let t=this.parseAnimationLayers(e);return this.parseAnimStacks(t)}parseAnimationCurveNodes(){let e=V.Objects.AnimationCurveNode,t=new Map;for(let n in e){let r=e[n];if(r.attrName.match(/S|R|T|DeformPercent/)!==null){let e={id:r.id,attr:r.attrName,curves:{}};t.set(e.id,e)}}return t}parseAnimationCurves(e){let t=V.Objects.AnimationCurve;for(let n in t){let r={id:t[n].id,times:t[n].KeyTime.a.map(be),values:t[n].KeyValueFloat.a},i=H.get(r.id);if(i!==void 0){let t=i.parents[0].ID,n=i.parents[0].relationship;n.match(/X/)?e.get(t).curves.x=r:n.match(/Y/)?e.get(t).curves.y=r:n.match(/Z/)?e.get(t).curves.z=r:n.match(/DeformPercent/)&&e.has(t)&&(e.get(t).curves.morph=r)}}}parseAnimationLayers(t){let n=V.Objects.AnimationLayer,r=new Map;for(let i in n){let n=[],a=H.get(parseInt(i));a!==void 0&&(a.children.forEach(function(r,i){if(t.has(r.ID)){let a=t.get(r.ID);if(a.curves.x!==void 0||a.curves.y!==void 0||a.curves.z!==void 0){if(n[i]===void 0){let t=H.get(r.ID).parents.filter(function(e){return e.relationship!==void 0});if(t.length===0)return;let a=t[0].ID;if(a!==void 0){let t=V.Objects.Model[a.toString()];if(t===void 0){console.warn(`THREE.FBXLoader: Encountered a unused curve.`,r);return}let o={modelName:t.attrName?P.sanitizeNodeName(t.attrName):``,ID:t.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};U.traverse(function(e){e.ID===t.id&&(o.transform=e.matrix,e.userData.transformData&&(o.eulerOrder=e.userData.transformData.eulerOrder,e.userData.transformData.rotation&&(o.initialRotation=e.userData.transformData.rotation)))}),o.transform||=new e,`PreRotation`in t&&(o.preRotation=t.PreRotation.value),`PostRotation`in t&&(o.postRotation=t.PostRotation.value),n[i]=o}}n[i]&&(n[i][a.attr]=a)}else if(a.curves.morph!==void 0){if(n[i]===void 0){let e=H.get(r.ID).parents.filter(function(e){return e.relationship!==void 0});if(e.length===0)return;let t=e[0].ID,a=H.get(t).parents[0].ID,o=H.get(a).parents[0].ID,s=H.get(o).parents[0].ID,c=V.Objects.Model[s];n[i]={modelName:c.attrName?P.sanitizeNodeName(c.attrName):``,morphName:V.Objects.Deformer[t].attrName}}n[i][a.attr]=a}}}),r.set(parseInt(i),n))}return r}parseAnimStacks(e){let t=V.Objects.AnimationStack,n={};for(let r in t){let i=H.get(parseInt(r)).children;i.length>1&&console.warn(`THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.`);let a=e.get(i[0].ID);n[r]={name:t[r].attrName,layer:a}}return n}addClip(e){let t=[],n=this;return e.layer.forEach(function(e){t=t.concat(n.generateTracks(e))}),new j(e.name,-1,t)}generateTracks(e){let n=[],r=new t,i=new t;if(e.transform&&e.transform.decompose(r,new L,i),r=r.toArray(),i=i.toArray(),e.T!==void 0&&Object.keys(e.T.curves).length>0){let t=this.generateVectorTrack(e.modelName,e.T.curves,r,`position`);t!==void 0&&n.push(t)}if(e.R!==void 0&&Object.keys(e.R.curves).length>0){let t=this.generateRotationTrack(e.modelName,e.R.curves,e.preRotation,e.postRotation,e.eulerOrder,e.initialRotation);t!==void 0&&n.push(t)}if(e.S!==void 0&&Object.keys(e.S.curves).length>0){let t=this.generateVectorTrack(e.modelName,e.S.curves,i,`scale`);t!==void 0&&n.push(t)}if(e.DeformPercent!==void 0){let t=this.generateMorphTrack(e);t!==void 0&&n.push(t)}return n}generateVectorTrack(e,t,n,r){let i=this.getTimesForAllAxes(t),a=this.getKeyframeTrackValues(i,t,n);return new c(e+`.`+r,i,a)}generateRotationTrack(e,t,n,r,i,a){let o,s;if(t.x!==void 0||t.y!==void 0||t.z!==void 0){let e=this.getTimesForAllAxes(t);if(e.length>0){let n=a||[0,0,0],r=this.synchronizeCurve(t.x,e,n[0]),c=this.synchronizeCurve(t.y,e,n[1]),l=this.synchronizeCurve(t.z,e,n[2]),u=this.interpolateRotations(r,c,l,i);o=u[0],s=u[1]}}let c=Z(0);n!==void 0&&(n=n.map(v.degToRad),n.push(c),n=new g().fromArray(n),n=new L().setFromEuler(n)),r!==void 0&&(r=r.map(v.degToRad),r.push(c),r=new g().fromArray(r),r=new L().setFromEuler(r).invert());let l=new L,u=new g,d=[];if(!(!s||!o)){for(let e=0;e<s.length;e+=3)u.set(s[e],s[e+1],s[e+2],i),l.setFromEuler(u),n!==void 0&&l.premultiply(n),r!==void 0&&l.multiply(r),e>2&&new L().fromArray(d,(e-3)/3*4).dot(l)<0&&l.set(-l.x,-l.y,-l.z,-l.w),l.toArray(d,e/3*4);return new b(e+`.quaternion`,o,d)}}generateMorphTrack(e){let t=e.DeformPercent.curves.morph,n=t.values.map(function(e){return e/100}),r=U.getObjectByName(e.modelName).morphTargetDictionary[e.morphName];return new te(e.modelName+`.morphTargetInfluences[`+r+`]`,t.times,n)}getTimesForAllAxes(e){let t=[];if(e.x!==void 0&&(t=t.concat(e.x.times)),e.y!==void 0&&(t=t.concat(e.y.times)),e.z!==void 0&&(t=t.concat(e.z.times)),t=t.sort(function(e,t){return e-t}),t.length>1){let e=1,n=t[0];for(let r=1;r<t.length;r++){let i=t[r];i!==n&&(t[e]=i,n=i,e++)}t=t.slice(0,e)}return t}getKeyframeTrackValues(e,t,n){let r=n,i=[],a=-1,o=-1,s=-1;return e.forEach(function(e){if(t.x&&(a=t.x.times.indexOf(e)),t.y&&(o=t.y.times.indexOf(e)),t.z&&(s=t.z.times.indexOf(e)),a!==-1){let e=t.x.values[a];i.push(e),r[0]=e}else i.push(r[0]);if(o!==-1){let e=t.y.values[o];i.push(e),r[1]=e}else i.push(r[1]);if(s!==-1){let e=t.z.values[s];i.push(e),r[2]=e}else i.push(r[2])}),i}synchronizeCurve(e,t,n){if(e===void 0)return{times:t,values:t.map(()=>n)};if(e.times.length===t.length)return e;let r=[];for(let i=0;i<t.length;i++)r.push(this.sampleCurveValue(e,t[i],n));return{times:t,values:r}}sampleCurveValue(e,t,n){let r=e.times,i=e.values;if(t<=r[0])return i[0];if(t>=r[r.length-1])return i[i.length-1];for(let e=0;e<r.length-1;e++)if(t>=r[e]&&t<=r[e+1]){if(r[e]===t)return i[e];let n=(t-r[e])/(r[e+1]-r[e]);return i[e]*(1-n)+i[e+1]*n}return n}interpolateRotations(e,t,n,r){let i=[],a=[];i.push(e.times[0]),a.push(v.degToRad(e.values[0])),a.push(v.degToRad(t.values[0])),a.push(v.degToRad(n.values[0]));for(let o=1;o<e.values.length;o++){let s=[e.values[o-1],t.values[o-1],n.values[o-1]];if(isNaN(s[0])||isNaN(s[1])||isNaN(s[2]))continue;let c=s.map(v.degToRad),l=[e.values[o],t.values[o],n.values[o]];if(isNaN(l[0])||isNaN(l[1])||isNaN(l[2]))continue;let u=l.map(v.degToRad),d=[l[0]-s[0],l[1]-s[1],l[2]-s[2]],f=[Math.abs(d[0]),Math.abs(d[1]),Math.abs(d[2])];if(f[0]>=180||f[1]>=180||f[2]>=180){let t=Math.max(...f)/180,n=new g(...c,r),s=new g(...u,r),l=new L().setFromEuler(n),d=new L().setFromEuler(s);l.dot(d)<0&&d.set(-d.x,-d.y,-d.z,-d.w);let p=e.times[o-1],m=e.times[o]-p,h=new L,_=new g;for(let e=0;e<1;e+=1/t)h.copy(l.clone().slerp(d.clone(),e)),i.push(p+e*m),_.setFromQuaternion(h,r),a.push(_.x),a.push(_.y),a.push(_.z)}else i.push(e.times[o]),a.push(v.degToRad(e.values[o])),a.push(v.degToRad(t.values[o])),a.push(v.degToRad(n.values[o]))}return[i,a]}},ge=class{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(e){this.nodeStack.push(e),this.currentIndent+=1}popStack(){this.nodeStack.pop(),--this.currentIndent}setCurrentProp(e,t){this.currentProp=e,this.currentPropName=t}parse(e){this.currentIndent=0,this.allNodes=new G,this.nodeStack=[],this.currentProp=[],this.currentPropName=``;let t=this,n=e.split(/[\r\n]+/);return n.forEach(function(e,r){let i=e.match(/^[\s\t]*;/),a=e.match(/^[\s\t]*$/);if(i||a)return;let o=e.match(`^\\t{`+t.currentIndent+`}(\\w+):(.*){`,``),s=e.match(`^\\t{`+t.currentIndent+`}(\\w+):[\\s\\t\\r\\n](.*)`),c=e.match(`^\\t{`+(t.currentIndent-1)+`}}`);o?t.parseNodeBegin(e,o):s?t.parseNodeProperty(e,s,n[++r]):c?t.popStack():e.match(/^[^\s\t}]/)&&t.parseNodePropertyContinued(e)}),this.allNodes}parseNodeBegin(e,t){let n=t[1].trim().replace(/^"/,``).replace(/"$/,``),r=t[2].split(`,`).map(function(e){return e.trim().replace(/^"/,``).replace(/"$/,``)}),i={name:n},a=this.parseNodeAttr(r),o=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(n,i):n in o?(n===`PoseNode`?o.PoseNode.push(i):o[n].id!==void 0&&(o[n]={},o[n][o[n].id]=o[n]),a.id!==``&&(o[n][a.id]=i)):typeof a.id==`number`?(o[n]={},o[n][a.id]=i):n!==`Properties70`&&(n===`PoseNode`?o[n]=[i]:o[n]=i),typeof a.id==`number`&&(i.id=a.id),a.name!==``&&(i.attrName=a.name),a.type!==``&&(i.attrType=a.type),this.pushStack(i)}parseNodeAttr(e){let t=e[0];e[0]!==``&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));let n=``,r=``;return e.length>1&&(n=e[1].replace(/^(\w+)::/,``),r=e[2]),{id:t,name:n,type:r}}parseNodeProperty(e,t,n){let r=t[1].replace(/^"/,``).replace(/"$/,``).trim(),i=t[2].replace(/^"/,``).replace(/"$/,``).trim();r===`Content`&&i===`,`&&(i=n.replace(/"/g,``).replace(/,$/,``).trim());let a=this.getCurrentNode();if(a.name===`Properties70`){this.parseNodeSpecialProperty(e,r,i);return}if(r===`C`){let e=i.split(`,`).slice(1),t=parseInt(e[0]),n=parseInt(e[1]),o=i.split(`,`).slice(3);o=o.map(function(e){return e.trim().replace(/^"/,``)}),r=`connections`,i=[t,n],Se(i,o),a[r]===void 0&&(a[r]=[])}r===`Node`&&(a.id=i),r in a&&Array.isArray(a[r])?a[r].push(i):r===`a`?a.a=i:a[r]=i,this.setCurrentProp(a,r),r===`a`&&i.slice(-1)!==`,`&&(a.a=Q(i))}parseNodePropertyContinued(e){let t=this.getCurrentNode();t.a+=e,e.slice(-1)!==`,`&&(t.a=Q(t.a))}parseNodeSpecialProperty(e,t,n){let r=n.split(`",`).map(function(e){return e.trim().replace(/^\"/,``).replace(/\s/,`_`)}),i=r[0],a=r[1],o=r[2],s=r[3],c=r[4];switch(a){case`int`:case`enum`:case`bool`:case`ULongLong`:case`double`:case`Number`:case`FieldOfView`:c=parseFloat(c);break;case`Color`:case`ColorRGB`:case`Vector3D`:case`Lcl_Translation`:case`Lcl_Rotation`:case`Lcl_Scaling`:c=Q(c);break}this.getPrevNode()[i]={type:a,type2:o,flag:s,value:c},this.setCurrentProp(this.getPrevNode(),i)}},_e=class{parse(e){let t=new W(e);t.skip(23);let n=t.getUint32();if(n<6400)throw Error(`THREE.FBXLoader: FBX version not supported, FileVersion: `+n);let r=new G;for(;!this.endOfContent(t);){let e=this.parseNode(t,n);e!==null&&r.add(e.name,e)}return r}endOfContent(e){return e.size()%16==0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){let n={},r=t>=7500?e.getUint64():e.getUint32(),i=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();let a=e.getUint8(),o=e.getString(a);if(r===0)return null;let s=[];for(let t=0;t<i;t++)s.push(this.parseProperty(e));let c=s.length>0?s[0]:``,l=s.length>1?s[1]:``,u=s.length>2?s[2]:``;for(n.singleProperty=i===1&&e.getOffset()===r;r>e.getOffset();){let r=this.parseNode(e,t);r!==null&&this.parseSubNode(o,n,r)}return n.propertyList=s,typeof c==`number`&&(n.id=c),l!==``&&(n.attrName=l),u!==``&&(n.attrType=u),o!==``&&(n.name=o),n}parseSubNode(e,t,n){if(n.singleProperty===!0){let e=n.propertyList[0];Array.isArray(e)?(t[n.name]=n,n.a=e):t[n.name]=e}else if(e===`Connections`&&n.name===`C`){let e=[];n.propertyList.forEach(function(t,n){n!==0&&e.push(t)}),t.connections===void 0&&(t.connections=[]),t.connections.push(e)}else if(n.name===`Properties70`)Object.keys(n).forEach(function(e){t[e]=n[e]});else if(e===`Properties70`&&n.name===`P`){let e=n.propertyList[0],r=n.propertyList[1],i=n.propertyList[2],a=n.propertyList[3],o;e.indexOf(`Lcl `)===0&&(e=e.replace(`Lcl `,`Lcl_`)),r.indexOf(`Lcl `)===0&&(r=r.replace(`Lcl `,`Lcl_`)),o=r===`Color`||r===`ColorRGB`||r===`Vector`||r===`Vector3D`||r.indexOf(`Lcl_`)===0?[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:n.propertyList[4],t[e]={type:r,type2:i,flag:a,value:o}}else t[n.name]===void 0?typeof n.id==`number`?(t[n.name]={},t[n.name][n.id]=n):t[n.name]=n:n.name===`PoseNode`?(Array.isArray(t[n.name])||(t[n.name]=[t[n.name]]),t[n.name].push(n)):t[n.name][n.id]===void 0&&(t[n.name][n.id]=n)}parseProperty(e){let t=e.getString(1),n;switch(t){case`C`:return e.getBoolean();case`D`:return e.getFloat64();case`F`:return e.getFloat32();case`I`:return e.getInt32();case`L`:return e.getInt64();case`R`:return n=e.getUint32(),e.getArrayBuffer(n);case`S`:return n=e.getUint32(),e.getString(n);case`Y`:return e.getInt16();case`b`:case`c`:case`d`:case`f`:case`i`:case`l`:let r=e.getUint32(),i=e.getUint32(),a=e.getUint32();if(i===0)switch(t){case`b`:case`c`:return e.getBooleanArray(r);case`d`:return e.getFloat64Array(r);case`f`:return e.getFloat32Array(r);case`i`:return e.getInt32Array(r);case`l`:return e.getInt64Array(r)}let o=new W(ae(new Uint8Array(e.getArrayBuffer(a))).buffer);switch(t){case`b`:case`c`:return o.getBooleanArray(r);case`d`:return o.getFloat64Array(r);case`f`:return o.getFloat32Array(r);case`i`:return o.getInt32Array(r);case`l`:return o.getInt64Array(r)}break;default:throw Error(`THREE.FBXLoader: Unknown property type `+t)}}},W=class{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=t===void 0?!0:t,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return(this.getUint8()&1)==1}getBooleanArray(e){let t=[];for(let n=0;n<e;n++)t.push(this.getBoolean());return t}getUint8(){let e=this.dv.getUint8(this.offset);return this.offset+=1,e}getInt16(){let e=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,e}getInt32(){let e=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,e}getInt32Array(e){let t=[];for(let n=0;n<e;n++)t.push(this.getInt32());return t}getUint32(){let e=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,e}getInt64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),t&2147483648?(t=~t&4294967295,e=~e&4294967295,e===4294967295&&(t=t+1&4294967295),e=e+1&4294967295,-(t*4294967296+e)):t*4294967296+e}getInt64Array(e){let t=[];for(let n=0;n<e;n++)t.push(this.getInt64());return t}getUint64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),t*4294967296+e}getFloat32(){let e=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e}getFloat32Array(e){let t=[];for(let n=0;n<e;n++)t.push(this.getFloat32());return t}getFloat64(){let e=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e}getFloat64Array(e){let t=[];for(let n=0;n<e;n++)t.push(this.getFloat64());return t}getArrayBuffer(e){let t=this.dv.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t}getString(e){let t=this.offset,n=new Uint8Array(this.dv.buffer,t,e);this.skip(e);let r=n.indexOf(0);return r>=0&&(n=new Uint8Array(this.dv.buffer,t,r)),this._textDecoder.decode(n)}},G=class{add(e,t){this[e]=t}};function ve(e){return e.byteLength>=21&&$(e,0,21)===`Kaydara FBX Binary \0`}function ye(e){let t=[`K`,`a`,`y`,`d`,`a`,`r`,`a`,`\\`,`F`,`B`,`X`,`\\`,`B`,`i`,`n`,`a`,`r`,`y`,`\\`,`\\`],n=0;function r(t){let r=e[t-1];return e=e.slice(n+t),n++,r}for(let e=0;e<t.length;++e)if(r(1)===t[e])return!1;return!0}function K(e){let t=e.match(/FBXVersion: (\d+)/);if(t)return parseInt(t[1]);throw Error(`THREE.FBXLoader: Cannot find the version number for the file given.`)}function be(e){return e/46186158e3}var xe=[];function q(e,t,n,r){let i;switch(r.mappingType){case`ByPolygonVertex`:i=e;break;case`ByPolygon`:i=t;break;case`ByVertice`:i=n;break;case`AllSame`:i=r.indices[0];break;default:console.warn(`THREE.FBXLoader: unknown attribute mapping type `+r.mappingType)}r.referenceType===`IndexToDirect`&&(i=r.indices[i]);let a=i*r.dataSize,o=a+r.dataSize;return Ce(xe,r.buffer,a,o)}var J=new g,Y=new t;function X(n){let r=new e,i=new e,a=new e,o=new e,s=new e,c=new e,l=new e,u=new e,d=new e,f=new e,p=new e,m=new e,h=n.inheritType?n.inheritType:0;n.translation&&r.setPosition(Y.fromArray(n.translation));let g=Z(0);if(n.preRotation){let e=n.preRotation.map(v.degToRad);e.push(g),i.makeRotationFromEuler(J.fromArray(e))}if(n.rotation){let e=n.rotation.map(v.degToRad);e.push(n.eulerOrder||g),a.makeRotationFromEuler(J.fromArray(e))}if(n.postRotation){let e=n.postRotation.map(v.degToRad);e.push(g),o.makeRotationFromEuler(J.fromArray(e)),o.invert()}n.scale&&s.scale(Y.fromArray(n.scale)),n.scalingOffset&&l.setPosition(Y.fromArray(n.scalingOffset)),n.scalingPivot&&c.setPosition(Y.fromArray(n.scalingPivot)),n.rotationOffset&&u.setPosition(Y.fromArray(n.rotationOffset)),n.rotationPivot&&d.setPosition(Y.fromArray(n.rotationPivot)),n.parentMatrixWorld&&(p.copy(n.parentMatrix),f.copy(n.parentMatrixWorld));let _=i.clone().multiply(a).multiply(o),y=new e;y.extractRotation(f);let b=new e;b.copyPosition(f);let x=b.clone().invert().multiply(f),S=y.clone().invert().multiply(x),C=s,w=new e;if(h===0)w.copy(y).multiply(_).multiply(S).multiply(C);else if(h===1)w.copy(y).multiply(S).multiply(_).multiply(C);else{let n=new e().scale(new t().setFromMatrixScale(p)).clone().invert(),r=S.clone().multiply(n);w.copy(y).multiply(_).multiply(r).multiply(C)}let T=d.clone().invert(),E=c.clone().invert(),D=r.clone().multiply(u).multiply(d).multiply(i).multiply(a).multiply(o).multiply(T).multiply(l).multiply(c).multiply(s).multiply(E),O=new e().copyPosition(D),k=f.clone().multiply(O);return m.copyPosition(k),D=m.clone().multiply(w),D.premultiply(f.invert()),D}function Z(e){e||=0;let t=[`ZYX`,`YZX`,`XZY`,`ZXY`,`YXZ`,`XYZ`];return e===6?(console.warn(`THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect.`),t[0]):t[e]}function Q(e){return e.split(`,`).map(function(e){return parseFloat(e)})}function $(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=e.byteLength),new TextDecoder().decode(new Uint8Array(e,t,n))}function Se(e,t){for(let n=0,r=e.length,i=t.length;n<i;n++,r++)e[r]=t[n]}function Ce(e,t,n,r){for(let i=n,a=0;i<r;i++,a++)e[a]=t[i];return e}export{fe as FBXLoader};
1
+ import{$ as e,Bt as t,C as n,Ct as r,Dt as i,E as a,Et as o,Ft as s,Ht as c,K as l,Mt as u,Ot as d,Pt as f,Q as p,R as m,Rt as h,S as g,Vt as _,Z as v,_ as y,bt as b,dt as x,et as S,f as C,ht as w,m as T,n as E,nt as D,o as O,p as k,pt as A,q as ee,r as j,rt as M,u as N,ut as te,vt as P,w as F,wt as I,x as ne,yt as L,z as re,zt as ie}from"./three.module-BFsVh7r1.js";import{n as ae}from"./fflate.module-BIQmJeC9.js";function R(e,t,n){let r=n.length-e-1;if(t>=n[r])return r-1;if(t<=n[e])return e;let i=e,a=r,o=Math.floor((i+a)/2);for(;t<n[o]||t>=n[o+1];)t<n[o]?a=o:i=o,o=Math.floor((i+a)/2);return o}function oe(e,t,n,r){let i=[],a=[],o=[];i[0]=1;for(let s=1;s<=n;++s){a[s]=t-r[e+1-s],o[s]=r[e+s]-t;let n=0;for(let e=0;e<s;++e){let t=o[e+1],r=a[s-e],c=i[e]/(t+r);i[e]=n+t*c,n=r*c}i[s]=n}return i}function se(e,t,n,r){let i=R(e,r,t),a=oe(i,r,e,t),o=new _(0,0,0,0);for(let t=0;t<=e;++t){let r=n[i-e+t],s=a[t],c=r.w*s;o.x+=r.x*c,o.y+=r.y*c,o.z+=r.z*c,o.w+=r.w*s}return o}function ce(e,t,n,r,i){let a=[];for(let e=0;e<=n;++e)a[e]=0;let o=[];for(let e=0;e<=r;++e)o[e]=a.slice(0);let s=[];for(let e=0;e<=n;++e)s[e]=a.slice(0);s[0][0]=1;let c=a.slice(0),l=a.slice(0);for(let r=1;r<=n;++r){c[r]=t-i[e+1-r],l[r]=i[e+r]-t;let n=0;for(let e=0;e<r;++e){let t=l[e+1],i=c[r-e];s[r][e]=t+i;let a=s[e][r-1]/s[r][e];s[e][r]=n+t*a,n=i*a}s[r][r]=n}for(let e=0;e<=n;++e)o[0][e]=s[e][n];for(let e=0;e<=n;++e){let t=0,i=1,c=[];for(let e=0;e<=n;++e)c[e]=a.slice(0);c[0][0]=1;for(let a=1;a<=r;++a){let r=0,l=e-a,u=n-a;e>=a&&(c[i][0]=c[t][0]/s[u+1][l],r=c[i][0]*s[l][u]);let d=l>=-1?1:-l,f=e-1<=u?a-1:n-e;for(let e=d;e<=f;++e)c[i][e]=(c[t][e]-c[t][e-1])/s[u+1][l+e],r+=c[i][e]*s[l+e][u];e<=u&&(c[i][a]=-c[t][a-1]/s[u+1][e],r+=c[i][a]*s[e][u]),o[a][e]=r;let p=t;t=i,i=p}}let u=n;for(let e=1;e<=r;++e){for(let t=0;t<=n;++t)o[e][t]*=u;u*=n-e}return o}function le(e,t,n,r,i){let a=i<e?i:e,o=[],s=R(e,r,t),c=ce(s,r,e,a,t),l=[];for(let e=0;e<n.length;++e){let t=n[e].clone(),r=t.w;t.x*=r,t.y*=r,t.z*=r,l[e]=t}for(let t=0;t<=a;++t){let n=l[s-e].clone().multiplyScalar(c[t][0]);for(let r=1;r<=e;++r)n.add(l[s-e+r].clone().multiplyScalar(c[t][r]));o[t]=n}for(let e=a+1;e<=i+1;++e)o[e]=new _(0,0,0);return o}function ue(e,t){let n=1;for(let t=2;t<=e;++t)n*=t;let r=1;for(let e=2;e<=t;++e)r*=e;for(let n=2;n<=e-t;++n)r*=n;return n/r}function de(e){let n=e.length,r=[],i=[];for(let a=0;a<n;++a){let n=e[a];r[a]=new t(n.x,n.y,n.z),i[a]=n.w}let a=[];for(let e=0;e<n;++e){let t=r[e].clone();for(let n=1;n<=e;++n)t.sub(a[e-n].clone().multiplyScalar(ue(e,n)*i[n]));a[e]=t.divideScalar(i[0])}return a}function z(e,t,n,r,i){return de(le(e,t,n,r,i))}var B=class extends y{constructor(e,t,n,r,i){super();let a=t?t.length-1:0,o=n?n.length:0;this.degree=e,this.knots=t,this.controlPoints=[],this.startKnot=r||0,this.endKnot=i||a;for(let e=0;e<o;++e){let t=n[e];this.controlPoints[e]=new _(t.x,t.y,t.z,t.w)}}getPoint(e,n=new t){let r=n,i=this.knots[this.startKnot]+e*(this.knots[this.endKnot]-this.knots[this.startKnot]),a=se(this.degree,this.knots,this.controlPoints,i);return a.w!==1&&a.divideScalar(a.w),r.set(a.x,a.y,a.z)}getTangent(e,n=new t){let r=n,i=this.knots[0]+e*(this.knots[this.knots.length-1]-this.knots[0]),a=z(this.degree,this.knots,this.controlPoints,i,1);return r.copy(a[1]).normalize(),r}toJSON(){let e=super.toJSON();return e.degree=this.degree,e.knots=[...this.knots],e.controlPoints=this.controlPoints.map(e=>e.toArray()),e.startKnot=this.startKnot,e.endKnot=this.endKnot,e}fromJSON(e){return super.fromJSON(e),this.degree=e.degree,this.knots=[...e.knots],this.controlPoints=e.controlPoints.map(e=>new _(e[0],e[1],e[2],e[3])),this.startKnot=e.startKnot,this.endKnot=e.endKnot,this}},V,H,U,fe=class extends l{constructor(e){super(e)}load(e,t,r,i){let a=this,o=a.path===``?ee.extractUrlBase(e):a.path,s=new n(this.manager);s.setPath(a.path),s.setResponseType(`arraybuffer`),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(ve(e))V=new _e().parse(e);else{let t=$(e);if(!ye(t))throw Error(`THREE.FBXLoader: Unknown format.`);if(K(t)<7e3)throw Error(`THREE.FBXLoader: FBX version not supported, FileVersion: `+K(t));V=new ge().parse(t)}return new pe(new s(this.manager).setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin),this.manager).parse(V)}},pe=class{constructor(e,t){this.textureLoader=e,this.manager=t}parse(){H=this.parseConnections();let e=this.parseImages(),t=this.parseTextures(e),n=this.parseMaterials(t),r=this.parseDeformers(),i=new me().parse(r);return this.parseScene(r,i,n),U}parseConnections(){let e=new Map;return`Connections`in V&&V.Connections.connections.forEach(function(t){let n=t[0],r=t[1],i=t[2];e.has(n)||e.set(n,{parents:[],children:[]});let a={ID:r,relationship:i};e.get(n).parents.push(a),e.has(r)||e.set(r,{parents:[],children:[]});let o={ID:n,relationship:i};e.get(r).children.push(o)}),e}parseImages(){let e={},t={};if(`Video`in V.Objects){let n=V.Objects.Video;for(let r in n){let i=n[r],a=parseInt(r);if(e[a]=i.RelativeFilename||i.Filename,`Content`in i){let e=i.Content instanceof ArrayBuffer&&i.Content.byteLength>0,a=typeof i.Content==`string`&&i.Content!==``;if(e||a){let e=this.parseImage(n[r]);t[i.RelativeFilename||i.Filename]=e}}}}for(let n in e){let r=e[n];t[r]===void 0?e[n]=e[n].split(`\\`).pop():e[n]=t[r]}return e}parseImage(e){let t=e.Content,n=e.RelativeFilename||e.Filename,r=n.slice(n.lastIndexOf(`.`)+1).toLowerCase(),i;switch(r){case`bmp`:i=`image/bmp`;break;case`jpg`:case`jpeg`:i=`image/jpeg`;break;case`png`:i=`image/png`;break;case`tif`:i=`image/tiff`;break;case`tga`:this.manager.getHandler(`.tga`)===null&&console.warn(`FBXLoader: TGA loader not found, skipping `,n),i=`image/tga`;break;case`webp`:i=`image/webp`;break;default:console.warn(`FBXLoader: Image type "`+r+`" is not supported.`);return}if(typeof t==`string`)return`data:`+i+`;base64,`+t;{let e=new Uint8Array(t);return window.URL.createObjectURL(new Blob([e],{type:i}))}}parseTextures(e){let t=new Map;if(`Texture`in V.Objects){let n=V.Objects.Texture;for(let r in n){let i=this.parseTexture(n[r],e);t.set(parseInt(r),i)}}return t}parseTexture(e,t){let n=this.loadTexture(e,t);n.ID=e.id,n.name=e.attrName;let i=e.WrapModeU,a=e.WrapModeV,o=i===void 0?0:i.value,s=a===void 0?0:a.value;if(n.wrapS=o===0?r:C,n.wrapT=s===0?r:C,`Scaling`in e){let t=e.Scaling.value;n.repeat.x=t[0],n.repeat.y=t[1]}if(`Translation`in e){let t=e.Translation.value;n.offset.x=t[0],n.offset.y=t[1]}return n}loadTexture(e,t){let n=e.FileName.split(`.`).pop().toLowerCase(),r=this.manager.getHandler(`.${n}`);r===null&&(r=this.textureLoader);let i=r.path;i||r.setPath(this.textureLoader.path);let a=H.get(e.id).children,o;if(a!==void 0&&a.length>0&&t[a[0].ID]!==void 0&&(o=t[a[0].ID],(o.indexOf(`blob:`)===0||o.indexOf(`data:`)===0)&&r.setPath(void 0)),o===void 0)return console.warn(`FBXLoader: Undefined filename, creating placeholder texture.`),new f;let s=r.load(o);return r.setPath(i),s}parseMaterials(e){let t=new Map;if(`Material`in V.Objects){let n=V.Objects.Material;for(let r in n){let i=this.parseMaterial(n[r],e);i!==null&&t.set(parseInt(r),i)}}return t}parseMaterial(e,t){let n=e.id,r=e.attrName,i=e.ShadingModel;if(typeof i==`object`&&(i=i.value),!H.has(n))return null;let a=this.parseParameters(e,t,n),o;switch(i.toLowerCase()){case`phong`:o=new M;break;case`lambert`:o=new D;break;default:console.warn(`THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.`,i),o=new M;break}return o.setValues(a),o.name=r,o}parseParameters(e,t,n){let r={};e.BumpFactor&&(r.bumpScale=e.BumpFactor.value),e.Diffuse?r.color=T.colorSpaceToWorking(new k().fromArray(e.Diffuse.value),I):e.DiffuseColor&&(e.DiffuseColor.type===`Color`||e.DiffuseColor.type===`ColorRGB`)&&(r.color=T.colorSpaceToWorking(new k().fromArray(e.DiffuseColor.value),I)),e.DisplacementFactor&&(r.displacementScale=e.DisplacementFactor.value),e.Emissive?r.emissive=T.colorSpaceToWorking(new k().fromArray(e.Emissive.value),I):e.EmissiveColor&&(e.EmissiveColor.type===`Color`||e.EmissiveColor.type===`ColorRGB`)&&(r.emissive=T.colorSpaceToWorking(new k().fromArray(e.EmissiveColor.value),I)),e.EmissiveFactor&&(r.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),r.opacity=1-(e.TransparencyFactor?parseFloat(e.TransparencyFactor.value):0),(r.opacity===1||r.opacity===0)&&(r.opacity=e.Opacity?parseFloat(e.Opacity.value):null,r.opacity===null&&(r.opacity=1)),r.opacity<1&&(r.transparent=!0),e.ReflectionFactor&&(r.reflectivity=e.ReflectionFactor.value),e.Shininess&&(r.shininess=e.Shininess.value),e.Specular?r.specular=T.colorSpaceToWorking(new k().fromArray(e.Specular.value),I):e.SpecularColor&&e.SpecularColor.type===`Color`&&(r.specular=T.colorSpaceToWorking(new k().fromArray(e.SpecularColor.value),I));let i=this;return H.get(n).children.forEach(function(e){let n=e.relationship;switch(n){case`Bump`:r.bumpMap=i.getTexture(t,e.ID);break;case`Maya|TEX_ao_map`:r.aoMap=i.getTexture(t,e.ID);break;case`DiffuseColor`:case`Maya|TEX_color_map`:r.map=i.getTexture(t,e.ID),r.map!==void 0&&(r.map.colorSpace=I);break;case`DisplacementColor`:r.displacementMap=i.getTexture(t,e.ID);break;case`EmissiveColor`:r.emissiveMap=i.getTexture(t,e.ID),r.emissiveMap!==void 0&&(r.emissiveMap.colorSpace=I);break;case`NormalMap`:case`Maya|TEX_normal_map`:r.normalMap=i.getTexture(t,e.ID);break;case`ReflectionColor`:r.envMap=i.getTexture(t,e.ID),r.envMap!==void 0&&(r.envMap.mapping=303,r.envMap.colorSpace=I);break;case`SpecularColor`:r.specularMap=i.getTexture(t,e.ID),r.specularMap!==void 0&&(r.specularMap.colorSpace=I);break;case`TransparentColor`:case`TransparencyFactor`:r.alphaMap=i.getTexture(t,e.ID),r.transparent=!0;break;default:console.warn(`THREE.FBXLoader: %s map is not supported in three.js, skipping texture.`,n);break}}),r}getTexture(e,t){return`LayeredTexture`in V.Objects&&t in V.Objects.LayeredTexture&&(console.warn(`THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer.`),t=H.get(t).children[0].ID),e.get(t)}parseDeformers(){let e={},t={};if(`Deformer`in V.Objects){let n=V.Objects.Deformer;for(let r in n){let i=n[r],a=H.get(parseInt(r));if(i.attrType===`Skin`){let t=this.parseSkeleton(a,n);t.ID=r,a.parents.length>1&&console.warn(`THREE.FBXLoader: skeleton attached to more than one geometry is not supported.`),t.geometryID=a.parents[0].ID,e[r]=t}else if(i.attrType===`BlendShape`){let e={id:r};e.rawTargets=this.parseMorphTargets(a,n),e.id=r,a.parents.length>1&&console.warn(`THREE.FBXLoader: morph target attached to more than one geometry is not supported.`),t[r]=e}}}return{skeletons:e,morphTargets:t}}parseSkeleton(t,n){let r=[];return t.children.forEach(function(t){let i=n[t.ID];if(i.attrType!==`Cluster`)return;let a={ID:t.ID,indices:[],weights:[],transformLink:new e().fromArray(i.TransformLink.a)};`Indexes`in i&&(a.indices=i.Indexes.a,a.weights=i.Weights.a),r.push(a)}),{rawBones:r,bones:[]}}parseMorphTargets(e,t){let n=[];for(let r=0;r<e.children.length;r++){let i=e.children[r],a=t[i.ID],o={name:a.attrName,initialWeight:a.DeformPercent,id:a.id,fullWeights:a.FullWeights.a};if(a.attrType!==`BlendShapeChannel`)return;o.geoID=H.get(parseInt(i.ID)).children.filter(function(e){return e.relationship===void 0})[0].ID,n.push(o)}return n}parseScene(t,n,r){U=new a;let i=this.parseModels(t.skeletons,n,r),o=V.Objects.Model,s=this;i.forEach(function(e){let t=o[e.ID];s.setLookAtProperties(e,t),H.get(e.ID).parents.forEach(function(t){let n=i.get(t.ID);n!==void 0&&n.add(e)}),e.parent===null&&U.add(e)}),this.addGlobalSceneSettings(),U.traverse(function(e){if(e.userData.transformData){e.parent&&(e.userData.transformData.parentMatrix=e.parent.matrix,e.userData.transformData.parentMatrixWorld=e.parent.matrixWorld);let t=X(e.userData.transformData);e.applyMatrix4(t),e.updateWorldMatrix()}});let c=this.parsePoseNodes(),l=new Set;for(let e in t.skeletons)t.skeletons[e].rawBones.forEach(function(n,r){let i=t.skeletons[e].bones[r];i&&l.add(i.ID)});let u=new e;U.traverse(function(e){if(e.isBone&&e.ID!==void 0&&!l.has(e.ID)){let t=c[e.ID];t!==void 0&&(e.parent?(u.copy(e.parent.matrixWorld).invert(),u.multiply(t)):u.copy(t),u.decompose(e.position,e.quaternion,e.scale),e.updateMatrix(),e.matrixWorld.copy(t))}}),this.bindSkeleton(t.skeletons,n,i);let d=new he().parse();U.children.length===1&&U.children[0].isGroup&&(U.children[0].animations=d,U=U.children[0]),U.animations=d,`GlobalSettings`in V&&`UpAxis`in V.GlobalSettings&&V.GlobalSettings.UpAxis.value===2&&(console.warn(`THREE.FBXLoader: 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.`),U.rotation.set(-Math.PI/2,0,0))}parseModels(e,t,n){let r=new Map,i=V.Objects.Model;for(let o in i){let s=parseInt(o),c=i[o],l=H.get(s),u=this.buildSkeleton(l,e,s,c.attrName);if(!u){switch(c.attrType){case`Camera`:u=this.createCamera(l);break;case`Light`:u=this.createLight(l);break;case`Mesh`:u=this.createMesh(l,t,n);break;case`NurbsCurve`:u=this.createCurve(l,t);break;case`LimbNode`:case`Root`:u=new O;break;default:u=new a;break}u.name=c.attrName?P.sanitizeNodeName(c.attrName):``,u.userData.originalName=c.attrName,u.ID=s}this.getTransformData(u,c),r.set(s,u)}return r}buildSkeleton(e,t,n,r){let i=null;return e.parents.forEach(function(e){for(let a in t){let o=t[a];o.rawBones.forEach(function(t,a){if(t.ID===e.ID){let e=i;i=new O,i.matrixWorld.copy(t.transformLink),i.name=r?P.sanitizeNodeName(r):``,i.userData.originalName=r,i.ID=n,o.bones[a]=i,e!==null&&i.add(e)}})}}),i}createCamera(e){let t,n;if(e.children.forEach(function(e){let t=V.Objects.NodeAttribute[e.ID];t!==void 0&&(n=t)}),n===void 0)t=new x;else{let e=0;n.CameraProjectionType!==void 0&&n.CameraProjectionType.value===1&&(e=1);let r=1;n.NearPlane!==void 0&&(r=n.NearPlane.value/1e3);let i=1e3;n.FarPlane!==void 0&&(i=n.FarPlane.value/1e3);let a=window.innerWidth,o=window.innerHeight;n.AspectWidth!==void 0&&n.AspectHeight!==void 0&&(a=n.AspectWidth.value,o=n.AspectHeight.value);let s=a/o,c=45;n.FieldOfView!==void 0&&(c=n.FieldOfView.value);let l=n.FocalLength?n.FocalLength.value:null;switch(e){case 0:t=new A(c,s,r,i),l!==null&&t.setFocalLength(l);break;case 1:console.warn(`THREE.FBXLoader: Orthographic cameras not supported yet.`),t=new x;break;default:console.warn(`THREE.FBXLoader: Unknown camera type `+e+`.`),t=new x;break}}return t}createLight(e){let t,n;if(e.children.forEach(function(e){let t=V.Objects.NodeAttribute[e.ID];t!==void 0&&(n=t)}),n===void 0)t=new x;else{let e;e=n.LightType===void 0?0:n.LightType.value;let r=16777215;n.Color!==void 0&&(r=T.colorSpaceToWorking(new k().fromArray(n.Color.value),I));let i=n.Intensity===void 0?1:n.Intensity.value/100;n.CastLightOnObject!==void 0&&n.CastLightOnObject.value===0&&(i=0);let a=0;switch(n.FarAttenuationEnd!==void 0&&(a=n.EnableFarAttenuation!==void 0&&n.EnableFarAttenuation.value===0?0:n.FarAttenuationEnd.value),e){case 0:t=new w(r,i,a,1);break;case 1:t=new ne(r,i);break;case 2:let e=Math.PI/3,o=0;n.OuterAngle===void 0?n.InnerAngle!==void 0&&(e=v.degToRad(n.InnerAngle.value)):(e=v.degToRad(n.OuterAngle.value),n.InnerAngle!==void 0&&(o=1-n.InnerAngle.value/n.OuterAngle.value,o=Math.max(0,o))),t=new u(r,i,a,e,o,1);break;default:console.warn(`THREE.FBXLoader: Unknown light type `+n.LightType.value+`, defaulting to a PointLight.`),t=new w(r,i);break}n.CastShadows!==void 0&&n.CastShadows.value===1&&(t.castShadow=!0)}return t}createMesh(e,t,n){let r,i=null,a=null,o=[];if(e.children.forEach(function(e){t.has(e.ID)&&(i=t.get(e.ID)),n.has(e.ID)&&o.push(n.get(e.ID))}),o.length>1?a=o:o.length>0?a=o[0]:(a=new M({name:l.DEFAULT_MATERIAL_NAME,color:13421772}),o.push(a)),`color`in i.attributes&&o.forEach(function(e){e.vertexColors=!0}),i.groups.length>0){let e=!1;for(let t=0,n=i.groups.length;t<n;t++){let n=i.groups[t];(n.materialIndex<0||n.materialIndex>=o.length)&&(n.materialIndex=o.length,e=!0)}if(e){let e=new M;o.push(e)}}return i.FBX_Deformer?(r=new d(i,a),r.normalizeSkinWeights()):r=new S(i,a),r}createCurve(e,t){return new m(e.children.reduce(function(e,n){return t.has(n.ID)&&(e=t.get(n.ID)),e},null),new re({name:l.DEFAULT_MATERIAL_NAME,color:3342591,linewidth:1}))}getTransformData(e,t){let n={};`InheritType`in t&&(n.inheritType=parseInt(t.InheritType.value)),`RotationOrder`in t?n.eulerOrder=Z(t.RotationOrder.value):n.eulerOrder=Z(0),`Lcl_Translation`in t&&(n.translation=t.Lcl_Translation.value),`PreRotation`in t&&(n.preRotation=t.PreRotation.value),`Lcl_Rotation`in t&&(n.rotation=t.Lcl_Rotation.value),`PostRotation`in t&&(n.postRotation=t.PostRotation.value),`Lcl_Scaling`in t&&(n.scale=t.Lcl_Scaling.value),`ScalingOffset`in t&&(n.scalingOffset=t.ScalingOffset.value),`ScalingPivot`in t&&(n.scalingPivot=t.ScalingPivot.value),`RotationOffset`in t&&(n.rotationOffset=t.RotationOffset.value),`RotationPivot`in t&&(n.rotationPivot=t.RotationPivot.value),e.userData.transformData=n}setLookAtProperties(e,n){`LookAtProperty`in n&&H.get(e.ID).children.forEach(function(n){if(n.relationship===`LookAtProperty`){let r=V.Objects.Model[n.ID];if(`Lcl_Translation`in r){let n=r.Lcl_Translation.value;e.target===void 0?e.lookAt(new t().fromArray(n)):(e.target.position.fromArray(n),U.add(e.target))}}})}bindSkeleton(t,n,r){for(let a in t){let o=t[a],s=[];for(let t=0,n=o.bones.length;t<n;t++){let n=new e;o.bones[t]&&o.rawBones[t]&&n.copy(o.rawBones[t].transformLink).invert(),s.push(n)}H.get(parseInt(o.ID)).parents.forEach(function(e){if(n.has(e.ID)){let t=e.ID;H.get(t).parents.forEach(function(e){if(r.has(e.ID)){let t=r.get(e.ID);t.updateMatrixWorld(!0),t.bind(new i(o.bones,s),t.matrixWorld)}})}})}}parsePoseNodes(){let t={};if(`Pose`in V.Objects){let n=V.Objects.Pose;for(let r in n)if(n[r].attrType===`BindPose`&&n[r].NbPoseNodes>0){let i=n[r].PoseNode;Array.isArray(i)?i.forEach(function(n){t[n.Node]=new e().fromArray(n.Matrix.a)}):t[i.Node]=new e().fromArray(i.Matrix.a)}}return t}addGlobalSceneSettings(){if(`GlobalSettings`in V){if(`AmbientColor`in V.GlobalSettings){let e=V.GlobalSettings.AmbientColor.value,t=e[0],n=e[1],r=e[2];if(t!==0||n!==0||r!==0){let e=new k().setRGB(t,n,r,I);U.add(new E(e,1))}}`UnitScaleFactor`in V.GlobalSettings&&(U.userData.unitScaleFactor=V.GlobalSettings.UnitScaleFactor.value)}}},me=class{constructor(){this.negativeMaterialIndices=!1}parse(e){let t=new Map;if(`Geometry`in V.Objects){let n=V.Objects.Geometry;for(let r in n){let i=H.get(parseInt(r)),a=this.parseGeometry(i,n[r],e);t.set(parseInt(r),a)}}return this.negativeMaterialIndices===!0&&console.warn(`THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected.`),t}parseGeometry(e,t,n){switch(t.attrType){case`Mesh`:return this.parseMeshGeometry(e,t,n);case`NurbsCurve`:return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,n){let r=n.skeletons,i=[],a=e.parents.map(function(e){return V.Objects.Model[e.ID]});if(a.length===0)return;let o=e.children.reduce(function(e,t){return r[t.ID]!==void 0&&(e=r[t.ID]),e},null);e.children.forEach(function(e){n.morphTargets[e.ID]!==void 0&&i.push(n.morphTargets[e.ID])});let s=a[0],c={};`RotationOrder`in s&&(c.eulerOrder=Z(s.RotationOrder.value)),`InheritType`in s&&(c.inheritType=parseInt(s.InheritType.value)),`GeometricTranslation`in s&&(c.translation=s.GeometricTranslation.value),`GeometricRotation`in s&&(c.rotation=s.GeometricRotation.value),`GeometricScaling`in s&&(c.scale=s.GeometricScaling.value);let l=X(c);return this.genGeometry(t,o,i,l)}genGeometry(e,t,n,r){let i=new N;e.attrName&&(i.name=e.attrName);let a=this.parseGeoNode(e,t),o=this.genBuffers(a),s=new F(o.vertex,3);if(s.applyMatrix4(r),i.setAttribute(`position`,s),o.colors.length>0&&i.setAttribute(`color`,new F(o.colors,3)),t&&(i.setAttribute(`skinIndex`,new h(o.weightsIndices,4)),i.setAttribute(`skinWeight`,new F(o.vertexWeights,4)),i.FBX_Deformer=t),o.normal.length>0){let e=new p().getNormalMatrix(r),t=new F(o.normal,3);t.applyNormalMatrix(e),i.setAttribute(`normal`,t)}if(o.uvs.forEach(function(e,t){let n=t===0?`uv`:`uv${t}`;i.setAttribute(n,new F(o.uvs[t],2))}),a.material&&a.material.mappingType!==`AllSame`){let e=o.materialIndex[0],t=0;if(o.materialIndex.forEach(function(n,r){n!==e&&(i.addGroup(t,r-t,e),e=n,t=r)}),i.groups.length>0){let t=i.groups[i.groups.length-1],n=t.start+t.count;n!==o.materialIndex.length&&i.addGroup(n,o.materialIndex.length-n,e)}i.groups.length===0&&i.addGroup(0,o.materialIndex.length,o.materialIndex[0])}return this.addMorphTargets(i,e,n,r),i}parseGeoNode(e,t){let n={};if(n.vertexPositions=e.Vertices===void 0?[]:e.Vertices.a,n.vertexIndices=e.PolygonVertexIndex===void 0?[]:e.PolygonVertexIndex.a,e.LayerElementColor&&e.LayerElementColor[0].Colors&&(n.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(n.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(n.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){n.uv=[];let t=0;for(;e.LayerElementUV[t];)e.LayerElementUV[t].UV&&n.uv.push(this.parseUVs(e.LayerElementUV[t])),t++}return n.weightTable={},t!==null&&(n.skeleton=t,t.rawBones.forEach(function(e,t){e.indices.forEach(function(r,i){n.weightTable[r]===void 0&&(n.weightTable[r]=[]),n.weightTable[r].push({id:t,weight:e.weights[i]})})})),n}genBuffers(e){let t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},n=0,r=0,i=!1,a=[],o=[],s=[],c=[],l=[],u=[],d=this;return e.vertexIndices.forEach(function(f,p){let m,h=!1;f<0&&(f^=-1,h=!0);let g=[],_=[];if(a.push(f*3,f*3+1,f*3+2),e.color){let t=q(p,n,f,e.color);s.push(t[0],t[1],t[2])}if(e.skeleton){if(e.weightTable[f]!==void 0&&e.weightTable[f].forEach(function(e){_.push(e.weight),g.push(e.id)}),_.length>4){i||=(console.warn(`THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights.`),!0);let e=[0,0,0,0],t=[0,0,0,0];_.forEach(function(n,r){let i=n,a=g[r];t.forEach(function(t,n,r){if(i>t){r[n]=i,i=t;let o=e[n];e[n]=a,a=o}})}),g=e,_=t}for(;_.length<4;)_.push(0),g.push(0);for(let e=0;e<4;++e)l.push(_[e]),u.push(g[e])}if(e.normal){let t=q(p,n,f,e.normal);o.push(t[0],t[1],t[2])}e.material&&e.material.mappingType!==`AllSame`&&(m=q(p,n,f,e.material)[0],m<0&&(d.negativeMaterialIndices=!0,m=0)),e.uv&&e.uv.forEach(function(e,t){let r=q(p,n,f,e);c[t]===void 0&&(c[t]=[]),c[t].push(r[0]),c[t].push(r[1])}),r++,h&&(d.genFace(t,e,a,m,o,s,c,l,u,r),n++,r=0,a=[],o=[],s=[],c=[],l=[],u=[])}),t}getNormalNewell(e){let n=new t(0,0,0);for(let t=0;t<e.length;t++){let r=e[t],i=e[(t+1)%e.length];n.x+=(r.y-i.y)*(r.z+i.z),n.y+=(r.z-i.z)*(r.x+i.x),n.z+=(r.x-i.x)*(r.y+i.y)}return n.normalize(),n}getNormalTangentAndBitangent(e){let n=this.getNormalNewell(e),r=(Math.abs(n.z)>.5?new t(0,1,0):new t(0,0,1)).cross(n).normalize();return{normal:n,tangent:r,bitangent:n.clone().cross(r).normalize()}}flattenVertex(e,t,n){return new ie(e.dot(t),e.dot(n))}genFace(e,n,r,i,a,s,c,l,u,d){let f;if(d>3){let e=[],i=n.baseVertexPositions||n.vertexPositions;for(let n=0;n<r.length;n+=3)e.push(new t(i[r[n]],i[r[n+1]],i[r[n+2]]));let{tangent:a,bitangent:s}=this.getNormalTangentAndBitangent(e),c=[];for(let t of e)c.push(this.flattenVertex(t,a,s));f=o.triangulateShape(c,[])}else f=[[0,1,2]];for(let[t,o,d]of f)e.vertex.push(n.vertexPositions[r[t*3]]),e.vertex.push(n.vertexPositions[r[t*3+1]]),e.vertex.push(n.vertexPositions[r[t*3+2]]),e.vertex.push(n.vertexPositions[r[o*3]]),e.vertex.push(n.vertexPositions[r[o*3+1]]),e.vertex.push(n.vertexPositions[r[o*3+2]]),e.vertex.push(n.vertexPositions[r[d*3]]),e.vertex.push(n.vertexPositions[r[d*3+1]]),e.vertex.push(n.vertexPositions[r[d*3+2]]),n.skeleton&&(e.vertexWeights.push(l[t*4]),e.vertexWeights.push(l[t*4+1]),e.vertexWeights.push(l[t*4+2]),e.vertexWeights.push(l[t*4+3]),e.vertexWeights.push(l[o*4]),e.vertexWeights.push(l[o*4+1]),e.vertexWeights.push(l[o*4+2]),e.vertexWeights.push(l[o*4+3]),e.vertexWeights.push(l[d*4]),e.vertexWeights.push(l[d*4+1]),e.vertexWeights.push(l[d*4+2]),e.vertexWeights.push(l[d*4+3]),e.weightsIndices.push(u[t*4]),e.weightsIndices.push(u[t*4+1]),e.weightsIndices.push(u[t*4+2]),e.weightsIndices.push(u[t*4+3]),e.weightsIndices.push(u[o*4]),e.weightsIndices.push(u[o*4+1]),e.weightsIndices.push(u[o*4+2]),e.weightsIndices.push(u[o*4+3]),e.weightsIndices.push(u[d*4]),e.weightsIndices.push(u[d*4+1]),e.weightsIndices.push(u[d*4+2]),e.weightsIndices.push(u[d*4+3])),n.color&&(e.colors.push(s[t*3]),e.colors.push(s[t*3+1]),e.colors.push(s[t*3+2]),e.colors.push(s[o*3]),e.colors.push(s[o*3+1]),e.colors.push(s[o*3+2]),e.colors.push(s[d*3]),e.colors.push(s[d*3+1]),e.colors.push(s[d*3+2])),n.material&&n.material.mappingType!==`AllSame`&&(e.materialIndex.push(i),e.materialIndex.push(i),e.materialIndex.push(i)),n.normal&&(e.normal.push(a[t*3]),e.normal.push(a[t*3+1]),e.normal.push(a[t*3+2]),e.normal.push(a[o*3]),e.normal.push(a[o*3+1]),e.normal.push(a[o*3+2]),e.normal.push(a[d*3]),e.normal.push(a[d*3+1]),e.normal.push(a[d*3+2])),n.uv&&n.uv.forEach(function(n,r){e.uvs[r]===void 0&&(e.uvs[r]=[]),e.uvs[r].push(c[r][t*2]),e.uvs[r].push(c[r][t*2+1]),e.uvs[r].push(c[r][o*2]),e.uvs[r].push(c[r][o*2+1]),e.uvs[r].push(c[r][d*2]),e.uvs[r].push(c[r][d*2+1])})}addMorphTargets(e,t,n,r){if(n.length===0)return;e.morphTargetsRelative=!0,e.morphAttributes.position=[];let i=r.clone().setPosition(0,0,0),a=this;n.forEach(function(n){n.rawTargets.forEach(function(n){let r=V.Objects.Geometry[n.geoID];r!==void 0&&a.genMorphGeometry(e,t,r,i,n.name)})})}genMorphGeometry(e,t,n,r,i){let a=t.Vertices===void 0?[]:t.Vertices.a,o=t.PolygonVertexIndex===void 0?[]:t.PolygonVertexIndex.a,s=n.Vertices===void 0?[]:n.Vertices.a,c=n.Indexes===void 0?[]:n.Indexes.a,l=e.attributes.position.count*3,u=new Float32Array(l);for(let e=0;e<c.length;e++){let t=c[e]*3;u[t]=s[e*3],u[t+1]=s[e*3+1],u[t+2]=s[e*3+2]}let d={vertexIndices:o,vertexPositions:u,baseVertexPositions:a},f=new F(this.genBuffers(d).vertex,3);f.name=i||n.attrName,f.applyMatrix4(r),e.morphAttributes.position.push(f)}parseNormals(e){let t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.Normals.a,i=[];return n===`IndexToDirect`&&(`NormalIndex`in e?i=e.NormalIndex.a:`NormalsIndex`in e&&(i=e.NormalsIndex.a)),{dataSize:3,buffer:r,indices:i,mappingType:t,referenceType:n}}parseUVs(e){let t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.UV.a,i=[];return n===`IndexToDirect`&&(i=e.UVIndex.a),{dataSize:2,buffer:r,indices:i,mappingType:t,referenceType:n}}parseVertexColors(e){let t=e.MappingInformationType,n=e.ReferenceInformationType,r=e.Colors.a,i=[];n===`IndexToDirect`&&(i=e.ColorIndex.a);for(let e=0,t=new k;e<r.length;e+=4)t.fromArray(r,e),T.colorSpaceToWorking(t,I),t.toArray(r,e);return{dataSize:4,buffer:r,indices:i,mappingType:t,referenceType:n}}parseMaterialIndices(e){let t=e.MappingInformationType,n=e.ReferenceInformationType;if(t===`NoMappingInformation`)return{dataSize:1,buffer:[0],indices:[0],mappingType:`AllSame`,referenceType:n};let r=e.Materials.a,i=[];for(let e=0;e<r.length;++e)i.push(e);return{dataSize:1,buffer:r,indices:i,mappingType:t,referenceType:n}}parseNurbsGeometry(e){let t=parseInt(e.Order);if(isNaN(t))return console.error(`THREE.FBXLoader: Invalid Order %s given for geometry ID: %s`,e.Order,e.id),new N;let n=t-1,r=e.KnotVector.a,i=[],a=e.Points.a;for(let e=0,t=a.length;e<t;e+=4)i.push(new _().fromArray(a,e));let o,s;if(e.Form===`Closed`)i.push(i[0]);else if(e.Form===`Periodic`){o=n,s=r.length-1-o;for(let e=0;e<n;++e)i.push(i[e])}let c=new B(n,r,i,o,s).getPoints(i.length*12);return new N().setFromPoints(c)}},he=class{parse(){let e=[],t=this.parseClips();if(t!==void 0)for(let n in t){let r=t[n],i=this.addClip(r);e.push(i)}return e}parseClips(){if(V.Objects.AnimationCurve===void 0)return;let e=this.parseAnimationCurveNodes();this.parseAnimationCurves(e);let t=this.parseAnimationLayers(e);return this.parseAnimStacks(t)}parseAnimationCurveNodes(){let e=V.Objects.AnimationCurveNode,t=new Map;for(let n in e){let r=e[n];if(r.attrName.match(/S|R|T|DeformPercent/)!==null){let e={id:r.id,attr:r.attrName,curves:{}};t.set(e.id,e)}}return t}parseAnimationCurves(e){let t=V.Objects.AnimationCurve;for(let n in t){let r={id:t[n].id,times:t[n].KeyTime.a.map(be),values:t[n].KeyValueFloat.a},i=H.get(r.id);if(i!==void 0){let t=i.parents[0].ID,n=i.parents[0].relationship;n.match(/X/)?e.get(t).curves.x=r:n.match(/Y/)?e.get(t).curves.y=r:n.match(/Z/)?e.get(t).curves.z=r:n.match(/DeformPercent/)&&e.has(t)&&(e.get(t).curves.morph=r)}}}parseAnimationLayers(t){let n=V.Objects.AnimationLayer,r=new Map;for(let i in n){let n=[],a=H.get(parseInt(i));a!==void 0&&(a.children.forEach(function(r,i){if(t.has(r.ID)){let a=t.get(r.ID);if(a.curves.x!==void 0||a.curves.y!==void 0||a.curves.z!==void 0){if(n[i]===void 0){let t=H.get(r.ID).parents.filter(function(e){return e.relationship!==void 0});if(t.length===0)return;let a=t[0].ID;if(a!==void 0){let t=V.Objects.Model[a.toString()];if(t===void 0){console.warn(`THREE.FBXLoader: Encountered a unused curve.`,r);return}let o={modelName:t.attrName?P.sanitizeNodeName(t.attrName):``,ID:t.id,initialPosition:[0,0,0],initialRotation:[0,0,0],initialScale:[1,1,1]};U.traverse(function(e){e.ID===t.id&&(o.transform=e.matrix,e.userData.transformData&&(o.eulerOrder=e.userData.transformData.eulerOrder,e.userData.transformData.rotation&&(o.initialRotation=e.userData.transformData.rotation)))}),o.transform||=new e,`PreRotation`in t&&(o.preRotation=t.PreRotation.value),`PostRotation`in t&&(o.postRotation=t.PostRotation.value),n[i]=o}}n[i]&&(n[i][a.attr]=a)}else if(a.curves.morph!==void 0){if(n[i]===void 0){let e=H.get(r.ID).parents.filter(function(e){return e.relationship!==void 0});if(e.length===0)return;let t=e[0].ID,a=H.get(t).parents[0].ID,o=H.get(a).parents[0].ID,s=H.get(o).parents[0].ID,c=V.Objects.Model[s];n[i]={modelName:c.attrName?P.sanitizeNodeName(c.attrName):``,morphName:V.Objects.Deformer[t].attrName}}n[i][a.attr]=a}}}),r.set(parseInt(i),n))}return r}parseAnimStacks(e){let t=V.Objects.AnimationStack,n={};for(let r in t){let i=H.get(parseInt(r)).children;i.length>1&&console.warn(`THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.`);let a=e.get(i[0].ID);n[r]={name:t[r].attrName,layer:a}}return n}addClip(e){let t=[],n=this;return e.layer.forEach(function(e){t=t.concat(n.generateTracks(e))}),new j(e.name,-1,t)}generateTracks(e){let n=[],r=new t,i=new t;if(e.transform&&e.transform.decompose(r,new L,i),r=r.toArray(),i=i.toArray(),e.T!==void 0&&Object.keys(e.T.curves).length>0){let t=this.generateVectorTrack(e.modelName,e.T.curves,r,`position`);t!==void 0&&n.push(t)}if(e.R!==void 0&&Object.keys(e.R.curves).length>0){let t=this.generateRotationTrack(e.modelName,e.R.curves,e.preRotation,e.postRotation,e.eulerOrder,e.initialRotation);t!==void 0&&n.push(t)}if(e.S!==void 0&&Object.keys(e.S.curves).length>0){let t=this.generateVectorTrack(e.modelName,e.S.curves,i,`scale`);t!==void 0&&n.push(t)}if(e.DeformPercent!==void 0){let t=this.generateMorphTrack(e);t!==void 0&&n.push(t)}return n}generateVectorTrack(e,t,n,r){let i=this.getTimesForAllAxes(t),a=this.getKeyframeTrackValues(i,t,n);return new c(e+`.`+r,i,a)}generateRotationTrack(e,t,n,r,i,a){let o,s;if(t.x!==void 0||t.y!==void 0||t.z!==void 0){let e=this.getTimesForAllAxes(t);if(e.length>0){let n=a||[0,0,0],r=this.synchronizeCurve(t.x,e,n[0]),c=this.synchronizeCurve(t.y,e,n[1]),l=this.synchronizeCurve(t.z,e,n[2]),u=this.interpolateRotations(r,c,l,i);o=u[0],s=u[1]}}let c=Z(0);n!==void 0&&(n=n.map(v.degToRad),n.push(c),n=new g().fromArray(n),n=new L().setFromEuler(n)),r!==void 0&&(r=r.map(v.degToRad),r.push(c),r=new g().fromArray(r),r=new L().setFromEuler(r).invert());let l=new L,u=new g,d=[];if(!(!s||!o)){for(let e=0;e<s.length;e+=3)u.set(s[e],s[e+1],s[e+2],i),l.setFromEuler(u),n!==void 0&&l.premultiply(n),r!==void 0&&l.multiply(r),e>2&&new L().fromArray(d,(e-3)/3*4).dot(l)<0&&l.set(-l.x,-l.y,-l.z,-l.w),l.toArray(d,e/3*4);return new b(e+`.quaternion`,o,d)}}generateMorphTrack(e){let t=e.DeformPercent.curves.morph,n=t.values.map(function(e){return e/100}),r=U.getObjectByName(e.modelName).morphTargetDictionary[e.morphName];return new te(e.modelName+`.morphTargetInfluences[`+r+`]`,t.times,n)}getTimesForAllAxes(e){let t=[];if(e.x!==void 0&&(t=t.concat(e.x.times)),e.y!==void 0&&(t=t.concat(e.y.times)),e.z!==void 0&&(t=t.concat(e.z.times)),t=t.sort(function(e,t){return e-t}),t.length>1){let e=1,n=t[0];for(let r=1;r<t.length;r++){let i=t[r];i!==n&&(t[e]=i,n=i,e++)}t=t.slice(0,e)}return t}getKeyframeTrackValues(e,t,n){let r=n,i=[],a=-1,o=-1,s=-1;return e.forEach(function(e){if(t.x&&(a=t.x.times.indexOf(e)),t.y&&(o=t.y.times.indexOf(e)),t.z&&(s=t.z.times.indexOf(e)),a!==-1){let e=t.x.values[a];i.push(e),r[0]=e}else i.push(r[0]);if(o!==-1){let e=t.y.values[o];i.push(e),r[1]=e}else i.push(r[1]);if(s!==-1){let e=t.z.values[s];i.push(e),r[2]=e}else i.push(r[2])}),i}synchronizeCurve(e,t,n){if(e===void 0)return{times:t,values:t.map(()=>n)};if(e.times.length===t.length)return e;let r=[];for(let i=0;i<t.length;i++)r.push(this.sampleCurveValue(e,t[i],n));return{times:t,values:r}}sampleCurveValue(e,t,n){let r=e.times,i=e.values;if(t<=r[0])return i[0];if(t>=r[r.length-1])return i[i.length-1];for(let e=0;e<r.length-1;e++)if(t>=r[e]&&t<=r[e+1]){if(r[e]===t)return i[e];let n=(t-r[e])/(r[e+1]-r[e]);return i[e]*(1-n)+i[e+1]*n}return n}interpolateRotations(e,t,n,r){let i=[],a=[];i.push(e.times[0]),a.push(v.degToRad(e.values[0])),a.push(v.degToRad(t.values[0])),a.push(v.degToRad(n.values[0]));for(let o=1;o<e.values.length;o++){let s=[e.values[o-1],t.values[o-1],n.values[o-1]];if(isNaN(s[0])||isNaN(s[1])||isNaN(s[2]))continue;let c=s.map(v.degToRad),l=[e.values[o],t.values[o],n.values[o]];if(isNaN(l[0])||isNaN(l[1])||isNaN(l[2]))continue;let u=l.map(v.degToRad),d=[l[0]-s[0],l[1]-s[1],l[2]-s[2]],f=[Math.abs(d[0]),Math.abs(d[1]),Math.abs(d[2])];if(f[0]>=180||f[1]>=180||f[2]>=180){let t=Math.max(...f)/180,n=new g(...c,r),s=new g(...u,r),l=new L().setFromEuler(n),d=new L().setFromEuler(s);l.dot(d)<0&&d.set(-d.x,-d.y,-d.z,-d.w);let p=e.times[o-1],m=e.times[o]-p,h=new L,_=new g;for(let e=0;e<1;e+=1/t)h.copy(l.clone().slerp(d.clone(),e)),i.push(p+e*m),_.setFromQuaternion(h,r),a.push(_.x),a.push(_.y),a.push(_.z)}else i.push(e.times[o]),a.push(v.degToRad(e.values[o])),a.push(v.degToRad(t.values[o])),a.push(v.degToRad(n.values[o]))}return[i,a]}},ge=class{getPrevNode(){return this.nodeStack[this.currentIndent-2]}getCurrentNode(){return this.nodeStack[this.currentIndent-1]}getCurrentProp(){return this.currentProp}pushStack(e){this.nodeStack.push(e),this.currentIndent+=1}popStack(){this.nodeStack.pop(),--this.currentIndent}setCurrentProp(e,t){this.currentProp=e,this.currentPropName=t}parse(e){this.currentIndent=0,this.allNodes=new G,this.nodeStack=[],this.currentProp=[],this.currentPropName=``;let t=this,n=e.split(/[\r\n]+/);return n.forEach(function(e,r){let i=e.match(/^[\s\t]*;/),a=e.match(/^[\s\t]*$/);if(i||a)return;let o=e.match(`^\\t{`+t.currentIndent+`}(\\w+):(.*){`,``),s=e.match(`^\\t{`+t.currentIndent+`}(\\w+):[\\s\\t\\r\\n](.*)`),c=e.match(`^\\t{`+(t.currentIndent-1)+`}}`);o?t.parseNodeBegin(e,o):s?t.parseNodeProperty(e,s,n[++r]):c?t.popStack():e.match(/^[^\s\t}]/)&&t.parseNodePropertyContinued(e)}),this.allNodes}parseNodeBegin(e,t){let n=t[1].trim().replace(/^"/,``).replace(/"$/,``),r=t[2].split(`,`).map(function(e){return e.trim().replace(/^"/,``).replace(/"$/,``)}),i={name:n},a=this.parseNodeAttr(r),o=this.getCurrentNode();this.currentIndent===0?this.allNodes.add(n,i):n in o?(n===`PoseNode`?o.PoseNode.push(i):o[n].id!==void 0&&(o[n]={},o[n][o[n].id]=o[n]),a.id!==``&&(o[n][a.id]=i)):typeof a.id==`number`?(o[n]={},o[n][a.id]=i):n!==`Properties70`&&(n===`PoseNode`?o[n]=[i]:o[n]=i),typeof a.id==`number`&&(i.id=a.id),a.name!==``&&(i.attrName=a.name),a.type!==``&&(i.attrType=a.type),this.pushStack(i)}parseNodeAttr(e){let t=e[0];e[0]!==``&&(t=parseInt(e[0]),isNaN(t)&&(t=e[0]));let n=``,r=``;return e.length>1&&(n=e[1].replace(/^(\w+)::/,``),r=e[2]),{id:t,name:n,type:r}}parseNodeProperty(e,t,n){let r=t[1].replace(/^"/,``).replace(/"$/,``).trim(),i=t[2].replace(/^"/,``).replace(/"$/,``).trim();r===`Content`&&i===`,`&&(i=n.replace(/"/g,``).replace(/,$/,``).trim());let a=this.getCurrentNode();if(a.name===`Properties70`){this.parseNodeSpecialProperty(e,r,i);return}if(r===`C`){let e=i.split(`,`).slice(1),t=parseInt(e[0]),n=parseInt(e[1]),o=i.split(`,`).slice(3);o=o.map(function(e){return e.trim().replace(/^"/,``)}),r=`connections`,i=[t,n],Se(i,o),a[r]===void 0&&(a[r]=[])}r===`Node`&&(a.id=i),r in a&&Array.isArray(a[r])?a[r].push(i):r===`a`?a.a=i:a[r]=i,this.setCurrentProp(a,r),r===`a`&&i.slice(-1)!==`,`&&(a.a=Q(i))}parseNodePropertyContinued(e){let t=this.getCurrentNode();t.a+=e,e.slice(-1)!==`,`&&(t.a=Q(t.a))}parseNodeSpecialProperty(e,t,n){let r=n.split(`",`).map(function(e){return e.trim().replace(/^\"/,``).replace(/\s/,`_`)}),i=r[0],a=r[1],o=r[2],s=r[3],c=r[4];switch(a){case`int`:case`enum`:case`bool`:case`ULongLong`:case`double`:case`Number`:case`FieldOfView`:c=parseFloat(c);break;case`Color`:case`ColorRGB`:case`Vector3D`:case`Lcl_Translation`:case`Lcl_Rotation`:case`Lcl_Scaling`:c=Q(c);break}this.getPrevNode()[i]={type:a,type2:o,flag:s,value:c},this.setCurrentProp(this.getPrevNode(),i)}},_e=class{parse(e){let t=new W(e);t.skip(23);let n=t.getUint32();if(n<6400)throw Error(`THREE.FBXLoader: FBX version not supported, FileVersion: `+n);let r=new G;for(;!this.endOfContent(t);){let e=this.parseNode(t,n);e!==null&&r.add(e.name,e)}return r}endOfContent(e){return e.size()%16==0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){let n={},r=t>=7500?e.getUint64():e.getUint32(),i=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();let a=e.getUint8(),o=e.getString(a);if(r===0)return null;let s=[];for(let t=0;t<i;t++)s.push(this.parseProperty(e));let c=s.length>0?s[0]:``,l=s.length>1?s[1]:``,u=s.length>2?s[2]:``;for(n.singleProperty=i===1&&e.getOffset()===r;r>e.getOffset();){let r=this.parseNode(e,t);r!==null&&this.parseSubNode(o,n,r)}return n.propertyList=s,typeof c==`number`&&(n.id=c),l!==``&&(n.attrName=l),u!==``&&(n.attrType=u),o!==``&&(n.name=o),n}parseSubNode(e,t,n){if(n.singleProperty===!0){let e=n.propertyList[0];Array.isArray(e)?(t[n.name]=n,n.a=e):t[n.name]=e}else if(e===`Connections`&&n.name===`C`){let e=[];n.propertyList.forEach(function(t,n){n!==0&&e.push(t)}),t.connections===void 0&&(t.connections=[]),t.connections.push(e)}else if(n.name===`Properties70`)Object.keys(n).forEach(function(e){t[e]=n[e]});else if(e===`Properties70`&&n.name===`P`){let e=n.propertyList[0],r=n.propertyList[1],i=n.propertyList[2],a=n.propertyList[3],o;e.indexOf(`Lcl `)===0&&(e=e.replace(`Lcl `,`Lcl_`)),r.indexOf(`Lcl `)===0&&(r=r.replace(`Lcl `,`Lcl_`)),o=r===`Color`||r===`ColorRGB`||r===`Vector`||r===`Vector3D`||r.indexOf(`Lcl_`)===0?[n.propertyList[4],n.propertyList[5],n.propertyList[6]]:n.propertyList[4],t[e]={type:r,type2:i,flag:a,value:o}}else t[n.name]===void 0?typeof n.id==`number`?(t[n.name]={},t[n.name][n.id]=n):t[n.name]=n:n.name===`PoseNode`?(Array.isArray(t[n.name])||(t[n.name]=[t[n.name]]),t[n.name].push(n)):t[n.name][n.id]===void 0&&(t[n.name][n.id]=n)}parseProperty(e){let t=e.getString(1),n;switch(t){case`C`:return e.getBoolean();case`D`:return e.getFloat64();case`F`:return e.getFloat32();case`I`:return e.getInt32();case`L`:return e.getInt64();case`R`:return n=e.getUint32(),e.getArrayBuffer(n);case`S`:return n=e.getUint32(),e.getString(n);case`Y`:return e.getInt16();case`b`:case`c`:case`d`:case`f`:case`i`:case`l`:let r=e.getUint32(),i=e.getUint32(),a=e.getUint32();if(i===0)switch(t){case`b`:case`c`:return e.getBooleanArray(r);case`d`:return e.getFloat64Array(r);case`f`:return e.getFloat32Array(r);case`i`:return e.getInt32Array(r);case`l`:return e.getInt64Array(r)}let o=new W(ae(new Uint8Array(e.getArrayBuffer(a))).buffer);switch(t){case`b`:case`c`:return o.getBooleanArray(r);case`d`:return o.getFloat64Array(r);case`f`:return o.getFloat32Array(r);case`i`:return o.getInt32Array(r);case`l`:return o.getInt64Array(r)}break;default:throw Error(`THREE.FBXLoader: Unknown property type `+t)}}},W=class{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=t===void 0?!0:t,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return(this.getUint8()&1)==1}getBooleanArray(e){let t=[];for(let n=0;n<e;n++)t.push(this.getBoolean());return t}getUint8(){let e=this.dv.getUint8(this.offset);return this.offset+=1,e}getInt16(){let e=this.dv.getInt16(this.offset,this.littleEndian);return this.offset+=2,e}getInt32(){let e=this.dv.getInt32(this.offset,this.littleEndian);return this.offset+=4,e}getInt32Array(e){let t=[];for(let n=0;n<e;n++)t.push(this.getInt32());return t}getUint32(){let e=this.dv.getUint32(this.offset,this.littleEndian);return this.offset+=4,e}getInt64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),t&2147483648?(t=~t&4294967295,e=~e&4294967295,e===4294967295&&(t=t+1&4294967295),e=e+1&4294967295,-(t*4294967296+e)):t*4294967296+e}getInt64Array(e){let t=[];for(let n=0;n<e;n++)t.push(this.getInt64());return t}getUint64(){let e,t;return this.littleEndian?(e=this.getUint32(),t=this.getUint32()):(t=this.getUint32(),e=this.getUint32()),t*4294967296+e}getFloat32(){let e=this.dv.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e}getFloat32Array(e){let t=[];for(let n=0;n<e;n++)t.push(this.getFloat32());return t}getFloat64(){let e=this.dv.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e}getFloat64Array(e){let t=[];for(let n=0;n<e;n++)t.push(this.getFloat64());return t}getArrayBuffer(e){let t=this.dv.buffer.slice(this.offset,this.offset+e);return this.offset+=e,t}getString(e){let t=this.offset,n=new Uint8Array(this.dv.buffer,t,e);this.skip(e);let r=n.indexOf(0);return r>=0&&(n=new Uint8Array(this.dv.buffer,t,r)),this._textDecoder.decode(n)}},G=class{add(e,t){this[e]=t}};function ve(e){return e.byteLength>=21&&$(e,0,21)===`Kaydara FBX Binary \0`}function ye(e){let t=[`K`,`a`,`y`,`d`,`a`,`r`,`a`,`\\`,`F`,`B`,`X`,`\\`,`B`,`i`,`n`,`a`,`r`,`y`,`\\`,`\\`],n=0;function r(t){let r=e[t-1];return e=e.slice(n+t),n++,r}for(let e=0;e<t.length;++e)if(r(1)===t[e])return!1;return!0}function K(e){let t=e.match(/FBXVersion: (\d+)/);if(t)return parseInt(t[1]);throw Error(`THREE.FBXLoader: Cannot find the version number for the file given.`)}function be(e){return e/46186158e3}var xe=[];function q(e,t,n,r){let i;switch(r.mappingType){case`ByPolygonVertex`:i=e;break;case`ByPolygon`:i=t;break;case`ByVertice`:i=n;break;case`AllSame`:i=r.indices[0];break;default:console.warn(`THREE.FBXLoader: unknown attribute mapping type `+r.mappingType)}r.referenceType===`IndexToDirect`&&(i=r.indices[i]);let a=i*r.dataSize,o=a+r.dataSize;return Ce(xe,r.buffer,a,o)}var J=new g,Y=new t;function X(n){let r=new e,i=new e,a=new e,o=new e,s=new e,c=new e,l=new e,u=new e,d=new e,f=new e,p=new e,m=new e,h=n.inheritType?n.inheritType:0;n.translation&&r.setPosition(Y.fromArray(n.translation));let g=Z(0);if(n.preRotation){let e=n.preRotation.map(v.degToRad);e.push(g),i.makeRotationFromEuler(J.fromArray(e))}if(n.rotation){let e=n.rotation.map(v.degToRad);e.push(n.eulerOrder||g),a.makeRotationFromEuler(J.fromArray(e))}if(n.postRotation){let e=n.postRotation.map(v.degToRad);e.push(g),o.makeRotationFromEuler(J.fromArray(e)),o.invert()}n.scale&&s.scale(Y.fromArray(n.scale)),n.scalingOffset&&l.setPosition(Y.fromArray(n.scalingOffset)),n.scalingPivot&&c.setPosition(Y.fromArray(n.scalingPivot)),n.rotationOffset&&u.setPosition(Y.fromArray(n.rotationOffset)),n.rotationPivot&&d.setPosition(Y.fromArray(n.rotationPivot)),n.parentMatrixWorld&&(p.copy(n.parentMatrix),f.copy(n.parentMatrixWorld));let _=i.clone().multiply(a).multiply(o),y=new e;y.extractRotation(f);let b=new e;b.copyPosition(f);let x=b.clone().invert().multiply(f),S=y.clone().invert().multiply(x),C=s,w=new e;if(h===0)w.copy(y).multiply(_).multiply(S).multiply(C);else if(h===1)w.copy(y).multiply(S).multiply(_).multiply(C);else{let n=new e().scale(new t().setFromMatrixScale(p)).clone().invert(),r=S.clone().multiply(n);w.copy(y).multiply(_).multiply(r).multiply(C)}let T=d.clone().invert(),E=c.clone().invert(),D=r.clone().multiply(u).multiply(d).multiply(i).multiply(a).multiply(o).multiply(T).multiply(l).multiply(c).multiply(s).multiply(E),O=new e().copyPosition(D),k=f.clone().multiply(O);return m.copyPosition(k),D=m.clone().multiply(w),D.premultiply(f.invert()),D}function Z(e){e||=0;let t=[`ZYX`,`YZX`,`XZY`,`ZXY`,`YXZ`,`XYZ`];return e===6?(console.warn(`THREE.FBXLoader: unsupported Euler Order: Spherical XYZ. Animations and rotations may be incorrect.`),t[0]):t[e]}function Q(e){return e.split(`,`).map(function(e){return parseFloat(e)})}function $(e,t,n){return t===void 0&&(t=0),n===void 0&&(n=e.byteLength),new TextDecoder().decode(new Uint8Array(e,t,n))}function Se(e,t){for(let n=0,r=e.length,i=t.length;n<i;n++,r++)e[r]=t[n]}function Ce(e,t,n,r){for(let i=n,a=0;i<r;i++,a++)e[a]=t[i];return e}export{fe as FBXLoader};