@loaders.gl/gltf 4.0.0-alpha.5 → 4.0.0-alpha.6

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 (292) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/dist.min.js +2037 -1013
  3. package/dist/es5/bundle.js +6 -0
  4. package/dist/es5/bundle.js.map +1 -0
  5. package/dist/es5/glb-loader.js +56 -0
  6. package/dist/es5/glb-loader.js.map +1 -0
  7. package/dist/es5/glb-writer.js +35 -0
  8. package/dist/es5/glb-writer.js.map +1 -0
  9. package/dist/es5/gltf-loader.js +81 -0
  10. package/dist/es5/gltf-loader.js.map +1 -0
  11. package/dist/es5/gltf-writer.js +35 -0
  12. package/dist/es5/gltf-writer.js.map +1 -0
  13. package/dist/es5/index.js +49 -0
  14. package/dist/es5/index.js.map +1 -0
  15. package/dist/es5/lib/api/gltf-extensions.js +109 -0
  16. package/dist/es5/lib/api/gltf-extensions.js.map +1 -0
  17. package/dist/es5/lib/api/gltf-scenegraph.js +578 -0
  18. package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -0
  19. package/dist/es5/lib/api/normalize-gltf-v1.js +331 -0
  20. package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -0
  21. package/dist/es5/lib/api/post-process-gltf.js +422 -0
  22. package/dist/es5/lib/api/post-process-gltf.js.map +1 -0
  23. package/dist/es5/lib/encoders/encode-glb.js +61 -0
  24. package/dist/es5/lib/encoders/encode-glb.js.map +1 -0
  25. package/dist/es5/lib/encoders/encode-gltf.js +21 -0
  26. package/dist/es5/lib/encoders/encode-gltf.js.map +1 -0
  27. package/dist/es5/lib/extensions/EXT_meshopt_compression.js +96 -0
  28. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  29. package/dist/es5/lib/extensions/EXT_texture_webp.js +44 -0
  30. package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -0
  31. package/dist/es5/lib/extensions/KHR_binary_gltf.js +40 -0
  32. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -0
  33. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +246 -0
  34. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  35. package/dist/es5/lib/extensions/KHR_texture_basisu.js +37 -0
  36. package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -0
  37. package/dist/es5/lib/extensions/KHR_texture_transform.js +229 -0
  38. package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -0
  39. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +103 -0
  40. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
  41. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +99 -0
  42. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  43. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +76 -0
  44. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  45. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +113 -0
  46. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  47. package/dist/es5/lib/gltf-utils/get-typed-array.js +23 -0
  48. package/dist/es5/lib/gltf-utils/get-typed-array.js.map +1 -0
  49. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +68 -0
  50. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  51. package/dist/es5/lib/gltf-utils/gltf-constants.js +48 -0
  52. package/dist/es5/lib/gltf-utils/gltf-constants.js.map +1 -0
  53. package/dist/es5/lib/gltf-utils/gltf-utils.js +62 -0
  54. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -0
  55. package/dist/es5/lib/gltf-utils/resolve-url.js +18 -0
  56. package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -0
  57. package/dist/es5/lib/parsers/parse-glb.js +120 -0
  58. package/dist/es5/lib/parsers/parse-glb.js.map +1 -0
  59. package/dist/es5/lib/parsers/parse-gltf.js +287 -0
  60. package/dist/es5/lib/parsers/parse-gltf.js.map +1 -0
  61. package/dist/es5/lib/types/glb-types.js +2 -0
  62. package/dist/es5/lib/types/glb-types.js.map +1 -0
  63. package/dist/es5/lib/types/gltf-json-schema.js +2 -0
  64. package/dist/es5/lib/types/gltf-json-schema.js.map +1 -0
  65. package/dist/es5/lib/types/gltf-postprocessed-schema.js +2 -0
  66. package/dist/es5/lib/types/gltf-postprocessed-schema.js.map +1 -0
  67. package/dist/es5/lib/types/gltf-types.js +2 -0
  68. package/dist/es5/lib/types/gltf-types.js.map +1 -0
  69. package/dist/es5/lib/utils/assert.js +12 -0
  70. package/dist/es5/lib/utils/assert.js.map +1 -0
  71. package/dist/es5/lib/utils/version.js +9 -0
  72. package/dist/es5/lib/utils/version.js.map +1 -0
  73. package/dist/es5/meshopt/meshopt-decoder.js +215 -0
  74. package/dist/es5/meshopt/meshopt-decoder.js.map +1 -0
  75. package/dist/es5/webp/webp.js +83 -0
  76. package/dist/es5/webp/webp.js.map +1 -0
  77. package/dist/esm/bundle.js +4 -0
  78. package/dist/esm/bundle.js.map +1 -0
  79. package/dist/esm/glb-loader.js +31 -0
  80. package/dist/esm/glb-loader.js.map +1 -0
  81. package/dist/esm/glb-writer.js +27 -0
  82. package/dist/esm/glb-writer.js.map +1 -0
  83. package/dist/esm/gltf-loader.js +51 -0
  84. package/dist/esm/gltf-loader.js.map +1 -0
  85. package/dist/esm/gltf-writer.js +28 -0
  86. package/dist/esm/gltf-writer.js.map +1 -0
  87. package/dist/esm/index.js +7 -0
  88. package/dist/esm/index.js.map +1 -0
  89. package/dist/esm/lib/api/gltf-extensions.js +35 -0
  90. package/dist/esm/lib/api/gltf-extensions.js.map +1 -0
  91. package/dist/esm/lib/api/gltf-scenegraph.js +441 -0
  92. package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -0
  93. package/dist/esm/lib/api/normalize-gltf-v1.js +204 -0
  94. package/dist/esm/lib/api/normalize-gltf-v1.js.map +1 -0
  95. package/dist/esm/lib/api/post-process-gltf.js +341 -0
  96. package/dist/esm/lib/api/post-process-gltf.js.map +1 -0
  97. package/dist/esm/lib/encoders/encode-glb.js +54 -0
  98. package/dist/esm/lib/encoders/encode-glb.js.map +1 -0
  99. package/dist/esm/lib/encoders/encode-gltf.js +14 -0
  100. package/dist/esm/lib/encoders/encode-gltf.js.map +1 -0
  101. package/dist/esm/lib/extensions/EXT_meshopt_compression.js +42 -0
  102. package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  103. package/dist/esm/lib/extensions/EXT_texture_webp.js +25 -0
  104. package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -0
  105. package/dist/esm/lib/extensions/KHR_binary_gltf.js +21 -0
  106. package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -0
  107. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +110 -0
  108. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  109. package/dist/esm/lib/extensions/KHR_texture_basisu.js +18 -0
  110. package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -0
  111. package/dist/esm/lib/extensions/KHR_texture_transform.js +181 -0
  112. package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -0
  113. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +77 -0
  114. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
  115. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +42 -0
  116. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  117. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +33 -0
  118. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  119. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +61 -0
  120. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  121. package/dist/esm/lib/gltf-utils/get-typed-array.js +16 -0
  122. package/dist/esm/lib/gltf-utils/get-typed-array.js.map +1 -0
  123. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js +62 -0
  124. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  125. package/dist/esm/lib/gltf-utils/gltf-constants.js +37 -0
  126. package/dist/esm/lib/gltf-utils/gltf-constants.js.map +1 -0
  127. package/dist/esm/lib/gltf-utils/gltf-utils.js +54 -0
  128. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -0
  129. package/dist/esm/lib/gltf-utils/resolve-url.js +12 -0
  130. package/dist/esm/lib/gltf-utils/resolve-url.js.map +1 -0
  131. package/dist/esm/lib/parsers/parse-glb.js +114 -0
  132. package/dist/esm/lib/parsers/parse-glb.js.map +1 -0
  133. package/dist/esm/lib/parsers/parse-gltf.js +156 -0
  134. package/dist/esm/lib/parsers/parse-gltf.js.map +1 -0
  135. package/dist/esm/lib/types/glb-types.js +2 -0
  136. package/dist/esm/lib/types/glb-types.js.map +1 -0
  137. package/dist/esm/lib/types/gltf-json-schema.js +2 -0
  138. package/dist/esm/lib/types/gltf-json-schema.js.map +1 -0
  139. package/dist/esm/lib/types/gltf-postprocessed-schema.js +2 -0
  140. package/dist/esm/lib/types/gltf-postprocessed-schema.js.map +1 -0
  141. package/dist/esm/lib/types/gltf-types.js +2 -0
  142. package/dist/esm/lib/types/gltf-types.js.map +1 -0
  143. package/dist/esm/lib/utils/assert.js +6 -0
  144. package/dist/esm/lib/utils/assert.js.map +1 -0
  145. package/dist/esm/lib/utils/version.js +2 -0
  146. package/dist/esm/lib/utils/version.js.map +1 -0
  147. package/dist/esm/meshopt/meshopt-decoder.js +91 -0
  148. package/dist/esm/meshopt/meshopt-decoder.js.map +1 -0
  149. package/dist/esm/meshopt/meshopt-encoder.ts.disabled +409 -0
  150. package/dist/esm/webp/webp.js +25 -0
  151. package/dist/esm/webp/webp.js.map +1 -0
  152. package/dist/glb-loader.d.ts +3 -2
  153. package/dist/glb-loader.d.ts.map +1 -1
  154. package/dist/glb-loader.js +33 -28
  155. package/dist/glb-writer.d.ts +7 -16
  156. package/dist/glb-writer.d.ts.map +1 -1
  157. package/dist/glb-writer.js +34 -26
  158. package/dist/gltf-loader.d.ts +3 -2
  159. package/dist/gltf-loader.d.ts.map +1 -1
  160. package/dist/gltf-loader.js +46 -43
  161. package/dist/gltf-writer.d.ts +2 -2
  162. package/dist/gltf-writer.d.ts.map +1 -1
  163. package/dist/gltf-writer.js +29 -26
  164. package/dist/index.d.ts +2 -1
  165. package/dist/index.d.ts.map +1 -1
  166. package/dist/index.js +21 -7
  167. package/dist/lib/api/gltf-extensions.d.ts +6 -1
  168. package/dist/lib/api/gltf-extensions.d.ts.map +1 -1
  169. package/dist/lib/api/gltf-extensions.js +79 -31
  170. package/dist/lib/api/gltf-scenegraph.d.ts +5 -11
  171. package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -1
  172. package/dist/lib/api/gltf-scenegraph.js +563 -512
  173. package/dist/lib/api/normalize-gltf-v1.d.ts.map +1 -1
  174. package/dist/lib/api/normalize-gltf-v1.js +278 -229
  175. package/dist/lib/api/post-process-gltf.js +324 -376
  176. package/dist/lib/encoders/encode-glb.d.ts +2 -1
  177. package/dist/lib/encoders/encode-glb.d.ts.map +1 -1
  178. package/dist/lib/encoders/encode-glb.js +56 -58
  179. package/dist/lib/encoders/encode-gltf.d.ts +18 -0
  180. package/dist/lib/encoders/encode-gltf.d.ts.map +1 -1
  181. package/dist/lib/encoders/encode-gltf.js +33 -12
  182. package/dist/lib/extensions/EXT_meshopt_compression.d.ts +0 -3
  183. package/dist/lib/extensions/EXT_meshopt_compression.d.ts.map +1 -1
  184. package/dist/lib/extensions/EXT_meshopt_compression.js +39 -50
  185. package/dist/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
  186. package/dist/lib/extensions/EXT_texture_webp.js +35 -28
  187. package/dist/lib/extensions/KHR_binary_gltf.js +39 -23
  188. package/dist/lib/extensions/KHR_draco_mesh_compression.js +126 -111
  189. package/dist/lib/extensions/KHR_texture_basisu.d.ts.map +1 -1
  190. package/dist/lib/extensions/KHR_texture_basisu.js +29 -19
  191. package/dist/lib/extensions/KHR_texture_transform.d.ts +13 -0
  192. package/dist/lib/extensions/KHR_texture_transform.d.ts.map +1 -0
  193. package/dist/lib/extensions/KHR_texture_transform.js +230 -0
  194. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts +6 -0
  195. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -0
  196. package/dist/lib/extensions/deprecated/EXT_feature_metadata.js +118 -0
  197. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js +57 -44
  198. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js +42 -32
  199. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts.map +1 -1
  200. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js +76 -62
  201. package/dist/lib/gltf-utils/get-typed-array.js +39 -14
  202. package/dist/lib/gltf-utils/gltf-attribute-utils.js +65 -65
  203. package/dist/lib/gltf-utils/gltf-constants.d.ts +17 -0
  204. package/dist/lib/gltf-utils/gltf-constants.d.ts.map +1 -1
  205. package/dist/lib/gltf-utils/gltf-constants.js +38 -32
  206. package/dist/lib/gltf-utils/gltf-utils.js +52 -45
  207. package/dist/lib/gltf-utils/resolve-url.js +17 -15
  208. package/dist/lib/parsers/parse-glb.d.ts +1 -1
  209. package/dist/lib/parsers/parse-glb.d.ts.map +1 -1
  210. package/dist/lib/parsers/parse-glb.js +120 -107
  211. package/dist/lib/parsers/parse-gltf.d.ts +2 -2
  212. package/dist/lib/parsers/parse-gltf.d.ts.map +1 -1
  213. package/dist/lib/parsers/parse-gltf.js +187 -154
  214. package/dist/lib/types/glb-types.d.ts +3 -3
  215. package/dist/lib/types/glb-types.d.ts.map +1 -1
  216. package/dist/lib/types/glb-types.js +2 -2
  217. package/dist/lib/types/gltf-json-schema.d.ts +396 -11
  218. package/dist/lib/types/gltf-json-schema.d.ts.map +1 -1
  219. package/dist/lib/types/gltf-json-schema.js +4 -2
  220. package/dist/lib/types/gltf-postprocessed-schema.d.ts +10 -10
  221. package/dist/lib/types/gltf-postprocessed-schema.d.ts.map +1 -1
  222. package/dist/lib/types/gltf-postprocessed-schema.js +4 -2
  223. package/dist/lib/types/gltf-types.d.ts +8 -5
  224. package/dist/lib/types/gltf-types.d.ts.map +1 -1
  225. package/dist/lib/types/gltf-types.js +3 -2
  226. package/dist/lib/utils/assert.js +11 -5
  227. package/dist/lib/utils/version.js +7 -2
  228. package/dist/meshopt/meshopt-decoder.js +97 -82
  229. package/dist/webp/webp.d.ts +1 -1
  230. package/dist/webp/webp.d.ts.map +1 -1
  231. package/dist/webp/webp.js +32 -23
  232. package/package.json +9 -8
  233. package/src/glb-loader.ts +1 -1
  234. package/src/glb-writer.ts +9 -3
  235. package/src/gltf-writer.ts +2 -2
  236. package/src/index.ts +10 -1
  237. package/src/lib/api/gltf-extensions.ts +13 -2
  238. package/src/lib/api/gltf-scenegraph.ts +21 -12
  239. package/src/lib/api/normalize-gltf-v1.ts +2 -1
  240. package/src/lib/encoders/encode-glb.ts +8 -1
  241. package/src/lib/encoders/encode-gltf.ts +18 -9
  242. package/src/lib/extensions/EXT_meshopt_compression.ts +12 -19
  243. package/src/lib/extensions/EXT_texture_webp.ts +3 -2
  244. package/src/lib/extensions/KHR_binary_gltf.ts +1 -1
  245. package/src/lib/extensions/KHR_draco_mesh_compression.ts +1 -1
  246. package/src/lib/extensions/KHR_texture_basisu.ts +1 -0
  247. package/src/lib/extensions/KHR_texture_transform.ts +305 -0
  248. package/src/lib/extensions/deprecated/EXT_feature_metadata.ts +163 -0
  249. package/src/lib/extensions/deprecated/KHR_materials_unlit.ts +3 -3
  250. package/src/lib/extensions/deprecated/KHR_techniques_webgl.ts +1 -0
  251. package/src/lib/gltf-utils/gltf-constants.ts +2 -2
  252. package/src/lib/parsers/parse-gltf.ts +10 -1
  253. package/src/lib/types/glb-types.ts +1 -1
  254. package/src/lib/types/gltf-json-schema.ts +434 -5
  255. package/src/lib/types/gltf-postprocessed-schema.ts +9 -9
  256. package/src/lib/types/gltf-types.ts +24 -3
  257. package/dist/bundle.js.map +0 -1
  258. package/dist/glb-loader.js.map +0 -1
  259. package/dist/glb-writer.js.map +0 -1
  260. package/dist/gltf-loader.js.map +0 -1
  261. package/dist/gltf-writer.js.map +0 -1
  262. package/dist/index.js.map +0 -1
  263. package/dist/lib/api/gltf-extensions.js.map +0 -1
  264. package/dist/lib/api/gltf-scenegraph.js.map +0 -1
  265. package/dist/lib/api/normalize-gltf-v1.js.map +0 -1
  266. package/dist/lib/api/post-process-gltf.js.map +0 -1
  267. package/dist/lib/encoders/encode-glb.js.map +0 -1
  268. package/dist/lib/encoders/encode-gltf.js.map +0 -1
  269. package/dist/lib/extensions/EXT_meshopt_compression.js.map +0 -1
  270. package/dist/lib/extensions/EXT_texture_webp.js.map +0 -1
  271. package/dist/lib/extensions/KHR_binary_gltf.js.map +0 -1
  272. package/dist/lib/extensions/KHR_draco_mesh_compression.js.map +0 -1
  273. package/dist/lib/extensions/KHR_texture_basisu.js.map +0 -1
  274. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js.map +0 -1
  275. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js.map +0 -1
  276. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js.map +0 -1
  277. package/dist/lib/gltf-utils/get-typed-array.js.map +0 -1
  278. package/dist/lib/gltf-utils/gltf-attribute-utils.js.map +0 -1
  279. package/dist/lib/gltf-utils/gltf-constants.js.map +0 -1
  280. package/dist/lib/gltf-utils/gltf-utils.js.map +0 -1
  281. package/dist/lib/gltf-utils/resolve-url.js.map +0 -1
  282. package/dist/lib/parsers/parse-glb.js.map +0 -1
  283. package/dist/lib/parsers/parse-gltf.js.map +0 -1
  284. package/dist/lib/types/glb-types.js.map +0 -1
  285. package/dist/lib/types/gltf-json-schema.js.map +0 -1
  286. package/dist/lib/types/gltf-postprocessed-schema.js.map +0 -1
  287. package/dist/lib/types/gltf-types.js.map +0 -1
  288. package/dist/lib/utils/assert.js.map +0 -1
  289. package/dist/lib/utils/version.js.map +0 -1
  290. package/dist/meshopt/meshopt-decoder.js.map +0 -1
  291. package/dist/webp/webp.js.map +0 -1
  292. /package/dist/{meshopt → es5/meshopt}/meshopt-encoder.ts.disabled +0 -0
package/dist/dist.min.js CHANGED
@@ -14,8 +14,8 @@
14
14
  };
15
15
  var __export = (target, all) => {
16
16
  __markAsModule(target);
17
- for (var name8 in all)
18
- __defProp(target, name8, { get: all[name8], enumerable: true });
17
+ for (var name10 in all)
18
+ __defProp(target, name10, { get: all[name10], enumerable: true });
19
19
  };
20
20
  var __reExport = (target, module, desc) => {
21
21
  if (module && typeof module === "object" || typeof module === "function") {
@@ -37,20 +37,43 @@
37
37
  }
38
38
  });
39
39
 
