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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/LICENSE +160 -0
  2. package/README.md +1 -1
  3. package/package.json +8 -8
  4. package/viewer/assets/{3MFLoader-8o7H9qFn.js → 3MFLoader-Cu6MV1Tf.js} +1 -1
  5. package/viewer/assets/{AMFLoader-D845-fN9.js → AMFLoader-lvPchvXS.js} +1 -1
  6. package/viewer/assets/{ArchiveViewer-DSRTOkgE.js → ArchiveViewer-ChRj3qeU.js} +1 -1
  7. package/viewer/assets/{AudioViewer-C9EoBNW7.js → AudioViewer-DqNniamm.js} +1 -1
  8. package/viewer/assets/CadViewer-BFihXVVK.js +1 -0
  9. package/viewer/assets/CadViewer-DZAS6XFY.css +1 -0
  10. package/viewer/assets/CodeViewer-Cm8fxtvw.js +2 -0
  11. package/viewer/assets/{CodeViewer-HGV-dwr6.css → CodeViewer-KlbtXDJA.css} +1 -1
  12. package/viewer/assets/{ColladaLoader-B-O9yZEn.js → ColladaLoader-9JnWW2qx.js} +1 -1
  13. package/viewer/assets/DrawingViewer-DHdPw80C.css +1 -0
  14. package/viewer/assets/DrawingViewer-Do29ZtAf.js +2 -0
  15. package/viewer/assets/EdaViewer-CKf1YQnh.css +1 -0
  16. package/viewer/assets/EdaViewer-rb6ew4vx.js +8 -0
  17. package/viewer/assets/{EmailViewer-BaPKkcv-.js → EmailViewer-BhW7hwna.js} +3 -3
  18. package/viewer/assets/{EpubViewer-DythX0Nc.js → EpubViewer-DlehYUbF.js} +2 -2
  19. package/viewer/assets/{FBXLoader-COXKyweW.js → FBXLoader-BR2WOnav.js} +1 -1
  20. package/viewer/assets/{GLTFLoader-SxxJ3jR6.js → GLTFLoader-Oe_gNr7z.js} +1 -1
  21. package/viewer/assets/{ImageViewer-BpCBeqmp.js → ImageViewer-y2k0Kgfw.js} +1 -1
  22. package/viewer/assets/{KMZLoader-D2ynO6pl.js → KMZLoader-BT5-fslH.js} +1 -1
  23. package/viewer/assets/{MarkdownViewer-DtFOeZc8.js → MarkdownViewer-dCKraImn.js} +1 -1
  24. package/viewer/assets/{ModelViewer-CUFF5ZFd.js → ModelViewer-5dX0zG_N.js} +2 -2
  25. package/viewer/assets/{OBJLoader-CMVDS2qn.js → OBJLoader-Dr_zHthK.js} +1 -1
  26. package/viewer/assets/{OfdViewer-BGg4yT1N.js → OfdViewer-CySuJJ6I.js} +2 -2
  27. package/viewer/assets/{PCDLoader-D_de5eCn.js → PCDLoader-C8E_Z0Lp.js} +1 -1
  28. package/viewer/assets/{PLYLoader-DuwMVS96.js → PLYLoader-BIvJFvLy.js} +1 -1
  29. package/viewer/assets/{PdfView-CS_IFVnD.css → PdfView-DkzMi2E1.css} +1 -1
  30. package/viewer/assets/{PdfView-AM0U2bj7.js → PdfView-DpBMjzzt.js} +2 -2
  31. package/viewer/assets/{PptxRender-BJqTJw-8.js → PptxRender-7JpDsaMj.js} +1 -1
  32. package/viewer/assets/{STLLoader-la2gvyyP.js → STLLoader-yuZC5ZKB.js} +1 -1
  33. package/viewer/assets/{TDSLoader-x7iwK70T.js → TDSLoader-Bh0I9gg5.js} +1 -1
  34. package/viewer/assets/{USDLoader-Cp_SS3wA.js → USDLoader-YAA4d1kg.js} +1 -1
  35. package/viewer/assets/{UmdViewer-DHF8jwpk.js → UmdViewer-CPzL2g6G.js} +1 -1
  36. package/viewer/assets/{VRMLLoader-CXZLXnWJ.js → VRMLLoader-Bg8OB7AO.js} +1 -1
  37. package/viewer/assets/{VTKLoader-CWbNh6LS.js → VTKLoader-CGwQVf82.js} +1 -1
  38. package/viewer/assets/{XYZLoader-DOXanbK4.js → XYZLoader-BPX1CIj8.js} +1 -1
  39. package/viewer/assets/{XlsxTable-CypKqqh6.js → XlsxTable-CkfquQVR.js} +1 -1
  40. package/viewer/assets/{ar-SA-G6X2FPQ2-CgdCEJk7.js → ar-SA-G6X2FPQ2-CB1lUbnK.js} +1 -1
  41. package/viewer/assets/architecture-7EHR7CIX-E8_ZtUGk.js +1 -0
  42. package/viewer/assets/{architectureDiagram-3BPJPVTR-BzhJuZD8.js → architectureDiagram-3BPJPVTR-D8WSwju1.js} +1 -1
  43. package/viewer/assets/{archive-BIL6RrWA.js → archive-BC_UwA3L.js} +2 -2
  44. package/viewer/assets/{audio-DIKf2J_Z.js → audio-CQKWXgJO.js} +2 -2
  45. package/viewer/assets/{az-AZ-76LH7QW2-Brd6e3FL.js → az-AZ-76LH7QW2-CfKAG8NZ.js} +1 -1
  46. package/viewer/assets/bash-BJm0Os9e.js +1 -0
  47. package/viewer/assets/{bg-BG-XCXSNQG7-BQ2fZxuu.js → bg-BG-XCXSNQG7-Bd9bLO2K.js} +1 -1
  48. package/viewer/assets/{blockDiagram-GPEHLZMM-BlfzAkrY.js → blockDiagram-GPEHLZMM-CTu9iFT_.js} +1 -1
  49. package/viewer/assets/{bn-BD-2XOGV67Q-ChDArhrr.js → bn-BD-2XOGV67Q-1fmnpM-S.js} +1 -1
  50. package/viewer/assets/{c4Diagram-AAUBKEIU-B0xn2mQy.js → c4Diagram-AAUBKEIU-Dj7Wqd9r.js} +1 -1
  51. package/viewer/assets/{ca-ES-6MX7JW3Y-CwgwYfhS.js → ca-ES-6MX7JW3Y-BEVTKe-H.js} +1 -1
  52. package/viewer/assets/cad-BdTYK4zt.js +2 -0
  53. package/viewer/assets/{cfb-BvVcdfEr.js → cfb-w_71-bTW.js} +1 -1
  54. package/viewer/assets/channel-D3Cre9qO.js +1 -0
  55. package/viewer/assets/{chunk-2J33WTMH-CExj7hZH.js → chunk-2J33WTMH-Dj325_X1.js} +1 -1
  56. package/viewer/assets/{chunk-3OPIFGDE-DHkn_EKf.js → chunk-3OPIFGDE-DW3F2IJ8.js} +1 -1
  57. package/viewer/assets/{chunk-4BX2VUAB-CsD3MpP4.js → chunk-4BX2VUAB-DJAfYzcc.js} +1 -1
  58. package/viewer/assets/{chunk-55IACEB6-B2h9xlji.js → chunk-55IACEB6-BWzJRqQ_.js} +1 -1
  59. package/viewer/assets/{chunk-5ZQYHXKU-BT8BfFwa.js → chunk-5ZQYHXKU-Bquiasoi.js} +1 -1
  60. package/viewer/assets/{chunk-727SXJPM-Cbzsk2sx.js → chunk-727SXJPM-CDXLTA4c.js} +1 -1
  61. package/viewer/assets/{chunk-AGHRB4JF-BlQgX4eu.js → chunk-AGHRB4JF-DQOQWGJs.js} +1 -1
  62. package/viewer/assets/{chunk-AQP2D5EJ-kAA_M8ev.js → chunk-AQP2D5EJ-bNADy1-9.js} +1 -1
  63. package/viewer/assets/{chunk-BSJP7CBP-QRmLe2ra.js → chunk-BSJP7CBP-kuQaugkg.js} +1 -1
  64. package/viewer/assets/{chunk-CSCIHK7Q-DR7Fh2vz.js → chunk-CSCIHK7Q-CwrZldqU.js} +2 -2
  65. package/viewer/assets/{chunk-EIO257PC-HryAQxfP.js → chunk-EIO257PC-BI5igNBI.js} +1 -1
  66. package/viewer/assets/{chunk-FMBD7UC4-DoCeRNMM.js → chunk-FMBD7UC4-CnjeUbaY.js} +1 -1
  67. package/viewer/assets/{chunk-K2UTITRG-DAyQWDjk.js → chunk-K2UTITRG-B-1sR338.js} +4 -4
  68. package/viewer/assets/{chunk-KSCS5N6A-D3hkbb9N.js → chunk-KSCS5N6A-CZ7RNlru.js} +1 -1
  69. package/viewer/assets/{chunk-L5ZTLDWV-CTW9UcbB.js → chunk-L5ZTLDWV-C-Upm26c.js} +1 -1
  70. package/viewer/assets/{chunk-LZXEDZCA-DmTR94qs.js → chunk-LZXEDZCA-TRWdpsWK.js} +2 -2
  71. package/viewer/assets/{chunk-ND2GUHAM-cWS-Hj50.js → chunk-ND2GUHAM-BbrXIbM5.js} +1 -1
  72. package/viewer/assets/{chunk-NZK2D7GU-Brqkts5c.js → chunk-NZK2D7GU-BmI3B8V6.js} +1 -1
  73. package/viewer/assets/{chunk-O5CBEL6O-DcTS0WR4.js → chunk-O5CBEL6O-BrMq6sdg.js} +1 -1
  74. package/viewer/assets/chunk-QZHKN3VN-CFHCXO_E.js +1 -0
  75. package/viewer/assets/{chunk-SRAX5OIU-Bnk-J_Ic.js → chunk-SRAX5OIU-Nxy8Tzq3.js} +1 -1
  76. package/viewer/assets/{chunk-WU5MYG2G-ApR-uaBj.js → chunk-WU5MYG2G-J_2NibrG.js} +1 -1
  77. package/viewer/assets/{chunk-XPW4576I-X39GVyft.js → chunk-XPW4576I-BcLhFQvu.js} +1 -1
  78. package/viewer/assets/classDiagram-4FO5ZUOK-BuAEQIC5.js +1 -0
  79. package/viewer/assets/classDiagram-v2-Q7XG4LA2-DGiKlp7z.js +1 -0
  80. package/viewer/assets/core-CRLmsskK.js +3 -0
  81. package/viewer/assets/{cose-bilkent-S5V4N54A-ao81kk8g.js → cose-bilkent-S5V4N54A-mjOXzgbN.js} +1 -1
  82. package/viewer/assets/cpp-DF3_Y4Y1.js +1 -0
  83. package/viewer/assets/{cs-CZ-2BRQDIVT-CuoHtiJx.js → cs-CZ-2BRQDIVT-BEu5Gu40.js} +1 -1
  84. package/viewer/assets/csharp-BtVV86wX.js +1 -0
  85. package/viewer/assets/css-wZv8YE7b.js +1 -0
  86. package/viewer/assets/{da-DK-5WZEPLOC-CU2TS9iq.js → da-DK-5WZEPLOC-zjwheHko.js} +1 -1
  87. package/viewer/assets/{dagre-BM42HDAG-G6BhJRQw.js → dagre-BM42HDAG-C8sJW_Ua.js} +1 -1
  88. package/viewer/assets/{dagre-DCGZDEN0.js → dagre-QzaNJyV9.js} +1 -1
  89. package/viewer/assets/{de-DE-XR44H4JA-D_P0eboZ.js → de-DE-XR44H4JA-BGtdJ-CK.js} +1 -1
  90. package/viewer/assets/{diagram-2AECGRRQ-CSkr-y6p.js → diagram-2AECGRRQ-Dz6wtzLe.js} +1 -1
  91. package/viewer/assets/{diagram-5GNKFQAL-DmDfwinH.js → diagram-5GNKFQAL-B0eW3QHX.js} +1 -1
  92. package/viewer/assets/{diagram-KO2AKTUF-2JOenJyz.js → diagram-KO2AKTUF-8rEv9nbd.js} +1 -1
  93. package/viewer/assets/{diagram-LMA3HP47-DWpGa_n-.js → diagram-LMA3HP47-DqAI9RJC.js} +1 -1
  94. package/viewer/assets/{diagram-OG6HWLK6-CAw1FF9r.js → diagram-OG6HWLK6-B-N8ZOjb.js} +1 -1
  95. package/viewer/assets/diff-Bxf4Bdyj.js +1 -0
  96. package/viewer/assets/{dist-MkuKpZxJ.js → dist-BtHEcd1u.js} +4 -4
  97. package/viewer/assets/{dist-BSmD-gaM.js → dist-CwYTJqYS.js} +1 -1
  98. package/viewer/assets/{docx-preview-DJ3akTi1.js → docx-preview-DqCuLb1l.js} +1 -1
  99. package/viewer/assets/drawing-hJlah-cU.js +2 -0
  100. package/viewer/assets/{ebook-DdzrIQwY.js → ebook-CSM2MHSf.js} +2 -2
  101. package/viewer/assets/eda-Dhg-MI0M.js +2 -0
  102. package/viewer/assets/{el-GR-BZB4AONW-773rjakn.js → el-GR-BZB4AONW-B8fiITw1.js} +1 -1
  103. package/viewer/assets/email-BCvf_4kt.js +2 -0
  104. package/viewer/assets/{en-B4ZKOASM-KXkyKCCD.js → en-B4ZKOASM-DidczqYU.js} +1 -1
  105. package/viewer/assets/{erDiagram-TEJ5UH35-COUyT6HR.js → erDiagram-TEJ5UH35-D-liy63Y.js} +1 -1
  106. package/viewer/assets/{es-ES-U4NZUMDT-DS_Wl_sD.js → es-ES-U4NZUMDT-DDab8Doc.js} +1 -1
  107. package/viewer/assets/{eu-ES-A7QVB2H4-DycoEJ3W.js → eu-ES-A7QVB2H4-COlIn7GW.js} +1 -1
  108. package/viewer/assets/eventmodeling-FCH6USID-eYgNvYb6.js +1 -0
  109. package/viewer/assets/{fa-IR-HGAKTJCU-BnGo0pi9.js → fa-IR-HGAKTJCU-DcISfvo9.js} +1 -1
  110. package/viewer/assets/{fi-FI-Z5N7JZ37-CwM4pX49.js → fi-FI-Z5N7JZ37-BKa6OvOE.js} +1 -1
  111. package/viewer/assets/{flowDiagram-I6XJVG4X-CW3PcNVR.js → flowDiagram-I6XJVG4X-Bp38J4Yk.js} +1 -1
  112. package/viewer/assets/{fr-FR-RHASNOE6-DtTRvGy5.js → fr-FR-RHASNOE6-BWV8XdX9.js} +1 -1
  113. package/viewer/assets/{ganttDiagram-6RSMTGT7-C7ks3ZPy.js → ganttDiagram-6RSMTGT7-D_FHCvEN.js} +1 -1
  114. package/viewer/assets/gitGraph-WXDBUCRP-BLCpejRG.js +1 -0
  115. package/viewer/assets/{gitGraphDiagram-PVQCEYII-BlLdhGvx.js → gitGraphDiagram-PVQCEYII-C-eYfko6.js} +1 -1
  116. package/viewer/assets/{gl-ES-HMX3MZ6V-BR2PDtxx.js → gl-ES-HMX3MZ6V-BFi01nkB.js} +1 -1
  117. package/viewer/assets/go-B7mD4oi7.js +1 -0
  118. package/viewer/assets/{he-IL-6SHJWFNN-fF0tLsJk.js → he-IL-6SHJWFNN-Dk5YqRlq.js} +1 -1
  119. package/viewer/assets/{hi-IN-IWLTKZ5I-DLZJkiTj.js → hi-IN-IWLTKZ5I-BIHZmBkA.js} +1 -1
  120. package/viewer/assets/{hu-HU-A5ZG7DT2-ChzvsLjq.js → hu-HU-A5ZG7DT2-uGTZAnbA.js} +1 -1
  121. package/viewer/assets/{id-ID-SAP4L64H-Cn7gY12W.js → id-ID-SAP4L64H-B7i3a2eV.js} +1 -1
  122. package/viewer/assets/{image-ChcQpIrp.js → image-D10T_iax.js} +2 -2
  123. package/viewer/assets/image-GAAHSSAO-hQBhWjS_.js +1 -0
  124. package/viewer/assets/{index-GSEVFUM2.css → index-D8hVflyC.css} +1 -1
  125. package/viewer/assets/index-kFSstoL8.js +123 -0
  126. package/viewer/assets/info-J43DQDTF-Bw2UVBYA.js +1 -0
  127. package/viewer/assets/{infoDiagram-5YYISTIA-Rb6tIZBi.js → infoDiagram-5YYISTIA-Bo-Hrkyn.js} +1 -1
  128. package/viewer/assets/ini-BMQSfYcX.js +1 -0
  129. package/viewer/assets/{ishikawaDiagram-YF4QCWOH-BZIT_2T6.js → ishikawaDiagram-YF4QCWOH-iXf-4sS_.js} +1 -1
  130. package/viewer/assets/{it-IT-JPQ66NNP-CfJGGmT2.js → it-IT-JPQ66NNP-xJ2TLHO9.js} +1 -1
  131. package/viewer/assets/{ja-JP-DBVTYXUO-DOgm32os.js → ja-JP-DBVTYXUO-C-iG7c92.js} +1 -1
  132. package/viewer/assets/java-CLKxIYNp.js +1 -0
  133. package/viewer/assets/javascript-KR3bXd09.js +1 -0
  134. package/viewer/assets/{journeyDiagram-JHISSGLW-B0Kahpq5.js → journeyDiagram-JHISSGLW-DpBW-qay.js} +1 -1
  135. package/viewer/assets/json-CKtDrYhA.js +1 -0
  136. package/viewer/assets/{jszip.min-BZbZNX2m.js → jszip.min-DnCauUac.js} +1 -1
  137. package/viewer/assets/{kaa-6HZHGXH3-0IvBggIR.js → kaa-6HZHGXH3-kOFHl1W7.js} +1 -1
  138. package/viewer/assets/{kab-KAB-ZGHBKWFO-BKWgCEfl.js → kab-KAB-ZGHBKWFO-B8ayGPmN.js} +1 -1
  139. package/viewer/assets/{kanban-definition-UN3LZRKU-CA4wOtV_.js → kanban-definition-UN3LZRKU-CoAEv9C_.js} +1 -1
  140. package/viewer/assets/{kk-KZ-P5N5QNE5-CNB8g-8E.js → kk-KZ-P5N5QNE5-BkFKmnHM.js} +1 -1
  141. package/viewer/assets/{km-KH-HSX4SM5Z-ePtupWf-.js → km-KH-HSX4SM5Z-BLk5CN5Z.js} +1 -1
  142. package/viewer/assets/{ko-KR-MTYHY66A-Bmc8s4Fj.js → ko-KR-MTYHY66A-ChIoO5QK.js} +1 -1
  143. package/viewer/assets/{ku-TR-6OUDTVRD-DYvSmdMb.js → ku-TR-6OUDTVRD-DMV9YIRz.js} +1 -1
  144. package/viewer/assets/{lib-BLtD-8__.js → lib-BWPMQv-F.js} +1 -1
  145. package/viewer/assets/{lt-LT-XHIRWOB4-ilcPBuZy.js → lt-LT-XHIRWOB4-CYXyAYWA.js} +1 -1
  146. package/viewer/assets/{lv-LV-5QDEKY6T-UzsbOMqB.js → lv-LV-5QDEKY6T--5Qg0C69.js} +1 -1
  147. package/viewer/assets/markdown-DQnm92SS.js +1 -0
  148. package/viewer/assets/{md-BMcJ03D5.js → md-DJI9yitg.js} +2 -2
  149. package/viewer/assets/{mermaid-parser.core-Bb8JWOnL.js → mermaid-parser.core-DNBTQpZm.js} +2 -2
  150. package/viewer/assets/{mindmap-definition-RKZ34NQL-B8_8CkXx.js → mindmap-definition-RKZ34NQL-B70TvEH-.js} +1 -1
  151. package/viewer/assets/model-CtJpb99w.js +2 -0
  152. package/viewer/assets/{mr-IN-CRQNXWMA-BXiqB3ZQ.js → mr-IN-CRQNXWMA-CLY3bXgU.js} +1 -1
  153. package/viewer/assets/{my-MM-5M5IBNSE-DvAy5Bw5.js → my-MM-5M5IBNSE-NR6S4X8y.js} +1 -1
  154. package/viewer/assets/{nb-NO-T6EIAALU-B9km4_yF.js → nb-NO-T6EIAALU-DGM4T3-d.js} +1 -1
  155. package/viewer/assets/{nestedRender-CLSeYn_G.js → nestedRender-agTARb8M.js} +3 -3
  156. package/viewer/assets/{nl-NL-IS3SIHDZ-BfRDQb5e.js → nl-NL-IS3SIHDZ-BzXabHU6.js} +1 -1
  157. package/viewer/assets/{nn-NO-6E72VCQL-DgbfEKD7.js → nn-NO-6E72VCQL-CAdCSKJX.js} +1 -1
  158. package/viewer/assets/{oc-FR-POXYY2M6-WCFsWM6_.js → oc-FR-POXYY2M6-DO-CEdhO.js} +1 -1
  159. package/viewer/assets/{ofd-9G35BreV.js → ofd-D9Q3WATB.js} +2 -2
  160. package/viewer/assets/{ofd-BnehVcOy.js → ofd-DKC8ZhaL.js} +1 -1
  161. package/viewer/assets/{pa-IN-N4M65BXN-CzSvMz1c.js → pa-IN-N4M65BXN-DXqteMU-.js} +1 -1
  162. package/viewer/assets/packet-YPE3B663-DG40CXmn.js +1 -0
  163. package/viewer/assets/pdf-B564pyJf.js +2 -0
  164. package/viewer/assets/percentages-BXMCSKIN-B5emcqXz.js +1 -0
  165. package/viewer/assets/php-B8QdQEEH.js +2 -0
  166. package/viewer/assets/{pica-Bv7SZkwC.js → pica-CM0Qb9Bg.js} +1 -1
  167. package/viewer/assets/pie-LRSECV5Y-kQyvycPp.js +1 -0
  168. package/viewer/assets/{pieDiagram-4H26LBE5-i2Hk1QdC.js → pieDiagram-4H26LBE5-BZc3n-sg.js} +1 -1
  169. package/viewer/assets/{pl-PL-T2D74RX3-D5jKAjH3.js → pl-PL-T2D74RX3-CLEZIlu9.js} +1 -1
  170. package/viewer/assets/{pptx-DUpbC-i9.js → pptx-DrPXyatj.js} +2 -2
  171. package/viewer/assets/{prod-BMo_HI_d.js → prod-CY-THQBC.js} +6 -6
  172. package/viewer/assets/{pt-BR-5N22H2LF-BOuLuCic.js → pt-BR-5N22H2LF-Bsj-57xw.js} +1 -1
  173. package/viewer/assets/{pt-PT-UZXXM6DQ-IaWI7MhK.js → pt-PT-UZXXM6DQ-X6MmEloy.js} +1 -1
  174. package/viewer/assets/python-5t6UGqKu.js +1 -0
  175. package/viewer/assets/{quadrantDiagram-W4KKPZXB-DAK7tnXK.js → quadrantDiagram-W4KKPZXB-DtCxOPTd.js} +1 -1
  176. package/viewer/assets/radar-GUYGQ44K-DpjXncxt.js +1 -0
  177. package/viewer/assets/{requirementDiagram-4Y6WPE33-Qe1tMsuz.js → requirementDiagram-4Y6WPE33-xfwA6TzG.js} +1 -1
  178. package/viewer/assets/{ro-RO-JPDTUUEW-CVjUeVDX.js → ro-RO-JPDTUUEW-C8xD9ffY.js} +1 -1
  179. package/viewer/assets/rough.esm-DZoaBsBN.js +1 -0
  180. package/viewer/assets/{ru-RU-B4JR7IUQ-DZoFd6WW.js → ru-RU-B4JR7IUQ-C1FQltCi.js} +1 -1
  181. package/viewer/assets/rust-CKj8FOnD.js +1 -0
  182. package/viewer/assets/{sankeyDiagram-5OEKKPKP-DkifBY1g.js → sankeyDiagram-5OEKKPKP-BAAdRCbn.js} +1 -1
  183. package/viewer/assets/{sequenceDiagram-3UESZ5HK-nN3sfh-M.js → sequenceDiagram-3UESZ5HK-4K-5Eo67.js} +1 -1
  184. package/viewer/assets/{si-LK-N5RQ5JYF-1DE87iHx.js → si-LK-N5RQ5JYF-OPown7wD.js} +1 -1
  185. package/viewer/assets/{sk-SK-C5VTKIMK-CfK25T_B.js → sk-SK-C5VTKIMK-C7m1mJNr.js} +1 -1
  186. package/viewer/assets/{sl-SI-NN7IZMDC-X1aagPrK.js → sl-SI-NN7IZMDC-CN0ko2RM.js} +1 -1
  187. package/viewer/assets/sql-Ce6HY06Z.js +1 -0
  188. package/viewer/assets/{src-vkV3wo-k.js → src-nayzRmN3.js} +1 -1
  189. package/viewer/assets/{stateDiagram-AJRCARHV-Bz218kDr.js → stateDiagram-AJRCARHV-V3SSt2ZK.js} +1 -1
  190. package/viewer/assets/stateDiagram-v2-BHNVJYJU-LozT2G7Z.js +1 -0
  191. package/viewer/assets/subset-shared.chunk-CTQKAvEN.js +1 -0
  192. package/viewer/assets/{subset-worker.chunk-CEbx-0kL.js → subset-worker.chunk-CSjccB_s.js} +1 -1
  193. package/viewer/assets/{sv-SE-XGPEYMSR-CzvygZQ0.js → sv-SE-XGPEYMSR-NcR2tIgR.js} +1 -1
  194. package/viewer/assets/{ta-IN-2NMHFXQM-CaihQzsz.js → ta-IN-2NMHFXQM-DQ3KI7kE.js} +1 -1
  195. package/viewer/assets/text-DkNcXP2L.js +2 -0
  196. package/viewer/assets/{th-TH-HPSO5L25-BJjmvFhx.js → th-TH-HPSO5L25-CPi0bWo8.js} +1 -1
  197. package/viewer/assets/{timeline-definition-PNZ67QCA-z7k1VtBV.js → timeline-definition-PNZ67QCA-B3C7YX67.js} +1 -1
  198. package/viewer/assets/{tr-TR-DEFEU3FU-B91i2gCj.js → tr-TR-DEFEU3FU-RORLYuSJ.js} +1 -1
  199. package/viewer/assets/treeView-BLDUP644-BfUsBpTQ.js +1 -0
  200. package/viewer/assets/treemap-LRROVOQU-BpJlw8g_.js +1 -0
  201. package/viewer/assets/typescript-CL2ByGCA.js +1 -0
  202. package/viewer/assets/{uk-UA-QMV73CPH-DYR95Cef.js → uk-UA-QMV73CPH-Dp86zjS6.js} +1 -1
  203. package/viewer/assets/{umd-DthhID5n.js → umd-BAgKkWAQ.js} +2 -2
  204. package/viewer/assets/{vennDiagram-CIIHVFJN-oy77Gs4f.js → vennDiagram-CIIHVFJN-Cyyziky_.js} +1 -1
  205. package/viewer/assets/{vi-VN-M7AON7JQ-C62OWduz.js → vi-VN-M7AON7JQ-DQQvaBwM.js} +1 -1
  206. package/viewer/assets/wardley-L42UT6IY-BPY9hq76.js +1 -0
  207. package/viewer/assets/{wardleyDiagram-YWT4CUSO-DhotzNg3.js → wardleyDiagram-YWT4CUSO-oaIiPVhB.js} +1 -1
  208. package/viewer/assets/{word-C3Fv1vLf.js → word-6a6IAmBa.js} +2 -2
  209. package/viewer/assets/xlsx-ClqN48ie.js +2 -0
  210. package/viewer/assets/xml-CKLaISb_.js +1 -0
  211. package/viewer/assets/{xychartDiagram-2RQKCTM6-D8oWIz35.js → xychartDiagram-2RQKCTM6-Cq0ztHcZ.js} +1 -1
  212. package/viewer/assets/yaml-CnW-k44d.js +1 -0
  213. package/viewer/assets/{zh-CN-LNUGB5OW-DRDYWYqf.js → zh-CN-LNUGB5OW-CrEJqe-w.js} +1 -1
  214. package/viewer/assets/{zh-HK-E62DVLB3-DqsSgURR.js → zh-HK-E62DVLB3-QAJFizTz.js} +1 -1
  215. package/viewer/assets/{zh-TW-RAJ6MFWO-DNaQ_tzk.js → zh-TW-RAJ6MFWO-zVjl0SCX.js} +1 -1
  216. package/viewer/flyfish-viewer-manifest.json +1 -1
  217. package/viewer/index.html +2 -2
  218. package/viewer/assets/CadViewer-BxKziBoL.js +0 -1
  219. package/viewer/assets/CadViewer-KY38lZv8.css +0 -1
  220. package/viewer/assets/CodeViewer-iJqnFvBo.js +0 -4
  221. package/viewer/assets/DrawingViewer-3xubz-e_.js +0 -2
  222. package/viewer/assets/DrawingViewer-CHm6iXmV.css +0 -1
  223. package/viewer/assets/EdaViewer-TWUlf_kL.js +0 -3
  224. package/viewer/assets/EdaViewer-fzRr-hJQ.css +0 -1
  225. package/viewer/assets/architecture-7EHR7CIX-DJe_E9I0.js +0 -1
  226. package/viewer/assets/cad-BLjc0ZUr.js +0 -2
  227. package/viewer/assets/channel-CB6_Gbjf.js +0 -1
  228. package/viewer/assets/chunk-QZHKN3VN-DPzbUv5V.js +0 -1
  229. package/viewer/assets/classDiagram-4FO5ZUOK-rRBtXK0L.js +0 -1
  230. package/viewer/assets/classDiagram-v2-Q7XG4LA2-CsuF8M2k.js +0 -1
  231. package/viewer/assets/drawing-B56wLK6L.js +0 -2
  232. package/viewer/assets/eda-Ct0fvfLE.js +0 -2
  233. package/viewer/assets/email-CalaS-yq.js +0 -2
  234. package/viewer/assets/eventmodeling-FCH6USID-iyGldGGx.js +0 -1
  235. package/viewer/assets/gitGraph-WXDBUCRP-3fiTtpJH.js +0 -1
  236. package/viewer/assets/image-GAAHSSAO-CZ_-H6__.js +0 -1
  237. package/viewer/assets/index-C0UtzWhe.js +0 -37
  238. package/viewer/assets/info-J43DQDTF-DqF-grBv.js +0 -1
  239. package/viewer/assets/model-CxRLH2Y1.js +0 -2
  240. package/viewer/assets/packet-YPE3B663-BPatVCfY.js +0 -1
  241. package/viewer/assets/pdf-Csx_l8dg.js +0 -2
  242. package/viewer/assets/percentages-BXMCSKIN-DLumFujS.js +0 -1
  243. package/viewer/assets/pie-LRSECV5Y-C1xYL0T3.js +0 -1
  244. package/viewer/assets/radar-GUYGQ44K-CX2_yVT9.js +0 -1
  245. package/viewer/assets/rough.esm-BrTFrov0.js +0 -1
  246. package/viewer/assets/stateDiagram-v2-BHNVJYJU-Drk91Wud.js +0 -1
  247. package/viewer/assets/subset-shared.chunk-D5fTz4et.js +0 -1
  248. package/viewer/assets/text-B0SSRZLf.js +0 -2
  249. package/viewer/assets/treeView-BLDUP644-Dq_dAvv1.js +0 -1
  250. package/viewer/assets/treemap-LRROVOQU-B9cQPlPD.js +0 -1
  251. package/viewer/assets/wardley-L42UT6IY-CH37fIcF.js +0 -1
  252. package/viewer/assets/xlsx-CQfe5LBR.js +0 -2
  253. /package/viewer/assets/{cytoscape.esm-D3dnj5Y5.js → cytoscape.esm-BO4b6pVn.js} +0 -0
  254. /package/viewer/assets/{fflate.module-IyciJBwI.js → fflate.module-DmN2iWjn.js} +0 -0
  255. /package/viewer/assets/{graphlib-5aGczWtL.js → graphlib-BpbuYmc5.js} +0 -0
  256. /package/viewer/assets/{image-blob-reduce.esm-CchPTdAc.js → image-blob-reduce.esm-ClRzuTkj.js} +0 -0
  257. /package/viewer/assets/{katex-DMEfcw6w.js → katex-BRA9miIt.js} +0 -0
  258. /package/viewer/assets/{libarchive-DrK073qr.js → libarchive-BWmjBS7s.js} +0 -0
  259. /package/viewer/assets/{mp4-DM3FRbWc.js → mp4-E_aU-TOR.js} +0 -0
  260. /package/viewer/assets/{postal-mime-Bjwaq0co.js → postal-mime-CuiVR6kZ.js} +0 -0
  261. /package/viewer/assets/{three.module-Co97Nwgn.js → three.module-DQeeIQFF.js} +0 -0
  262. /package/viewer/assets/{worker-bundle-39P8NeRQ.js → worker-bundle-D-AQnxpp.js} +0 -0
  263. /package/viewer/assets/{worker-ref-B1EGXVKD.js → worker-ref-BqLasdQ2.js} +0 -0
