@iwsdk/core 0.1.0

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 (326) hide show
  1. package/LICENSE +21 -0
  2. package/dist/asset/asset-manager.d.ts +72 -0
  3. package/dist/asset/asset-manager.d.ts.map +1 -0
  4. package/dist/asset/asset-manager.js +138 -0
  5. package/dist/asset/asset-manager.js.map +1 -0
  6. package/dist/asset/cache-manager.d.ts +44 -0
  7. package/dist/asset/cache-manager.d.ts.map +1 -0
  8. package/dist/asset/cache-manager.js +80 -0
  9. package/dist/asset/cache-manager.js.map +1 -0
  10. package/dist/asset/index.d.ts +9 -0
  11. package/dist/asset/index.d.ts.map +1 -0
  12. package/dist/asset/loaders/audio-loader.d.ts +21 -0
  13. package/dist/asset/loaders/audio-loader.d.ts.map +1 -0
  14. package/dist/asset/loaders/audio-loader.js +57 -0
  15. package/dist/asset/loaders/audio-loader.js.map +1 -0
  16. package/dist/asset/loaders/gltf-loader.d.ts +33 -0
  17. package/dist/asset/loaders/gltf-loader.d.ts.map +1 -0
  18. package/dist/asset/loaders/gltf-loader.js +79 -0
  19. package/dist/asset/loaders/gltf-loader.js.map +1 -0
  20. package/dist/asset/loaders/hdr-texture-loader.d.ts +18 -0
  21. package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -0
  22. package/dist/asset/loaders/hdr-texture-loader.js +65 -0
  23. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -0
  24. package/dist/asset/loaders/texture-loader.d.ts +21 -0
  25. package/dist/asset/loaders/texture-loader.d.ts.map +1 -0
  26. package/dist/asset/loaders/texture-loader.js +57 -0
  27. package/dist/asset/loaders/texture-loader.js.map +1 -0
  28. package/dist/audio/audio-pool.d.ts +59 -0
  29. package/dist/audio/audio-pool.d.ts.map +1 -0
  30. package/dist/audio/audio-pool.js +105 -0
  31. package/dist/audio/audio-pool.js.map +1 -0
  32. package/dist/audio/audio-system.d.ts +326 -0
  33. package/dist/audio/audio-system.d.ts.map +1 -0
  34. package/dist/audio/audio-system.js +478 -0
  35. package/dist/audio/audio-system.js.map +1 -0
  36. package/dist/audio/audio-utils.d.ts +71 -0
  37. package/dist/audio/audio-utils.d.ts.map +1 -0
  38. package/dist/audio/audio-utils.js +145 -0
  39. package/dist/audio/audio-utils.js.map +1 -0
  40. package/dist/audio/audio.d.ts +178 -0
  41. package/dist/audio/audio.d.ts.map +1 -0
  42. package/dist/audio/audio.js +104 -0
  43. package/dist/audio/audio.js.map +1 -0
  44. package/dist/audio/index.d.ts +11 -0
  45. package/dist/audio/index.d.ts.map +1 -0
  46. package/dist/ecs/component-registry.d.ts +54 -0
  47. package/dist/ecs/component-registry.d.ts.map +1 -0
  48. package/dist/ecs/component-registry.js +86 -0
  49. package/dist/ecs/component-registry.js.map +1 -0
  50. package/dist/ecs/component.d.ts +12 -0
  51. package/dist/ecs/component.d.ts.map +1 -0
  52. package/dist/ecs/entity.d.ts +17 -0
  53. package/dist/ecs/entity.d.ts.map +1 -0
  54. package/dist/ecs/entity.js +13 -0
  55. package/dist/ecs/entity.js.map +1 -0
  56. package/dist/ecs/index.d.ts +12 -0
  57. package/dist/ecs/index.d.ts.map +1 -0
  58. package/dist/ecs/system.d.ts +70 -0
  59. package/dist/ecs/system.d.ts.map +1 -0
  60. package/dist/ecs/system.js +79 -0
  61. package/dist/ecs/system.js.map +1 -0
  62. package/dist/ecs/world.d.ts +101 -0
  63. package/dist/ecs/world.d.ts.map +1 -0
  64. package/dist/ecs/world.js +165 -0
  65. package/dist/ecs/world.js.map +1 -0
  66. package/dist/environment/dome-gradient.d.ts +39 -0
  67. package/dist/environment/dome-gradient.d.ts.map +1 -0
  68. package/dist/environment/dome-gradient.js +30 -0
  69. package/dist/environment/dome-gradient.js.map +1 -0
  70. package/dist/environment/dome-texture.d.ts +39 -0
  71. package/dist/environment/dome-texture.d.ts.map +1 -0
  72. package/dist/environment/dome-texture.js +30 -0
  73. package/dist/environment/dome-texture.js.map +1 -0
  74. package/dist/environment/environment-system.d.ts +82 -0
  75. package/dist/environment/environment-system.d.ts.map +1 -0
  76. package/dist/environment/environment-system.js +389 -0
  77. package/dist/environment/environment-system.js.map +1 -0
  78. package/dist/environment/gradient-environment.d.ts +37 -0
  79. package/dist/environment/gradient-environment.d.ts.map +1 -0
  80. package/dist/environment/gradient-environment.js +99 -0
  81. package/dist/environment/gradient-environment.js.map +1 -0
  82. package/dist/environment/ibl-gradient.d.ts +38 -0
  83. package/dist/environment/ibl-gradient.d.ts.map +1 -0
  84. package/dist/environment/ibl-gradient.js +29 -0
  85. package/dist/environment/ibl-gradient.js.map +1 -0
  86. package/dist/environment/ibl-texture.d.ts +36 -0
  87. package/dist/environment/ibl-texture.d.ts.map +1 -0
  88. package/dist/environment/ibl-texture.js +30 -0
  89. package/dist/environment/ibl-texture.js.map +1 -0
  90. package/dist/environment/index.d.ts +12 -0
  91. package/dist/environment/index.d.ts.map +1 -0
  92. package/dist/grab/distance-grabbable.d.ts +115 -0
  93. package/dist/grab/distance-grabbable.d.ts.map +1 -0
  94. package/dist/grab/distance-grabbable.js +102 -0
  95. package/dist/grab/distance-grabbable.js.map +1 -0
  96. package/dist/grab/grab-system.d.ts +320 -0
  97. package/dist/grab/grab-system.d.ts.map +1 -0
  98. package/dist/grab/grab-system.js +239 -0
  99. package/dist/grab/grab-system.js.map +1 -0
  100. package/dist/grab/handles.d.ts +43 -0
  101. package/dist/grab/handles.d.ts.map +1 -0
  102. package/dist/grab/handles.js +132 -0
  103. package/dist/grab/handles.js.map +1 -0
  104. package/dist/grab/index.d.ts +13 -0
  105. package/dist/grab/index.d.ts.map +1 -0
  106. package/dist/grab/index.js +23 -0
  107. package/dist/grab/index.js.map +1 -0
  108. package/dist/grab/one-hand-grabbable.d.ts +80 -0
  109. package/dist/grab/one-hand-grabbable.d.ts.map +1 -0
  110. package/dist/grab/one-hand-grabbable.js +80 -0
  111. package/dist/grab/one-hand-grabbable.js.map +1 -0
  112. package/dist/grab/pointer-events-patch.d.ts +16 -0
  113. package/dist/grab/pointer-events-patch.d.ts.map +1 -0
  114. package/dist/grab/pointer-events-patch.js +223 -0
  115. package/dist/grab/pointer-events-patch.js.map +1 -0
  116. package/dist/grab/two-hands-grabbable.d.ts +103 -0
  117. package/dist/grab/two-hands-grabbable.d.ts.map +1 -0
  118. package/dist/grab/two-hands-grabbable.js +100 -0
  119. package/dist/grab/two-hands-grabbable.js.map +1 -0
  120. package/dist/index.d.ts +27 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +82 -0
  123. package/dist/index.js.map +1 -0
  124. package/dist/init/index.d.ts +9 -0
  125. package/dist/init/index.d.ts.map +1 -0
  126. package/dist/init/world-initializer.d.ts +76 -0
  127. package/dist/init/world-initializer.d.ts.map +1 -0
  128. package/dist/init/world-initializer.js +403 -0
  129. package/dist/init/world-initializer.js.map +1 -0
  130. package/dist/init/xr.d.ts +87 -0
  131. package/dist/init/xr.d.ts.map +1 -0
  132. package/dist/init/xr.js +193 -0
  133. package/dist/init/xr.js.map +1 -0
  134. package/dist/input/index.d.ts +9 -0
  135. package/dist/input/index.d.ts.map +1 -0
  136. package/dist/input/input-system.d.ts +52 -0
  137. package/dist/input/input-system.d.ts.map +1 -0
  138. package/dist/input/input-system.js +176 -0
  139. package/dist/input/input-system.js.map +1 -0
  140. package/dist/input/state-tags.d.ts +56 -0
  141. package/dist/input/state-tags.d.ts.map +1 -0
  142. package/dist/input/state-tags.js +63 -0
  143. package/dist/input/state-tags.js.map +1 -0
  144. package/dist/level/index.d.ts +12 -0
  145. package/dist/level/index.d.ts.map +1 -0
  146. package/dist/level/level-entity-creator.d.ts +27 -0
  147. package/dist/level/level-entity-creator.d.ts.map +1 -0
  148. package/dist/level/level-entity-creator.js +110 -0
  149. package/dist/level/level-entity-creator.js.map +1 -0
  150. package/dist/level/level-glxf-importer.d.ts +22 -0
  151. package/dist/level/level-glxf-importer.d.ts.map +1 -0
  152. package/dist/level/level-glxf-importer.js +40 -0
  153. package/dist/level/level-glxf-importer.js.map +1 -0
  154. package/dist/level/level-root.d.ts +18 -0
  155. package/dist/level/level-root.d.ts.map +1 -0
  156. package/dist/level/level-root.js +25 -0
  157. package/dist/level/level-root.js.map +1 -0
  158. package/dist/level/level-system.d.ts +54 -0
  159. package/dist/level/level-system.d.ts.map +1 -0
  160. package/dist/level/level-system.js +134 -0
  161. package/dist/level/level-system.js.map +1 -0
  162. package/dist/level/level-tag.d.ts +25 -0
  163. package/dist/level/level-tag.d.ts.map +1 -0
  164. package/dist/level/level-tag.js +28 -0
  165. package/dist/level/level-tag.js.map +1 -0
  166. package/dist/locomotion/geometries/beveled-cylinder.d.ts +12 -0
  167. package/dist/locomotion/geometries/beveled-cylinder.d.ts.map +1 -0
  168. package/dist/locomotion/geometries/beveled-cylinder.js +64 -0
  169. package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -0
  170. package/dist/locomotion/index.d.ts +11 -0
  171. package/dist/locomotion/index.d.ts.map +1 -0
  172. package/dist/locomotion/locomotion.d.ts +239 -0
  173. package/dist/locomotion/locomotion.d.ts.map +1 -0
  174. package/dist/locomotion/locomotion.js +256 -0
  175. package/dist/locomotion/locomotion.js.map +1 -0
  176. package/dist/locomotion/materials/line.d.ts +24 -0
  177. package/dist/locomotion/materials/line.d.ts.map +1 -0
  178. package/dist/locomotion/materials/line.js +307 -0
  179. package/dist/locomotion/materials/line.js.map +1 -0
  180. package/dist/locomotion/slide.d.ts +76 -0
  181. package/dist/locomotion/slide.d.ts.map +1 -0
  182. package/dist/locomotion/slide.js +131 -0
  183. package/dist/locomotion/slide.js.map +1 -0
  184. package/dist/locomotion/teleport.d.ts +68 -0
  185. package/dist/locomotion/teleport.d.ts.map +1 -0
  186. package/dist/locomotion/teleport.js +150 -0
  187. package/dist/locomotion/teleport.js.map +1 -0
  188. package/dist/locomotion/turn.d.ts +77 -0
  189. package/dist/locomotion/turn.d.ts.map +1 -0
  190. package/dist/locomotion/turn.js +126 -0
  191. package/dist/locomotion/turn.js.map +1 -0
  192. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js +13 -0
  193. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js.map +1 -0
  194. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js +154 -0
  195. package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js.map +1 -0
  196. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js +66 -0
  197. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js.map +1 -0
  198. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js +162 -0
  199. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js.map +1 -0
  200. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js +519 -0
  201. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js.map +1 -0
  202. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js +15 -0
  203. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js.map +1 -0
  204. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js +32 -0
  205. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js.map +1 -0
  206. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js +10 -0
  207. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js.map +1 -0
  208. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js +41 -0
  209. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js.map +1 -0
  210. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js +35 -0
  211. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js.map +1 -0
  212. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js +24 -0
  213. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js.map +1 -0
  214. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js +92 -0
  215. package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js.map +1 -0
  216. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js +382 -0
  217. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js.map +1 -0
  218. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js +2587 -0
  219. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js.map +1 -0
  220. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js +477 -0
  221. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js.map +1 -0
  222. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js +17 -0
  223. package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js.map +1 -0
  224. package/dist/physics/index.d.ts +11 -0
  225. package/dist/physics/index.d.ts.map +1 -0
  226. package/dist/physics/physics-system.d.ts +314 -0
  227. package/dist/physics/physics-system.d.ts.map +1 -0
  228. package/dist/physics/physics-system.js +419 -0
  229. package/dist/physics/physics-system.js.map +1 -0
  230. package/dist/physics/physicsBody.d.ts +83 -0
  231. package/dist/physics/physicsBody.d.ts.map +1 -0
  232. package/dist/physics/physicsBody.js +60 -0
  233. package/dist/physics/physicsBody.js.map +1 -0
  234. package/dist/physics/physicsManipulation.d.ts +51 -0
  235. package/dist/physics/physicsManipulation.d.ts.map +1 -0
  236. package/dist/physics/physicsManipulation.js +46 -0
  237. package/dist/physics/physicsManipulation.js.map +1 -0
  238. package/dist/physics/physicsShape.d.ts +133 -0
  239. package/dist/physics/physicsShape.d.ts.map +1 -0
  240. package/dist/physics/physicsShape.js +97 -0
  241. package/dist/physics/physicsShape.js.map +1 -0
  242. package/dist/physics/utils.d.ts +21 -0
  243. package/dist/physics/utils.d.ts.map +1 -0
  244. package/dist/physics/utils.js +130 -0
  245. package/dist/physics/utils.js.map +1 -0
  246. package/dist/runtime/index.d.ts +8 -0
  247. package/dist/runtime/index.d.ts.map +1 -0
  248. package/dist/runtime/three.d.ts +8 -0
  249. package/dist/runtime/three.d.ts.map +1 -0
  250. package/dist/runtime/three.js +18 -0
  251. package/dist/runtime/three.js.map +1 -0
  252. package/dist/scene-understanding/anchor.d.ts +42 -0
  253. package/dist/scene-understanding/anchor.d.ts.map +1 -0
  254. package/dist/scene-understanding/anchor.js +45 -0
  255. package/dist/scene-understanding/anchor.js.map +1 -0
  256. package/dist/scene-understanding/index.d.ts +11 -0
  257. package/dist/scene-understanding/index.d.ts.map +1 -0
  258. package/dist/scene-understanding/mesh.d.ts +67 -0
  259. package/dist/scene-understanding/mesh.d.ts.map +1 -0
  260. package/dist/scene-understanding/mesh.js +55 -0
  261. package/dist/scene-understanding/mesh.js.map +1 -0
  262. package/dist/scene-understanding/plane.d.ts +39 -0
  263. package/dist/scene-understanding/plane.d.ts.map +1 -0
  264. package/dist/scene-understanding/plane.js +42 -0
  265. package/dist/scene-understanding/plane.js.map +1 -0
  266. package/dist/scene-understanding/scene-understanding-system.d.ts +180 -0
  267. package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -0
  268. package/dist/scene-understanding/scene-understanding-system.js +342 -0
  269. package/dist/scene-understanding/scene-understanding-system.js.map +1 -0
  270. package/dist/transform/index.d.ts +10 -0
  271. package/dist/transform/index.d.ts.map +1 -0
  272. package/dist/transform/synced-quaternion.d.ts +35 -0
  273. package/dist/transform/synced-quaternion.d.ts.map +1 -0
  274. package/dist/transform/synced-quaternion.js +128 -0
  275. package/dist/transform/synced-quaternion.js.map +1 -0
  276. package/dist/transform/synced-vector3.d.ts +34 -0
  277. package/dist/transform/synced-vector3.d.ts.map +1 -0
  278. package/dist/transform/synced-vector3.js +106 -0
  279. package/dist/transform/synced-vector3.js.map +1 -0
  280. package/dist/transform/transform.d.ts +100 -0
  281. package/dist/transform/transform.d.ts.map +1 -0
  282. package/dist/transform/transform.js +194 -0
  283. package/dist/transform/transform.js.map +1 -0
  284. package/dist/types/webxr-augmentations.d.ts +23 -0
  285. package/dist/types/webxr-augmentations.d.ts.map +1 -0
  286. package/dist/ui/document.d.ts +112 -0
  287. package/dist/ui/document.d.ts.map +1 -0
  288. package/dist/ui/document.js +298 -0
  289. package/dist/ui/document.js.map +1 -0
  290. package/dist/ui/follow.d.ts +197 -0
  291. package/dist/ui/follow.d.ts.map +1 -0
  292. package/dist/ui/follow.js +143 -0
  293. package/dist/ui/follow.js.map +1 -0
  294. package/dist/ui/index.d.ts +18 -0
  295. package/dist/ui/index.d.ts.map +1 -0
  296. package/dist/ui/screenspace.d.ts +219 -0
  297. package/dist/ui/screenspace.d.ts.map +1 -0
  298. package/dist/ui/screenspace.js +215 -0
  299. package/dist/ui/screenspace.js.map +1 -0
  300. package/dist/ui/ui.d.ts +209 -0
  301. package/dist/ui/ui.d.ts.map +1 -0
  302. package/dist/ui/ui.js +185 -0
  303. package/dist/ui/ui.js.map +1 -0
  304. package/dist/vendor/basis/README.md +46 -0
  305. package/dist/vendor/basis/basis_transcoder.js +19 -0
  306. package/dist/vendor/basis/basis_transcoder.wasm +0 -0
  307. package/dist/vendor/draco/README.md +32 -0
  308. package/dist/vendor/draco/draco_decoder.js +34 -0
  309. package/dist/vendor/draco/draco_decoder.wasm +0 -0
  310. package/dist/vendor/draco/draco_encoder.js +33 -0
  311. package/dist/vendor/draco/draco_wasm_wrapper.js +117 -0
  312. package/dist/vendor/draco/gltf/draco_decoder.js +33 -0
  313. package/dist/vendor/draco/gltf/draco_decoder.wasm +0 -0
  314. package/dist/vendor/draco/gltf/draco_encoder.js +33 -0
  315. package/dist/vendor/draco/gltf/draco_wasm_wrapper.js +116 -0
  316. package/dist/version.d.ts +2 -0
  317. package/dist/version.d.ts.map +1 -0
  318. package/dist/version.js +4 -0
  319. package/dist/version.js.map +1 -0
  320. package/dist/visibility/index.d.ts +8 -0
  321. package/dist/visibility/index.d.ts.map +1 -0
  322. package/dist/visibility/visibility.d.ts +37 -0
  323. package/dist/visibility/visibility.d.ts.map +1 -0
  324. package/dist/visibility/visibility.js +52 -0
  325. package/dist/visibility/visibility.js.map +1 -0
  326. package/package.json +46 -0