40
- // ../textures/src/lib/utils/version.ts
41
- var VERSION2;
42
- var init_version2 = __esm({
43
- "../textures/src/lib/utils/version.ts"() {
44
- VERSION2 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
40
+ // ../loader-utils/src/lib/env-utils/assert.ts
41
+ function assert(condition, message) {
42
+ if (!condition) {
43
+ throw new Error(message || "loader assertion failed.");
44
+ }
45
+ }
46
+ var init_assert = __esm({
47
+ "../loader-utils/src/lib/env-utils/assert.ts"() {
48
+ }
49
+ });
50
+
51
+ // ../loader-utils/src/lib/env-utils/globals.ts
52
+ var globals, self_, window_, global_, document_, isBrowser, matches, nodeVersion;
53
+ var init_globals = __esm({
54
+ "../loader-utils/src/lib/env-utils/globals.ts"() {
55
+ globals = {
56
+ self: typeof self !== "undefined" && self,
57
+ window: typeof window !== "undefined" && window,
58
+ global: typeof global !== "undefined" && global,
59
+ document: typeof document !== "undefined" && document
60
+ };
61
+ self_ = globals.self || globals.window || globals.global || {};
62
+ window_ = globals.window || globals.self || globals.global || {};
63
+ global_ = globals.global || globals.self || globals.window || {};
64
+ document_ = globals.document || {};
65
+ isBrowser = Boolean(typeof process !== "object" || String(process) !== "[object process]" || process.browser);
66
+ matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
67
+ nodeVersion = matches && parseFloat(matches[1]) || 0;
45
68
  }
46
69
  });
47
70
 
48
71
  // ../worker-utils/src/lib/env-utils/version.ts
49
- var DEFAULT_VERSION, VERSION3;
50
- var init_version3 = __esm({
72
+ var DEFAULT_VERSION, VERSION2;
73
+ var init_version2 = __esm({
51
74
  "../worker-utils/src/lib/env-utils/version.ts"() {
52
75
  DEFAULT_VERSION = "beta";
53
- VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : DEFAULT_VERSION;
76
+ VERSION2 = typeof __VERSION__ !== "undefined" ? __VERSION__ : DEFAULT_VERSION;
54
77
  if (typeof __VERSION__ === "undefined") {
55
78
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
56
79
  }
@@ -58,35 +81,35 @@
58
81
  });
59
82
 
60
83
  // ../worker-utils/src/lib/env-utils/assert.ts
61
- function assert(condition, message) {
84
+ function assert2(condition, message) {
62
85
  if (!condition) {
63
86
  throw new Error(message || "loaders.gl assertion failed.");
64
87
  }
65
88
  }
66
- var init_assert = __esm({
89
+ var init_assert2 = __esm({
67
90
  "../worker-utils/src/lib/env-utils/assert.ts"() {
68
91
  }
69
92
  });
70
93
 
71
94
  // ../worker-utils/src/lib/env-utils/globals.ts
72
- var globals, self_, window_, global_, document_, isBrowser, isWorker, isMobile, matches, nodeVersion;
73
- var init_globals = __esm({
95
+ var globals2, self_2, window_2, global_2, document_2, isBrowser2, isWorker, isMobile, matches2, nodeVersion2;
96
+ var init_globals2 = __esm({
74
97
  "../worker-utils/src/lib/env-utils/globals.ts"() {
75
- globals = {
98
+ globals2 = {
76
99
  self: typeof self !== "undefined" && self,
77
100
  window: typeof window !== "undefined" && window,
78
101
  global: typeof global !== "undefined" && global,
79
102
  document: typeof document !== "undefined" && document
80
103
  };
81
- self_ = globals.self || globals.window || globals.global || {};
82
- window_ = globals.window || globals.self || globals.global || {};
83
- global_ = globals.global || globals.self || globals.window || {};
84
- document_ = globals.document || {};
85
- isBrowser = typeof process !== "object" || String(process) !== "[object process]" || process.browser;
104
+ self_2 = globals2.self || globals2.window || globals2.global || {};
105
+ window_2 = globals2.window || globals2.self || globals2.global || {};
106
+ global_2 = globals2.global || globals2.self || globals2.window || {};
107
+ document_2 = globals2.document || {};
108
+ isBrowser2 = typeof process !== "object" || String(process) !== "[object process]" || process.browser;
86
109
  isWorker = typeof importScripts === "function";
87
110
  isMobile = typeof window !== "undefined" && typeof window.orientation !== "undefined";
88
- matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
89
- nodeVersion = matches && parseFloat(matches[1]) || 0;
111
+ matches2 = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
112
+ nodeVersion2 = matches2 && parseFloat(matches2[1]) || 0;
90
113
  }
91
114
  });
92
115
 
@@ -112,12 +135,12 @@
112
135
  if (modules[library]) {
113
136
  return modules[library];
114
137
  }
115
- if (!isBrowser) {
138
+ if (!isBrowser2) {
116
139
  return `modules/${moduleName}/dist/libs/${library}`;
117
140
  }
118
141
  if (options.CDN) {
119
- assert(options.CDN.startsWith("http"));
120
- return `${options.CDN}/${moduleName}@${VERSION4}/dist/libs/${library}`;
142
+ assert2(options.CDN.startsWith("http"));
143
+ return `${options.CDN}/${moduleName}@${VERSION3}/dist/libs/${library}`;
121
144
  }
122
145
  if (isWorker) {
123
146
  return `../src/libs/${library}`;
@@ -129,7 +152,7 @@
129
152
  const response2 = await fetch(libraryUrl);
130
153
  return await response2.arrayBuffer();
131
154
  }
132
- if (!isBrowser) {
155
+ if (!isBrowser2) {
133
156
  try {
134
157
  return node && node.requireFromFile && await node.requireFromFile(libraryUrl);
135
158
  } catch {
@@ -144,11 +167,11 @@
144
167
  return loadLibraryFromString(scriptSource, libraryUrl);
145
168
  }
146
169
  function loadLibraryFromString(scriptSource, id) {
147
- if (!isBrowser) {
170
+ if (!isBrowser2) {
148
171
  return node.requireFromString && node.requireFromString(scriptSource, id);
149
172
  }
150
173
  if (isWorker) {
151
- eval.call(global_, scriptSource);
174
+ eval.call(global_2, scriptSource);
152
175
  return null;
153
176
  }
154
177
  const script = document.createElement("script");
@@ -161,15 +184,15 @@
161
184
  document.body.appendChild(script);
162
185
  return null;
163
186
  }
164
- var node, LATEST, VERSION4, loadLibraryPromises;
187
+ var node, LATEST, VERSION3, loadLibraryPromises;
165
188
  var init_library_utils = __esm({
166
189
  "../worker-utils/src/lib/library-utils/library-utils.ts"() {
167
- init_globals();
190
+ init_globals2();
168
191
  node = __toModule(require_require_utils());
169
- init_assert();
170
- init_version3();
192
+ init_assert2();
193
+ init_version2();
171
194
  LATEST = "beta";
172
- VERSION4 = typeof VERSION3 !== "undefined" ? VERSION3 : LATEST;
195
+ VERSION3 = typeof VERSION2 !== "undefined" ? VERSION2 : LATEST;
173
196
  loadLibraryPromises = {};
174
197
  }
175
198
  });
@@ -177,10 +200,135 @@
177
200
  // ../worker-utils/src/index.ts
178
201
  var init_src = __esm({
179
202
  "../worker-utils/src/index.ts"() {
203
+ init_globals2();
180
204
  init_library_utils();
181
205
  }
182
206
  });
183
207
 
208
+ // ../loader-utils/src/lib/binary-utils/get-first-characters.ts
209
+ function getFirstCharacters(data, length = 5) {
210
+ if (typeof data === "string") {
211
+ return data.slice(0, length);
212
+ } else if (ArrayBuffer.isView(data)) {
213
+ return getMagicString(data.buffer, data.byteOffset, length);
214
+ } else if (data instanceof ArrayBuffer) {
215
+ const byteOffset = 0;
216
+ return getMagicString(data, byteOffset, length);
217
+ }
218
+ return "";
219
+ }
220
+ function getMagicString(arrayBuffer, byteOffset, length) {
221
+ if (arrayBuffer.byteLength <= byteOffset + length) {
222
+ return "";
223
+ }
224
+ const dataView = new DataView(arrayBuffer);
225
+ let magic = "";
226
+ for (let i2 = 0; i2 < length; i2++) {
227
+ magic += String.fromCharCode(dataView.getUint8(byteOffset + i2));
228
+ }
229
+ return magic;
230
+ }
231
+ var init_get_first_characters = __esm({
232
+ "../loader-utils/src/lib/binary-utils/get-first-characters.ts"() {
233
+ }
234
+ });
235
+
236
+ // ../loader-utils/src/lib/parser-utils/parse-json.ts
237
+ function parseJSON(string) {
238
+ try {
239
+ return JSON.parse(string);
240
+ } catch (_) {
241
+ throw new Error(`Failed to parse JSON from data starting with "${getFirstCharacters(string)}"`);
242
+ }
243
+ }
244
+ var init_parse_json = __esm({
245
+ "../loader-utils/src/lib/parser-utils/parse-json.ts"() {
246
+ init_get_first_characters();
247
+ }
248
+ });
249
+
250
+ // ../loader-utils/src/lib/binary-utils/array-buffer-utils.ts
251
+ function sliceArrayBuffer(arrayBuffer, byteOffset, byteLength) {
252
+ const subArray = byteLength !== void 0 ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength) : new Uint8Array(arrayBuffer).subarray(byteOffset);
253
+ const arrayCopy = new Uint8Array(subArray);
254
+ return arrayCopy.buffer;
255
+ }
256
+ var init_array_buffer_utils = __esm({
257
+ "../loader-utils/src/lib/binary-utils/array-buffer-utils.ts"() {
258
+ }
259
+ });
260
+
261
+ // ../loader-utils/src/lib/binary-utils/memory-copy-utils.ts
262
+ function padToNBytes(byteLength, padding) {
263
+ assert(byteLength >= 0);
264
+ assert(padding > 0);
265
+ return byteLength + (padding - 1) & ~(padding - 1);
266
+ }
267
+ function copyToArray(source, target, targetOffset) {
268
+ let sourceArray;
269
+ if (source instanceof ArrayBuffer) {
270
+ sourceArray = new Uint8Array(source);
271
+ } else {
272
+ const srcByteOffset = source.byteOffset;
273
+ const srcByteLength = source.byteLength;
274
+ sourceArray = new Uint8Array(source.buffer || source.arrayBuffer, srcByteOffset, srcByteLength);
275
+ }
276
+ target.set(sourceArray, targetOffset);
277
+ return targetOffset + padToNBytes(sourceArray.byteLength, 4);
278
+ }
279
+ var init_memory_copy_utils = __esm({
280
+ "../loader-utils/src/lib/binary-utils/memory-copy-utils.ts"() {
281
+ init_assert();
282
+ }
283
+ });
284
+
285
+ // ../loader-utils/src/lib/binary-utils/dataview-copy-utils.ts
286
+ function copyPaddedArrayBufferToDataView(dataView, byteOffset, sourceBuffer, padding) {
287
+ const paddedLength = padToNBytes(sourceBuffer.byteLength, padding);
288
+ const padLength = paddedLength - sourceBuffer.byteLength;
289
+ if (dataView) {
290
+ const targetArray = new Uint8Array(dataView.buffer, dataView.byteOffset + byteOffset, sourceBuffer.byteLength);
291
+ const sourceArray = new Uint8Array(sourceBuffer);
292
+ targetArray.set(sourceArray);
293
+ for (let i2 = 0; i2 < padLength; ++i2) {
294
+ dataView.setUint8(byteOffset + sourceBuffer.byteLength + i2, 32);
295
+ }
296
+ }
297
+ byteOffset += paddedLength;
298
+ return byteOffset;
299
+ }
300
+ function copyPaddedStringToDataView(dataView, byteOffset, string, padding) {
301
+ const textEncoder = new TextEncoder();
302
+ const stringBuffer = textEncoder.encode(string);
303
+ byteOffset = copyPaddedArrayBufferToDataView(dataView, byteOffset, stringBuffer, padding);
304
+ return byteOffset;
305
+ }
306
+ var init_dataview_copy_utils = __esm({
307
+ "../loader-utils/src/lib/binary-utils/dataview-copy-utils.ts"() {
308
+ init_memory_copy_utils();
309
+ }
310
+ });
311
+
312
+ // ../loader-utils/src/index.ts
313
+ var init_src2 = __esm({
314
+ "../loader-utils/src/index.ts"() {
315
+ init_assert();
316
+ init_globals();
317
+ init_parse_json();
318
+ init_array_buffer_utils();
319
+ init_memory_copy_utils();
320
+ init_dataview_copy_utils();
321
+ }
322
+ });
323
+
324
+ // ../textures/src/lib/utils/version.ts
325
+ var VERSION4;
326
+ var init_version3 = __esm({
327
+ "../textures/src/lib/utils/version.ts"() {
328
+ VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "beta";
329
+ }
330
+ });
331
+
184
332
  // ../textures/src/lib/parsers/basis-module-loader.ts
185
333
  async function loadBasisTrascoderModule(options) {
186
334
  const modules = options.modules || {};
@@ -513,6 +661,7 @@
513
661
  height,
514
662
  data: decodedData,
515
663
  compressed,
664
+ levelSize: decodedSize,
516
665
  hasAlpha: alphaFlag,
517
666
  format
518
667
  };
@@ -606,13 +755,14 @@
606
755
  var BasisWorkerLoader, BasisLoader;
607
756
  var init_basis_loader = __esm({
608
757
  "../textures/src/basis-loader.ts"() {
609
- init_version2();
758
+ init_src();
759
+ init_version3();
610
760
  init_parse_basis();
611
761
  BasisWorkerLoader = {
612
762
  name: "Basis",
613
- id: "basis",
763
+ id: isBrowser2 ? "basis" : "basis-nodejs",
614
764
  module: "textures",
615
- version: VERSION2,
765
+ version: VERSION4,
616
766
  worker: true,
617
767
  extensions: ["basis", "ktx2"],
618
768
  mimeTypes: ["application/octet-stream", "image/ktx2"],
@@ -634,185 +784,38 @@
634
784
  }
635
785
  });
636
786
 
637
- // ../loader-utils/src/lib/env-utils/assert.ts
638
- function assert2(condition, message) {
639
- if (!condition) {
640
- throw new Error(message || "loader assertion failed.");
641
- }
642
- }
643
- var init_assert2 = __esm({
644
- "../loader-utils/src/lib/env-utils/assert.ts"() {
645
- }
646
- });
647
-
648
- // ../loader-utils/src/lib/env-utils/globals.ts
649
- var globals2, self_2, window_2, global_2, document_2, isBrowser2, matches2, nodeVersion2;
650
- var init_globals2 = __esm({
651
- "../loader-utils/src/lib/env-utils/globals.ts"() {
652
- globals2 = {
653
- self: typeof self !== "undefined" && self,
654
- window: typeof window !== "undefined" && window,
655
- global: typeof global !== "undefined" && global,
656
- document: typeof document !== "undefined" && document
657
- };
658
- self_2 = globals2.self || globals2.window || globals2.global || {};
659
- window_2 = globals2.window || globals2.self || globals2.global || {};
660
- global_2 = globals2.global || globals2.self || globals2.window || {};
661
- document_2 = globals2.document || {};
662
- isBrowser2 = Boolean(typeof process !== "object" || String(process) !== "[object process]" || process.browser);
663
- matches2 = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
664
- nodeVersion2 = matches2 && parseFloat(matches2[1]) || 0;
787
+ // ../images/src/lib/utils/version.ts
788
+ var VERSION6;
789
+ var init_version4 = __esm({
790
+ "../images/src/lib/utils/version.ts"() {
791
+ VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
665
792
  }
666
793
  });
667
794
 
668
- // ../loader-utils/src/lib/binary-utils/get-first-characters.ts
669
- function getFirstCharacters(data, length = 5) {
670
- if (typeof data === "string") {
671
- return data.slice(0, length);
672
- } else if (ArrayBuffer.isView(data)) {
673
- return getMagicString(data.buffer, data.byteOffset, length);
674
- } else if (data instanceof ArrayBuffer) {
675
- const byteOffset = 0;
676
- return getMagicString(data, byteOffset, length);
795
+ // ../images/src/lib/category-api/image-type.ts
796
+ function isImageTypeSupported(type) {
797
+ switch (type) {
798
+ case "auto":
799
+ return IMAGE_BITMAP_SUPPORTED || IMAGE_SUPPORTED || DATA_SUPPORTED;
800
+ case "imagebitmap":
801
+ return IMAGE_BITMAP_SUPPORTED;
802
+ case "image":
803
+ return IMAGE_SUPPORTED;
804
+ case "data":
805
+ return DATA_SUPPORTED;
806
+ default:
807
+ throw new Error(`@loaders.gl/images: image ${type} not supported in this environment`);
677
808
  }
678
- return "";
679
809
  }
680
- function getMagicString(arrayBuffer, byteOffset, length) {
681
- if (arrayBuffer.byteLength <= byteOffset + length) {
682
- return "";
810
+ function getDefaultImageType() {
811
+ if (IMAGE_BITMAP_SUPPORTED) {
812
+ return "imagebitmap";
683
813
  }
684
- const dataView = new DataView(arrayBuffer);
685
- let magic = "";
686
- for (let i2 = 0; i2 < length; i2++) {
687
- magic += String.fromCharCode(dataView.getUint8(byteOffset + i2));
814
+ if (IMAGE_SUPPORTED) {
815
+ return "image";
688
816
  }
689
- return magic;
690
- }
691
- var init_get_first_characters = __esm({
692
- "../loader-utils/src/lib/binary-utils/get-first-characters.ts"() {
693
- }
694
- });
695
-
696
- // ../loader-utils/src/lib/parser-utils/parse-json.ts
697
- function parseJSON(string) {
698
- try {
699
- return JSON.parse(string);
700
- } catch (_) {
701
- throw new Error(`Failed to parse JSON from data starting with "${getFirstCharacters(string)}"`);
702
- }
703
- }
704
- var init_parse_json = __esm({
705
- "../loader-utils/src/lib/parser-utils/parse-json.ts"() {
706
- init_get_first_characters();
707
- }
708
- });
709
-
710
- // ../loader-utils/src/lib/binary-utils/array-buffer-utils.ts
711
- function sliceArrayBuffer(arrayBuffer, byteOffset, byteLength) {
712
- const subArray = byteLength !== void 0 ? new Uint8Array(arrayBuffer).subarray(byteOffset, byteOffset + byteLength) : new Uint8Array(arrayBuffer).subarray(byteOffset);
713
- const arrayCopy = new Uint8Array(subArray);
714
- return arrayCopy.buffer;
715
- }
716
- var init_array_buffer_utils = __esm({
717
- "../loader-utils/src/lib/binary-utils/array-buffer-utils.ts"() {
718
- }
719
- });
720
-
721
- // ../loader-utils/src/lib/binary-utils/memory-copy-utils.ts
722
- function padToNBytes(byteLength, padding) {
723
- assert2(byteLength >= 0);
724
- assert2(padding > 0);
725
- return byteLength + (padding - 1) & ~(padding - 1);
726
- }
727
- function copyToArray(source, target, targetOffset) {
728
- let sourceArray;
729
- if (source instanceof ArrayBuffer) {
730
- sourceArray = new Uint8Array(source);
731
- } else {
732
- const srcByteOffset = source.byteOffset;
733
- const srcByteLength = source.byteLength;
734
- sourceArray = new Uint8Array(source.buffer || source.arrayBuffer, srcByteOffset, srcByteLength);
735
- }
736
- target.set(sourceArray, targetOffset);
737
- return targetOffset + padToNBytes(sourceArray.byteLength, 4);
738
- }
739
- var init_memory_copy_utils = __esm({
740
- "../loader-utils/src/lib/binary-utils/memory-copy-utils.ts"() {
741
- init_assert2();
742
- }
743
- });
744
-
745
- // ../loader-utils/src/lib/binary-utils/binary-copy-utils.ts
746
- function copyPaddedArrayBufferToDataView(dataView, byteOffset, sourceBuffer, padding) {
747
- const paddedLength = padToNBytes(sourceBuffer.byteLength, padding);
748
- const padLength = paddedLength - sourceBuffer.byteLength;
749
- if (dataView) {
750
- const targetArray = new Uint8Array(dataView.buffer, dataView.byteOffset + byteOffset, sourceBuffer.byteLength);
751
- const sourceArray = new Uint8Array(sourceBuffer);
752
- targetArray.set(sourceArray);
753
- for (let i2 = 0; i2 < padLength; ++i2) {
754
- dataView.setUint8(byteOffset + sourceBuffer.byteLength + i2, 32);
755
- }
756
- }
757
- byteOffset += paddedLength;
758
- return byteOffset;
759
- }
760
- function copyPaddedStringToDataView(dataView, byteOffset, string, padding) {
761
- const textEncoder = new TextEncoder();
762
- const stringBuffer = textEncoder.encode(string);
763
- byteOffset = copyPaddedArrayBufferToDataView(dataView, byteOffset, stringBuffer, padding);
764
- return byteOffset;
765
- }
766
- var init_binary_copy_utils = __esm({
767
- "../loader-utils/src/lib/binary-utils/binary-copy-utils.ts"() {
768
- init_memory_copy_utils();
769
- }
770
- });
771
-
772
- // ../loader-utils/src/index.ts
773
- var init_src2 = __esm({
774
- "../loader-utils/src/index.ts"() {
775
- init_assert2();
776
- init_globals2();
777
- init_parse_json();
778
- init_array_buffer_utils();
779
- init_memory_copy_utils();
780
- init_binary_copy_utils();
781
- }
782
- });
783
-
784
- // ../images/src/lib/utils/version.ts
785
- var VERSION6;
786
- var init_version4 = __esm({
787
- "../images/src/lib/utils/version.ts"() {
788
- VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
789
- }
790
- });
791
-
792
- // ../images/src/lib/category-api/image-type.ts
793
- function isImageTypeSupported(type) {
794
- switch (type) {
795
- case "auto":
796
- return IMAGE_BITMAP_SUPPORTED || IMAGE_SUPPORTED || DATA_SUPPORTED;
797
- case "imagebitmap":
798
- return IMAGE_BITMAP_SUPPORTED;
799
- case "image":
800
- return IMAGE_SUPPORTED;
801
- case "data":
802
- return DATA_SUPPORTED;
803
- default:
804
- throw new Error(`@loaders.gl/images: image ${type} not supported in this environment`);
805
- }
806
- }
807
- function getDefaultImageType() {
808
- if (IMAGE_BITMAP_SUPPORTED) {
809
- return "imagebitmap";
810
- }
811
- if (IMAGE_SUPPORTED) {
812
- return "image";
813
- }
814
- if (DATA_SUPPORTED) {
815
- return "data";
817
+ if (DATA_SUPPORTED) {
818
+ return "data";
816
819
  }
817
820
  throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js");
818
821
  }
@@ -824,7 +827,7 @@
824
827
  IMAGE_SUPPORTED = typeof Image !== "undefined";
825
828
  IMAGE_BITMAP_SUPPORTED = typeof ImageBitmap !== "undefined";
826
829
  NODE_IMAGE_SUPPORTED = Boolean(_parseImageNode);
827
- DATA_SUPPORTED = isBrowser2 ? true : NODE_IMAGE_SUPPORTED;
830
+ DATA_SUPPORTED = isBrowser ? true : NODE_IMAGE_SUPPORTED;
828
831
  }
829
832
  });
830
833
 
@@ -983,10 +986,62 @@
983
986
  }
984
987
  });
985
988
 
989
+ // ../images/src/lib/category-api/parse-isobmff-binary.ts
990
+ function getISOBMFFMediaType(buffer) {
991
+ if (!checkString(buffer, "ftyp", 4)) {
992
+ return null;
993
+ }
994
+ if ((buffer[8] & 96) === 0) {
995
+ return null;
996
+ }
997
+ return decodeMajorBrand(buffer);
998
+ }
999
+ function decodeMajorBrand(buffer) {
1000
+ const brandMajor = getUTF8String(buffer, 8, 12).replace("\0", " ").trim();
1001
+ switch (brandMajor) {
1002
+ case "avif":
1003
+ case "avis":
1004
+ return { extension: "avif", mimeType: "image/avif" };
1005
+ default:
1006
+ return null;
1007
+ }
1008
+ }
1009
+ function getUTF8String(array, start, end) {
1010
+ return String.fromCharCode(...array.slice(start, end));
1011
+ }
1012
+ function stringToBytes(string) {
1013
+ return [...string].map((character) => character.charCodeAt(0));
1014
+ }
1015
+ function checkString(buffer, header, offset = 0) {
1016
+ const headerBytes = stringToBytes(header);
1017
+ for (let i2 = 0; i2 < headerBytes.length; ++i2) {
1018
+ if (headerBytes[i2] !== buffer[i2 + offset]) {
1019
+ return false;
1020
+ }
1021
+ }
1022
+ return true;
1023
+ }
1024
+ var init_parse_isobmff_binary = __esm({
1025
+ "../images/src/lib/category-api/parse-isobmff-binary.ts"() {
1026
+ }
1027
+ });
1028
+
986
1029
  // ../images/src/lib/category-api/binary-image-api.ts
987
1030
  function getBinaryImageMetadata(binaryData) {
988
1031
  const dataView = toDataView(binaryData);
989
- return getPngMetadata(dataView) || getJpegMetadata(dataView) || getGifMetadata(dataView) || getBmpMetadata(dataView);
1032
+ return getPngMetadata(dataView) || getJpegMetadata(dataView) || getGifMetadata(dataView) || getBmpMetadata(dataView) || getISOBMFFMetadata(dataView);
1033
+ }
1034
+ function getISOBMFFMetadata(binaryData) {
1035
+ const buffer = new Uint8Array(binaryData instanceof DataView ? binaryData.buffer : binaryData);
1036
+ const mediaType = getISOBMFFMediaType(buffer);
1037
+ if (!mediaType) {
1038
+ return null;
1039
+ }
1040
+ return {
1041
+ mimeType: mediaType.mimeType,
1042
+ width: 0,
1043
+ height: 0
1044
+ };
990
1045
  }
991
1046
  function getPngMetadata(binaryData) {
992
1047
  const dataView = toDataView(binaryData);
@@ -1087,6 +1142,7 @@
1087
1142
  var BIG_ENDIAN, LITTLE_ENDIAN;
1088
1143
  var init_binary_image_api = __esm({
1089
1144
  "../images/src/lib/category-api/binary-image-api.ts"() {
1145
+ init_parse_isobmff_binary();
1090
1146
  BIG_ENDIAN = false;
1091
1147
  LITTLE_ENDIAN = true;
1092
1148
  }
@@ -1096,7 +1152,7 @@
1096
1152
  async function parseToNodeImage(arrayBuffer, options) {
1097
1153
  const { mimeType } = getBinaryImageMetadata(arrayBuffer) || {};
1098
1154
  const _parseImageNode2 = globalThis._parseImageNode;
1099
- assert2(_parseImageNode2);
1155
+ assert(_parseImageNode2);
1100
1156
  return await _parseImageNode2(arrayBuffer, mimeType);
1101
1157
  }
1102
1158
  var init_parse_to_node_image = __esm({
@@ -1125,7 +1181,7 @@
1125
1181
  image = await parseToNodeImage(arrayBuffer, options);
1126
1182
  break;
1127
1183
  default:
1128
- assert2(false);
1184
+ assert(false);
1129
1185
  }
1130
1186
  if (imageType === "data") {
1131
1187
  image = getImageData(image);
@@ -1160,12 +1216,13 @@
1160
1216
  init_version4();
1161
1217
  init_parse_image();
1162
1218
  init_binary_image_api();
1163
- EXTENSIONS = ["png", "jpg", "jpeg", "gif", "webp", "bmp", "ico", "svg"];
1219
+ EXTENSIONS = ["png", "jpg", "jpeg", "gif", "webp", "bmp", "ico", "svg", "avif"];
1164
1220
  MIME_TYPES = [
1165
1221
  "image/png",
1166
1222
  "image/jpeg",
1167
1223
  "image/gif",
1168
1224
  "image/webp",
1225
+ "image/avif",
1169
1226
  "image/bmp",
1170
1227
  "image/vnd.microsoft.icon",
1171
1228
  "image/svg+xml"
@@ -1191,43 +1248,41 @@
1191
1248
  });
1192
1249
 
1193
1250
  // ../images/src/lib/category-api/image-format.ts
1194
- function _isImageFormatSupported(mimeType) {
1195
- if (mimeTypeSupported[mimeType] === void 0) {
1196
- mimeTypeSupported[mimeType] = checkFormatSupport(mimeType);
1251
+ function isImageFormatSupported(mimeType) {
1252
+ if (mimeTypeSupportedSync[mimeType] === void 0) {
1253
+ const supported = isBrowser ? checkBrowserImageFormatSupport(mimeType) : checkNodeImageFormatSupport(mimeType);
1254
+ mimeTypeSupportedSync[mimeType] = supported;
1197
1255
  }
1198
- return mimeTypeSupported[mimeType];
1256
+ return mimeTypeSupportedSync[mimeType];
1199
1257
  }
1200
- function checkFormatSupport(mimeType) {
1258
+ function checkNodeImageFormatSupport(mimeType) {
1259
+ const NODE_FORMAT_SUPPORT = ["image/png", "image/jpeg", "image/gif"];
1260
+ const { _parseImageNode: _parseImageNode2, _imageFormatsNode = NODE_FORMAT_SUPPORT } = globalThis;
1261
+ return Boolean(_parseImageNode2) && _imageFormatsNode.includes(mimeType);
1262
+ }
1263
+ function checkBrowserImageFormatSupport(mimeType) {
1201
1264
  switch (mimeType) {
1265
+ case "image/avif":
1202
1266
  case "image/webp":
1203
- return checkWebPSupport();
1204
- case "image/svg":
1205
- return isBrowser2;
1267
+ return testBrowserImageFormatSupport(mimeType);
1206
1268
  default:
1207
- if (!isBrowser2) {
1208
- const { _parseImageNode: _parseImageNode2 } = globalThis;
1209
- return Boolean(_parseImageNode2) && NODE_FORMAT_SUPPORT.includes(mimeType);
1210
- }
1211
1269
  return true;
1212
1270
  }
1213
1271
  }
1214
- function checkWebPSupport() {
1215
- if (!isBrowser2) {
1216
- return false;
1217
- }
1272
+ function testBrowserImageFormatSupport(mimeType) {
1218
1273
  try {
1219
1274
  const element = document.createElement("canvas");
1220
- return element.toDataURL("image/webp").indexOf("data:image/webp") === 0;
1275
+ const dataURL = element.toDataURL(mimeType);
1276
+ return dataURL.indexOf(`data:${mimeType}`) === 0;
1221
1277
  } catch {
1222
1278
  return false;
1223
1279
  }
1224
1280
  }
1225
- var NODE_FORMAT_SUPPORT, mimeTypeSupported;
1281
+ var mimeTypeSupportedSync;
1226
1282
  var init_image_format = __esm({
1227
1283
  "../images/src/lib/category-api/image-format.ts"() {
1228
1284
  init_src2();
1229
- NODE_FORMAT_SUPPORT = ["image/png", "image/jpeg", "image/gif"];
1230
- mimeTypeSupported = {};
1285
+ mimeTypeSupportedSync = {};
1231
1286
  }
1232
1287
  });
1233
1288
 
@@ -1396,12 +1451,12 @@
1396
1451
  return extras[key];
1397
1452
  }
1398
1453
  getExtension(extensionName) {
1399
- const isExtension = this.getUsedExtensions().find((name8) => name8 === extensionName);
1454
+ const isExtension = this.getUsedExtensions().find((name10) => name10 === extensionName);
1400
1455
  const extensions = this.json.extensions || {};
1401
1456
  return isExtension ? extensions[extensionName] || true : null;
1402
1457
  }
1403
1458
  getRequiredExtension(extensionName) {
1404
- const isRequired = this.getRequiredExtensions().find((name8) => name8 === extensionName);
1459
+ const isRequired = this.getRequiredExtensions().find((name10) => name10 === extensionName);
1405
1460
  return isRequired ? this.getExtension(extensionName) : null;
1406
1461
  }
1407
1462
  getRequiredExtensions() {
@@ -1410,6 +1465,9 @@
1410
1465
  getUsedExtensions() {
1411
1466
  return this.json.extensionsUsed || [];
1412
1467
  }
1468
+ getRemovedExtensions() {
1469
+ return this.json.extensionsRemoved || [];
1470
+ }
1413
1471
  getObjectExtension(object, extensionName) {
1414
1472
  const extensions = object.extensions || {};
1415
1473
  return extensions[extensionName];
@@ -1534,6 +1592,9 @@
1534
1592
  }
1535
1593
  }
1536
1594
  removeExtension(extensionName) {
1595
+ if (!this.getExtension(extensionName)) {
1596
+ return;
1597
+ }
1537
1598
  if (this.json.extensionsRequired) {
1538
1599
  this._removeStringFromArray(this.json.extensionsRequired, extensionName);
1539
1600
  }
@@ -1543,6 +1604,13 @@
1543
1604
  if (this.json.extensions) {
1544
1605
  delete this.json.extensions[extensionName];
1545
1606
  }
1607
+ if (!Array.isArray(this.json.extensionsRemoved)) {
1608
+ this.json.extensionsRemoved = [];
1609
+ }
1610
+ const extensionsRemoved = this.json.extensionsRemoved;
1611
+ if (!extensionsRemoved.includes(extensionName)) {
1612
+ extensionsRemoved.push(extensionName);
1613
+ }
1546
1614
  }
1547
1615
  setDefaultScene(sceneIndex) {
1548
1616
  this.json.scene = sceneIndex;
@@ -1753,9 +1821,6 @@
1753
1821
  });
1754
1822
 
1755
1823
  // src/meshopt/meshopt-decoder.ts
1756
- function isMeshoptSupported() {
1757
- return isWebAssemblySupported;
1758
- }
1759
1824
  async function meshoptDecodeGltfBuffer(target, count, size, source, mode, filter = "NONE") {
1760
1825
  const instance = await loadWasmInstance();
1761
1826
  decode(instance, instance.exports[DECODERS[mode]], target, count, size, source, instance.exports[FILTERS[filter || "NONE"]]);
@@ -1805,10 +1870,9 @@
1805
1870
  throw new Error(`Malformed buffer data: ${res}`);
1806
1871
  }
1807
1872
  }
1808
- var isWebAssemblySupported, wasm_base, wasm_simd, detector, wasmpack, FILTERS, DECODERS, wasmPromise;
1873
+ var wasm_base, wasm_simd, detector, wasmpack, FILTERS, DECODERS, wasmPromise;
1809
1874
  var init_meshopt_decoder = __esm({
1810
1875
  "src/meshopt/meshopt-decoder.ts"() {
1811
- isWebAssemblySupported = typeof WebAssembly !== "object";
1812
1876
  wasm_base = "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";
1813
1877
  wasm_simd = "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";
1814
1878
  detector = new Uint8Array([
@@ -1951,15 +2015,8 @@
1951
2015
  var EXT_meshopt_compression_exports = {};
1952
2016
  __export(EXT_meshopt_compression_exports, {
1953
2017
  decode: () => decode2,
1954
- name: () => name,
1955
- preprocess: () => preprocess
2018
+ name: () => name
1956
2019
  });
1957
- function preprocess(gltfData) {
1958
- const scenegraph = new GLTFScenegraph(gltfData);
1959
- if (scenegraph.getRequiredExtensions().includes(EXT_MESHOPT_COMPRESSION) && !isMeshoptSupported()) {
1960
- throw new Error(`gltf: Required extension ${EXT_MESHOPT_COMPRESSION} not supported by browser`);
1961
- }
1962
- }
1963
2020
  async function decode2(gltfData, options) {
1964
2021
  const scenegraph = new GLTFScenegraph(gltfData);
1965
2022
  if (!options?.gltf?.decompressMeshes) {
@@ -1975,18 +2032,19 @@
1975
2032
  async function decodeMeshoptBufferView(scenegraph, bufferView) {
1976
2033
  const meshoptExtension = scenegraph.getObjectExtension(bufferView, EXT_MESHOPT_COMPRESSION);
1977
2034
  if (meshoptExtension) {
1978
- const buffer = bufferView.buffer;
1979
2035
  const {
1980
2036
  byteOffset = 0,
1981
2037
  byteLength = 0,
1982
2038
  byteStride,
1983
2039
  count,
1984
2040
  mode,
1985
- filter = "NONE"
2041
+ filter = "NONE",
2042
+ buffer: bufferIndex
1986
2043
  } = meshoptExtension;
1987
- const source = new Uint8Array(buffer, byteOffset, byteLength);
1988
- const result = new ArrayBuffer(count * byteStride);
1989
- await meshoptDecodeGltfBuffer(new Uint8Array(result), count, byteStride, source, mode, filter);
2044
+ const buffer = scenegraph.gltf.buffers[bufferIndex];
2045
+ const source = new Uint8Array(buffer.arrayBuffer, buffer.byteOffset + byteOffset, byteLength);
2046
+ const result = new Uint8Array(scenegraph.gltf.buffers[bufferView.buffer].arrayBuffer, bufferView.byteOffset, bufferView.byteLength);
2047
+ await meshoptDecodeGltfBuffer(result, count, byteStride, source, mode, filter);
1990
2048
  return result;
1991
2049
  }
1992
2050
  return null;
@@ -2005,11 +2063,11 @@
2005
2063
  var EXT_texture_webp_exports = {};
2006
2064
  __export(EXT_texture_webp_exports, {
2007
2065
  name: () => name2,
2008
- preprocess: () => preprocess2
2066
+ preprocess: () => preprocess
2009
2067
  });
2010
- function preprocess2(gltfData, options) {
2068
+ function preprocess(gltfData, options) {
2011
2069
  const scenegraph = new GLTFScenegraph(gltfData);
2012
- if (!_isImageFormatSupported("image/webp")) {
2070
+ if (!isImageFormatSupported("image/webp")) {
2013
2071
  if (scenegraph.getRequiredExtensions().includes(EXT_TEXTURE_WEBP)) {
2014
2072
  throw new Error(`gltf: Required extension ${EXT_TEXTURE_WEBP} not supported by browser`);
2015
2073
  }
@@ -2039,9 +2097,9 @@
2039
2097
  var KHR_texture_basisu_exports = {};
2040
2098
  __export(KHR_texture_basisu_exports, {
2041
2099
  name: () => name3,
2042
- preprocess: () => preprocess3
2100
+ preprocess: () => preprocess2
2043
2101
  });
2044
- function preprocess3(gltfData, options) {
2102
+ function preprocess2(gltfData, options) {
2045
2103
  const scene = new GLTFScenegraph(gltfData);
2046
2104
  const { json } = scene;
2047
2105
  for (const texture of json.textures || []) {
@@ -2074,6 +2132,7 @@
2074
2132
  var DEFAULT_DRACO_OPTIONS, DracoLoader;
2075
2133
  var init_draco_loader = __esm({
2076
2134
  "../draco/src/draco-loader.ts"() {
2135
+ init_src();
2077
2136
  init_version5();
2078
2137
  DEFAULT_DRACO_OPTIONS = {
2079
2138
  draco: {
@@ -2085,9 +2144,8 @@
2085
2144
  };
2086
2145
  DracoLoader = {
2087
2146
  name: "Draco",
2088
- id: "draco",
2147
+ id: isBrowser2 ? "draco" : "draco-nodejs",
2089
2148
  module: "draco",
2090
- shapes: ["mesh"],
2091
2149
  version: VERSION7,
2092
2150
  worker: true,
2093
2151
  extensions: ["drc"],
@@ -2099,7 +2157,36 @@
2099
2157
  }
2100
2158
  });
2101
2159
 
2102
- // ../schema/src/category/mesh/mesh-utils.ts
2160
+ // ../schema/src/lib/table/simple-table/data-type.ts
2161
+ function getDataTypeFromTypedArray(array) {
2162
+ switch (array.constructor) {
2163
+ case Int8Array:
2164
+ return "int8";
2165
+ case Uint8Array:
2166
+ case Uint8ClampedArray:
2167
+ return "uint8";
2168
+ case Int16Array:
2169
+ return "int16";
2170
+ case Uint16Array:
2171
+ return "uint16";
2172
+ case Int32Array:
2173
+ return "int32";
2174
+ case Uint32Array:
2175
+ return "uint32";
2176
+ case Float32Array:
2177
+ return "float32";
2178
+ case Float64Array:
2179
+ return "float64";
2180
+ default:
2181
+ return "null";
2182
+ }
2183
+ }
2184
+ var init_data_type = __esm({
2185
+ "../schema/src/lib/table/simple-table/data-type.ts"() {
2186
+ }
2187
+ });
2188
+
2189
+ // ../schema/src/lib/mesh/mesh-utils.ts
2103
2190
  function getMeshBoundingBox(attributes) {
2104
2191
  let minX = Infinity;
2105
2192
  let minY = Infinity;
@@ -2126,595 +2213,88 @@
2126
2213
  ];
2127
2214
  }
2128
2215
  var init_mesh_utils = __esm({
2129
- "../schema/src/category/mesh/mesh-utils.ts"() {
2216
+ "../schema/src/lib/mesh/mesh-utils.ts"() {
2130
2217
  }
2131
2218
  });
2132
2219
 
2133
- // ../schema/src/lib/utils/assert.ts
2134
- function assert4(condition, message) {
2135
- if (!condition) {
2136
- throw new Error(message || "loader assertion failed.");
2137
- }
2220
+ // ../schema/src/lib/mesh/deduce-mesh-schema.ts
2221
+ function deduceMeshField(name10, attribute, optionalMetadata) {
2222
+ const type = getDataTypeFromTypedArray(attribute.value);
2223
+ const metadata = optionalMetadata ? optionalMetadata : makeMeshAttributeMetadata(attribute);
2224
+ return {
2225
+ name: name10,
2226
+ type: { type: "fixed-size-list", listSize: attribute.size, children: [{ name: "value", type }] },
2227
+ nullable: false,
2228
+ metadata
2229
+ };
2138
2230
  }
2139
- var init_assert4 = __esm({
2140
- "../schema/src/lib/utils/assert.ts"() {
2231
+ function makeMeshAttributeMetadata(attribute) {
2232
+ const result = {};
2233
+ if ("byteOffset" in attribute) {
2234
+ result.byteOffset = attribute.byteOffset.toString(10);
2141
2235
  }
2142
- });
2143
-
2144
- // ../schema/src/lib/schema/impl/schema.ts
2145
- function checkNames(fields) {
2146
- const usedNames = {};
2147
- for (const field of fields) {
2148
- if (usedNames[field.name]) {
2149
- console.warn("Schema: duplicated field name", field.name, field);
2150
- }
2151
- usedNames[field.name] = true;
2236
+ if ("byteStride" in attribute) {
2237
+ result.byteStride = attribute.byteStride.toString(10);
2152
2238
  }
2239
+ if ("normalized" in attribute) {
2240
+ result.normalized = attribute.normalized.toString();
2241
+ }
2242
+ return result;
2153
2243
  }
2154
- function mergeMaps(m1, m2) {
2155
- return new Map([...m1 || new Map(), ...m2 || new Map()]);
2156
- }
2157
- var Schema;
2158
- var init_schema = __esm({
2159
- "../schema/src/lib/schema/impl/schema.ts"() {
2160
- init_assert4();
2161
- Schema = class {
2162
- constructor(fields, metadata) {
2163
- assert4(Array.isArray(fields));
2164
- checkNames(fields);
2165
- this.fields = fields;
2166
- this.metadata = metadata || new Map();
2167
- }
2168
- compareTo(other) {
2169
- if (this.metadata !== other.metadata) {
2170
- return false;
2171
- }
2172
- if (this.fields.length !== other.fields.length) {
2173
- return false;
2174
- }
2175
- for (let i2 = 0; i2 < this.fields.length; ++i2) {
2176
- if (!this.fields[i2].compareTo(other.fields[i2])) {
2177
- return false;
2178
- }
2179
- }
2180
- return true;
2181
- }
2182
- select(...columnNames) {
2183
- const nameMap = Object.create(null);
2184
- for (const name8 of columnNames) {
2185
- nameMap[name8] = true;
2186
- }
2187
- const selectedFields = this.fields.filter((field) => nameMap[field.name]);
2188
- return new Schema(selectedFields, this.metadata);
2189
- }
2190
- selectAt(...columnIndices) {
2191
- const selectedFields = columnIndices.map((index) => this.fields[index]).filter(Boolean);
2192
- return new Schema(selectedFields, this.metadata);
2193
- }
2194
- assign(schemaOrFields) {
2195
- let fields;
2196
- let metadata = this.metadata;
2197
- if (schemaOrFields instanceof Schema) {
2198
- const otherSchema = schemaOrFields;
2199
- fields = otherSchema.fields;
2200
- metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherSchema.metadata);
2201
- } else {
2202
- fields = schemaOrFields;
2203
- }
2204
- const fieldMap = Object.create(null);
2205
- for (const field of this.fields) {
2206
- fieldMap[field.name] = field;
2207
- }
2208
- for (const field of fields) {
2209
- fieldMap[field.name] = field;
2210
- }
2211
- const mergedFields = Object.values(fieldMap);
2212
- return new Schema(mergedFields, metadata);
2213
- }
2214
- };
2244
+ var init_deduce_mesh_schema = __esm({
2245
+ "../schema/src/lib/mesh/deduce-mesh-schema.ts"() {
2246
+ init_data_type();
2215
2247
  }
2216
2248
  });
2217
2249
 
2218
- // ../schema/src/lib/schema/impl/field.ts
2219
- var Field;
2220
- var init_field = __esm({
2221
- "../schema/src/lib/schema/impl/field.ts"() {
2222
- Field = class {
2223
- constructor(name8, type, nullable = false, metadata = new Map()) {
2224
- this.name = name8;
2225
- this.type = type;
2226
- this.nullable = nullable;
2227
- this.metadata = metadata;
2228
- }
2229
- get typeId() {
2230
- return this.type && this.type.typeId;
2231
- }
2232
- clone() {
2233
- return new Field(this.name, this.type, this.nullable, this.metadata);
2234
- }
2235
- compareTo(other) {
2236
- return this.name === other.name && this.type === other.type && this.nullable === other.nullable && this.metadata === other.metadata;
2237
- }
2238
- toString() {
2239
- return `${this.type}${this.nullable ? ", nullable" : ""}${this.metadata ? `, metadata: ${this.metadata}` : ""}`;
2240
- }
2241
- };
2250
+ // ../schema/src/index.ts
2251
+ var init_src5 = __esm({
2252
+ "../schema/src/index.ts"() {
2253
+ init_mesh_utils();
2254
+ init_deduce_mesh_schema();
2242
2255
  }
2243
2256
  });
2244
2257
 
2245
- // ../schema/src/lib/schema/impl/enum.ts
2246
- var Type;
2247
- var init_enum = __esm({
2248
- "../schema/src/lib/schema/impl/enum.ts"() {
2249
- (function(Type2) {
2250
- Type2[Type2["NONE"] = 0] = "NONE";
2251
- Type2[Type2["Null"] = 1] = "Null";
2252
- Type2[Type2["Int"] = 2] = "Int";
2253
- Type2[Type2["Float"] = 3] = "Float";
2254
- Type2[Type2["Binary"] = 4] = "Binary";
2255
- Type2[Type2["Utf8"] = 5] = "Utf8";
2256
- Type2[Type2["Bool"] = 6] = "Bool";
2257
- Type2[Type2["Decimal"] = 7] = "Decimal";
2258
- Type2[Type2["Date"] = 8] = "Date";
2259
- Type2[Type2["Time"] = 9] = "Time";
2260
- Type2[Type2["Timestamp"] = 10] = "Timestamp";
2261
- Type2[Type2["Interval"] = 11] = "Interval";
2262
- Type2[Type2["List"] = 12] = "List";
2263
- Type2[Type2["Struct"] = 13] = "Struct";
2264
- Type2[Type2["Union"] = 14] = "Union";
2265
- Type2[Type2["FixedSizeBinary"] = 15] = "FixedSizeBinary";
2266
- Type2[Type2["FixedSizeList"] = 16] = "FixedSizeList";
2267
- Type2[Type2["Map"] = 17] = "Map";
2268
- Type2[Type2["Dictionary"] = -1] = "Dictionary";
2269
- Type2[Type2["Int8"] = -2] = "Int8";
2270
- Type2[Type2["Int16"] = -3] = "Int16";
2271
- Type2[Type2["Int32"] = -4] = "Int32";
2272
- Type2[Type2["Int64"] = -5] = "Int64";
2273
- Type2[Type2["Uint8"] = -6] = "Uint8";
2274
- Type2[Type2["Uint16"] = -7] = "Uint16";
2275
- Type2[Type2["Uint32"] = -8] = "Uint32";
2276
- Type2[Type2["Uint64"] = -9] = "Uint64";
2277
- Type2[Type2["Float16"] = -10] = "Float16";
2278
- Type2[Type2["Float32"] = -11] = "Float32";
2279
- Type2[Type2["Float64"] = -12] = "Float64";
2280
- Type2[Type2["DateDay"] = -13] = "DateDay";
2281
- Type2[Type2["DateMillisecond"] = -14] = "DateMillisecond";
2282
- Type2[Type2["TimestampSecond"] = -15] = "TimestampSecond";
2283
- Type2[Type2["TimestampMillisecond"] = -16] = "TimestampMillisecond";
2284
- Type2[Type2["TimestampMicrosecond"] = -17] = "TimestampMicrosecond";
2285
- Type2[Type2["TimestampNanosecond"] = -18] = "TimestampNanosecond";
2286
- Type2[Type2["TimeSecond"] = -19] = "TimeSecond";
2287
- Type2[Type2["TimeMillisecond"] = -20] = "TimeMillisecond";
2288
- Type2[Type2["TimeMicrosecond"] = -21] = "TimeMicrosecond";
2289
- Type2[Type2["TimeNanosecond"] = -22] = "TimeNanosecond";
2290
- Type2[Type2["DenseUnion"] = -23] = "DenseUnion";
2291
- Type2[Type2["SparseUnion"] = -24] = "SparseUnion";
2292
- Type2[Type2["IntervalDayTime"] = -25] = "IntervalDayTime";
2293
- Type2[Type2["IntervalYearMonth"] = -26] = "IntervalYearMonth";
2294
- })(Type || (Type = {}));
2295
- }
2296
- });
2297
-
2298
- // ../schema/src/lib/schema/impl/type.ts
2299
- var DataType, Null, Bool, Int, Int8, Int16, Int32, Uint8, Uint16, Uint32, Precision, Float, Float32, Float64, Binary, Utf8, DateUnit, Date, TimeUnit, Time, Timestamp, IntervalUnit, Interval, FixedSizeList, Struct;
2300
- var init_type = __esm({
2301
- "../schema/src/lib/schema/impl/type.ts"() {
2302
- init_enum();
2303
- DataType = class {
2304
- static isNull(x) {
2305
- return x && x.typeId === Type.Null;
2306
- }
2307
- static isInt(x) {
2308
- return x && x.typeId === Type.Int;
2309
- }
2310
- static isFloat(x) {
2311
- return x && x.typeId === Type.Float;
2312
- }
2313
- static isBinary(x) {
2314
- return x && x.typeId === Type.Binary;
2315
- }
2316
- static isUtf8(x) {
2317
- return x && x.typeId === Type.Utf8;
2318
- }
2319
- static isBool(x) {
2320
- return x && x.typeId === Type.Bool;
2321
- }
2322
- static isDecimal(x) {
2323
- return x && x.typeId === Type.Decimal;
2324
- }
2325
- static isDate(x) {
2326
- return x && x.typeId === Type.Date;
2327
- }
2328
- static isTime(x) {
2329
- return x && x.typeId === Type.Time;
2330
- }
2331
- static isTimestamp(x) {
2332
- return x && x.typeId === Type.Timestamp;
2333
- }
2334
- static isInterval(x) {
2335
- return x && x.typeId === Type.Interval;
2336
- }
2337
- static isList(x) {
2338
- return x && x.typeId === Type.List;
2339
- }
2340
- static isStruct(x) {
2341
- return x && x.typeId === Type.Struct;
2342
- }
2343
- static isUnion(x) {
2344
- return x && x.typeId === Type.Union;
2345
- }
2346
- static isFixedSizeBinary(x) {
2347
- return x && x.typeId === Type.FixedSizeBinary;
2348
- }
2349
- static isFixedSizeList(x) {
2350
- return x && x.typeId === Type.FixedSizeList;
2351
- }
2352
- static isMap(x) {
2353
- return x && x.typeId === Type.Map;
2354
- }
2355
- static isDictionary(x) {
2356
- return x && x.typeId === Type.Dictionary;
2357
- }
2358
- get typeId() {
2359
- return Type.NONE;
2360
- }
2361
- compareTo(other) {
2362
- return this === other;
2363
- }
2364
- };
2365
- Null = class extends DataType {
2366
- get typeId() {
2367
- return Type.Null;
2368
- }
2369
- get [Symbol.toStringTag]() {
2370
- return "Null";
2371
- }
2372
- toString() {
2373
- return "Null";
2374
- }
2375
- };
2376
- Bool = class extends DataType {
2377
- get typeId() {
2378
- return Type.Bool;
2379
- }
2380
- get [Symbol.toStringTag]() {
2381
- return "Bool";
2382
- }
2383
- toString() {
2384
- return "Bool";
2385
- }
2386
- };
2387
- Int = class extends DataType {
2388
- constructor(isSigned, bitWidth) {
2389
- super();
2390
- this.isSigned = isSigned;
2391
- this.bitWidth = bitWidth;
2392
- }
2393
- get typeId() {
2394
- return Type.Int;
2395
- }
2396
- get [Symbol.toStringTag]() {
2397
- return "Int";
2398
- }
2399
- toString() {
2400
- return `${this.isSigned ? "I" : "Ui"}nt${this.bitWidth}`;
2401
- }
2402
- };
2403
- Int8 = class extends Int {
2404
- constructor() {
2405
- super(true, 8);
2406
- }
2407
- };
2408
- Int16 = class extends Int {
2409
- constructor() {
2410
- super(true, 16);
2411
- }
2412
- };
2413
- Int32 = class extends Int {
2414
- constructor() {
2415
- super(true, 32);
2416
- }
2417
- };
2418
- Uint8 = class extends Int {
2419
- constructor() {
2420
- super(false, 8);
2421
- }
2422
- };
2423
- Uint16 = class extends Int {
2424
- constructor() {
2425
- super(false, 16);
2426
- }
2427
- };
2428
- Uint32 = class extends Int {
2429
- constructor() {
2430
- super(false, 32);
2431
- }
2432
- };
2433
- Precision = {
2434
- HALF: 16,
2435
- SINGLE: 32,
2436
- DOUBLE: 64
2437
- };
2438
- Float = class extends DataType {
2439
- constructor(precision) {
2440
- super();
2441
- this.precision = precision;
2442
- }
2443
- get typeId() {
2444
- return Type.Float;
2445
- }
2446
- get [Symbol.toStringTag]() {
2447
- return "Float";
2448
- }
2449
- toString() {
2450
- return `Float${this.precision}`;
2451
- }
2452
- };
2453
- Float32 = class extends Float {
2454
- constructor() {
2455
- super(Precision.SINGLE);
2456
- }
2457
- };
2458
- Float64 = class extends Float {
2459
- constructor() {
2460
- super(Precision.DOUBLE);
2461
- }
2462
- };
2463
- Binary = class extends DataType {
2464
- constructor() {
2465
- super();
2466
- }
2467
- get typeId() {
2468
- return Type.Binary;
2469
- }
2470
- toString() {
2471
- return "Binary";
2472
- }
2473
- get [Symbol.toStringTag]() {
2474
- return "Binary";
2475
- }
2476
- };
2477
- Utf8 = class extends DataType {
2478
- get typeId() {
2479
- return Type.Utf8;
2480
- }
2481
- get [Symbol.toStringTag]() {
2482
- return "Utf8";
2483
- }
2484
- toString() {
2485
- return "Utf8";
2486
- }
2487
- };
2488
- DateUnit = {
2489
- DAY: 0,
2490
- MILLISECOND: 1
2491
- };
2492
- Date = class extends DataType {
2493
- constructor(unit) {
2494
- super();
2495
- this.unit = unit;
2496
- }
2497
- get typeId() {
2498
- return Type.Date;
2499
- }
2500
- get [Symbol.toStringTag]() {
2501
- return "Date";
2502
- }
2503
- toString() {
2504
- return `Date${(this.unit + 1) * 32}<${DateUnit[this.unit]}>`;
2505
- }
2506
- };
2507
- TimeUnit = {
2508
- SECOND: 1,
2509
- MILLISECOND: 1e3,
2510
- MICROSECOND: 1e6,
2511
- NANOSECOND: 1e9
2512
- };
2513
- Time = class extends DataType {
2514
- constructor(unit, bitWidth) {
2515
- super();
2516
- this.unit = unit;
2517
- this.bitWidth = bitWidth;
2518
- }
2519
- get typeId() {
2520
- return Type.Time;
2521
- }
2522
- toString() {
2523
- return `Time${this.bitWidth}<${TimeUnit[this.unit]}>`;
2524
- }
2525
- get [Symbol.toStringTag]() {
2526
- return "Time";
2527
- }
2528
- };
2529
- Timestamp = class extends DataType {
2530
- constructor(unit, timezone = null) {
2531
- super();
2532
- this.unit = unit;
2533
- this.timezone = timezone;
2534
- }
2535
- get typeId() {
2536
- return Type.Timestamp;
2537
- }
2538
- get [Symbol.toStringTag]() {
2539
- return "Timestamp";
2540
- }
2541
- toString() {
2542
- return `Timestamp<${TimeUnit[this.unit]}${this.timezone ? `, ${this.timezone}` : ""}>`;
2543
- }
2544
- };
2545
- IntervalUnit = {
2546
- DAY_TIME: 0,
2547
- YEAR_MONTH: 1
2548
- };
2549
- Interval = class extends DataType {
2550
- constructor(unit) {
2551
- super();
2552
- this.unit = unit;
2553
- }
2554
- get typeId() {
2555
- return Type.Interval;
2556
- }
2557
- get [Symbol.toStringTag]() {
2558
- return "Interval";
2559
- }
2560
- toString() {
2561
- return `Interval<${IntervalUnit[this.unit]}>`;
2562
- }
2563
- };
2564
- FixedSizeList = class extends DataType {
2565
- constructor(listSize, child) {
2566
- super();
2567
- this.listSize = listSize;
2568
- this.children = [child];
2569
- }
2570
- get typeId() {
2571
- return Type.FixedSizeList;
2572
- }
2573
- get valueType() {
2574
- return this.children[0].type;
2575
- }
2576
- get valueField() {
2577
- return this.children[0];
2578
- }
2579
- get [Symbol.toStringTag]() {
2580
- return "FixedSizeList";
2581
- }
2582
- toString() {
2583
- return `FixedSizeList[${this.listSize}]<${this.valueType}>`;
2584
- }
2585
- };
2586
- Struct = class extends DataType {
2587
- constructor(children) {
2588
- super();
2589
- this.children = children;
2590
- }
2591
- get typeId() {
2592
- return Type.Struct;
2593
- }
2594
- toString() {
2595
- return `Struct<{${this.children.map((f2) => `${f2.name}:${f2.type}`).join(", ")}}>`;
2596
- }
2597
- get [Symbol.toStringTag]() {
2598
- return "Struct";
2599
- }
2600
- };
2601
- }
2602
- });
2603
-
2604
- // ../schema/src/lib/schema/schema.ts
2605
- var init_schema2 = __esm({
2606
- "../schema/src/lib/schema/schema.ts"() {
2607
- init_schema();
2608
- init_field();
2609
- init_type();
2610
- }
2611
- });
2612
-
2613
- // ../schema/src/lib/arrow/arrow-like-type-utils.ts
2614
- function getArrowTypeFromTypedArray(array) {
2615
- switch (array.constructor) {
2616
- case Int8Array:
2617
- return new Int8();
2618
- case Uint8Array:
2619
- return new Uint8();
2620
- case Int16Array:
2621
- return new Int16();
2622
- case Uint16Array:
2623
- return new Uint16();
2624
- case Int32Array:
2625
- return new Int32();
2626
- case Uint32Array:
2627
- return new Uint32();
2628
- case Float32Array:
2629
- return new Float32();
2630
- case Float64Array:
2631
- return new Float64();
2632
- default:
2633
- throw new Error("array type not supported");
2634
- }
2635
- }
2636
- var init_arrow_like_type_utils = __esm({
2637
- "../schema/src/lib/arrow/arrow-like-type-utils.ts"() {
2638
- init_schema2();
2639
- }
2640
- });
2641
-
2642
- // ../schema/src/category/mesh/deduce-mesh-schema.ts
2643
- function deduceMeshField(attributeName, attribute, optionalMetadata) {
2644
- const type = getArrowTypeFromTypedArray(attribute.value);
2645
- const metadata = optionalMetadata ? optionalMetadata : makeMeshAttributeMetadata(attribute);
2646
- const field = new Field(attributeName, new FixedSizeList(attribute.size, new Field("value", type)), false, metadata);
2647
- return field;
2648
- }
2649
- function makeMeshAttributeMetadata(attribute) {
2650
- const result = new Map();
2651
- if ("byteOffset" in attribute) {
2652
- result.set("byteOffset", attribute.byteOffset.toString(10));
2653
- }
2654
- if ("byteStride" in attribute) {
2655
- result.set("byteStride", attribute.byteStride.toString(10));
2656
- }
2657
- if ("normalized" in attribute) {
2658
- result.set("normalized", attribute.normalized.toString());
2659
- }
2660
- return result;
2661
- }
2662
- var init_deduce_mesh_schema = __esm({
2663
- "../schema/src/category/mesh/deduce-mesh-schema.ts"() {
2664
- init_schema2();
2665
- init_arrow_like_type_utils();
2666
- }
2667
- });
2668
-
2669
- // ../schema/src/index.ts
2670
- var init_src5 = __esm({
2671
- "../schema/src/index.ts"() {
2672
- init_mesh_utils();
2673
- init_deduce_mesh_schema();
2674
- init_schema2();
2675
- }
2676
- });
2677
-
2678
- // ../draco/src/lib/utils/get-draco-schema.ts
2679
- function getDracoSchema(attributes, loaderData, indices) {
2680
- const metadataMap = makeMetadata(loaderData.metadata);
2681
- const fields = [];
2682
- const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);
2683
- for (const attributeName in attributes) {
2684
- const attribute = attributes[attributeName];
2685
- const field = getArrowFieldFromAttribute(attributeName, attribute, namedLoaderDataAttributes[attributeName]);
2686
- fields.push(field);
2687
- }
2688
- if (indices) {
2689
- const indicesField = getArrowFieldFromAttribute("indices", indices);
2690
- fields.push(indicesField);
2691
- }
2692
- return new Schema(fields, metadataMap);
2693
- }
2694
- function transformAttributesLoaderData(loaderData) {
2695
- const result = {};
2696
- for (const key in loaderData) {
2697
- const dracoAttribute = loaderData[key];
2698
- result[dracoAttribute.name || "undefined"] = dracoAttribute;
2699
- }
2700
- return result;
2701
- }
2702
- function getArrowFieldFromAttribute(attributeName, attribute, loaderData) {
2703
- const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : void 0;
2704
- const field = deduceMeshField(attributeName, attribute, metadataMap);
2705
- return field;
2706
- }
2707
- function makeMetadata(metadata) {
2708
- const metadataMap = new Map();
2709
- for (const key in metadata) {
2710
- metadataMap.set(`${key}.string`, JSON.stringify(metadata[key]));
2711
- }
2712
- return metadataMap;
2713
- }
2714
- var init_get_draco_schema = __esm({
2715
- "../draco/src/lib/utils/get-draco-schema.ts"() {
2716
- init_src5();
2717
- init_src5();
2258
+ // ../draco/src/lib/utils/get-draco-schema.ts
2259
+ function getDracoSchema(attributes, loaderData, indices) {
2260
+ const metadata = makeMetadata(loaderData.metadata);
2261
+ const fields = [];
2262
+ const namedLoaderDataAttributes = transformAttributesLoaderData(loaderData.attributes);
2263
+ for (const attributeName in attributes) {
2264
+ const attribute = attributes[attributeName];
2265
+ const field = getArrowFieldFromAttribute(attributeName, attribute, namedLoaderDataAttributes[attributeName]);
2266
+ fields.push(field);
2267
+ }
2268
+ if (indices) {
2269
+ const indicesField = getArrowFieldFromAttribute("indices", indices);
2270
+ fields.push(indicesField);
2271
+ }
2272
+ return { fields, metadata };
2273
+ }
2274
+ function transformAttributesLoaderData(loaderData) {
2275
+ const result = {};
2276
+ for (const key in loaderData) {
2277
+ const dracoAttribute = loaderData[key];
2278
+ result[dracoAttribute.name || "undefined"] = dracoAttribute;
2279
+ }
2280
+ return result;
2281
+ }
2282
+ function getArrowFieldFromAttribute(attributeName, attribute, loaderData) {
2283
+ const metadataMap = loaderData ? makeMetadata(loaderData.metadata) : void 0;
2284
+ const field = deduceMeshField(attributeName, attribute, metadataMap);
2285
+ return field;
2286
+ }
2287
+ function makeMetadata(metadata) {
2288
+ Object.entries(metadata);
2289
+ const serializedMetadata = {};
2290
+ for (const key in metadata) {
2291
+ serializedMetadata[`${key}.string`] = JSON.stringify(metadata[key]);
2292
+ }
2293
+ return serializedMetadata;
2294
+ }
2295
+ var init_get_draco_schema = __esm({
2296
+ "../draco/src/lib/utils/get-draco-schema.ts"() {
2297
+ init_src5();
2718
2298
  }
2719
2299
  });
2720
2300
 
@@ -3106,15 +2686,17 @@
3106
2686
  });
3107
2687
  });
3108
2688
  }
3109
- var DRACO_VERSION, DRACO_JS_DECODER_URL, DRACO_WASM_WRAPPER_URL, DRACO_WASM_DECODER_URL, DRACO_ENCODER_URL, loadDecoderPromise;
2689
+ var DRACO_DECODER_VERSION, DRACO_ENCODER_VERSION, STATIC_DECODER_URL, DRACO_JS_DECODER_URL, DRACO_WASM_WRAPPER_URL, DRACO_WASM_DECODER_URL, DRACO_ENCODER_URL, loadDecoderPromise;
3110
2690
  var init_draco_module_loader = __esm({
3111
2691
  "../draco/src/lib/draco-module-loader.ts"() {
3112
2692
  init_src();
3113
- DRACO_VERSION = "1.4.1";
3114
- DRACO_JS_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_decoder.js`;
3115
- DRACO_WASM_WRAPPER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_wasm_wrapper.js`;
3116
- DRACO_WASM_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_VERSION}/draco_decoder.wasm`;
3117
- DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_VERSION}/javascript/draco_encoder.js`;
2693
+ DRACO_DECODER_VERSION = "1.5.5";
2694
+ DRACO_ENCODER_VERSION = "1.4.1";
2695
+ STATIC_DECODER_URL = `https://www.gstatic.com/draco/versioned/decoders/${DRACO_DECODER_VERSION}`;
2696
+ DRACO_JS_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.js`;
2697
+ DRACO_WASM_WRAPPER_URL = `${STATIC_DECODER_URL}/draco_wasm_wrapper.js`;
2698
+ DRACO_WASM_DECODER_URL = `${STATIC_DECODER_URL}/draco_decoder.wasm`;
2699
+ DRACO_ENCODER_URL = `https://raw.githubusercontent.com/google/draco/${DRACO_ENCODER_VERSION}/javascript/draco_encoder.js`;
3118
2700
  }
3119
2701
  });
3120
2702
 
@@ -3141,184 +2723,1528 @@
3141
2723
  }
3142
2724
  });
3143
2725
 
3144
- // src/lib/gltf-utils/gltf-attribute-utils.ts
3145
- function getGLTFAccessors(attributes) {
3146
- const accessors = {};
3147
- for (const name8 in attributes) {
3148
- const attribute = attributes[name8];
3149
- if (name8 !== "indices") {
3150
- const glTFAccessor = getGLTFAccessor(attribute);
3151
- accessors[name8] = glTFAccessor;
3152
- }
3153
- }
3154
- return accessors;
3155
- }
3156
- function getGLTFAccessor(attribute) {
3157
- const { buffer, size, count } = getAccessorData(attribute);
3158
- const glTFAccessor = {
3159
- value: buffer,
3160
- size,
3161
- byteOffset: 0,
3162
- count,
3163
- type: getAccessorTypeFromSize(size),
3164
- componentType: getComponentTypeFromArray(buffer)
3165
- };
3166
- return glTFAccessor;
3167
- }
3168
- function getAccessorData(attribute) {
3169
- let buffer = attribute;
3170
- let size = 1;
3171
- let count = 0;
3172
- if (attribute && attribute.value) {
3173
- buffer = attribute.value;
3174
- size = attribute.size || 1;
3175
- }
3176
- if (buffer) {
3177
- if (!ArrayBuffer.isView(buffer)) {
3178
- buffer = toTypedArray(buffer, Float32Array);
3179
- }
3180
- count = buffer.length / size;
3181
- }
3182
- return { buffer, size, count };
3183
- }
3184
- function toTypedArray(array, ArrayType, convertTypedArrays = false) {
3185
- if (!array) {
2726
+ // src/lib/gltf-utils/gltf-attribute-utils.ts
2727
+ function getGLTFAccessors(attributes) {
2728
+ const accessors = {};
2729
+ for (const name10 in attributes) {
2730
+ const attribute = attributes[name10];
2731
+ if (name10 !== "indices") {
2732
+ const glTFAccessor = getGLTFAccessor(attribute);
2733
+ accessors[name10] = glTFAccessor;
2734
+ }
2735
+ }
2736
+ return accessors;
2737
+ }
2738
+ function getGLTFAccessor(attribute) {
2739
+ const { buffer, size, count } = getAccessorData(attribute);
2740
+ const glTFAccessor = {
2741
+ value: buffer,
2742
+ size,
2743
+ byteOffset: 0,
2744
+ count,
2745
+ type: getAccessorTypeFromSize(size),
2746
+ componentType: getComponentTypeFromArray(buffer)
2747
+ };
2748
+ return glTFAccessor;
2749
+ }
2750
+ function getAccessorData(attribute) {
2751
+ let buffer = attribute;
2752
+ let size = 1;
2753
+ let count = 0;
2754
+ if (attribute && attribute.value) {
2755
+ buffer = attribute.value;
2756
+ size = attribute.size || 1;
2757
+ }
2758
+ if (buffer) {
2759
+ if (!ArrayBuffer.isView(buffer)) {
2760
+ buffer = toTypedArray(buffer, Float32Array);
2761
+ }
2762
+ count = buffer.length / size;
2763
+ }
2764
+ return { buffer, size, count };
2765
+ }
2766
+ function toTypedArray(array, ArrayType, convertTypedArrays = false) {
2767
+ if (!array) {
2768
+ return null;
2769
+ }
2770
+ if (Array.isArray(array)) {
2771
+ return new ArrayType(array);
2772
+ }
2773
+ if (convertTypedArrays && !(array instanceof ArrayType)) {
2774
+ return new ArrayType(array);
2775
+ }
2776
+ return array;
2777
+ }
2778
+ var init_gltf_attribute_utils = __esm({
2779
+ "src/lib/gltf-utils/gltf-attribute-utils.ts"() {
2780
+ init_gltf_utils();
2781
+ }
2782
+ });
2783
+
2784
+ // src/lib/extensions/KHR_draco_mesh_compression.ts
2785
+ var KHR_draco_mesh_compression_exports = {};
2786
+ __export(KHR_draco_mesh_compression_exports, {
2787
+ decode: () => decode3,
2788
+ encode: () => encode,
2789
+ name: () => name4,
2790
+ preprocess: () => preprocess3
2791
+ });
2792
+ function preprocess3(gltfData, options, context) {
2793
+ const scenegraph = new GLTFScenegraph(gltfData);
2794
+ for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {
2795
+ if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {
2796
+ }
2797
+ }
2798
+ }
2799
+ async function decode3(gltfData, options, context) {
2800
+ if (!options?.gltf?.decompressMeshes) {
2801
+ return;
2802
+ }
2803
+ const scenegraph = new GLTFScenegraph(gltfData);
2804
+ const promises = [];
2805
+ for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {
2806
+ if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {
2807
+ promises.push(decompressPrimitive(scenegraph, primitive, options, context));
2808
+ }
2809
+ }
2810
+ await Promise.all(promises);
2811
+ scenegraph.removeExtension(KHR_DRACO_MESH_COMPRESSION);
2812
+ }
2813
+ function encode(gltfData, options = {}) {
2814
+ const scenegraph = new GLTFScenegraph(gltfData);
2815
+ for (const mesh of scenegraph.json.meshes || []) {
2816
+ compressMesh(mesh, options);
2817
+ scenegraph.addRequiredExtension(KHR_DRACO_MESH_COMPRESSION);
2818
+ }
2819
+ }
2820
+ async function decompressPrimitive(scenegraph, primitive, options, context) {
2821
+ const dracoExtension = scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION);
2822
+ if (!dracoExtension) {
2823
+ return;
2824
+ }
2825
+ const buffer = scenegraph.getTypedArrayForBufferView(dracoExtension.bufferView);
2826
+ const bufferCopy = sliceArrayBuffer(buffer.buffer, buffer.byteOffset);
2827
+ const { parse: parse4 } = context;
2828
+ const dracoOptions = { ...options };
2829
+ delete dracoOptions["3d-tiles"];
2830
+ const decodedData = await parse4(bufferCopy, DracoLoader2, dracoOptions, context);
2831
+ const decodedAttributes = getGLTFAccessors(decodedData.attributes);
2832
+ for (const [attributeName, decodedAttribute] of Object.entries(decodedAttributes)) {
2833
+ if (attributeName in primitive.attributes) {
2834
+ const accessorIndex = primitive.attributes[attributeName];
2835
+ const accessor = scenegraph.getAccessor(accessorIndex);
2836
+ if (accessor?.min && accessor?.max) {
2837
+ decodedAttribute.min = accessor.min;
2838
+ decodedAttribute.max = accessor.max;
2839
+ }
2840
+ }
2841
+ }
2842
+ primitive.attributes = decodedAttributes;
2843
+ if (decodedData.indices) {
2844
+ primitive.indices = getGLTFAccessor(decodedData.indices);
2845
+ }
2846
+ checkPrimitive(primitive);
2847
+ }
2848
+ function compressMesh(attributes, indices, mode = 4, options, context) {
2849
+ if (!options.DracoWriter) {
2850
+ throw new Error("options.gltf.DracoWriter not provided");
2851
+ }
2852
+ const compressedData = options.DracoWriter.encodeSync({ attributes });
2853
+ const decodedData = context?.parseSync?.({ attributes });
2854
+ const fauxAccessors = options._addFauxAttributes(decodedData.attributes);
2855
+ const bufferViewIndex = options.addBufferView(compressedData);
2856
+ const glTFMesh = {
2857
+ primitives: [
2858
+ {
2859
+ attributes: fauxAccessors,
2860
+ mode,
2861
+ extensions: {
2862
+ [KHR_DRACO_MESH_COMPRESSION]: {
2863
+ bufferView: bufferViewIndex,
2864
+ attributes: fauxAccessors
2865
+ }
2866
+ }
2867
+ }
2868
+ ]
2869
+ };
2870
+ return glTFMesh;
2871
+ }
2872
+ function checkPrimitive(primitive) {
2873
+ if (!primitive.attributes && Object.keys(primitive.attributes).length > 0) {
2874
+ throw new Error("glTF: Empty primitive detected: Draco decompression failure?");
2875
+ }
2876
+ }
2877
+ function* makeMeshPrimitiveIterator(scenegraph) {
2878
+ for (const mesh of scenegraph.json.meshes || []) {
2879
+ for (const primitive of mesh.primitives) {
2880
+ yield primitive;
2881
+ }
2882
+ }
2883
+ }
2884
+ var KHR_DRACO_MESH_COMPRESSION, name4;
2885
+ var init_KHR_draco_mesh_compression = __esm({
2886
+ "src/lib/extensions/KHR_draco_mesh_compression.ts"() {
2887
+ init_src6();
2888
+ init_src2();
2889
+ init_gltf_scenegraph();
2890
+ init_gltf_attribute_utils();
2891
+ KHR_DRACO_MESH_COMPRESSION = "KHR_draco_mesh_compression";
2892
+ name4 = KHR_DRACO_MESH_COMPRESSION;
2893
+ }
2894
+ });
2895
+
2896
+ // ../../node_modules/@math.gl/core/dist/esm/lib/assert.js
2897
+ function assert4(condition, message) {
2898
+ if (!condition) {
2899
+ throw new Error("math.gl assertion ".concat(message));
2900
+ }
2901
+ }
2902
+ var init_assert4 = __esm({
2903
+ "../../node_modules/@math.gl/core/dist/esm/lib/assert.js"() {
2904
+ }
2905
+ });
2906
+
2907
+ // ../../node_modules/@math.gl/core/dist/esm/lib/common.js
2908
+ function formatValue(value, {
2909
+ precision = config.precision
2910
+ } = {}) {
2911
+ value = round(value);
2912
+ return "".concat(parseFloat(value.toPrecision(precision)));
2913
+ }
2914
+ function isArray(value) {
2915
+ return Array.isArray(value) || ArrayBuffer.isView(value) && !(value instanceof DataView);
2916
+ }
2917
+ function equals(a2, b, epsilon) {
2918
+ const oldEpsilon = config.EPSILON;
2919
+ if (epsilon) {
2920
+ config.EPSILON = epsilon;
2921
+ }
2922
+ try {
2923
+ if (a2 === b) {
2924
+ return true;
2925
+ }
2926
+ if (isArray(a2) && isArray(b)) {
2927
+ if (a2.length !== b.length) {
2928
+ return false;
2929
+ }
2930
+ for (let i2 = 0; i2 < a2.length; ++i2) {
2931
+ if (!equals(a2[i2], b[i2])) {
2932
+ return false;
2933
+ }
2934
+ }
2935
+ return true;
2936
+ }
2937
+ if (a2 && a2.equals) {
2938
+ return a2.equals(b);
2939
+ }
2940
+ if (b && b.equals) {
2941
+ return b.equals(a2);
2942
+ }
2943
+ if (typeof a2 === "number" && typeof b === "number") {
2944
+ return Math.abs(a2 - b) <= config.EPSILON * Math.max(1, Math.abs(a2), Math.abs(b));
2945
+ }
2946
+ return false;
2947
+ } finally {
2948
+ config.EPSILON = oldEpsilon;
2949
+ }
2950
+ }
2951
+ function round(value) {
2952
+ return Math.round(value / config.EPSILON) * config.EPSILON;
2953
+ }
2954
+ var RADIANS_TO_DEGREES, DEGREES_TO_RADIANS, config;
2955
+ var init_common = __esm({
2956
+ "../../node_modules/@math.gl/core/dist/esm/lib/common.js"() {
2957
+ RADIANS_TO_DEGREES = 1 / Math.PI * 180;
2958
+ DEGREES_TO_RADIANS = 1 / 180 * Math.PI;
2959
+ config = {
2960
+ EPSILON: 1e-12,
2961
+ debug: false,
2962
+ precision: 4,
2963
+ printTypes: false,
2964
+ printDegrees: false,
2965
+ printRowMajor: true
2966
+ };
2967
+ }
2968
+ });
2969
+
2970
+ // ../../node_modules/@math.gl/core/dist/esm/classes/base/math-array.js
2971
+ function _extendableBuiltin(cls) {
2972
+ function ExtendableBuiltin() {
2973
+ var instance = Reflect.construct(cls, Array.from(arguments));
2974
+ Object.setPrototypeOf(instance, Object.getPrototypeOf(this));
2975
+ return instance;
2976
+ }
2977
+ ExtendableBuiltin.prototype = Object.create(cls.prototype, {
2978
+ constructor: {
2979
+ value: cls,
2980
+ enumerable: false,
2981
+ writable: true,
2982
+ configurable: true
2983
+ }
2984
+ });
2985
+ if (Object.setPrototypeOf) {
2986
+ Object.setPrototypeOf(ExtendableBuiltin, cls);
2987
+ } else {
2988
+ ExtendableBuiltin.__proto__ = cls;
2989
+ }
2990
+ return ExtendableBuiltin;
2991
+ }
2992
+ var MathArray;
2993
+ var init_math_array = __esm({
2994
+ "../../node_modules/@math.gl/core/dist/esm/classes/base/math-array.js"() {
2995
+ init_common();
2996
+ MathArray = class extends _extendableBuiltin(Array) {
2997
+ clone() {
2998
+ return new this.constructor().copy(this);
2999
+ }
3000
+ fromArray(array, offset = 0) {
3001
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3002
+ this[i2] = array[i2 + offset];
3003
+ }
3004
+ return this.check();
3005
+ }
3006
+ toArray(targetArray = [], offset = 0) {
3007
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3008
+ targetArray[offset + i2] = this[i2];
3009
+ }
3010
+ return targetArray;
3011
+ }
3012
+ from(arrayOrObject) {
3013
+ return Array.isArray(arrayOrObject) ? this.copy(arrayOrObject) : this.fromObject(arrayOrObject);
3014
+ }
3015
+ to(arrayOrObject) {
3016
+ if (arrayOrObject === this) {
3017
+ return this;
3018
+ }
3019
+ return isArray(arrayOrObject) ? this.toArray(arrayOrObject) : this.toObject(arrayOrObject);
3020
+ }
3021
+ toTarget(target) {
3022
+ return target ? this.to(target) : this;
3023
+ }
3024
+ toFloat32Array() {
3025
+ return new Float32Array(this);
3026
+ }
3027
+ toString() {
3028
+ return this.formatString(config);
3029
+ }
3030
+ formatString(opts) {
3031
+ let string = "";
3032
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3033
+ string += (i2 > 0 ? ", " : "") + formatValue(this[i2], opts);
3034
+ }
3035
+ return "".concat(opts.printTypes ? this.constructor.name : "", "[").concat(string, "]");
3036
+ }
3037
+ equals(array) {
3038
+ if (!array || this.length !== array.length) {
3039
+ return false;
3040
+ }
3041
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3042
+ if (!equals(this[i2], array[i2])) {
3043
+ return false;
3044
+ }
3045
+ }
3046
+ return true;
3047
+ }
3048
+ exactEquals(array) {
3049
+ if (!array || this.length !== array.length) {
3050
+ return false;
3051
+ }
3052
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3053
+ if (this[i2] !== array[i2]) {
3054
+ return false;
3055
+ }
3056
+ }
3057
+ return true;
3058
+ }
3059
+ negate() {
3060
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3061
+ this[i2] = -this[i2];
3062
+ }
3063
+ return this.check();
3064
+ }
3065
+ lerp(a2, b, t2) {
3066
+ if (t2 === void 0) {
3067
+ return this.lerp(this, a2, b);
3068
+ }
3069
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3070
+ const ai = a2[i2];
3071
+ this[i2] = ai + t2 * (b[i2] - ai);
3072
+ }
3073
+ return this.check();
3074
+ }
3075
+ min(vector) {
3076
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3077
+ this[i2] = Math.min(vector[i2], this[i2]);
3078
+ }
3079
+ return this.check();
3080
+ }
3081
+ max(vector) {
3082
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3083
+ this[i2] = Math.max(vector[i2], this[i2]);
3084
+ }
3085
+ return this.check();
3086
+ }
3087
+ clamp(minVector, maxVector) {
3088
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3089
+ this[i2] = Math.min(Math.max(this[i2], minVector[i2]), maxVector[i2]);
3090
+ }
3091
+ return this.check();
3092
+ }
3093
+ add(...vectors) {
3094
+ for (const vector of vectors) {
3095
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3096
+ this[i2] += vector[i2];
3097
+ }
3098
+ }
3099
+ return this.check();
3100
+ }
3101
+ subtract(...vectors) {
3102
+ for (const vector of vectors) {
3103
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3104
+ this[i2] -= vector[i2];
3105
+ }
3106
+ }
3107
+ return this.check();
3108
+ }
3109
+ scale(scale2) {
3110
+ if (typeof scale2 === "number") {
3111
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3112
+ this[i2] *= scale2;
3113
+ }
3114
+ } else {
3115
+ for (let i2 = 0; i2 < this.ELEMENTS && i2 < scale2.length; ++i2) {
3116
+ this[i2] *= scale2[i2];
3117
+ }
3118
+ }
3119
+ return this.check();
3120
+ }
3121
+ multiplyByScalar(scalar) {
3122
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3123
+ this[i2] *= scalar;
3124
+ }
3125
+ return this.check();
3126
+ }
3127
+ check() {
3128
+ if (config.debug && !this.validate()) {
3129
+ throw new Error("math.gl: ".concat(this.constructor.name, " some fields set to invalid numbers'"));
3130
+ }
3131
+ return this;
3132
+ }
3133
+ validate() {
3134
+ let valid = this.length === this.ELEMENTS;
3135
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3136
+ valid = valid && Number.isFinite(this[i2]);
3137
+ }
3138
+ return valid;
3139
+ }
3140
+ sub(a2) {
3141
+ return this.subtract(a2);
3142
+ }
3143
+ setScalar(a2) {
3144
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3145
+ this[i2] = a2;
3146
+ }
3147
+ return this.check();
3148
+ }
3149
+ addScalar(a2) {
3150
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3151
+ this[i2] += a2;
3152
+ }
3153
+ return this.check();
3154
+ }
3155
+ subScalar(a2) {
3156
+ return this.addScalar(-a2);
3157
+ }
3158
+ multiplyScalar(scalar) {
3159
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3160
+ this[i2] *= scalar;
3161
+ }
3162
+ return this.check();
3163
+ }
3164
+ divideScalar(a2) {
3165
+ return this.multiplyByScalar(1 / a2);
3166
+ }
3167
+ clampScalar(min, max) {
3168
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3169
+ this[i2] = Math.min(Math.max(this[i2], min), max);
3170
+ }
3171
+ return this.check();
3172
+ }
3173
+ get elements() {
3174
+ return this;
3175
+ }
3176
+ };
3177
+ }
3178
+ });
3179
+
3180
+ // ../../node_modules/@math.gl/core/dist/esm/lib/validators.js
3181
+ function validateVector(v, length) {
3182
+ if (v.length !== length) {
3183
+ return false;
3184
+ }
3185
+ for (let i2 = 0; i2 < v.length; ++i2) {
3186
+ if (!Number.isFinite(v[i2])) {
3187
+ return false;
3188
+ }
3189
+ }
3190
+ return true;
3191
+ }
3192
+ function checkNumber(value) {
3193
+ if (!Number.isFinite(value)) {
3194
+ throw new Error("Invalid number ".concat(value));
3195
+ }
3196
+ return value;
3197
+ }
3198
+ function checkVector(v, length, callerName = "") {
3199
+ if (config.debug && !validateVector(v, length)) {
3200
+ throw new Error("math.gl: ".concat(callerName, " some fields set to invalid numbers'"));
3201
+ }
3202
+ return v;
3203
+ }
3204
+ var init_validators = __esm({
3205
+ "../../node_modules/@math.gl/core/dist/esm/lib/validators.js"() {
3206
+ init_common();
3207
+ }
3208
+ });
3209
+
3210
+ // ../../node_modules/@math.gl/core/dist/esm/classes/base/vector.js
3211
+ var Vector;
3212
+ var init_vector = __esm({
3213
+ "../../node_modules/@math.gl/core/dist/esm/classes/base/vector.js"() {
3214
+ init_math_array();
3215
+ init_validators();
3216
+ init_assert4();
3217
+ Vector = class extends MathArray {
3218
+ get x() {
3219
+ return this[0];
3220
+ }
3221
+ set x(value) {
3222
+ this[0] = checkNumber(value);
3223
+ }
3224
+ get y() {
3225
+ return this[1];
3226
+ }
3227
+ set y(value) {
3228
+ this[1] = checkNumber(value);
3229
+ }
3230
+ len() {
3231
+ return Math.sqrt(this.lengthSquared());
3232
+ }
3233
+ magnitude() {
3234
+ return this.len();
3235
+ }
3236
+ lengthSquared() {
3237
+ let length = 0;
3238
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3239
+ length += this[i2] * this[i2];
3240
+ }
3241
+ return length;
3242
+ }
3243
+ magnitudeSquared() {
3244
+ return this.lengthSquared();
3245
+ }
3246
+ distance(mathArray) {
3247
+ return Math.sqrt(this.distanceSquared(mathArray));
3248
+ }
3249
+ distanceSquared(mathArray) {
3250
+ let length = 0;
3251
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3252
+ const dist = this[i2] - mathArray[i2];
3253
+ length += dist * dist;
3254
+ }
3255
+ return checkNumber(length);
3256
+ }
3257
+ dot(mathArray) {
3258
+ let product = 0;
3259
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3260
+ product += this[i2] * mathArray[i2];
3261
+ }
3262
+ return checkNumber(product);
3263
+ }
3264
+ normalize() {
3265
+ const length = this.magnitude();
3266
+ if (length !== 0) {
3267
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3268
+ this[i2] /= length;
3269
+ }
3270
+ }
3271
+ return this.check();
3272
+ }
3273
+ multiply(...vectors) {
3274
+ for (const vector of vectors) {
3275
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3276
+ this[i2] *= vector[i2];
3277
+ }
3278
+ }
3279
+ return this.check();
3280
+ }
3281
+ divide(...vectors) {
3282
+ for (const vector of vectors) {
3283
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3284
+ this[i2] /= vector[i2];
3285
+ }
3286
+ }
3287
+ return this.check();
3288
+ }
3289
+ lengthSq() {
3290
+ return this.lengthSquared();
3291
+ }
3292
+ distanceTo(vector) {
3293
+ return this.distance(vector);
3294
+ }
3295
+ distanceToSquared(vector) {
3296
+ return this.distanceSquared(vector);
3297
+ }
3298
+ getComponent(i2) {
3299
+ assert4(i2 >= 0 && i2 < this.ELEMENTS, "index is out of range");
3300
+ return checkNumber(this[i2]);
3301
+ }
3302
+ setComponent(i2, value) {
3303
+ assert4(i2 >= 0 && i2 < this.ELEMENTS, "index is out of range");
3304
+ this[i2] = value;
3305
+ return this.check();
3306
+ }
3307
+ addVectors(a2, b) {
3308
+ return this.copy(a2).add(b);
3309
+ }
3310
+ subVectors(a2, b) {
3311
+ return this.copy(a2).subtract(b);
3312
+ }
3313
+ multiplyVectors(a2, b) {
3314
+ return this.copy(a2).multiply(b);
3315
+ }
3316
+ addScaledVector(a2, b) {
3317
+ return this.add(new this.constructor(a2).multiplyScalar(b));
3318
+ }
3319
+ };
3320
+ }
3321
+ });
3322
+
3323
+ // ../../node_modules/gl-matrix/esm/common.js
3324
+ var ARRAY_TYPE, degree;
3325
+ var init_common2 = __esm({
3326
+ "../../node_modules/gl-matrix/esm/common.js"() {
3327
+ ARRAY_TYPE = typeof Float32Array !== "undefined" ? Float32Array : Array;
3328
+ degree = Math.PI / 180;
3329
+ if (!Math.hypot)
3330
+ Math.hypot = function() {
3331
+ var y = 0, i2 = arguments.length;
3332
+ while (i2--) {
3333
+ y += arguments[i2] * arguments[i2];
3334
+ }
3335
+ return Math.sqrt(y);
3336
+ };
3337
+ }
3338
+ });
3339
+
3340
+ // ../../node_modules/gl-matrix/esm/vec2.js
3341
+ function create() {
3342
+ var out = new ARRAY_TYPE(2);
3343
+ if (ARRAY_TYPE != Float32Array) {
3344
+ out[0] = 0;
3345
+ out[1] = 0;
3346
+ }
3347
+ return out;
3348
+ }
3349
+ function transformMat3(out, a2, m) {
3350
+ var x = a2[0], y = a2[1];
3351
+ out[0] = m[0] * x + m[3] * y + m[6];
3352
+ out[1] = m[1] * x + m[4] * y + m[7];
3353
+ return out;
3354
+ }
3355
+ var forEach;
3356
+ var init_vec2 = __esm({
3357
+ "../../node_modules/gl-matrix/esm/vec2.js"() {
3358
+ init_common2();
3359
+ forEach = function() {
3360
+ var vec = create();
3361
+ return function(a2, stride, offset, count, fn, arg) {
3362
+ var i2, l2;
3363
+ if (!stride) {
3364
+ stride = 2;
3365
+ }
3366
+ if (!offset) {
3367
+ offset = 0;
3368
+ }
3369
+ if (count) {
3370
+ l2 = Math.min(count * stride + offset, a2.length);
3371
+ } else {
3372
+ l2 = a2.length;
3373
+ }
3374
+ for (i2 = offset; i2 < l2; i2 += stride) {
3375
+ vec[0] = a2[i2];
3376
+ vec[1] = a2[i2 + 1];
3377
+ fn(vec, vec, arg);
3378
+ a2[i2] = vec[0];
3379
+ a2[i2 + 1] = vec[1];
3380
+ }
3381
+ return a2;
3382
+ };
3383
+ }();
3384
+ }
3385
+ });
3386
+
3387
+ // ../../node_modules/@math.gl/core/dist/esm/lib/gl-matrix-extras.js
3388
+ function vec3_transformMat4AsVector(out, a2, m) {
3389
+ const x = a2[0];
3390
+ const y = a2[1];
3391
+ const z = a2[2];
3392
+ const w = m[3] * x + m[7] * y + m[11] * z || 1;
3393
+ out[0] = (m[0] * x + m[4] * y + m[8] * z) / w;
3394
+ out[1] = (m[1] * x + m[5] * y + m[9] * z) / w;
3395
+ out[2] = (m[2] * x + m[6] * y + m[10] * z) / w;
3396
+ return out;
3397
+ }
3398
+ function vec3_transformMat2(out, a2, m) {
3399
+ const x = a2[0];
3400
+ const y = a2[1];
3401
+ out[0] = m[0] * x + m[2] * y;
3402
+ out[1] = m[1] * x + m[3] * y;
3403
+ out[2] = a2[2];
3404
+ return out;
3405
+ }
3406
+ function vec4_transformMat3(out, a2, m) {
3407
+ const x = a2[0];
3408
+ const y = a2[1];
3409
+ const z = a2[2];
3410
+ out[0] = m[0] * x + m[3] * y + m[6] * z;
3411
+ out[1] = m[1] * x + m[4] * y + m[7] * z;
3412
+ out[2] = m[2] * x + m[5] * y + m[8] * z;
3413
+ out[3] = a2[3];
3414
+ return out;
3415
+ }
3416
+ var init_gl_matrix_extras = __esm({
3417
+ "../../node_modules/@math.gl/core/dist/esm/lib/gl-matrix-extras.js"() {
3418
+ }
3419
+ });
3420
+
3421
+ // ../../node_modules/gl-matrix/esm/vec3.js
3422
+ function create2() {
3423
+ var out = new ARRAY_TYPE(3);
3424
+ if (ARRAY_TYPE != Float32Array) {
3425
+ out[0] = 0;
3426
+ out[1] = 0;
3427
+ out[2] = 0;
3428
+ }
3429
+ return out;
3430
+ }
3431
+ function dot(a2, b) {
3432
+ return a2[0] * b[0] + a2[1] * b[1] + a2[2] * b[2];
3433
+ }
3434
+ function cross(out, a2, b) {
3435
+ var ax = a2[0], ay = a2[1], az = a2[2];
3436
+ var bx = b[0], by = b[1], bz = b[2];
3437
+ out[0] = ay * bz - az * by;
3438
+ out[1] = az * bx - ax * bz;
3439
+ out[2] = ax * by - ay * bx;
3440
+ return out;
3441
+ }
3442
+ function transformMat4(out, a2, m) {
3443
+ var x = a2[0], y = a2[1], z = a2[2];
3444
+ var w = m[3] * x + m[7] * y + m[11] * z + m[15];
3445
+ w = w || 1;
3446
+ out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;
3447
+ out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;
3448
+ out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;
3449
+ return out;
3450
+ }
3451
+ function transformMat32(out, a2, m) {
3452
+ var x = a2[0], y = a2[1], z = a2[2];
3453
+ out[0] = x * m[0] + y * m[3] + z * m[6];
3454
+ out[1] = x * m[1] + y * m[4] + z * m[7];
3455
+ out[2] = x * m[2] + y * m[5] + z * m[8];
3456
+ return out;
3457
+ }
3458
+ function transformQuat(out, a2, q) {
3459
+ var qx = q[0], qy = q[1], qz = q[2], qw = q[3];
3460
+ var x = a2[0], y = a2[1], z = a2[2];
3461
+ var uvx = qy * z - qz * y, uvy = qz * x - qx * z, uvz = qx * y - qy * x;
3462
+ var uuvx = qy * uvz - qz * uvy, uuvy = qz * uvx - qx * uvz, uuvz = qx * uvy - qy * uvx;
3463
+ var w2 = qw * 2;
3464
+ uvx *= w2;
3465
+ uvy *= w2;
3466
+ uvz *= w2;
3467
+ uuvx *= 2;
3468
+ uuvy *= 2;
3469
+ uuvz *= 2;
3470
+ out[0] = x + uvx + uuvx;
3471
+ out[1] = y + uvy + uuvy;
3472
+ out[2] = z + uvz + uuvz;
3473
+ return out;
3474
+ }
3475
+ function rotateX(out, a2, b, rad) {
3476
+ var p2 = [], r2 = [];
3477
+ p2[0] = a2[0] - b[0];
3478
+ p2[1] = a2[1] - b[1];
3479
+ p2[2] = a2[2] - b[2];
3480
+ r2[0] = p2[0];
3481
+ r2[1] = p2[1] * Math.cos(rad) - p2[2] * Math.sin(rad);
3482
+ r2[2] = p2[1] * Math.sin(rad) + p2[2] * Math.cos(rad);
3483
+ out[0] = r2[0] + b[0];
3484
+ out[1] = r2[1] + b[1];
3485
+ out[2] = r2[2] + b[2];
3486
+ return out;
3487
+ }
3488
+ function rotateY(out, a2, b, rad) {
3489
+ var p2 = [], r2 = [];
3490
+ p2[0] = a2[0] - b[0];
3491
+ p2[1] = a2[1] - b[1];
3492
+ p2[2] = a2[2] - b[2];
3493
+ r2[0] = p2[2] * Math.sin(rad) + p2[0] * Math.cos(rad);
3494
+ r2[1] = p2[1];
3495
+ r2[2] = p2[2] * Math.cos(rad) - p2[0] * Math.sin(rad);
3496
+ out[0] = r2[0] + b[0];
3497
+ out[1] = r2[1] + b[1];
3498
+ out[2] = r2[2] + b[2];
3499
+ return out;
3500
+ }
3501
+ function rotateZ(out, a2, b, rad) {
3502
+ var p2 = [], r2 = [];
3503
+ p2[0] = a2[0] - b[0];
3504
+ p2[1] = a2[1] - b[1];
3505
+ p2[2] = a2[2] - b[2];
3506
+ r2[0] = p2[0] * Math.cos(rad) - p2[1] * Math.sin(rad);
3507
+ r2[1] = p2[0] * Math.sin(rad) + p2[1] * Math.cos(rad);
3508
+ r2[2] = p2[2];
3509
+ out[0] = r2[0] + b[0];
3510
+ out[1] = r2[1] + b[1];
3511
+ out[2] = r2[2] + b[2];
3512
+ return out;
3513
+ }
3514
+ function angle(a2, b) {
3515
+ var ax = a2[0], ay = a2[1], az = a2[2], bx = b[0], by = b[1], bz = b[2], mag1 = Math.sqrt(ax * ax + ay * ay + az * az), mag2 = Math.sqrt(bx * bx + by * by + bz * bz), mag = mag1 * mag2, cosine = mag && dot(a2, b) / mag;
3516
+ return Math.acos(Math.min(Math.max(cosine, -1), 1));
3517
+ }
3518
+ var forEach2;
3519
+ var init_vec3 = __esm({
3520
+ "../../node_modules/gl-matrix/esm/vec3.js"() {
3521
+ init_common2();
3522
+ forEach2 = function() {
3523
+ var vec = create2();
3524
+ return function(a2, stride, offset, count, fn, arg) {
3525
+ var i2, l2;
3526
+ if (!stride) {
3527
+ stride = 3;
3528
+ }
3529
+ if (!offset) {
3530
+ offset = 0;
3531
+ }
3532
+ if (count) {
3533
+ l2 = Math.min(count * stride + offset, a2.length);
3534
+ } else {
3535
+ l2 = a2.length;
3536
+ }
3537
+ for (i2 = offset; i2 < l2; i2 += stride) {
3538
+ vec[0] = a2[i2];
3539
+ vec[1] = a2[i2 + 1];
3540
+ vec[2] = a2[i2 + 2];
3541
+ fn(vec, vec, arg);
3542
+ a2[i2] = vec[0];
3543
+ a2[i2 + 1] = vec[1];
3544
+ a2[i2 + 2] = vec[2];
3545
+ }
3546
+ return a2;
3547
+ };
3548
+ }();
3549
+ }
3550
+ });
3551
+
3552
+ // ../../node_modules/@math.gl/core/dist/esm/classes/vector3.js
3553
+ var ORIGIN, ZERO, Vector3;
3554
+ var init_vector3 = __esm({
3555
+ "../../node_modules/@math.gl/core/dist/esm/classes/vector3.js"() {
3556
+ init_vector();
3557
+ init_common();
3558
+ init_validators();
3559
+ init_vec3();
3560
+ init_gl_matrix_extras();
3561
+ ORIGIN = [0, 0, 0];
3562
+ Vector3 = class extends Vector {
3563
+ static get ZERO() {
3564
+ if (!ZERO) {
3565
+ ZERO = new Vector3(0, 0, 0);
3566
+ Object.freeze(ZERO);
3567
+ }
3568
+ return ZERO;
3569
+ }
3570
+ constructor(x = 0, y = 0, z = 0) {
3571
+ super(-0, -0, -0);
3572
+ if (arguments.length === 1 && isArray(x)) {
3573
+ this.copy(x);
3574
+ } else {
3575
+ if (config.debug) {
3576
+ checkNumber(x);
3577
+ checkNumber(y);
3578
+ checkNumber(z);
3579
+ }
3580
+ this[0] = x;
3581
+ this[1] = y;
3582
+ this[2] = z;
3583
+ }
3584
+ }
3585
+ set(x, y, z) {
3586
+ this[0] = x;
3587
+ this[1] = y;
3588
+ this[2] = z;
3589
+ return this.check();
3590
+ }
3591
+ copy(array) {
3592
+ this[0] = array[0];
3593
+ this[1] = array[1];
3594
+ this[2] = array[2];
3595
+ return this.check();
3596
+ }
3597
+ fromObject(object) {
3598
+ if (config.debug) {
3599
+ checkNumber(object.x);
3600
+ checkNumber(object.y);
3601
+ checkNumber(object.z);
3602
+ }
3603
+ this[0] = object.x;
3604
+ this[1] = object.y;
3605
+ this[2] = object.z;
3606
+ return this.check();
3607
+ }
3608
+ toObject(object) {
3609
+ object.x = this[0];
3610
+ object.y = this[1];
3611
+ object.z = this[2];
3612
+ return object;
3613
+ }
3614
+ get ELEMENTS() {
3615
+ return 3;
3616
+ }
3617
+ get z() {
3618
+ return this[2];
3619
+ }
3620
+ set z(value) {
3621
+ this[2] = checkNumber(value);
3622
+ }
3623
+ angle(vector) {
3624
+ return angle(this, vector);
3625
+ }
3626
+ cross(vector) {
3627
+ cross(this, this, vector);
3628
+ return this.check();
3629
+ }
3630
+ rotateX({
3631
+ radians,
3632
+ origin = ORIGIN
3633
+ }) {
3634
+ rotateX(this, this, origin, radians);
3635
+ return this.check();
3636
+ }
3637
+ rotateY({
3638
+ radians,
3639
+ origin = ORIGIN
3640
+ }) {
3641
+ rotateY(this, this, origin, radians);
3642
+ return this.check();
3643
+ }
3644
+ rotateZ({
3645
+ radians,
3646
+ origin = ORIGIN
3647
+ }) {
3648
+ rotateZ(this, this, origin, radians);
3649
+ return this.check();
3650
+ }
3651
+ transform(matrix4) {
3652
+ return this.transformAsPoint(matrix4);
3653
+ }
3654
+ transformAsPoint(matrix4) {
3655
+ transformMat4(this, this, matrix4);
3656
+ return this.check();
3657
+ }
3658
+ transformAsVector(matrix4) {
3659
+ vec3_transformMat4AsVector(this, this, matrix4);
3660
+ return this.check();
3661
+ }
3662
+ transformByMatrix3(matrix3) {
3663
+ transformMat32(this, this, matrix3);
3664
+ return this.check();
3665
+ }
3666
+ transformByMatrix2(matrix2) {
3667
+ vec3_transformMat2(this, this, matrix2);
3668
+ return this.check();
3669
+ }
3670
+ transformByQuaternion(quaternion) {
3671
+ transformQuat(this, this, quaternion);
3672
+ return this.check();
3673
+ }
3674
+ };
3675
+ }
3676
+ });
3677
+
3678
+ // ../../node_modules/@math.gl/core/dist/esm/classes/base/matrix.js
3679
+ var Matrix;
3680
+ var init_matrix = __esm({
3681
+ "../../node_modules/@math.gl/core/dist/esm/classes/base/matrix.js"() {
3682
+ init_math_array();
3683
+ init_validators();
3684
+ init_common();
3685
+ Matrix = class extends MathArray {
3686
+ toString() {
3687
+ let string = "[";
3688
+ if (config.printRowMajor) {
3689
+ string += "row-major:";
3690
+ for (let row = 0; row < this.RANK; ++row) {
3691
+ for (let col = 0; col < this.RANK; ++col) {
3692
+ string += " ".concat(this[col * this.RANK + row]);
3693
+ }
3694
+ }
3695
+ } else {
3696
+ string += "column-major:";
3697
+ for (let i2 = 0; i2 < this.ELEMENTS; ++i2) {
3698
+ string += " ".concat(this[i2]);
3699
+ }
3700
+ }
3701
+ string += "]";
3702
+ return string;
3703
+ }
3704
+ getElementIndex(row, col) {
3705
+ return col * this.RANK + row;
3706
+ }
3707
+ getElement(row, col) {
3708
+ return this[col * this.RANK + row];
3709
+ }
3710
+ setElement(row, col, value) {
3711
+ this[col * this.RANK + row] = checkNumber(value);
3712
+ return this;
3713
+ }
3714
+ getColumn(columnIndex, result = new Array(this.RANK).fill(-0)) {
3715
+ const firstIndex = columnIndex * this.RANK;
3716
+ for (let i2 = 0; i2 < this.RANK; ++i2) {
3717
+ result[i2] = this[firstIndex + i2];
3718
+ }
3719
+ return result;
3720
+ }
3721
+ setColumn(columnIndex, columnVector) {
3722
+ const firstIndex = columnIndex * this.RANK;
3723
+ for (let i2 = 0; i2 < this.RANK; ++i2) {
3724
+ this[firstIndex + i2] = columnVector[i2];
3725
+ }
3726
+ return this;
3727
+ }
3728
+ };
3729
+ }
3730
+ });
3731
+
3732
+ // ../../node_modules/gl-matrix/esm/mat3.js
3733
+ function transpose(out, a2) {
3734
+ if (out === a2) {
3735
+ var a01 = a2[1], a02 = a2[2], a12 = a2[5];
3736
+ out[1] = a2[3];
3737
+ out[2] = a2[6];
3738
+ out[3] = a01;
3739
+ out[5] = a2[7];
3740
+ out[6] = a02;
3741
+ out[7] = a12;
3742
+ } else {
3743
+ out[0] = a2[0];
3744
+ out[1] = a2[3];
3745
+ out[2] = a2[6];
3746
+ out[3] = a2[1];
3747
+ out[4] = a2[4];
3748
+ out[5] = a2[7];
3749
+ out[6] = a2[2];
3750
+ out[7] = a2[5];
3751
+ out[8] = a2[8];
3752
+ }
3753
+ return out;
3754
+ }
3755
+ function invert(out, a2) {
3756
+ var a00 = a2[0], a01 = a2[1], a02 = a2[2];
3757
+ var a10 = a2[3], a11 = a2[4], a12 = a2[5];
3758
+ var a20 = a2[6], a21 = a2[7], a22 = a2[8];
3759
+ var b01 = a22 * a11 - a12 * a21;
3760
+ var b11 = -a22 * a10 + a12 * a20;
3761
+ var b21 = a21 * a10 - a11 * a20;
3762
+ var det = a00 * b01 + a01 * b11 + a02 * b21;
3763
+ if (!det) {
3186
3764
  return null;
3187
3765
  }
3188
- if (Array.isArray(array)) {
3189
- return new ArrayType(array);
3190
- }
3191
- if (convertTypedArrays && !(array instanceof ArrayType)) {
3192
- return new ArrayType(array);
3766
+ det = 1 / det;
3767
+ out[0] = b01 * det;
3768
+ out[1] = (-a22 * a01 + a02 * a21) * det;
3769
+ out[2] = (a12 * a01 - a02 * a11) * det;
3770
+ out[3] = b11 * det;
3771
+ out[4] = (a22 * a00 - a02 * a20) * det;
3772
+ out[5] = (-a12 * a00 + a02 * a10) * det;
3773
+ out[6] = b21 * det;
3774
+ out[7] = (-a21 * a00 + a01 * a20) * det;
3775
+ out[8] = (a11 * a00 - a01 * a10) * det;
3776
+ return out;
3777
+ }
3778
+ function determinant(a2) {
3779
+ var a00 = a2[0], a01 = a2[1], a02 = a2[2];
3780
+ var a10 = a2[3], a11 = a2[4], a12 = a2[5];
3781
+ var a20 = a2[6], a21 = a2[7], a22 = a2[8];
3782
+ return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);
3783
+ }
3784
+ function multiply(out, a2, b) {
3785
+ var a00 = a2[0], a01 = a2[1], a02 = a2[2];
3786
+ var a10 = a2[3], a11 = a2[4], a12 = a2[5];
3787
+ var a20 = a2[6], a21 = a2[7], a22 = a2[8];
3788
+ var b00 = b[0], b01 = b[1], b02 = b[2];
3789
+ var b10 = b[3], b11 = b[4], b12 = b[5];
3790
+ var b20 = b[6], b21 = b[7], b22 = b[8];
3791
+ out[0] = b00 * a00 + b01 * a10 + b02 * a20;
3792
+ out[1] = b00 * a01 + b01 * a11 + b02 * a21;
3793
+ out[2] = b00 * a02 + b01 * a12 + b02 * a22;
3794
+ out[3] = b10 * a00 + b11 * a10 + b12 * a20;
3795
+ out[4] = b10 * a01 + b11 * a11 + b12 * a21;
3796
+ out[5] = b10 * a02 + b11 * a12 + b12 * a22;
3797
+ out[6] = b20 * a00 + b21 * a10 + b22 * a20;
3798
+ out[7] = b20 * a01 + b21 * a11 + b22 * a21;
3799
+ out[8] = b20 * a02 + b21 * a12 + b22 * a22;
3800
+ return out;
3801
+ }
3802
+ function translate(out, a2, v) {
3803
+ var a00 = a2[0], a01 = a2[1], a02 = a2[2], a10 = a2[3], a11 = a2[4], a12 = a2[5], a20 = a2[6], a21 = a2[7], a22 = a2[8], x = v[0], y = v[1];
3804
+ out[0] = a00;
3805
+ out[1] = a01;
3806
+ out[2] = a02;
3807
+ out[3] = a10;
3808
+ out[4] = a11;
3809
+ out[5] = a12;
3810
+ out[6] = x * a00 + y * a10 + a20;
3811
+ out[7] = x * a01 + y * a11 + a21;
3812
+ out[8] = x * a02 + y * a12 + a22;
3813
+ return out;
3814
+ }
3815
+ function rotate(out, a2, rad) {
3816
+ var a00 = a2[0], a01 = a2[1], a02 = a2[2], a10 = a2[3], a11 = a2[4], a12 = a2[5], a20 = a2[6], a21 = a2[7], a22 = a2[8], s2 = Math.sin(rad), c = Math.cos(rad);
3817
+ out[0] = c * a00 + s2 * a10;
3818
+ out[1] = c * a01 + s2 * a11;
3819
+ out[2] = c * a02 + s2 * a12;
3820
+ out[3] = c * a10 - s2 * a00;
3821
+ out[4] = c * a11 - s2 * a01;
3822
+ out[5] = c * a12 - s2 * a02;
3823
+ out[6] = a20;
3824
+ out[7] = a21;
3825
+ out[8] = a22;
3826
+ return out;
3827
+ }
3828
+ function scale(out, a2, v) {
3829
+ var x = v[0], y = v[1];
3830
+ out[0] = x * a2[0];
3831
+ out[1] = x * a2[1];
3832
+ out[2] = x * a2[2];
3833
+ out[3] = y * a2[3];
3834
+ out[4] = y * a2[4];
3835
+ out[5] = y * a2[5];
3836
+ out[6] = a2[6];
3837
+ out[7] = a2[7];
3838
+ out[8] = a2[8];
3839
+ return out;
3840
+ }
3841
+ function fromQuat(out, q) {
3842
+ var x = q[0], y = q[1], z = q[2], w = q[3];
3843
+ var x2 = x + x;
3844
+ var y2 = y + y;
3845
+ var z2 = z + z;
3846
+ var xx = x * x2;
3847
+ var yx = y * x2;
3848
+ var yy = y * y2;
3849
+ var zx = z * x2;
3850
+ var zy = z * y2;
3851
+ var zz = z * z2;
3852
+ var wx = w * x2;
3853
+ var wy = w * y2;
3854
+ var wz = w * z2;
3855
+ out[0] = 1 - yy - zz;
3856
+ out[3] = yx - wz;
3857
+ out[6] = zx + wy;
3858
+ out[1] = yx + wz;
3859
+ out[4] = 1 - xx - zz;
3860
+ out[7] = zy - wx;
3861
+ out[2] = zx - wy;
3862
+ out[5] = zy + wx;
3863
+ out[8] = 1 - xx - yy;
3864
+ return out;
3865
+ }
3866
+ var init_mat3 = __esm({
3867
+ "../../node_modules/gl-matrix/esm/mat3.js"() {
3193
3868
  }
3194
- return array;
3195
- }
3196
- var init_gltf_attribute_utils = __esm({
3197
- "src/lib/gltf-utils/gltf-attribute-utils.ts"() {
3198
- init_gltf_utils();
3869
+ });
3870
+
3871
+ // ../../node_modules/@math.gl/core/dist/esm/classes/matrix3.js
3872
+ function getZeroMatrix() {
3873
+ if (!ZERO_MATRIX3) {
3874
+ ZERO_MATRIX3 = new Matrix3([0, 0, 0, 0, 0, 0, 0, 0, 0]);
3875
+ Object.freeze(ZERO_MATRIX3);
3876
+ }
3877
+ return ZERO_MATRIX3;
3878
+ }
3879
+ function getIdentityMatrix() {
3880
+ if (!IDENTITY_MATRIX3) {
3881
+ IDENTITY_MATRIX3 = new Matrix3();
3882
+ Object.freeze(IDENTITY_MATRIX3);
3883
+ }
3884
+ return IDENTITY_MATRIX3;
3885
+ }
3886
+ var INDICES, IDENTITY_MATRIX, Matrix3, ZERO_MATRIX3, IDENTITY_MATRIX3;
3887
+ var init_matrix3 = __esm({
3888
+ "../../node_modules/@math.gl/core/dist/esm/classes/matrix3.js"() {
3889
+ init_matrix();
3890
+ init_validators();
3891
+ init_gl_matrix_extras();
3892
+ init_mat3();
3893
+ init_vec2();
3894
+ init_vec3();
3895
+ (function(INDICES2) {
3896
+ INDICES2[INDICES2["COL0ROW0"] = 0] = "COL0ROW0";
3897
+ INDICES2[INDICES2["COL0ROW1"] = 1] = "COL0ROW1";
3898
+ INDICES2[INDICES2["COL0ROW2"] = 2] = "COL0ROW2";
3899
+ INDICES2[INDICES2["COL1ROW0"] = 3] = "COL1ROW0";
3900
+ INDICES2[INDICES2["COL1ROW1"] = 4] = "COL1ROW1";
3901
+ INDICES2[INDICES2["COL1ROW2"] = 5] = "COL1ROW2";
3902
+ INDICES2[INDICES2["COL2ROW0"] = 6] = "COL2ROW0";
3903
+ INDICES2[INDICES2["COL2ROW1"] = 7] = "COL2ROW1";
3904
+ INDICES2[INDICES2["COL2ROW2"] = 8] = "COL2ROW2";
3905
+ })(INDICES || (INDICES = {}));
3906
+ IDENTITY_MATRIX = Object.freeze([1, 0, 0, 0, 1, 0, 0, 0, 1]);
3907
+ Matrix3 = class extends Matrix {
3908
+ static get IDENTITY() {
3909
+ return getIdentityMatrix();
3910
+ }
3911
+ static get ZERO() {
3912
+ return getZeroMatrix();
3913
+ }
3914
+ get ELEMENTS() {
3915
+ return 9;
3916
+ }
3917
+ get RANK() {
3918
+ return 3;
3919
+ }
3920
+ get INDICES() {
3921
+ return INDICES;
3922
+ }
3923
+ constructor(array, ...args) {
3924
+ super(-0, -0, -0, -0, -0, -0, -0, -0, -0);
3925
+ if (arguments.length === 1 && Array.isArray(array)) {
3926
+ this.copy(array);
3927
+ } else if (args.length > 0) {
3928
+ this.copy([array, ...args]);
3929
+ } else {
3930
+ this.identity();
3931
+ }
3932
+ }
3933
+ copy(array) {
3934
+ this[0] = array[0];
3935
+ this[1] = array[1];
3936
+ this[2] = array[2];
3937
+ this[3] = array[3];
3938
+ this[4] = array[4];
3939
+ this[5] = array[5];
3940
+ this[6] = array[6];
3941
+ this[7] = array[7];
3942
+ this[8] = array[8];
3943
+ return this.check();
3944
+ }
3945
+ identity() {
3946
+ return this.copy(IDENTITY_MATRIX);
3947
+ }
3948
+ fromObject(object) {
3949
+ return this.check();
3950
+ }
3951
+ fromQuaternion(q) {
3952
+ fromQuat(this, q);
3953
+ return this.check();
3954
+ }
3955
+ set(m00, m10, m20, m01, m11, m21, m02, m12, m22) {
3956
+ this[0] = m00;
3957
+ this[1] = m10;
3958
+ this[2] = m20;
3959
+ this[3] = m01;
3960
+ this[4] = m11;
3961
+ this[5] = m21;
3962
+ this[6] = m02;
3963
+ this[7] = m12;
3964
+ this[8] = m22;
3965
+ return this.check();
3966
+ }
3967
+ setRowMajor(m00, m01, m02, m10, m11, m12, m20, m21, m22) {
3968
+ this[0] = m00;
3969
+ this[1] = m10;
3970
+ this[2] = m20;
3971
+ this[3] = m01;
3972
+ this[4] = m11;
3973
+ this[5] = m21;
3974
+ this[6] = m02;
3975
+ this[7] = m12;
3976
+ this[8] = m22;
3977
+ return this.check();
3978
+ }
3979
+ determinant() {
3980
+ return determinant(this);
3981
+ }
3982
+ transpose() {
3983
+ transpose(this, this);
3984
+ return this.check();
3985
+ }
3986
+ invert() {
3987
+ invert(this, this);
3988
+ return this.check();
3989
+ }
3990
+ multiplyLeft(a2) {
3991
+ multiply(this, a2, this);
3992
+ return this.check();
3993
+ }
3994
+ multiplyRight(a2) {
3995
+ multiply(this, this, a2);
3996
+ return this.check();
3997
+ }
3998
+ rotate(radians) {
3999
+ rotate(this, this, radians);
4000
+ return this.check();
4001
+ }
4002
+ scale(factor) {
4003
+ if (Array.isArray(factor)) {
4004
+ scale(this, this, factor);
4005
+ } else {
4006
+ scale(this, this, [factor, factor]);
4007
+ }
4008
+ return this.check();
4009
+ }
4010
+ translate(vec) {
4011
+ translate(this, this, vec);
4012
+ return this.check();
4013
+ }
4014
+ transform(vector, result) {
4015
+ let out;
4016
+ switch (vector.length) {
4017
+ case 2:
4018
+ out = transformMat3(result || [-0, -0], vector, this);
4019
+ break;
4020
+ case 3:
4021
+ out = transformMat32(result || [-0, -0, -0], vector, this);
4022
+ break;
4023
+ case 4:
4024
+ out = vec4_transformMat3(result || [-0, -0, -0, -0], vector, this);
4025
+ break;
4026
+ default:
4027
+ throw new Error("Illegal vector");
4028
+ }
4029
+ checkVector(out, vector.length);
4030
+ return out;
4031
+ }
4032
+ transformVector(vector, result) {
4033
+ return this.transform(vector, result);
4034
+ }
4035
+ transformVector2(vector, result) {
4036
+ return this.transform(vector, result);
4037
+ }
4038
+ transformVector3(vector, result) {
4039
+ return this.transform(vector, result);
4040
+ }
4041
+ };
3199
4042
  }
3200
4043
  });
3201
4044
 
3202
- // src/lib/extensions/KHR_draco_mesh_compression.ts
3203
- var KHR_draco_mesh_compression_exports = {};
3204
- __export(KHR_draco_mesh_compression_exports, {
3205
- decode: () => decode3,
3206
- encode: () => encode,
3207
- name: () => name4,
3208
- preprocess: () => preprocess4
4045
+ // ../../node_modules/@math.gl/core/dist/esm/index.js
4046
+ var init_esm = __esm({
4047
+ "../../node_modules/@math.gl/core/dist/esm/index.js"() {
4048
+ init_vector3();
4049
+ init_matrix3();
4050
+ }
3209
4051
  });
3210
- function preprocess4(gltfData, options, context) {
3211
- const scenegraph = new GLTFScenegraph(gltfData);
3212
- for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {
3213
- if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {
3214
- }
4052
+
4053
+ // src/lib/gltf-utils/gltf-constants.ts
4054
+ var COMPONENTS, BYTES;
4055
+ var init_gltf_constants = __esm({
4056
+ "src/lib/gltf-utils/gltf-constants.ts"() {
4057
+ COMPONENTS = {
4058
+ SCALAR: 1,
4059
+ VEC2: 2,
4060
+ VEC3: 3,
4061
+ VEC4: 4,
4062
+ MAT2: 4,
4063
+ MAT3: 9,
4064
+ MAT4: 16
4065
+ };
4066
+ BYTES = {
4067
+ 5120: 1,
4068
+ 5121: 1,
4069
+ 5122: 2,
4070
+ 5123: 2,
4071
+ 5125: 4,
4072
+ 5126: 4
4073
+ };
3215
4074
  }
3216
- }
3217
- async function decode3(gltfData, options, context) {
3218
- if (!options?.gltf?.decompressMeshes) {
4075
+ });
4076
+
4077
+ // src/lib/extensions/KHR_texture_transform.ts
4078
+ var KHR_texture_transform_exports = {};
4079
+ __export(KHR_texture_transform_exports, {
4080
+ decode: () => decode4,
4081
+ name: () => name5
4082
+ });
4083
+ async function decode4(gltfData, options) {
4084
+ const gltfScenegraph = new GLTFScenegraph(gltfData);
4085
+ const extension = gltfScenegraph.getExtension(EXT_MESHOPT_TRANSFORM);
4086
+ if (!extension) {
3219
4087
  return;
3220
4088
  }
3221
- const scenegraph = new GLTFScenegraph(gltfData);
3222
- const promises = [];
3223
- for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {
3224
- if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {
3225
- promises.push(decompressPrimitive(scenegraph, primitive, options, context));
3226
- }
4089
+ const materials = gltfData.json.materials || [];
4090
+ for (let i2 = 0; i2 < materials.length; i2++) {
4091
+ transformTexCoords(i2, gltfData);
3227
4092
  }
3228
- await Promise.all(promises);
3229
- scenegraph.removeExtension(KHR_DRACO_MESH_COMPRESSION);
3230
4093
  }
3231
- function encode(gltfData, options = {}) {
3232
- const scenegraph = new GLTFScenegraph(gltfData);
3233
- for (const mesh of scenegraph.json.meshes || []) {
3234
- compressMesh(mesh, options);
3235
- scenegraph.addRequiredExtension(KHR_DRACO_MESH_COMPRESSION);
4094
+ function transformTexCoords(materialIndex, gltfData) {
4095
+ const processedTexCoords = [];
4096
+ const material = gltfData.json.materials?.[materialIndex];
4097
+ const baseColorTexture = material?.pbrMetallicRoughness?.baseColorTexture;
4098
+ if (baseColorTexture) {
4099
+ transformPrimitives(gltfData, materialIndex, baseColorTexture, processedTexCoords);
4100
+ }
4101
+ const emisiveTexture = material?.emissiveTexture;
4102
+ if (emisiveTexture) {
4103
+ transformPrimitives(gltfData, materialIndex, emisiveTexture, processedTexCoords);
4104
+ }
4105
+ const normalTexture = material?.normalTexture;
4106
+ if (normalTexture) {
4107
+ transformPrimitives(gltfData, materialIndex, normalTexture, processedTexCoords);
4108
+ }
4109
+ const occlusionTexture = material?.occlusionTexture;
4110
+ if (occlusionTexture) {
4111
+ transformPrimitives(gltfData, materialIndex, occlusionTexture, processedTexCoords);
4112
+ }
4113
+ const metallicRoughnessTexture = material?.pbrMetallicRoughness?.metallicRoughnessTexture;
4114
+ if (metallicRoughnessTexture) {
4115
+ transformPrimitives(gltfData, materialIndex, metallicRoughnessTexture, processedTexCoords);
3236
4116
  }
3237
4117
  }
3238
- async function decompressPrimitive(scenegraph, primitive, options, context) {
3239
- const dracoExtension = scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION);
3240
- if (!dracoExtension) {
4118
+ function transformPrimitives(gltfData, materialIndex, texture, processedTexCoords) {
4119
+ const transformParameters = getTransformParameters(texture, processedTexCoords);
4120
+ if (!transformParameters) {
3241
4121
  return;
3242
4122
  }
3243
- const buffer = scenegraph.getTypedArrayForBufferView(dracoExtension.bufferView);
3244
- const bufferCopy = sliceArrayBuffer(buffer.buffer, buffer.byteOffset);
3245
- const { parse: parse4 } = context;
3246
- const dracoOptions = { ...options };
3247
- delete dracoOptions["3d-tiles"];
3248
- const decodedData = await parse4(bufferCopy, DracoLoader2, dracoOptions, context);
3249
- const decodedAttributes = getGLTFAccessors(decodedData.attributes);
3250
- for (const [attributeName, decodedAttribute] of Object.entries(decodedAttributes)) {
3251
- if (attributeName in primitive.attributes) {
3252
- const accessorIndex = primitive.attributes[attributeName];
3253
- const accessor = scenegraph.getAccessor(accessorIndex);
3254
- if (accessor?.min && accessor?.max) {
3255
- decodedAttribute.min = accessor.min;
3256
- decodedAttribute.max = accessor.max;
4123
+ const meshes = gltfData.json.meshes || [];
4124
+ for (const mesh of meshes) {
4125
+ for (const primitive of mesh.primitives) {
4126
+ const material = primitive.material;
4127
+ if (Number.isFinite(material) && materialIndex === material) {
4128
+ transformPrimitive(gltfData, primitive, transformParameters);
3257
4129
  }
3258
4130
  }
3259
4131
  }
3260
- primitive.attributes = decodedAttributes;
3261
- if (decodedData.indices) {
3262
- primitive.indices = getGLTFAccessor(decodedData.indices);
3263
- }
3264
- checkPrimitive(primitive);
3265
4132
  }
3266
- function compressMesh(attributes, indices, mode = 4, options, context) {
3267
- if (!options.DracoWriter) {
3268
- throw new Error("options.gltf.DracoWriter not provided");
4133
+ function getTransformParameters(texture, processedTexCoords) {
4134
+ const textureInfo = texture.extensions?.[EXT_MESHOPT_TRANSFORM];
4135
+ const { texCoord: originalTexCoord = 0 } = texture;
4136
+ const { texCoord = originalTexCoord } = textureInfo;
4137
+ const isProcessed = processedTexCoords.findIndex(([original, newTexCoord]) => original === originalTexCoord && newTexCoord === texCoord) !== -1;
4138
+ if (!isProcessed) {
4139
+ const matrix = makeTransformationMatrix(textureInfo);
4140
+ if (originalTexCoord !== texCoord) {
4141
+ texture.texCoord = texCoord;
4142
+ }
4143
+ processedTexCoords.push([originalTexCoord, texCoord]);
4144
+ return { originalTexCoord, texCoord, matrix };
3269
4145
  }
3270
- const compressedData = options.DracoWriter.encodeSync({ attributes });
3271
- const decodedData = context?.parseSync?.({ attributes });
3272
- const fauxAccessors = options._addFauxAttributes(decodedData.attributes);
3273
- const bufferViewIndex = options.addBufferView(compressedData);
3274
- const glTFMesh = {
3275
- primitives: [
3276
- {
3277
- attributes: fauxAccessors,
3278
- mode,
3279
- extensions: {
3280
- [KHR_DRACO_MESH_COMPRESSION]: {
3281
- bufferView: bufferViewIndex,
3282
- attributes: fauxAccessors
3283
- }
4146
+ return null;
4147
+ }
4148
+ function transformPrimitive(gltfData, primitive, transformParameters) {
4149
+ const { originalTexCoord, texCoord, matrix } = transformParameters;
4150
+ const texCoordAccessor = primitive.attributes[`TEXCOORD_${originalTexCoord}`];
4151
+ if (Number.isFinite(texCoordAccessor)) {
4152
+ const accessor = gltfData.json.accessors?.[texCoordAccessor];
4153
+ if (accessor && accessor.bufferView) {
4154
+ const bufferView = gltfData.json.bufferViews?.[accessor.bufferView];
4155
+ if (bufferView) {
4156
+ const { arrayBuffer, byteOffset: bufferByteOffset } = gltfData.buffers[bufferView.buffer];
4157
+ const byteOffset = (bufferByteOffset || 0) + (accessor.byteOffset || 0) + (bufferView.byteOffset || 0);
4158
+ const { ArrayType, length } = getAccessorArrayTypeAndLength(accessor, bufferView);
4159
+ const bytes = BYTES[accessor.componentType];
4160
+ const components = COMPONENTS[accessor.type];
4161
+ const elementAddressScale = bufferView.byteStride || bytes * components;
4162
+ const result = new Float32Array(length);
4163
+ for (let i2 = 0; i2 < accessor.count; i2++) {
4164
+ const uv = new ArrayType(arrayBuffer, byteOffset + i2 * elementAddressScale, 2);
4165
+ scratchVector.set(uv[0], uv[1], 1);
4166
+ scratchVector.transformByMatrix3(matrix);
4167
+ result.set([scratchVector[0], scratchVector[1]], i2 * components);
4168
+ }
4169
+ if (originalTexCoord === texCoord) {
4170
+ updateGltf(accessor, bufferView, gltfData.buffers, result);
4171
+ } else {
4172
+ createAttribute(texCoord, accessor, primitive, gltfData, result);
3284
4173
  }
3285
4174
  }
3286
- ]
3287
- };
3288
- return glTFMesh;
3289
- }
3290
- function checkPrimitive(primitive) {
3291
- if (!primitive.attributes && Object.keys(primitive.attributes).length > 0) {
3292
- throw new Error("glTF: Empty primitive detected: Draco decompression failure?");
3293
- }
3294
- }
3295
- function* makeMeshPrimitiveIterator(scenegraph) {
3296
- for (const mesh of scenegraph.json.meshes || []) {
3297
- for (const primitive of mesh.primitives) {
3298
- yield primitive;
3299
4175
  }
3300
4176
  }
3301
4177
  }
3302
- var KHR_DRACO_MESH_COMPRESSION, name4;
3303
- var init_KHR_draco_mesh_compression = __esm({
3304
- "src/lib/extensions/KHR_draco_mesh_compression.ts"() {
3305
- init_src6();
3306
- init_src2();
4178
+ function updateGltf(accessor, bufferView, buffers, newTexCoordArray) {
4179
+ accessor.componentType = 5126;
4180
+ buffers.push({
4181
+ arrayBuffer: newTexCoordArray.buffer,
4182
+ byteOffset: 0,
4183
+ byteLength: newTexCoordArray.buffer.byteLength
4184
+ });
4185
+ bufferView.buffer = buffers.length - 1;
4186
+ bufferView.byteLength = newTexCoordArray.buffer.byteLength;
4187
+ bufferView.byteOffset = 0;
4188
+ delete bufferView.byteStride;
4189
+ }
4190
+ function createAttribute(newTexCoord, originalAccessor, primitive, gltfData, newTexCoordArray) {
4191
+ gltfData.buffers.push({
4192
+ arrayBuffer: newTexCoordArray.buffer,
4193
+ byteOffset: 0,
4194
+ byteLength: newTexCoordArray.buffer.byteLength
4195
+ });
4196
+ const bufferViews = gltfData.json.bufferViews;
4197
+ if (!bufferViews) {
4198
+ return;
4199
+ }
4200
+ bufferViews.push({
4201
+ buffer: gltfData.buffers.length - 1,
4202
+ byteLength: newTexCoordArray.buffer.byteLength,
4203
+ byteOffset: 0
4204
+ });
4205
+ const accessors = gltfData.json.accessors;
4206
+ if (!accessors) {
4207
+ return;
4208
+ }
4209
+ accessors.push({
4210
+ bufferView: bufferViews?.length - 1,
4211
+ byteOffset: 0,
4212
+ componentType: 5126,
4213
+ count: originalAccessor.count,
4214
+ type: "VEC2"
4215
+ });
4216
+ primitive.attributes[`TEXCOORD_${newTexCoord}`] = accessors.length - 1;
4217
+ }
4218
+ function makeTransformationMatrix(extensionData) {
4219
+ const { offset = [0, 0], rotation = 0, scale: scale2 = [1, 1] } = extensionData;
4220
+ const translationMatirx = new Matrix3().set(1, 0, 0, 0, 1, 0, offset[0], offset[1], 1);
4221
+ const rotationMatirx = scratchRotationMatrix.set(Math.cos(rotation), Math.sin(rotation), 0, -Math.sin(rotation), Math.cos(rotation), 0, 0, 0, 1);
4222
+ const scaleMatrix = scratchScaleMatrix.set(scale2[0], 0, 0, 0, scale2[1], 0, 0, 0, 1);
4223
+ return translationMatirx.multiplyRight(rotationMatirx).multiplyRight(scaleMatrix);
4224
+ }
4225
+ var EXT_MESHOPT_TRANSFORM, name5, scratchVector, scratchRotationMatrix, scratchScaleMatrix;
4226
+ var init_KHR_texture_transform = __esm({
4227
+ "src/lib/extensions/KHR_texture_transform.ts"() {
4228
+ init_esm();
4229
+ init_gltf_utils();
4230
+ init_gltf_constants();
3307
4231
  init_gltf_scenegraph();
3308
- init_gltf_attribute_utils();
3309
- KHR_DRACO_MESH_COMPRESSION = "KHR_draco_mesh_compression";
3310
- name4 = KHR_DRACO_MESH_COMPRESSION;
4232
+ EXT_MESHOPT_TRANSFORM = "KHR_texture_transform";
4233
+ name5 = EXT_MESHOPT_TRANSFORM;
4234
+ scratchVector = new Vector3();
4235
+ scratchRotationMatrix = new Matrix3();
4236
+ scratchScaleMatrix = new Matrix3();
3311
4237
  }
3312
4238
  });
3313
4239
 
3314
4240
  // src/lib/extensions/deprecated/KHR_lights_punctual.ts
3315
4241
  var KHR_lights_punctual_exports = {};
3316
4242
  __export(KHR_lights_punctual_exports, {
3317
- decode: () => decode4,
4243
+ decode: () => decode5,
3318
4244
  encode: () => encode2,
3319
- name: () => name5
4245
+ name: () => name6
3320
4246
  });
3321
- async function decode4(gltfData) {
4247
+ async function decode5(gltfData) {
3322
4248
  const gltfScenegraph = new GLTFScenegraph(gltfData);
3323
4249
  const { json } = gltfScenegraph;
3324
4250
  const extension = gltfScenegraph.getExtension(KHR_LIGHTS_PUNCTUAL);
@@ -3351,27 +4277,26 @@
3351
4277
  delete gltfScenegraph.json.lights;
3352
4278
  }
3353
4279
  }
3354
- var KHR_LIGHTS_PUNCTUAL, name5;
4280
+ var KHR_LIGHTS_PUNCTUAL, name6;
3355
4281
  var init_KHR_lights_punctual = __esm({
3356
4282
  "src/lib/extensions/deprecated/KHR_lights_punctual.ts"() {
3357
4283
  init_assert3();
3358
4284
  init_gltf_scenegraph();
3359
4285
  KHR_LIGHTS_PUNCTUAL = "KHR_lights_punctual";
3360
- name5 = KHR_LIGHTS_PUNCTUAL;
4286
+ name6 = KHR_LIGHTS_PUNCTUAL;
3361
4287
  }
3362
4288
  });
3363
4289
 
3364
4290
  // src/lib/extensions/deprecated/KHR_materials_unlit.ts
3365
4291
  var KHR_materials_unlit_exports = {};
3366
4292
  __export(KHR_materials_unlit_exports, {
3367
- decode: () => decode5,
4293
+ decode: () => decode6,
3368
4294
  encode: () => encode3,
3369
- name: () => name6
4295
+ name: () => name7
3370
4296
  });
3371
- async function decode5(gltfData) {
4297
+ async function decode6(gltfData) {
3372
4298
  const gltfScenegraph = new GLTFScenegraph(gltfData);
3373
4299
  const { json } = gltfScenegraph;
3374
- gltfScenegraph.removeExtension(KHR_MATERIALS_UNLIT);
3375
4300
  for (const material of json.materials || []) {
3376
4301
  const extension = material.extensions && material.extensions.KHR_materials_unlit;
3377
4302
  if (extension) {
@@ -3379,6 +4304,7 @@
3379
4304
  }
3380
4305
  gltfScenegraph.removeObjectExtension(material, KHR_MATERIALS_UNLIT);
3381
4306
  }
4307
+ gltfScenegraph.removeExtension(KHR_MATERIALS_UNLIT);
3382
4308
  }
3383
4309
  function encode3(gltfData) {
3384
4310
  const gltfScenegraph = new GLTFScenegraph(gltfData);
@@ -3393,23 +4319,23 @@
3393
4319
  }
3394
4320
  }
3395
4321
  }
3396
- var KHR_MATERIALS_UNLIT, name6;
4322
+ var KHR_MATERIALS_UNLIT, name7;
3397
4323
  var init_KHR_materials_unlit = __esm({
3398
4324
  "src/lib/extensions/deprecated/KHR_materials_unlit.ts"() {
3399
4325
  init_gltf_scenegraph();
3400
4326
  KHR_MATERIALS_UNLIT = "KHR_materials_unlit";
3401
- name6 = KHR_MATERIALS_UNLIT;
4327
+ name7 = KHR_MATERIALS_UNLIT;
3402
4328
  }
3403
4329
  });
3404
4330
 
3405
4331
  // src/lib/extensions/deprecated/KHR_techniques_webgl.ts
3406
4332
  var KHR_techniques_webgl_exports = {};
3407
4333
  __export(KHR_techniques_webgl_exports, {
3408
- decode: () => decode6,
4334
+ decode: () => decode7,
3409
4335
  encode: () => encode4,
3410
- name: () => name7
4336
+ name: () => name8
3411
4337
  });
3412
- async function decode6(gltfData) {
4338
+ async function decode7(gltfData) {
3413
4339
  const gltfScenegraph = new GLTFScenegraph(gltfData);
3414
4340
  const { json } = gltfScenegraph;
3415
4341
  const extension = gltfScenegraph.getExtension(KHR_TECHNIQUES_WEBGL);
@@ -3461,12 +4387,97 @@
3461
4387
  });
3462
4388
  return values;
3463
4389
  }
3464
- var KHR_TECHNIQUES_WEBGL, name7;
4390
+ var KHR_TECHNIQUES_WEBGL, name8;
3465
4391
  var init_KHR_techniques_webgl = __esm({
3466
4392
  "src/lib/extensions/deprecated/KHR_techniques_webgl.ts"() {
3467
4393
  init_gltf_scenegraph();
3468
4394
  KHR_TECHNIQUES_WEBGL = "KHR_techniques_webgl";
3469
- name7 = KHR_TECHNIQUES_WEBGL;
4395
+ name8 = KHR_TECHNIQUES_WEBGL;
4396
+ }
4397
+ });
4398
+
4399
+ // src/lib/extensions/deprecated/EXT_feature_metadata.ts
4400
+ var EXT_feature_metadata_exports = {};
4401
+ __export(EXT_feature_metadata_exports, {
4402
+ decode: () => decode8,
4403
+ name: () => name9
4404
+ });
4405
+ async function decode8(gltfData) {
4406
+ const scenegraph = new GLTFScenegraph(gltfData);
4407
+ decodeExtFeatureMetadata(scenegraph);
4408
+ }
4409
+ function decodeExtFeatureMetadata(scenegraph) {
4410
+ const extension = scenegraph.getExtension(EXT_FEATURE_METADATA);
4411
+ const schemaClasses = extension?.schema?.classes;
4412
+ const featureTables = extension?.featureTables;
4413
+ const featureTextures = extension?.featureTextures;
4414
+ if (featureTextures) {
4415
+ console.warn('featureTextures is not yet supported in the "EXT_feature_metadata" extension.');
4416
+ }
4417
+ if (schemaClasses && featureTables) {
4418
+ for (const schemaName in schemaClasses) {
4419
+ const schemaClass = schemaClasses[schemaName];
4420
+ const featureTable = findFeatureTableByName(featureTables, schemaName);
4421
+ if (featureTable) {
4422
+ handleFeatureTableProperties(scenegraph, featureTable, schemaClass);
4423
+ }
4424
+ }
4425
+ }
4426
+ }
4427
+ function handleFeatureTableProperties(scenegraph, featureTable, schemaClass) {
4428
+ for (const propertyName in schemaClass.properties) {
4429
+ const schemaProperty = schemaClass.properties[propertyName];
4430
+ const featureTableProperty = featureTable?.properties?.[propertyName];
4431
+ const numberOfFeatures = featureTable.count;
4432
+ if (featureTableProperty) {
4433
+ const data = getPropertyDataFromBinarySource(scenegraph, schemaProperty, numberOfFeatures, featureTableProperty);
4434
+ featureTableProperty.data = data;
4435
+ }
4436
+ }
4437
+ }
4438
+ function getPropertyDataFromBinarySource(scenegraph, schemaProperty, numberOfFeatures, featureTableProperty) {
4439
+ const bufferView = featureTableProperty.bufferView;
4440
+ let data = scenegraph.getTypedArrayForBufferView(bufferView);
4441
+ switch (schemaProperty.type) {
4442
+ case "STRING": {
4443
+ const stringOffsetBufferView = featureTableProperty.stringOffsetBufferView;
4444
+ const offsetsData = scenegraph.getTypedArrayForBufferView(stringOffsetBufferView);
4445
+ data = getStringAttributes(data, offsetsData, numberOfFeatures);
4446
+ break;
4447
+ }
4448
+ default:
4449
+ }
4450
+ return data;
4451
+ }
4452
+ function findFeatureTableByName(featureTables, schemaClassName) {
4453
+ for (const featureTableName in featureTables) {
4454
+ const featureTable = featureTables[featureTableName];
4455
+ if (featureTable.class === schemaClassName) {
4456
+ return featureTable;
4457
+ }
4458
+ }
4459
+ return null;
4460
+ }
4461
+ function getStringAttributes(data, offsetsData, stringsCount) {
4462
+ const stringsArray = [];
4463
+ const textDecoder = new TextDecoder("utf8");
4464
+ let stringOffset = 0;
4465
+ const bytesPerStringSize = 4;
4466
+ for (let index = 0; index < stringsCount; index++) {
4467
+ const stringByteSize = offsetsData[(index + 1) * bytesPerStringSize] - offsetsData[index * bytesPerStringSize];
4468
+ const stringData = data.subarray(stringOffset, stringByteSize + stringOffset);
4469
+ const stringAttribute = textDecoder.decode(stringData);
4470
+ stringsArray.push(stringAttribute);
4471
+ stringOffset += stringByteSize;
4472
+ }
4473
+ return stringsArray;
4474
+ }
4475
+ var EXT_FEATURE_METADATA, name9;
4476
+ var init_EXT_feature_metadata = __esm({
4477
+ "src/lib/extensions/deprecated/EXT_feature_metadata.ts"() {
4478
+ init_gltf_scenegraph();
4479
+ EXT_FEATURE_METADATA = "EXT_feature_metadata";
4480
+ name9 = EXT_FEATURE_METADATA;
3470
4481
  }
3471
4482
  });
3472
4483
 
@@ -3495,9 +4506,11 @@
3495
4506
  init_EXT_texture_webp();
3496
4507
  init_KHR_texture_basisu();
3497
4508
  init_KHR_draco_mesh_compression();
4509
+ init_KHR_texture_transform();
3498
4510
  init_KHR_lights_punctual();
3499
4511
  init_KHR_materials_unlit();
3500
4512
  init_KHR_techniques_webgl();
4513
+ init_EXT_feature_metadata();
3501
4514
  EXTENSIONS2 = [
3502
4515
  EXT_meshopt_compression_exports,
3503
4516
  EXT_texture_webp_exports,
@@ -3505,13 +4518,15 @@
3505
4518
  KHR_draco_mesh_compression_exports,
3506
4519
  KHR_lights_punctual_exports,
3507
4520
  KHR_materials_unlit_exports,
3508
- KHR_techniques_webgl_exports
4521
+ KHR_techniques_webgl_exports,
4522
+ KHR_texture_transform_exports,
4523
+ EXT_feature_metadata_exports
3509
4524
  ];
3510
4525
  }
3511
4526
  });
3512
4527
 
3513
4528
  // src/lib/extensions/KHR_binary_gltf.ts
3514
- function preprocess5(gltfData) {
4529
+ function preprocess4(gltfData) {
3515
4530
  const gltfScenegraph = new GLTFScenegraph(gltfData);
3516
4531
  const { json } = gltfScenegraph;
3517
4532
  for (const image of json.images || []) {
@@ -3606,7 +4621,7 @@
3606
4621
  console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail.");
3607
4622
  this._addAsset(json);
3608
4623
  this._convertTopLevelObjectsToArrays(json);
3609
- preprocess5(gltf);
4624
+ preprocess4(gltf);
3610
4625
  this._convertObjectIdsToArrayIndices(json);
3611
4626
  this._updateObjects(json);
3612
4627
  this._updateMaterial(json);
@@ -3723,7 +4738,7 @@
3723
4738
  metallicFactor: 1,
3724
4739
  roughnessFactor: 1
3725
4740
  };
3726
- const textureId = material.values && material.values.tex;
4741
+ const textureId = material.values?.tex || material.values?.texture2d_0 || material.values?.diffuseTex;
3727
4742
  const textureIndex = json.textures.findIndex((texture) => texture.id === textureId);
3728
4743
  if (textureIndex !== -1) {
3729
4744
  material.pbrMetallicRoughness.baseColorTexture = { index: textureIndex };
@@ -3736,20 +4751,20 @@
3736
4751
 
3737
4752
  // src/lib/api/post-process-gltf.ts
3738
4753
  function getBytesFromComponentType(componentType) {
3739
- return BYTES[componentType];
4754
+ return BYTES2[componentType];
3740
4755
  }
3741
4756
  function getSizeFromAccessorType(type) {
3742
- return COMPONENTS[type];
4757
+ return COMPONENTS2[type];
3743
4758
  }
3744
4759
  function postProcessGLTF(gltf, options) {
3745
4760
  return new GLTFPostProcessor().postProcess(gltf, options);
3746
4761
  }
3747
- var COMPONENTS, BYTES, GL_SAMPLER, SAMPLER_PARAMETER_GLTF_TO_GL, DEFAULT_SAMPLER, GLTFPostProcessor;
4762
+ var COMPONENTS2, BYTES2, GL_SAMPLER, SAMPLER_PARAMETER_GLTF_TO_GL, DEFAULT_SAMPLER, GLTFPostProcessor;
3748
4763
  var init_post_process_gltf = __esm({
3749
4764
  "src/lib/api/post-process-gltf.ts"() {
3750
4765
  init_assert3();
3751
4766
  init_gltf_utils();
3752
- COMPONENTS = {
4767
+ COMPONENTS2 = {
3753
4768
  SCALAR: 1,
3754
4769
  VEC2: 2,
3755
4770
  VEC3: 3,
@@ -3758,7 +4773,7 @@
3758
4773
  MAT3: 9,
3759
4774
  MAT4: 16
3760
4775
  };
3761
- BYTES = {
4776
+ BYTES2 = {
3762
4777
  5120: 1,
3763
4778
  5121: 1,
3764
4779
  5122: 2,
@@ -4093,18 +5108,18 @@
4093
5108
  }
4094
5109
  }
4095
5110
  function parseGLBV1(glb, dataView, byteOffset) {
4096
- assert2(glb.header.byteLength > GLB_FILE_HEADER_SIZE + GLB_CHUNK_HEADER_SIZE);
5111
+ assert(glb.header.byteLength > GLB_FILE_HEADER_SIZE + GLB_CHUNK_HEADER_SIZE);
4097
5112
  const contentLength = dataView.getUint32(byteOffset + 0, LE);
4098
5113
  const contentFormat = dataView.getUint32(byteOffset + 4, LE);
4099
5114
  byteOffset += GLB_CHUNK_HEADER_SIZE;
4100
- assert2(contentFormat === GLB_V1_CONTENT_FORMAT_JSON);
5115
+ assert(contentFormat === GLB_V1_CONTENT_FORMAT_JSON);
4101
5116
  parseJSONChunk(glb, dataView, byteOffset, contentLength);
4102
5117
  byteOffset += contentLength;
4103
5118
  byteOffset += parseBINChunk(glb, dataView, byteOffset, glb.header.byteLength);
4104
5119
  return byteOffset;
4105
5120
  }
4106
5121
  function parseGLBV2(glb, dataView, byteOffset, options) {
4107
- assert2(glb.header.byteLength > GLB_FILE_HEADER_SIZE + GLB_CHUNK_HEADER_SIZE);
5122
+ assert(glb.header.byteLength > GLB_FILE_HEADER_SIZE + GLB_CHUNK_HEADER_SIZE);
4108
5123
  parseGLBChunksSync(glb, dataView, byteOffset, options);
4109
5124
  return byteOffset + glb.header.byteLength;
4110
5125
  }
@@ -4235,6 +5250,12 @@
4235
5250
  byteLength: arrayBuffer.byteLength
4236
5251
  };
4237
5252
  delete buffer.uri;
5253
+ } else if (gltf.buffers[i2] === null) {
5254
+ gltf.buffers[i2] = {
5255
+ arrayBuffer: new ArrayBuffer(buffer.byteLength),
5256
+ byteOffset: 0,
5257
+ byteLength: buffer.byteLength
5258
+ };
4238
5259
  }
4239
5260
  }
4240
5261
  }
@@ -4260,10 +5281,13 @@
4260
5281
  async function loadImage(gltf, image, index, options, context) {
4261
5282
  const { fetch: fetch2, parse: parse4 } = context;
4262
5283
  let arrayBuffer;
4263
- if (image.uri) {
5284
+ if (image.uri && !image.hasOwnProperty("bufferView")) {
4264
5285
  const uri = resolveUrl(image.uri, options);
4265
5286
  const response = await fetch2(uri);
4266
5287
  arrayBuffer = await response.arrayBuffer();
5288
+ image.bufferView = {
5289
+ data: arrayBuffer
5290
+ };
4267
5291
  }
4268
5292
  if (Number.isFinite(image.bufferView)) {
4269
5293
  const array = getTypedArrayForBufferView(gltf.json, gltf.buffers, image.bufferView);
@@ -4490,8 +5514,8 @@
4490
5514
  var GLBWriter;
4491
5515
  var init_glb_writer = __esm({
4492
5516
  "src/glb-writer.ts"() {
4493
- init_version();
4494
5517
  init_encode_glb();
5518
+ init_version();
4495
5519
  GLBWriter = {
4496
5520
  name: "GLB",
4497
5521
  id: "glb",