@@ -0,0 +1,8 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./cfb-w_71-bTW.js","./index-kFSstoL8.js","./index-D8hVflyC.css"])))=>i.map(i=>d[i]);
2
+ import{A as e,B as t,C as n,D as r,F as i,K as a,L as o,P as s,R as c,b as l,g as u,h as d,k as f,l as p,m,o as h,p as ee,t as g,v as _,y as v,z as te}from"./index-kFSstoL8.js";var y=[208,207,17,224,161,177,26,225],b=200,x=4096,S=192,C=180,w=24,T=420,E=e=>new Uint8Array(e),D=e=>y.every((t,n)=>e[n]===t),O=e=>e instanceof Uint8Array?e:new Uint8Array(e),k=e=>e.replace(/\u0000/g,``).replace(/[^\S\r\n]+/g,` `).replace(/\r\n/g,`
3
+ `).trim(),A=e=>k(e).toLowerCase(),j=e=>{let t=e.split(`/`).filter(Boolean);return t[t.length-1]||e||`/`},M=e=>e.replace(/\.[a-z0-9]+$/i,``),N=(e,t,n=1/0)=>{let r=k(t);!r||e.includes(r)||e.length>=n||e.push(r)},P=e=>{if(!e.length)return!1;let t=e.slice(0,Math.min(e.length,x)),n=0,r=0;for(let e of t)e===0&&(r+=1),(e===9||e===10||e===13||e>=32&&e<=126||e>=128)&&(n+=1);return n/t.length>.82||r/t.length>.25},F=e=>{let t=e.slice(0,Math.min(e.length,x));if(!t.length)return``;try{let e=0,n=0;for(let r=0;r<t.length;r+=1)t[r]===0&&(r%2==0?n+=1:e+=1);return k((e>t.length/5&&e>n*2?new TextDecoder(`utf-16le`,{fatal:!1}):new TextDecoder(`utf-8`,{fatal:!1})).decode(t))}catch{return``}},I=e=>{let t=e.slice(0,Math.min(e.length,S)),n=[];for(let e=0;e<t.length;e+=16){let r=t.slice(e,e+16),i=Array.from(r).map(e=>e.toString(16).padStart(2,`0`)).join(` `),a=Array.from(r).map(e=>e>=32&&e<=126?String.fromCharCode(e):`.`).join(``);n.push(`${e.toString(16).padStart(8,`0`)} ${i.padEnd(47)} ${a}`)}return n.join(`
4
+ `)},L=e=>{let t=[],n=``;for(let r of e){if(r>=32&&r<=126){n+=String.fromCharCode(r);continue}n.length>=4&&t.push(n),n=``}return n.length>=4&&t.push(n),t},R=e=>{let t=[],n=``;for(let r=0;r+1<e.length;r+=2){let i=e[r];if(e[r+1]===0&&i>=32&&i<=126){n+=String.fromCharCode(i);continue}n.length>=4&&t.push(n),n=``}return n.length>=4&&t.push(n),t},z=(e,t=C)=>{let n=new Set,r=[];return e.forEach(e=>{[...L(e),...R(e)].forEach(e=>{let i=k(e);!i||i.length<4||n.has(i)||r.length>=t||(n.add(i),r.push(i))})}),r},ne=/^\s*([A-Za-z][A-Za-z0-9_. /#-]{1,56})\s*[:=]\s*(.{1,240})\s*$/,re=/\b([A-Za-z][A-Za-z0-9_. /#-]{1,56})\s*=\s*([^;\n\r|]{1,240})/g,ie=e=>k(e).replace(/\s+/g,` `),B=(e,t,n,r,i)=>{if(e.length>=T)return;let a=ie(n),o=k(r);if(!a||!o)return;let s=`${i}\u0000${a.toLowerCase()}\u0000${o}`;t.has(s)||(t.add(s),e.push({key:a,value:o,source:i}))},V=(e,t,n)=>{let r=[],i=new Set;return[e,...t].filter(Boolean).forEach(e=>{k(e).split(/\n|[|;]/).forEach(e=>{let t=e.match(ne);t&&B(r,i,t[1],t[2],n)});for(let t of e.matchAll(re))B(r,i,t[1],t[2],n)}),r},H=(e,t)=>{let n=t.map(e=>e.toLowerCase());return e.some(e=>n.includes(e.key.toLowerCase()))},U=(e,t)=>{let n=t.map(e=>e.toLowerCase());return e.find(e=>n.includes(e.key.toLowerCase()))?.value},W=(e,t,n,r,i,a,o)=>{let s=A(`${t}\n${n}\n${r}\n${i.join(`
5
+ `)}`);if(s===`/`||t===`/`)return`root`;if(o===`storage`&&/(^|\/)(library|libraries)(\/|$)/i.test(t))return`library`;if(/(header|version|source|author|metadata|property|properties)/.test(s))return H(a,[`Name`,`Pins`,`Footprint`,`Padstack`])?`property`:`metadata`;if(e===`olb`){if(/(^|\/)(symbols?|parts?)(\/|$)/.test(s)||H(a,[`Pins`,`Footprint`,`PCB Footprint`,`Part Number`]))return`symbol`;if(/(^|\/)(library|capture|orcad)(\/|$)/.test(s))return`library`}if(e===`dra`){if(/(padstack|pad stack|thermal|antipad|drill)/.test(s)||H(a,[`Padstack`,`Drill`]))return`padstack`;if(/(footprint|package|psm|bsm|fsm|ssm|symbol)/.test(s))return`footprint`;if(/(route|net|via|ratsnest)/.test(s))return`net`;if(/(line |arc |circle|shape|outline|silk|place_bound|assembly|soldermask|pastemask)/.test(s))return`geometry`;if(/(drawing|units|layers?|constraint|allegro)/.test(s)||H(a,[`Units`,`Layers`]))return`drawing`}return a.length?`property`:o===`storage`?`library`:`unknown`},G=(e,t,n,r,i,a)=>{if(i===`storage`||!a)return{path:t,name:n,size:r,kind:i,role:W(e,t,n,``,[],[],i),strings:[],properties:[]};let o=P(a)?F(a):``,s=z([a],w),c=V(o,s,t),l=W(e,t,n,o,s,c,o?`text`:`binary`);return{path:t,name:n,size:r,kind:o?`text`:`binary`,role:l,sample:o,hex:o?void 0:I(a),strings:s,properties:c}},K=e=>{e.children.sort((e,t)=>e.children.length===t.children.length?e.name.localeCompare(t.name):t.children.length-e.children.length),e.children.forEach(K)},q=(e,t)=>{let n={id:`${t}:root`,path:`/`,name:t.toUpperCase(),kind:`storage`,role:`root`,size:0,children:[]},r=new Map([[`/`,n]]);return e.forEach(e=>{let i=e.path.split(`/`).filter(Boolean),a=n,o=``;i.forEach((n,s)=>{o+=`/${n}`;let c=s===i.length-1,l=r.get(o);l||(l={id:`${t}:${o}`,path:o,name:n,kind:c?e.kind:`storage`,role:c?e.role:W(t,o,n,``,[],[],`storage`),size:c?e.size:0,children:[]},r.set(o,l),a.children.push(l)),c&&(l.kind=e.kind,l.role=e.role,l.size=e.size),a=l})}),K(n),n.children},J=e=>{if(!e)return[];let t=[];return e.split(/[,/;| ]+/).forEach(e=>{/^[A-Za-z0-9_.+-]+$/.test(e)&&N(t,e,64)}),t},Y=(e,t)=>t===`olb`?e.role===`symbol`&&e.kind!==`storage`?`symbol`:null:e.role===`padstack`?`padstack`:e.role===`footprint`||e.role===`geometry`&&/\/footprint\//i.test(e.path)?`footprint`:e.role===`drawing`?`drawing`:null,ae=(e,t)=>t===`footprint`?e.path.match(/^(.+?\/Footprint)(?:\/|$)/i)?.[1]||e.path:t===`drawing`&&e.path.match(/^(.+?\/Drawing)(?:\/|$)/i)?.[1]||e.path,oe=(e,t,n)=>{let r=U(e.properties,[`Name`,`Part`,`Part Name`,`Symbol`,`Device`,`Footprint`,`PCB Footprint`,`Package`,`Padstack`,`Pad Stack`,`Drawing`]);if(r)return r;let i=M(j(n));return i&&i!==`/`?i:t.toUpperCase()},se=(e,t)=>{let n=[],r=`${e.path}\n${e.sample||``}\n${e.strings.join(`
6
+ `)}`.toLowerCase();return(t===`symbol`?[`pins`,`footprint`,`pspice`,`part`,`symbol`]:[`units`,`layers`,`padstack`,`drill`,`outline`,`route`,`constraint`,`shape`,`place_bound`]).forEach(e=>{r.includes(e)&&N(n,e,12)}),n},X=(e,t)=>{let n=new Set(e.map(e=>`${e.key.toLowerCase()}\u0000${e.value}`));t.forEach(t=>{let r=`${t.key.toLowerCase()}\u0000${t.value}`;n.has(r)||(n.add(r),e.push(t))})},ce=(e,t)=>{let n=new Map;return e.forEach(e=>{let r=Y(e,t);if(!r)return;let i=ae(e,r),a=`${r}:${i.toLowerCase()}`,o=n.get(a)||{id:a,name:oe(e,r,i),role:r,path:i,streamCount:0,byteLength:0,properties:[],pins:[],layers:[],keywords:[]};o.streamCount+=1,o.byteLength+=e.size,X(o.properties,e.properties),J(U(e.properties,[`Pins`,`Pin`,`Pin Numbers`])).forEach(e=>N(o.pins,e,96)),J(U(e.properties,[`Layers`,`Layer`])).forEach(e=>N(o.layers,e,64)),se(e,r).forEach(e=>N(o.keywords,e,16)),o.description||=U(o.properties,[`Description`,`Desc`]),o.footprint||=U(o.properties,[`Footprint`,`PCB Footprint`,`Package`]),n.set(a,o)}),Array.from(n.values()).sort((e,t)=>{let n={symbol:0,footprint:1,padstack:2,drawing:3};return(n[e.role]??9)-(n[t.role]??9)||e.name.localeCompare(t.name)})},le=e=>{let t=[];return e.forEach(e=>{(e.role===`metadata`||e.role===`library`||e.role===`drawing`)&&X(t,e.properties)}),t.slice(0,80)},ue=(e,t,n,r)=>{let i={textStreams:e.filter(e=>e.kind===`text`).length,binaryStreams:e.filter(e=>e.kind===`binary`).length,storageEntries:e.filter(e=>e.kind===`storage`).length,propertyCount:e.reduce((e,t)=>e+t.properties.length,0),stringCount:n.length,symbolCount:t.filter(e=>e.role===`symbol`).length,footprintCount:t.filter(e=>e.role===`footprint`).length,padstackCount:t.filter(e=>e.role===`padstack`).length,confidence:`low`};return r===`cfb`&&t.length&&i.propertyCount?i.confidence=`high`:(r===`cfb`||n.length||i.propertyCount)&&(i.confidence=`medium`),i},de=(e,t,n,r,i,a)=>{let o=a.map((e,t)=>({level:`warning`,code:`warning-${t+1}`,message:e}));o.push({level:`info`,code:`parser`,message:t===`cfb`?`已识别为 Microsoft Compound File / OLE2 复合文档容器,并在浏览器端解析目录与流。`:`未识别为 CFB 容器,已使用二进制字符串索引模式展示可读信息。`}),o.push({level:`info`,code:`coverage`,message:`已索引 ${n.length} 个条目、${i.length} 个可读字符串、${r.length} 个 EDA 结构候选。`});let s=e===`olb`&&!r.some(e=>e.role===`symbol`),c=e===`dra`&&!r.some(e=>e.role===`footprint`||e.role===`padstack`);return(s||c)&&o.push({level:`warning`,code:`domain-candidates`,message:e===`olb`?`未发现明确的元件符号候选,文件可能使用了私有二进制编码或需要专业工具导出 ASCII/XML 后再检查。`:`未发现明确的封装、图形或 padstack 候选,文件可能使用了私有二进制数据库编码。`}),o},Z=(e,t,n,r,i,a,o)=>{let s=i.reduce((e,t)=>e+t.size,0),c=ce(i,t),l=le(i),u=de(t,n,i,c,a,o);return{type:t,parser:n,title:t===`olb`?n===`cfb`?`OrCAD Capture Symbol Library`:`OLB Binary Library`:n===`cfb`?`OrCAD / Allegro Drawing Library`:`DRA Binary Drawing`,byteLength:e.byteLength,streamCount:r,totalStreamBytes:s,streams:i,tree:q(i,t),entities:c,metadata:l,strings:a,warnings:o,diagnostics:u,stats:ue(i,c,a,n)}},fe=async(e,t)=>{let n=(await g(()=>import(`./cfb-w_71-bTW.js`).then(e=>a(e.default,1)),__vite__mapDeps([0,1,2]),import.meta.url)).parse(E(e),{type:`array`}),r=n.FileIndex.map((e,t)=>({entry:e,path:n.FullPaths[t]||e.name})).filter(e=>e.entry.type!==5&&e.path!==`/`&&e.entry.name).slice(0,b),i=[],o=r.map(({entry:e,path:n})=>{if(e.type===1)return G(t,n,e.name,e.size||0,`storage`);let r=O(e.content||[]);return i.push(r),G(t,n,e.name,e.size||r.byteLength||0,`binary`,r)}),s=r.length>=b?[`仅展示前 ${b} 个 CFB 项,完整文件仍可下载后在专业 EDA 工具中打开。`]:[];return Z(e,t,`cfb`,n.FileIndex.length,o,z(i),s)},Q=(e,t)=>{let n=E(e);return Z(e,t,`binary`,1,[G(t,`${t}.${t}`,`${t}.${t}`,e.byteLength,`binary`,n)],z([n]),[`该文件不是标准 CFB 容器,已退化为安全的二进制字符串索引预览。`])},pe=async(e,t=`olb`)=>{let n=t===`dra`?`dra`:`olb`;if(!D(E(e)))return Q(e,n);try{return await fe(e,n)}catch(t){let r=Q(e,n);return r.warnings.unshift(t instanceof Error?t.message:String(t)),r.diagnostics.unshift({level:`warning`,code:`cfb-parse-failed`,message:t instanceof Error?t.message:String(t)}),r}},me={class:`eda-viewer`},he={class:`eda-header`},ge={key:0},_e={key:0,class:`eda-body`},ve={class:`eda-sidebar`},ye={class:`eda-summary`},be={class:`eda-mini-grid`},xe={key:0,class:`eda-warning`},Se={class:`eda-stream-list`},Ce=[`onClick`],we=[`data-role`],Te={class:`eda-preview`},Ee={class:`eda-panel eda-panel--compact`},De={class:`eda-panel-head`},Oe={class:`eda-stat-grid`},ke={class:`eda-topology`},Ae={class:`eda-panel`},je={class:`eda-panel-head`},Me={class:`eda-tree`},Ne=[`onClick`],Pe={class:`eda-panel`},Fe={class:`eda-panel-head`},Ie={key:0,class:`eda-entities`},Le=[`onClick`],Re={key:0},ze={key:0},Be={key:1},Ve={key:2},He={key:3},Ue={key:1,class:`eda-empty`},We={class:`eda-panel`},Ge={class:`eda-panel-head`},Ke={key:0,class:`eda-selected-meta`},qe={key:1,class:`eda-property-grid`},Je={key:2},$={key:3,class:`eda-empty`},Ye={class:`eda-bottom`},Xe={class:`eda-panel`},Ze={class:`eda-panel-head`},Qe={class:`eda-string-grid`},$e={class:`eda-panel`},et={class:`eda-panel-head`},tt={class:`eda-diagnostics`},nt=[`data-level`],rt={key:0,class:`eda-local-strings`},it={key:1,class:`eda-state`},at={key:2,class:`eda-error`},ot=p(n({__name:`EdaViewer`,props:{data:{},type:{},filename:{}},setup(n){let a=n,p=i(null),g=i(!0),y=i(``),b=i(null),x=i(``),S={root:`根`,library:`库`,symbol:`元件符号`,footprint:`封装`,padstack:`Padstack`,drawing:`图纸`,metadata:`元数据`,property:`属性`,geometry:`几何`,net:`网络`,unknown:`未知`},C={high:`高`,medium:`中`,low:`低`},w=e=>S[e]||e,T=e=>e===`storage`?`目录`:e===`text`?`文本`:`二进制`,E=e=>e.replace(/^\/+/,``).toLowerCase(),D=d(()=>{if(!p.value)return[];let e=p.value.stats;return[{label:`文本流`,value:e.textStreams},{label:`二进制流`,value:e.binaryStreams},{label:`目录`,value:e.storageEntries},{label:`属性`,value:e.propertyCount},{label:`符号`,value:e.symbolCount},{label:`封装`,value:e.footprintCount},{label:`Padstack`,value:e.padstackCount},{label:`可信度`,value:C[e.confidence]}]}),O=d(()=>{let e=p.value?.entities||[],t=[{role:`symbol`,label:`元件符号`,items:[]},{role:`footprint`,label:`封装图形`,items:[]},{role:`padstack`,label:`Padstack`,items:[]},{role:`drawing`,label:`图纸信息`,items:[]}];return t.forEach(t=>{t.items=e.filter(e=>e.role===t.role)}),t.filter(e=>e.items.length)}),k=d(()=>{let e=x.value.trim().toLowerCase(),t=p.value?.streams||[];return e?t.filter(t=>{let n=t.properties.map(e=>`${e.key}=${e.value}`).join(`
7
+ `);return`${t.path}\n${t.name}\n${t.kind}\n${t.role}\n${t.sample||``}\n${t.strings.join(`
8
+ `)}\n${n}`.toLowerCase().includes(e)}):t}),A=(e,t=0)=>e.flatMap(e=>[{...e,depth:t},...A(e.children,t+1)]),j=d(()=>A(p.value?.tree||[])),M=d(()=>b.value?.properties||[]),N=d(()=>b.value?.strings||[]),P=d(()=>b.value?.sample||b.value?.hex||``),F=e=>{b.value=e},I=e=>{let t=E(e.path),n=p.value?.streams.find(e=>E(e.path)===t);n&&(b.value=n)},L=e=>{let t=E(e.path),n=p.value?.streams.find(e=>{let n=E(e.path);return n===t||n.startsWith(`${t}/`)});n&&(b.value=n)},R=async()=>{g.value=!0,y.value=``;try{let e=await pe(a.data,a.type);p.value=e,b.value=e.streams.find(e=>e.properties.length)||e.streams.find(e=>e.kind===`text`)||e.streams[0]||null}catch(e){console.error(e),y.value=e instanceof Error?e.message:String(e)}finally{g.value=!1}};return r(()=>{R()}),(r,i)=>(f(),v(`section`,me,[u(`header`,he,[u(`div`,null,[u(`span`,null,t(p.value?.parser===`cfb`?`CFB STRUCTURE VIEWER`:`BINARY STRUCTURE VIEWER`),1),u(`h2`,null,t(n.filename),1)]),p.value?(f(),v(`dl`,ge,[u(`div`,null,[i[1]||=u(`dt`,null,`格式`,-1),u(`dd`,null,t(p.value.type.toUpperCase()),1)]),u(`div`,null,[i[2]||=u(`dt`,null,`大小`,-1),u(`dd`,null,t(o(h)(p.value.byteLength)),1)]),u(`div`,null,[i[3]||=u(`dt`,null,`条目`,-1),u(`dd`,null,t(p.value.streamCount),1)]),u(`div`,null,[i[4]||=u(`dt`,null,`可信度`,-1),u(`dd`,null,t(C[p.value.stats.confidence]),1)])])):_(``,!0)]),p.value?(f(),v(`div`,_e,[u(`aside`,ve,[u(`div`,ye,[u(`strong`,null,t(p.value.title),1),i[5]||=u(`p`,null,`OLB / DRA 属于 OrCAD / Allegro 生态的私有设计数据。预览器优先解析 CFB 结构、对象候选、属性和可读文本,并在纯前端安全退化。`,-1)]),u(`div`,be,[(f(!0),v(m,null,e(D.value.slice(0,4),e=>(f(),v(`div`,{key:e.label},[u(`span`,null,t(e.label),1),u(`strong`,null,t(e.value),1)]))),128))]),p.value.warnings.length?(f(),v(`div`,xe,[(f(!0),v(m,null,e(p.value.warnings,e=>(f(),v(`p`,{key:e},t(e),1))),128))])):_(``,!0),s(u(`input`,{"onUpdate:modelValue":i[0]||=e=>x.value=e,class:`eda-search`,type:`search`,placeholder:`筛选路径、角色、属性或文本`},null,512),[[ee,x.value]]),u(`div`,Se,[(f(!0),v(m,null,e(k.value,e=>(f(),v(`button`,{key:e.path,type:`button`,class:c([`eda-stream`,{active:b.value?.path===e.path}]),onClick:t=>F(e)},[u(`span`,{"data-role":e.role},t(w(e.role)),9,we),u(`strong`,null,t(e.name||e.path),1),u(`em`,null,t(e.path),1),u(`small`,null,t(T(e.kind))+` · `+t(o(h)(e.size)),1)],10,Ce))),128))])]),u(`main`,Te,[u(`section`,Ee,[u(`div`,De,[i[6]||=u(`span`,null,`解析概览`,-1),u(`strong`,null,t(p.value.parser.toUpperCase())+` · `+t(o(h)(p.value.totalStreamBytes)),1)]),u(`div`,Oe,[(f(!0),v(m,null,e(D.value,e=>(f(),v(`div`,{key:e.label},[u(`span`,null,t(e.label),1),u(`strong`,null,t(e.value),1)]))),128))])]),u(`section`,ke,[u(`div`,Ae,[u(`div`,je,[i[7]||=u(`span`,null,`结构树`,-1),u(`strong`,null,t(j.value.length)+` 节点`,1)]),u(`div`,Me,[(f(!0),v(m,null,e(j.value,e=>(f(),v(`button`,{key:e.id,type:`button`,class:c({active:E(b.value?.path||``)===E(e.path)}),onClick:t=>I(e)},[u(`span`,{style:te({paddingLeft:`${e.depth*14}px`})},t(e.children.length?`▸`:`•`),5),u(`strong`,null,t(e.name),1),u(`em`,null,t(w(e.role)),1),u(`small`,null,t(e.size?o(h)(e.size):T(e.kind)),1)],10,Ne))),128))])]),u(`div`,Pe,[u(`div`,Fe,[i[8]||=u(`span`,null,`EDA 对象`,-1),u(`strong`,null,t(p.value.entities.length)+` 项`,1)]),O.value.length?(f(),v(`div`,Ie,[(f(!0),v(m,null,e(O.value,n=>(f(),v(`div`,{key:n.role,class:`eda-entity-group`},[u(`h3`,null,t(n.label),1),(f(!0),v(m,null,e(n.items,e=>(f(),v(`button`,{key:e.id,type:`button`,onClick:t=>L(e)},[u(`strong`,null,t(e.name),1),u(`span`,null,t(o(h)(e.byteLength))+` · `+t(e.streamCount)+` 条目`,1),e.description?(f(),v(`p`,Re,t(e.description),1)):_(``,!0),u(`dl`,null,[e.footprint?(f(),v(`div`,ze,[i[9]||=u(`dt`,null,`Footprint`,-1),u(`dd`,null,t(e.footprint),1)])):_(``,!0),e.pins.length?(f(),v(`div`,Be,[i[10]||=u(`dt`,null,`Pins`,-1),u(`dd`,null,t(e.pins.join(`, `)),1)])):_(``,!0),e.layers.length?(f(),v(`div`,Ve,[i[11]||=u(`dt`,null,`Layers`,-1),u(`dd`,null,t(e.layers.join(`, `)),1)])):_(``,!0),e.keywords.length?(f(),v(`div`,He,[i[12]||=u(`dt`,null,`Keywords`,-1),u(`dd`,null,t(e.keywords.join(`, `)),1)])):_(``,!0)])],8,Le))),128))]))),128))])):(f(),v(`div`,Ue,[...i[13]||=[u(`strong`,null,`没有明确对象候选`,-1),u(`p`,null,`仍可从结构树、属性和字符串索引中查看可读内容。`,-1)]]))])]),u(`section`,We,[u(`div`,Ge,[i[14]||=u(`span`,null,`当前条目`,-1),u(`strong`,null,t(b.value?.path||`未选择`),1)]),b.value?(f(),v(`div`,Ke,[u(`span`,null,t(w(b.value.role)),1),u(`span`,null,t(T(b.value.kind)),1),u(`span`,null,t(o(h)(b.value.size)),1)])):_(``,!0),M.value.length?(f(),v(`div`,qe,[(f(!0),v(m,null,e(M.value,e=>(f(),v(`div`,{key:`${e.source}-${e.key}-${e.value}`},[u(`span`,null,t(e.key),1),u(`strong`,null,t(e.value),1)]))),128))])):_(``,!0),P.value?(f(),v(`pre`,Je,t(P.value),1)):(f(),v(`div`,$,[...i[15]||=[u(`strong`,null,`目录条目`,-1),u(`p`,null,`该节点用于组织下级流,没有可直接展示的文本或十六进制片段。`,-1)]]))]),u(`section`,Ye,[u(`div`,Xe,[u(`div`,Ze,[i[16]||=u(`span`,null,`可读字符串`,-1),u(`strong`,null,t(p.value.strings.length)+` 项`,1)]),u(`div`,Qe,[(f(!0),v(m,null,e(p.value.strings,(e,n)=>(f(),v(`span`,{key:`${e}-${n}`},t(e),1))),128))])]),u(`div`,$e,[u(`div`,et,[i[17]||=u(`span`,null,`诊断`,-1),u(`strong`,null,t(p.value.diagnostics.length)+` 条`,1)]),u(`div`,tt,[(f(!0),v(m,null,e(p.value.diagnostics,e=>(f(),v(`p`,{key:`${e.code}-${e.message}`,"data-level":e.level},[u(`span`,null,t(e.level),1),l(` `+t(e.message),1)],8,nt))),128))]),N.value.length?(f(),v(`div`,rt,[i[18]||=u(`strong`,null,`当前条目字符串`,-1),(f(!0),v(m,null,e(N.value,(e,n)=>(f(),v(`span`,{key:`${e}-${n}`},t(e),1))),128))])):_(``,!0)])])])])):_(``,!0),g.value?(f(),v(`div`,it,[i[19]||=u(`span`,null,null,-1),u(`strong`,null,`正在解析 `+t(n.type.toUpperCase())+`...`,1)])):_(``,!0),y.value?(f(),v(`div`,at,[i[20]||=u(`strong`,null,`EDA 预览提示`,-1),u(`p`,null,t(y.value),1)])):_(``,!0)]))}}),[[`__scopeId`,`data-v-9eb9b927`]]);export{ot as default};
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./lib-BLtD-8__.js","./index-C0UtzWhe.js","./index-GSEVFUM2.css"])))=>i.map(i=>d[i]);
2
- import{A as e,B as t,C as n,D as r,E as i,F as a,K as o,R as s,T as c,b as l,g as u,h as d,k as f,l as p,m,t as h,v as g,y as _}from"./index-C0UtzWhe.js";import{t as v}from"./nestedRender-CLSeYn_G.js";var y={class:`email-viewer`},b={class:`email-header`},x={key:0,class:`email-meta`},S={key:0},C={key:0,class:`email-body`},w={class:`email-sidebar`},T={class:`body-tabs`},E=[`disabled`,`onClick`],D={class:`attachment-panel`},O={class:`attachment-title`},k=[`onClick`],A={class:`message-panel`},ee=[`srcdoc`],te={key:1,class:`email-text`},j={key:2,class:`email-text`},M={key:3,class:`attachment-preview`},N={class:`attachment-preview-head`},P={key:1,class:`email-state`},F={key:2,class:`email-error`},I=p(n({__name:`EmailViewer`,props:{data:{},type:{},filename:{},options:{}},setup(n){let p=n,I=a(null),L=a(!0),R=a(`正在解析邮件...`),z=a(``),B=a(`html`),V=a(null),H=a(null),U=new Map,W=[],G,K=e=>{if(!Number.isFinite(e)||e<0)return`-`;if(e<1024)return`${e} B`;let t=e/1024/1024;return t>=1?`${t.toFixed(+(t<10))} MB`:`${(e/1024).toFixed(+(e<10*1024))} KB`},q=e=>e?(Array.isArray(e)?e:[e]).flatMap(e=>{let t=e;return t.group?q(t.group):[{name:t.name||``,address:t.address||t.email||``}]}):[],J=e=>e.map(e=>e.name&&e.address?`${e.name} <${e.address}>`:e.address||e.name||``).filter(Boolean).join(`, `),Y=d(()=>{let e=I.value?.html||``;if(!e)return``;let t=e;return U.forEach((e,n)=>{t=t.replace(RegExp(`cid:${n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}`,`gi`),e)}),`<!doctype html><html><head><meta charset="utf-8"><base target="_blank"><style>body{margin:0;padding:18px;font-family:Aptos,"Segoe UI",sans-serif;line-height:1.6;color:#172033;word-break:break-word;}img{max-width:100%;height:auto;}</style></head><body>${t}</body></html>`}),X=d(()=>[{key:`html`,label:`HTML`,disabled:!I.value?.html},{key:`text`,label:`正文`,disabled:!I.value?.text},{key:`headers`,label:`头信息`,disabled:!I.value?.headers}]),Z=async e=>{if(e instanceof ArrayBuffer)return e;if(e instanceof Uint8Array){let t=new Uint8Array(e.byteLength);return t.set(e),t.buffer}return Z(new TextEncoder().encode(e))},Q=async()=>{let e=await(await h(async()=>{let{default:e}=await import(`./postal-mime-Bjwaq0co.js`);return{default:e}},[],import.meta.url)).default.parse(p.data,{attachmentEncoding:`arraybuffer`,maxNestingDepth:24,maxHeadersSize:2*1024*1024}),t=e.attachments.map((e,t)=>{let n=typeof e.content==`string`?e.content.length:e.content.byteLength,r=e.filename||`attachment-${t+1}`;return{id:`${t}-${r}`,name:r,mimeType:e.mimeType,size:n,contentId:e.contentId,load:()=>Z(e.content)}});return await Promise.all(t.map(async e=>{if(!e.contentId||!e.mimeType?.startsWith(`image/`))return;let t=await e.load(),n=URL.createObjectURL(new Blob([t],{type:e.mimeType}));W.push(n),U.set(e.contentId.replace(/[<>]/g,``),n)})),{kind:`eml`,subject:e.subject||p.filename,from:q(e.from),to:q(e.to),cc:q(e.cc),date:e.date,text:e.text,html:e.html,headers:e.headerLines?.map(e=>e.line).join(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./lib-BWPMQv-F.js","./index-kFSstoL8.js","./index-D8hVflyC.css"])))=>i.map(i=>d[i]);
2
+ import{A as e,B as t,C as n,D as r,E as i,F as a,K as o,R as s,T as c,b as l,g as u,h as d,k as f,l as p,m,t as h,v as g,y as _}from"./index-kFSstoL8.js";import{t as v}from"./nestedRender-agTARb8M.js";var y={class:`email-viewer`},b={class:`email-header`},x={key:0,class:`email-meta`},S={key:0},C={key:0,class:`email-body`},w={class:`email-sidebar`},T={class:`body-tabs`},E=[`disabled`,`onClick`],D={class:`attachment-panel`},O={class:`attachment-title`},k=[`onClick`],A={class:`message-panel`},ee=[`srcdoc`],te={key:1,class:`email-text`},j={key:2,class:`email-text`},M={key:3,class:`attachment-preview`},N={class:`attachment-preview-head`},P={key:1,class:`email-state`},F={key:2,class:`email-error`},I=p(n({__name:`EmailViewer`,props:{data:{},type:{},filename:{},options:{}},setup(n){let p=n,I=a(null),L=a(!0),R=a(`正在解析邮件...`),z=a(``),B=a(`html`),V=a(null),H=a(null),U=new Map,W=[],G,K=e=>{if(!Number.isFinite(e)||e<0)return`-`;if(e<1024)return`${e} B`;let t=e/1024/1024;return t>=1?`${t.toFixed(+(t<10))} MB`:`${(e/1024).toFixed(+(e<10*1024))} KB`},q=e=>e?(Array.isArray(e)?e:[e]).flatMap(e=>{let t=e;return t.group?q(t.group):[{name:t.name||``,address:t.address||t.email||``}]}):[],J=e=>e.map(e=>e.name&&e.address?`${e.name} <${e.address}>`:e.address||e.name||``).filter(Boolean).join(`, `),Y=d(()=>{let e=I.value?.html||``;if(!e)return``;let t=e;return U.forEach((e,n)=>{t=t.replace(RegExp(`cid:${n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}`,`gi`),e)}),`<!doctype html><html><head><meta charset="utf-8"><base target="_blank"><style>body{margin:0;padding:18px;font-family:Aptos,"Segoe UI",sans-serif;line-height:1.6;color:#172033;word-break:break-word;}img{max-width:100%;height:auto;}</style></head><body>${t}</body></html>`}),X=d(()=>[{key:`html`,label:`HTML`,disabled:!I.value?.html},{key:`text`,label:`正文`,disabled:!I.value?.text},{key:`headers`,label:`头信息`,disabled:!I.value?.headers}]),Z=async e=>{if(e instanceof ArrayBuffer)return e;if(e instanceof Uint8Array){let t=new Uint8Array(e.byteLength);return t.set(e),t.buffer}return Z(new TextEncoder().encode(e))},Q=async()=>{let e=await(await h(async()=>{let{default:e}=await import(`./postal-mime-CuiVR6kZ.js`);return{default:e}},[],import.meta.url)).default.parse(p.data,{attachmentEncoding:`arraybuffer`,maxNestingDepth:24,maxHeadersSize:2*1024*1024}),t=e.attachments.map((e,t)=>{let n=typeof e.content==`string`?e.content.length:e.content.byteLength,r=e.filename||`attachment-${t+1}`;return{id:`${t}-${r}`,name:r,mimeType:e.mimeType,size:n,contentId:e.contentId,load:()=>Z(e.content)}});return await Promise.all(t.map(async e=>{if(!e.contentId||!e.mimeType?.startsWith(`image/`))return;let t=await e.load(),n=URL.createObjectURL(new Blob([t],{type:e.mimeType}));W.push(n),U.set(e.contentId.replace(/[<>]/g,``),n)})),{kind:`eml`,subject:e.subject||p.filename,from:q(e.from),to:q(e.to),cc:q(e.cc),date:e.date,text:e.text,html:e.html,headers:e.headerLines?.map(e=>e.line).join(`
3
3
  `)||e.headers?.map(e=>`${e.originalKey}: ${e.value}`).join(`
4
- `),attachments:t}},ne=async()=>{let e=await h(()=>import(`./lib-BLtD-8__.js`).then(e=>o(e.default,1)),__vite__mapDeps([0,1,2]),import.meta.url),t=new(e.default?.default||e.default)(p.data),n=t.getFileData(),r=(n.attachments||[]).map((e,n)=>{let r=e.fileName||e.fileNameShort||e.name||`attachment-${n+1}${e.extension||``}`;return{id:`${n}-${r}`,name:r,mimeType:`application/octet-stream`,size:e.contentLength||e.size||0,contentId:e.pidContentId,async load(){return Z(t.getAttachment(e).content)}}});return{kind:`msg`,subject:n.subject||p.filename,from:q({name:n.senderName,address:n.senderEmail}),to:q(n.recipients||[]).filter(e=>e.name||e.address),cc:[],date:n.messageDeliveryTime||n.clientSubmitTime||n.creationTime,text:n.body,html:n.html||``,headers:n.headers,attachments:r}},re=async()=>{L.value=!0,z.value=``;try{I.value=p.type===`msg`?await ne():await Q(),B.value=I.value.html?`html`:I.value.text?`text`:`headers`}catch(e){console.error(e),z.value=e instanceof Error?e.message:String(e)}finally{L.value=!1}},$=()=>{G?.unmount?.(),G=void 0;let e=H.value;if(e)for(;e.firstChild;)e.removeChild(e.firstChild)},ie=async e=>{V.value=e,L.value=!0,R.value=`正在打开附件 ${e.name}...`;try{let t=await e.load();await c(),$();let n=H.value;if(!n)return;let r=document.createElement(`div`);r.className=`email-attachment-render`,n.appendChild(r),G=await v(t,e.name.includes(`.`)?e.name.slice(e.name.lastIndexOf(`.`)+1).toLowerCase():`txt`,r,{filename:e.name,options:p.options})}catch(e){console.error(e),z.value=e instanceof Error?e.message:String(e)}finally{L.value=!1,R.value=`正在解析邮件...`}},ae=async e=>{let t=await e.load(),n=URL.createObjectURL(new Blob([t],{type:e.mimeType||`application/octet-stream`}));W.push(n);let r=document.createElement(`a`);r.href=n,r.download=e.name,document.body.appendChild(r),r.click(),r.remove()};return r(()=>{re()}),i(()=>{$(),W.forEach(e=>URL.revokeObjectURL(e))}),(r,i)=>(f(),_(`section`,y,[u(`header`,b,[u(`span`,null,t(I.value?.kind?.toUpperCase()||n.type.toUpperCase()),1),u(`h2`,null,t(I.value?.subject||n.filename),1),I.value?(f(),_(`div`,x,[u(`p`,null,[i[1]||=u(`strong`,null,`发件人`,-1),l(t(J(I.value.from)||`-`),1)]),u(`p`,null,[i[2]||=u(`strong`,null,`收件人`,-1),l(t(J(I.value.to)||`-`),1)]),I.value.cc.length?(f(),_(`p`,S,[i[3]||=u(`strong`,null,`抄送`,-1),l(t(J(I.value.cc)),1)])):g(``,!0),u(`p`,null,[i[4]||=u(`strong`,null,`时间`,-1),l(t(I.value.date||`-`),1)])])):g(``,!0)]),I.value?(f(),_(`div`,C,[u(`aside`,w,[u(`div`,T,[(f(!0),_(m,null,e(X.value,e=>(f(),_(`button`,{key:e.key,type:`button`,disabled:e.disabled,class:s({active:B.value===e.key}),onClick:t=>B.value=e.key},t(e.label),11,E))),128))]),u(`section`,D,[u(`div`,O,[i[5]||=u(`strong`,null,`附件`,-1),u(`span`,null,t(I.value.attachments.length),1)]),(f(!0),_(m,null,e(I.value.attachments,e=>(f(),_(`button`,{key:e.id,type:`button`,class:s([`attachment-item`,{active:V.value?.id===e.id}]),onClick:t=>ie(e)},[u(`span`,null,t(e.name.split(`.`).pop()?.toUpperCase()||`FILE`),1),u(`strong`,null,t(e.name),1),u(`em`,null,t(K(e.size)),1)],10,k))),128))])]),u(`main`,A,[B.value===`html`&&Y.value?(f(),_(`iframe`,{key:0,class:`email-html`,sandbox:``,srcdoc:Y.value},null,8,ee)):B.value===`text`?(f(),_(`pre`,te,t(I.value.text),1)):(f(),_(`pre`,j,t(I.value.headers),1)),V.value?(f(),_(`section`,M,[u(`div`,N,[u(`strong`,null,t(V.value.name),1),u(`button`,{type:`button`,onClick:i[0]||=e=>ae(V.value)},`下载附件`)]),u(`div`,{ref_key:`attachmentTarget`,ref:H,class:`attachment-target`},null,512)])):g(``,!0)])])):g(``,!0),L.value?(f(),_(`div`,P,[i[6]||=u(`span`,null,null,-1),u(`strong`,null,t(R.value),1)])):g(``,!0),z.value?(f(),_(`div`,F,[i[7]||=u(`strong`,null,`邮件预览提示`,-1),u(`p`,null,t(z.value),1)])):g(``,!0)]))}}),[[`__scopeId`,`data-v-0989d798`]]);export{I as default};
4
+ `),attachments:t}},ne=async()=>{let e=await h(()=>import(`./lib-BWPMQv-F.js`).then(e=>o(e.default,1)),__vite__mapDeps([0,1,2]),import.meta.url),t=new(e.default?.default||e.default)(p.data),n=t.getFileData(),r=(n.attachments||[]).map((e,n)=>{let r=e.fileName||e.fileNameShort||e.name||`attachment-${n+1}${e.extension||``}`;return{id:`${n}-${r}`,name:r,mimeType:`application/octet-stream`,size:e.contentLength||e.size||0,contentId:e.pidContentId,async load(){return Z(t.getAttachment(e).content)}}});return{kind:`msg`,subject:n.subject||p.filename,from:q({name:n.senderName,address:n.senderEmail}),to:q(n.recipients||[]).filter(e=>e.name||e.address),cc:[],date:n.messageDeliveryTime||n.clientSubmitTime||n.creationTime,text:n.body,html:n.html||``,headers:n.headers,attachments:r}},re=async()=>{L.value=!0,z.value=``;try{I.value=p.type===`msg`?await ne():await Q(),B.value=I.value.html?`html`:I.value.text?`text`:`headers`}catch(e){console.error(e),z.value=e instanceof Error?e.message:String(e)}finally{L.value=!1}},$=()=>{G?.unmount?.(),G=void 0;let e=H.value;if(e)for(;e.firstChild;)e.removeChild(e.firstChild)},ie=async e=>{V.value=e,L.value=!0,R.value=`正在打开附件 ${e.name}...`;try{let t=await e.load();await c(),$();let n=H.value;if(!n)return;let r=document.createElement(`div`);r.className=`email-attachment-render`,n.appendChild(r),G=await v(t,e.name.includes(`.`)?e.name.slice(e.name.lastIndexOf(`.`)+1).toLowerCase():`txt`,r,{filename:e.name,options:p.options})}catch(e){console.error(e),z.value=e instanceof Error?e.message:String(e)}finally{L.value=!1,R.value=`正在解析邮件...`}},ae=async e=>{let t=await e.load(),n=URL.createObjectURL(new Blob([t],{type:e.mimeType||`application/octet-stream`}));W.push(n);let r=document.createElement(`a`);r.href=n,r.download=e.name,document.body.appendChild(r),r.click(),r.remove()};return r(()=>{re()}),i(()=>{$(),W.forEach(e=>URL.revokeObjectURL(e))}),(r,i)=>(f(),_(`section`,y,[u(`header`,b,[u(`span`,null,t(I.value?.kind?.toUpperCase()||n.type.toUpperCase()),1),u(`h2`,null,t(I.value?.subject||n.filename),1),I.value?(f(),_(`div`,x,[u(`p`,null,[i[1]||=u(`strong`,null,`发件人`,-1),l(t(J(I.value.from)||`-`),1)]),u(`p`,null,[i[2]||=u(`strong`,null,`收件人`,-1),l(t(J(I.value.to)||`-`),1)]),I.value.cc.length?(f(),_(`p`,S,[i[3]||=u(`strong`,null,`抄送`,-1),l(t(J(I.value.cc)),1)])):g(``,!0),u(`p`,null,[i[4]||=u(`strong`,null,`时间`,-1),l(t(I.value.date||`-`),1)])])):g(``,!0)]),I.value?(f(),_(`div`,C,[u(`aside`,w,[u(`div`,T,[(f(!0),_(m,null,e(X.value,e=>(f(),_(`button`,{key:e.key,type:`button`,disabled:e.disabled,class:s({active:B.value===e.key}),onClick:t=>B.value=e.key},t(e.label),11,E))),128))]),u(`section`,D,[u(`div`,O,[i[5]||=u(`strong`,null,`附件`,-1),u(`span`,null,t(I.value.attachments.length),1)]),(f(!0),_(m,null,e(I.value.attachments,e=>(f(),_(`button`,{key:e.id,type:`button`,class:s([`attachment-item`,{active:V.value?.id===e.id}]),onClick:t=>ie(e)},[u(`span`,null,t(e.name.split(`.`).pop()?.toUpperCase()||`FILE`),1),u(`strong`,null,t(e.name),1),u(`em`,null,t(K(e.size)),1)],10,k))),128))])]),u(`main`,A,[B.value===`html`&&Y.value?(f(),_(`iframe`,{key:0,class:`email-html`,sandbox:``,srcdoc:Y.value},null,8,ee)):B.value===`text`?(f(),_(`pre`,te,t(I.value.text),1)):(f(),_(`pre`,j,t(I.value.headers),1)),V.value?(f(),_(`section`,M,[u(`div`,N,[u(`strong`,null,t(V.value.name),1),u(`button`,{type:`button`,onClick:i[0]||=e=>ae(V.value)},`下载附件`)]),u(`div`,{ref_key:`attachmentTarget`,ref:H,class:`attachment-target`},null,512)])):g(``,!0)])])):g(``,!0),L.value?(f(),_(`div`,P,[i[6]||=u(`span`,null,null,-1),u(`strong`,null,t(R.value),1)])):g(``,!0),z.value?(f(),_(`div`,F,[i[7]||=u(`strong`,null,`邮件预览提示`,-1),u(`p`,null,t(z.value),1)])):g(``,!0)]))}}),[[`__scopeId`,`data-v-0989d798`]]);export{I as default};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./src-vkV3wo-k.js","./index-C0UtzWhe.js","./index-GSEVFUM2.css"])))=>i.map(i=>d[i]);
2
- import{A as e,B as t,C as n,D as r,E as i,F as a,R as o,T as s,g as c,h as l,k as u,l as d,m as f,t as p,v as m,y as h,z as g}from"./index-C0UtzWhe.js";var _={class:`epub-toolbar`},v={class:`epub-title`},y={class:`epub-actions`},b=[`disabled`],x={class:`epub-progress`},S=[`disabled`],C={class:`epub-body`},w={key:0,class:`epub-toc`},T={class:`epub-toc-head`},E={class:`epub-toc-list`},D=[`onClick`],O={class:`epub-stage-wrap`},k={key:0,class:`epub-state`},A={key:1,class:`epub-state error`},j=d(n({__name:`EpubViewer`,props:{data:{}},setup(n){let d=n,j=a(null),M=a(`loading`),N=a(``),P=a(!0),F=a(`EPUB 电子书`),I=a(``),L=a([]),R=a(``),z=a(null),B=a(!0),V=a(!1),H,U,W=!1,G,K=l(()=>{if(!R.value)return``;let e=L.value.find(e=>e.href===R.value);return e?e.label:L.value.find(e=>R.value.includes(e.href.split(`#`)[0]))?.label||``}),q=l(()=>typeof z.value==`number`?`${z.value}%`:K.value||`阅读中`),J=(e,t)=>typeof e==`string`&&e.trim()?e.trim():t,Y=(e,t=0)=>Array.isArray(e)?e.flatMap((e,n)=>{let r=e,i=typeof r.href==`string`?r.href:``,a=J(r.label||r.title,`章节 ${n+1}`),o=Y(r.subitems||r.children,t+1);return i?[{depth:t,href:i,id:`${t}-${n}-${i}`,label:a},...o]:o}):[],X=e=>{let t=e.find(e=>{let t=e.label.toLowerCase();return/(^|\s)(chapter|part|book|prologue|preface|introduction)\b/.test(t)||/第[一二三四五六七八九十百千0-9]+[章节回部卷篇]/.test(e.label)});return t?t.href:e.find(e=>{let t=`${e.label} ${e.href}`.toLowerCase();return!/(cover|titlepage|title-page|copyright|license|toc|contents|nav|table-of-contents|wrap0000)/.test(t)})?.href||e[0]?.href},Z=e=>{B.value=!!e?.atStart,V.value=!!e?.atEnd,R.value=e?.start?.href||``,typeof e?.start?.percentage==`number`&&(z.value=Math.round(e.start.percentage*100))},Q=e=>new Promise(t=>{G=window.setTimeout(t,e)}),$=()=>{let e=(j.value?.querySelector(`iframe`))?.contentDocument?.body;return e?!!(e.innerText.trim()||e.querySelector(`img, svg, canvas`)):!1},ee=async()=>{for(let e=0;e<20;e++){if(W||$())return $();await Q(100)}return $()},te=async()=>{M.value=`loading`,await s();let e=j.value;if(e)try{let{default:t}=await p(async()=>{let{default:e}=await import(`./src-vkV3wo-k.js`);return{default:e}},__vite__mapDeps([0,1,2]),import.meta.url);if(W)return;H=t(d.data.slice(0),{openAs:`binary`,replacements:`blobUrl`}),U=H.renderTo(e,{allowScriptedContent:!1,flow:`scrolled`,height:`100%`,manager:`continuous`,resizeOnOrientationChange:!0,spread:`none`,width:`100%`}),U.themes.default({body:{color:`#172033`,fontFamily:`Georgia, "Times New Roman", serif`,lineHeight:`1.72`,padding:`0 8px`},img:{maxWidth:`100%`},html:{height:`auto`,overflow:`auto`}}),U.on(`relocated`,Z),await H.ready;let n=await H.loaded.metadata.catch(()=>void 0);F.value=J(n?.title,F.value),I.value=J(n?.creator,``),L.value=Y((await H.loaded.navigation.catch(()=>void 0))?.toc);let r=X(L.value);if(await U.display(r),!await ee())throw Error(`EPUB 正文渲染未完成,请刷新后重试`);if(W)return;M.value=`ready`,H.locations.generate(1200).catch(()=>void 0)}catch(e){console.error(e),N.value=e instanceof Error?e.message:String(e),M.value=`error`}},ne=async()=>{await U?.prev()},re=async()=>{await U?.next()},ie=async e=>{await U?.display(e.href),P.value=!1};return r(te),i(()=>{W=!0,G!==void 0&&(clearTimeout(G),G=void 0),U&&=(U.off(`relocated`,Z),U.destroy(),void 0),H?.destroy(),H=void 0}),(n,r)=>(u(),h(`div`,{class:o([`epub-viewer`,{"epub-viewer--toc-hidden":!P.value}])},[c(`div`,_,[c(`button`,{type:`button`,class:o([`epub-icon-button`,{active:P.value}]),title:`目录`,onClick:r[0]||=e=>P.value=!P.value},[...r[1]||=[c(`span`,null,null,-1)]],2),c(`div`,v,[c(`strong`,null,t(F.value),1),c(`span`,null,t(I.value||q.value),1)]),c(`div`,y,[c(`button`,{type:`button`,class:`epub-button`,disabled:M.value!==`ready`||B.value,onClick:ne},` 上一页 `,8,b),c(`span`,x,t(q.value),1),c(`button`,{type:`button`,class:`epub-button`,disabled:M.value!==`ready`||V.value,onClick:re},` 下一页 `,8,S)])]),c(`div`,C,[P.value?(u(),h(`aside`,w,[c(`div`,T,[r[2]||=c(`strong`,null,`目录`,-1),c(`span`,null,t(L.value.length)+` 项`,1)]),c(`div`,E,[(u(!0),h(f,null,e(L.value,e=>(u(),h(`button`,{key:e.id,type:`button`,class:o([`epub-toc-item`,{active:e.href===R.value}]),style:g({paddingLeft:`${12+e.depth*14}px`}),onClick:t=>ie(e)},t(e.label),15,D))),128))])])):m(``,!0),c(`main`,O,[c(`div`,{ref_key:`stage`,ref:j,class:`epub-stage`},null,512),M.value===`loading`?(u(),h(`div`,k,`正在解析 EPUB...`)):M.value===`error`?(u(),h(`div`,A,t(N.value),1)):m(``,!0)])])],2))}}),[[`__scopeId`,`data-v-8f8a2b3b`]]);export{j as default};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./src-nayzRmN3.js","./index-kFSstoL8.js","./index-D8hVflyC.css"])))=>i.map(i=>d[i]);
2
+ import{A as e,B as t,C as n,D as r,E as i,F as a,R as o,T as s,g as c,h as l,k as u,l as d,m as f,t as p,v as m,y as h,z as g}from"./index-kFSstoL8.js";var _={class:`epub-toolbar`},v={class:`epub-title`},y={class:`epub-actions`},b=[`disabled`],x={class:`epub-progress`},S=[`disabled`],C={class:`epub-body`},w={key:0,class:`epub-toc`},T={class:`epub-toc-head`},E={class:`epub-toc-list`},D=[`onClick`],O={class:`epub-stage-wrap`},k={key:0,class:`epub-state`},A={key:1,class:`epub-state error`},j=d(n({__name:`EpubViewer`,props:{data:{}},setup(n){let d=n,j=a(null),M=a(`loading`),N=a(``),P=a(!0),F=a(`EPUB 电子书`),I=a(``),L=a([]),R=a(``),z=a(null),B=a(!0),V=a(!1),H,U,W=!1,G,K=l(()=>{if(!R.value)return``;let e=L.value.find(e=>e.href===R.value);return e?e.label:L.value.find(e=>R.value.includes(e.href.split(`#`)[0]))?.label||``}),q=l(()=>typeof z.value==`number`?`${z.value}%`:K.value||`阅读中`),J=(e,t)=>typeof e==`string`&&e.trim()?e.trim():t,Y=(e,t=0)=>Array.isArray(e)?e.flatMap((e,n)=>{let r=e,i=typeof r.href==`string`?r.href:``,a=J(r.label||r.title,`章节 ${n+1}`),o=Y(r.subitems||r.children,t+1);return i?[{depth:t,href:i,id:`${t}-${n}-${i}`,label:a},...o]:o}):[],X=e=>{let t=e.find(e=>{let t=e.label.toLowerCase();return/(^|\s)(chapter|part|book|prologue|preface|introduction)\b/.test(t)||/第[一二三四五六七八九十百千0-9]+[章节回部卷篇]/.test(e.label)});return t?t.href:e.find(e=>{let t=`${e.label} ${e.href}`.toLowerCase();return!/(cover|titlepage|title-page|copyright|license|toc|contents|nav|table-of-contents|wrap0000)/.test(t)})?.href||e[0]?.href},Z=e=>{B.value=!!e?.atStart,V.value=!!e?.atEnd,R.value=e?.start?.href||``,typeof e?.start?.percentage==`number`&&(z.value=Math.round(e.start.percentage*100))},Q=e=>new Promise(t=>{G=window.setTimeout(t,e)}),$=()=>{let e=(j.value?.querySelector(`iframe`))?.contentDocument?.body;return e?!!(e.innerText.trim()||e.querySelector(`img, svg, canvas`)):!1},ee=async()=>{for(let e=0;e<20;e++){if(W||$())return $();await Q(100)}return $()},te=async()=>{M.value=`loading`,await s();let e=j.value;if(e)try{let{default:t}=await p(async()=>{let{default:e}=await import(`./src-nayzRmN3.js`);return{default:e}},__vite__mapDeps([0,1,2]),import.meta.url);if(W)return;H=t(d.data.slice(0),{openAs:`binary`,replacements:`blobUrl`}),U=H.renderTo(e,{allowScriptedContent:!1,flow:`scrolled`,height:`100%`,manager:`continuous`,resizeOnOrientationChange:!0,spread:`none`,width:`100%`}),U.themes.default({body:{color:`#172033`,fontFamily:`Georgia, "Times New Roman", serif`,lineHeight:`1.72`,padding:`0 8px`},img:{maxWidth:`100%`},html:{height:`auto`,overflow:`auto`}}),U.on(`relocated`,Z),await H.ready;let n=await H.loaded.metadata.catch(()=>void 0);F.value=J(n?.title,F.value),I.value=J(n?.creator,``),L.value=Y((await H.loaded.navigation.catch(()=>void 0))?.toc);let r=X(L.value);if(await U.display(r),!await ee())throw Error(`EPUB 正文渲染未完成,请刷新后重试`);if(W)return;M.value=`ready`,H.locations.generate(1200).catch(()=>void 0)}catch(e){console.error(e),N.value=e instanceof Error?e.message:String(e),M.value=`error`}},ne=async()=>{await U?.prev()},re=async()=>{await U?.next()},ie=async e=>{await U?.display(e.href),P.value=!1};return r(te),i(()=>{W=!0,G!==void 0&&(clearTimeout(G),G=void 0),U&&=(U.off(`relocated`,Z),U.destroy(),void 0),H?.destroy(),H=void 0}),(n,r)=>(u(),h(`div`,{class:o([`epub-viewer`,{"epub-viewer--toc-hidden":!P.value}])},[c(`div`,_,[c(`button`,{type:`button`,class:o([`epub-icon-button`,{active:P.value}]),title:`目录`,onClick:r[0]||=e=>P.value=!P.value},[...r[1]||=[c(`span`,null,null,-1)]],2),c(`div`,v,[c(`strong`,null,t(F.value),1),c(`span`,null,t(I.value||q.value),1)]),c(`div`,y,[c(`button`,{type:`button`,class:`epub-button`,disabled:M.value!==`ready`||B.value,onClick:ne},` 上一页 `,8,b),c(`span`,x,t(q.value),1),c(`button`,{type:`button`,class:`epub-button`,disabled:M.value!==`ready`||V.value,onClick:re},` 下一页 `,8,S)])]),c(`div`,C,[P.value?(u(),h(`aside`,w,[c(`div`,T,[r[2]||=c(`strong`,null,`目录`,-1),c(`span`,null,t(L.value.length)+` 项`,1)]),c(`div`,E,[(u(!0),h(f,null,e(L.value,e=>(u(),h(`button`,{key:e.id,type:`button`,class:o([`epub-toc-item`,{active:e.href===R.value}]),style:g({paddingLeft:`${12+e.depth*14}px`}),onClick:t=>ie(e)},t(e.label),15,D))),128))])])):m(``,!0),c(`main`,O,[c(`div`,{ref_key:`stage`,ref:j,class:`epub-stage`},null,512),M.value===`loading`?(u(),h(`div`,k,`正在解析 EPUB...`)):M.value===`error`?(u(),h(`div`,A,t(N.value),1)):m(``,!0)])])],2))}}),[[`__scopeId`,`data-v-8f8a2b3b`]]);export{j as default};
@@ -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-Co97Nwgn.js";import{n as ae}from"./fflate.module-IyciJBwI.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-DQeeIQFF.js";import{n as ae}from"./fflate.module-DmN2iWjn.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 +1 @@
1
- import{$ as e,A as t,B as n,Bt as r,C as i,Ct as a,Dt as o,E as s,Ft as c,G as l,H as u,Ht as d,I as f,K as p,L as m,M as h,Mt as g,N as _,O as v,Ot as ee,P as te,Pt as y,R as ne,U as re,V as ie,W as ae,X as b,Z as oe,_t as se,at as x,bt as ce,ct as le,dt as ue,et as de,f as fe,ft as pe,gt as me,ht as he,it as S,k as ge,kt as _e,l as C,lt as ve,m as w,o as ye,ot as be,p as T,pt as xe,q as E,r as Se,s as Ce,st as we,tt as D,u as Te,ut as O,vt as Ee,wt as k,x as De,yt as A,z as Oe,zt as j}from"./three.module-Co97Nwgn.js";function M(e,t){if(t===0)return console.warn(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.`),e;if(t===2||t===1){let n=e.getIndex();if(n===null){let t=[],r=e.getAttribute(`position`);if(r!==void 0){for(let e=0;e<r.count;e++)t.push(e);e.setIndex(t),n=e.getIndex()}else return console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.`),e}let r=n.count-2,i=[];if(t===2)for(let e=1;e<=r;e++)i.push(n.getX(0)),i.push(n.getX(e)),i.push(n.getX(e+1));else for(let e=0;e<r;e++)e%2==0?(i.push(n.getX(e)),i.push(n.getX(e+1)),i.push(n.getX(e+2))):(i.push(n.getX(e+2)),i.push(n.getX(e+1)),i.push(n.getX(e)));i.length/3!==r&&console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.`);let a=e.clone();return a.setIndex(i),a.clearGroups(),a}else return console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:`,t),e}function ke(e){let t=new Map,n=new Map,r=e.clone();return N(e,r,function(e,r){t.set(r,e),n.set(e,r)}),r.traverse(function(e){if(!e.isSkinnedMesh)return;let r=e,i=t.get(e),a=i.skeleton.bones;r.skeleton=i.skeleton.clone(),r.bindMatrix.copy(i.bindMatrix),r.skeleton.bones=a.map(function(e){return n.get(e)}),r.bind(r.skeleton,r.bindMatrix)}),r}function N(e,t,n){n(e,t);for(let r=0;r<e.children.length;r++)N(e.children[r],t.children[r],n)}var Ae=class extends p{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new Fe(e)}),this.register(function(e){return new Ie(e)}),this.register(function(e){return new Ge(e)}),this.register(function(e){return new Ke(e)}),this.register(function(e){return new qe(e)}),this.register(function(e){return new Re(e)}),this.register(function(e){return new ze(e)}),this.register(function(e){return new Be(e)}),this.register(function(e){return new Ve(e)}),this.register(function(e){return new Pe(e)}),this.register(function(e){return new He(e)}),this.register(function(e){return new Le(e)}),this.register(function(e){return new We(e)}),this.register(function(e){return new Ue(e)}),this.register(function(e){return new Me(e)}),this.register(function(e){return new I(e,F.EXT_MESHOPT_COMPRESSION)}),this.register(function(e){return new I(e,F.KHR_MESHOPT_COMPRESSION)}),this.register(function(e){return new Je(e)})}load(e,t,n,r){let a=this,o;if(this.resourcePath!==``)o=this.resourcePath;else if(this.path!==``){let t=E.extractUrlBase(e);o=E.resolveURL(t,this.path)}else o=E.extractUrlBase(e);this.manager.itemStart(e);let s=function(t){r?r(t):console.error(t),a.manager.itemError(e),a.manager.itemEnd(e)},c=new i(this.manager);c.setPath(this.path),c.setResponseType(`arraybuffer`),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(n){try{a.parse(n,o,function(n){t(n),a.manager.itemEnd(e)},s)}catch(e){s(e)}},n,s)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,r){let i,a={},o={},s=new TextDecoder;if(typeof e==`string`)i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(s.decode(new Uint8Array(e,0,4))===L){try{a[F.KHR_BINARY_GLTF]=new Ye(e)}catch(e){r&&r(e);return}i=JSON.parse(a[F.KHR_BINARY_GLTF].content)}else i=JSON.parse(s.decode(e));else i=e;if(i.asset===void 0||i.asset.version[0]<2){r&&r(Error(`THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.`));return}let c=new ct(i,{path:t||this.resourcePath||``,crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](c);t.name||console.error(`THREE.GLTFLoader: Invalid plugin found: missing name`),o[t.name]=t,a[t.name]=!0}if(i.extensionsUsed)for(let e=0;e<i.extensionsUsed.length;++e){let t=i.extensionsUsed[e],n=i.extensionsRequired||[];switch(t){case F.KHR_MATERIALS_UNLIT:a[t]=new Ne;break;case F.KHR_DRACO_MESH_COMPRESSION:a[t]=new Xe(i,this.dracoLoader);break;case F.KHR_TEXTURE_TRANSFORM:a[t]=new Ze;break;case F.KHR_MESH_QUANTIZATION:a[t]=new Qe;break;default:n.indexOf(t)>=0&&o[t]===void 0&&console.warn(`THREE.GLTFLoader: Unknown extension "`+t+`".`)}}c.setExtensions(a),c.setPlugins(o),c.parse(n,r)}parseAsync(e,t){let n=this;return new Promise(function(r,i){n.parse(e,t,r,i)})}};function je(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}function P(e,t,n){let r=e.json.materials[t];return r.extensions&&r.extensions[n]?r.extensions[n]:null}var F={KHR_BINARY_GLTF:`KHR_binary_glTF`,KHR_DRACO_MESH_COMPRESSION:`KHR_draco_mesh_compression`,KHR_LIGHTS_PUNCTUAL:`KHR_lights_punctual`,KHR_MATERIALS_CLEARCOAT:`KHR_materials_clearcoat`,KHR_MATERIALS_DISPERSION:`KHR_materials_dispersion`,KHR_MATERIALS_IOR:`KHR_materials_ior`,KHR_MATERIALS_SHEEN:`KHR_materials_sheen`,KHR_MATERIALS_SPECULAR:`KHR_materials_specular`,KHR_MATERIALS_TRANSMISSION:`KHR_materials_transmission`,KHR_MATERIALS_IRIDESCENCE:`KHR_materials_iridescence`,KHR_MATERIALS_ANISOTROPY:`KHR_materials_anisotropy`,KHR_MATERIALS_UNLIT:`KHR_materials_unlit`,KHR_MATERIALS_VOLUME:`KHR_materials_volume`,KHR_TEXTURE_BASISU:`KHR_texture_basisu`,KHR_TEXTURE_TRANSFORM:`KHR_texture_transform`,KHR_MESH_QUANTIZATION:`KHR_mesh_quantization`,KHR_MATERIALS_EMISSIVE_STRENGTH:`KHR_materials_emissive_strength`,EXT_MATERIALS_BUMP:`EXT_materials_bump`,EXT_TEXTURE_WEBP:`EXT_texture_webp`,EXT_TEXTURE_AVIF:`EXT_texture_avif`,EXT_MESHOPT_COMPRESSION:`EXT_meshopt_compression`,KHR_MESHOPT_COMPRESSION:`KHR_meshopt_compression`,EXT_MESH_GPU_INSTANCING:`EXT_mesh_gpu_instancing`},Me=class{constructor(e){this.parser=e,this.name=F.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n<r;n++){let r=t[n];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){let t=this.parser,n=`light:`+e,r=t.cache.get(n);if(r)return r;let i=t.json,a=((i.extensions&&i.extensions[this.name]||{}).lights||[])[e],o,s=new T(16777215);a.color!==void 0&&s.setRGB(a.color[0],a.color[1],a.color[2],l);let c=a.range===void 0?0:a.range;switch(a.type){case`directional`:o=new De(s),o.target.position.set(0,0,-1),o.add(o.target);break;case`point`:o=new he(s),o.distance=c;break;case`spot`:o=new g(s),o.distance=c,a.spot=a.spot||{},a.spot.innerConeAngle=a.spot.innerConeAngle===void 0?0:a.spot.innerConeAngle,a.spot.outerConeAngle=a.spot.outerConeAngle===void 0?Math.PI/4:a.spot.outerConeAngle,o.angle=a.spot.outerConeAngle,o.penumbra=1-a.spot.innerConeAngle/a.spot.outerConeAngle,o.target.position.set(0,0,-1),o.add(o.target);break;default:throw Error(`THREE.GLTFLoader: Unexpected light type: `+a.type)}return o.position.set(0,0,0),X(o,a),a.intensity!==void 0&&(o.intensity=a.intensity),o.name=t.createUniqueName(a.name||`light_`+e),r=Promise.resolve(o),t.cache.add(n,r),r}getDependency(e,t){if(e===`light`)return this._loadLight(t)}createNodeAttachment(e){let t=this,n=this.parser,r=n.json.nodes[e],i=(r.extensions&&r.extensions[this.name]||{}).light;return i===void 0?null:this._loadLight(i).then(function(e){return n._getNodeRef(t.cache,i,e)})}},Ne=class{constructor(){this.name=F.KHR_MATERIALS_UNLIT}getMaterialType(){return D}extendParams(e,t,n){let r=[];e.color=new T(1,1,1),e.opacity=1;let i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){let t=i.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],l),e.opacity=t[3]}i.baseColorTexture!==void 0&&r.push(n.assignTexture(e,`map`,i.baseColorTexture,k))}return Promise.all(r)}},Pe=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);return n===null||n.emissiveStrength!==void 0&&(t.emissiveIntensity=n.emissiveStrength),Promise.resolve()}},Fe=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];if(n.clearcoatFactor!==void 0&&(t.clearcoat=n.clearcoatFactor),n.clearcoatTexture!==void 0&&r.push(this.parser.assignTexture(t,`clearcoatMap`,n.clearcoatTexture)),n.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=n.clearcoatRoughnessFactor),n.clearcoatRoughnessTexture!==void 0&&r.push(this.parser.assignTexture(t,`clearcoatRoughnessMap`,n.clearcoatRoughnessTexture)),n.clearcoatNormalTexture!==void 0&&(r.push(this.parser.assignTexture(t,`clearcoatNormalMap`,n.clearcoatNormalTexture)),n.clearcoatNormalTexture.scale!==void 0)){let e=n.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new j(e,e)}return Promise.all(r)}},Ie=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_DISPERSION}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);return n===null||(t.dispersion=n.dispersion===void 0?0:n.dispersion),Promise.resolve()}},Le=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.iridescenceFactor!==void 0&&(t.iridescence=n.iridescenceFactor),n.iridescenceTexture!==void 0&&r.push(this.parser.assignTexture(t,`iridescenceMap`,n.iridescenceTexture)),n.iridescenceIor!==void 0&&(t.iridescenceIOR=n.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),n.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=n.iridescenceThicknessMinimum),n.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=n.iridescenceThicknessMaximum),n.iridescenceThicknessTexture!==void 0&&r.push(this.parser.assignTexture(t,`iridescenceThicknessMap`,n.iridescenceThicknessTexture)),Promise.all(r)}},Re=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_SHEEN}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];if(t.sheenColor=new T(0,0,0),t.sheenRoughness=0,t.sheen=1,n.sheenColorFactor!==void 0){let e=n.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],l)}return n.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=n.sheenRoughnessFactor),n.sheenColorTexture!==void 0&&r.push(this.parser.assignTexture(t,`sheenColorMap`,n.sheenColorTexture,k)),n.sheenRoughnessTexture!==void 0&&r.push(this.parser.assignTexture(t,`sheenRoughnessMap`,n.sheenRoughnessTexture)),Promise.all(r)}},ze=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.transmissionFactor!==void 0&&(t.transmission=n.transmissionFactor),n.transmissionTexture!==void 0&&r.push(this.parser.assignTexture(t,`transmissionMap`,n.transmissionTexture)),Promise.all(r)}},Be=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_VOLUME}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];t.thickness=n.thicknessFactor===void 0?0:n.thicknessFactor,n.thicknessTexture!==void 0&&r.push(this.parser.assignTexture(t,`thicknessMap`,n.thicknessTexture)),t.attenuationDistance=n.attenuationDistance||1/0;let i=n.attenuationColor||[1,1,1];return t.attenuationColor=new T().setRGB(i[0],i[1],i[2],l),Promise.all(r)}},Ve=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_IOR}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);return n===null?Promise.resolve():(t.ior=n.ior===void 0?1.5:n.ior,t.ior===0&&(t.ior=1e3),Promise.resolve())}},He=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_SPECULAR}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];t.specularIntensity=n.specularFactor===void 0?1:n.specularFactor,n.specularTexture!==void 0&&r.push(this.parser.assignTexture(t,`specularIntensityMap`,n.specularTexture));let i=n.specularColorFactor||[1,1,1];return t.specularColor=new T().setRGB(i[0],i[1],i[2],l),n.specularColorTexture!==void 0&&r.push(this.parser.assignTexture(t,`specularColorMap`,n.specularColorTexture,k)),Promise.all(r)}},Ue=class{constructor(e){this.parser=e,this.name=F.EXT_MATERIALS_BUMP}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return t.bumpScale=n.bumpFactor===void 0?1:n.bumpFactor,n.bumpTexture!==void 0&&r.push(this.parser.assignTexture(t,`bumpMap`,n.bumpTexture)),Promise.all(r)}},We=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.anisotropyStrength!==void 0&&(t.anisotropy=n.anisotropyStrength),n.anisotropyRotation!==void 0&&(t.anisotropyRotation=n.anisotropyRotation),n.anisotropyTexture!==void 0&&r.push(this.parser.assignTexture(t,`anisotropyMap`,n.anisotropyTexture)),Promise.all(r)}},Ge=class{constructor(e){this.parser=e,this.name=F.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,n=t.json,r=n.textures[e];if(!r.extensions||!r.extensions[this.name])return null;let i=r.extensions[this.name],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures`);return null}return t.loadTextureImage(e,i.source,a)}},Ke=class{constructor(e){this.parser=e,this.name=F.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return n.loadTextureImage(e,a.source,s)}},qe=class{constructor(e){this.parser=e,this.name=F.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return n.loadTextureImage(e,a.source,s)}},I=class{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let e=n.extensions[this.name],r=this.parser.getDependency(`buffer`,e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files`);return null}return r.then(function(t){let n=e.byteOffset||0,r=e.byteLength||0,a=e.count,o=e.byteStride,s=new Uint8Array(t,n,r);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,o,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*o);return i.decodeGltfBuffer(new Uint8Array(t),a,o,s,e.mode,e.filter),t})})}else return null}},Je=class{constructor(e){this.name=F.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(n){let i=this.parser.json,a=i.nodes[n];if(!a.extensions||!a.extensions[this.name]||a.mesh===void 0)return null;let o=i.meshes[a.mesh];for(let e of o.primitives)if(e.mode!==V.TRIANGLES&&e.mode!==V.TRIANGLE_STRIP&&e.mode!==V.TRIANGLE_FAN&&e.mode!==void 0)return null;let s=a.extensions[this.name].attributes,c=[],l={};for(let e in s)c.push(this.parser.getDependency(`accessor`,s[e]).then(t=>(l[e]=t,l[e])));return c.length<1?null:(c.push(this.parser.createNodeMesh(n)),Promise.all(c).then(n=>{let i=n.pop(),a=i.isGroup?i.children:[i],o=n[0].count,s=[];for(let n of a){let i=new e,a=new r,c=new A,u=new r(1,1,1),d=new t(n.geometry,n.material,o);for(let e=0;e<o;e++)l.TRANSLATION&&a.fromBufferAttribute(l.TRANSLATION,e),l.ROTATION&&c.fromBufferAttribute(l.ROTATION,e),l.SCALE&&u.fromBufferAttribute(l.SCALE,e),d.setMatrixAt(e,i.compose(a,c,u));for(let e in l)if(e===`_COLOR_0`){let t=l[e];d.instanceColor=new ge(t.array,t.itemSize,t.normalized)}else e!==`TRANSLATION`&&e!==`ROTATION`&&e!==`SCALE`&&n.geometry.setAttribute(e,l[e]);ue.prototype.copy.call(d,n),this.parser.assignFinalMaterial(d),s.push(d)}return i.isGroup?(i.clear(),i.add(...s),i):s[0]}))}},L=`glTF`,R=12,z={JSON:1313821514,BIN:5130562},Ye=class{constructor(e){this.name=F.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,R),n=new TextDecoder;if(this.header={magic:n.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==L)throw Error(`THREE.GLTFLoader: Unsupported glTF-Binary header.`);if(this.header.version<2)throw Error(`THREE.GLTFLoader: Legacy binary file detected.`);let r=this.header.length-R,i=new DataView(e,R),a=0;for(;a<r;){let t=i.getUint32(a,!0);a+=4;let r=i.getUint32(a,!0);if(a+=4,r===z.JSON){let r=new Uint8Array(e,R+a,t);this.content=n.decode(r)}else if(r===z.BIN){let n=R+a;this.body=e.slice(n,n+t)}a+=t}if(this.content===null)throw Error(`THREE.GLTFLoader: JSON content not found.`)}},Xe=class{constructor(e,t){if(!t)throw Error(`THREE.GLTFLoader: No DRACOLoader instance provided.`);this.name=F.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let n=this.json,r=this.dracoLoader,i=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},s={},c={};for(let e in a){let t=K[e]||e.toLowerCase();o[t]=a[e]}for(let t in e.attributes){let r=K[t]||t.toLowerCase();if(a[t]!==void 0){let i=n.accessors[e.attributes[t]];c[r]=H[i.componentType].name,s[r]=i.normalized===!0}}return t.getDependency(`bufferView`,i).then(function(e){return new Promise(function(t,n){r.decodeDracoFile(e,function(e){for(let t in e.attributes){let n=e.attributes[t],r=s[t];r!==void 0&&(n.normalized=r)}t(e)},o,c,l,n)})})}},Ze=class{constructor(){this.name=F.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0?e:(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0,e)}},Qe=class{constructor(){this.name=F.KHR_MESH_QUANTIZATION}},B=class extends te{constructor(e,t,n,r){super(e,t,n,r)}copySampleValue_(e){let t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,i=e*r*3+r;for(let e=0;e!==r;e++)t[e]=n[i+e];return t}interpolate_(e,t,n,r){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=o*2,c=o*3,l=r-t,u=(n-t)/l,d=u*u,f=d*u,p=e*c,m=p-c,h=-2*f+3*d,g=f-d,_=1-h,v=g-d+u;for(let e=0;e!==o;e++){let t=a[m+e+o],n=a[m+e+s]*l,r=a[p+e+o],c=a[p+e]*l;i[e]=_*t+v*n+h*r+g*c}return i}},$e=new A,et=class extends B{interpolate_(e,t,n,r){let i=super.interpolate_(e,t,n,r);return $e.fromArray(i).normalize().toArray(i),i}},V={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},H={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},U={9728:we,9729:u,9984:ve,9985:ae,9986:le,9987:re},W={33071:fe,33648:be,10497:a},G={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},K={POSITION:`position`,NORMAL:`normal`,TANGENT:`tangent`,TEXCOORD_0:`uv`,TEXCOORD_1:`uv1`,TEXCOORD_2:`uv2`,TEXCOORD_3:`uv3`,COLOR_0:`color`,WEIGHTS_0:`skinWeight`,JOINTS_0:`skinIndex`},q={scale:`scale`,translation:`position`,rotation:`quaternion`,weights:`morphTargetInfluences`},tt={CUBICSPLINE:void 0,LINEAR:m,STEP:f},J={OPAQUE:`OPAQUE`,MASK:`MASK`,BLEND:`BLEND`};function nt(e){return e.DefaultMaterial===void 0&&(e.DefaultMaterial=new x({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:0})),e.DefaultMaterial}function Y(e,t,n){for(let r in n.extensions)e[r]===void 0&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[r]=n.extensions[r])}function X(e,t){t.extras!==void 0&&(typeof t.extras==`object`?Object.assign(e.userData,t.extras):console.warn(`THREE.GLTFLoader: Ignoring primitive type .extras, `+t.extras))}function rt(e,t,n){let r=!1,i=!1,a=!1;for(let e=0,n=t.length;e<n;e++){let n=t[e];if(n.POSITION!==void 0&&(r=!0),n.NORMAL!==void 0&&(i=!0),n.COLOR_0!==void 0&&(a=!0),r&&i&&a)break}if(!r&&!i&&!a)return Promise.resolve(e);let o=[],s=[],c=[];for(let l=0,u=t.length;l<u;l++){let u=t[l];if(r){let t=u.POSITION===void 0?e.attributes.position:n.getDependency(`accessor`,u.POSITION);o.push(t)}if(i){let t=u.NORMAL===void 0?e.attributes.normal:n.getDependency(`accessor`,u.NORMAL);s.push(t)}if(a){let t=u.COLOR_0===void 0?e.attributes.color:n.getDependency(`accessor`,u.COLOR_0);c.push(t)}}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(c)]).then(function(t){let n=t[0],o=t[1],s=t[2];return r&&(e.morphAttributes.position=n),i&&(e.morphAttributes.normal=o),a&&(e.morphAttributes.color=s),e.morphTargetsRelative=!0,e})}function it(e,t){if(e.updateMorphTargets(),t.weights!==void 0)for(let n=0,r=t.weights.length;n<r;n++)e.morphTargetInfluences[n]=t.weights[n];if(t.extras&&Array.isArray(t.extras.targetNames)){let n=t.extras.targetNames;if(e.morphTargetInfluences.length===n.length){e.morphTargetDictionary={};for(let t=0,r=n.length;t<r;t++)e.morphTargetDictionary[n[t]]=t}else console.warn(`THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.`)}}function at(e){let t,n=e.extensions&&e.extensions[F.KHR_DRACO_MESH_COMPRESSION];if(t=n?`draco:`+n.bufferView+`:`+n.indices+`:`+Z(n.attributes):e.indices+`:`+Z(e.attributes)+`:`+e.mode,e.targets!==void 0)for(let n=0,r=e.targets.length;n<r;n++)t+=`:`+Z(e.targets[n]);return t}function Z(e){let t=``,n=Object.keys(e).sort();for(let r=0,i=n.length;r<i;r++)t+=n[r]+`:`+e[n[r]]+`;`;return t}function Q(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error(`THREE.GLTFLoader: Unsupported normalized accessor component type.`)}}function ot(e){return e.search(/\.jpe?g($|\?)/i)>0||e.search(/^data\:image\/jpeg/)===0?`image/jpeg`:e.search(/\.webp($|\?)/i)>0||e.search(/^data\:image\/webp/)===0?`image/webp`:e.search(/\.ktx2($|\?)/i)>0||e.search(/^data\:image\/ktx2/)===0?`image/ktx2`:`image/png`}var st=new e,ct=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new je,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,r=-1,a=!1,o=-1;if(typeof navigator<`u`&&navigator.userAgent!==void 0){let e=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(e)===!0;let t=e.match(/Version\/(\d+)/);r=n&&t?parseInt(t[1],10):-1,a=e.indexOf(`Firefox`)>-1,o=a?e.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>`u`||n&&r<17||a&&o<98?this.textureLoader=new c(this.options.manager):this.textureLoader=new v(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new i(this.options.manager),this.fileLoader.setResponseType(`arraybuffer`),this.options.crossOrigin===`use-credentials`&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let n=this,r=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([n.getDependencies(`scene`),n.getDependencies(`animation`),n.getDependencies(`camera`)])}).then(function(t){let a={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:n,userData:{}};return Y(i,a,r),X(a,r),Promise.all(n._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let n=0,r=t.length;n<r;n++){let r=t[n].joints;for(let t=0,n=r.length;t<n;t++)e[r[t]].isBone=!0}for(let t=0,r=e.length;t<r;t++){let r=e[t];r.mesh!==void 0&&(this._addNodeRef(this.meshCache,r.mesh),r.skin!==void 0&&(n[r.mesh].isSkinnedMesh=!0)),r.camera!==void 0&&this._addNodeRef(this.cameraCache,r.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]<=1)return n;let r=n.clone(),i=(e,t)=>{let n=this.associations.get(e);n!=null&&this.associations.set(t,n);for(let[n,r]of e.children.entries())i(r,t.children[n])};return i(n,r),r.name+=`_instance_`+ e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){let r=e(t[n]);if(r)return r}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let n=[];for(let r=0;r<t.length;r++){let i=e(t[r]);i&&n.push(i)}return n}getDependency(e,t){let n=e+`:`+t,r=this.cache.get(n);if(!r){switch(e){case`scene`:r=this.loadScene(t);break;case`node`:r=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case`mesh`:r=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case`accessor`:r=this.loadAccessor(t);break;case`bufferView`:r=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case`buffer`:r=this.loadBuffer(t);break;case`material`:r=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case`texture`:r=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case`skin`:r=this.loadSkin(t);break;case`animation`:r=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case`camera`:r=this.loadCamera(t);break;default:if(r=this._invokeOne(function(n){return n!=this&&n.getDependency&&n.getDependency(e,t)}),!r)throw Error(`Unknown type: `+e);break}this.cache.add(n,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){let n=this,r=this.json[e+(e===`mesh`?`es`:`s`)]||[];t=Promise.all(r.map(function(t,r){return n.getDependency(e,r)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!==`arraybuffer`)throw Error(`THREE.GLTFLoader: `+t.type+` buffer type is not supported.`);if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[F.KHR_BINARY_GLTF].body);let r=this.options;return new Promise(function(e,i){n.load(E.resolveURL(t.uri,r.path),e,void 0,function(){i(Error(`THREE.GLTFLoader: Failed to load buffer "`+t.uri+`".`))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency(`buffer`,t.buffer).then(function(e){let n=t.byteLength||0,r=t.byteOffset||0;return e.slice(r,r+n)})}loadAccessor(e){let t=this,n=this.json,r=this.json.accessors[e];if(r.bufferView===void 0&&r.sparse===void 0){let e=G[r.type],t=H[r.componentType],n=r.normalized===!0,i=new t(r.count*e);return Promise.resolve(new C(i,e,n))}let i=[];return r.bufferView===void 0?i.push(null):i.push(this.getDependency(`bufferView`,r.bufferView)),r.sparse!==void 0&&(i.push(this.getDependency(`bufferView`,r.sparse.indices.bufferView)),i.push(this.getDependency(`bufferView`,r.sparse.values.bufferView))),Promise.all(i).then(function(e){let i=e[0],a=G[r.type],o=H[r.componentType],s=o.BYTES_PER_ELEMENT,c=s*a,l=r.byteOffset||0,u=r.bufferView===void 0?void 0:n.bufferViews[r.bufferView].byteStride,d=r.normalized===!0,f,p;if(u&&u!==c){let e=Math.floor(l/u),n=`InterleavedBuffer:`+r.bufferView+`:`+r.componentType+`:`+e+`:`+r.count,c=t.cache.get(n);c||(f=new o(i,e*u,r.count*u/s),c=new h(f,u/s),t.cache.add(n,c)),p=new _(c,a,l%u/s,d)}else f=i===null?new o(r.count*a):new o(i,l,r.count*a),p=new C(f,a,d);if(r.sparse!==void 0){let t=G.SCALAR,n=H[r.sparse.indices.componentType],s=r.sparse.indices.byteOffset||0,c=r.sparse.values.byteOffset||0,l=new n(e[1],s,r.sparse.count*t),u=new o(e[2],c,r.sparse.count*a);i!==null&&(p=new C(p.array.slice(),p.itemSize,p.normalized)),p.normalized=!1;for(let e=0,t=l.length;e<t;e++){let t=l[e];if(p.setX(t,u[e*a]),a>=2&&p.setY(t,u[e*a+1]),a>=3&&p.setZ(t,u[e*a+2]),a>=4&&p.setW(t,u[e*a+3]),a>=5)throw Error(`THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.`)}p.normalized=d}return p})}loadTexture(e){let t=this.json,n=this.options,r=t.textures[e].source,i=t.images[r],a=this.textureLoader;if(i.uri){let e=n.manager.getHandler(i.uri);e!==null&&(a=e)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,n){let r=this,i=this.json,a=i.textures[e],o=i.images[t],s=(o.uri||o.bufferView)+`:`+a.sampler;if(this.textureCache[s])return this.textureCache[s];let c=this.loadImageSource(t,n).then(function(t){t.flipY=!1,t.name=a.name||o.name||``,t.name===``&&typeof o.uri==`string`&&o.uri.startsWith(`data:image/`)===!1&&(t.name=o.uri);let n=(i.samplers||{})[a.sampler]||{};return t.magFilter=U[n.magFilter]||1006,t.minFilter=U[n.minFilter]||1008,t.wrapS=W[n.wrapS]||1e3,t.wrapT=W[n.wrapT]||1e3,t.generateMipmaps=!t.isCompressedTexture&&t.minFilter!==1003&&t.minFilter!==1006,r.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=c,c}loadImageSource(e,t){let n=this,r=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(e=>e.clone());let a=r.images[e],o=self.URL||self.webkitURL,s=a.uri||``,c=!1;if(a.bufferView!==void 0)s=n.getDependency(`bufferView`,a.bufferView).then(function(e){c=!0;let t=new Blob([e],{type:a.mimeType});return s=o.createObjectURL(t),s});else if(a.uri===void 0)throw Error(`THREE.GLTFLoader: Image `+e+` is missing URI and bufferView`);let l=Promise.resolve(s).then(function(e){return new Promise(function(n,r){let a=n;t.isImageBitmapLoader===!0&&(a=function(e){let t=new y(e);t.needsUpdate=!0,n(t)}),t.load(E.resolveURL(e,i.path),a,void 0,r)})}).then(function(e){return c===!0&&o.revokeObjectURL(s),X(e,a),e.userData.mimeType=a.mimeType||ot(a.uri),e}).catch(function(e){throw console.error(`THREE.GLTFLoader: Couldn't load texture`,s),e});return this.sourceCache[e]=l,l}assignTexture(e,t,n,r){let i=this;return this.getDependency(`texture`,n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),i.extensions[F.KHR_TEXTURE_TRANSFORM]){let e=n.extensions===void 0?void 0:n.extensions[F.KHR_TEXTURE_TRANSFORM];if(e){let t=i.associations.get(a);a=i.extensions[F.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,n=e.material,r=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let e=`PointsMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new se,b.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){let e=`LineBasicMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new Oe,b.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,this.cache.add(e,t)),n=t}if(r||i||a){let e=`ClonedMaterial:`+n.uuid+`:`;r&&(e+=`derivative-tangents:`),i&&(e+=`vertex-colors:`),a&&(e+=`flat-shading:`);let t=this.cache.get(e);t||(t=n.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}e.material=n}getMaterialType(){return x}loadMaterial(e){let t=this,n=this.json,r=this.extensions,i=n.materials[e],a,o={},s=i.extensions||{},c=[];if(s[F.KHR_MATERIALS_UNLIT]){let e=r[F.KHR_MATERIALS_UNLIT];a=e.getMaterialType(),c.push(e.extendParams(o,i,t))}else{let n=i.pbrMetallicRoughness||{};if(o.color=new T(1,1,1),o.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;o.color.setRGB(e[0],e[1],e[2],l),o.opacity=e[3]}n.baseColorTexture!==void 0&&c.push(t.assignTexture(o,`map`,n.baseColorTexture,k)),o.metalness=n.metallicFactor===void 0?1:n.metallicFactor,o.roughness=n.roughnessFactor===void 0?1:n.roughnessFactor,n.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(o,`metalnessMap`,n.metallicRoughnessTexture)),c.push(t.assignTexture(o,`roughnessMap`,n.metallicRoughnessTexture))),a=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,o)})))}i.doubleSided===!0&&(o.side=2);let u=i.alphaMode||J.OPAQUE;if(u===J.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,u===J.MASK&&(o.alphaTest=i.alphaCutoff===void 0?.5:i.alphaCutoff)),i.normalTexture!==void 0&&a!==D&&(c.push(t.assignTexture(o,`normalMap`,i.normalTexture)),o.normalScale=new j(1,1),i.normalTexture.scale!==void 0)){let e=i.normalTexture.scale;o.normalScale.set(e,e)}if(i.occlusionTexture!==void 0&&a!==D&&(c.push(t.assignTexture(o,`aoMap`,i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&a!==D){let e=i.emissiveFactor;o.emissive=new T().setRGB(e[0],e[1],e[2],l)}return i.emissiveTexture!==void 0&&a!==D&&c.push(t.assignTexture(o,`emissiveMap`,i.emissiveTexture,k)),Promise.all(c).then(function(){let n=new a(o);return i.name&&(n.name=i.name),X(n,i),t.associations.set(n,{materials:e}),i.extensions&&Y(r,n,i),n})}createUniqueName(e){let t=Ee.sanitizeNodeName(e||``);return t in this.nodeNamesUsed?t+`_`+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,n=this.extensions,r=this.primitiveCache;function i(e){return n[F.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(n){return $(n,e,t)})}let a=[];for(let n=0,o=e.length;n<o;n++){let o=e[n],s=at(o),c=r[s];if(c)a.push(c.promise);else{let e;e=o.extensions&&o.extensions[F.KHR_DRACO_MESH_COMPRESSION]?i(o):$(new Te,o,t),r[s]={primitive:o,promise:e},a.push(e)}}return Promise.all(a)}loadMesh(e){let t=this,r=this.json,i=this.extensions,a=r.meshes[e],o=a.primitives,c=[];for(let e=0,t=o.length;e<t;e++){let t=o[e].material===void 0?nt(this.cache):this.getDependency(`material`,o[e].material);c.push(t)}return c.push(t.loadGeometries(o)),Promise.all(c).then(function(r){let c=r.slice(0,r.length-1),l=r[r.length-1],u=[];for(let r=0,s=l.length;r<s;r++){let s=l[r],d=o[r],f,p=c[r];if(d.mode===V.TRIANGLES||d.mode===V.TRIANGLE_STRIP||d.mode===V.TRIANGLE_FAN||d.mode===void 0)f=a.isSkinnedMesh===!0?new ee(s,p):new de(s,p),f.isSkinnedMesh===!0&&f.normalizeSkinWeights(),d.mode===V.TRIANGLE_STRIP?f.geometry=M(f.geometry,1):d.mode===V.TRIANGLE_FAN&&(f.geometry=M(f.geometry,2));else if(d.mode===V.LINES)f=new ie(s,p);else if(d.mode===V.LINE_STRIP)f=new ne(s,p);else if(d.mode===V.LINE_LOOP)f=new n(s,p);else if(d.mode===V.POINTS)f=new me(s,p);else throw Error(`THREE.GLTFLoader: Primitive mode unsupported: `+d.mode);Object.keys(f.geometry.morphAttributes).length>0&&it(f,a),f.name=t.createUniqueName(a.name||`mesh_`+e),X(f,a),d.extensions&&Y(i,f,d),t.assignFinalMaterial(f),u.push(f)}for(let n=0,r=u.length;n<r;n++)t.associations.set(u[n],{meshes:e,primitives:n});if(u.length===1)return a.extensions&&Y(i,u[0],a),u[0];let d=new s;a.extensions&&Y(i,d,a),t.associations.set(d,{meshes:e});for(let e=0,t=u.length;e<t;e++)d.add(u[e]);return d})}loadCamera(e){let t,n=this.json.cameras[e],r=n[n.type];if(!r){console.warn(`THREE.GLTFLoader: Missing camera parameters.`);return}return n.type===`perspective`?t=new xe(oe.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):n.type===`orthographic`&&(t=new pe(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),X(t,n),Promise.resolve(t)}loadSkin(t){let n=this.json.skins[t],r=[];for(let e=0,t=n.joints.length;e<t;e++)r.push(this._loadNodeShallow(n.joints[e]));return n.inverseBindMatrices===void 0?r.push(null):r.push(this.getDependency(`accessor`,n.inverseBindMatrices)),Promise.all(r).then(function(t){let r=t.pop(),i=t,a=[],s=[];for(let t=0,o=i.length;t<o;t++){let o=i[t];if(o){a.push(o);let n=new e;r!==null&&n.fromArray(r.array,t*16),s.push(n)}else console.warn(`THREE.GLTFLoader: Joint "%s" could not be found.`,n.joints[t])}return new o(a,s)})}loadAnimation(e){let t=this.json,n=this,r=t.animations[e],i=r.name?r.name:`animation_`+e,a=[],o=[],s=[],c=[],l=[];for(let e=0,t=r.channels.length;e<t;e++){let t=r.channels[e],n=r.samplers[t.sampler],i=t.target,u=i.node,d=r.parameters===void 0?n.input:r.parameters[n.input],f=r.parameters===void 0?n.output:r.parameters[n.output];i.node!==void 0&&(a.push(this.getDependency(`node`,u)),o.push(this.getDependency(`accessor`,d)),s.push(this.getDependency(`accessor`,f)),c.push(n),l.push(i))}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(s),Promise.all(c),Promise.all(l)]).then(function(e){let t=e[0],a=e[1],o=e[2],s=e[3],c=e[4],l=[];for(let e=0,r=t.length;e<r;e++){let r=t[e],i=a[e],u=o[e],d=s[e],f=c[e];if(r===void 0)continue;r.updateMatrix&&r.updateMatrix();let p=n._createAnimationTracks(r,i,u,d,f);if(p)for(let e=0;e<p.length;e++)l.push(p[e])}let u=new Se(i,void 0,l);return X(u,r),u})}createNodeMesh(e){let t=this.json,n=this,r=t.nodes[e];return r.mesh===void 0?null:n.getDependency(`mesh`,r.mesh).then(function(e){let t=n._getNodeRef(n.meshCache,r.mesh,e);return r.weights!==void 0&&t.traverse(function(e){if(e.isMesh)for(let t=0,n=r.weights.length;t<n;t++)e.morphTargetInfluences[t]=r.weights[t]}),t})}loadNode(e){let t=this.json,n=this,i=t.nodes[e],a=n._loadNodeShallow(e),o=[],s=i.children||[];for(let e=0,t=s.length;e<t;e++)o.push(n.getDependency(`node`,s[e]));let c=i.skin===void 0?Promise.resolve(null):n.getDependency(`skin`,i.skin);return Promise.all([a,Promise.all(o),c]).then(function(e){let t=e[0],n=e[1],i=e[2];i!==null&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(i,st)});for(let e=0,r=n.length;e<r;e++)t.add(n[e]);if(t.userData.pivot!==void 0&&n.length>0){let e=t.userData.pivot,i=n[0];t.pivot=new r().fromArray(e),t.position.x-=e[0],t.position.y-=e[1],t.position.z-=e[2],i.position.set(0,0,0),delete t.userData.pivot}return t})}_loadNodeShallow(t){let n=this.json,r=this.extensions,i=this;if(this.nodeCache[t]!==void 0)return this.nodeCache[t];let a=n.nodes[t],o=a.name?i.createUniqueName(a.name):``,c=[],l=i._invokeOne(function(e){return e.createNodeMesh&&e.createNodeMesh(t)});return l&&c.push(l),a.camera!==void 0&&c.push(i.getDependency(`camera`,a.camera).then(function(e){return i._getNodeRef(i.cameraCache,a.camera,e)})),i._invokeAll(function(e){return e.createNodeAttachment&&e.createNodeAttachment(t)}).forEach(function(e){c.push(e)}),this.nodeCache[t]=Promise.all(c).then(function(n){let c;if(c=a.isBone===!0?new ye:n.length>1?new s:n.length===1?n[0]:new ue,c!==n[0])for(let e=0,t=n.length;e<t;e++)c.add(n[e]);if(a.name&&(c.userData.name=a.name,c.name=o),X(c,a),a.extensions&&Y(r,c,a),a.matrix!==void 0){let t=new e;t.fromArray(a.matrix),c.applyMatrix4(t)}else a.translation!==void 0&&c.position.fromArray(a.translation),a.rotation!==void 0&&c.quaternion.fromArray(a.rotation),a.scale!==void 0&&c.scale.fromArray(a.scale);if(!i.associations.has(c))i.associations.set(c,{});else if(a.mesh!==void 0&&i.meshCache.refs[a.mesh]>1){let e=i.associations.get(c);i.associations.set(c,{...e})}return i.associations.get(c).nodes=t,c}),this.nodeCache[t]}loadScene(e){let t=this.extensions,n=this.json.scenes[e],r=this,i=new s;n.name&&(i.name=r.createUniqueName(n.name)),X(i,n),n.extensions&&Y(t,i,n);let a=n.nodes||[],o=[];for(let e=0,t=a.length;e<t;e++)o.push(r.getDependency(`node`,a[e]));return Promise.all(o).then(function(e){for(let t=0,n=e.length;t<n;t++){let n=e[t];n.parent===null?i.add(n):i.add(ke(n))}return r.associations=(e=>{let t=new Map;for(let[e,n]of r.associations)(e instanceof b||e instanceof y)&&t.set(e,n);return e.traverse(e=>{let n=r.associations.get(e);n!=null&&t.set(e,n)}),t})(i),i})}_createAnimationTracks(e,t,n,r,i){let a=[],o=e.name?e.name:e.uuid,s=[];function c(e){e.morphTargetInfluences&&s.push(e.name?e.name:e.uuid)}q[i.path]===q.weights?(c(e),e.isGroup&&e.children.forEach(c)):s.push(o);let l;switch(q[i.path]){case q.weights:l=O;break;case q.rotation:l=ce;break;case q.translation:case q.scale:l=d;break;default:switch(n.itemSize){case 1:l=O;break;default:l=d;break}break}let u=r.interpolation===void 0?m:tt[r.interpolation],f=this._getArrayFromAccessor(n);for(let e=0,n=s.length;e<n;e++){let n=new l(s[e]+`.`+q[i.path],t.array,f,u);r.interpolation===`CUBICSPLINE`&&this._createCubicSplineTrackInterpolant(n),a.push(n)}return a}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=Q(t.constructor),n=new Float32Array(t.length);for(let r=0,i=t.length;r<i;r++)n[r]=t[r]*e;t=n}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof ce?et:B)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}};function lt(e,t,n){let i=t.attributes,a=new Ce;if(i.POSITION!==void 0){let e=n.json.accessors[i.POSITION],t=e.min,o=e.max;if(t!==void 0&&o!==void 0){if(a.set(new r(t[0],t[1],t[2]),new r(o[0],o[1],o[2])),e.normalized){let t=Q(H[e.componentType]);a.min.multiplyScalar(t),a.max.multiplyScalar(t)}}else{console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`);return}}else return;let o=t.targets;if(o!==void 0){let e=new r,t=new r;for(let r=0,i=o.length;r<i;r++){let i=o[r];if(i.POSITION!==void 0){let r=n.json.accessors[i.POSITION],a=r.min,o=r.max;if(a!==void 0&&o!==void 0){if(t.setX(Math.max(Math.abs(a[0]),Math.abs(o[0]))),t.setY(Math.max(Math.abs(a[1]),Math.abs(o[1]))),t.setZ(Math.max(Math.abs(a[2]),Math.abs(o[2]))),r.normalized){let e=Q(H[r.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`)}}a.expandByVector(e)}e.boundingBox=a;let s=new _e;a.getCenter(s.center),s.radius=a.min.distanceTo(a.max)/2,e.boundingSphere=s}function $(e,t,n){let r=t.attributes,i=[];function a(t,r){return n.getDependency(`accessor`,t).then(function(t){e.setAttribute(r,t)})}for(let t in r){let n=K[t]||t.toLowerCase();n in e.attributes||i.push(a(r[t],n))}if(t.indices!==void 0&&!e.index){let r=n.getDependency(`accessor`,t.indices).then(function(t){e.setIndex(t)});i.push(r)}return w.workingColorSpace!==`srgb-linear`&&`COLOR_0`in r&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${w.workingColorSpace}" not supported.`),X(e,t),lt(e,t,n),Promise.all(i).then(function(){return t.targets===void 0?e:rt(e,t.targets,n)})}export{Ae as GLTFLoader};
1
+ import{$ as e,A as t,B as n,Bt as r,C as i,Ct as a,Dt as o,E as s,Ft as c,G as l,H as u,Ht as d,I as f,K as p,L as m,M as h,Mt as g,N as _,O as v,Ot as ee,P as te,Pt as y,R as ne,U as re,V as ie,W as ae,X as b,Z as oe,_t as se,at as x,bt as ce,ct as le,dt as ue,et as de,f as fe,ft as pe,gt as me,ht as he,it as S,k as ge,kt as _e,l as C,lt as ve,m as w,o as ye,ot as be,p as T,pt as xe,q as E,r as Se,s as Ce,st as we,tt as D,u as Te,ut as O,vt as Ee,wt as k,x as De,yt as A,z as Oe,zt as j}from"./three.module-DQeeIQFF.js";function M(e,t){if(t===0)return console.warn(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.`),e;if(t===2||t===1){let n=e.getIndex();if(n===null){let t=[],r=e.getAttribute(`position`);if(r!==void 0){for(let e=0;e<r.count;e++)t.push(e);e.setIndex(t),n=e.getIndex()}else return console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.`),e}let r=n.count-2,i=[];if(t===2)for(let e=1;e<=r;e++)i.push(n.getX(0)),i.push(n.getX(e)),i.push(n.getX(e+1));else for(let e=0;e<r;e++)e%2==0?(i.push(n.getX(e)),i.push(n.getX(e+1)),i.push(n.getX(e+2))):(i.push(n.getX(e+2)),i.push(n.getX(e+1)),i.push(n.getX(e)));i.length/3!==r&&console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.`);let a=e.clone();return a.setIndex(i),a.clearGroups(),a}else return console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:`,t),e}function ke(e){let t=new Map,n=new Map,r=e.clone();return N(e,r,function(e,r){t.set(r,e),n.set(e,r)}),r.traverse(function(e){if(!e.isSkinnedMesh)return;let r=e,i=t.get(e),a=i.skeleton.bones;r.skeleton=i.skeleton.clone(),r.bindMatrix.copy(i.bindMatrix),r.skeleton.bones=a.map(function(e){return n.get(e)}),r.bind(r.skeleton,r.bindMatrix)}),r}function N(e,t,n){n(e,t);for(let r=0;r<e.children.length;r++)N(e.children[r],t.children[r],n)}var Ae=class extends p{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new Fe(e)}),this.register(function(e){return new Ie(e)}),this.register(function(e){return new Ge(e)}),this.register(function(e){return new Ke(e)}),this.register(function(e){return new qe(e)}),this.register(function(e){return new Re(e)}),this.register(function(e){return new ze(e)}),this.register(function(e){return new Be(e)}),this.register(function(e){return new Ve(e)}),this.register(function(e){return new Pe(e)}),this.register(function(e){return new He(e)}),this.register(function(e){return new Le(e)}),this.register(function(e){return new We(e)}),this.register(function(e){return new Ue(e)}),this.register(function(e){return new Me(e)}),this.register(function(e){return new I(e,F.EXT_MESHOPT_COMPRESSION)}),this.register(function(e){return new I(e,F.KHR_MESHOPT_COMPRESSION)}),this.register(function(e){return new Je(e)})}load(e,t,n,r){let a=this,o;if(this.resourcePath!==``)o=this.resourcePath;else if(this.path!==``){let t=E.extractUrlBase(e);o=E.resolveURL(t,this.path)}else o=E.extractUrlBase(e);this.manager.itemStart(e);let s=function(t){r?r(t):console.error(t),a.manager.itemError(e),a.manager.itemEnd(e)},c=new i(this.manager);c.setPath(this.path),c.setResponseType(`arraybuffer`),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(n){try{a.parse(n,o,function(n){t(n),a.manager.itemEnd(e)},s)}catch(e){s(e)}},n,s)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,r){let i,a={},o={},s=new TextDecoder;if(typeof e==`string`)i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(s.decode(new Uint8Array(e,0,4))===L){try{a[F.KHR_BINARY_GLTF]=new Ye(e)}catch(e){r&&r(e);return}i=JSON.parse(a[F.KHR_BINARY_GLTF].content)}else i=JSON.parse(s.decode(e));else i=e;if(i.asset===void 0||i.asset.version[0]<2){r&&r(Error(`THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.`));return}let c=new ct(i,{path:t||this.resourcePath||``,crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](c);t.name||console.error(`THREE.GLTFLoader: Invalid plugin found: missing name`),o[t.name]=t,a[t.name]=!0}if(i.extensionsUsed)for(let e=0;e<i.extensionsUsed.length;++e){let t=i.extensionsUsed[e],n=i.extensionsRequired||[];switch(t){case F.KHR_MATERIALS_UNLIT:a[t]=new Ne;break;case F.KHR_DRACO_MESH_COMPRESSION:a[t]=new Xe(i,this.dracoLoader);break;case F.KHR_TEXTURE_TRANSFORM:a[t]=new Ze;break;case F.KHR_MESH_QUANTIZATION:a[t]=new Qe;break;default:n.indexOf(t)>=0&&o[t]===void 0&&console.warn(`THREE.GLTFLoader: Unknown extension "`+t+`".`)}}c.setExtensions(a),c.setPlugins(o),c.parse(n,r)}parseAsync(e,t){let n=this;return new Promise(function(r,i){n.parse(e,t,r,i)})}};function je(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}function P(e,t,n){let r=e.json.materials[t];return r.extensions&&r.extensions[n]?r.extensions[n]:null}var F={KHR_BINARY_GLTF:`KHR_binary_glTF`,KHR_DRACO_MESH_COMPRESSION:`KHR_draco_mesh_compression`,KHR_LIGHTS_PUNCTUAL:`KHR_lights_punctual`,KHR_MATERIALS_CLEARCOAT:`KHR_materials_clearcoat`,KHR_MATERIALS_DISPERSION:`KHR_materials_dispersion`,KHR_MATERIALS_IOR:`KHR_materials_ior`,KHR_MATERIALS_SHEEN:`KHR_materials_sheen`,KHR_MATERIALS_SPECULAR:`KHR_materials_specular`,KHR_MATERIALS_TRANSMISSION:`KHR_materials_transmission`,KHR_MATERIALS_IRIDESCENCE:`KHR_materials_iridescence`,KHR_MATERIALS_ANISOTROPY:`KHR_materials_anisotropy`,KHR_MATERIALS_UNLIT:`KHR_materials_unlit`,KHR_MATERIALS_VOLUME:`KHR_materials_volume`,KHR_TEXTURE_BASISU:`KHR_texture_basisu`,KHR_TEXTURE_TRANSFORM:`KHR_texture_transform`,KHR_MESH_QUANTIZATION:`KHR_mesh_quantization`,KHR_MATERIALS_EMISSIVE_STRENGTH:`KHR_materials_emissive_strength`,EXT_MATERIALS_BUMP:`EXT_materials_bump`,EXT_TEXTURE_WEBP:`EXT_texture_webp`,EXT_TEXTURE_AVIF:`EXT_texture_avif`,EXT_MESHOPT_COMPRESSION:`EXT_meshopt_compression`,KHR_MESHOPT_COMPRESSION:`KHR_meshopt_compression`,EXT_MESH_GPU_INSTANCING:`EXT_mesh_gpu_instancing`},Me=class{constructor(e){this.parser=e,this.name=F.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n<r;n++){let r=t[n];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){let t=this.parser,n=`light:`+e,r=t.cache.get(n);if(r)return r;let i=t.json,a=((i.extensions&&i.extensions[this.name]||{}).lights||[])[e],o,s=new T(16777215);a.color!==void 0&&s.setRGB(a.color[0],a.color[1],a.color[2],l);let c=a.range===void 0?0:a.range;switch(a.type){case`directional`:o=new De(s),o.target.position.set(0,0,-1),o.add(o.target);break;case`point`:o=new he(s),o.distance=c;break;case`spot`:o=new g(s),o.distance=c,a.spot=a.spot||{},a.spot.innerConeAngle=a.spot.innerConeAngle===void 0?0:a.spot.innerConeAngle,a.spot.outerConeAngle=a.spot.outerConeAngle===void 0?Math.PI/4:a.spot.outerConeAngle,o.angle=a.spot.outerConeAngle,o.penumbra=1-a.spot.innerConeAngle/a.spot.outerConeAngle,o.target.position.set(0,0,-1),o.add(o.target);break;default:throw Error(`THREE.GLTFLoader: Unexpected light type: `+a.type)}return o.position.set(0,0,0),X(o,a),a.intensity!==void 0&&(o.intensity=a.intensity),o.name=t.createUniqueName(a.name||`light_`+e),r=Promise.resolve(o),t.cache.add(n,r),r}getDependency(e,t){if(e===`light`)return this._loadLight(t)}createNodeAttachment(e){let t=this,n=this.parser,r=n.json.nodes[e],i=(r.extensions&&r.extensions[this.name]||{}).light;return i===void 0?null:this._loadLight(i).then(function(e){return n._getNodeRef(t.cache,i,e)})}},Ne=class{constructor(){this.name=F.KHR_MATERIALS_UNLIT}getMaterialType(){return D}extendParams(e,t,n){let r=[];e.color=new T(1,1,1),e.opacity=1;let i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){let t=i.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],l),e.opacity=t[3]}i.baseColorTexture!==void 0&&r.push(n.assignTexture(e,`map`,i.baseColorTexture,k))}return Promise.all(r)}},Pe=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);return n===null||n.emissiveStrength!==void 0&&(t.emissiveIntensity=n.emissiveStrength),Promise.resolve()}},Fe=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];if(n.clearcoatFactor!==void 0&&(t.clearcoat=n.clearcoatFactor),n.clearcoatTexture!==void 0&&r.push(this.parser.assignTexture(t,`clearcoatMap`,n.clearcoatTexture)),n.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=n.clearcoatRoughnessFactor),n.clearcoatRoughnessTexture!==void 0&&r.push(this.parser.assignTexture(t,`clearcoatRoughnessMap`,n.clearcoatRoughnessTexture)),n.clearcoatNormalTexture!==void 0&&(r.push(this.parser.assignTexture(t,`clearcoatNormalMap`,n.clearcoatNormalTexture)),n.clearcoatNormalTexture.scale!==void 0)){let e=n.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new j(e,e)}return Promise.all(r)}},Ie=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_DISPERSION}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);return n===null||(t.dispersion=n.dispersion===void 0?0:n.dispersion),Promise.resolve()}},Le=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.iridescenceFactor!==void 0&&(t.iridescence=n.iridescenceFactor),n.iridescenceTexture!==void 0&&r.push(this.parser.assignTexture(t,`iridescenceMap`,n.iridescenceTexture)),n.iridescenceIor!==void 0&&(t.iridescenceIOR=n.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),n.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=n.iridescenceThicknessMinimum),n.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=n.iridescenceThicknessMaximum),n.iridescenceThicknessTexture!==void 0&&r.push(this.parser.assignTexture(t,`iridescenceThicknessMap`,n.iridescenceThicknessTexture)),Promise.all(r)}},Re=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_SHEEN}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];if(t.sheenColor=new T(0,0,0),t.sheenRoughness=0,t.sheen=1,n.sheenColorFactor!==void 0){let e=n.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],l)}return n.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=n.sheenRoughnessFactor),n.sheenColorTexture!==void 0&&r.push(this.parser.assignTexture(t,`sheenColorMap`,n.sheenColorTexture,k)),n.sheenRoughnessTexture!==void 0&&r.push(this.parser.assignTexture(t,`sheenRoughnessMap`,n.sheenRoughnessTexture)),Promise.all(r)}},ze=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.transmissionFactor!==void 0&&(t.transmission=n.transmissionFactor),n.transmissionTexture!==void 0&&r.push(this.parser.assignTexture(t,`transmissionMap`,n.transmissionTexture)),Promise.all(r)}},Be=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_VOLUME}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];t.thickness=n.thicknessFactor===void 0?0:n.thicknessFactor,n.thicknessTexture!==void 0&&r.push(this.parser.assignTexture(t,`thicknessMap`,n.thicknessTexture)),t.attenuationDistance=n.attenuationDistance||1/0;let i=n.attenuationColor||[1,1,1];return t.attenuationColor=new T().setRGB(i[0],i[1],i[2],l),Promise.all(r)}},Ve=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_IOR}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);return n===null?Promise.resolve():(t.ior=n.ior===void 0?1.5:n.ior,t.ior===0&&(t.ior=1e3),Promise.resolve())}},He=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_SPECULAR}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];t.specularIntensity=n.specularFactor===void 0?1:n.specularFactor,n.specularTexture!==void 0&&r.push(this.parser.assignTexture(t,`specularIntensityMap`,n.specularTexture));let i=n.specularColorFactor||[1,1,1];return t.specularColor=new T().setRGB(i[0],i[1],i[2],l),n.specularColorTexture!==void 0&&r.push(this.parser.assignTexture(t,`specularColorMap`,n.specularColorTexture,k)),Promise.all(r)}},Ue=class{constructor(e){this.parser=e,this.name=F.EXT_MATERIALS_BUMP}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return t.bumpScale=n.bumpFactor===void 0?1:n.bumpFactor,n.bumpTexture!==void 0&&r.push(this.parser.assignTexture(t,`bumpMap`,n.bumpTexture)),Promise.all(r)}},We=class{constructor(e){this.parser=e,this.name=F.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){return P(this.parser,e,this.name)===null?null:S}extendMaterialParams(e,t){let n=P(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.anisotropyStrength!==void 0&&(t.anisotropy=n.anisotropyStrength),n.anisotropyRotation!==void 0&&(t.anisotropyRotation=n.anisotropyRotation),n.anisotropyTexture!==void 0&&r.push(this.parser.assignTexture(t,`anisotropyMap`,n.anisotropyTexture)),Promise.all(r)}},Ge=class{constructor(e){this.parser=e,this.name=F.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,n=t.json,r=n.textures[e];if(!r.extensions||!r.extensions[this.name])return null;let i=r.extensions[this.name],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures`);return null}return t.loadTextureImage(e,i.source,a)}},Ke=class{constructor(e){this.parser=e,this.name=F.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return n.loadTextureImage(e,a.source,s)}},qe=class{constructor(e){this.parser=e,this.name=F.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return n.loadTextureImage(e,a.source,s)}},I=class{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let e=n.extensions[this.name],r=this.parser.getDependency(`buffer`,e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files`);return null}return r.then(function(t){let n=e.byteOffset||0,r=e.byteLength||0,a=e.count,o=e.byteStride,s=new Uint8Array(t,n,r);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,o,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*o);return i.decodeGltfBuffer(new Uint8Array(t),a,o,s,e.mode,e.filter),t})})}else return null}},Je=class{constructor(e){this.name=F.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(n){let i=this.parser.json,a=i.nodes[n];if(!a.extensions||!a.extensions[this.name]||a.mesh===void 0)return null;let o=i.meshes[a.mesh];for(let e of o.primitives)if(e.mode!==V.TRIANGLES&&e.mode!==V.TRIANGLE_STRIP&&e.mode!==V.TRIANGLE_FAN&&e.mode!==void 0)return null;let s=a.extensions[this.name].attributes,c=[],l={};for(let e in s)c.push(this.parser.getDependency(`accessor`,s[e]).then(t=>(l[e]=t,l[e])));return c.length<1?null:(c.push(this.parser.createNodeMesh(n)),Promise.all(c).then(n=>{let i=n.pop(),a=i.isGroup?i.children:[i],o=n[0].count,s=[];for(let n of a){let i=new e,a=new r,c=new A,u=new r(1,1,1),d=new t(n.geometry,n.material,o);for(let e=0;e<o;e++)l.TRANSLATION&&a.fromBufferAttribute(l.TRANSLATION,e),l.ROTATION&&c.fromBufferAttribute(l.ROTATION,e),l.SCALE&&u.fromBufferAttribute(l.SCALE,e),d.setMatrixAt(e,i.compose(a,c,u));for(let e in l)if(e===`_COLOR_0`){let t=l[e];d.instanceColor=new ge(t.array,t.itemSize,t.normalized)}else e!==`TRANSLATION`&&e!==`ROTATION`&&e!==`SCALE`&&n.geometry.setAttribute(e,l[e]);ue.prototype.copy.call(d,n),this.parser.assignFinalMaterial(d),s.push(d)}return i.isGroup?(i.clear(),i.add(...s),i):s[0]}))}},L=`glTF`,R=12,z={JSON:1313821514,BIN:5130562},Ye=class{constructor(e){this.name=F.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,R),n=new TextDecoder;if(this.header={magic:n.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==L)throw Error(`THREE.GLTFLoader: Unsupported glTF-Binary header.`);if(this.header.version<2)throw Error(`THREE.GLTFLoader: Legacy binary file detected.`);let r=this.header.length-R,i=new DataView(e,R),a=0;for(;a<r;){let t=i.getUint32(a,!0);a+=4;let r=i.getUint32(a,!0);if(a+=4,r===z.JSON){let r=new Uint8Array(e,R+a,t);this.content=n.decode(r)}else if(r===z.BIN){let n=R+a;this.body=e.slice(n,n+t)}a+=t}if(this.content===null)throw Error(`THREE.GLTFLoader: JSON content not found.`)}},Xe=class{constructor(e,t){if(!t)throw Error(`THREE.GLTFLoader: No DRACOLoader instance provided.`);this.name=F.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let n=this.json,r=this.dracoLoader,i=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},s={},c={};for(let e in a){let t=K[e]||e.toLowerCase();o[t]=a[e]}for(let t in e.attributes){let r=K[t]||t.toLowerCase();if(a[t]!==void 0){let i=n.accessors[e.attributes[t]];c[r]=H[i.componentType].name,s[r]=i.normalized===!0}}return t.getDependency(`bufferView`,i).then(function(e){return new Promise(function(t,n){r.decodeDracoFile(e,function(e){for(let t in e.attributes){let n=e.attributes[t],r=s[t];r!==void 0&&(n.normalized=r)}t(e)},o,c,l,n)})})}},Ze=class{constructor(){this.name=F.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0?e:(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0,e)}},Qe=class{constructor(){this.name=F.KHR_MESH_QUANTIZATION}},B=class extends te{constructor(e,t,n,r){super(e,t,n,r)}copySampleValue_(e){let t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,i=e*r*3+r;for(let e=0;e!==r;e++)t[e]=n[i+e];return t}interpolate_(e,t,n,r){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=o*2,c=o*3,l=r-t,u=(n-t)/l,d=u*u,f=d*u,p=e*c,m=p-c,h=-2*f+3*d,g=f-d,_=1-h,v=g-d+u;for(let e=0;e!==o;e++){let t=a[m+e+o],n=a[m+e+s]*l,r=a[p+e+o],c=a[p+e]*l;i[e]=_*t+v*n+h*r+g*c}return i}},$e=new A,et=class extends B{interpolate_(e,t,n,r){let i=super.interpolate_(e,t,n,r);return $e.fromArray(i).normalize().toArray(i),i}},V={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},H={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},U={9728:we,9729:u,9984:ve,9985:ae,9986:le,9987:re},W={33071:fe,33648:be,10497:a},G={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},K={POSITION:`position`,NORMAL:`normal`,TANGENT:`tangent`,TEXCOORD_0:`uv`,TEXCOORD_1:`uv1`,TEXCOORD_2:`uv2`,TEXCOORD_3:`uv3`,COLOR_0:`color`,WEIGHTS_0:`skinWeight`,JOINTS_0:`skinIndex`},q={scale:`scale`,translation:`position`,rotation:`quaternion`,weights:`morphTargetInfluences`},tt={CUBICSPLINE:void 0,LINEAR:m,STEP:f},J={OPAQUE:`OPAQUE`,MASK:`MASK`,BLEND:`BLEND`};function nt(e){return e.DefaultMaterial===void 0&&(e.DefaultMaterial=new x({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:0})),e.DefaultMaterial}function Y(e,t,n){for(let r in n.extensions)e[r]===void 0&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[r]=n.extensions[r])}function X(e,t){t.extras!==void 0&&(typeof t.extras==`object`?Object.assign(e.userData,t.extras):console.warn(`THREE.GLTFLoader: Ignoring primitive type .extras, `+t.extras))}function rt(e,t,n){let r=!1,i=!1,a=!1;for(let e=0,n=t.length;e<n;e++){let n=t[e];if(n.POSITION!==void 0&&(r=!0),n.NORMAL!==void 0&&(i=!0),n.COLOR_0!==void 0&&(a=!0),r&&i&&a)break}if(!r&&!i&&!a)return Promise.resolve(e);let o=[],s=[],c=[];for(let l=0,u=t.length;l<u;l++){let u=t[l];if(r){let t=u.POSITION===void 0?e.attributes.position:n.getDependency(`accessor`,u.POSITION);o.push(t)}if(i){let t=u.NORMAL===void 0?e.attributes.normal:n.getDependency(`accessor`,u.NORMAL);s.push(t)}if(a){let t=u.COLOR_0===void 0?e.attributes.color:n.getDependency(`accessor`,u.COLOR_0);c.push(t)}}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(c)]).then(function(t){let n=t[0],o=t[1],s=t[2];return r&&(e.morphAttributes.position=n),i&&(e.morphAttributes.normal=o),a&&(e.morphAttributes.color=s),e.morphTargetsRelative=!0,e})}function it(e,t){if(e.updateMorphTargets(),t.weights!==void 0)for(let n=0,r=t.weights.length;n<r;n++)e.morphTargetInfluences[n]=t.weights[n];if(t.extras&&Array.isArray(t.extras.targetNames)){let n=t.extras.targetNames;if(e.morphTargetInfluences.length===n.length){e.morphTargetDictionary={};for(let t=0,r=n.length;t<r;t++)e.morphTargetDictionary[n[t]]=t}else console.warn(`THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.`)}}function at(e){let t,n=e.extensions&&e.extensions[F.KHR_DRACO_MESH_COMPRESSION];if(t=n?`draco:`+n.bufferView+`:`+n.indices+`:`+Z(n.attributes):e.indices+`:`+Z(e.attributes)+`:`+e.mode,e.targets!==void 0)for(let n=0,r=e.targets.length;n<r;n++)t+=`:`+Z(e.targets[n]);return t}function Z(e){let t=``,n=Object.keys(e).sort();for(let r=0,i=n.length;r<i;r++)t+=n[r]+`:`+e[n[r]]+`;`;return t}function Q(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error(`THREE.GLTFLoader: Unsupported normalized accessor component type.`)}}function ot(e){return e.search(/\.jpe?g($|\?)/i)>0||e.search(/^data\:image\/jpeg/)===0?`image/jpeg`:e.search(/\.webp($|\?)/i)>0||e.search(/^data\:image\/webp/)===0?`image/webp`:e.search(/\.ktx2($|\?)/i)>0||e.search(/^data\:image\/ktx2/)===0?`image/ktx2`:`image/png`}var st=new e,ct=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new je,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,r=-1,a=!1,o=-1;if(typeof navigator<`u`&&navigator.userAgent!==void 0){let e=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(e)===!0;let t=e.match(/Version\/(\d+)/);r=n&&t?parseInt(t[1],10):-1,a=e.indexOf(`Firefox`)>-1,o=a?e.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>`u`||n&&r<17||a&&o<98?this.textureLoader=new c(this.options.manager):this.textureLoader=new v(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new i(this.options.manager),this.fileLoader.setResponseType(`arraybuffer`),this.options.crossOrigin===`use-credentials`&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let n=this,r=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([n.getDependencies(`scene`),n.getDependencies(`animation`),n.getDependencies(`camera`)])}).then(function(t){let a={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:n,userData:{}};return Y(i,a,r),X(a,r),Promise.all(n._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let n=0,r=t.length;n<r;n++){let r=t[n].joints;for(let t=0,n=r.length;t<n;t++)e[r[t]].isBone=!0}for(let t=0,r=e.length;t<r;t++){let r=e[t];r.mesh!==void 0&&(this._addNodeRef(this.meshCache,r.mesh),r.skin!==void 0&&(n[r.mesh].isSkinnedMesh=!0)),r.camera!==void 0&&this._addNodeRef(this.cameraCache,r.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]<=1)return n;let r=n.clone(),i=(e,t)=>{let n=this.associations.get(e);n!=null&&this.associations.set(t,n);for(let[n,r]of e.children.entries())i(r,t.children[n])};return i(n,r),r.name+=`_instance_`+ e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){let r=e(t[n]);if(r)return r}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let n=[];for(let r=0;r<t.length;r++){let i=e(t[r]);i&&n.push(i)}return n}getDependency(e,t){let n=e+`:`+t,r=this.cache.get(n);if(!r){switch(e){case`scene`:r=this.loadScene(t);break;case`node`:r=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case`mesh`:r=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case`accessor`:r=this.loadAccessor(t);break;case`bufferView`:r=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case`buffer`:r=this.loadBuffer(t);break;case`material`:r=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case`texture`:r=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case`skin`:r=this.loadSkin(t);break;case`animation`:r=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case`camera`:r=this.loadCamera(t);break;default:if(r=this._invokeOne(function(n){return n!=this&&n.getDependency&&n.getDependency(e,t)}),!r)throw Error(`Unknown type: `+e);break}this.cache.add(n,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){let n=this,r=this.json[e+(e===`mesh`?`es`:`s`)]||[];t=Promise.all(r.map(function(t,r){return n.getDependency(e,r)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!==`arraybuffer`)throw Error(`THREE.GLTFLoader: `+t.type+` buffer type is not supported.`);if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[F.KHR_BINARY_GLTF].body);let r=this.options;return new Promise(function(e,i){n.load(E.resolveURL(t.uri,r.path),e,void 0,function(){i(Error(`THREE.GLTFLoader: Failed to load buffer "`+t.uri+`".`))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency(`buffer`,t.buffer).then(function(e){let n=t.byteLength||0,r=t.byteOffset||0;return e.slice(r,r+n)})}loadAccessor(e){let t=this,n=this.json,r=this.json.accessors[e];if(r.bufferView===void 0&&r.sparse===void 0){let e=G[r.type],t=H[r.componentType],n=r.normalized===!0,i=new t(r.count*e);return Promise.resolve(new C(i,e,n))}let i=[];return r.bufferView===void 0?i.push(null):i.push(this.getDependency(`bufferView`,r.bufferView)),r.sparse!==void 0&&(i.push(this.getDependency(`bufferView`,r.sparse.indices.bufferView)),i.push(this.getDependency(`bufferView`,r.sparse.values.bufferView))),Promise.all(i).then(function(e){let i=e[0],a=G[r.type],o=H[r.componentType],s=o.BYTES_PER_ELEMENT,c=s*a,l=r.byteOffset||0,u=r.bufferView===void 0?void 0:n.bufferViews[r.bufferView].byteStride,d=r.normalized===!0,f,p;if(u&&u!==c){let e=Math.floor(l/u),n=`InterleavedBuffer:`+r.bufferView+`:`+r.componentType+`:`+e+`:`+r.count,c=t.cache.get(n);c||(f=new o(i,e*u,r.count*u/s),c=new h(f,u/s),t.cache.add(n,c)),p=new _(c,a,l%u/s,d)}else f=i===null?new o(r.count*a):new o(i,l,r.count*a),p=new C(f,a,d);if(r.sparse!==void 0){let t=G.SCALAR,n=H[r.sparse.indices.componentType],s=r.sparse.indices.byteOffset||0,c=r.sparse.values.byteOffset||0,l=new n(e[1],s,r.sparse.count*t),u=new o(e[2],c,r.sparse.count*a);i!==null&&(p=new C(p.array.slice(),p.itemSize,p.normalized)),p.normalized=!1;for(let e=0,t=l.length;e<t;e++){let t=l[e];if(p.setX(t,u[e*a]),a>=2&&p.setY(t,u[e*a+1]),a>=3&&p.setZ(t,u[e*a+2]),a>=4&&p.setW(t,u[e*a+3]),a>=5)throw Error(`THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.`)}p.normalized=d}return p})}loadTexture(e){let t=this.json,n=this.options,r=t.textures[e].source,i=t.images[r],a=this.textureLoader;if(i.uri){let e=n.manager.getHandler(i.uri);e!==null&&(a=e)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,n){let r=this,i=this.json,a=i.textures[e],o=i.images[t],s=(o.uri||o.bufferView)+`:`+a.sampler;if(this.textureCache[s])return this.textureCache[s];let c=this.loadImageSource(t,n).then(function(t){t.flipY=!1,t.name=a.name||o.name||``,t.name===``&&typeof o.uri==`string`&&o.uri.startsWith(`data:image/`)===!1&&(t.name=o.uri);let n=(i.samplers||{})[a.sampler]||{};return t.magFilter=U[n.magFilter]||1006,t.minFilter=U[n.minFilter]||1008,t.wrapS=W[n.wrapS]||1e3,t.wrapT=W[n.wrapT]||1e3,t.generateMipmaps=!t.isCompressedTexture&&t.minFilter!==1003&&t.minFilter!==1006,r.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=c,c}loadImageSource(e,t){let n=this,r=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(e=>e.clone());let a=r.images[e],o=self.URL||self.webkitURL,s=a.uri||``,c=!1;if(a.bufferView!==void 0)s=n.getDependency(`bufferView`,a.bufferView).then(function(e){c=!0;let t=new Blob([e],{type:a.mimeType});return s=o.createObjectURL(t),s});else if(a.uri===void 0)throw Error(`THREE.GLTFLoader: Image `+e+` is missing URI and bufferView`);let l=Promise.resolve(s).then(function(e){return new Promise(function(n,r){let a=n;t.isImageBitmapLoader===!0&&(a=function(e){let t=new y(e);t.needsUpdate=!0,n(t)}),t.load(E.resolveURL(e,i.path),a,void 0,r)})}).then(function(e){return c===!0&&o.revokeObjectURL(s),X(e,a),e.userData.mimeType=a.mimeType||ot(a.uri),e}).catch(function(e){throw console.error(`THREE.GLTFLoader: Couldn't load texture`,s),e});return this.sourceCache[e]=l,l}assignTexture(e,t,n,r){let i=this;return this.getDependency(`texture`,n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),i.extensions[F.KHR_TEXTURE_TRANSFORM]){let e=n.extensions===void 0?void 0:n.extensions[F.KHR_TEXTURE_TRANSFORM];if(e){let t=i.associations.get(a);a=i.extensions[F.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,n=e.material,r=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let e=`PointsMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new se,b.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){let e=`LineBasicMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new Oe,b.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,this.cache.add(e,t)),n=t}if(r||i||a){let e=`ClonedMaterial:`+n.uuid+`:`;r&&(e+=`derivative-tangents:`),i&&(e+=`vertex-colors:`),a&&(e+=`flat-shading:`);let t=this.cache.get(e);t||(t=n.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}e.material=n}getMaterialType(){return x}loadMaterial(e){let t=this,n=this.json,r=this.extensions,i=n.materials[e],a,o={},s=i.extensions||{},c=[];if(s[F.KHR_MATERIALS_UNLIT]){let e=r[F.KHR_MATERIALS_UNLIT];a=e.getMaterialType(),c.push(e.extendParams(o,i,t))}else{let n=i.pbrMetallicRoughness||{};if(o.color=new T(1,1,1),o.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;o.color.setRGB(e[0],e[1],e[2],l),o.opacity=e[3]}n.baseColorTexture!==void 0&&c.push(t.assignTexture(o,`map`,n.baseColorTexture,k)),o.metalness=n.metallicFactor===void 0?1:n.metallicFactor,o.roughness=n.roughnessFactor===void 0?1:n.roughnessFactor,n.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(o,`metalnessMap`,n.metallicRoughnessTexture)),c.push(t.assignTexture(o,`roughnessMap`,n.metallicRoughnessTexture))),a=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,o)})))}i.doubleSided===!0&&(o.side=2);let u=i.alphaMode||J.OPAQUE;if(u===J.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,u===J.MASK&&(o.alphaTest=i.alphaCutoff===void 0?.5:i.alphaCutoff)),i.normalTexture!==void 0&&a!==D&&(c.push(t.assignTexture(o,`normalMap`,i.normalTexture)),o.normalScale=new j(1,1),i.normalTexture.scale!==void 0)){let e=i.normalTexture.scale;o.normalScale.set(e,e)}if(i.occlusionTexture!==void 0&&a!==D&&(c.push(t.assignTexture(o,`aoMap`,i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&a!==D){let e=i.emissiveFactor;o.emissive=new T().setRGB(e[0],e[1],e[2],l)}return i.emissiveTexture!==void 0&&a!==D&&c.push(t.assignTexture(o,`emissiveMap`,i.emissiveTexture,k)),Promise.all(c).then(function(){let n=new a(o);return i.name&&(n.name=i.name),X(n,i),t.associations.set(n,{materials:e}),i.extensions&&Y(r,n,i),n})}createUniqueName(e){let t=Ee.sanitizeNodeName(e||``);return t in this.nodeNamesUsed?t+`_`+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,n=this.extensions,r=this.primitiveCache;function i(e){return n[F.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(n){return $(n,e,t)})}let a=[];for(let n=0,o=e.length;n<o;n++){let o=e[n],s=at(o),c=r[s];if(c)a.push(c.promise);else{let e;e=o.extensions&&o.extensions[F.KHR_DRACO_MESH_COMPRESSION]?i(o):$(new Te,o,t),r[s]={primitive:o,promise:e},a.push(e)}}return Promise.all(a)}loadMesh(e){let t=this,r=this.json,i=this.extensions,a=r.meshes[e],o=a.primitives,c=[];for(let e=0,t=o.length;e<t;e++){let t=o[e].material===void 0?nt(this.cache):this.getDependency(`material`,o[e].material);c.push(t)}return c.push(t.loadGeometries(o)),Promise.all(c).then(function(r){let c=r.slice(0,r.length-1),l=r[r.length-1],u=[];for(let r=0,s=l.length;r<s;r++){let s=l[r],d=o[r],f,p=c[r];if(d.mode===V.TRIANGLES||d.mode===V.TRIANGLE_STRIP||d.mode===V.TRIANGLE_FAN||d.mode===void 0)f=a.isSkinnedMesh===!0?new ee(s,p):new de(s,p),f.isSkinnedMesh===!0&&f.normalizeSkinWeights(),d.mode===V.TRIANGLE_STRIP?f.geometry=M(f.geometry,1):d.mode===V.TRIANGLE_FAN&&(f.geometry=M(f.geometry,2));else if(d.mode===V.LINES)f=new ie(s,p);else if(d.mode===V.LINE_STRIP)f=new ne(s,p);else if(d.mode===V.LINE_LOOP)f=new n(s,p);else if(d.mode===V.POINTS)f=new me(s,p);else throw Error(`THREE.GLTFLoader: Primitive mode unsupported: `+d.mode);Object.keys(f.geometry.morphAttributes).length>0&&it(f,a),f.name=t.createUniqueName(a.name||`mesh_`+e),X(f,a),d.extensions&&Y(i,f,d),t.assignFinalMaterial(f),u.push(f)}for(let n=0,r=u.length;n<r;n++)t.associations.set(u[n],{meshes:e,primitives:n});if(u.length===1)return a.extensions&&Y(i,u[0],a),u[0];let d=new s;a.extensions&&Y(i,d,a),t.associations.set(d,{meshes:e});for(let e=0,t=u.length;e<t;e++)d.add(u[e]);return d})}loadCamera(e){let t,n=this.json.cameras[e],r=n[n.type];if(!r){console.warn(`THREE.GLTFLoader: Missing camera parameters.`);return}return n.type===`perspective`?t=new xe(oe.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):n.type===`orthographic`&&(t=new pe(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),X(t,n),Promise.resolve(t)}loadSkin(t){let n=this.json.skins[t],r=[];for(let e=0,t=n.joints.length;e<t;e++)r.push(this._loadNodeShallow(n.joints[e]));return n.inverseBindMatrices===void 0?r.push(null):r.push(this.getDependency(`accessor`,n.inverseBindMatrices)),Promise.all(r).then(function(t){let r=t.pop(),i=t,a=[],s=[];for(let t=0,o=i.length;t<o;t++){let o=i[t];if(o){a.push(o);let n=new e;r!==null&&n.fromArray(r.array,t*16),s.push(n)}else console.warn(`THREE.GLTFLoader: Joint "%s" could not be found.`,n.joints[t])}return new o(a,s)})}loadAnimation(e){let t=this.json,n=this,r=t.animations[e],i=r.name?r.name:`animation_`+e,a=[],o=[],s=[],c=[],l=[];for(let e=0,t=r.channels.length;e<t;e++){let t=r.channels[e],n=r.samplers[t.sampler],i=t.target,u=i.node,d=r.parameters===void 0?n.input:r.parameters[n.input],f=r.parameters===void 0?n.output:r.parameters[n.output];i.node!==void 0&&(a.push(this.getDependency(`node`,u)),o.push(this.getDependency(`accessor`,d)),s.push(this.getDependency(`accessor`,f)),c.push(n),l.push(i))}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(s),Promise.all(c),Promise.all(l)]).then(function(e){let t=e[0],a=e[1],o=e[2],s=e[3],c=e[4],l=[];for(let e=0,r=t.length;e<r;e++){let r=t[e],i=a[e],u=o[e],d=s[e],f=c[e];if(r===void 0)continue;r.updateMatrix&&r.updateMatrix();let p=n._createAnimationTracks(r,i,u,d,f);if(p)for(let e=0;e<p.length;e++)l.push(p[e])}let u=new Se(i,void 0,l);return X(u,r),u})}createNodeMesh(e){let t=this.json,n=this,r=t.nodes[e];return r.mesh===void 0?null:n.getDependency(`mesh`,r.mesh).then(function(e){let t=n._getNodeRef(n.meshCache,r.mesh,e);return r.weights!==void 0&&t.traverse(function(e){if(e.isMesh)for(let t=0,n=r.weights.length;t<n;t++)e.morphTargetInfluences[t]=r.weights[t]}),t})}loadNode(e){let t=this.json,n=this,i=t.nodes[e],a=n._loadNodeShallow(e),o=[],s=i.children||[];for(let e=0,t=s.length;e<t;e++)o.push(n.getDependency(`node`,s[e]));let c=i.skin===void 0?Promise.resolve(null):n.getDependency(`skin`,i.skin);return Promise.all([a,Promise.all(o),c]).then(function(e){let t=e[0],n=e[1],i=e[2];i!==null&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(i,st)});for(let e=0,r=n.length;e<r;e++)t.add(n[e]);if(t.userData.pivot!==void 0&&n.length>0){let e=t.userData.pivot,i=n[0];t.pivot=new r().fromArray(e),t.position.x-=e[0],t.position.y-=e[1],t.position.z-=e[2],i.position.set(0,0,0),delete t.userData.pivot}return t})}_loadNodeShallow(t){let n=this.json,r=this.extensions,i=this;if(this.nodeCache[t]!==void 0)return this.nodeCache[t];let a=n.nodes[t],o=a.name?i.createUniqueName(a.name):``,c=[],l=i._invokeOne(function(e){return e.createNodeMesh&&e.createNodeMesh(t)});return l&&c.push(l),a.camera!==void 0&&c.push(i.getDependency(`camera`,a.camera).then(function(e){return i._getNodeRef(i.cameraCache,a.camera,e)})),i._invokeAll(function(e){return e.createNodeAttachment&&e.createNodeAttachment(t)}).forEach(function(e){c.push(e)}),this.nodeCache[t]=Promise.all(c).then(function(n){let c;if(c=a.isBone===!0?new ye:n.length>1?new s:n.length===1?n[0]:new ue,c!==n[0])for(let e=0,t=n.length;e<t;e++)c.add(n[e]);if(a.name&&(c.userData.name=a.name,c.name=o),X(c,a),a.extensions&&Y(r,c,a),a.matrix!==void 0){let t=new e;t.fromArray(a.matrix),c.applyMatrix4(t)}else a.translation!==void 0&&c.position.fromArray(a.translation),a.rotation!==void 0&&c.quaternion.fromArray(a.rotation),a.scale!==void 0&&c.scale.fromArray(a.scale);if(!i.associations.has(c))i.associations.set(c,{});else if(a.mesh!==void 0&&i.meshCache.refs[a.mesh]>1){let e=i.associations.get(c);i.associations.set(c,{...e})}return i.associations.get(c).nodes=t,c}),this.nodeCache[t]}loadScene(e){let t=this.extensions,n=this.json.scenes[e],r=this,i=new s;n.name&&(i.name=r.createUniqueName(n.name)),X(i,n),n.extensions&&Y(t,i,n);let a=n.nodes||[],o=[];for(let e=0,t=a.length;e<t;e++)o.push(r.getDependency(`node`,a[e]));return Promise.all(o).then(function(e){for(let t=0,n=e.length;t<n;t++){let n=e[t];n.parent===null?i.add(n):i.add(ke(n))}return r.associations=(e=>{let t=new Map;for(let[e,n]of r.associations)(e instanceof b||e instanceof y)&&t.set(e,n);return e.traverse(e=>{let n=r.associations.get(e);n!=null&&t.set(e,n)}),t})(i),i})}_createAnimationTracks(e,t,n,r,i){let a=[],o=e.name?e.name:e.uuid,s=[];function c(e){e.morphTargetInfluences&&s.push(e.name?e.name:e.uuid)}q[i.path]===q.weights?(c(e),e.isGroup&&e.children.forEach(c)):s.push(o);let l;switch(q[i.path]){case q.weights:l=O;break;case q.rotation:l=ce;break;case q.translation:case q.scale:l=d;break;default:switch(n.itemSize){case 1:l=O;break;default:l=d;break}break}let u=r.interpolation===void 0?m:tt[r.interpolation],f=this._getArrayFromAccessor(n);for(let e=0,n=s.length;e<n;e++){let n=new l(s[e]+`.`+q[i.path],t.array,f,u);r.interpolation===`CUBICSPLINE`&&this._createCubicSplineTrackInterpolant(n),a.push(n)}return a}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=Q(t.constructor),n=new Float32Array(t.length);for(let r=0,i=t.length;r<i;r++)n[r]=t[r]*e;t=n}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof ce?et:B)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}};function lt(e,t,n){let i=t.attributes,a=new Ce;if(i.POSITION!==void 0){let e=n.json.accessors[i.POSITION],t=e.min,o=e.max;if(t!==void 0&&o!==void 0){if(a.set(new r(t[0],t[1],t[2]),new r(o[0],o[1],o[2])),e.normalized){let t=Q(H[e.componentType]);a.min.multiplyScalar(t),a.max.multiplyScalar(t)}}else{console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`);return}}else return;let o=t.targets;if(o!==void 0){let e=new r,t=new r;for(let r=0,i=o.length;r<i;r++){let i=o[r];if(i.POSITION!==void 0){let r=n.json.accessors[i.POSITION],a=r.min,o=r.max;if(a!==void 0&&o!==void 0){if(t.setX(Math.max(Math.abs(a[0]),Math.abs(o[0]))),t.setY(Math.max(Math.abs(a[1]),Math.abs(o[1]))),t.setZ(Math.max(Math.abs(a[2]),Math.abs(o[2]))),r.normalized){let e=Q(H[r.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`)}}a.expandByVector(e)}e.boundingBox=a;let s=new _e;a.getCenter(s.center),s.radius=a.min.distanceTo(a.max)/2,e.boundingSphere=s}function $(e,t,n){let r=t.attributes,i=[];function a(t,r){return n.getDependency(`accessor`,t).then(function(t){e.setAttribute(r,t)})}for(let t in r){let n=K[t]||t.toLowerCase();n in e.attributes||i.push(a(r[t],n))}if(t.indices!==void 0&&!e.index){let r=n.getDependency(`accessor`,t.indices).then(function(t){e.setIndex(t)});i.push(r)}return w.workingColorSpace!==`srgb-linear`&&`COLOR_0`in r&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${w.workingColorSpace}" not supported.`),X(e,t),lt(e,t,n),Promise.all(i).then(function(){return t.targets===void 0?e:rt(e,t.targets,n)})}export{Ae as GLTFLoader};