@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,307 @@
1
+ import '../../runtime/three.js';
2
+ import { Vector3, Color, UniformsLib, UniformsUtils, ShaderLib, ShaderMaterial } 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
+ // @ts-ignore
11
+ UniformsLib.linee = {
12
+ linewidth: { value: 1 },
13
+ color: { value: new Color(0xffffff) },
14
+ startPoint: { value: new Vector3() },
15
+ endPoint: { value: new Vector3() },
16
+ };
17
+ ShaderLib['linee'] = {
18
+ uniforms: UniformsUtils.merge([
19
+ UniformsLib.common,
20
+ UniformsLib.fog,
21
+ // @ts-ignore
22
+ UniformsLib.linee,
23
+ ]),
24
+ vertexShader: /* glsl */ `
25
+ #include <common>
26
+ #include <color_pars_vertex>
27
+ #include <fog_pars_vertex>
28
+ #include <logdepthbuf_pars_vertex>
29
+ #include <clipping_planes_pars_vertex>
30
+
31
+ uniform float linewidth;
32
+ uniform vec3 startPoint;
33
+ uniform vec3 endPoint;
34
+ varying float vDistanceAlpha;
35
+
36
+ attribute vec3 instanceStart;
37
+ attribute vec3 instanceEnd;
38
+
39
+ attribute vec3 instanceColorStart;
40
+ attribute vec3 instanceColorEnd;
41
+
42
+ varying vec4 worldPos;
43
+ varying vec3 worldStart;
44
+ varying vec3 worldEnd;
45
+
46
+ void trimSegment( const in vec4 start, inout vec4 end ) {
47
+
48
+ // trim end segment so it terminates between the camera plane and the near plane
49
+
50
+ // conservative estimate of the near plane
51
+ float a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column
52
+ float b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column
53
+ float nearEstimate = - 0.5 * b / a;
54
+
55
+ float alpha = ( nearEstimate - start.z ) / ( end.z - start.z );
56
+
57
+ end.xyz = mix( start.xyz, end.xyz, alpha );
58
+
59
+ }
60
+
61
+ void main() {
62
+
63
+ #ifdef USE_COLOR
64
+
65
+ vColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd;
66
+
67
+ #endif
68
+
69
+ // camera space
70
+ vec4 start = modelViewMatrix * vec4( instanceStart, 1.0 );
71
+ vec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 );
72
+
73
+
74
+ worldStart = start.xyz;
75
+ worldEnd = end.xyz;
76
+
77
+ vec3 currentPosition = (position.y < 0.5) ? instanceStart : instanceEnd;
78
+ float distanceToStart = length(currentPosition - startPoint);
79
+ float startAlpha = smoothstep(0.0, 0.8, distanceToStart);
80
+ float distanceToEnd = length(currentPosition - endPoint);
81
+ float endAlpha = smoothstep(0.5, 2.0, distanceToEnd);
82
+ // Compute vDistanceAlpha using smoothstep
83
+ vDistanceAlpha = min(startAlpha, endAlpha);
84
+
85
+
86
+ // special case for perspective projection, and segments that terminate either in, or behind, the camera plane
87
+ // clearly the gpu firmware has a way of addressing this issue when projecting into ndc space
88
+ // but we need to perform ndc-space calculations in the shader, so we must address this issue directly
89
+ // perhaps there is a more elegant solution -- WestLangley
90
+
91
+ bool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column
92
+
93
+ if ( perspective ) {
94
+
95
+ if ( start.z < 0.0 && end.z >= 0.0 ) {
96
+
97
+ trimSegment( start, end );
98
+
99
+ } else if ( end.z < 0.0 && start.z >= 0.0 ) {
100
+
101
+ trimSegment( end, start );
102
+
103
+ }
104
+
105
+ }
106
+
107
+ // clip space
108
+ vec4 clipStart = projectionMatrix * start;
109
+ vec4 clipEnd = projectionMatrix * end;
110
+
111
+ // ndc space
112
+ vec3 ndcStart = clipStart.xyz / clipStart.w;
113
+ vec3 ndcEnd = clipEnd.xyz / clipEnd.w;
114
+
115
+ // direction
116
+ vec2 dir = ndcEnd.xy - ndcStart.xy;
117
+ dir = normalize( dir );
118
+
119
+ vec3 worldDir = normalize( end.xyz - start.xyz );
120
+ vec3 tmpFwd = normalize( mix( start.xyz, end.xyz, 0.5 ) );
121
+ vec3 worldUp = normalize( cross( worldDir, tmpFwd ) );
122
+ vec3 worldFwd = cross( worldDir, worldUp );
123
+ worldPos = position.y < 0.5 ? start: end;
124
+
125
+ // height offset
126
+ float hw = linewidth * 0.5;
127
+ worldPos.xyz += position.x < 0.0 ? hw * worldUp : - hw * worldUp;
128
+
129
+ // don't extend the line if we're rendering dashes because we
130
+ // won't be rendering the endcaps
131
+
132
+ // cap extension
133
+ worldPos.xyz += position.y < 0.5 ? - hw * worldDir : hw * worldDir;
134
+
135
+ // add width to the box
136
+ worldPos.xyz += worldFwd * hw;
137
+
138
+ // endcaps
139
+ if ( position.y > 1.0 || position.y < 0.0 ) {
140
+
141
+ worldPos.xyz -= worldFwd * 2.0 * hw;
142
+
143
+ }
144
+
145
+
146
+ // project the worldpos
147
+ vec4 clip = projectionMatrix * worldPos;
148
+
149
+ // shift the depth of the projected points so the line
150
+ // segments overlap neatly
151
+ vec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd;
152
+ clip.z = clipPose.z * clip.w;
153
+
154
+ gl_Position = clip;
155
+
156
+ vec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation
157
+
158
+ #include <logdepthbuf_vertex>
159
+ #include <clipping_planes_vertex>
160
+ #include <fog_vertex>
161
+
162
+ }
163
+ `,
164
+ fragmentShader: /* glsl */ `
165
+ uniform float linewidth;
166
+
167
+ varying vec4 worldPos;
168
+ varying vec3 worldStart;
169
+ varying vec3 worldEnd;
170
+ varying float vDistanceAlpha;
171
+
172
+ #include <common>
173
+ #include <color_pars_fragment>
174
+ #include <fog_pars_fragment>
175
+ #include <logdepthbuf_pars_fragment>
176
+ #include <clipping_planes_pars_fragment>
177
+
178
+ vec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) {
179
+
180
+ float mua;
181
+ float mub;
182
+
183
+ vec3 p13 = p1 - p3;
184
+ vec3 p43 = p4 - p3;
185
+
186
+ vec3 p21 = p2 - p1;
187
+
188
+ float d1343 = dot( p13, p43 );
189
+ float d4321 = dot( p43, p21 );
190
+ float d1321 = dot( p13, p21 );
191
+ float d4343 = dot( p43, p43 );
192
+ float d2121 = dot( p21, p21 );
193
+
194
+ float denom = d2121 * d4343 - d4321 * d4321;
195
+
196
+ float numer = d1343 * d4321 - d1321 * d4343;
197
+
198
+ mua = numer / denom;
199
+ mua = clamp( mua, 0.0, 1.0 );
200
+ mub = ( d1343 + d4321 * ( mua ) ) / d4343;
201
+ mub = clamp( mub, 0.0, 1.0 );
202
+
203
+ return vec2( mua, mub );
204
+
205
+ }
206
+
207
+ void main() {
208
+
209
+ #include <clipping_planes_fragment>
210
+
211
+ // Find the closest points on the view ray and the line segment
212
+ vec3 rayEnd = normalize( worldPos.xyz ) * 1e5;
213
+ vec3 lineDir = worldEnd - worldStart;
214
+ vec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd );
215
+
216
+ vec3 p1 = worldStart + lineDir * params.x;
217
+ vec3 p2 = rayEnd * params.y;
218
+ vec3 delta = p1 - p2;
219
+ float len = length( delta );
220
+ float norm = len / linewidth;
221
+
222
+ if ( norm > 0.5 ) {
223
+ discard;
224
+ }
225
+
226
+ #include <logdepthbuf_fragment>
227
+
228
+ gl_FragColor = vec4( 1.0, 1.0, 1.0, vDistanceAlpha );
229
+
230
+ #include <tonemapping_fragment>
231
+ #include <colorspace_fragment>
232
+ #include <fog_fragment>
233
+ #include <premultiplied_alpha_fragment>
234
+
235
+ }
236
+ `,
237
+ };
238
+ class LineMaterial extends ShaderMaterial {
239
+ constructor(parameters) {
240
+ super({
241
+ // @ts-ignore
242
+ type: 'LineMaterial',
243
+ uniforms: UniformsUtils.clone(ShaderLib['linee'].uniforms),
244
+ vertexShader: ShaderLib['linee'].vertexShader,
245
+ fragmentShader: ShaderLib['linee'].fragmentShader,
246
+ clipping: true, // required for clipping support
247
+ });
248
+ this.isLineMaterial = true;
249
+ // Compatibility flags with three/examples LineMaterial API
250
+ // worldUnits is effectively always true in this shader, but we accept the flag to avoid warnings
251
+ this._worldUnits = true;
252
+ this.setValues(parameters);
253
+ }
254
+ get color() {
255
+ return this.uniforms.diffuse.value;
256
+ }
257
+ set color(value) {
258
+ this.uniforms.diffuse.value = value;
259
+ }
260
+ // @ts-ignore
261
+ get linewidth() {
262
+ return this.uniforms.linewidth.value;
263
+ }
264
+ // @ts-ignore
265
+ set linewidth(value) {
266
+ if (!this.uniforms.linewidth) {
267
+ return;
268
+ }
269
+ this.uniforms.linewidth.value = value;
270
+ }
271
+ get dashed() {
272
+ return 'USE_DASH' in this.defines;
273
+ }
274
+ set dashed(value) {
275
+ if ((value === true) !== this.dashed) {
276
+ this.needsUpdate = true;
277
+ }
278
+ if (value === true) {
279
+ this.defines.USE_DASH = '';
280
+ }
281
+ else {
282
+ delete this.defines.USE_DASH;
283
+ }
284
+ }
285
+ // @ts-ignore
286
+ get opacity() {
287
+ return this.uniforms.opacity.value;
288
+ }
289
+ set opacity(value) {
290
+ if (!this.uniforms) {
291
+ return;
292
+ }
293
+ this.uniforms.opacity.value = value;
294
+ }
295
+ // --- Compatibility API ---
296
+ // Accept and expose `worldUnits` so Material.setValues doesn't warn.
297
+ // Our implementation measures linewidth in world space, so this is a no-op.
298
+ get worldUnits() {
299
+ return this._worldUnits;
300
+ }
301
+ set worldUnits(v) {
302
+ this._worldUnits = !!v;
303
+ }
304
+ }
305
+
306
+ export { LineMaterial };
307
+ //# sourceMappingURL=line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line.js","sources":["../../../src/locomotion/materials/line.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
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 { InputComponent } from '@iwsdk/xr-input';
8
+ import { Types } from '../ecs/index.js';
9
+ declare const SlideSystem_base: import("elics").SystemConstructor<{
10
+ /** Locomotor engine shared across locomotion systems. */
11
+ locomotor: {
12
+ type: Types.Object;
13
+ default: undefined;
14
+ };
15
+ /** Maximum linear speed in meters/second. */
16
+ maxSpeed: {
17
+ type: Types.Float32;
18
+ default: number;
19
+ };
20
+ /** Comfort vignette strength [0..1]; 0 disables vignetting. */
21
+ comfortAssist: {
22
+ type: Types.Float32;
23
+ default: number;
24
+ };
25
+ /** Button used to trigger jump. */
26
+ jumpButton: {
27
+ type: Types.String;
28
+ default: InputComponent;
29
+ };
30
+ }, {}, import("../ecs/world.js").World, import("../ecs/system.js").System<{
31
+ /** Locomotor engine shared across locomotion systems. */
32
+ locomotor: {
33
+ type: Types.Object;
34
+ default: undefined;
35
+ };
36
+ /** Maximum linear speed in meters/second. */
37
+ maxSpeed: {
38
+ type: Types.Float32;
39
+ default: number;
40
+ };
41
+ /** Comfort vignette strength [0..1]; 0 disables vignetting. */
42
+ comfortAssist: {
43
+ type: Types.Float32;
44
+ default: number;
45
+ };
46
+ /** Button used to trigger jump. */
47
+ jumpButton: {
48
+ type: Types.String;
49
+ default: InputComponent;
50
+ };
51
+ }, {}>>;
52
+ /**
53
+ * Analog stick sliding locomotion with optional comfort vignette and jump.
54
+ *
55
+ * @remarks
56
+ * - Reads left controller thumbstick for planar movement relative to head yaw.
57
+ * - Applies a dynamic peripheral vignette based on input magnitude scaled by
58
+ * `comfortAssist` to reduce motion sickness.
59
+ * - Triggers jump when `jumpButton` is pressed.
60
+ *
61
+ * @category Locomotion
62
+ */
63
+ export declare class SlideSystem extends SlideSystem_base {
64
+ private movementVector;
65
+ private movementDirection;
66
+ private input2D;
67
+ private isMoving;
68
+ private vignette;
69
+ private vignetteAlphaTarget;
70
+ private locomotor;
71
+ init(): void;
72
+ destroy(): void;
73
+ update(delta: number): void;
74
+ }
75
+ export {};
76
+ //# sourceMappingURL=slide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slide.d.ts","sourceRoot":"","sources":["../../src/locomotion/slide.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAgB,MAAM,iBAAiB,CAAC;;IAuElD,yDAAyD;;;;;IAEzD,6CAA6C;;;;;IAE7C,+DAA+D;;;;;IAE/D,mCAAmC;;;;;;IANnC,yDAAyD;;;;;IAEzD,6CAA6C;;;;;IAE7C,+DAA+D;;;;;IAE/D,mCAAmC;;;;;;AApBvC;;;;;;;;;;GAUG;AACH,qBAAa,WAAY,SAAQ,gBAYhC;IACC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,SAAS,CAAa;IAE9B,IAAI;IAKJ,OAAO,IAAI,IAAI;IAIf,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CA+C5B"}
@@ -0,0 +1,131 @@
1
+ import { InputComponent } from '@iwsdk/xr-input';
2
+ import { lerp } from '../node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js';
3
+ import { createSystem } from '../ecs/system.js';
4
+ import '../ecs/world.js';
5
+ import { Types } from 'elics';
6
+ import '../ecs/component-registry.js';
7
+ import '../runtime/three.js';
8
+ import { Vector3, Quaternion, Vector2, Mesh, CylinderGeometry, ShaderMaterial, BackSide, Color } from 'three';
9
+
10
+ /**
11
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
12
+ *
13
+ * This source code is licensed under the MIT license found in the
14
+ * LICENSE file in the root directory of this source tree.
15
+ */
16
+ const vertexShader = `
17
+ varying vec2 vUv;
18
+
19
+ void main() {
20
+ vUv = uv;
21
+ vec4 modelPosition = modelMatrix * vec4(position, 1.0);
22
+ vec4 viewPosition = viewMatrix * modelPosition;
23
+ vec4 projectedPosition = projectionMatrix * viewPosition;
24
+
25
+ gl_Position = projectedPosition;
26
+ }
27
+ `;
28
+ const fragmentShader = `
29
+ uniform vec3 uColor;
30
+ uniform float uAlpha;
31
+ varying vec2 vUv;
32
+
33
+ void main() {
34
+ gl_FragColor = vec4(uColor, uAlpha * vUv.y);
35
+ }
36
+ `;
37
+ const createVignette = (radius, colorRep = 0x000000) => {
38
+ const vignette = new Mesh(new CylinderGeometry(radius, radius * 0.5, 0.3, 16, 1, true), new ShaderMaterial({
39
+ vertexShader: vertexShader,
40
+ fragmentShader: fragmentShader,
41
+ uniforms: {
42
+ uColor: { value: new Color(colorRep) },
43
+ uAlpha: { value: 0 },
44
+ },
45
+ depthTest: false,
46
+ side: BackSide,
47
+ transparent: true,
48
+ }));
49
+ vignette.frustumCulled = false;
50
+ vignette.renderOrder = 999;
51
+ vignette.rotateX(Math.PI / 2);
52
+ vignette.position.z = -0.15;
53
+ return vignette;
54
+ };
55
+ /**
56
+ * Analog stick sliding locomotion with optional comfort vignette and jump.
57
+ *
58
+ * @remarks
59
+ * - Reads left controller thumbstick for planar movement relative to head yaw.
60
+ * - Applies a dynamic peripheral vignette based on input magnitude scaled by
61
+ * `comfortAssist` to reduce motion sickness.
62
+ * - Triggers jump when `jumpButton` is pressed.
63
+ *
64
+ * @category Locomotion
65
+ */
66
+ class SlideSystem extends createSystem({}, {
67
+ /** Locomotor engine shared across locomotion systems. */
68
+ locomotor: { type: Types.Object, default: undefined },
69
+ /** Maximum linear speed in meters/second. */
70
+ maxSpeed: { type: Types.Float32, default: 5 },
71
+ /** Comfort vignette strength [0..1]; 0 disables vignetting. */
72
+ comfortAssist: { type: Types.Float32, default: 0.5 },
73
+ /** Button used to trigger jump. */
74
+ jumpButton: { type: Types.String, default: InputComponent.A_Button },
75
+ }) {
76
+ constructor() {
77
+ super(...arguments);
78
+ this.movementVector = new Vector3();
79
+ this.movementDirection = new Quaternion();
80
+ this.input2D = new Vector2();
81
+ this.isMoving = false;
82
+ this.vignette = createVignette(0.3);
83
+ this.vignetteAlphaTarget = 0;
84
+ }
85
+ init() {
86
+ this.locomotor = this.config.locomotor.value;
87
+ this.player.head.add(this.vignette);
88
+ }
89
+ destroy() {
90
+ this.vignette.removeFromParent();
91
+ }
92
+ update(delta) {
93
+ var _a, _b;
94
+ this.vignetteAlphaTarget = 0;
95
+ // Handle jump input
96
+ if ((_a = this.input.gamepads.right) === null || _a === void 0 ? void 0 : _a.getButtonDown(this.config.jumpButton.value)) {
97
+ this.locomotor.jump();
98
+ }
99
+ if (this.input.isPrimary('controller', 'left')) {
100
+ this.input2D.copy(((_b = this.input.gamepads.left) === null || _b === void 0 ? void 0 : _b.getAxesValues(InputComponent.Thumbstick)) || {
101
+ x: 0,
102
+ y: 0,
103
+ });
104
+ this.movementVector.set(this.input2D.x, 0, this.input2D.y);
105
+ const inputValue = this.input2D.length();
106
+ if (inputValue > 0) {
107
+ this.player.head.getWorldQuaternion(this.movementDirection);
108
+ this.movementVector.applyQuaternion(this.movementDirection);
109
+ this.movementVector.y = 0;
110
+ this.movementVector
111
+ .normalize()
112
+ .multiplyScalar(inputValue * this.config.maxSpeed.value);
113
+ this.locomotor.slide(this.movementVector);
114
+ this.vignetteAlphaTarget =
115
+ inputValue * this.config.comfortAssist.value;
116
+ }
117
+ else {
118
+ if (this.isMoving) {
119
+ // Stop movement by sending zero vector
120
+ this.movementVector.set(0, 0, 0);
121
+ this.locomotor.slide(this.movementVector);
122
+ }
123
+ }
124
+ this.isMoving = inputValue > 0;
125
+ this.vignette.material.uniforms.uAlpha.value = lerp(this.vignette.material.uniforms.uAlpha.value, this.vignetteAlphaTarget, delta * 10);
126
+ }
127
+ }
128
+ }
129
+
130
+ export { SlideSystem };
131
+ //# sourceMappingURL=slide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slide.js","sources":["../../src/locomotion/slide.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
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
+ declare const TeleportSystem_base: import("elics").SystemConstructor<{
9
+ /** Downward acceleration for the parabolic guide (negative). */
10
+ rayGravity: {
11
+ type: Types.Float32;
12
+ default: number;
13
+ };
14
+ /** Locomotor engine used for hit testing and teleport execution. */
15
+ locomotor: {
16
+ type: Types.Object;
17
+ default: undefined;
18
+ };
19
+ /** Enable hand‑tracking micro‑gesture flow for activation/confirm. */
20
+ microGestureControlsEnabled: {
21
+ type: Types.Boolean;
22
+ default: false;
23
+ };
24
+ }, {}, import("../ecs/world.js").World, import("../ecs/system.js").System<{
25
+ /** Downward acceleration for the parabolic guide (negative). */
26
+ rayGravity: {
27
+ type: Types.Float32;
28
+ default: number;
29
+ };
30
+ /** Locomotor engine used for hit testing and teleport execution. */
31
+ locomotor: {
32
+ type: Types.Object;
33
+ default: undefined;
34
+ };
35
+ /** Enable hand‑tracking micro‑gesture flow for activation/confirm. */
36
+ microGestureControlsEnabled: {
37
+ type: Types.Boolean;
38
+ default: false;
39
+ };
40
+ }, {}>>;
41
+ /**
42
+ * Arc‑based teleportation with surface validation and hand/controller input.
43
+ *
44
+ * @remarks
45
+ * - Uses locomotor ray hit tests and only allows targets with upward normals.
46
+ * - In hand‑tracking mode, optional micro‑gestures can control activation
47
+ * (e.g., thumb tap to confirm).
48
+ * - Draws a curved parabolic guide and landing marker with visual feedback.
49
+ *
50
+ * @category Locomotion
51
+ */
52
+ export declare class TeleportSystem extends TeleportSystem_base {
53
+ private rayOrigin;
54
+ private rayDirection;
55
+ private markers;
56
+ private targetValid;
57
+ private teleportMarker;
58
+ private markerMat;
59
+ private line;
60
+ private teleportWasActive;
61
+ private activeInput;
62
+ private locomotor;
63
+ init(): void;
64
+ destroy(): void;
65
+ update(): void;
66
+ }
67
+ export {};
68
+ //# sourceMappingURL=teleport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teleport.d.ts","sourceRoot":"","sources":["../../src/locomotion/teleport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,KAAK,EAAgB,MAAM,iBAAiB,CAAC;;IAkClD,gEAAgE;;;;;IAEhE,oEAAoE;;;;;IAEpE,sEAAsE;;;;;;IAJtE,gEAAgE;;;;;IAEhE,oEAAoE;;;;;IAEpE,sEAAsE;;;;;;AAlB1E;;;;;;;;;;GAUG;AACH,qBAAa,cAAe,SAAQ,mBAUnC;IACC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,SAAS,CAAa;IAE9B,IAAI;IA8BJ,OAAO,IAAI,IAAI;IAMf,MAAM,IAAI,IAAI;CAyFf"}