aptechka 0.1.0 → 0.1.2

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 (299) hide show
  1. package/README.md +1 -0
  2. package/lib/Damped-1hlKSFaB.cjs +1 -0
  3. package/lib/Damped-523xgzT3.js +152 -0
  4. package/lib/SourceManager-3c3kr7oj.cjs +1 -0
  5. package/lib/SourceManager-F94MRde6.js +108 -0
  6. package/lib/Store-2hWEUGTj.js +135 -0
  7. package/lib/Store-WXFmsaEI.cjs +1 -0
  8. package/lib/WheelControls-F-xg5-oq.js +102 -0
  9. package/lib/WheelControls-Hp5NWRZY.cjs +1 -0
  10. package/lib/animation/Animated.d.ts +41 -0
  11. package/lib/animation/Damped.d.ts +11 -0
  12. package/lib/animation/Tweened.d.ts +16 -0
  13. package/lib/animation/index.cjs +1 -0
  14. package/lib/animation/index.d.ts +3 -0
  15. package/lib/animation/index.js +56 -0
  16. package/lib/attribute/index.cjs +1 -0
  17. package/lib/attribute/index.d.ts +8 -0
  18. package/lib/attribute/index.js +47 -0
  19. package/lib/attributes-_2U65GDl.cjs +1 -0
  20. package/lib/attributes-w0u-KiIb.js +10 -0
  21. package/lib/browser-QbF6EW-w.cjs +1 -0
  22. package/lib/browser-S4eq8AeN.js +4 -0
  23. package/lib/canvas-2d/index.cjs +5 -0
  24. package/lib/canvas-2d/index.d.ts +30 -0
  25. package/lib/canvas-2d/index.js +90 -0
  26. package/lib/controls/Controls.d.ts +9 -0
  27. package/lib/controls/KeyboardControls.d.ts +10 -0
  28. package/lib/controls/LinearControls.d.ts +11 -0
  29. package/lib/controls/User.d.ts +7 -0
  30. package/lib/controls/WheelControls.d.ts +17 -0
  31. package/lib/controls/index.cjs +1 -0
  32. package/lib/controls/index.d.ts +5 -0
  33. package/lib/controls/index.js +43 -0
  34. package/lib/css-unit-parser/index.cjs +8 -0
  35. package/lib/css-unit-parser/index.d.ts +6 -0
  36. package/lib/css-unit-parser/index.js +36 -0
  37. package/lib/custom-element/index.cjs +1 -0
  38. package/lib/custom-element/index.d.ts +8 -0
  39. package/lib/custom-element/index.js +16 -0
  40. package/lib/device/Device.d.ts +17 -0
  41. package/lib/device/Viewport.d.ts +27 -0
  42. package/lib/device/index.cjs +1 -0
  43. package/lib/device/index.d.ts +2 -0
  44. package/lib/device/index.js +123 -0
  45. package/lib/dom-QhWsdQS2.cjs +1 -0
  46. package/lib/dom-bHEwc_xV.js +24 -0
  47. package/lib/easings-_wFs9ZWc.cjs +1 -0
  48. package/lib/easings-uF-tgahf.js +19 -0
  49. package/lib/element-constructor/ElementConstructor.d.ts +76 -0
  50. package/lib/element-constructor/htmlTags.d.ts +113 -0
  51. package/lib/element-constructor/index.cjs +1 -0
  52. package/lib/element-constructor/index.d.ts +4 -0
  53. package/lib/element-constructor/index.js +1389 -0
  54. package/lib/element-constructor/specialObjects.d.ts +2 -0
  55. package/lib/element-constructor/svgTags.d.ts +64 -0
  56. package/lib/en3/attachments/En3SourceManager.d.ts +30 -0
  57. package/lib/en3/core/en3.d.ts +55 -0
  58. package/lib/en3/index.cjs +28 -0
  59. package/lib/en3/index.d.ts +18 -0
  60. package/lib/en3/index.js +3249 -0
  61. package/lib/en3/instances/en3LazyLoader.d.ts +7 -0
  62. package/lib/en3/libs/MeshoptDecoder.d.ts +1 -0
  63. package/lib/en3/loaders/en3GLTFLoader.d.ts +16 -0
  64. package/lib/en3/loaders/en3TextureLoader.d.ts +2 -0
  65. package/lib/en3/objects/En3Clip.d.ts +10 -0
  66. package/lib/en3/objects/En3ClipHelpers.d.ts +5 -0
  67. package/lib/en3/objects/En3GLTF.d.ts +9 -0
  68. package/lib/en3/objects/En3Image.d.ts +7 -0
  69. package/lib/en3/objects/En3ImageLike.d.ts +22 -0
  70. package/{src/packages/en3/objects/En3SourceConsumer.ts → lib/en3/objects/En3SourceConsumer.d.ts} +2 -3
  71. package/lib/en3/objects/En3Video.d.ts +12 -0
  72. package/lib/en3/test/En3HTML.d.ts +9 -0
  73. package/lib/en3/test/En3ModifiedMaterial.d.ts +32 -0
  74. package/lib/en3/test/En3Raycaster.d.ts +19 -0
  75. package/lib/en3/utils/coverTexture.d.ts +6 -0
  76. package/lib/en3/utils/dispose.d.ts +2 -0
  77. package/lib/en3/utils/traverseMaterials.d.ts +2 -0
  78. package/lib/en3/utils/traverseMeshes.d.ts +2 -0
  79. package/lib/function-QP7IreXR.cjs +1 -0
  80. package/lib/function-zwSFehNd.js +17 -0
  81. package/lib/image/index.cjs +1 -0
  82. package/lib/image/index.d.ts +10 -0
  83. package/lib/image/index.js +30 -0
  84. package/lib/intersector/index.cjs +1 -0
  85. package/lib/intersector/index.d.ts +8 -0
  86. package/lib/intersector/index.js +55 -0
  87. package/lib/ladder/index.cjs +1 -0
  88. package/lib/ladder/index.d.ts +21 -0
  89. package/lib/ladder/index.js +97 -0
  90. package/lib/layout-5SJlcXTY.js +12 -0
  91. package/lib/layout-box/index.cjs +1 -0
  92. package/lib/layout-box/index.d.ts +78 -0
  93. package/lib/layout-box/index.js +235 -0
  94. package/lib/layout-rZzbsLPd.cjs +1 -0
  95. package/lib/loading/index.cjs +1 -0
  96. package/lib/loading/index.d.ts +38 -0
  97. package/lib/loading/index.js +99 -0
  98. package/lib/math-FNUBmQPK.cjs +1 -0
  99. package/lib/math-_a3IpKOc.js +45 -0
  100. package/lib/measurer/CumulativeOffsetLeft.d.ts +4 -0
  101. package/lib/measurer/CumulativeOffsetTop.d.ts +4 -0
  102. package/lib/measurer/Meaurer.d.ts +8 -0
  103. package/lib/measurer/index.cjs +1 -0
  104. package/lib/measurer/index.d.ts +3 -0
  105. package/lib/measurer/index.js +48 -0
  106. package/lib/media/index.cjs +1 -0
  107. package/lib/media/index.d.ts +11 -0
  108. package/lib/media/index.js +33 -0
  109. package/lib/morph/Link.d.ts +6 -0
  110. package/lib/morph/Morph.d.ts +26 -0
  111. package/lib/morph/index.cjs +1 -0
  112. package/lib/morph/index.d.ts +1 -0
  113. package/lib/morph/index.js +182 -0
  114. package/lib/notifier/index.cjs +1 -0
  115. package/lib/notifier/index.d.ts +8 -0
  116. package/lib/notifier/index.js +38 -0
  117. package/lib/number-2bR0KBcX.cjs +1 -0
  118. package/lib/number-bCHB2GAD.js +31 -0
  119. package/lib/order/index.cjs +1 -0
  120. package/lib/order/index.d.ts +13 -0
  121. package/lib/order/index.js +5 -0
  122. package/lib/resizer/index.cjs +1 -0
  123. package/lib/resizer/index.d.ts +10 -0
  124. package/lib/resizer/index.js +45 -0
  125. package/lib/router/Link.d.ts +6 -0
  126. package/lib/router/Route.d.ts +15 -0
  127. package/lib/router/RouteElement.d.ts +14 -0
  128. package/lib/router/Router.d.ts +33 -0
  129. package/lib/router/index.cjs +1 -0
  130. package/lib/router/index.d.ts +3 -0
  131. package/lib/router/index.js +266 -0
  132. package/lib/scroll/ScrollElement.d.ts +40 -0
  133. package/lib/scroll/ScrollUserElement.d.ts +7 -0
  134. package/lib/scroll/ScrollbarElement.d.ts +13 -0
  135. package/lib/scroll/index.cjs +71 -0
  136. package/lib/scroll/index.d.ts +2 -0
  137. package/lib/scroll/index.js +444 -0
  138. package/lib/scroll-entries/index.cjs +1 -0
  139. package/lib/scroll-entries/index.d.ts +17 -0
  140. package/lib/scroll-entries/index.js +56 -0
  141. package/lib/source/SourceClass.d.ts +11 -0
  142. package/lib/source/SourceElement.d.ts +16 -0
  143. package/lib/source/SourceManager.d.ts +13 -0
  144. package/lib/source/SourceSet.d.ts +8 -0
  145. package/lib/source/index.cjs +5 -0
  146. package/lib/source/index.d.ts +4 -0
  147. package/lib/source/index.js +95 -0
  148. package/lib/store/Composed.d.ts +7 -0
  149. package/lib/store/Derived.d.ts +7 -0
  150. package/lib/store/DerivedArray.d.ts +7 -0
  151. package/lib/store/Resource.d.ts +11 -0
  152. package/lib/store/Store.d.ts +32 -0
  153. package/lib/store/StoreRegistry.d.ts +22 -0
  154. package/lib/store/index.cjs +1 -0
  155. package/lib/store/index.d.ts +6 -0
  156. package/lib/store/index.js +96 -0
  157. package/lib/string-GmxZA5Nq.js +31 -0
  158. package/lib/string-WmNOGq16.cjs +1 -0
  159. package/lib/ticker/index.cjs +1 -0
  160. package/lib/ticker/index.d.ts +19 -0
  161. package/lib/ticker/index.js +107 -0
  162. package/lib/utils/array.d.ts +1 -0
  163. package/lib/utils/attributes.d.ts +2 -0
  164. package/lib/utils/browser.d.ts +1 -0
  165. package/lib/utils/canvas.d.ts +6 -0
  166. package/lib/utils/collisions.d.ts +3 -0
  167. package/lib/utils/coordinates.d.ts +13 -0
  168. package/lib/utils/decoding.d.ts +2 -0
  169. package/lib/utils/dev.d.ts +3 -0
  170. package/lib/utils/dom.d.ts +4 -0
  171. package/lib/utils/easings.d.ts +17 -0
  172. package/lib/utils/file.d.ts +1 -0
  173. package/lib/utils/function.d.ts +2 -0
  174. package/lib/utils/index.cjs +1 -0
  175. package/lib/utils/index.d.ts +19 -0
  176. package/lib/utils/index.js +203 -0
  177. package/lib/utils/layout.d.ts +3 -0
  178. package/lib/utils/math.d.ts +11 -0
  179. package/lib/utils/number.d.ts +3 -0
  180. package/lib/utils/object.d.ts +7 -0
  181. package/lib/utils/string.d.ts +5 -0
  182. package/lib/utils/ts-shape.d.ts +19 -0
  183. package/lib/utils/ts-utility.d.ts +19 -0
  184. package/lib/video/index.cjs +1 -0
  185. package/lib/video/index.d.ts +11 -0
  186. package/lib/video/index.js +37 -0
  187. package/package.json +120 -118
  188. package/.prettierignore +0 -16
  189. package/.prettierrc +0 -9
  190. package/.vscode/extensions.json +0 -4
  191. package/.vscode/launch.json +0 -11
  192. package/.vscode/settings.json +0 -18
  193. package/index.html +0 -32
  194. package/public/vite.svg +0 -1
  195. package/src/packages/animation/Animated.ts +0 -189
  196. package/src/packages/animation/Damped.ts +0 -39
  197. package/src/packages/animation/Tweened.ts +0 -51
  198. package/src/packages/animation/index.ts +0 -10
  199. package/src/packages/attribute/index.ts +0 -59
  200. package/src/packages/canvas-2d/index.ts +0 -137
  201. package/src/packages/controls/Controls.ts +0 -15
  202. package/src/packages/controls/KeyboardControls.ts +0 -63
  203. package/src/packages/controls/LinearControls.ts +0 -27
  204. package/src/packages/controls/User.ts +0 -20
  205. package/src/packages/controls/WheelControls.ts +0 -92
  206. package/src/packages/controls/index.ts +0 -5
  207. package/src/packages/css-unit-parser/index.ts +0 -32
  208. package/src/packages/custom-element/index.ts +0 -19
  209. package/src/packages/device/Device.ts +0 -113
  210. package/src/packages/device/Viewport.ts +0 -67
  211. package/src/packages/device/index.ts +0 -2
  212. package/src/packages/element-constructor/ElementConstructor.ts +0 -577
  213. package/src/packages/element-constructor/htmlTags.ts +0 -679
  214. package/src/packages/element-constructor/index.ts +0 -4
  215. package/src/packages/element-constructor/specialObjects.ts +0 -8
  216. package/src/packages/element-constructor/svgTags.ts +0 -588
  217. package/src/packages/en3/attachments/En3SourceManager.ts +0 -116
  218. package/src/packages/en3/core/en3.ts +0 -306
  219. package/src/packages/en3/index.ts +0 -52
  220. package/src/packages/en3/instances/en3LazyLoader.ts +0 -22
  221. package/src/packages/en3/libs/MeshoptDecoder.js +0 -138
  222. package/src/packages/en3/loaders/en3GLTFLoader.ts +0 -54
  223. package/src/packages/en3/loaders/en3TextureLoader.ts +0 -3
  224. package/src/packages/en3/objects/En3Clip.ts +0 -53
  225. package/src/packages/en3/objects/En3ClipHelpers.ts +0 -12
  226. package/src/packages/en3/objects/En3GLTF.ts +0 -35
  227. package/src/packages/en3/objects/En3Image.ts +0 -18
  228. package/src/packages/en3/objects/En3ImageLike.ts +0 -101
  229. package/src/packages/en3/objects/En3Video.ts +0 -88
  230. package/src/packages/en3/test/En3HTML.ts +0 -55
  231. package/src/packages/en3/test/En3ModifiedMaterial.ts +0 -221
  232. package/src/packages/en3/test/En3Raycaster.ts +0 -187
  233. package/src/packages/en3/utils/coverTexture.ts +0 -29
  234. package/src/packages/en3/utils/dispose.ts +0 -27
  235. package/src/packages/en3/utils/traverseMaterials.ts +0 -10
  236. package/src/packages/en3/utils/traverseMeshes.ts +0 -9
  237. package/src/packages/image/index.ts +0 -19
  238. package/src/packages/intersector/index.ts +0 -83
  239. package/src/packages/ladder/index.ts +0 -112
  240. package/src/packages/layout-box/index.ts +0 -417
  241. package/src/packages/loading/index.ts +0 -131
  242. package/src/packages/measurer/CumulativeOffsetLeft.ts +0 -8
  243. package/src/packages/measurer/CumulativeOffsetTop.ts +0 -8
  244. package/src/packages/measurer/Meaurer.ts +0 -38
  245. package/src/packages/measurer/index.ts +0 -3
  246. package/src/packages/media/index.ts +0 -38
  247. package/src/packages/morph/Link.ts +0 -32
  248. package/src/packages/morph/Morph.ts +0 -246
  249. package/src/packages/morph/index.ts +0 -10
  250. package/src/packages/notifier/index.ts +0 -41
  251. package/src/packages/order/index.ts +0 -14
  252. package/src/packages/resizer/index.ts +0 -55
  253. package/src/packages/router/Link.ts +0 -33
  254. package/src/packages/router/Route.ts +0 -152
  255. package/src/packages/router/RouteElement.ts +0 -34
  256. package/src/packages/router/Router.ts +0 -190
  257. package/src/packages/router/index.ts +0 -13
  258. package/src/packages/scroll/ScrollElement.ts +0 -618
  259. package/src/packages/scroll/ScrollUserElement.ts +0 -21
  260. package/src/packages/scroll/ScrollbarElement.ts +0 -170
  261. package/src/packages/scroll/index.ts +0 -2
  262. package/src/packages/scroll-entries/index.ts +0 -74
  263. package/src/packages/source/SourceClass.ts +0 -77
  264. package/src/packages/source/SourceElement.ts +0 -177
  265. package/src/packages/source/SourceManager.ts +0 -61
  266. package/src/packages/source/SourceSet.ts +0 -52
  267. package/src/packages/source/index.ts +0 -8
  268. package/src/packages/store/Composed.ts +0 -33
  269. package/src/packages/store/Derived.ts +0 -24
  270. package/src/packages/store/DerivedArray.ts +0 -36
  271. package/src/packages/store/Resource.ts +0 -38
  272. package/src/packages/store/Store.ts +0 -144
  273. package/src/packages/store/StoreRegistry.ts +0 -105
  274. package/src/packages/store/index.ts +0 -23
  275. package/src/packages/ticker/index.ts +0 -173
  276. package/src/packages/utils/array.ts +0 -3
  277. package/src/packages/utils/attributes.ts +0 -19
  278. package/src/packages/utils/browser.ts +0 -2
  279. package/src/packages/utils/canvas.ts +0 -46
  280. package/src/packages/utils/collisions.ts +0 -12
  281. package/src/packages/utils/coordinates.ts +0 -40
  282. package/src/packages/utils/decoding.ts +0 -11
  283. package/src/packages/utils/dev.ts +0 -5
  284. package/src/packages/utils/dom.ts +0 -48
  285. package/src/packages/utils/easings.ts +0 -69
  286. package/src/packages/utils/file.ts +0 -17
  287. package/src/packages/utils/function.ts +0 -29
  288. package/src/packages/utils/index.ts +0 -61
  289. package/src/packages/utils/layout.ts +0 -22
  290. package/src/packages/utils/math.ts +0 -74
  291. package/src/packages/utils/number.ts +0 -26
  292. package/src/packages/utils/object.ts +0 -108
  293. package/src/packages/utils/string.ts +0 -49
  294. package/src/packages/utils/ts-shape.ts +0 -25
  295. package/src/packages/utils/ts-utility.ts +0 -47
  296. package/src/packages/video/index.ts +0 -39
  297. package/src/playground/index.ts +0 -0
  298. package/tsconfig.json +0 -31
  299. package/vite.config.ts +0 -65