@@ -0,0 +1,106 @@
1
+ import '../runtime/three.js';
2
+ import { Vector3 } from 'three';
3
+
4
+ /**
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ /**
11
+ * Vector3 whose x/y/z accessors read from and write to a target Float32Array.
12
+ *
13
+ * @remarks
14
+ * - Used by {@link TransformSystem} to bind Object3D.position/scale directly to
15
+ * ECS component storage for zero‑copy updates.
16
+ * - When no target is set, falls back to internal fields so it behaves like a
17
+ * normal `Vector3`.
18
+ *
19
+ * @category Scene
20
+ */
21
+ class SyncedVector3 extends Vector3 {
22
+ constructor(x = 0, y = 0, z = 0) {
23
+ super(x, y, z);
24
+ this.target = null;
25
+ this.targetOffset = 0;
26
+ this.__x = 0;
27
+ this.__y = 0;
28
+ this.__z = 0;
29
+ // Preserve the values set by parent constructor before overriding properties
30
+ this.__x = this.x;
31
+ this.__y = this.y;
32
+ this.__z = this.z;
33
+ this.setupProperties();
34
+ }
35
+ setupProperties() {
36
+ // Override x, y, z properties to sync with target
37
+ Object.defineProperty(this, 'x', {
38
+ get: () => {
39
+ if (this.target) {
40
+ return this.target[this.targetOffset];
41
+ }
42
+ // Fallback to a private property when no target is set
43
+ return this.__x;
44
+ },
45
+ set: (value) => {
46
+ if (this.target) {
47
+ this.target[this.targetOffset] = value;
48
+ }
49
+ else {
50
+ this.__x = value;
51
+ }
52
+ },
53
+ enumerable: true,
54
+ configurable: true,
55
+ });
56
+ Object.defineProperty(this, 'y', {
57
+ get: () => {
58
+ if (this.target) {
59
+ return this.target[this.targetOffset + 1];
60
+ }
61
+ return this.__y;
62
+ },
63
+ set: (value) => {
64
+ if (this.target) {
65
+ this.target[this.targetOffset + 1] = value;
66
+ }
67
+ else {
68
+ this.__y = value;
69
+ }
70
+ },
71
+ enumerable: true,
72
+ configurable: true,
73
+ });
74
+ Object.defineProperty(this, 'z', {
75
+ get: () => {
76
+ if (this.target) {
77
+ return this.target[this.targetOffset + 2];
78
+ }
79
+ return this.__z;
80
+ },
81
+ set: (value) => {
82
+ if (this.target) {
83
+ this.target[this.targetOffset + 2] = value;
84
+ }
85
+ else {
86
+ this.__z = value;
87
+ }
88
+ },
89
+ enumerable: true,
90
+ configurable: true,
91
+ });
92
+ }
93
+ /**
94
+ * Bind this vector to a packed float array.
95
+ * @param target Float32Array to read/write.
96
+ * @param offset Starting index within the array (x at `offset`).
97
+ */
98
+ setTarget(target, offset = 0) {
99
+ this.target = target;
100
+ this.targetOffset = offset;
101
+ return this;
102
+ }
103
+ }
104
+
105
+ export { SyncedVector3 };
106
+ //# sourceMappingURL=synced-vector3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synced-vector3.js","sources":["../../src/transform/synced-vector3.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { Types } from '../ecs/index.js';
8
+ /**
9
+ * 3D transform component that binds an entity to a Three.js Object3D.
10
+ *
11
+ * @remarks
12
+ * - The {@link TransformSystem} wires Object3D.position/quaternion/scale to
13
+ * component views for zero‑copy updates and parenting.
14
+ * - Default values are `NaN` so an existing Object3D keeps its initial transform
15
+ * unless a value is explicitly written by code or GLXF.
16
+ * - Set `parent` to reparent under another entity. When unset, entities are
17
+ * automatically parented under the active level root (or scene if persistent).
18
+ *
19
+ * @category Scene
20
+ * @hideineditor
21
+ */
22
+ export declare const Transform: import("elics").Component<{
23
+ position: {
24
+ type: Types.Vec3;
25
+ default: [number, number, number];
26
+ };
27
+ orientation: {
28
+ type: Types.Vec4;
29
+ default: [number, number, number, number];
30
+ };
31
+ scale: {
32
+ type: Types.Vec3;
33
+ default: [number, number, number];
34
+ };
35
+ parent: {
36
+ type: Types.Entity;
37
+ default: any;
38
+ };
39
+ }>;
40
+ declare const TransformSystem_base: import("elics").SystemConstructor<import("elics").SystemSchema, {
41
+ transform: {
42
+ required: import("elics").Component<{
43
+ position: {
44
+ type: Types.Vec3;
45
+ default: [number, number, number];
46
+ };
47
+ orientation: {
48
+ type: Types.Vec4;
49
+ default: [number, number, number, number];
50
+ };
51
+ scale: {
52
+ type: Types.Vec3;
53
+ default: [number, number, number];
54
+ };
55
+ parent: {
56
+ type: Types.Entity;
57
+ default: any;
58
+ };
59
+ }>[];
60
+ };
61
+ }, import("../ecs/world.js").World, import("../ecs/system.js").System<import("elics").SystemSchema, {
62
+ transform: {
63
+ required: import("elics").Component<{
64
+ position: {
65
+ type: Types.Vec3;
66
+ default: [number, number, number];
67
+ };
68
+ orientation: {
69
+ type: Types.Vec4;
70
+ default: [number, number, number, number];
71
+ };
72
+ scale: {
73
+ type: Types.Vec3;
74
+ default: [number, number, number];
75
+ };
76
+ parent: {
77
+ type: Types.Entity;
78
+ default: any;
79
+ };
80
+ }>[];
81
+ };
82
+ }>>;
83
+ /**
84
+ * Keeps Object3D and Transform component in sync and manages parenting.
85
+ *
86
+ * @remarks
87
+ * - Replaces Object3D accessors with synced views for fast ECS writes.
88
+ * - Ensures entities without an explicit `parent` attach to the level root
89
+ * (or the scene for persistent objects).
90
+ * - If an Object3D is manually reparented under another entity, the component
91
+ * `parent` value is updated to match.
92
+ *
93
+ * @category Scene
94
+ */
95
+ export declare class TransformSystem extends TransformSystem_base {
96
+ init(): void;
97
+ update(): void;
98
+ }
99
+ export {};
100
+ //# sourceMappingURL=transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/transform/transform.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,EAKN,MAAM,iBAAiB,CAAC;AAMzB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;iBAMkC,GAAG;;EAG1D,CAAC;;;;;;;;;;;;;;;;;;yBAHsD,GAAG;;;;;;;;;;;;;;;;;;;;;yBAAH,GAAG;;;;;AAsH3D;;;;;;;;;;;GAWG;AACH,qBAAa,eAAgB,SAAQ,oBAEnC;IACA,IAAI,IAAI,IAAI;IAKZ,MAAM,IAAI,IAAI;CA4Bf"}
@@ -0,0 +1,194 @@
1
+ import { createSystem } from '../ecs/system.js';
2
+ import '../ecs/world.js';
3
+ import { createComponent, Types } from 'elics';
4
+ import { NullEntity } from '../ecs/entity.js';
5
+ import '../ecs/component-registry.js';
6
+ import '../level/level-system.js';
7
+ import { LevelTag } from '../level/level-tag.js';
8
+ import '@iwsdk/glxf';
9
+ import '../asset/asset-manager.js';
10
+ import '../asset/cache-manager.js';
11
+ import '@pmndrs/uikit';
12
+ import '@preact/signals-core';
13
+ import { Vector3, Quaternion } from 'three';
14
+ import '../ui/ui.js';
15
+ import '../ui/follow.js';
16
+ import '../ui/screenspace.js';
17
+ import '../level/level-root.js';
18
+ import '../runtime/three.js';
19
+ import { SyncedQuaternion } from './synced-quaternion.js';
20
+ import { SyncedVector3 } from './synced-vector3.js';
21
+
22
+ /**
23
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
24
+ *
25
+ * This source code is licensed under the MIT license found in the
26
+ * LICENSE file in the root directory of this source tree.
27
+ */
28
+ /**
29
+ * 3D transform component that binds an entity to a Three.js Object3D.
30
+ *
31
+ * @remarks
32
+ * - The {@link TransformSystem} wires Object3D.position/quaternion/scale to
33
+ * component views for zero‑copy updates and parenting.
34
+ * - Default values are `NaN` so an existing Object3D keeps its initial transform
35
+ * unless a value is explicitly written by code or GLXF.
36
+ * - Set `parent` to reparent under another entity. When unset, entities are
37
+ * automatically parented under the active level root (or scene if persistent).
38
+ *
39
+ * @category Scene
40
+ * @hideineditor
41
+ */
42
+ const Transform = createComponent('Transform', {
43
+ position: { type: Types.Vec3, default: [NaN, NaN, NaN] }, // Local position [x,y,z]; NaN preserves Object3D value
44
+ orientation: { type: Types.Vec4, default: [NaN, NaN, NaN, NaN] }, // Local rotation quaternion [x,y,z,w]; NaN preserves
45
+ scale: { type: Types.Vec3, default: [NaN, NaN, NaN] }, // Local scale [x,y,z]; NaN preserves
46
+ parent: { type: Types.Entity, default: undefined }, // Parent entity for hierarchy (defaults to level root)
47
+ }, 'Component for 3D transformation (position, rotation, scale)');
48
+ function attachToEntity(entity) {
49
+ const object3D = entity.object3D;
50
+ if (!object3D) {
51
+ return;
52
+ }
53
+ if (object3D.__transformAttached) {
54
+ return;
55
+ }
56
+ object3D.__transformAttached = true;
57
+ object3D.entityIdx = entity.index;
58
+ object3D.positionView = entity.getVectorView(Transform, 'position');
59
+ object3D.quaternionView = entity.getVectorView(Transform, 'orientation');
60
+ object3D.scaleView = entity.getVectorView(Transform, 'scale');
61
+ // if component values contains NaN, keep original values instead
62
+ if (object3D.positionView.some(Number.isNaN)) {
63
+ object3D.position.toArray(object3D.positionView);
64
+ }
65
+ if (object3D.quaternionView.some(Number.isNaN)) {
66
+ object3D.quaternion.toArray(object3D.quaternionView);
67
+ }
68
+ if (object3D.scaleView.some(Number.isNaN)) {
69
+ object3D.scale.toArray(object3D.scaleView);
70
+ }
71
+ Object.defineProperty(object3D, 'position', {
72
+ value: new SyncedVector3().setTarget(object3D.positionView),
73
+ writable: false,
74
+ configurable: true,
75
+ enumerable: true,
76
+ });
77
+ Object.defineProperty(object3D, 'quaternion', {
78
+ value: new SyncedQuaternion().setTarget(object3D.quaternionView),
79
+ writable: false,
80
+ configurable: true,
81
+ enumerable: true,
82
+ });
83
+ Object.defineProperty(object3D, 'scale', {
84
+ value: new SyncedVector3().setTarget(object3D.scaleView),
85
+ writable: false,
86
+ configurable: true,
87
+ enumerable: true,
88
+ });
89
+ object3D._parent = object3D.parent; // save original parent
90
+ Object.defineProperty(object3D, 'parent', {
91
+ get: () => {
92
+ return object3D._parent;
93
+ },
94
+ set: (value) => {
95
+ var _a;
96
+ object3D._parent = value;
97
+ Transform.data.parent[entity.index] = (_a = value === null || value === void 0 ? void 0 : value.entityIdx) !== null && _a !== void 0 ? _a : NullEntity;
98
+ },
99
+ configurable: true,
100
+ enumerable: true,
101
+ });
102
+ }
103
+ function detachFromEntity(entity) {
104
+ const object3D = entity.object3D;
105
+ if (!object3D) {
106
+ return;
107
+ }
108
+ if (!object3D.__transformAttached) {
109
+ return;
110
+ }
111
+ delete object3D.entityIdx;
112
+ delete object3D.positionView;
113
+ delete object3D.quaternionView;
114
+ delete object3D.scaleView;
115
+ Object.defineProperty(object3D, 'position', {
116
+ value: new Vector3().copy(object3D.position),
117
+ writable: false,
118
+ configurable: true,
119
+ enumerable: true,
120
+ });
121
+ Object.defineProperty(object3D, 'quaternion', {
122
+ value: new Quaternion().copy(object3D.quaternion),
123
+ writable: false,
124
+ configurable: true,
125
+ enumerable: true,
126
+ });
127
+ Object.defineProperty(object3D, 'scale', {
128
+ value: new Vector3().copy(object3D.scale),
129
+ writable: false,
130
+ configurable: true,
131
+ enumerable: true,
132
+ });
133
+ Object.defineProperty(object3D, 'parent', {
134
+ value: object3D._parent,
135
+ writable: true,
136
+ configurable: true,
137
+ enumerable: true,
138
+ });
139
+ delete object3D._parent;
140
+ delete object3D.__transformAttached;
141
+ }
142
+ /**
143
+ * Keeps Object3D and Transform component in sync and manages parenting.
144
+ *
145
+ * @remarks
146
+ * - Replaces Object3D accessors with synced views for fast ECS writes.
147
+ * - Ensures entities without an explicit `parent` attach to the level root
148
+ * (or the scene for persistent objects).
149
+ * - If an Object3D is manually reparented under another entity, the component
150
+ * `parent` value is updated to match.
151
+ *
152
+ * @category Scene
153
+ */
154
+ class TransformSystem extends createSystem({
155
+ transform: { required: [Transform] },
156
+ }) {
157
+ init() {
158
+ this.queries.transform.subscribe('qualify', attachToEntity);
159
+ this.queries.transform.subscribe('disqualify', detachFromEntity);
160
+ }
161
+ update() {
162
+ this.queries.transform.entities.forEach((entity) => {
163
+ var _a;
164
+ const object = entity.object3D;
165
+ if (!object || object === this.world.scene) {
166
+ return;
167
+ }
168
+ const parentEntity = entity.getValue(Transform, 'parent');
169
+ const parentObject = parentEntity === null || parentEntity === void 0 ? void 0 : parentEntity.object3D;
170
+ if (!parentObject) {
171
+ // no valid parent specified in Transform
172
+ if (((_a = object.parent) === null || _a === void 0 ? void 0 : _a.entityIdx) !== undefined) {
173
+ // check whether object is already parented under an entity, if so, update parent in Transform
174
+ Transform.data.parent[entity.index] = object.parent.entityIdx;
175
+ }
176
+ else {
177
+ // Default parent: active level if entity has LevelTag; otherwise scene (persistent)
178
+ const targetEntity = entity.hasComponent(LevelTag)
179
+ ? this.world.activeLevel.value
180
+ : this.world.sceneEntity;
181
+ targetEntity.object3D.add(object);
182
+ entity.setValue(Transform, 'parent', targetEntity);
183
+ }
184
+ }
185
+ else if (parentObject !== object.parent) {
186
+ // parent changed in Transform
187
+ parentObject.add(object);
188
+ }
189
+ });
190
+ }
191
+ }
192
+
193
+ export { Transform, TransformSystem };
194
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sources":["../../src/transform/transform.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ declare global {
8
+ interface XRSession {
9
+ trackedSources?: XRInputSourceArray;
10
+ initiateRoomCapture?: () => Promise<undefined>;
11
+ }
12
+ interface XRFrame {
13
+ readonly detectedPlanes?: XRPlaneSet;
14
+ readonly detectedMeshes?: XRMeshSet;
15
+ fillPoses?: (space: ArrayLike<XRSpace>, baseSpace: XRSpace, transforms: Float32Array) => boolean;
16
+ fillJointRadii?: (space: ArrayLike<XRSpace>, radii: Float32Array) => boolean;
17
+ }
18
+ interface XRSystem {
19
+ offerSession?: (mode: XRSessionMode, options?: XRSessionInit) => Promise<XRSession>;
20
+ }
21
+ }
22
+ export {};
23
+ //# sourceMappingURL=webxr-augmentations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webxr-augmentations.d.ts","sourceRoot":"","sources":["../../src/types/webxr-augmentations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,SAAS;QACjB,cAAc,CAAC,EAAE,kBAAkB,CAAC;QACpC,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;KAChD;IAED,UAAU,OAAO;QACf,QAAQ,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;QACpC,SAAS,CAAC,EAAE,CACV,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,EACzB,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,YAAY,KACrB,OAAO,CAAC;QACb,cAAc,CAAC,EAAE,CACf,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,EACzB,KAAK,EAAE,YAAY,KAChB,OAAO,CAAC;KACd;IAED,UAAU,QAAQ;QAChB,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,aAAa,EACnB,OAAO,CAAC,EAAE,aAAa,KACpB,OAAO,CAAC,SAAS,CAAC,CAAC;KACzB;CACF;AAED,OAAO,EAAE,CAAC"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { Component } from '@pmndrs/uikit';
8
+ import { Signal } from '@preact/signals-core';
9
+ import { Group } from 'three';
10
+ /**
11
+ * Lightweight DOM-like wrapper around a UIKit root `Component` that lives in the 3D scene.
12
+ *
13
+ * @remarks
14
+ * - Provides query helpers (`getElementById`, `getElementsByClassName`, `querySelector(All)`).
15
+ * - Maintains reactive target dimensions via {@link targetWidth}/{@link targetHeight} and
16
+ * scales the group to fit while preserving aspect ratio.
17
+ * - Intended to be attached to an entity's `object3D` in world space or to the `camera` for
18
+ * screen‑space UI. Use together with {@link PanelUISystem} and {@link ScreenSpaceUISystem}.
19
+ *
20
+ * @category UI
21
+ */
22
+ export declare class UIKitDocument extends Group {
23
+ private elementMap;
24
+ private classMap;
25
+ private _rootElement;
26
+ private _abortController;
27
+ /** Reactive target width in meters. Set via {@link setTargetDimensions}. */
28
+ readonly targetWidth: Signal<number>;
29
+ /** Reactive target height in meters. Set via {@link setTargetDimensions}. */
30
+ readonly targetHeight: Signal<number>;
31
+ /**
32
+ * Create a document backed by a UIKit root component.
33
+ * @param rootComponent The root `Component` produced by `@pmndrs/uikitml` `interpret()`.
34
+ */
35
+ constructor(rootComponent: Component<any>);
36
+ /**
37
+ * Return the first element with a matching `id` (UIKit property).
38
+ * @param id The element identifier without the `#` prefix.
39
+ */
40
+ getElementById(id: string): Component<any> | null;
41
+ /**
42
+ * Return all elements that include `className` in their class list.
43
+ * @param className The class without the preceding dot.
44
+ */
45
+ getElementsByClassName(className: string): Component<any>[];
46
+ /**
47
+ * Return the first element matching a simple CSS‑like selector.
48
+ *
49
+ * @remarks
50
+ * Supported selectors:
51
+ * - `#id`
52
+ * - `.class`
53
+ * - Descendant combinations, e.g. `#parent .child`
54
+ */
55
+ querySelector(selector: string): Component<any> | null;
56
+ /**
57
+ * Return all elements matching a simple CSS‑like selector. See {@link querySelector}.
58
+ */
59
+ querySelectorAll(selector: string): Component<any>[];
60
+ /** Parse descendant selectors like `#parent .child`. */
61
+ private parseDescendantSelector;
62
+ /** Find all descendants of a parent that match a selector. */
63
+ private findDescendants;
64
+ /** Recursively search for descendants matching a selector. */
65
+ private searchDescendants;
66
+ /** Check if a component matches a simple selector (`#id` or `.class`). */
67
+ private matchesSelector;
68
+ /**
69
+ * Check if `element` is a descendant of `ancestor`.
70
+ * @returns `true` if `ancestor` appears in the parent chain of `element`.
71
+ */
72
+ isDescendantOf(element: Component<any>, ancestor: Component<any>): boolean;
73
+ /** Convenience for `querySelectorAll("${parent} ${child}")`. */
74
+ querySelectorAllWithin(parentSelector: string, childSelector: string): Component<any>[];
75
+ /** Convenience for the first match of `querySelectorAllWithin`. */
76
+ querySelectorWithin(parentSelector: string, childSelector: string): Component<any> | null;
77
+ /** Set up reactivity that rescales the group when size or target changes. */
78
+ private setupReactiveResizing;
79
+ /** Compute uniform scale to fit the target width/height while preserving aspect ratio. */
80
+ private updateScaling;
81
+ /**
82
+ * Set desired dimensions for the UI in meters. The document computes a uniform scale
83
+ * that fits these constraints while preserving aspect ratio.
84
+ * @param width Target width in meters.
85
+ * @param height Target height in meters.
86
+ */
87
+ setTargetDimensions(width: number, height: number): void;
88
+ /**
89
+ * Current intrinsic size of the UIKit root component (in UIKit units, centimeters),
90
+ * if available from the underlying component's `size` signal.
91
+ */
92
+ get computedSize(): {
93
+ width: number;
94
+ height: number;
95
+ } | null;
96
+ /** Return the most recently requested target size in meters. */
97
+ get targetSize(): {
98
+ width: number;
99
+ height: number;
100
+ };
101
+ /** The root UIKit component for this document. */
102
+ get rootElement(): Component<any>;
103
+ /**
104
+ * Dispose of internal resources and detach children. Safe to call multiple times.
105
+ */
106
+ dispose(): void;
107
+ /** String summary useful for debugging. */
108
+ toString(): string;
109
+ /** Index IDs and classes for DOM‑like queries. */
110
+ private indexElements;
111
+ }
112
+ //# sourceMappingURL=document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/ui/document.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAU,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAY,MAAM,OAAO,CAAC;AAExC;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAa;IACjD,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAa;IAElD;;;OAGG;gBACS,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC;IAUzC;;;OAGG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI;IAIjD;;;OAGG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE;IAI3D;;;;;;;;OAQG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI;IAKtD;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE;IAkBpD,wDAAwD;IACxD,OAAO,CAAC,uBAAuB;IA4B/B,8DAA8D;IAC9D,OAAO,CAAC,eAAe;IASvB,8DAA8D;IAC9D,OAAO,CAAC,iBAAiB;IAgBzB,0EAA0E;IAC1E,OAAO,CAAC,eAAe;IAsBvB;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO;IAW1E,gEAAgE;IAChE,sBAAsB,CACpB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,SAAS,CAAC,GAAG,CAAC,EAAE;IAGnB,mEAAmE;IACnE,mBAAmB,CACjB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI;IAGxB,6EAA6E;IAC7E,OAAO,CAAC,qBAAqB;IAqB7B,0FAA0F;IAC1F,OAAO,CAAC,aAAa;IAiCrB;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKxD;;;OAGG;IACH,IAAI,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAS3D;IAED,gEAAgE;IAChE,IAAI,UAAU,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAKlD;IAED,kDAAkD;IAClD,IAAI,WAAW,IAAI,SAAS,CAAC,GAAG,CAAC,CAEhC;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;IAiBf,2CAA2C;IAC3C,QAAQ,IAAI,MAAM;IAQlB,kDAAkD;IAClD,OAAO,CAAC,aAAa;CA+BtB"}