@@ -0,0 +1,3249 @@
1
+ var hs = Object.defineProperty, ls = Object.defineProperties;
2
+ var ds = Object.getOwnPropertyDescriptors;
3
+ var ct = Object.getOwnPropertySymbols;
4
+ var us = Object.prototype.hasOwnProperty, fs = Object.prototype.propertyIsEnumerable;
5
+ var xe = (a, A, e) => A in a ? hs(a, A, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[A] = e, tA = (a, A) => {
6
+ for (var e in A || (A = {}))
7
+ us.call(A, e) && xe(a, e, A[e]);
8
+ if (ct)
9
+ for (var e of ct(A))
10
+ fs.call(A, e) && xe(a, e, A[e]);
11
+ return a;
12
+ }, me = (a, A) => ls(a, ds(A));
13
+ var Qt = (a, A, e) => (xe(a, typeof A != "symbol" ? A + "" : A, e), e), ke = (a, A, e) => {
14
+ if (!A.has(a))
15
+ throw TypeError("Cannot " + e);
16
+ };
17
+ var g = (a, A, e) => (ke(a, A, "read from private field"), e ? e.call(a) : A.get(a)), u = (a, A, e) => {
18
+ if (A.has(a))
19
+ throw TypeError("Cannot add the same private member more than once");
20
+ A instanceof WeakSet ? A.add(a) : A.set(a, e);
21
+ }, G = (a, A, e, s) => (ke(a, A, "write to private field"), s ? s.call(a, e) : A.set(a, e), e);
22
+ var QA = (a, A, e) => (ke(a, A, "access private method"), e);
23
+ var Me = (a, A, e) => new Promise((s, t) => {
24
+ var i = (B) => {
25
+ try {
26
+ o(e.next(B));
27
+ } catch (C) {
28
+ t(C);
29
+ }
30
+ }, n = (B) => {
31
+ try {
32
+ o(e.throw(B));
33
+ } catch (C) {
34
+ t(C);
35
+ }
36
+ }, o = (B) => B.done ? s(B.value) : Promise.resolve(B.value).then(i, n);
37
+ o((e = e.apply(a, A)).next());
38
+ });
39
+ import { Ladder as ht } from "../ladder/index.js";
40
+ import { LayoutBox as Kt } from "../layout-box/index.js";
41
+ import { RESIZE_ORDER as bt, TICK_ORDER as Bt } from "../order/index.js";
42
+ import { resizer as kA } from "../resizer/index.js";
43
+ import { ticker as KA } from "../ticker/index.js";
44
+ import { Mesh as Fe, REVISION as Ds, OrthographicCamera as ze, PerspectiveCamera as $e, Scene as Fs, WebGLRenderer as Gs, TrianglesDrawMode as Rs, TriangleFanDrawMode as At, TriangleStripDrawMode as Ot, Loader as rt, LoaderUtils as WA, FileLoader as FA, Color as EA, LinearSRGBColorSpace as O, SpotLight as ps, PointLight as ms, DirectionalLight as Ms, MeshBasicMaterial as qA, SRGBColorSpace as $, MeshPhysicalMaterial as AA, Vector2 as Ct, Matrix4 as bA, Vector3 as K, Quaternion as at, InstancedMesh as ws, InstancedBufferAttribute as Ss, Object3D as It, TextureLoader as _t, ImageBitmapLoader as Ls, BufferAttribute as VA, InterleavedBuffer as ys, InterleavedBufferAttribute as Js, LinearFilter as He, LinearMipmapLinearFilter as gt, RepeatWrapping as et, PointsMaterial as Hs, Material as Ke, LineBasicMaterial as Ts, MeshStandardMaterial as Pt, DoubleSide as Us, PropertyBinding as Ns, BufferGeometry as Yt, SkinnedMesh as xs, LineSegments as ks, Line as Ks, LineLoop as bs, Points as Os, Group as jA, MathUtils as _s, Skeleton as Ps, AnimationClip as Ys, Bone as qs, InterpolateLinear as qt, ColorManagement as lt, NearestFilter as Xs, NearestMipmapNearestFilter as vs, LinearMipmapNearestFilter as Ws, NearestMipmapLinearFilter as Vs, ClampToEdgeWrapping as js, MirroredRepeatWrapping as Zs, InterpolateDiscrete as zs, FrontSide as $s, Texture as dt, VectorKeyframeTrack as ut, NumberKeyframeTrack as ft, QuaternionKeyframeTrack as Dt, Box3 as Ai, Sphere as ei, Interpolant as ti, CompressedCubeTexture as si, UnsignedByteType as b, CompressedArrayTexture as ii, CompressedTexture as Xt, RGBAFormat as RA, RGBA_ASTC_4x4_Format as ni, RGBA_BPTC_Format as oi, RGBA_ETC2_EAC_Format as Bi, RGBA_PVRTC_4BPPV1_Format as ri, RGBA_S3TC_DXT5_Format as Ci, RGB_ETC1_Format as ai, RGB_ETC2_Format as Ii, RGB_PVRTC_4BPPV1_Format as gi, RGB_S3TC_DXT1_Format as Ei, FloatType as ye, HalfFloatType as Je, DataTexture as ci, Data3DTexture as Qi, DisplayP3ColorSpace as hi, LinearDisplayP3ColorSpace as li, NoColorSpace as Ft, RGFormat as XA, RedFormat as vA, RGBA_ASTC_6x6_Format as Gt, Plane as we, PlaneHelper as Se, PlaneGeometry as di, VideoTexture as ui, Raycaster as fi } from "three";
45
+ import { intersector as Rt } from "../intersector/index.js";
46
+ import { g as Di } from "../dom-bHEwc_xV.js";
47
+ import { loading as be } from "../loading/index.js";
48
+ import { S as Fi } from "../SourceManager-F94MRde6.js";
49
+ import { S as pt } from "../Store-2hWEUGTj.js";
50
+ import "../browser-S4eq8AeN.js";
51
+ import "../css-unit-parser/index.js";
52
+ import "../scroll-entries/index.js";
53
+ import "../layout-5SJlcXTY.js";
54
+ import "../notifier/index.js";
55
+ import "../function-zwSFehNd.js";
56
+ function vt(a) {
57
+ const A = (e) => {
58
+ e.dispose();
59
+ for (const s of Object.keys(e)) {
60
+ const t = e[s];
61
+ t && typeof t == "object" && "minFilter" in t && t.dispose();
62
+ }
63
+ };
64
+ a.traverse((e) => {
65
+ if (e instanceof Fe) {
66
+ if (e.geometry.dispose(), !Array.isArray(e.material) && e.material.isMaterial)
67
+ A(e.material);
68
+ else if (Array.isArray(e.material))
69
+ for (const s of e.material)
70
+ A(s);
71
+ }
72
+ });
73
+ }
74
+ var Te, nA, N, Y, mA, oA, k, MA, wA, Z, q, SA, ZA, zA, dA, Ue, Wt, $A, tt, Ae, ee;
75
+ class Gi {
76
+ constructor() {
77
+ u(this, Ue);
78
+ u(this, $A);
79
+ u(this, Te, `https://unpkg.com/three@0.${Ds}.x`);
80
+ u(this, nA, null);
81
+ u(this, N, null);
82
+ u(this, Y, null);
83
+ u(this, mA, null);
84
+ u(this, oA, []);
85
+ u(this, k, new ht({
86
+ x: 0,
87
+ y: 0,
88
+ z: 0
89
+ }));
90
+ u(this, MA, new ht({
91
+ x: 0,
92
+ y: 0,
93
+ z: 0
94
+ }));
95
+ u(this, wA, "auto");
96
+ u(this, Z, 0);
97
+ u(this, q, 0);
98
+ u(this, SA, 0);
99
+ u(this, ZA, 2);
100
+ u(this, zA, !0);
101
+ u(this, dA, !1);
102
+ u(this, Ae, () => {
103
+ var A;
104
+ G(this, Z, g(this, nA).clientWidth), G(this, q, g(this, nA).clientHeight), G(this, SA, Math.min(g(this, ZA), devicePixelRatio || 1)), g(this, N).setPixelRatio(g(this, SA)), g(this, N).setSize(g(this, Z), g(this, q)), QA(this, $A, tt).call(this), (A = this.onResize) == null || A.call(this);
105
+ });
106
+ u(this, ee, () => {
107
+ QA(this, Ue, Wt).call(this), this.render(g(this, mA), g(this, Y));
108
+ });
109
+ }
110
+ get CDNVersion() {
111
+ return g(this, Te);
112
+ }
113
+ get containerElement() {
114
+ return g(this, nA);
115
+ }
116
+ get webglRenderer() {
117
+ return g(this, N);
118
+ }
119
+ get camera() {
120
+ return g(this, Y);
121
+ }
122
+ get scene() {
123
+ return g(this, mA);
124
+ }
125
+ get attachedObjects() {
126
+ return g(this, oA);
127
+ }
128
+ get cameraPosition() {
129
+ return g(this, k);
130
+ }
131
+ get cameraRotation() {
132
+ return g(this, MA);
133
+ }
134
+ get width() {
135
+ return g(this, Z);
136
+ }
137
+ get height() {
138
+ return g(this, q);
139
+ }
140
+ get pixelRatio() {
141
+ return g(this, SA);
142
+ }
143
+ get cameraDistance() {
144
+ return g(this, k).getStepValue("_initial").z;
145
+ }
146
+ set cameraDistance(A) {
147
+ g(this, k).setStep("_initial", "+", {
148
+ z: A
149
+ }), g(this, k).calculate(), QA(this, $A, tt).call(this);
150
+ }
151
+ attachToHTMLElement(A, e, s) {
152
+ const t = new Kt(A, me(tA({}, s), {
153
+ containerElement: this.containerElement,
154
+ cartesian: !0
155
+ }));
156
+ return t.bindObject(e), e.userData.box = t, g(this, oA).push(e), e;
157
+ }
158
+ detachFromHTMLElement(A) {
159
+ G(this, oA, g(this, oA).filter((e) => e === A ? (A.userData.box.destroy(), !1) : !0));
160
+ }
161
+ add(A, e, s) {
162
+ if (this.scene.add(A), e)
163
+ return this.attachToHTMLElement(e, A, s);
164
+ }
165
+ remove(A, e) {
166
+ this.scene.remove(A), e && this.detachFromHTMLElement(A);
167
+ }
168
+ setup(A) {
169
+ if (g(this, dA)) {
170
+ console.warn("[en3.setup]: You are trying to setup en3 again.");
171
+ return;
172
+ }
173
+ G(this, nA, (A == null ? void 0 : A.containerElement) || document.body), G(this, Y, (A == null ? void 0 : A.cameraType) === "orthographic" ? new ze() : new $e()), g(this, k).bind(g(this, Y).position), g(this, MA).bind(g(this, Y).rotation), g(this, k).setStep("_initial", "+", {
174
+ z: (A == null ? void 0 : A.cameraDistance) || 1e3
175
+ }), g(this, k).calculate(), g(this, Y).near = (A == null ? void 0 : A.cameraNear) || 1, g(this, Y).far = (A == null ? void 0 : A.cameraFar) || 11e3, G(this, wA, (A == null ? void 0 : A.cameraFov) || "auto"), G(this, mA, new Fs()), G(this, ZA, (A == null ? void 0 : A.maxPixelRatio) || 2), G(this, zA, (A == null ? void 0 : A.cameraAutoUpdate) !== !1), G(this, N, new Gs(A == null ? void 0 : A.webGLRendererParameters)), g(this, N).domElement.style.cssText = `
176
+ position: fixed;
177
+ left: 0;
178
+ top: 0;
179
+ width: 100%;
180
+ height: 100%;
181
+ z-index: -1;
182
+ `, g(this, nA).prepend(g(this, N).domElement), G(this, dA, !0), kA.subscribe(g(this, Ae), bt.EN3), KA.subscribe(g(this, ee), { order: Bt.EN3 });
183
+ }
184
+ destroy() {
185
+ if (!g(this, dA)) {
186
+ console.warn("[en3.setup]: You are trying to destory en3 but it has not been initialized.");
187
+ return;
188
+ }
189
+ g(this, oA).forEach((A) => {
190
+ A.userData.box.destroy();
191
+ }), kA.unsubscribe(g(this, Ae)), KA.unsubscribe(g(this, ee)), this.scene.clear(), vt(this.scene), g(this, N).dispose(), g(this, N).domElement.remove(), G(this, N, null), G(this, dA, !1);
192
+ }
193
+ render(A, e) {
194
+ g(this, N).render(A, e);
195
+ }
196
+ }
197
+ Te = new WeakMap(), nA = new WeakMap(), N = new WeakMap(), Y = new WeakMap(), mA = new WeakMap(), oA = new WeakMap(), k = new WeakMap(), MA = new WeakMap(), wA = new WeakMap(), Z = new WeakMap(), q = new WeakMap(), SA = new WeakMap(), ZA = new WeakMap(), zA = new WeakMap(), dA = new WeakMap(), Ue = new WeakSet(), Wt = function() {
198
+ g(this, zA) && (g(this, k).calculate(), g(this, MA).calculate());
199
+ }, $A = new WeakSet(), tt = function() {
200
+ this.camera instanceof $e ? (this.camera.aspect = g(this, Z) / g(this, q), this.camera.fov = g(this, wA) === "auto" ? 2 * Math.atan(g(this, q) / 2 / g(this, k).getStepValue("_initial").z) * (180 / Math.PI) : g(this, wA)) : this.camera instanceof ze && (this.camera.left = g(this, Z) / -2, this.camera.right = g(this, Z) / 2, this.camera.top = g(this, q) / 2, this.camera.bottom = g(this, q) / -2), this.camera.updateProjectionMatrix();
201
+ }, Ae = new WeakMap(), ee = new WeakMap();
202
+ const w = new Gi();
203
+ class Ri {
204
+ add(A, e) {
205
+ const s = (i) => {
206
+ i.isIntersecting && (A.sourceManager.lazyLoad(), Rt.unsubscribe(s));
207
+ }, t = Di(e);
208
+ if (t)
209
+ return Rt.subscribe(t, s);
210
+ }
211
+ }
212
+ const Vn = new Ri();
213
+ function mt(a, A) {
214
+ if (A === Rs)
215
+ return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."), a;
216
+ if (A === At || A === Ot) {
217
+ let e = a.getIndex();
218
+ if (e === null) {
219
+ const n = [], o = a.getAttribute("position");
220
+ if (o !== void 0) {
221
+ for (let B = 0; B < o.count; B++)
222
+ n.push(B);
223
+ a.setIndex(n), e = a.getIndex();
224
+ } else
225
+ return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."), a;
226
+ }
227
+ const s = e.count - 2, t = [];
228
+ if (A === At)
229
+ for (let n = 1; n <= s; n++)
230
+ t.push(e.getX(0)), t.push(e.getX(n)), t.push(e.getX(n + 1));
231
+ else
232
+ for (let n = 0; n < s; n++)
233
+ n % 2 === 0 ? (t.push(e.getX(n)), t.push(e.getX(n + 1)), t.push(e.getX(n + 2))) : (t.push(e.getX(n + 2)), t.push(e.getX(n + 1)), t.push(e.getX(n)));
234
+ t.length / 3 !== s && console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");
235
+ const i = a.clone();
236
+ return i.setIndex(t), i.clearGroups(), i;
237
+ } else
238
+ return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:", A), a;
239
+ }
240
+ class pi extends rt {
241
+ constructor(A) {
242
+ super(A), this.dracoLoader = null, this.ktx2Loader = null, this.meshoptDecoder = null, this.pluginCallbacks = [], this.register(function(e) {
243
+ return new Li(e);
244
+ }), this.register(function(e) {
245
+ return new Ki(e);
246
+ }), this.register(function(e) {
247
+ return new bi(e);
248
+ }), this.register(function(e) {
249
+ return new Oi(e);
250
+ }), this.register(function(e) {
251
+ return new Ji(e);
252
+ }), this.register(function(e) {
253
+ return new Hi(e);
254
+ }), this.register(function(e) {
255
+ return new Ti(e);
256
+ }), this.register(function(e) {
257
+ return new Ui(e);
258
+ }), this.register(function(e) {
259
+ return new Si(e);
260
+ }), this.register(function(e) {
261
+ return new Ni(e);
262
+ }), this.register(function(e) {
263
+ return new yi(e);
264
+ }), this.register(function(e) {
265
+ return new ki(e);
266
+ }), this.register(function(e) {
267
+ return new xi(e);
268
+ }), this.register(function(e) {
269
+ return new Mi(e);
270
+ }), this.register(function(e) {
271
+ return new _i(e);
272
+ }), this.register(function(e) {
273
+ return new Pi(e);
274
+ });
275
+ }
276
+ load(A, e, s, t) {
277
+ const i = this;
278
+ let n;
279
+ if (this.resourcePath !== "")
280
+ n = this.resourcePath;
281
+ else if (this.path !== "") {
282
+ const C = WA.extractUrlBase(A);
283
+ n = WA.resolveURL(C, this.path);
284
+ } else
285
+ n = WA.extractUrlBase(A);
286
+ this.manager.itemStart(A);
287
+ const o = function(C) {
288
+ t ? t(C) : console.error(C), i.manager.itemError(A), i.manager.itemEnd(A);
289
+ }, B = new FA(this.manager);
290
+ B.setPath(this.path), B.setResponseType("arraybuffer"), B.setRequestHeader(this.requestHeader), B.setWithCredentials(this.withCredentials), B.load(A, function(C) {
291
+ try {
292
+ i.parse(C, n, function(I) {
293
+ e(I), i.manager.itemEnd(A);
294
+ }, o);
295
+ } catch (I) {
296
+ o(I);
297
+ }
298
+ }, s, o);
299
+ }
300
+ setDRACOLoader(A) {
301
+ return this.dracoLoader = A, this;
302
+ }
303
+ setDDSLoader() {
304
+ throw new Error(
305
+ 'THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".'
306
+ );
307
+ }
308
+ setKTX2Loader(A) {
309
+ return this.ktx2Loader = A, this;
310
+ }
311
+ setMeshoptDecoder(A) {
312
+ return this.meshoptDecoder = A, this;
313
+ }
314
+ register(A) {
315
+ return this.pluginCallbacks.indexOf(A) === -1 && this.pluginCallbacks.push(A), this;
316
+ }
317
+ unregister(A) {
318
+ return this.pluginCallbacks.indexOf(A) !== -1 && this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A), 1), this;
319
+ }
320
+ parse(A, e, s, t) {
321
+ let i;
322
+ const n = {}, o = {}, B = new TextDecoder();
323
+ if (typeof A == "string")
324
+ i = JSON.parse(A);
325
+ else if (A instanceof ArrayBuffer)
326
+ if (B.decode(new Uint8Array(A, 0, 4)) === Vt) {
327
+ try {
328
+ n[R.KHR_BINARY_GLTF] = new Yi(A);
329
+ } catch (r) {
330
+ t && t(r);
331
+ return;
332
+ }
333
+ i = JSON.parse(n[R.KHR_BINARY_GLTF].content);
334
+ } else
335
+ i = JSON.parse(B.decode(A));
336
+ else
337
+ i = A;
338
+ if (i.asset === void 0 || i.asset.version[0] < 2) {
339
+ t && t(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));
340
+ return;
341
+ }
342
+ const C = new sn(i, {
343
+ path: e || this.resourcePath || "",
344
+ crossOrigin: this.crossOrigin,
345
+ requestHeader: this.requestHeader,
346
+ manager: this.manager,
347
+ ktx2Loader: this.ktx2Loader,
348
+ meshoptDecoder: this.meshoptDecoder
349
+ });
350
+ C.fileLoader.setRequestHeader(this.requestHeader);
351
+ for (let I = 0; I < this.pluginCallbacks.length; I++) {
352
+ const r = this.pluginCallbacks[I](C);
353
+ r.name || console.error("THREE.GLTFLoader: Invalid plugin found: missing name"), o[r.name] = r, n[r.name] = !0;
354
+ }
355
+ if (i.extensionsUsed)
356
+ for (let I = 0; I < i.extensionsUsed.length; ++I) {
357
+ const r = i.extensionsUsed[I], c = i.extensionsRequired || [];
358
+ switch (r) {
359
+ case R.KHR_MATERIALS_UNLIT:
360
+ n[r] = new wi();
361
+ break;
362
+ case R.KHR_DRACO_MESH_COMPRESSION:
363
+ n[r] = new qi(i, this.dracoLoader);
364
+ break;
365
+ case R.KHR_TEXTURE_TRANSFORM:
366
+ n[r] = new Xi();
367
+ break;
368
+ case R.KHR_MESH_QUANTIZATION:
369
+ n[r] = new vi();
370
+ break;
371
+ default:
372
+ c.indexOf(r) >= 0 && o[r] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + r + '".');
373
+ }
374
+ }
375
+ C.setExtensions(n), C.setPlugins(o), C.parse(s, t);
376
+ }
377
+ parseAsync(A, e) {
378
+ const s = this;
379
+ return new Promise(function(t, i) {
380
+ s.parse(A, e, t, i);
381
+ });
382
+ }
383
+ }
384
+ function mi() {
385
+ let a = {};
386
+ return {
387
+ get: function(A) {
388
+ return a[A];
389
+ },
390
+ add: function(A, e) {
391
+ a[A] = e;
392
+ },
393
+ remove: function(A) {
394
+ delete a[A];
395
+ },
396
+ removeAll: function() {
397
+ a = {};
398
+ }
399
+ };
400
+ }
401
+ const R = {
402
+ KHR_BINARY_GLTF: "KHR_binary_glTF",
403
+ KHR_DRACO_MESH_COMPRESSION: "KHR_draco_mesh_compression",
404
+ KHR_LIGHTS_PUNCTUAL: "KHR_lights_punctual",
405
+ KHR_MATERIALS_CLEARCOAT: "KHR_materials_clearcoat",
406
+ KHR_MATERIALS_IOR: "KHR_materials_ior",
407
+ KHR_MATERIALS_SHEEN: "KHR_materials_sheen",
408
+ KHR_MATERIALS_SPECULAR: "KHR_materials_specular",
409
+ KHR_MATERIALS_TRANSMISSION: "KHR_materials_transmission",
410
+ KHR_MATERIALS_IRIDESCENCE: "KHR_materials_iridescence",
411
+ KHR_MATERIALS_ANISOTROPY: "KHR_materials_anisotropy",
412
+ KHR_MATERIALS_UNLIT: "KHR_materials_unlit",
413
+ KHR_MATERIALS_VOLUME: "KHR_materials_volume",
414
+ KHR_TEXTURE_BASISU: "KHR_texture_basisu",
415
+ KHR_TEXTURE_TRANSFORM: "KHR_texture_transform",
416
+ KHR_MESH_QUANTIZATION: "KHR_mesh_quantization",
417
+ KHR_MATERIALS_EMISSIVE_STRENGTH: "KHR_materials_emissive_strength",
418
+ EXT_MATERIALS_BUMP: "EXT_materials_bump",
419
+ EXT_TEXTURE_WEBP: "EXT_texture_webp",
420
+ EXT_TEXTURE_AVIF: "EXT_texture_avif",
421
+ EXT_MESHOPT_COMPRESSION: "EXT_meshopt_compression",
422
+ EXT_MESH_GPU_INSTANCING: "EXT_mesh_gpu_instancing"
423
+ };
424
+ class Mi {
425
+ constructor(A) {
426
+ this.parser = A, this.name = R.KHR_LIGHTS_PUNCTUAL, this.cache = { refs: {}, uses: {} };
427
+ }
428
+ _markDefs() {
429
+ const A = this.parser, e = this.parser.json.nodes || [];
430
+ for (let s = 0, t = e.length; s < t; s++) {
431
+ const i = e[s];
432
+ i.extensions && i.extensions[this.name] && i.extensions[this.name].light !== void 0 && A._addNodeRef(this.cache, i.extensions[this.name].light);
433
+ }
434
+ }
435
+ _loadLight(A) {
436
+ const e = this.parser, s = "light:" + A;
437
+ let t = e.cache.get(s);
438
+ if (t)
439
+ return t;
440
+ const i = e.json, B = ((i.extensions && i.extensions[this.name] || {}).lights || [])[A];
441
+ let C;
442
+ const I = new EA(16777215);
443
+ B.color !== void 0 && I.setRGB(B.color[0], B.color[1], B.color[2], O);
444
+ const r = B.range !== void 0 ? B.range : 0;
445
+ switch (B.type) {
446
+ case "directional":
447
+ C = new Ms(I), C.target.position.set(0, 0, -1), C.add(C.target);
448
+ break;
449
+ case "point":
450
+ C = new ms(I), C.distance = r;
451
+ break;
452
+ case "spot":
453
+ C = new ps(I), C.distance = r, B.spot = B.spot || {}, B.spot.innerConeAngle = B.spot.innerConeAngle !== void 0 ? B.spot.innerConeAngle : 0, B.spot.outerConeAngle = B.spot.outerConeAngle !== void 0 ? B.spot.outerConeAngle : Math.PI / 4, C.angle = B.spot.outerConeAngle, C.penumbra = 1 - B.spot.innerConeAngle / B.spot.outerConeAngle, C.target.position.set(0, 0, -1), C.add(C.target);
454
+ break;
455
+ default:
456
+ throw new Error("THREE.GLTFLoader: Unexpected light type: " + B.type);
457
+ }
458
+ return C.position.set(0, 0, 0), C.decay = 2, iA(C, B), B.intensity !== void 0 && (C.intensity = B.intensity), C.name = e.createUniqueName(B.name || "light_" + A), t = Promise.resolve(C), e.cache.add(s, t), t;
459
+ }
460
+ getDependency(A, e) {
461
+ if (A === "light")
462
+ return this._loadLight(e);
463
+ }
464
+ createNodeAttachment(A) {
465
+ const e = this, s = this.parser, i = s.json.nodes[A], o = (i.extensions && i.extensions[this.name] || {}).light;
466
+ return o === void 0 ? null : this._loadLight(o).then(function(B) {
467
+ return s._getNodeRef(e.cache, o, B);
468
+ });
469
+ }
470
+ }
471
+ class wi {
472
+ constructor() {
473
+ this.name = R.KHR_MATERIALS_UNLIT;
474
+ }
475
+ getMaterialType() {
476
+ return qA;
477
+ }
478
+ extendParams(A, e, s) {
479
+ const t = [];
480
+ A.color = new EA(1, 1, 1), A.opacity = 1;
481
+ const i = e.pbrMetallicRoughness;
482
+ if (i) {
483
+ if (Array.isArray(i.baseColorFactor)) {
484
+ const n = i.baseColorFactor;
485
+ A.color.setRGB(n[0], n[1], n[2], O), A.opacity = n[3];
486
+ }
487
+ i.baseColorTexture !== void 0 && t.push(s.assignTexture(A, "map", i.baseColorTexture, $));
488
+ }
489
+ return Promise.all(t);
490
+ }
491
+ }
492
+ class Si {
493
+ constructor(A) {
494
+ this.parser = A, this.name = R.KHR_MATERIALS_EMISSIVE_STRENGTH;
495
+ }
496
+ extendMaterialParams(A, e) {
497
+ const t = this.parser.json.materials[A];
498
+ if (!t.extensions || !t.extensions[this.name])
499
+ return Promise.resolve();
500
+ const i = t.extensions[this.name].emissiveStrength;
501
+ return i !== void 0 && (e.emissiveIntensity = i), Promise.resolve();
502
+ }
503
+ }
504
+ class Li {
505
+ constructor(A) {
506
+ this.parser = A, this.name = R.KHR_MATERIALS_CLEARCOAT;
507
+ }
508
+ getMaterialType(A) {
509
+ const s = this.parser.json.materials[A];
510
+ return !s.extensions || !s.extensions[this.name] ? null : AA;
511
+ }
512
+ extendMaterialParams(A, e) {
513
+ const s = this.parser, t = s.json.materials[A];
514
+ if (!t.extensions || !t.extensions[this.name])
515
+ return Promise.resolve();
516
+ const i = [], n = t.extensions[this.name];
517
+ if (n.clearcoatFactor !== void 0 && (e.clearcoat = n.clearcoatFactor), n.clearcoatTexture !== void 0 && i.push(s.assignTexture(e, "clearcoatMap", n.clearcoatTexture)), n.clearcoatRoughnessFactor !== void 0 && (e.clearcoatRoughness = n.clearcoatRoughnessFactor), n.clearcoatRoughnessTexture !== void 0 && i.push(s.assignTexture(e, "clearcoatRoughnessMap", n.clearcoatRoughnessTexture)), n.clearcoatNormalTexture !== void 0 && (i.push(s.assignTexture(e, "clearcoatNormalMap", n.clearcoatNormalTexture)), n.clearcoatNormalTexture.scale !== void 0)) {
518
+ const o = n.clearcoatNormalTexture.scale;
519
+ e.clearcoatNormalScale = new Ct(o, o);
520
+ }
521
+ return Promise.all(i);
522
+ }
523
+ }
524
+ class yi {
525
+ constructor(A) {
526
+ this.parser = A, this.name = R.KHR_MATERIALS_IRIDESCENCE;
527
+ }
528
+ getMaterialType(A) {
529
+ const s = this.parser.json.materials[A];
530
+ return !s.extensions || !s.extensions[this.name] ? null : AA;
531
+ }
532
+ extendMaterialParams(A, e) {
533
+ const s = this.parser, t = s.json.materials[A];
534
+ if (!t.extensions || !t.extensions[this.name])
535
+ return Promise.resolve();
536
+ const i = [], n = t.extensions[this.name];
537
+ return n.iridescenceFactor !== void 0 && (e.iridescence = n.iridescenceFactor), n.iridescenceTexture !== void 0 && i.push(s.assignTexture(e, "iridescenceMap", n.iridescenceTexture)), n.iridescenceIor !== void 0 && (e.iridescenceIOR = n.iridescenceIor), e.iridescenceThicknessRange === void 0 && (e.iridescenceThicknessRange = [100, 400]), n.iridescenceThicknessMinimum !== void 0 && (e.iridescenceThicknessRange[0] = n.iridescenceThicknessMinimum), n.iridescenceThicknessMaximum !== void 0 && (e.iridescenceThicknessRange[1] = n.iridescenceThicknessMaximum), n.iridescenceThicknessTexture !== void 0 && i.push(s.assignTexture(e, "iridescenceThicknessMap", n.iridescenceThicknessTexture)), Promise.all(i);
538
+ }
539
+ }
540
+ class Ji {
541
+ constructor(A) {
542
+ this.parser = A, this.name = R.KHR_MATERIALS_SHEEN;
543
+ }
544
+ getMaterialType(A) {
545
+ const s = this.parser.json.materials[A];
546
+ return !s.extensions || !s.extensions[this.name] ? null : AA;
547
+ }
548
+ extendMaterialParams(A, e) {
549
+ const s = this.parser, t = s.json.materials[A];
550
+ if (!t.extensions || !t.extensions[this.name])
551
+ return Promise.resolve();
552
+ const i = [];
553
+ e.sheenColor = new EA(0, 0, 0), e.sheenRoughness = 0, e.sheen = 1;
554
+ const n = t.extensions[this.name];
555
+ if (n.sheenColorFactor !== void 0) {
556
+ const o = n.sheenColorFactor;
557
+ e.sheenColor.setRGB(o[0], o[1], o[2], O);
558
+ }
559
+ return n.sheenRoughnessFactor !== void 0 && (e.sheenRoughness = n.sheenRoughnessFactor), n.sheenColorTexture !== void 0 && i.push(s.assignTexture(e, "sheenColorMap", n.sheenColorTexture, $)), n.sheenRoughnessTexture !== void 0 && i.push(s.assignTexture(e, "sheenRoughnessMap", n.sheenRoughnessTexture)), Promise.all(i);
560
+ }
561
+ }
562
+ class Hi {
563
+ constructor(A) {
564
+ this.parser = A, this.name = R.KHR_MATERIALS_TRANSMISSION;
565
+ }
566
+ getMaterialType(A) {
567
+ const s = this.parser.json.materials[A];
568
+ return !s.extensions || !s.extensions[this.name] ? null : AA;
569
+ }
570
+ extendMaterialParams(A, e) {
571
+ const s = this.parser, t = s.json.materials[A];
572
+ if (!t.extensions || !t.extensions[this.name])
573
+ return Promise.resolve();
574
+ const i = [], n = t.extensions[this.name];
575
+ return n.transmissionFactor !== void 0 && (e.transmission = n.transmissionFactor), n.transmissionTexture !== void 0 && i.push(s.assignTexture(e, "transmissionMap", n.transmissionTexture)), Promise.all(i);
576
+ }
577
+ }
578
+ class Ti {
579
+ constructor(A) {
580
+ this.parser = A, this.name = R.KHR_MATERIALS_VOLUME;
581
+ }
582
+ getMaterialType(A) {
583
+ const s = this.parser.json.materials[A];
584
+ return !s.extensions || !s.extensions[this.name] ? null : AA;
585
+ }
586
+ extendMaterialParams(A, e) {
587
+ const s = this.parser, t = s.json.materials[A];
588
+ if (!t.extensions || !t.extensions[this.name])
589
+ return Promise.resolve();
590
+ const i = [], n = t.extensions[this.name];
591
+ e.thickness = n.thicknessFactor !== void 0 ? n.thicknessFactor : 0, n.thicknessTexture !== void 0 && i.push(s.assignTexture(e, "thicknessMap", n.thicknessTexture)), e.attenuationDistance = n.attenuationDistance || 1 / 0;
592
+ const o = n.attenuationColor || [1, 1, 1];
593
+ return e.attenuationColor = new EA().setRGB(o[0], o[1], o[2], O), Promise.all(i);
594
+ }
595
+ }
596
+ class Ui {
597
+ constructor(A) {
598
+ this.parser = A, this.name = R.KHR_MATERIALS_IOR;
599
+ }
600
+ getMaterialType(A) {
601
+ const s = this.parser.json.materials[A];
602
+ return !s.extensions || !s.extensions[this.name] ? null : AA;
603
+ }
604
+ extendMaterialParams(A, e) {
605
+ const t = this.parser.json.materials[A];
606
+ if (!t.extensions || !t.extensions[this.name])
607
+ return Promise.resolve();
608
+ const i = t.extensions[this.name];
609
+ return e.ior = i.ior !== void 0 ? i.ior : 1.5, Promise.resolve();
610
+ }
611
+ }
612
+ class Ni {
613
+ constructor(A) {
614
+ this.parser = A, this.name = R.KHR_MATERIALS_SPECULAR;
615
+ }
616
+ getMaterialType(A) {
617
+ const s = this.parser.json.materials[A];
618
+ return !s.extensions || !s.extensions[this.name] ? null : AA;
619
+ }
620
+ extendMaterialParams(A, e) {
621
+ const s = this.parser, t = s.json.materials[A];
622
+ if (!t.extensions || !t.extensions[this.name])
623
+ return Promise.resolve();
624
+ const i = [], n = t.extensions[this.name];
625
+ e.specularIntensity = n.specularFactor !== void 0 ? n.specularFactor : 1, n.specularTexture !== void 0 && i.push(s.assignTexture(e, "specularIntensityMap", n.specularTexture));
626
+ const o = n.specularColorFactor || [1, 1, 1];
627
+ return e.specularColor = new EA().setRGB(o[0], o[1], o[2], O), n.specularColorTexture !== void 0 && i.push(s.assignTexture(e, "specularColorMap", n.specularColorTexture, $)), Promise.all(i);
628
+ }
629
+ }
630
+ class xi {
631
+ constructor(A) {
632
+ this.parser = A, this.name = R.EXT_MATERIALS_BUMP;
633
+ }
634
+ getMaterialType(A) {
635
+ const s = this.parser.json.materials[A];
636
+ return !s.extensions || !s.extensions[this.name] ? null : AA;
637
+ }
638
+ extendMaterialParams(A, e) {
639
+ const s = this.parser, t = s.json.materials[A];
640
+ if (!t.extensions || !t.extensions[this.name])
641
+ return Promise.resolve();
642
+ const i = [], n = t.extensions[this.name];
643
+ return e.bumpScale = n.bumpFactor !== void 0 ? n.bumpFactor : 1, n.bumpTexture !== void 0 && i.push(s.assignTexture(e, "bumpMap", n.bumpTexture)), Promise.all(i);
644
+ }
645
+ }
646
+ class ki {
647
+ constructor(A) {
648
+ this.parser = A, this.name = R.KHR_MATERIALS_ANISOTROPY;
649
+ }
650
+ getMaterialType(A) {
651
+ const s = this.parser.json.materials[A];
652
+ return !s.extensions || !s.extensions[this.name] ? null : AA;
653
+ }
654
+ extendMaterialParams(A, e) {
655
+ const s = this.parser, t = s.json.materials[A];
656
+ if (!t.extensions || !t.extensions[this.name])
657
+ return Promise.resolve();
658
+ const i = [], n = t.extensions[this.name];
659
+ return n.anisotropyStrength !== void 0 && (e.anisotropy = n.anisotropyStrength), n.anisotropyRotation !== void 0 && (e.anisotropyRotation = n.anisotropyRotation), n.anisotropyTexture !== void 0 && i.push(s.assignTexture(e, "anisotropyMap", n.anisotropyTexture)), Promise.all(i);
660
+ }
661
+ }
662
+ class Ki {
663
+ constructor(A) {
664
+ this.parser = A, this.name = R.KHR_TEXTURE_BASISU;
665
+ }
666
+ loadTexture(A) {
667
+ const e = this.parser, s = e.json, t = s.textures[A];
668
+ if (!t.extensions || !t.extensions[this.name])
669
+ return null;
670
+ const i = t.extensions[this.name], n = e.options.ktx2Loader;
671
+ if (!n) {
672
+ if (s.extensionsRequired && s.extensionsRequired.indexOf(this.name) >= 0)
673
+ throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");
674
+ return null;
675
+ }
676
+ return e.loadTextureImage(A, i.source, n);
677
+ }
678
+ }
679
+ class bi {
680
+ constructor(A) {
681
+ this.parser = A, this.name = R.EXT_TEXTURE_WEBP, this.isSupported = null;
682
+ }
683
+ loadTexture(A) {
684
+ const e = this.name, s = this.parser, t = s.json, i = t.textures[A];
685
+ if (!i.extensions || !i.extensions[e])
686
+ return null;
687
+ const n = i.extensions[e], o = t.images[n.source];
688
+ let B = s.textureLoader;
689
+ if (o.uri) {
690
+ const C = s.options.manager.getHandler(o.uri);
691
+ C !== null && (B = C);
692
+ }
693
+ return this.detectSupport().then(function(C) {
694
+ if (C)
695
+ return s.loadTextureImage(A, n.source, B);
696
+ if (t.extensionsRequired && t.extensionsRequired.indexOf(e) >= 0)
697
+ throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");
698
+ return s.loadTexture(A);
699
+ });
700
+ }
701
+ detectSupport() {
702
+ return this.isSupported || (this.isSupported = new Promise(function(A) {
703
+ const e = new Image();
704
+ e.src = "data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA", e.onload = e.onerror = function() {
705
+ A(e.height === 1);
706
+ };
707
+ })), this.isSupported;
708
+ }
709
+ }
710
+ class Oi {
711
+ constructor(A) {
712
+ this.parser = A, this.name = R.EXT_TEXTURE_AVIF, this.isSupported = null;
713
+ }
714
+ loadTexture(A) {
715
+ const e = this.name, s = this.parser, t = s.json, i = t.textures[A];
716
+ if (!i.extensions || !i.extensions[e])
717
+ return null;
718
+ const n = i.extensions[e], o = t.images[n.source];
719
+ let B = s.textureLoader;
720
+ if (o.uri) {
721
+ const C = s.options.manager.getHandler(o.uri);
722
+ C !== null && (B = C);
723
+ }
724
+ return this.detectSupport().then(function(C) {
725
+ if (C)
726
+ return s.loadTextureImage(A, n.source, B);
727
+ if (t.extensionsRequired && t.extensionsRequired.indexOf(e) >= 0)
728
+ throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");
729
+ return s.loadTexture(A);
730
+ });
731
+ }
732
+ detectSupport() {
733
+ return this.isSupported || (this.isSupported = new Promise(function(A) {
734
+ const e = new Image();
735
+ e.src = "data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=", e.onload = e.onerror = function() {
736
+ A(e.height === 1);
737
+ };
738
+ })), this.isSupported;
739
+ }
740
+ }
741
+ class _i {
742
+ constructor(A) {
743
+ this.name = R.EXT_MESHOPT_COMPRESSION, this.parser = A;
744
+ }
745
+ loadBufferView(A) {
746
+ const e = this.parser.json, s = e.bufferViews[A];
747
+ if (s.extensions && s.extensions[this.name]) {
748
+ const t = s.extensions[this.name], i = this.parser.getDependency("buffer", t.buffer), n = this.parser.options.meshoptDecoder;
749
+ if (!n || !n.supported) {
750
+ if (e.extensionsRequired && e.extensionsRequired.indexOf(this.name) >= 0)
751
+ throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");
752
+ return null;
753
+ }
754
+ return i.then(function(o) {
755
+ const B = t.byteOffset || 0, C = t.byteLength || 0, I = t.count, r = t.byteStride, c = new Uint8Array(o, B, C);
756
+ return n.decodeGltfBufferAsync ? n.decodeGltfBufferAsync(I, r, c, t.mode, t.filter).then(function(Q) {
757
+ return Q.buffer;
758
+ }) : n.ready.then(function() {
759
+ const Q = new ArrayBuffer(I * r);
760
+ return n.decodeGltfBuffer(new Uint8Array(Q), I, r, c, t.mode, t.filter), Q;
761
+ });
762
+ });
763
+ } else
764
+ return null;
765
+ }
766
+ }
767
+ class Pi {
768
+ constructor(A) {
769
+ this.name = R.EXT_MESH_GPU_INSTANCING, this.parser = A;
770
+ }
771
+ createNodeMesh(A) {
772
+ const e = this.parser.json, s = e.nodes[A];
773
+ if (!s.extensions || !s.extensions[this.name] || s.mesh === void 0)
774
+ return null;
775
+ const t = e.meshes[s.mesh];
776
+ for (const C of t.primitives)
777
+ if (C.mode !== x.TRIANGLES && C.mode !== x.TRIANGLE_STRIP && C.mode !== x.TRIANGLE_FAN && C.mode !== void 0)
778
+ return null;
779
+ const n = s.extensions[this.name].attributes, o = [], B = {};
780
+ for (const C in n)
781
+ o.push(this.parser.getDependency("accessor", n[C]).then((I) => (B[C] = I, B[C])));
782
+ return o.length < 1 ? null : (o.push(this.parser.createNodeMesh(A)), Promise.all(o).then((C) => {
783
+ const I = C.pop(), r = I.isGroup ? I.children : [I], c = C[0].count, Q = [];
784
+ for (const l of r) {
785
+ const h = new bA(), E = new K(), d = new at(), f = new K(1, 1, 1), D = new ws(l.geometry, l.material, c);
786
+ for (let F = 0; F < c; F++)
787
+ B.TRANSLATION && E.fromBufferAttribute(B.TRANSLATION, F), B.ROTATION && d.fromBufferAttribute(B.ROTATION, F), B.SCALE && f.fromBufferAttribute(B.SCALE, F), D.setMatrixAt(F, h.compose(E, d, f));
788
+ for (const F in B)
789
+ if (F === "_COLOR_0") {
790
+ const p = B[F];
791
+ D.instanceColor = new Ss(p.array, p.itemSize, p.normalized);
792
+ } else
793
+ F !== "TRANSLATION" && F !== "ROTATION" && F !== "SCALE" && l.geometry.setAttribute(F, B[F]);
794
+ It.prototype.copy.call(D, l), this.parser.assignFinalMaterial(D), Q.push(D);
795
+ }
796
+ return I.isGroup ? (I.clear(), I.add(...Q), I) : Q[0];
797
+ }));
798
+ }
799
+ }
800
+ const Vt = "glTF", PA = 12, Mt = { JSON: 1313821514, BIN: 5130562 };
801
+ class Yi {
802
+ constructor(A) {
803
+ this.name = R.KHR_BINARY_GLTF, this.content = null, this.body = null;
804
+ const e = new DataView(A, 0, PA), s = new TextDecoder();
805
+ if (this.header = {
806
+ magic: s.decode(new Uint8Array(A.slice(0, 4))),
807
+ version: e.getUint32(4, !0),
808
+ length: e.getUint32(8, !0)
809
+ }, this.header.magic !== Vt)
810
+ throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");
811
+ if (this.header.version < 2)
812
+ throw new Error("THREE.GLTFLoader: Legacy binary file detected.");
813
+ const t = this.header.length - PA, i = new DataView(A, PA);
814
+ let n = 0;
815
+ for (; n < t; ) {
816
+ const o = i.getUint32(n, !0);
817
+ n += 4;
818
+ const B = i.getUint32(n, !0);
819
+ if (n += 4, B === Mt.JSON) {
820
+ const C = new Uint8Array(A, PA + n, o);
821
+ this.content = s.decode(C);
822
+ } else if (B === Mt.BIN) {
823
+ const C = PA + n;
824
+ this.body = A.slice(C, C + o);
825
+ }
826
+ n += o;
827
+ }
828
+ if (this.content === null)
829
+ throw new Error("THREE.GLTFLoader: JSON content not found.");
830
+ }
831
+ }
832
+ class qi {
833
+ constructor(A, e) {
834
+ if (!e)
835
+ throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");
836
+ this.name = R.KHR_DRACO_MESH_COMPRESSION, this.json = A, this.dracoLoader = e, this.dracoLoader.preload();
837
+ }
838
+ decodePrimitive(A, e) {
839
+ const s = this.json, t = this.dracoLoader, i = A.extensions[this.name].bufferView, n = A.extensions[this.name].attributes, o = {}, B = {}, C = {};
840
+ for (const I in n) {
841
+ const r = st[I] || I.toLowerCase();
842
+ o[r] = n[I];
843
+ }
844
+ for (const I in A.attributes) {
845
+ const r = st[I] || I.toLowerCase();
846
+ if (n[I] !== void 0) {
847
+ const c = s.accessors[A.attributes[I]], Q = pA[c.componentType];
848
+ C[r] = Q.name, B[r] = c.normalized === !0;
849
+ }
850
+ }
851
+ return e.getDependency("bufferView", i).then(function(I) {
852
+ return new Promise(function(r, c) {
853
+ t.decodeDracoFile(I, function(Q) {
854
+ for (const l in Q.attributes) {
855
+ const h = Q.attributes[l], E = B[l];
856
+ E !== void 0 && (h.normalized = E);
857
+ }
858
+ r(Q);
859
+ }, o, C, O, c);
860
+ });
861
+ });
862
+ }
863
+ }
864
+ class Xi {
865
+ constructor() {
866
+ this.name = R.KHR_TEXTURE_TRANSFORM;
867
+ }
868
+ extendTexture(A, e) {
869
+ return (e.texCoord === void 0 || e.texCoord === A.channel) && e.offset === void 0 && e.rotation === void 0 && e.scale === void 0 || (A = A.clone(), e.texCoord !== void 0 && (A.channel = e.texCoord), e.offset !== void 0 && A.offset.fromArray(e.offset), e.rotation !== void 0 && (A.rotation = e.rotation), e.scale !== void 0 && A.repeat.fromArray(e.scale), A.needsUpdate = !0), A;
870
+ }
871
+ }
872
+ class vi {
873
+ constructor() {
874
+ this.name = R.KHR_MESH_QUANTIZATION;
875
+ }
876
+ }
877
+ class jt extends ti {
878
+ constructor(A, e, s, t) {
879
+ super(A, e, s, t);
880
+ }
881
+ copySampleValue_(A) {
882
+ const e = this.resultBuffer, s = this.sampleValues, t = this.valueSize, i = A * t * 3 + t;
883
+ for (let n = 0; n !== t; n++)
884
+ e[n] = s[i + n];
885
+ return e;
886
+ }
887
+ interpolate_(A, e, s, t) {
888
+ const i = this.resultBuffer, n = this.sampleValues, o = this.valueSize, B = o * 2, C = o * 3, I = t - e, r = (s - e) / I, c = r * r, Q = c * r, l = A * C, h = l - C, E = -2 * Q + 3 * c, d = Q - c, f = 1 - E, D = d - c + r;
889
+ for (let F = 0; F !== o; F++) {
890
+ const p = n[h + F + o], m = n[h + F + B] * I, M = n[l + F + o], _ = n[l + F] * I;
891
+ i[F] = f * p + D * m + E * M + d * _;
892
+ }
893
+ return i;
894
+ }
895
+ }
896
+ const Wi = new at();
897
+ class Vi extends jt {
898
+ interpolate_(A, e, s, t) {
899
+ const i = super.interpolate_(A, e, s, t);
900
+ return Wi.fromArray(i).normalize().toArray(i), i;
901
+ }
902
+ }
903
+ const x = {
904
+ FLOAT: 5126,
905
+ //FLOAT_MAT2: 35674,
906
+ FLOAT_MAT3: 35675,
907
+ FLOAT_MAT4: 35676,
908
+ FLOAT_VEC2: 35664,
909
+ FLOAT_VEC3: 35665,
910
+ FLOAT_VEC4: 35666,
911
+ LINEAR: 9729,
912
+ REPEAT: 10497,
913
+ SAMPLER_2D: 35678,
914
+ POINTS: 0,
915
+ LINES: 1,
916
+ LINE_LOOP: 2,
917
+ LINE_STRIP: 3,
918
+ TRIANGLES: 4,
919
+ TRIANGLE_STRIP: 5,
920
+ TRIANGLE_FAN: 6,
921
+ UNSIGNED_BYTE: 5121,
922
+ UNSIGNED_SHORT: 5123
923
+ }, pA = {
924
+ 5120: Int8Array,
925
+ 5121: Uint8Array,
926
+ 5122: Int16Array,
927
+ 5123: Uint16Array,
928
+ 5125: Uint32Array,
929
+ 5126: Float32Array
930
+ }, wt = {
931
+ 9728: Xs,
932
+ 9729: He,
933
+ 9984: vs,
934
+ 9985: Ws,
935
+ 9986: Vs,
936
+ 9987: gt
937
+ }, St = {
938
+ 33071: js,
939
+ 33648: Zs,
940
+ 10497: et
941
+ }, Oe = {
942
+ SCALAR: 1,
943
+ VEC2: 2,
944
+ VEC3: 3,
945
+ VEC4: 4,
946
+ MAT2: 4,
947
+ MAT3: 9,
948
+ MAT4: 16
949
+ }, st = {
950
+ POSITION: "position",
951
+ NORMAL: "normal",
952
+ TANGENT: "tangent",
953
+ TEXCOORD_0: "uv",
954
+ TEXCOORD_1: "uv1",
955
+ TEXCOORD_2: "uv2",
956
+ TEXCOORD_3: "uv3",
957
+ COLOR_0: "color",
958
+ WEIGHTS_0: "skinWeight",
959
+ JOINTS_0: "skinIndex"
960
+ }, sA = {
961
+ scale: "scale",
962
+ translation: "position",
963
+ rotation: "quaternion",
964
+ weights: "morphTargetInfluences"
965
+ }, ji = {
966
+ CUBICSPLINE: void 0,
967
+ // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each
968
+ // keyframe track will be initialized with a default interpolation type, then modified.
969
+ LINEAR: qt,
970
+ STEP: zs
971
+ }, _e = {
972
+ OPAQUE: "OPAQUE",
973
+ MASK: "MASK",
974
+ BLEND: "BLEND"
975
+ };
976
+ function Zi(a) {
977
+ return a.DefaultMaterial === void 0 && (a.DefaultMaterial = new Pt({
978
+ color: 16777215,
979
+ emissive: 0,
980
+ metalness: 1,
981
+ roughness: 1,
982
+ transparent: !1,
983
+ depthTest: !0,
984
+ side: $s
985
+ })), a.DefaultMaterial;
986
+ }
987
+ function hA(a, A, e) {
988
+ for (const s in e.extensions)
989
+ a[s] === void 0 && (A.userData.gltfExtensions = A.userData.gltfExtensions || {}, A.userData.gltfExtensions[s] = e.extensions[s]);
990
+ }
991
+ function iA(a, A) {
992
+ A.extras !== void 0 && (typeof A.extras == "object" ? Object.assign(a.userData, A.extras) : console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, " + A.extras));
993
+ }
994
+ function zi(a, A, e) {
995
+ let s = !1, t = !1, i = !1;
996
+ for (let C = 0, I = A.length; C < I; C++) {
997
+ const r = A[C];
998
+ if (r.POSITION !== void 0 && (s = !0), r.NORMAL !== void 0 && (t = !0), r.COLOR_0 !== void 0 && (i = !0), s && t && i)
999
+ break;
1000
+ }
1001
+ if (!s && !t && !i)
1002
+ return Promise.resolve(a);
1003
+ const n = [], o = [], B = [];
1004
+ for (let C = 0, I = A.length; C < I; C++) {
1005
+ const r = A[C];
1006
+ if (s) {
1007
+ const c = r.POSITION !== void 0 ? e.getDependency("accessor", r.POSITION) : a.attributes.position;
1008
+ n.push(c);
1009
+ }
1010
+ if (t) {
1011
+ const c = r.NORMAL !== void 0 ? e.getDependency("accessor", r.NORMAL) : a.attributes.normal;
1012
+ o.push(c);
1013
+ }
1014
+ if (i) {
1015
+ const c = r.COLOR_0 !== void 0 ? e.getDependency("accessor", r.COLOR_0) : a.attributes.color;
1016
+ B.push(c);
1017
+ }
1018
+ }
1019
+ return Promise.all([
1020
+ Promise.all(n),
1021
+ Promise.all(o),
1022
+ Promise.all(B)
1023
+ ]).then(function(C) {
1024
+ const I = C[0], r = C[1], c = C[2];
1025
+ return s && (a.morphAttributes.position = I), t && (a.morphAttributes.normal = r), i && (a.morphAttributes.color = c), a.morphTargetsRelative = !0, a;
1026
+ });
1027
+ }
1028
+ function $i(a, A) {
1029
+ if (a.updateMorphTargets(), A.weights !== void 0)
1030
+ for (let e = 0, s = A.weights.length; e < s; e++)
1031
+ a.morphTargetInfluences[e] = A.weights[e];
1032
+ if (A.extras && Array.isArray(A.extras.targetNames)) {
1033
+ const e = A.extras.targetNames;
1034
+ if (a.morphTargetInfluences.length === e.length) {
1035
+ a.morphTargetDictionary = {};
1036
+ for (let s = 0, t = e.length; s < t; s++)
1037
+ a.morphTargetDictionary[e[s]] = s;
1038
+ } else
1039
+ console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.");
1040
+ }
1041
+ }
1042
+ function An(a) {
1043
+ let A;
1044
+ const e = a.extensions && a.extensions[R.KHR_DRACO_MESH_COMPRESSION];
1045
+ if (e ? A = "draco:" + e.bufferView + ":" + e.indices + ":" + Pe(e.attributes) : A = a.indices + ":" + Pe(a.attributes) + ":" + a.mode, a.targets !== void 0)
1046
+ for (let s = 0, t = a.targets.length; s < t; s++)
1047
+ A += ":" + Pe(a.targets[s]);
1048
+ return A;
1049
+ }
1050
+ function Pe(a) {
1051
+ let A = "";
1052
+ const e = Object.keys(a).sort();
1053
+ for (let s = 0, t = e.length; s < t; s++)
1054
+ A += e[s] + ":" + a[e[s]] + ";";
1055
+ return A;
1056
+ }
1057
+ function it(a) {
1058
+ switch (a) {
1059
+ case Int8Array:
1060
+ return 1 / 127;
1061
+ case Uint8Array:
1062
+ return 1 / 255;
1063
+ case Int16Array:
1064
+ return 1 / 32767;
1065
+ case Uint16Array:
1066
+ return 1 / 65535;
1067
+ default:
1068
+ throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.");
1069
+ }
1070
+ }
1071
+ function en(a) {
1072
+ return a.search(/\.jpe?g($|\?)/i) > 0 || a.search(/^data\:image\/jpeg/) === 0 ? "image/jpeg" : a.search(/\.webp($|\?)/i) > 0 || a.search(/^data\:image\/webp/) === 0 ? "image/webp" : "image/png";
1073
+ }
1074
+ const tn = new bA();
1075
+ class sn {
1076
+ constructor(A = {}, e = {}) {
1077
+ this.json = A, this.extensions = {}, this.plugins = {}, this.options = e, this.cache = new mi(), this.associations = /* @__PURE__ */ new Map(), this.primitiveCache = {}, this.nodeCache = {}, this.meshCache = { refs: {}, uses: {} }, this.cameraCache = { refs: {}, uses: {} }, this.lightCache = { refs: {}, uses: {} }, this.sourceCache = {}, this.textureCache = {}, this.nodeNamesUsed = {};
1078
+ let s = !1, t = !1, i = -1;
1079
+ typeof navigator != "undefined" && (s = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) === !0, t = navigator.userAgent.indexOf("Firefox") > -1, i = t ? navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1] : -1), typeof createImageBitmap == "undefined" || s || t && i < 98 ? this.textureLoader = new _t(this.options.manager) : this.textureLoader = new Ls(this.options.manager), this.textureLoader.setCrossOrigin(this.options.crossOrigin), this.textureLoader.setRequestHeader(this.options.requestHeader), this.fileLoader = new FA(this.options.manager), this.fileLoader.setResponseType("arraybuffer"), this.options.crossOrigin === "use-credentials" && this.fileLoader.setWithCredentials(!0);
1080
+ }
1081
+ setExtensions(A) {
1082
+ this.extensions = A;
1083
+ }
1084
+ setPlugins(A) {
1085
+ this.plugins = A;
1086
+ }
1087
+ parse(A, e) {
1088
+ const s = this, t = this.json, i = this.extensions;
1089
+ this.cache.removeAll(), this.nodeCache = {}, this._invokeAll(function(n) {
1090
+ return n._markDefs && n._markDefs();
1091
+ }), Promise.all(this._invokeAll(function(n) {
1092
+ return n.beforeRoot && n.beforeRoot();
1093
+ })).then(function() {
1094
+ return Promise.all([
1095
+ s.getDependencies("scene"),
1096
+ s.getDependencies("animation"),
1097
+ s.getDependencies("camera")
1098
+ ]);
1099
+ }).then(function(n) {
1100
+ const o = {
1101
+ scene: n[0][t.scene || 0],
1102
+ scenes: n[0],
1103
+ animations: n[1],
1104
+ cameras: n[2],
1105
+ asset: t.asset,
1106
+ parser: s,
1107
+ userData: {}
1108
+ };
1109
+ return hA(i, o, t), iA(o, t), Promise.all(s._invokeAll(function(B) {
1110
+ return B.afterRoot && B.afterRoot(o);
1111
+ })).then(function() {
1112
+ A(o);
1113
+ });
1114
+ }).catch(e);
1115
+ }
1116
+ /**
1117
+ * Marks the special nodes/meshes in json for efficient parse.
1118
+ */
1119
+ _markDefs() {
1120
+ const A = this.json.nodes || [], e = this.json.skins || [], s = this.json.meshes || [];
1121
+ for (let t = 0, i = e.length; t < i; t++) {
1122
+ const n = e[t].joints;
1123
+ for (let o = 0, B = n.length; o < B; o++)
1124
+ A[n[o]].isBone = !0;
1125
+ }
1126
+ for (let t = 0, i = A.length; t < i; t++) {
1127
+ const n = A[t];
1128
+ n.mesh !== void 0 && (this._addNodeRef(this.meshCache, n.mesh), n.skin !== void 0 && (s[n.mesh].isSkinnedMesh = !0)), n.camera !== void 0 && this._addNodeRef(this.cameraCache, n.camera);
1129
+ }
1130
+ }
1131
+ /**
1132
+ * Counts references to shared node / Object3D resources. These resources
1133
+ * can be reused, or "instantiated", at multiple nodes in the scene
1134
+ * hierarchy. Mesh, Camera, and Light instances are instantiated and must
1135
+ * be marked. Non-scenegraph resources (like Materials, Geometries, and
1136
+ * Textures) can be reused directly and are not marked here.
1137
+ *
1138
+ * Example: CesiumMilkTruck sample model reuses "Wheel" meshes.
1139
+ */
1140
+ _addNodeRef(A, e) {
1141
+ e !== void 0 && (A.refs[e] === void 0 && (A.refs[e] = A.uses[e] = 0), A.refs[e]++);
1142
+ }
1143
+ /** Returns a reference to a shared resource, cloning it if necessary. */
1144
+ _getNodeRef(A, e, s) {
1145
+ if (A.refs[e] <= 1)
1146
+ return s;
1147
+ const t = s.clone(), i = (n, o) => {
1148
+ const B = this.associations.get(n);
1149
+ B != null && this.associations.set(o, B);
1150
+ for (const [C, I] of n.children.entries())
1151
+ i(I, o.children[C]);
1152
+ };
1153
+ return i(s, t), t.name += "_instance_" + A.uses[e]++, t;
1154
+ }
1155
+ _invokeOne(A) {
1156
+ const e = Object.values(this.plugins);
1157
+ e.push(this);
1158
+ for (let s = 0; s < e.length; s++) {
1159
+ const t = A(e[s]);
1160
+ if (t)
1161
+ return t;
1162
+ }
1163
+ return null;
1164
+ }
1165
+ _invokeAll(A) {
1166
+ const e = Object.values(this.plugins);
1167
+ e.unshift(this);
1168
+ const s = [];
1169
+ for (let t = 0; t < e.length; t++) {
1170
+ const i = A(e[t]);
1171
+ i && s.push(i);
1172
+ }
1173
+ return s;
1174
+ }
1175
+ /**
1176
+ * Requests the specified dependency asynchronously, with caching.
1177
+ * @param {string} type
1178
+ * @param {number} index
1179
+ * @return {Promise<Object3D|Material|THREE.Texture|AnimationClip|ArrayBuffer|Object>}
1180
+ */
1181
+ getDependency(A, e) {
1182
+ const s = A + ":" + e;
1183
+ let t = this.cache.get(s);
1184
+ if (!t) {
1185
+ switch (A) {
1186
+ case "scene":
1187
+ t = this.loadScene(e);
1188
+ break;
1189
+ case "node":
1190
+ t = this._invokeOne(function(i) {
1191
+ return i.loadNode && i.loadNode(e);
1192
+ });
1193
+ break;
1194
+ case "mesh":
1195
+ t = this._invokeOne(function(i) {
1196
+ return i.loadMesh && i.loadMesh(e);
1197
+ });
1198
+ break;
1199
+ case "accessor":
1200
+ t = this.loadAccessor(e);
1201
+ break;
1202
+ case "bufferView":
1203
+ t = this._invokeOne(function(i) {
1204
+ return i.loadBufferView && i.loadBufferView(e);
1205
+ });
1206
+ break;
1207
+ case "buffer":
1208
+ t = this.loadBuffer(e);
1209
+ break;
1210
+ case "material":
1211
+ t = this._invokeOne(function(i) {
1212
+ return i.loadMaterial && i.loadMaterial(e);
1213
+ });
1214
+ break;
1215
+ case "texture":
1216
+ t = this._invokeOne(function(i) {
1217
+ return i.loadTexture && i.loadTexture(e);
1218
+ });
1219
+ break;
1220
+ case "skin":
1221
+ t = this.loadSkin(e);
1222
+ break;
1223
+ case "animation":
1224
+ t = this._invokeOne(function(i) {
1225
+ return i.loadAnimation && i.loadAnimation(e);
1226
+ });
1227
+ break;
1228
+ case "camera":
1229
+ t = this.loadCamera(e);
1230
+ break;
1231
+ default:
1232
+ if (t = this._invokeOne(function(i) {
1233
+ return i != this && i.getDependency && i.getDependency(A, e);
1234
+ }), !t)
1235
+ throw new Error("Unknown type: " + A);
1236
+ break;
1237
+ }
1238
+ this.cache.add(s, t);
1239
+ }
1240
+ return t;
1241
+ }
1242
+ /**
1243
+ * Requests all dependencies of the specified type asynchronously, with caching.
1244
+ * @param {string} type
1245
+ * @return {Promise<Array<Object>>}
1246
+ */
1247
+ getDependencies(A) {
1248
+ let e = this.cache.get(A);
1249
+ if (!e) {
1250
+ const s = this, t = this.json[A + (A === "mesh" ? "es" : "s")] || [];
1251
+ e = Promise.all(t.map(function(i, n) {
1252
+ return s.getDependency(A, n);
1253
+ })), this.cache.add(A, e);
1254
+ }
1255
+ return e;
1256
+ }
1257
+ /**
1258
+ * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views
1259
+ * @param {number} bufferIndex
1260
+ * @return {Promise<ArrayBuffer>}
1261
+ */
1262
+ loadBuffer(A) {
1263
+ const e = this.json.buffers[A], s = this.fileLoader;
1264
+ if (e.type && e.type !== "arraybuffer")
1265
+ throw new Error("THREE.GLTFLoader: " + e.type + " buffer type is not supported.");
1266
+ if (e.uri === void 0 && A === 0)
1267
+ return Promise.resolve(this.extensions[R.KHR_BINARY_GLTF].body);
1268
+ const t = this.options;
1269
+ return new Promise(function(i, n) {
1270
+ s.load(WA.resolveURL(e.uri, t.path), i, void 0, function() {
1271
+ n(new Error('THREE.GLTFLoader: Failed to load buffer "' + e.uri + '".'));
1272
+ });
1273
+ });
1274
+ }
1275
+ /**
1276
+ * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views
1277
+ * @param {number} bufferViewIndex
1278
+ * @return {Promise<ArrayBuffer>}
1279
+ */
1280
+ loadBufferView(A) {
1281
+ const e = this.json.bufferViews[A];
1282
+ return this.getDependency("buffer", e.buffer).then(function(s) {
1283
+ const t = e.byteLength || 0, i = e.byteOffset || 0;
1284
+ return s.slice(i, i + t);
1285
+ });
1286
+ }
1287
+ /**
1288
+ * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors
1289
+ * @param {number} accessorIndex
1290
+ * @return {Promise<BufferAttribute|InterleavedBufferAttribute>}
1291
+ */
1292
+ loadAccessor(A) {
1293
+ const e = this, s = this.json, t = this.json.accessors[A];
1294
+ if (t.bufferView === void 0 && t.sparse === void 0) {
1295
+ const n = Oe[t.type], o = pA[t.componentType], B = t.normalized === !0, C = new o(t.count * n);
1296
+ return Promise.resolve(new VA(C, n, B));
1297
+ }
1298
+ const i = [];
1299
+ return t.bufferView !== void 0 ? i.push(this.getDependency("bufferView", t.bufferView)) : i.push(null), t.sparse !== void 0 && (i.push(this.getDependency("bufferView", t.sparse.indices.bufferView)), i.push(this.getDependency("bufferView", t.sparse.values.bufferView))), Promise.all(i).then(function(n) {
1300
+ const o = n[0], B = Oe[t.type], C = pA[t.componentType], I = C.BYTES_PER_ELEMENT, r = I * B, c = t.byteOffset || 0, Q = t.bufferView !== void 0 ? s.bufferViews[t.bufferView].byteStride : void 0, l = t.normalized === !0;
1301
+ let h, E;
1302
+ if (Q && Q !== r) {
1303
+ const d = Math.floor(c / Q), f = "InterleavedBuffer:" + t.bufferView + ":" + t.componentType + ":" + d + ":" + t.count;
1304
+ let D = e.cache.get(f);
1305
+ D || (h = new C(o, d * Q, t.count * Q / I), D = new ys(h, Q / I), e.cache.add(f, D)), E = new Js(D, B, c % Q / I, l);
1306
+ } else
1307
+ o === null ? h = new C(t.count * B) : h = new C(o, c, t.count * B), E = new VA(h, B, l);
1308
+ if (t.sparse !== void 0) {
1309
+ const d = Oe.SCALAR, f = pA[t.sparse.indices.componentType], D = t.sparse.indices.byteOffset || 0, F = t.sparse.values.byteOffset || 0, p = new f(n[1], D, t.sparse.count * d), m = new C(n[2], F, t.sparse.count * B);
1310
+ o !== null && (E = new VA(E.array.slice(), E.itemSize, E.normalized));
1311
+ for (let M = 0, _ = p.length; M < _; M++) {
1312
+ const y = p[M];
1313
+ if (E.setX(y, m[M * B]), B >= 2 && E.setY(y, m[M * B + 1]), B >= 3 && E.setZ(y, m[M * B + 2]), B >= 4 && E.setW(y, m[M * B + 3]), B >= 5)
1314
+ throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
1315
+ }
1316
+ }
1317
+ return E;
1318
+ });
1319
+ }
1320
+ /**
1321
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures
1322
+ * @param {number} textureIndex
1323
+ * @return {Promise<THREE.Texture|null>}
1324
+ */
1325
+ loadTexture(A) {
1326
+ const e = this.json, s = this.options, i = e.textures[A].source, n = e.images[i];
1327
+ let o = this.textureLoader;
1328
+ if (n.uri) {
1329
+ const B = s.manager.getHandler(n.uri);
1330
+ B !== null && (o = B);
1331
+ }
1332
+ return this.loadTextureImage(A, i, o);
1333
+ }
1334
+ loadTextureImage(A, e, s) {
1335
+ const t = this, i = this.json, n = i.textures[A], o = i.images[e], B = (o.uri || o.bufferView) + ":" + n.sampler;
1336
+ if (this.textureCache[B])
1337
+ return this.textureCache[B];
1338
+ const C = this.loadImageSource(e, s).then(function(I) {
1339
+ I.flipY = !1, I.name = n.name || o.name || "", I.name === "" && typeof o.uri == "string" && o.uri.startsWith("data:image/") === !1 && (I.name = o.uri);
1340
+ const c = (i.samplers || {})[n.sampler] || {};
1341
+ return I.magFilter = wt[c.magFilter] || He, I.minFilter = wt[c.minFilter] || gt, I.wrapS = St[c.wrapS] || et, I.wrapT = St[c.wrapT] || et, t.associations.set(I, { textures: A }), I;
1342
+ }).catch(function() {
1343
+ return null;
1344
+ });
1345
+ return this.textureCache[B] = C, C;
1346
+ }
1347
+ loadImageSource(A, e) {
1348
+ const s = this, t = this.json, i = this.options;
1349
+ if (this.sourceCache[A] !== void 0)
1350
+ return this.sourceCache[A].then((r) => r.clone());
1351
+ const n = t.images[A], o = self.URL || self.webkitURL;
1352
+ let B = n.uri || "", C = !1;
1353
+ if (n.bufferView !== void 0)
1354
+ B = s.getDependency("bufferView", n.bufferView).then(function(r) {
1355
+ C = !0;
1356
+ const c = new Blob([r], { type: n.mimeType });
1357
+ return B = o.createObjectURL(c), B;
1358
+ });
1359
+ else if (n.uri === void 0)
1360
+ throw new Error("THREE.GLTFLoader: Image " + A + " is missing URI and bufferView");
1361
+ const I = Promise.resolve(B).then(function(r) {
1362
+ return new Promise(function(c, Q) {
1363
+ let l = c;
1364
+ e.isImageBitmapLoader === !0 && (l = function(h) {
1365
+ const E = new dt(h);
1366
+ E.needsUpdate = !0, c(E);
1367
+ }), e.load(WA.resolveURL(r, i.path), l, void 0, Q);
1368
+ });
1369
+ }).then(function(r) {
1370
+ return C === !0 && o.revokeObjectURL(B), r.userData.mimeType = n.mimeType || en(n.uri), r;
1371
+ }).catch(function(r) {
1372
+ throw console.error("THREE.GLTFLoader: Couldn't load texture", B), r;
1373
+ });
1374
+ return this.sourceCache[A] = I, I;
1375
+ }
1376
+ /**
1377
+ * Asynchronously assigns a texture to the given material parameters.
1378
+ * @param {Object} materialParams
1379
+ * @param {string} mapName
1380
+ * @param {Object} mapDef
1381
+ * @return {Promise<Texture>}
1382
+ */
1383
+ assignTexture(A, e, s, t) {
1384
+ const i = this;
1385
+ return this.getDependency("texture", s.index).then(function(n) {
1386
+ if (!n)
1387
+ return null;
1388
+ if (s.texCoord !== void 0 && s.texCoord > 0 && (n = n.clone(), n.channel = s.texCoord), i.extensions[R.KHR_TEXTURE_TRANSFORM]) {
1389
+ const o = s.extensions !== void 0 ? s.extensions[R.KHR_TEXTURE_TRANSFORM] : void 0;
1390
+ if (o) {
1391
+ const B = i.associations.get(n);
1392
+ n = i.extensions[R.KHR_TEXTURE_TRANSFORM].extendTexture(n, o), i.associations.set(n, B);
1393
+ }
1394
+ }
1395
+ return t !== void 0 && (n.colorSpace = t), A[e] = n, n;
1396
+ });
1397
+ }
1398
+ /**
1399
+ * Assigns final material to a Mesh, Line, or Points instance. The instance
1400
+ * already has a material (generated from the glTF material options alone)
1401
+ * but reuse of the same glTF material may require multiple threejs materials
1402
+ * to accommodate different primitive types, defines, etc. New materials will
1403
+ * be created if necessary, and reused from a cache.
1404
+ * @param {Object3D} mesh Mesh, Line, or Points instance.
1405
+ */
1406
+ assignFinalMaterial(A) {
1407
+ const e = A.geometry;
1408
+ let s = A.material;
1409
+ const t = e.attributes.tangent === void 0, i = e.attributes.color !== void 0, n = e.attributes.normal === void 0;
1410
+ if (A.isPoints) {
1411
+ const o = "PointsMaterial:" + s.uuid;
1412
+ let B = this.cache.get(o);
1413
+ B || (B = new Hs(), Ke.prototype.copy.call(B, s), B.color.copy(s.color), B.map = s.map, B.sizeAttenuation = !1, this.cache.add(o, B)), s = B;
1414
+ } else if (A.isLine) {
1415
+ const o = "LineBasicMaterial:" + s.uuid;
1416
+ let B = this.cache.get(o);
1417
+ B || (B = new Ts(), Ke.prototype.copy.call(B, s), B.color.copy(s.color), B.map = s.map, this.cache.add(o, B)), s = B;
1418
+ }
1419
+ if (t || i || n) {
1420
+ let o = "ClonedMaterial:" + s.uuid + ":";
1421
+ t && (o += "derivative-tangents:"), i && (o += "vertex-colors:"), n && (o += "flat-shading:");
1422
+ let B = this.cache.get(o);
1423
+ B || (B = s.clone(), i && (B.vertexColors = !0), n && (B.flatShading = !0), t && (B.normalScale && (B.normalScale.y *= -1), B.clearcoatNormalScale && (B.clearcoatNormalScale.y *= -1)), this.cache.add(o, B), this.associations.set(B, this.associations.get(s))), s = B;
1424
+ }
1425
+ A.material = s;
1426
+ }
1427
+ getMaterialType() {
1428
+ return Pt;
1429
+ }
1430
+ /**
1431
+ * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials
1432
+ * @param {number} materialIndex
1433
+ * @return {Promise<Material>}
1434
+ */
1435
+ loadMaterial(A) {
1436
+ const e = this, s = this.json, t = this.extensions, i = s.materials[A];
1437
+ let n;
1438
+ const o = {}, B = i.extensions || {}, C = [];
1439
+ if (B[R.KHR_MATERIALS_UNLIT]) {
1440
+ const r = t[R.KHR_MATERIALS_UNLIT];
1441
+ n = r.getMaterialType(), C.push(r.extendParams(o, i, e));
1442
+ } else {
1443
+ const r = i.pbrMetallicRoughness || {};
1444
+ if (o.color = new EA(1, 1, 1), o.opacity = 1, Array.isArray(r.baseColorFactor)) {
1445
+ const c = r.baseColorFactor;
1446
+ o.color.setRGB(c[0], c[1], c[2], O), o.opacity = c[3];
1447
+ }
1448
+ r.baseColorTexture !== void 0 && C.push(e.assignTexture(o, "map", r.baseColorTexture, $)), o.metalness = r.metallicFactor !== void 0 ? r.metallicFactor : 1, o.roughness = r.roughnessFactor !== void 0 ? r.roughnessFactor : 1, r.metallicRoughnessTexture !== void 0 && (C.push(e.assignTexture(o, "metalnessMap", r.metallicRoughnessTexture)), C.push(e.assignTexture(o, "roughnessMap", r.metallicRoughnessTexture))), n = this._invokeOne(function(c) {
1449
+ return c.getMaterialType && c.getMaterialType(A);
1450
+ }), C.push(Promise.all(this._invokeAll(function(c) {
1451
+ return c.extendMaterialParams && c.extendMaterialParams(A, o);
1452
+ })));
1453
+ }
1454
+ i.doubleSided === !0 && (o.side = Us);
1455
+ const I = i.alphaMode || _e.OPAQUE;
1456
+ if (I === _e.BLEND ? (o.transparent = !0, o.depthWrite = !1) : (o.transparent = !1, I === _e.MASK && (o.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && n !== qA && (C.push(e.assignTexture(o, "normalMap", i.normalTexture)), o.normalScale = new Ct(1, 1), i.normalTexture.scale !== void 0)) {
1457
+ const r = i.normalTexture.scale;
1458
+ o.normalScale.set(r, r);
1459
+ }
1460
+ if (i.occlusionTexture !== void 0 && n !== qA && (C.push(e.assignTexture(o, "aoMap", i.occlusionTexture)), i.occlusionTexture.strength !== void 0 && (o.aoMapIntensity = i.occlusionTexture.strength)), i.emissiveFactor !== void 0 && n !== qA) {
1461
+ const r = i.emissiveFactor;
1462
+ o.emissive = new EA().setRGB(r[0], r[1], r[2], O);
1463
+ }
1464
+ return i.emissiveTexture !== void 0 && n !== qA && C.push(e.assignTexture(o, "emissiveMap", i.emissiveTexture, $)), Promise.all(C).then(function() {
1465
+ const r = new n(o);
1466
+ return i.name && (r.name = i.name), iA(r, i), e.associations.set(r, { materials: A }), i.extensions && hA(t, r, i), r;
1467
+ });
1468
+ }
1469
+ /** When Object3D instances are targeted by animation, they need unique names. */
1470
+ createUniqueName(A) {
1471
+ const e = Ns.sanitizeNodeName(A || "");
1472
+ return e in this.nodeNamesUsed ? e + "_" + ++this.nodeNamesUsed[e] : (this.nodeNamesUsed[e] = 0, e);
1473
+ }
1474
+ /**
1475
+ * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry
1476
+ *
1477
+ * Creates BufferGeometries from primitives.
1478
+ *
1479
+ * @param {Array<GLTF.Primitive>} primitives
1480
+ * @return {Promise<Array<BufferGeometry>>}
1481
+ */
1482
+ loadGeometries(A) {
1483
+ const e = this, s = this.extensions, t = this.primitiveCache;
1484
+ function i(o) {
1485
+ return s[R.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o, e).then(function(B) {
1486
+ return Lt(B, o, e);
1487
+ });
1488
+ }
1489
+ const n = [];
1490
+ for (let o = 0, B = A.length; o < B; o++) {
1491
+ const C = A[o], I = An(C), r = t[I];
1492
+ if (r)
1493
+ n.push(r.promise);
1494
+ else {
1495
+ let c;
1496
+ C.extensions && C.extensions[R.KHR_DRACO_MESH_COMPRESSION] ? c = i(C) : c = Lt(new Yt(), C, e), t[I] = { primitive: C, promise: c }, n.push(c);
1497
+ }
1498
+ }
1499
+ return Promise.all(n);
1500
+ }
1501
+ /**
1502
+ * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes
1503
+ * @param {number} meshIndex
1504
+ * @return {Promise<Group|Mesh|SkinnedMesh>}
1505
+ */
1506
+ loadMesh(A) {
1507
+ const e = this, s = this.json, t = this.extensions, i = s.meshes[A], n = i.primitives, o = [];
1508
+ for (let B = 0, C = n.length; B < C; B++) {
1509
+ const I = n[B].material === void 0 ? Zi(this.cache) : this.getDependency("material", n[B].material);
1510
+ o.push(I);
1511
+ }
1512
+ return o.push(e.loadGeometries(n)), Promise.all(o).then(function(B) {
1513
+ const C = B.slice(0, B.length - 1), I = B[B.length - 1], r = [];
1514
+ for (let Q = 0, l = I.length; Q < l; Q++) {
1515
+ const h = I[Q], E = n[Q];
1516
+ let d;
1517
+ const f = C[Q];
1518
+ if (E.mode === x.TRIANGLES || E.mode === x.TRIANGLE_STRIP || E.mode === x.TRIANGLE_FAN || E.mode === void 0)
1519
+ d = i.isSkinnedMesh === !0 ? new xs(h, f) : new Fe(h, f), d.isSkinnedMesh === !0 && d.normalizeSkinWeights(), E.mode === x.TRIANGLE_STRIP ? d.geometry = mt(d.geometry, Ot) : E.mode === x.TRIANGLE_FAN && (d.geometry = mt(d.geometry, At));
1520
+ else if (E.mode === x.LINES)
1521
+ d = new ks(h, f);
1522
+ else if (E.mode === x.LINE_STRIP)
1523
+ d = new Ks(h, f);
1524
+ else if (E.mode === x.LINE_LOOP)
1525
+ d = new bs(h, f);
1526
+ else if (E.mode === x.POINTS)
1527
+ d = new Os(h, f);
1528
+ else
1529
+ throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + E.mode);
1530
+ Object.keys(d.geometry.morphAttributes).length > 0 && $i(d, i), d.name = e.createUniqueName(i.name || "mesh_" + A), iA(d, i), E.extensions && hA(t, d, E), e.assignFinalMaterial(d), r.push(d);
1531
+ }
1532
+ for (let Q = 0, l = r.length; Q < l; Q++)
1533
+ e.associations.set(r[Q], {
1534
+ meshes: A,
1535
+ primitives: Q
1536
+ });
1537
+ if (r.length === 1)
1538
+ return i.extensions && hA(t, r[0], i), r[0];
1539
+ const c = new jA();
1540
+ i.extensions && hA(t, c, i), e.associations.set(c, { meshes: A });
1541
+ for (let Q = 0, l = r.length; Q < l; Q++)
1542
+ c.add(r[Q]);
1543
+ return c;
1544
+ });
1545
+ }
1546
+ /**
1547
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras
1548
+ * @param {number} cameraIndex
1549
+ * @return {Promise<THREE.Camera>}
1550
+ */
1551
+ loadCamera(A) {
1552
+ let e;
1553
+ const s = this.json.cameras[A], t = s[s.type];
1554
+ if (!t) {
1555
+ console.warn("THREE.GLTFLoader: Missing camera parameters.");
1556
+ return;
1557
+ }
1558
+ return s.type === "perspective" ? e = new $e(_s.radToDeg(t.yfov), t.aspectRatio || 1, t.znear || 1, t.zfar || 2e6) : s.type === "orthographic" && (e = new ze(-t.xmag, t.xmag, t.ymag, -t.ymag, t.znear, t.zfar)), s.name && (e.name = this.createUniqueName(s.name)), iA(e, s), Promise.resolve(e);
1559
+ }
1560
+ /**
1561
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins
1562
+ * @param {number} skinIndex
1563
+ * @return {Promise<Skeleton>}
1564
+ */
1565
+ loadSkin(A) {
1566
+ const e = this.json.skins[A], s = [];
1567
+ for (let t = 0, i = e.joints.length; t < i; t++)
1568
+ s.push(this._loadNodeShallow(e.joints[t]));
1569
+ return e.inverseBindMatrices !== void 0 ? s.push(this.getDependency("accessor", e.inverseBindMatrices)) : s.push(null), Promise.all(s).then(function(t) {
1570
+ const i = t.pop(), n = t, o = [], B = [];
1571
+ for (let C = 0, I = n.length; C < I; C++) {
1572
+ const r = n[C];
1573
+ if (r) {
1574
+ o.push(r);
1575
+ const c = new bA();
1576
+ i !== null && c.fromArray(i.array, C * 16), B.push(c);
1577
+ } else
1578
+ console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', e.joints[C]);
1579
+ }
1580
+ return new Ps(o, B);
1581
+ });
1582
+ }
1583
+ /**
1584
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations
1585
+ * @param {number} animationIndex
1586
+ * @return {Promise<AnimationClip>}
1587
+ */
1588
+ loadAnimation(A) {
1589
+ const e = this.json, s = this, t = e.animations[A], i = t.name ? t.name : "animation_" + A, n = [], o = [], B = [], C = [], I = [];
1590
+ for (let r = 0, c = t.channels.length; r < c; r++) {
1591
+ const Q = t.channels[r], l = t.samplers[Q.sampler], h = Q.target, E = h.node, d = t.parameters !== void 0 ? t.parameters[l.input] : l.input, f = t.parameters !== void 0 ? t.parameters[l.output] : l.output;
1592
+ h.node !== void 0 && (n.push(this.getDependency("node", E)), o.push(this.getDependency("accessor", d)), B.push(this.getDependency("accessor", f)), C.push(l), I.push(h));
1593
+ }
1594
+ return Promise.all([
1595
+ Promise.all(n),
1596
+ Promise.all(o),
1597
+ Promise.all(B),
1598
+ Promise.all(C),
1599
+ Promise.all(I)
1600
+ ]).then(function(r) {
1601
+ const c = r[0], Q = r[1], l = r[2], h = r[3], E = r[4], d = [];
1602
+ for (let f = 0, D = c.length; f < D; f++) {
1603
+ const F = c[f], p = Q[f], m = l[f], M = h[f], _ = E[f];
1604
+ if (F === void 0)
1605
+ continue;
1606
+ F.updateMatrix && F.updateMatrix();
1607
+ const y = s._createAnimationTracks(F, p, m, M, _);
1608
+ if (y)
1609
+ for (let W = 0; W < y.length; W++)
1610
+ d.push(y[W]);
1611
+ }
1612
+ return new Ys(i, void 0, d);
1613
+ });
1614
+ }
1615
+ createNodeMesh(A) {
1616
+ const e = this.json, s = this, t = e.nodes[A];
1617
+ return t.mesh === void 0 ? null : s.getDependency("mesh", t.mesh).then(function(i) {
1618
+ const n = s._getNodeRef(s.meshCache, t.mesh, i);
1619
+ return t.weights !== void 0 && n.traverse(function(o) {
1620
+ if (o.isMesh)
1621
+ for (let B = 0, C = t.weights.length; B < C; B++)
1622
+ o.morphTargetInfluences[B] = t.weights[B];
1623
+ }), n;
1624
+ });
1625
+ }
1626
+ /**
1627
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy
1628
+ * @param {number} nodeIndex
1629
+ * @return {Promise<Object3D>}
1630
+ */
1631
+ loadNode(A) {
1632
+ const e = this.json, s = this, t = e.nodes[A], i = s._loadNodeShallow(A), n = [], o = t.children || [];
1633
+ for (let C = 0, I = o.length; C < I; C++)
1634
+ n.push(s.getDependency("node", o[C]));
1635
+ const B = t.skin === void 0 ? Promise.resolve(null) : s.getDependency("skin", t.skin);
1636
+ return Promise.all([
1637
+ i,
1638
+ Promise.all(n),
1639
+ B
1640
+ ]).then(function(C) {
1641
+ const I = C[0], r = C[1], c = C[2];
1642
+ c !== null && I.traverse(function(Q) {
1643
+ Q.isSkinnedMesh && Q.bind(c, tn);
1644
+ });
1645
+ for (let Q = 0, l = r.length; Q < l; Q++)
1646
+ I.add(r[Q]);
1647
+ return I;
1648
+ });
1649
+ }
1650
+ // ._loadNodeShallow() parses a single node.
1651
+ // skin and child nodes are created and added in .loadNode() (no '_' prefix).
1652
+ _loadNodeShallow(A) {
1653
+ const e = this.json, s = this.extensions, t = this;
1654
+ if (this.nodeCache[A] !== void 0)
1655
+ return this.nodeCache[A];
1656
+ const i = e.nodes[A], n = i.name ? t.createUniqueName(i.name) : "", o = [], B = t._invokeOne(function(C) {
1657
+ return C.createNodeMesh && C.createNodeMesh(A);
1658
+ });
1659
+ return B && o.push(B), i.camera !== void 0 && o.push(t.getDependency("camera", i.camera).then(function(C) {
1660
+ return t._getNodeRef(t.cameraCache, i.camera, C);
1661
+ })), t._invokeAll(function(C) {
1662
+ return C.createNodeAttachment && C.createNodeAttachment(A);
1663
+ }).forEach(function(C) {
1664
+ o.push(C);
1665
+ }), this.nodeCache[A] = Promise.all(o).then(function(C) {
1666
+ let I;
1667
+ if (i.isBone === !0 ? I = new qs() : C.length > 1 ? I = new jA() : C.length === 1 ? I = C[0] : I = new It(), I !== C[0])
1668
+ for (let r = 0, c = C.length; r < c; r++)
1669
+ I.add(C[r]);
1670
+ if (i.name && (I.userData.name = i.name, I.name = n), iA(I, i), i.extensions && hA(s, I, i), i.matrix !== void 0) {
1671
+ const r = new bA();
1672
+ r.fromArray(i.matrix), I.applyMatrix4(r);
1673
+ } else
1674
+ i.translation !== void 0 && I.position.fromArray(i.translation), i.rotation !== void 0 && I.quaternion.fromArray(i.rotation), i.scale !== void 0 && I.scale.fromArray(i.scale);
1675
+ return t.associations.has(I) || t.associations.set(I, {}), t.associations.get(I).nodes = A, I;
1676
+ }), this.nodeCache[A];
1677
+ }
1678
+ /**
1679
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes
1680
+ * @param {number} sceneIndex
1681
+ * @return {Promise<Group>}
1682
+ */
1683
+ loadScene(A) {
1684
+ const e = this.extensions, s = this.json.scenes[A], t = this, i = new jA();
1685
+ s.name && (i.name = t.createUniqueName(s.name)), iA(i, s), s.extensions && hA(e, i, s);
1686
+ const n = s.nodes || [], o = [];
1687
+ for (let B = 0, C = n.length; B < C; B++)
1688
+ o.push(t.getDependency("node", n[B]));
1689
+ return Promise.all(o).then(function(B) {
1690
+ for (let I = 0, r = B.length; I < r; I++)
1691
+ i.add(B[I]);
1692
+ const C = (I) => {
1693
+ const r = /* @__PURE__ */ new Map();
1694
+ for (const [c, Q] of t.associations)
1695
+ (c instanceof Ke || c instanceof dt) && r.set(c, Q);
1696
+ return I.traverse((c) => {
1697
+ const Q = t.associations.get(c);
1698
+ Q != null && r.set(c, Q);
1699
+ }), r;
1700
+ };
1701
+ return t.associations = C(i), i;
1702
+ });
1703
+ }
1704
+ _createAnimationTracks(A, e, s, t, i) {
1705
+ const n = [], o = A.name ? A.name : A.uuid, B = [];
1706
+ sA[i.path] === sA.weights ? A.traverse(function(c) {
1707
+ c.morphTargetInfluences && B.push(c.name ? c.name : c.uuid);
1708
+ }) : B.push(o);
1709
+ let C;
1710
+ switch (sA[i.path]) {
1711
+ case sA.weights:
1712
+ C = ft;
1713
+ break;
1714
+ case sA.rotation:
1715
+ C = Dt;
1716
+ break;
1717
+ case sA.position:
1718
+ case sA.scale:
1719
+ C = ut;
1720
+ break;
1721
+ default:
1722
+ switch (s.itemSize) {
1723
+ case 1:
1724
+ C = ft;
1725
+ break;
1726
+ case 2:
1727
+ case 3:
1728
+ default:
1729
+ C = ut;
1730
+ break;
1731
+ }
1732
+ break;
1733
+ }
1734
+ const I = t.interpolation !== void 0 ? ji[t.interpolation] : qt, r = this._getArrayFromAccessor(s);
1735
+ for (let c = 0, Q = B.length; c < Q; c++) {
1736
+ const l = new C(
1737
+ B[c] + "." + sA[i.path],
1738
+ e.array,
1739
+ r,
1740
+ I
1741
+ );
1742
+ t.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(l), n.push(l);
1743
+ }
1744
+ return n;
1745
+ }
1746
+ _getArrayFromAccessor(A) {
1747
+ let e = A.array;
1748
+ if (A.normalized) {
1749
+ const s = it(e.constructor), t = new Float32Array(e.length);
1750
+ for (let i = 0, n = e.length; i < n; i++)
1751
+ t[i] = e[i] * s;
1752
+ e = t;
1753
+ }
1754
+ return e;
1755
+ }
1756
+ _createCubicSplineTrackInterpolant(A) {
1757
+ A.createInterpolant = function(s) {
1758
+ const t = this instanceof Dt ? Vi : jt;
1759
+ return new t(this.times, this.values, this.getValueSize() / 3, s);
1760
+ }, A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = !0;
1761
+ }
1762
+ }
1763
+ function nn(a, A, e) {
1764
+ const s = A.attributes, t = new Ai();
1765
+ if (s.POSITION !== void 0) {
1766
+ const o = e.json.accessors[s.POSITION], B = o.min, C = o.max;
1767
+ if (B !== void 0 && C !== void 0) {
1768
+ if (t.set(
1769
+ new K(B[0], B[1], B[2]),
1770
+ new K(C[0], C[1], C[2])
1771
+ ), o.normalized) {
1772
+ const I = it(pA[o.componentType]);
1773
+ t.min.multiplyScalar(I), t.max.multiplyScalar(I);
1774
+ }
1775
+ } else {
1776
+ console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
1777
+ return;
1778
+ }
1779
+ } else
1780
+ return;
1781
+ const i = A.targets;
1782
+ if (i !== void 0) {
1783
+ const o = new K(), B = new K();
1784
+ for (let C = 0, I = i.length; C < I; C++) {
1785
+ const r = i[C];
1786
+ if (r.POSITION !== void 0) {
1787
+ const c = e.json.accessors[r.POSITION], Q = c.min, l = c.max;
1788
+ if (Q !== void 0 && l !== void 0) {
1789
+ if (B.setX(Math.max(Math.abs(Q[0]), Math.abs(l[0]))), B.setY(Math.max(Math.abs(Q[1]), Math.abs(l[1]))), B.setZ(Math.max(Math.abs(Q[2]), Math.abs(l[2]))), c.normalized) {
1790
+ const h = it(pA[c.componentType]);
1791
+ B.multiplyScalar(h);
1792
+ }
1793
+ o.max(B);
1794
+ } else
1795
+ console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");
1796
+ }
1797
+ }
1798
+ t.expandByVector(o);
1799
+ }
1800
+ a.boundingBox = t;
1801
+ const n = new ei();
1802
+ t.getCenter(n.center), n.radius = t.min.distanceTo(t.max) / 2, a.boundingSphere = n;
1803
+ }
1804
+ function Lt(a, A, e) {
1805
+ const s = A.attributes, t = [];
1806
+ function i(n, o) {
1807
+ return e.getDependency("accessor", n).then(function(B) {
1808
+ a.setAttribute(o, B);
1809
+ });
1810
+ }
1811
+ for (const n in s) {
1812
+ const o = st[n] || n.toLowerCase();
1813
+ o in a.attributes || t.push(i(s[n], o));
1814
+ }
1815
+ if (A.indices !== void 0 && !a.index) {
1816
+ const n = e.getDependency("accessor", A.indices).then(function(o) {
1817
+ a.setIndex(o);
1818
+ });
1819
+ t.push(n);
1820
+ }
1821
+ return lt.workingColorSpace !== O && "COLOR_0" in s && console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${lt.workingColorSpace}" not supported.`), iA(a, A), nn(a, A, e), Promise.all(t).then(function() {
1822
+ return A.targets !== void 0 ? zi(a, A.targets, e) : a;
1823
+ });
1824
+ }
1825
+ const Ye = /* @__PURE__ */ new WeakMap();
1826
+ class on extends rt {
1827
+ constructor(A) {
1828
+ super(A), this.decoderPath = "", this.decoderConfig = {}, this.decoderBinary = null, this.decoderPending = null, this.workerLimit = 4, this.workerPool = [], this.workerNextTaskID = 1, this.workerSourceURL = "", this.defaultAttributeIDs = {
1829
+ position: "POSITION",
1830
+ normal: "NORMAL",
1831
+ color: "COLOR",
1832
+ uv: "TEX_COORD"
1833
+ }, this.defaultAttributeTypes = {
1834
+ position: "Float32Array",
1835
+ normal: "Float32Array",
1836
+ color: "Float32Array",
1837
+ uv: "Float32Array"
1838
+ };
1839
+ }
1840
+ setDecoderPath(A) {
1841
+ return this.decoderPath = A, this;
1842
+ }
1843
+ setDecoderConfig(A) {
1844
+ return this.decoderConfig = A, this;
1845
+ }
1846
+ setWorkerLimit(A) {
1847
+ return this.workerLimit = A, this;
1848
+ }
1849
+ load(A, e, s, t) {
1850
+ const i = new FA(this.manager);
1851
+ i.setPath(this.path), i.setResponseType("arraybuffer"), i.setRequestHeader(this.requestHeader), i.setWithCredentials(this.withCredentials), i.load(A, (n) => {
1852
+ this.parse(n, e, t);
1853
+ }, s, t);
1854
+ }
1855
+ parse(A, e, s = () => {
1856
+ }) {
1857
+ this.decodeDracoFile(A, e, null, null, $).catch(s);
1858
+ }
1859
+ decodeDracoFile(A, e, s, t, i = O, n = () => {
1860
+ }) {
1861
+ const o = {
1862
+ attributeIDs: s || this.defaultAttributeIDs,
1863
+ attributeTypes: t || this.defaultAttributeTypes,
1864
+ useUniqueIDs: !!s,
1865
+ vertexColorSpace: i
1866
+ };
1867
+ return this.decodeGeometry(A, o).then(e).catch(n);
1868
+ }
1869
+ decodeGeometry(A, e) {
1870
+ const s = JSON.stringify(e);
1871
+ if (Ye.has(A)) {
1872
+ const B = Ye.get(A);
1873
+ if (B.key === s)
1874
+ return B.promise;
1875
+ if (A.byteLength === 0)
1876
+ throw new Error(
1877
+ "THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred."
1878
+ );
1879
+ }
1880
+ let t;
1881
+ const i = this.workerNextTaskID++, n = A.byteLength, o = this._getWorker(i, n).then((B) => (t = B, new Promise((C, I) => {
1882
+ t._callbacks[i] = { resolve: C, reject: I }, t.postMessage({ type: "decode", id: i, taskConfig: e, buffer: A }, [A]);
1883
+ }))).then((B) => this._createGeometry(B.geometry));
1884
+ return o.catch(() => !0).then(() => {
1885
+ t && i && this._releaseTask(t, i);
1886
+ }), Ye.set(A, {
1887
+ key: s,
1888
+ promise: o
1889
+ }), o;
1890
+ }
1891
+ _createGeometry(A) {
1892
+ const e = new Yt();
1893
+ A.index && e.setIndex(new VA(A.index.array, 1));
1894
+ for (let s = 0; s < A.attributes.length; s++) {
1895
+ const t = A.attributes[s], i = t.name, n = t.array, o = t.itemSize, B = new VA(n, o);
1896
+ i === "color" && (this._assignVertexColorSpace(B, t.vertexColorSpace), B.normalized = !(n instanceof Float32Array)), e.setAttribute(i, B);
1897
+ }
1898
+ return e;
1899
+ }
1900
+ _assignVertexColorSpace(A, e) {
1901
+ if (e !== $)
1902
+ return;
1903
+ const s = new EA();
1904
+ for (let t = 0, i = A.count; t < i; t++)
1905
+ s.fromBufferAttribute(A, t).convertSRGBToLinear(), A.setXYZ(t, s.r, s.g, s.b);
1906
+ }
1907
+ _loadLibrary(A, e) {
1908
+ const s = new FA(this.manager);
1909
+ return s.setPath(this.decoderPath), s.setResponseType(e), s.setWithCredentials(this.withCredentials), new Promise((t, i) => {
1910
+ s.load(A, t, void 0, i);
1911
+ });
1912
+ }
1913
+ preload() {
1914
+ return this._initDecoder(), this;
1915
+ }
1916
+ _initDecoder() {
1917
+ if (this.decoderPending)
1918
+ return this.decoderPending;
1919
+ const A = typeof WebAssembly != "object" || this.decoderConfig.type === "js", e = [];
1920
+ return A ? e.push(this._loadLibrary("draco_decoder.js", "text")) : (e.push(this._loadLibrary("draco_wasm_wrapper.js", "text")), e.push(this._loadLibrary("draco_decoder.wasm", "arraybuffer"))), this.decoderPending = Promise.all(e).then((s) => {
1921
+ const t = s[0];
1922
+ A || (this.decoderConfig.wasmBinary = s[1]);
1923
+ const i = Bn.toString(), n = [
1924
+ "/* draco decoder */",
1925
+ t,
1926
+ "",
1927
+ "/* worker */",
1928
+ i.substring(i.indexOf("{") + 1, i.lastIndexOf("}"))
1929
+ ].join(`
1930
+ `);
1931
+ this.workerSourceURL = URL.createObjectURL(new Blob([n]));
1932
+ }), this.decoderPending;
1933
+ }
1934
+ _getWorker(A, e) {
1935
+ return this._initDecoder().then(() => {
1936
+ if (this.workerPool.length < this.workerLimit) {
1937
+ const t = new Worker(this.workerSourceURL);
1938
+ t._callbacks = {}, t._taskCosts = {}, t._taskLoad = 0, t.postMessage({ type: "init", decoderConfig: this.decoderConfig }), t.onmessage = function(i) {
1939
+ const n = i.data;
1940
+ switch (n.type) {
1941
+ case "decode":
1942
+ t._callbacks[n.id].resolve(n);
1943
+ break;
1944
+ case "error":
1945
+ t._callbacks[n.id].reject(n);
1946
+ break;
1947
+ default:
1948
+ console.error('THREE.DRACOLoader: Unexpected message, "' + n.type + '"');
1949
+ }
1950
+ }, this.workerPool.push(t);
1951
+ } else
1952
+ this.workerPool.sort(function(t, i) {
1953
+ return t._taskLoad > i._taskLoad ? -1 : 1;
1954
+ });
1955
+ const s = this.workerPool[this.workerPool.length - 1];
1956
+ return s._taskCosts[A] = e, s._taskLoad += e, s;
1957
+ });
1958
+ }
1959
+ _releaseTask(A, e) {
1960
+ A._taskLoad -= A._taskCosts[e], delete A._callbacks[e], delete A._taskCosts[e];
1961
+ }
1962
+ debug() {
1963
+ console.log("Task load: ", this.workerPool.map((A) => A._taskLoad));
1964
+ }
1965
+ dispose() {
1966
+ for (let A = 0; A < this.workerPool.length; ++A)
1967
+ this.workerPool[A].terminate();
1968
+ return this.workerPool.length = 0, this.workerSourceURL !== "" && URL.revokeObjectURL(this.workerSourceURL), this;
1969
+ }
1970
+ }
1971
+ function Bn() {
1972
+ let a, A;
1973
+ onmessage = function(n) {
1974
+ const o = n.data;
1975
+ switch (o.type) {
1976
+ case "init":
1977
+ a = o.decoderConfig, A = new Promise(function(I) {
1978
+ a.onModuleLoaded = function(r) {
1979
+ I({ draco: r });
1980
+ }, DracoDecoderModule(a);
1981
+ });
1982
+ break;
1983
+ case "decode":
1984
+ const B = o.buffer, C = o.taskConfig;
1985
+ A.then((I) => {
1986
+ const r = I.draco, c = new r.Decoder();
1987
+ try {
1988
+ const Q = e(r, c, new Int8Array(B), C), l = Q.attributes.map((h) => h.array.buffer);
1989
+ Q.index && l.push(Q.index.array.buffer), self.postMessage({ type: "decode", id: o.id, geometry: Q }, l);
1990
+ } catch (Q) {
1991
+ console.error(Q), self.postMessage({ type: "error", id: o.id, error: Q.message });
1992
+ } finally {
1993
+ r.destroy(c);
1994
+ }
1995
+ });
1996
+ break;
1997
+ }
1998
+ };
1999
+ function e(n, o, B, C) {
2000
+ const I = C.attributeIDs, r = C.attributeTypes;
2001
+ let c, Q;
2002
+ const l = o.GetEncodedGeometryType(B);
2003
+ if (l === n.TRIANGULAR_MESH)
2004
+ c = new n.Mesh(), Q = o.DecodeArrayToMesh(B, B.byteLength, c);
2005
+ else if (l === n.POINT_CLOUD)
2006
+ c = new n.PointCloud(), Q = o.DecodeArrayToPointCloud(B, B.byteLength, c);
2007
+ else
2008
+ throw new Error("THREE.DRACOLoader: Unexpected geometry type.");
2009
+ if (!Q.ok() || c.ptr === 0)
2010
+ throw new Error("THREE.DRACOLoader: Decoding failed: " + Q.error_msg());
2011
+ const h = { index: null, attributes: [] };
2012
+ for (const E in I) {
2013
+ const d = self[r[E]];
2014
+ let f, D;
2015
+ if (C.useUniqueIDs)
2016
+ D = I[E], f = o.GetAttributeByUniqueId(c, D);
2017
+ else {
2018
+ if (D = o.GetAttributeId(c, n[I[E]]), D === -1)
2019
+ continue;
2020
+ f = o.GetAttribute(c, D);
2021
+ }
2022
+ const F = t(n, o, c, E, d, f);
2023
+ E === "color" && (F.vertexColorSpace = C.vertexColorSpace), h.attributes.push(F);
2024
+ }
2025
+ return l === n.TRIANGULAR_MESH && (h.index = s(n, o, c)), n.destroy(c), h;
2026
+ }
2027
+ function s(n, o, B) {
2028
+ const I = B.num_faces() * 3, r = I * 4, c = n._malloc(r);
2029
+ o.GetTrianglesUInt32Array(B, r, c);
2030
+ const Q = new Uint32Array(n.HEAPF32.buffer, c, I).slice();
2031
+ return n._free(c), { array: Q, itemSize: 1 };
2032
+ }
2033
+ function t(n, o, B, C, I, r) {
2034
+ const c = r.num_components(), l = B.num_points() * c, h = l * I.BYTES_PER_ELEMENT, E = i(n, I), d = n._malloc(h);
2035
+ o.GetAttributeDataArrayForAllPoints(B, r, E, h, d);
2036
+ const f = new I(n.HEAPF32.buffer, d, l).slice();
2037
+ return n._free(d), {
2038
+ name: C,
2039
+ array: f,
2040
+ itemSize: c
2041
+ };
2042
+ }
2043
+ function i(n, o) {
2044
+ switch (o) {
2045
+ case Float32Array:
2046
+ return n.DT_FLOAT32;
2047
+ case Int8Array:
2048
+ return n.DT_INT8;
2049
+ case Int16Array:
2050
+ return n.DT_INT16;
2051
+ case Int32Array:
2052
+ return n.DT_INT32;
2053
+ case Uint8Array:
2054
+ return n.DT_UINT8;
2055
+ case Uint16Array:
2056
+ return n.DT_UINT16;
2057
+ case Uint32Array:
2058
+ return n.DT_UINT32;
2059
+ }
2060
+ }
2061
+ }
2062
+ class rn {
2063
+ constructor(A = 4) {
2064
+ this.pool = A, this.queue = [], this.workers = [], this.workersResolve = [], this.workerStatus = 0;
2065
+ }
2066
+ _initWorker(A) {
2067
+ if (!this.workers[A]) {
2068
+ const e = this.workerCreator();
2069
+ e.addEventListener("message", this._onMessage.bind(this, A)), this.workers[A] = e;
2070
+ }
2071
+ }
2072
+ _getIdleWorker() {
2073
+ for (let A = 0; A < this.pool; A++)
2074
+ if (!(this.workerStatus & 1 << A))
2075
+ return A;
2076
+ return -1;
2077
+ }
2078
+ _onMessage(A, e) {
2079
+ const s = this.workersResolve[A];
2080
+ if (s && s(e), this.queue.length) {
2081
+ const { resolve: t, msg: i, transfer: n } = this.queue.shift();
2082
+ this.workersResolve[A] = t, this.workers[A].postMessage(i, n);
2083
+ } else
2084
+ this.workerStatus ^= 1 << A;
2085
+ }
2086
+ setWorkerCreator(A) {
2087
+ this.workerCreator = A;
2088
+ }
2089
+ setWorkerLimit(A) {
2090
+ this.pool = A;
2091
+ }
2092
+ postMessage(A, e) {
2093
+ return new Promise((s) => {
2094
+ const t = this._getIdleWorker();
2095
+ t !== -1 ? (this._initWorker(t), this.workerStatus |= 1 << t, this.workersResolve[t] = s, this.workers[t].postMessage(A, e)) : this.queue.push({ resolve: s, msg: A, transfer: e });
2096
+ });
2097
+ }
2098
+ dispose() {
2099
+ this.workers.forEach((A) => A.terminate()), this.workersResolve.length = 0, this.workers.length = 0, this.queue.length = 0, this.workerStatus = 0;
2100
+ }
2101
+ }
2102
+ const Cn = 0, yt = 2, an = 1, Jt = 2, In = 0, gn = 1, En = 10, cn = 0, Zt = 9, zt = 15, $t = 16, As = 22, es = 37, ts = 43, ss = 76, is = 83, ns = 97, os = 100, Bs = 103, rs = 109, Cs = 165, as = 166;
2103
+ class Qn {
2104
+ constructor() {
2105
+ this.vkFormat = 0, this.typeSize = 1, this.pixelWidth = 0, this.pixelHeight = 0, this.pixelDepth = 0, this.layerCount = 0, this.faceCount = 1, this.supercompressionScheme = 0, this.levels = [], this.dataFormatDescriptor = [{ vendorId: 0, descriptorType: 0, descriptorBlockSize: 0, versionNumber: 2, colorModel: 0, colorPrimaries: 1, transferFunction: 2, flags: 0, texelBlockDimension: [0, 0, 0, 0], bytesPlane: [0, 0, 0, 0, 0, 0, 0, 0], samples: [] }], this.keyValue = {}, this.globalData = null;
2106
+ }
2107
+ }
2108
+ class YA {
2109
+ constructor(A, e, s, t) {
2110
+ this._dataView = new DataView(A.buffer, A.byteOffset + e, s), this._littleEndian = t, this._offset = 0;
2111
+ }
2112
+ _nextUint8() {
2113
+ const A = this._dataView.getUint8(this._offset);
2114
+ return this._offset += 1, A;
2115
+ }
2116
+ _nextUint16() {
2117
+ const A = this._dataView.getUint16(this._offset, this._littleEndian);
2118
+ return this._offset += 2, A;
2119
+ }
2120
+ _nextUint32() {
2121
+ const A = this._dataView.getUint32(this._offset, this._littleEndian);
2122
+ return this._offset += 4, A;
2123
+ }
2124
+ _nextUint64() {
2125
+ const A = this._dataView.getUint32(this._offset, this._littleEndian) + 4294967296 * this._dataView.getUint32(this._offset + 4, this._littleEndian);
2126
+ return this._offset += 8, A;
2127
+ }
2128
+ _nextInt32() {
2129
+ const A = this._dataView.getInt32(this._offset, this._littleEndian);
2130
+ return this._offset += 4, A;
2131
+ }
2132
+ _skip(A) {
2133
+ return this._offset += A, this;
2134
+ }
2135
+ _scan(A, e = 0) {
2136
+ const s = this._offset;
2137
+ let t = 0;
2138
+ for (; this._dataView.getUint8(this._offset) !== e && t < A; )
2139
+ t++, this._offset++;
2140
+ return t < A && this._offset++, new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + s, t);
2141
+ }
2142
+ }
2143
+ const L = [171, 75, 84, 88, 32, 50, 48, 187, 13, 10, 26, 10];
2144
+ function Ht(a) {
2145
+ return typeof TextDecoder != "undefined" ? new TextDecoder().decode(a) : Buffer.from(a).toString("utf8");
2146
+ }
2147
+ function hn(a) {
2148
+ const A = new Uint8Array(a.buffer, a.byteOffset, L.length);
2149
+ if (A[0] !== L[0] || A[1] !== L[1] || A[2] !== L[2] || A[3] !== L[3] || A[4] !== L[4] || A[5] !== L[5] || A[6] !== L[6] || A[7] !== L[7] || A[8] !== L[8] || A[9] !== L[9] || A[10] !== L[10] || A[11] !== L[11])
2150
+ throw new Error("Missing KTX 2.0 identifier.");
2151
+ const e = new Qn(), s = 17 * Uint32Array.BYTES_PER_ELEMENT, t = new YA(a, L.length, s, !0);
2152
+ e.vkFormat = t._nextUint32(), e.typeSize = t._nextUint32(), e.pixelWidth = t._nextUint32(), e.pixelHeight = t._nextUint32(), e.pixelDepth = t._nextUint32(), e.layerCount = t._nextUint32(), e.faceCount = t._nextUint32();
2153
+ const i = t._nextUint32();
2154
+ e.supercompressionScheme = t._nextUint32();
2155
+ const n = t._nextUint32(), o = t._nextUint32(), B = t._nextUint32(), C = t._nextUint32(), I = t._nextUint64(), r = t._nextUint64(), c = new YA(a, L.length + s, 3 * i * 8, !0);
2156
+ for (let S = 0; S < i; S++)
2157
+ e.levels.push({ levelData: new Uint8Array(a.buffer, a.byteOffset + c._nextUint64(), c._nextUint64()), uncompressedByteLength: c._nextUint64() });
2158
+ const Q = new YA(a, n, o, !0), l = { vendorId: Q._skip(4)._nextUint16(), descriptorType: Q._nextUint16(), versionNumber: Q._nextUint16(), descriptorBlockSize: Q._nextUint16(), colorModel: Q._nextUint8(), colorPrimaries: Q._nextUint8(), transferFunction: Q._nextUint8(), flags: Q._nextUint8(), texelBlockDimension: [Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8()], bytesPlane: [Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8()], samples: [] }, h = (l.descriptorBlockSize / 4 - 6) / 4;
2159
+ for (let S = 0; S < h; S++) {
2160
+ const T = { bitOffset: Q._nextUint16(), bitLength: Q._nextUint8(), channelType: Q._nextUint8(), samplePosition: [Q._nextUint8(), Q._nextUint8(), Q._nextUint8(), Q._nextUint8()], sampleLower: -1 / 0, sampleUpper: 1 / 0 };
2161
+ 64 & T.channelType ? (T.sampleLower = Q._nextInt32(), T.sampleUpper = Q._nextInt32()) : (T.sampleLower = Q._nextUint32(), T.sampleUpper = Q._nextUint32()), l.samples[S] = T;
2162
+ }
2163
+ e.dataFormatDescriptor.length = 0, e.dataFormatDescriptor.push(l);
2164
+ const E = new YA(a, B, C, !0);
2165
+ for (; E._offset < C; ) {
2166
+ const S = E._nextUint32(), T = E._scan(S), _A = Ht(T), V = E._scan(S - T.byteLength);
2167
+ e.keyValue[_A] = _A.match(/^ktx/i) ? Ht(V) : V, E._offset % 4 && E._skip(4 - E._offset % 4);
2168
+ }
2169
+ if (r <= 0)
2170
+ return e;
2171
+ const d = new YA(a, I, r, !0), f = d._nextUint16(), D = d._nextUint16(), F = d._nextUint32(), p = d._nextUint32(), m = d._nextUint32(), M = d._nextUint32(), _ = [];
2172
+ for (let S = 0; S < i; S++)
2173
+ _.push({ imageFlags: d._nextUint32(), rgbSliceByteOffset: d._nextUint32(), rgbSliceByteLength: d._nextUint32(), alphaSliceByteOffset: d._nextUint32(), alphaSliceByteLength: d._nextUint32() });
2174
+ const y = I + d._offset, W = y + F, OA = W + p, Ge = OA + m, cA = new Uint8Array(a.buffer, a.byteOffset + y, F), Re = new Uint8Array(a.buffer, a.byteOffset + W, p), eA = new Uint8Array(a.buffer, a.byteOffset + OA, m), pe = new Uint8Array(a.buffer, a.byteOffset + Ge, M);
2175
+ return e.globalData = { endpointCount: f, selectorCount: D, imageDescs: _, endpointsData: cA, selectorsData: Re, tablesData: eA, extendedData: pe }, e;
2176
+ }
2177
+ let qe, j, nt;
2178
+ const Xe = { env: { emscripten_notify_memory_growth: function(a) {
2179
+ nt = new Uint8Array(j.exports.memory.buffer);
2180
+ } } };
2181
+ class ln {
2182
+ init() {
2183
+ return qe || (qe = typeof fetch != "undefined" ? fetch("data:application/wasm;base64," + Tt).then((A) => A.arrayBuffer()).then((A) => WebAssembly.instantiate(A, Xe)).then(this._init) : WebAssembly.instantiate(Buffer.from(Tt, "base64"), Xe).then(this._init), qe);
2184
+ }
2185
+ _init(A) {
2186
+ j = A.instance, Xe.env.emscripten_notify_memory_growth(0);
2187
+ }
2188
+ decode(A, e = 0) {
2189
+ if (!j)
2190
+ throw new Error("ZSTDDecoder: Await .init() before decoding.");
2191
+ const s = A.byteLength, t = j.exports.malloc(s);
2192
+ nt.set(A, t), e = e || Number(j.exports.ZSTD_findDecompressedSize(t, s));
2193
+ const i = j.exports.malloc(e), n = j.exports.ZSTD_decompress(i, e, t, s), o = nt.slice(i, i + n);
2194
+ return j.exports.free(t), j.exports.free(i), o;
2195
+ }
2196
+ }
2197
+ const Tt = "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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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", ve = /* @__PURE__ */ new WeakMap();
2198
+ let We = 0, Ve;
2199
+ class v extends rt {
2200
+ constructor(A) {
2201
+ super(A), this.transcoderPath = "", this.transcoderBinary = null, this.transcoderPending = null, this.workerPool = new rn(), this.workerSourceURL = "", this.workerConfig = null, typeof MSC_TRANSCODER != "undefined" && console.warn(
2202
+ 'THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.'
2203
+ );
2204
+ }
2205
+ setTranscoderPath(A) {
2206
+ return this.transcoderPath = A, this;
2207
+ }
2208
+ setWorkerLimit(A) {
2209
+ return this.workerPool.setWorkerLimit(A), this;
2210
+ }
2211
+ detectSupport(A) {
2212
+ return A.isWebGPURenderer === !0 ? this.workerConfig = {
2213
+ astcSupported: A.hasFeature("texture-compression-astc"),
2214
+ etc1Supported: !1,
2215
+ etc2Supported: A.hasFeature("texture-compression-etc2"),
2216
+ dxtSupported: A.hasFeature("texture-compression-bc"),
2217
+ bptcSupported: !1,
2218
+ pvrtcSupported: !1
2219
+ } : (this.workerConfig = {
2220
+ astcSupported: A.extensions.has("WEBGL_compressed_texture_astc"),
2221
+ etc1Supported: A.extensions.has("WEBGL_compressed_texture_etc1"),
2222
+ etc2Supported: A.extensions.has("WEBGL_compressed_texture_etc"),
2223
+ dxtSupported: A.extensions.has("WEBGL_compressed_texture_s3tc"),
2224
+ bptcSupported: A.extensions.has("EXT_texture_compression_bptc"),
2225
+ pvrtcSupported: A.extensions.has("WEBGL_compressed_texture_pvrtc") || A.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")
2226
+ }, A.capabilities.isWebGL2 && (this.workerConfig.etc1Supported = !1)), this;
2227
+ }
2228
+ init() {
2229
+ if (!this.transcoderPending) {
2230
+ const A = new FA(this.manager);
2231
+ A.setPath(this.transcoderPath), A.setWithCredentials(this.withCredentials);
2232
+ const e = A.loadAsync("basis_transcoder.js"), s = new FA(this.manager);
2233
+ s.setPath(this.transcoderPath), s.setResponseType("arraybuffer"), s.setWithCredentials(this.withCredentials);
2234
+ const t = s.loadAsync("basis_transcoder.wasm");
2235
+ this.transcoderPending = Promise.all([e, t]).then(([i, n]) => {
2236
+ const o = v.BasisWorker.toString(), B = [
2237
+ "/* constants */",
2238
+ "let _EngineFormat = " + JSON.stringify(v.EngineFormat),
2239
+ "let _TranscoderFormat = " + JSON.stringify(v.TranscoderFormat),
2240
+ "let _BasisFormat = " + JSON.stringify(v.BasisFormat),
2241
+ "/* basis_transcoder.js */",
2242
+ i,
2243
+ "/* worker */",
2244
+ o.substring(o.indexOf("{") + 1, o.lastIndexOf("}"))
2245
+ ].join(`
2246
+ `);
2247
+ this.workerSourceURL = URL.createObjectURL(new Blob([B])), this.transcoderBinary = n, this.workerPool.setWorkerCreator(() => {
2248
+ const C = new Worker(this.workerSourceURL), I = this.transcoderBinary.slice(0);
2249
+ return C.postMessage({ type: "init", config: this.workerConfig, transcoderBinary: I }, [I]), C;
2250
+ });
2251
+ }), We > 0 && console.warn(
2252
+ "THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."
2253
+ ), We++;
2254
+ }
2255
+ return this.transcoderPending;
2256
+ }
2257
+ load(A, e, s, t) {
2258
+ if (this.workerConfig === null)
2259
+ throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");
2260
+ const i = new FA(this.manager);
2261
+ i.setResponseType("arraybuffer"), i.setWithCredentials(this.withCredentials), i.load(A, (n) => {
2262
+ if (ve.has(n))
2263
+ return ve.get(n).promise.then(e).catch(t);
2264
+ this._createTexture(n).then((o) => e ? e(o) : null).catch(t);
2265
+ }, s, t);
2266
+ }
2267
+ _createTextureFrom(A, e) {
2268
+ const { faces: s, width: t, height: i, format: n, type: o, error: B, dfdFlags: C } = A;
2269
+ if (o === "error")
2270
+ return Promise.reject(B);
2271
+ let I;
2272
+ if (e.faceCount === 6)
2273
+ I = new si(s, n, b);
2274
+ else {
2275
+ const r = s[0].mipmaps;
2276
+ I = e.layerCount > 1 ? new ii(r, t, i, e.layerCount, n, b) : new Xt(r, t, i, n, b);
2277
+ }
2278
+ return I.minFilter = s[0].mipmaps.length === 1 ? He : gt, I.magFilter = He, I.generateMipmaps = !1, I.needsUpdate = !0, I.colorSpace = Is(e), I.premultiplyAlpha = !!(C & an), I;
2279
+ }
2280
+ /**
2281
+ * @param {ArrayBuffer} buffer
2282
+ * @param {object?} config
2283
+ * @return {Promise<CompressedTexture|CompressedArrayTexture|DataTexture|Data3DTexture>}
2284
+ */
2285
+ _createTexture(s) {
2286
+ return Me(this, arguments, function* (A, e = {}) {
2287
+ const t = hn(new Uint8Array(A));
2288
+ if (t.vkFormat !== cn)
2289
+ return un(t);
2290
+ const i = e, n = this.init().then(() => this.workerPool.postMessage({ type: "transcode", buffer: A, taskConfig: i }, [A])).then((o) => this._createTextureFrom(o.data, t));
2291
+ return ve.set(A, { promise: n }), n;
2292
+ });
2293
+ }
2294
+ dispose() {
2295
+ return this.workerPool.dispose(), this.workerSourceURL && URL.revokeObjectURL(this.workerSourceURL), We--, this;
2296
+ }
2297
+ }
2298
+ v.BasisFormat = {
2299
+ ETC1S: 0,
2300
+ UASTC_4x4: 1
2301
+ };
2302
+ v.TranscoderFormat = {
2303
+ ETC1: 0,
2304
+ ETC2: 1,
2305
+ BC1: 2,
2306
+ BC3: 3,
2307
+ BC4: 4,
2308
+ BC5: 5,
2309
+ BC7_M6_OPAQUE_ONLY: 6,
2310
+ BC7_M5: 7,
2311
+ PVRTC1_4_RGB: 8,
2312
+ PVRTC1_4_RGBA: 9,
2313
+ ASTC_4x4: 10,
2314
+ ATC_RGB: 11,
2315
+ ATC_RGBA_INTERPOLATED_ALPHA: 12,
2316
+ RGBA32: 13,
2317
+ RGB565: 14,
2318
+ BGR565: 15,
2319
+ RGBA4444: 16
2320
+ };
2321
+ v.EngineFormat = {
2322
+ RGBAFormat: RA,
2323
+ RGBA_ASTC_4x4_Format: ni,
2324
+ RGBA_BPTC_Format: oi,
2325
+ RGBA_ETC2_EAC_Format: Bi,
2326
+ RGBA_PVRTC_4BPPV1_Format: ri,
2327
+ RGBA_S3TC_DXT5_Format: Ci,
2328
+ RGB_ETC1_Format: ai,
2329
+ RGB_ETC2_Format: Ii,
2330
+ RGB_PVRTC_4BPPV1_Format: gi,
2331
+ RGB_S3TC_DXT1_Format: Ei
2332
+ };
2333
+ v.BasisWorker = function() {
2334
+ let a, A, e;
2335
+ const s = _EngineFormat, t = _TranscoderFormat, i = _BasisFormat;
2336
+ self.addEventListener("message", function(l) {
2337
+ const h = l.data;
2338
+ switch (h.type) {
2339
+ case "init":
2340
+ a = h.config, n(h.transcoderBinary);
2341
+ break;
2342
+ case "transcode":
2343
+ A.then(() => {
2344
+ try {
2345
+ const { faces: E, buffers: d, width: f, height: D, hasAlpha: F, format: p, dfdFlags: m } = o(h.buffer);
2346
+ self.postMessage({ type: "transcode", id: h.id, faces: E, width: f, height: D, hasAlpha: F, format: p, dfdFlags: m }, d);
2347
+ } catch (E) {
2348
+ console.error(E), self.postMessage({ type: "error", id: h.id, error: E.message });
2349
+ }
2350
+ });
2351
+ break;
2352
+ }
2353
+ });
2354
+ function n(l) {
2355
+ A = new Promise((h) => {
2356
+ e = { wasmBinary: l, onRuntimeInitialized: h }, BASIS(e);
2357
+ }).then(() => {
2358
+ e.initializeBasis(), e.KTX2File === void 0 && console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.");
2359
+ });
2360
+ }
2361
+ function o(l) {
2362
+ const h = new e.KTX2File(new Uint8Array(l));
2363
+ function E() {
2364
+ h.close(), h.delete();
2365
+ }
2366
+ if (!h.isValid())
2367
+ throw E(), new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");
2368
+ const d = h.isUASTC() ? i.UASTC_4x4 : i.ETC1S, f = h.getWidth(), D = h.getHeight(), F = h.getLayers() || 1, p = h.getLevels(), m = h.getFaces(), M = h.getHasAlpha(), _ = h.getDFDFlags(), { transcoderFormat: y, engineFormat: W } = r(d, f, D, M);
2369
+ if (!f || !D || !p)
2370
+ throw E(), new Error("THREE.KTX2Loader: Invalid texture");
2371
+ if (!h.startTranscoding())
2372
+ throw E(), new Error("THREE.KTX2Loader: .startTranscoding failed");
2373
+ const OA = [], Ge = [];
2374
+ for (let cA = 0; cA < m; cA++) {
2375
+ const Re = [];
2376
+ for (let eA = 0; eA < p; eA++) {
2377
+ const pe = [];
2378
+ let S, T;
2379
+ for (let V = 0; V < F; V++) {
2380
+ const GA = h.getImageLevelInfo(eA, V, cA);
2381
+ cA === 0 && eA === 0 && V === 0 && (GA.origWidth % 4 !== 0 || GA.origHeight % 4 !== 0) && console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."), p > 1 ? (S = GA.origWidth, T = GA.origHeight) : (S = GA.width, T = GA.height);
2382
+ const Et = new Uint8Array(h.getImageTranscodedSizeInBytes(eA, V, 0, y));
2383
+ if (!h.transcodeImage(Et, eA, V, cA, y, 0, -1, -1))
2384
+ throw E(), new Error("THREE.KTX2Loader: .transcodeImage failed.");
2385
+ pe.push(Et);
2386
+ }
2387
+ const _A = Q(pe);
2388
+ Re.push({ data: _A, width: S, height: T }), Ge.push(_A.buffer);
2389
+ }
2390
+ OA.push({ mipmaps: Re, width: f, height: D, format: W });
2391
+ }
2392
+ return E(), { faces: OA, buffers: Ge, width: f, height: D, hasAlpha: M, format: W, dfdFlags: _ };
2393
+ }
2394
+ const B = [
2395
+ {
2396
+ if: "astcSupported",
2397
+ basisFormat: [i.UASTC_4x4],
2398
+ transcoderFormat: [t.ASTC_4x4, t.ASTC_4x4],
2399
+ engineFormat: [s.RGBA_ASTC_4x4_Format, s.RGBA_ASTC_4x4_Format],
2400
+ priorityETC1S: 1 / 0,
2401
+ priorityUASTC: 1,
2402
+ needsPowerOfTwo: !1
2403
+ },
2404
+ {
2405
+ if: "bptcSupported",
2406
+ basisFormat: [i.ETC1S, i.UASTC_4x4],
2407
+ transcoderFormat: [t.BC7_M5, t.BC7_M5],
2408
+ engineFormat: [s.RGBA_BPTC_Format, s.RGBA_BPTC_Format],
2409
+ priorityETC1S: 3,
2410
+ priorityUASTC: 2,
2411
+ needsPowerOfTwo: !1
2412
+ },
2413
+ {
2414
+ if: "dxtSupported",
2415
+ basisFormat: [i.ETC1S, i.UASTC_4x4],
2416
+ transcoderFormat: [t.BC1, t.BC3],
2417
+ engineFormat: [s.RGB_S3TC_DXT1_Format, s.RGBA_S3TC_DXT5_Format],
2418
+ priorityETC1S: 4,
2419
+ priorityUASTC: 5,
2420
+ needsPowerOfTwo: !1
2421
+ },
2422
+ {
2423
+ if: "etc2Supported",
2424
+ basisFormat: [i.ETC1S, i.UASTC_4x4],
2425
+ transcoderFormat: [t.ETC1, t.ETC2],
2426
+ engineFormat: [s.RGB_ETC2_Format, s.RGBA_ETC2_EAC_Format],
2427
+ priorityETC1S: 1,
2428
+ priorityUASTC: 3,
2429
+ needsPowerOfTwo: !1
2430
+ },
2431
+ {
2432
+ if: "etc1Supported",
2433
+ basisFormat: [i.ETC1S, i.UASTC_4x4],
2434
+ transcoderFormat: [t.ETC1],
2435
+ engineFormat: [s.RGB_ETC1_Format],
2436
+ priorityETC1S: 2,
2437
+ priorityUASTC: 4,
2438
+ needsPowerOfTwo: !1
2439
+ },
2440
+ {
2441
+ if: "pvrtcSupported",
2442
+ basisFormat: [i.ETC1S, i.UASTC_4x4],
2443
+ transcoderFormat: [t.PVRTC1_4_RGB, t.PVRTC1_4_RGBA],
2444
+ engineFormat: [s.RGB_PVRTC_4BPPV1_Format, s.RGBA_PVRTC_4BPPV1_Format],
2445
+ priorityETC1S: 5,
2446
+ priorityUASTC: 6,
2447
+ needsPowerOfTwo: !0
2448
+ }
2449
+ ], C = B.sort(function(l, h) {
2450
+ return l.priorityETC1S - h.priorityETC1S;
2451
+ }), I = B.sort(function(l, h) {
2452
+ return l.priorityUASTC - h.priorityUASTC;
2453
+ });
2454
+ function r(l, h, E, d) {
2455
+ let f, D;
2456
+ const F = l === i.ETC1S ? C : I;
2457
+ for (let p = 0; p < F.length; p++) {
2458
+ const m = F[p];
2459
+ if (a[m.if] && m.basisFormat.includes(l) && !(d && m.transcoderFormat.length < 2) && !(m.needsPowerOfTwo && !(c(h) && c(E))))
2460
+ return f = m.transcoderFormat[d ? 1 : 0], D = m.engineFormat[d ? 1 : 0], { transcoderFormat: f, engineFormat: D };
2461
+ }
2462
+ return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."), f = t.RGBA32, D = s.RGBAFormat, { transcoderFormat: f, engineFormat: D };
2463
+ }
2464
+ function c(l) {
2465
+ return l <= 2 ? !0 : (l & l - 1) === 0 && l !== 0;
2466
+ }
2467
+ function Q(l) {
2468
+ if (l.length === 1)
2469
+ return l[0];
2470
+ let h = 0;
2471
+ for (let f = 0; f < l.length; f++) {
2472
+ const D = l[f];
2473
+ h += D.byteLength;
2474
+ }
2475
+ const E = new Uint8Array(h);
2476
+ let d = 0;
2477
+ for (let f = 0; f < l.length; f++) {
2478
+ const D = l[f];
2479
+ E.set(D, d), d += D.byteLength;
2480
+ }
2481
+ return E;
2482
+ }
2483
+ };
2484
+ const dn = /* @__PURE__ */ new Set([RA, XA, vA]), je = {
2485
+ [rs]: RA,
2486
+ [ns]: RA,
2487
+ [es]: RA,
2488
+ [ts]: RA,
2489
+ [Bs]: XA,
2490
+ [is]: XA,
2491
+ [$t]: XA,
2492
+ [As]: XA,
2493
+ [os]: vA,
2494
+ [ss]: vA,
2495
+ [zt]: vA,
2496
+ [Zt]: vA,
2497
+ [as]: Gt,
2498
+ [Cs]: Gt
2499
+ }, Ze = {
2500
+ [rs]: ye,
2501
+ [ns]: Je,
2502
+ [es]: b,
2503
+ [ts]: b,
2504
+ [Bs]: ye,
2505
+ [is]: Je,
2506
+ [$t]: b,
2507
+ [As]: b,
2508
+ [os]: ye,
2509
+ [ss]: Je,
2510
+ [zt]: b,
2511
+ [Zt]: b,
2512
+ [as]: b,
2513
+ [Cs]: b
2514
+ };
2515
+ function un(a) {
2516
+ return Me(this, null, function* () {
2517
+ const { vkFormat: A } = a;
2518
+ if (je[A] === void 0)
2519
+ throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");
2520
+ let e;
2521
+ a.supercompressionScheme === yt && (Ve || (Ve = new Promise((i) => Me(this, null, function* () {
2522
+ const n = new ln();
2523
+ yield n.init(), i(n);
2524
+ }))), e = yield Ve);
2525
+ const s = [];
2526
+ for (let i = 0; i < a.levels.length; i++) {
2527
+ const n = Math.max(1, a.pixelWidth >> i), o = Math.max(1, a.pixelHeight >> i), B = a.pixelDepth ? Math.max(1, a.pixelDepth >> i) : 0, C = a.levels[i];
2528
+ let I;
2529
+ if (a.supercompressionScheme === Cn)
2530
+ I = C.levelData;
2531
+ else if (a.supercompressionScheme === yt)
2532
+ I = e.decode(C.levelData, C.uncompressedByteLength);
2533
+ else
2534
+ throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");
2535
+ let r;
2536
+ Ze[A] === ye ? r = new Float32Array(
2537
+ I.buffer,
2538
+ I.byteOffset,
2539
+ I.byteLength / Float32Array.BYTES_PER_ELEMENT
2540
+ ) : Ze[A] === Je ? r = new Uint16Array(
2541
+ I.buffer,
2542
+ I.byteOffset,
2543
+ I.byteLength / Uint16Array.BYTES_PER_ELEMENT
2544
+ ) : r = I, s.push({
2545
+ data: r,
2546
+ width: n,
2547
+ height: o,
2548
+ depth: B
2549
+ });
2550
+ }
2551
+ let t;
2552
+ if (dn.has(je[A]))
2553
+ t = a.pixelDepth === 0 ? new ci(s[0].data, a.pixelWidth, a.pixelHeight) : new Qi(s[0].data, a.pixelWidth, a.pixelHeight, a.pixelDepth);
2554
+ else {
2555
+ if (a.pixelDepth > 0)
2556
+ throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");
2557
+ t = new Xt(s, a.pixelWidth, a.pixelHeight);
2558
+ }
2559
+ return t.mipmaps = s, t.type = Ze[A], t.format = je[A], t.colorSpace = Is(a), t.needsUpdate = !0, Promise.resolve(t);
2560
+ });
2561
+ }
2562
+ function Is(a) {
2563
+ const A = a.dataFormatDescriptor[0];
2564
+ return A.colorPrimaries === gn ? A.transferFunction === Jt ? $ : O : A.colorPrimaries === En ? A.transferFunction === Jt ? hi : li : A.colorPrimaries === In ? Ft : (console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${A.colorPrimaries}"`), Ft);
2565
+ }
2566
+ let Le;
2567
+ const fn = () => {
2568
+ if (Le)
2569
+ return Le;
2570
+ const a = "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", A = "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", e = new Uint8Array([
2571
+ 0,
2572
+ 97,
2573
+ 115,
2574
+ 109,
2575
+ 1,
2576
+ 0,
2577
+ 0,
2578
+ 0,
2579
+ 1,
2580
+ 4,
2581
+ 1,
2582
+ 96,
2583
+ 0,
2584
+ 0,
2585
+ 3,
2586
+ 3,
2587
+ 2,
2588
+ 0,
2589
+ 0,
2590
+ 5,
2591
+ 3,
2592
+ 1,
2593
+ 0,
2594
+ 1,
2595
+ 12,
2596
+ 1,
2597
+ 0,
2598
+ 10,
2599
+ 22,
2600
+ 2,
2601
+ 12,
2602
+ 0,
2603
+ 65,
2604
+ 0,
2605
+ 65,
2606
+ 0,
2607
+ 65,
2608
+ 0,
2609
+ 252,
2610
+ 10,
2611
+ 0,
2612
+ 0,
2613
+ 11,
2614
+ 7,
2615
+ 0,
2616
+ 65,
2617
+ 0,
2618
+ 253,
2619
+ 15,
2620
+ 26,
2621
+ 11
2622
+ ]), s = new Uint8Array([
2623
+ 32,
2624
+ 0,
2625
+ 65,
2626
+ 253,
2627
+ 3,
2628
+ 1,
2629
+ 2,
2630
+ 34,
2631
+ 4,
2632
+ 106,
2633
+ 6,
2634
+ 5,
2635
+ 11,
2636
+ 8,
2637
+ 7,
2638
+ 20,
2639
+ 13,
2640
+ 33,
2641
+ 12,
2642
+ 16,
2643
+ 128,
2644
+ 9,
2645
+ 116,
2646
+ 64,
2647
+ 19,
2648
+ 113,
2649
+ 127,
2650
+ 15,
2651
+ 10,
2652
+ 21,
2653
+ 22,
2654
+ 14,
2655
+ 255,
2656
+ 66,
2657
+ 24,
2658
+ 54,
2659
+ 136,
2660
+ 107,
2661
+ 18,
2662
+ 23,
2663
+ 192,
2664
+ 26,
2665
+ 114,
2666
+ 118,
2667
+ 132,
2668
+ 17,
2669
+ 77,
2670
+ 101,
2671
+ 130,
2672
+ 144,
2673
+ 27,
2674
+ 87,
2675
+ 131,
2676
+ 44,
2677
+ 45,
2678
+ 74,
2679
+ 156,
2680
+ 154,
2681
+ 70,
2682
+ 167
2683
+ ]);
2684
+ if (typeof WebAssembly != "object")
2685
+ return {
2686
+ supported: !1
2687
+ };
2688
+ let t = a;
2689
+ WebAssembly.validate(e) && (t = A);
2690
+ let i;
2691
+ const n = WebAssembly.instantiate(o(t), {}).then((r) => {
2692
+ i = r.instance, i.exports.__wasm_call_ctors();
2693
+ });
2694
+ function o(r) {
2695
+ const c = new Uint8Array(r.length);
2696
+ for (let l = 0; l < r.length; ++l) {
2697
+ const h = r.charCodeAt(l);
2698
+ c[l] = h > 96 ? h - 71 : h > 64 ? h - 65 : h > 47 ? h + 4 : h > 46 ? 63 : 62;
2699
+ }
2700
+ let Q = 0;
2701
+ for (let l = 0; l < r.length; ++l)
2702
+ c[Q++] = c[l] < 60 ? s[c[l]] : (c[l] - 60) * 64 + c[++l];
2703
+ return c.buffer.slice(0, Q);
2704
+ }
2705
+ function B(r, c, Q, l, h, E) {
2706
+ const d = i.exports.sbrk, f = Q + 3 & -4, D = d(f * l), F = d(h.length), p = new Uint8Array(i.exports.memory.buffer);
2707
+ p.set(h, F);
2708
+ const m = r(D, Q, l, F, h.length);
2709
+ if (m === 0 && E && E(D, f, l), c.set(p.subarray(D, D + Q * l)), d(D - d(0)), m !== 0)
2710
+ throw new Error(`Malformed buffer data: ${m}`);
2711
+ }
2712
+ const C = {
2713
+ // legacy index-based enums for glTF
2714
+ 0: "",
2715
+ 1: "meshopt_decodeFilterOct",
2716
+ 2: "meshopt_decodeFilterQuat",
2717
+ 3: "meshopt_decodeFilterExp",
2718
+ // string-based enums for glTF
2719
+ NONE: "",
2720
+ OCTAHEDRAL: "meshopt_decodeFilterOct",
2721
+ QUATERNION: "meshopt_decodeFilterQuat",
2722
+ EXPONENTIAL: "meshopt_decodeFilterExp"
2723
+ }, I = {
2724
+ // legacy index-based enums for glTF
2725
+ 0: "meshopt_decodeVertexBuffer",
2726
+ 1: "meshopt_decodeIndexBuffer",
2727
+ 2: "meshopt_decodeIndexSequence",
2728
+ // string-based enums for glTF
2729
+ ATTRIBUTES: "meshopt_decodeVertexBuffer",
2730
+ TRIANGLES: "meshopt_decodeIndexBuffer",
2731
+ INDICES: "meshopt_decodeIndexSequence"
2732
+ };
2733
+ return Le = {
2734
+ ready: n,
2735
+ supported: !0,
2736
+ decodeVertexBuffer(r, c, Q, l, h) {
2737
+ B(
2738
+ i.exports.meshopt_decodeVertexBuffer,
2739
+ r,
2740
+ c,
2741
+ Q,
2742
+ l,
2743
+ i.exports[C[h]]
2744
+ );
2745
+ },
2746
+ decodeIndexBuffer(r, c, Q, l) {
2747
+ B(i.exports.meshopt_decodeIndexBuffer, r, c, Q, l);
2748
+ },
2749
+ decodeIndexSequence(r, c, Q, l) {
2750
+ B(i.exports.meshopt_decodeIndexSequence, r, c, Q, l);
2751
+ },
2752
+ decodeGltfBuffer(r, c, Q, l, h, E) {
2753
+ B(
2754
+ i.exports[I[h]],
2755
+ r,
2756
+ c,
2757
+ Q,
2758
+ l,
2759
+ i.exports[C[E]]
2760
+ );
2761
+ }
2762
+ }, Le;
2763
+ };
2764
+ var LA, te, se, ie;
2765
+ class Dn {
2766
+ constructor() {
2767
+ u(this, LA, new pi());
2768
+ u(this, te, new on().setDecoderPath(
2769
+ `${w.CDNVersion}/examples/jsm/libs/draco/gltf/`
2770
+ ));
2771
+ u(this, se, new v().setTranscoderPath(
2772
+ `${w.CDNVersion}/examples/jsm/libs/basis/`
2773
+ ));
2774
+ u(this, ie, !1);
2775
+ g(this, LA).setCrossOrigin("anonymous").setDRACOLoader(g(this, te)).setMeshoptDecoder(fn);
2776
+ }
2777
+ get gltfLoader() {
2778
+ return g(this, LA);
2779
+ }
2780
+ get dracoLoader() {
2781
+ return g(this, te);
2782
+ }
2783
+ get ktx2Loader() {
2784
+ return g(this, se);
2785
+ }
2786
+ load(...A) {
2787
+ g(this, ie) || (g(this, LA).setKTX2Loader(g(this, se).detectSupport(w.webglRenderer)), G(this, ie, !0)), this.gltfLoader.load(...A);
2788
+ }
2789
+ }
2790
+ LA = new WeakMap(), te = new WeakMap(), se = new WeakMap(), ie = new WeakMap();
2791
+ const Fn = new Dn();
2792
+ var J, z, ne;
2793
+ class jn {
2794
+ constructor(A) {
2795
+ u(this, J, null);
2796
+ u(this, z, []);
2797
+ u(this, ne, () => {
2798
+ const A = g(this, J).position.x - g(this, J).left, e = g(this, J).position.y - g(this, J).top;
2799
+ g(this, z)[0].constant = g(this, J).scale.y / 2 + e * -1, g(this, z)[1].constant = g(this, J).scale.y / 2 + e, g(this, z)[2].constant = g(this, J).scale.x / 2 + A, g(this, z)[3].constant = g(this, J).scale.x / 2 + A * -1;
2800
+ });
2801
+ G(this, J, new Kt(A, { cartesian: !1 })), G(this, z, [
2802
+ new we(new K(0, -1, 0)),
2803
+ new we(new K(0, 1, 0)),
2804
+ new we(new K(-1, 0, 0)),
2805
+ new we(new K(1, 0, 0))
2806
+ ]), KA.subscribe(g(this, ne), { order: Bt.LAYOUT_BOX });
2807
+ }
2808
+ get planes() {
2809
+ return g(this, z);
2810
+ }
2811
+ get layoutBox() {
2812
+ return g(this, J);
2813
+ }
2814
+ destroy() {
2815
+ KA.unsubscribe(g(this, ne)), g(this, J).destroy();
2816
+ }
2817
+ }
2818
+ J = new WeakMap(), z = new WeakMap(), ne = new WeakMap();
2819
+ class Zn extends jA {
2820
+ constructor(A, e = 500) {
2821
+ super(), this.add(new Se(A.planes[0], e, 16711680)), this.add(new Se(A.planes[1], e, 16711680)), this.add(new Se(A.planes[2], e, 16711680)), this.add(new Se(A.planes[3], e, 16711680));
2822
+ }
2823
+ }
2824
+ var yA, uA, JA, oe, Be, BA, HA, re;
2825
+ class gs extends Fi {
2826
+ constructor(e) {
2827
+ super(e);
2828
+ u(this, yA, new pt(null));
2829
+ u(this, uA, new pt(void 0));
2830
+ u(this, JA, void 0);
2831
+ u(this, oe, void 0);
2832
+ u(this, Be, void 0);
2833
+ u(this, BA, void 0);
2834
+ u(this, HA, !1);
2835
+ u(this, re, () => {
2836
+ if (!(g(this, BA) && !g(this, HA)) && (this.current !== this.previous && (g(this, yA).current = null), this.current)) {
2837
+ const e = g(this, Be) ? this.current.url : this.current.name + this.current.extension;
2838
+ g(this, BA) || be.setTotal(e, 1), g(this, uA).current = "start", g(this, oe).load(
2839
+ e,
2840
+ (s) => {
2841
+ g(this, yA).current = s, g(this, uA).current = "complete", g(this, BA) || be.setLoaded(e, 1);
2842
+ },
2843
+ void 0,
2844
+ () => {
2845
+ g(this, BA) || (g(this, uA).current = "error", be.setError(e, e));
2846
+ }
2847
+ );
2848
+ }
2849
+ });
2850
+ G(this, JA, e.consumer), G(this, oe, e.loader), G(this, Be, e.keepSourceParameters || !1), G(this, BA, e.lazy || !1), this.subscribe(g(this, re)), g(this, JA).addEventListener("added", () => {
2851
+ this.connect();
2852
+ }), g(this, JA).addEventListener("removed", () => {
2853
+ this.disconnect();
2854
+ });
2855
+ }
2856
+ /**
2857
+ * Resource store.
2858
+ */
2859
+ get data() {
2860
+ return g(this, yA);
2861
+ }
2862
+ /**
2863
+ * Loading store.
2864
+ */
2865
+ get loading() {
2866
+ return g(this, uA);
2867
+ }
2868
+ /**
2869
+ * Calling this method will start loading the resource.
2870
+ */
2871
+ lazyLoad() {
2872
+ g(this, HA) || (G(this, HA, !0), g(this, re).call(this));
2873
+ }
2874
+ }
2875
+ yA = new WeakMap(), uA = new WeakMap(), JA = new WeakMap(), oe = new WeakMap(), Be = new WeakMap(), BA = new WeakMap(), HA = new WeakMap(), re = new WeakMap();
2876
+ var TA;
2877
+ class zn extends jA {
2878
+ constructor(e) {
2879
+ super();
2880
+ u(this, TA, void 0);
2881
+ G(this, TA, new gs(tA({
2882
+ loader: Fn,
2883
+ consumer: this
2884
+ }, e))), g(this, TA).data.subscribe((s) => {
2885
+ s.current ? this.add(...s.current.scene.children) : this.children.forEach((t) => {
2886
+ this.remove(t), vt(t);
2887
+ });
2888
+ });
2889
+ }
2890
+ get sourceManager() {
2891
+ return g(this, TA);
2892
+ }
2893
+ }
2894
+ TA = new WeakMap();
2895
+ function Es(a, A, e) {
2896
+ const s = A.x, t = A.y, i = e || a.image.width / a.image.height;
2897
+ let n = 0, o = 0, B = a.offset.x, C = a.offset.y, I = a.rotation, r = a.center.x, c = a.center.y;
2898
+ s / t > i ? (n = 1, o = t / s * i) : (o = 1, n = s / t / i), a.matrix.setUvTransform(B, C, n, o, I, r, c);
2899
+ }
2900
+ var rA, UA, fA;
2901
+ class cs extends Fe {
2902
+ constructor(e) {
2903
+ super(
2904
+ new di(
2905
+ e.width,
2906
+ e.height,
2907
+ e.widthSegments,
2908
+ e.heightSegments
2909
+ ),
2910
+ e.material
2911
+ );
2912
+ u(this, rA, void 0);
2913
+ u(this, UA, void 0);
2914
+ u(this, fA, () => {
2915
+ g(this, rA).data.current && g(this, UA) && this.onCoverResize(g(this, rA).data.current);
2916
+ });
2917
+ G(this, rA, new gs(tA({
2918
+ consumer: this
2919
+ }, e))), G(this, UA, e.cover || !1), this.addEventListener("added", () => {
2920
+ kA.subscribe(g(this, fA));
2921
+ }), this.addEventListener("removed", () => {
2922
+ kA.unsubscribe(g(this, fA));
2923
+ }), g(this, rA).data.subscribe((s) => {
2924
+ !s.current && s.previous ? s.previous.dispose() : s.current && this.material && (g(this, UA) && (s.current.matrixAutoUpdate = !1), s.current.colorSpace = $, s.current.center.set(0.5, 0.5), this.material.map = s.current, this.material.needsUpdate = !0, g(this, fA).call(this));
2925
+ });
2926
+ }
2927
+ get sourceManager() {
2928
+ return g(this, rA);
2929
+ }
2930
+ updateTexture() {
2931
+ g(this, fA).call(this);
2932
+ }
2933
+ onCoverResize(e) {
2934
+ Es(e, {
2935
+ x: this.scale.x,
2936
+ y: this.scale.y
2937
+ });
2938
+ }
2939
+ }
2940
+ rA = new WeakMap(), UA = new WeakMap(), fA = new WeakMap();
2941
+ const Gn = new _t();
2942
+ class $n extends cs {
2943
+ constructor(A) {
2944
+ super(me(tA({}, A), {
2945
+ loader: Gn
2946
+ }));
2947
+ }
2948
+ }
2949
+ class Rn {
2950
+ load(...A) {
2951
+ const e = A[0], s = A[1], t = A[3], i = document.createElement("video");
2952
+ i.src = e, i.onloadeddata = () => {
2953
+ s(new ui(i)), i.onerror = null, i.onloadeddata = null;
2954
+ }, i.onerror = () => {
2955
+ t == null || t(e), i.onerror = null, i.onloadeddata = null;
2956
+ };
2957
+ }
2958
+ }
2959
+ var Ce, ae, Ie;
2960
+ class Ao extends cs {
2961
+ constructor(e) {
2962
+ super(me(tA({}, e), {
2963
+ loader: new Rn()
2964
+ }));
2965
+ u(this, Ce, void 0);
2966
+ u(this, ae, void 0);
2967
+ u(this, Ie, void 0);
2968
+ G(this, Ce, e.autoplay || !1), G(this, ae, e.muted || !1), G(this, Ie, e.loop || !1), this.sourceManager.data.subscribe((s) => {
2969
+ if (s.current) {
2970
+ const t = s.current.image;
2971
+ g(this, ae) && (t.muted = !0), g(this, Ie) && (t.loop = !0), g(this, Ce) && t.play();
2972
+ }
2973
+ });
2974
+ }
2975
+ onCoverResize(e) {
2976
+ const s = e.image;
2977
+ Es(
2978
+ e,
2979
+ {
2980
+ x: this.scale.x,
2981
+ y: this.scale.y
2982
+ },
2983
+ s.videoWidth / s.videoHeight
2984
+ );
2985
+ }
2986
+ }
2987
+ Ce = new WeakMap(), ae = new WeakMap(), Ie = new WeakMap();
2988
+ function eo(a, A) {
2989
+ a.traverse((e) => {
2990
+ e instanceof Fe && A(e);
2991
+ });
2992
+ }
2993
+ function to(a, A) {
2994
+ a.traverse((e) => {
2995
+ e instanceof Fe && e.material && (Array.isArray(e.material) ? e.material : [e.material]).forEach(A);
2996
+ });
2997
+ }
2998
+ const Ut = new K(), pn = new at(), Nt = new K();
2999
+ class mn extends It {
3000
+ constructor(A = document.createElement("div")) {
3001
+ super(), this.isCSS3DObject = !0, this.element = A, this.element.style.position = "absolute", this.element.style.pointerEvents = "auto", this.element.style.userSelect = "none", this.element.setAttribute("draggable", !1), this.addEventListener("removed", function() {
3002
+ this.traverse(function(e) {
3003
+ e.element instanceof Element && e.element.parentNode !== null && e.element.parentNode.removeChild(e.element);
3004
+ });
3005
+ });
3006
+ }
3007
+ copy(A, e) {
3008
+ return super.copy(A, e), this.element = A.element.cloneNode(!0), this;
3009
+ }
3010
+ }
3011
+ const P = new bA(), Mn = new bA();
3012
+ class wn {
3013
+ constructor(A = {}) {
3014
+ const e = this;
3015
+ let s, t, i, n;
3016
+ const o = {
3017
+ camera: { style: "" },
3018
+ objects: /* @__PURE__ */ new WeakMap()
3019
+ }, B = A.element !== void 0 ? A.element : document.createElement("div");
3020
+ B.style.overflow = "hidden", this.domElement = B;
3021
+ const C = document.createElement("div");
3022
+ C.style.transformOrigin = "0 0", C.style.pointerEvents = "none", B.appendChild(C);
3023
+ const I = document.createElement("div");
3024
+ I.style.transformStyle = "preserve-3d", C.appendChild(I), this.getSize = function() {
3025
+ return {
3026
+ width: s,
3027
+ height: t
3028
+ };
3029
+ }, this.render = function(h, E) {
3030
+ const d = E.projectionMatrix.elements[5] * n;
3031
+ E.view && E.view.enabled ? (C.style.transform = `translate( ${-E.view.offsetX * (s / E.view.width)}px, ${-E.view.offsetY * (t / E.view.height)}px )`, C.style.transform += `scale( ${E.view.fullWidth / E.view.width}, ${E.view.fullHeight / E.view.height} )`) : C.style.transform = "", h.matrixWorldAutoUpdate === !0 && h.updateMatrixWorld(), E.parent === null && E.matrixWorldAutoUpdate === !0 && E.updateMatrixWorld();
3032
+ let f, D;
3033
+ E.isOrthographicCamera && (f = -(E.right + E.left) / 2, D = (E.top + E.bottom) / 2);
3034
+ const F = E.view && E.view.enabled ? E.view.height / E.view.fullHeight : 1, p = E.isOrthographicCamera ? `scale( ${F} )scale(` + d + ")translate(" + r(f) + "px," + r(D) + "px)" + c(E.matrixWorldInverse) : `scale( ${F} )translateZ(` + d + "px)" + c(E.matrixWorldInverse), M = (E.isPerspectiveCamera ? "perspective(" + d + "px) " : "") + p + "translate(" + i + "px," + n + "px)";
3035
+ o.camera.style !== M && (I.style.transform = M, o.camera.style = M), l(h, h, E);
3036
+ }, this.setSize = function(h, E) {
3037
+ s = h, t = E, i = s / 2, n = t / 2, B.style.width = h + "px", B.style.height = E + "px", C.style.width = h + "px", C.style.height = E + "px", I.style.width = h + "px", I.style.height = E + "px";
3038
+ };
3039
+ function r(h) {
3040
+ return Math.abs(h) < 1e-10 ? 0 : h;
3041
+ }
3042
+ function c(h) {
3043
+ const E = h.elements;
3044
+ return "matrix3d(" + r(E[0]) + "," + r(-E[1]) + "," + r(E[2]) + "," + r(E[3]) + "," + r(E[4]) + "," + r(-E[5]) + "," + r(E[6]) + "," + r(E[7]) + "," + r(E[8]) + "," + r(-E[9]) + "," + r(E[10]) + "," + r(E[11]) + "," + r(E[12]) + "," + r(-E[13]) + "," + r(E[14]) + "," + r(E[15]) + ")";
3045
+ }
3046
+ function Q(h) {
3047
+ const E = h.elements;
3048
+ return "translate(-50%,-50%)" + ("matrix3d(" + r(E[0]) + "," + r(E[1]) + "," + r(E[2]) + "," + r(E[3]) + "," + r(-E[4]) + "," + r(-E[5]) + "," + r(-E[6]) + "," + r(-E[7]) + "," + r(E[8]) + "," + r(E[9]) + "," + r(E[10]) + "," + r(E[11]) + "," + r(E[12]) + "," + r(E[13]) + "," + r(E[14]) + "," + r(E[15]) + ")");
3049
+ }
3050
+ function l(h, E, d, f) {
3051
+ if (h.isCSS3DObject) {
3052
+ const D = h.visible === !0 && h.layers.test(d.layers) === !0;
3053
+ if (h.element.style.display = D === !0 ? "" : "none", D === !0) {
3054
+ h.onBeforeRender(e, E, d);
3055
+ let F;
3056
+ h.isCSS3DSprite ? (P.copy(d.matrixWorldInverse), P.transpose(), h.rotation2D !== 0 && P.multiply(Mn.makeRotationZ(h.rotation2D)), h.matrixWorld.decompose(Ut, pn, Nt), P.setPosition(Ut), P.scale(Nt), P.elements[3] = 0, P.elements[7] = 0, P.elements[11] = 0, P.elements[15] = 1, F = Q(P)) : F = Q(h.matrixWorld);
3057
+ const p = h.element, m = o.objects.get(h);
3058
+ if (m === void 0 || m.style !== F) {
3059
+ p.style.transform = F;
3060
+ const M = { style: F };
3061
+ o.objects.set(h, M);
3062
+ }
3063
+ p.parentNode !== I && I.appendChild(p), h.onAfterRender(e, E, d);
3064
+ }
3065
+ }
3066
+ for (let D = 0, F = h.children.length; D < F; D++)
3067
+ l(h.children[D], E, d);
3068
+ }
3069
+ }
3070
+ }
3071
+ var X, Ne, Qs, ge, Ee;
3072
+ const U = class U extends mn {
3073
+ static destroy() {
3074
+ kA.unsubscribe(g(this, Ee)), KA.unsubscribe(g(this, ge)), G(this, X, null);
3075
+ }
3076
+ constructor(A) {
3077
+ var e;
3078
+ super(A.element), g(U, X) || QA(e = U, Ne, Qs).call(e);
3079
+ }
3080
+ };
3081
+ X = new WeakMap(), Ne = new WeakSet(), Qs = function() {
3082
+ G(U, X, new wn()), g(U, X).domElement.style.cssText = `
3083
+ position: fixed;
3084
+ left: 0;
3085
+ top: 0;
3086
+ width: 100%;
3087
+ height: 100%;
3088
+ z-index: 1;
3089
+ pointer-events: none;
3090
+ overflow: hidden;
3091
+ `, w.containerElement.prepend(g(U, X).domElement), kA.subscribe(g(this, Ee), bt.EN3 + 1), KA.subscribe(g(this, ge), { order: Bt.EN3 + 1 });
3092
+ }, ge = new WeakMap(), Ee = new WeakMap(), u(U, Ne), u(U, X, null), u(U, ge, () => {
3093
+ g(U, X).render(w.scene, w.camera);
3094
+ }), u(U, Ee, () => {
3095
+ g(U, X).setSize(w.width, w.height);
3096
+ });
3097
+ let xt = U;
3098
+ var NA, ce, Qe, CA, he;
3099
+ class Sn {
3100
+ constructor(A) {
3101
+ u(this, NA, void 0);
3102
+ u(this, ce, void 0);
3103
+ u(this, Qe, void 0);
3104
+ u(this, CA, void 0);
3105
+ u(this, he, void 0);
3106
+ Qt(this, "intersection");
3107
+ G(this, NA, A.targetName || void 0), G(this, ce, A.eventDispatcher || A.object3D), G(this, Qe, A.propagation || !1), G(this, CA, A.object3D), G(this, he, g(this, NA) ? () => g(this, CA).getObjectByName(g(this, NA)) || g(this, CA) : () => g(this, CA));
3108
+ }
3109
+ get object3D() {
3110
+ return g(this, CA);
3111
+ }
3112
+ get eventDispatcher() {
3113
+ return g(this, ce);
3114
+ }
3115
+ get propagation() {
3116
+ return g(this, Qe);
3117
+ }
3118
+ get target() {
3119
+ return g(this, he).call(this);
3120
+ }
3121
+ dispatch(A, e) {
3122
+ this.eventDispatcher.dispatchEvent(tA({
3123
+ originalEvent: e,
3124
+ type: A
3125
+ }, this.intersection));
3126
+ }
3127
+ }
3128
+ NA = new WeakMap(), ce = new WeakMap(), Qe = new WeakMap(), CA = new WeakMap(), he = new WeakMap();
3129
+ var DA, aA, H, xA, le, de, ue, fe;
3130
+ const lA = class lA {
3131
+ constructor() {
3132
+ u(this, aA, []);
3133
+ u(this, H, []);
3134
+ u(this, xA, new Ct());
3135
+ u(this, le, new fi());
3136
+ u(this, de, (A) => {
3137
+ for (let e = 0; e < g(this, H).length; e++)
3138
+ g(this, H)[e].dispatch("en3-pointerdown", A);
3139
+ });
3140
+ u(this, ue, (A) => {
3141
+ for (let e = 0; e < g(this, H).length; e++)
3142
+ g(this, H)[e].dispatch("en3-pointerup", A);
3143
+ });
3144
+ u(this, fe, (A) => {
3145
+ g(this, xA).x = A.clientX / w.width * 2 - 1, g(this, xA).y = -(A.clientY / w.height) * 2 + 1, w.camera && g(this, le).setFromCamera(g(this, xA), w.camera);
3146
+ const e = [];
3147
+ for (const o of g(this, aA)) {
3148
+ const B = g(this, le).intersectObject(o.target);
3149
+ B.length && (o.intersection = B[0], e.push(o));
3150
+ }
3151
+ let s = !1;
3152
+ const t = g(this, H).filter(
3153
+ (o) => !e.find((B) => B.object3D.uuid === o.object3D.uuid)
3154
+ ), i = e.sort((o, B) => B.object3D.position.z - o.object3D.position.z).filter((o) => s ? !1 : (s = !o.propagation, !0)), n = i.filter(
3155
+ (o) => !g(this, H).find((B) => B.object3D.uuid === o.object3D.uuid)
3156
+ );
3157
+ for (let o = 0; o < t.length; o++)
3158
+ t[o].dispatch("en3-pointerleave", A);
3159
+ for (let o = 0; o < n.length; o++)
3160
+ n[o].dispatch("en3-pointerenter", A);
3161
+ G(this, H, i);
3162
+ for (let o = 0; o < g(this, H).length; o++)
3163
+ g(this, H)[o].dispatch("en3-pointermove", A);
3164
+ });
3165
+ if (g(lA, DA))
3166
+ return g(lA, DA);
3167
+ G(lA, DA, this), w.containerElement.addEventListener("pointerdown", g(this, de)), w.containerElement.addEventListener("pointerup", g(this, ue)), w.containerElement.addEventListener("pointermove", g(this, fe));
3168
+ }
3169
+ destroy() {
3170
+ w.containerElement.removeEventListener("pointerdown", g(this, de)), w.containerElement.removeEventListener("pointerup", g(this, ue)), w.containerElement.removeEventListener("pointermove", g(this, fe)), G(lA, DA, void 0);
3171
+ }
3172
+ add(A, e) {
3173
+ if (g(this, aA).find((t) => t.object3D.uuid === A.uuid))
3174
+ return;
3175
+ const s = new Sn(tA({
3176
+ object3D: A
3177
+ }, e));
3178
+ g(this, aA).push(s);
3179
+ }
3180
+ remove(A) {
3181
+ G(this, aA, g(this, aA).filter((e) => e.object3D.uuid !== A.uuid)), G(this, H, g(this, H).filter((e) => e.object3D.uuid !== A.uuid));
3182
+ }
3183
+ };
3184
+ DA = new WeakMap(), aA = new WeakMap(), H = new WeakMap(), xA = new WeakMap(), le = new WeakMap(), de = new WeakMap(), ue = new WeakMap(), fe = new WeakMap(), u(lA, DA, void 0);
3185
+ let kt = lA;
3186
+ var IA, gA, De, ot;
3187
+ class so {
3188
+ constructor(A) {
3189
+ u(this, De);
3190
+ u(this, IA, void 0);
3191
+ u(this, gA, void 0);
3192
+ G(this, IA, A.material), G(this, gA, A.uniforms || {}), g(this, IA).userData.uniforms = g(this, gA);
3193
+ let e;
3194
+ const s = () => {
3195
+ e == null || e();
3196
+ };
3197
+ g(this, IA).addEventListener("dispose", s), g(this, IA).onBeforeCompile = (t) => {
3198
+ var i;
3199
+ e == null || e();
3200
+ for (const n in g(this, gA))
3201
+ t.uniforms[n] = g(this, gA)[n];
3202
+ A.vertextDeclarations && (t.vertexShader = `
3203
+ ${A.vertextDeclarations}
3204
+ ${t.vertexShader}
3205
+ `), A.fragmentDeclarations && (t.fragmentShader = `
3206
+ ${A.fragmentDeclarations}
3207
+ ${t.fragmentShader}
3208
+ `), QA(this, De, ot).call(this, t, "vertex", A), QA(this, De, ot).call(this, t, "fragment", A), e = (i = A.onReady) == null ? void 0 : i.call(A, this), A.log && (console.log("VERTEX SHADER: ", t.vertexShader), console.log("FRAGMENT SHADER: ", t.fragmentShader));
3209
+ };
3210
+ }
3211
+ get material() {
3212
+ return g(this, IA);
3213
+ }
3214
+ get uniforms() {
3215
+ return g(this, gA);
3216
+ }
3217
+ }
3218
+ IA = new WeakMap(), gA = new WeakMap(), De = new WeakSet(), ot = function(A, e, s) {
3219
+ const t = e === "vertex" ? "vertexChunk" : "fragmentChunk", i = e === "vertex" ? "vertexShader" : "fragmentShader";
3220
+ s[t] && (s[t].replace ? A[i] = A[i].replace(
3221
+ `#include <${s[t].replace}>`,
3222
+ s[t].content
3223
+ ) : s[t].update && (A[i] = A[i].replace(
3224
+ `#include <${s[t].update}>`,
3225
+ `
3226
+ #include <${s[t].update}>
3227
+ ${s[t].content}
3228
+ `
3229
+ )));
3230
+ };
3231
+ export {
3232
+ jn as En3Clip,
3233
+ Zn as En3ClipHelpers,
3234
+ zn as En3GLTF,
3235
+ xt as En3HTML,
3236
+ $n as En3Image,
3237
+ cs as En3ImageLike,
3238
+ so as En3ModifiedMaterial,
3239
+ kt as En3Raycaster,
3240
+ gs as En3SourceManager,
3241
+ Ao as En3Video,
3242
+ Es as coverTexture,
3243
+ vt as dispose,
3244
+ w as en3,
3245
+ Fn as en3GLTFLoader,
3246
+ Vn as en3LazyLoader,
3247
+ to as traverseMaterials,
3248
+ eo as traverseMeshes
3249
+ };