@iwsdk/core 0.4.2 → 0.5.1

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 (312) hide show
  1. package/README.md +4 -7
  2. package/dist/asset/asset-manager.d.ts +136 -8
  3. package/dist/asset/asset-manager.d.ts.map +1 -1
  4. package/dist/asset/asset-manager.js +491 -47
  5. package/dist/asset/asset-manager.js.map +1 -1
  6. package/dist/asset/cache-manager.d.ts +4 -2
  7. package/dist/asset/cache-manager.d.ts.map +1 -1
  8. package/dist/asset/cache-manager.js +10 -3
  9. package/dist/asset/cache-manager.js.map +1 -1
  10. package/dist/asset/loaders/audio-loader.d.ts +1 -1
  11. package/dist/asset/loaders/audio-loader.d.ts.map +1 -1
  12. package/dist/asset/loaders/audio-loader.js +8 -26
  13. package/dist/asset/loaders/audio-loader.js.map +1 -1
  14. package/dist/asset/loaders/cached-asset-load.d.ts +35 -0
  15. package/dist/asset/loaders/cached-asset-load.d.ts.map +1 -0
  16. package/dist/asset/loaders/cached-asset-load.js +100 -0
  17. package/dist/asset/loaders/cached-asset-load.js.map +1 -0
  18. package/dist/asset/loaders/gltf-loader.d.ts +28 -1
  19. package/dist/asset/loaders/gltf-loader.d.ts.map +1 -1
  20. package/dist/asset/loaders/gltf-loader.js +254 -33
  21. package/dist/asset/loaders/gltf-loader.js.map +1 -1
  22. package/dist/asset/loaders/hdr-texture-loader.d.ts +1 -1
  23. package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -1
  24. package/dist/asset/loaders/hdr-texture-loader.js +19 -29
  25. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
  26. package/dist/asset/loaders/texture-loader.d.ts +1 -1
  27. package/dist/asset/loaders/texture-loader.d.ts.map +1 -1
  28. package/dist/asset/loaders/texture-loader.js +9 -26
  29. package/dist/asset/loaders/texture-loader.js.map +1 -1
  30. package/dist/asset/loaders/uikitml-loader.d.ts +12 -0
  31. package/dist/asset/loaders/uikitml-loader.d.ts.map +1 -0
  32. package/dist/asset/loaders/uikitml-loader.js +44 -0
  33. package/dist/asset/loaders/uikitml-loader.js.map +1 -0
  34. package/dist/audio/audio-pool.d.ts +7 -0
  35. package/dist/audio/audio-pool.d.ts.map +1 -1
  36. package/dist/audio/audio-pool.js.map +1 -1
  37. package/dist/audio/audio-system.d.ts +1 -0
  38. package/dist/audio/audio-system.d.ts.map +1 -1
  39. package/dist/audio/audio-system.js +16 -2
  40. package/dist/audio/audio-system.js.map +1 -1
  41. package/dist/camera/camera-system.d.ts.map +1 -1
  42. package/dist/camera/camera-system.js +5 -3
  43. package/dist/camera/camera-system.js.map +1 -1
  44. package/dist/depth/depth-sensing-system.d.ts.map +1 -1
  45. package/dist/depth/depth-sensing-system.js +31 -10
  46. package/dist/depth/depth-sensing-system.js.map +1 -1
  47. package/dist/ecs/builtin-components.d.ts +1239 -0
  48. package/dist/ecs/builtin-components.d.ts.map +1 -0
  49. package/dist/ecs/builtin-components.js +87 -0
  50. package/dist/ecs/builtin-components.js.map +1 -0
  51. package/dist/ecs/component-editor-metadata.d.ts +19 -0
  52. package/dist/ecs/component-editor-metadata.d.ts.map +1 -0
  53. package/dist/ecs/component-editor-metadata.js +19 -0
  54. package/dist/ecs/component-editor-metadata.js.map +1 -0
  55. package/dist/ecs/component-manifest.d.ts +24 -0
  56. package/dist/ecs/component-manifest.d.ts.map +1 -0
  57. package/dist/ecs/component-manifest.js +121 -0
  58. package/dist/ecs/component-manifest.js.map +1 -0
  59. package/dist/ecs/component.d.ts +1 -0
  60. package/dist/ecs/component.d.ts.map +1 -1
  61. package/dist/ecs/entity.d.ts +20 -2
  62. package/dist/ecs/entity.d.ts.map +1 -1
  63. package/dist/ecs/entity.js +59 -3
  64. package/dist/ecs/entity.js.map +1 -1
  65. package/dist/ecs/index.d.ts +3 -1
  66. package/dist/ecs/index.d.ts.map +1 -1
  67. package/dist/ecs/system.d.ts +9 -0
  68. package/dist/ecs/system.d.ts.map +1 -1
  69. package/dist/ecs/system.js.map +1 -1
  70. package/dist/ecs/world.d.ts +158 -4
  71. package/dist/ecs/world.d.ts.map +1 -1
  72. package/dist/ecs/world.js +304 -5
  73. package/dist/ecs/world.js.map +1 -1
  74. package/dist/environment/dome-gradient.d.ts +2 -1
  75. package/dist/environment/dome-gradient.d.ts.map +1 -1
  76. package/dist/environment/dome-gradient.js +2 -1
  77. package/dist/environment/dome-gradient.js.map +1 -1
  78. package/dist/environment/environment-system.d.ts +19 -3
  79. package/dist/environment/environment-system.d.ts.map +1 -1
  80. package/dist/environment/environment-system.js +78 -48
  81. package/dist/environment/environment-system.js.map +1 -1
  82. package/dist/environment/gradient-environment.d.ts.map +1 -1
  83. package/dist/environment/gradient-environment.js +13 -7
  84. package/dist/environment/gradient-environment.js.map +1 -1
  85. package/dist/environment/scene-ar-environment.d.ts +39 -0
  86. package/dist/environment/scene-ar-environment.d.ts.map +1 -0
  87. package/dist/environment/scene-ar-environment.js +93 -0
  88. package/dist/environment/scene-ar-environment.js.map +1 -0
  89. package/dist/grab/grab-helpers.d.ts +39 -0
  90. package/dist/grab/grab-helpers.d.ts.map +1 -0
  91. package/dist/grab/grab-helpers.js +59 -0
  92. package/dist/grab/grab-helpers.js.map +1 -0
  93. package/dist/grab/grab-system.d.ts +45 -0
  94. package/dist/grab/grab-system.d.ts.map +1 -1
  95. package/dist/grab/grab-system.js +67 -5
  96. package/dist/grab/grab-system.js.map +1 -1
  97. package/dist/grab/grab-warnings.d.ts +14 -0
  98. package/dist/grab/grab-warnings.d.ts.map +1 -0
  99. package/dist/grab/grab-warnings.js +53 -0
  100. package/dist/grab/grab-warnings.js.map +1 -0
  101. package/dist/grab/handles.d.ts.map +1 -1
  102. package/dist/grab/handles.js +8 -3
  103. package/dist/grab/handles.js.map +1 -1
  104. package/dist/index.d.ts +4 -0
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +42 -16
  107. package/dist/index.js.map +1 -1
  108. package/dist/init/world-initializer.d.ts +11 -7
  109. package/dist/init/world-initializer.d.ts.map +1 -1
  110. package/dist/init/world-initializer.js +118 -57
  111. package/dist/init/world-initializer.js.map +1 -1
  112. package/dist/init/xr.d.ts +0 -1
  113. package/dist/init/xr.d.ts.map +1 -1
  114. package/dist/init/xr.js +12 -3
  115. package/dist/init/xr.js.map +1 -1
  116. package/dist/input/input-system.d.ts.map +1 -1
  117. package/dist/input/input-system.js +26 -11
  118. package/dist/input/input-system.js.map +1 -1
  119. package/dist/layers/xr-layer-state.d.ts +47 -0
  120. package/dist/layers/xr-layer-state.d.ts.map +1 -0
  121. package/dist/layers/xr-layer-state.js +23 -0
  122. package/dist/layers/xr-layer-state.js.map +1 -0
  123. package/dist/layers/xr-layer-system.d.ts +45 -93
  124. package/dist/layers/xr-layer-system.d.ts.map +1 -1
  125. package/dist/layers/xr-layer-system.js +4 -25
  126. package/dist/layers/xr-layer-system.js.map +1 -1
  127. package/dist/level/index.d.ts +6 -2
  128. package/dist/level/index.d.ts.map +1 -1
  129. package/dist/level/level-component-applier.d.ts +24 -0
  130. package/dist/level/level-component-applier.d.ts.map +1 -0
  131. package/dist/level/level-component-applier.js +199 -0
  132. package/dist/level/level-component-applier.js.map +1 -0
  133. package/dist/level/level-player-rig.d.ts +17 -0
  134. package/dist/level/level-player-rig.d.ts.map +1 -0
  135. package/dist/level/level-player-rig.js +113 -0
  136. package/dist/level/level-player-rig.js.map +1 -0
  137. package/dist/level/level-scene-environment.d.ts +28 -0
  138. package/dist/level/level-scene-environment.d.ts.map +1 -0
  139. package/dist/level/level-scene-environment.js +121 -0
  140. package/dist/level/level-scene-environment.js.map +1 -0
  141. package/dist/level/level-scene-json-importer.d.ts +53 -0
  142. package/dist/level/level-scene-json-importer.d.ts.map +1 -0
  143. package/dist/level/level-scene-json-importer.js +256 -0
  144. package/dist/level/level-scene-json-importer.js.map +1 -0
  145. package/dist/level/level-scene-material.d.ts +22 -0
  146. package/dist/level/level-scene-material.d.ts.map +1 -0
  147. package/dist/level/level-scene-material.js +231 -0
  148. package/dist/level/level-scene-material.js.map +1 -0
  149. package/dist/level/level-scene-object.d.ts +49 -0
  150. package/dist/level/level-scene-object.d.ts.map +1 -0
  151. package/dist/level/level-scene-object.js +396 -0
  152. package/dist/level/level-scene-object.js.map +1 -0
  153. package/dist/level/level-scene-primitive.d.ts +21 -0
  154. package/dist/level/level-scene-primitive.d.ts.map +1 -0
  155. package/dist/level/level-scene-primitive.js +159 -0
  156. package/dist/level/level-scene-primitive.js.map +1 -0
  157. package/dist/level/level-system.d.ts +14 -20
  158. package/dist/level/level-system.d.ts.map +1 -1
  159. package/dist/level/level-system.js +114 -49
  160. package/dist/level/level-system.js.map +1 -1
  161. package/dist/lighting/index.d.ts +10 -0
  162. package/dist/lighting/index.d.ts.map +1 -0
  163. package/dist/lighting/index.js +4 -0
  164. package/dist/lighting/index.js.map +1 -0
  165. package/dist/lighting/light-binding.d.ts +76 -0
  166. package/dist/lighting/light-binding.d.ts.map +1 -0
  167. package/dist/lighting/light-binding.js +229 -0
  168. package/dist/lighting/light-binding.js.map +1 -0
  169. package/dist/lighting/light-components.d.ts +885 -0
  170. package/dist/lighting/light-components.d.ts.map +1 -0
  171. package/dist/lighting/light-components.js +146 -0
  172. package/dist/lighting/light-components.js.map +1 -0
  173. package/dist/lighting/light-system.d.ts +919 -0
  174. package/dist/lighting/light-system.d.ts.map +1 -0
  175. package/dist/lighting/light-system.js +244 -0
  176. package/dist/lighting/light-system.js.map +1 -0
  177. package/dist/locomotion/locomotion-environment.d.ts +27 -0
  178. package/dist/locomotion/locomotion-environment.d.ts.map +1 -0
  179. package/dist/locomotion/locomotion-environment.js +22 -0
  180. package/dist/locomotion/locomotion-environment.js.map +1 -0
  181. package/dist/locomotion/locomotion.d.ts +5 -34
  182. package/dist/locomotion/locomotion.d.ts.map +1 -1
  183. package/dist/locomotion/locomotion.js +33 -31
  184. package/dist/locomotion/locomotion.js.map +1 -1
  185. package/dist/locomotion/materials/line.js +1 -1
  186. package/dist/locomotion/slide.d.ts.map +1 -1
  187. package/dist/locomotion/slide.js +2 -2
  188. package/dist/locomotion/slide.js.map +1 -1
  189. package/dist/mcp/ecs-debug-tools.d.ts.map +1 -1
  190. package/dist/mcp/ecs-debug-tools.js +10 -2
  191. package/dist/mcp/ecs-debug-tools.js.map +1 -1
  192. package/dist/mcp/mcp-runtime.d.ts.map +1 -1
  193. package/dist/mcp/mcp-runtime.js +4 -1
  194. package/dist/mcp/mcp-runtime.js.map +1 -1
  195. package/dist/mcp/scene-tools.d.ts +152 -1
  196. package/dist/mcp/scene-tools.d.ts.map +1 -1
  197. package/dist/mcp/scene-tools.js +538 -8
  198. package/dist/mcp/scene-tools.js.map +1 -1
  199. package/dist/physics/index.js +11 -4
  200. package/dist/physics/index.js.map +1 -1
  201. package/dist/physics/physics-system.d.ts +704 -11
  202. package/dist/physics/physics-system.d.ts.map +1 -1
  203. package/dist/physics/physics-system.js +307 -25
  204. package/dist/physics/physics-system.js.map +1 -1
  205. package/dist/physics/physicsBody.d.ts +40 -1
  206. package/dist/physics/physicsBody.d.ts.map +1 -1
  207. package/dist/physics/physicsBody.js +39 -0
  208. package/dist/physics/physicsBody.js.map +1 -1
  209. package/dist/physics/physicsManipulation.d.ts +1 -1
  210. package/dist/physics/physicsManipulation.d.ts.map +1 -1
  211. package/dist/physics/physicsShape.d.ts +5 -3
  212. package/dist/physics/physicsShape.d.ts.map +1 -1
  213. package/dist/physics/physicsShape.js +2 -1
  214. package/dist/physics/physicsShape.js.map +1 -1
  215. package/dist/physics/utils.d.ts +10 -0
  216. package/dist/physics/utils.d.ts.map +1 -1
  217. package/dist/physics/utils.js +82 -48
  218. package/dist/physics/utils.js.map +1 -1
  219. package/dist/project/index.d.ts +11 -0
  220. package/dist/project/index.d.ts.map +1 -0
  221. package/dist/project/index.js +5 -0
  222. package/dist/project/index.js.map +1 -0
  223. package/dist/project/normalize.d.ts +19 -0
  224. package/dist/project/normalize.d.ts.map +1 -0
  225. package/dist/project/normalize.js +206 -0
  226. package/dist/project/normalize.js.map +1 -0
  227. package/dist/project/paths.d.ts +21 -0
  228. package/dist/project/paths.d.ts.map +1 -0
  229. package/dist/project/paths.js +75 -0
  230. package/dist/project/paths.js.map +1 -0
  231. package/dist/project/types.d.ts +159 -0
  232. package/dist/project/types.d.ts.map +1 -0
  233. package/dist/project/types.js +11 -0
  234. package/dist/project/types.js.map +1 -0
  235. package/dist/project/validation.d.ts +17 -0
  236. package/dist/project/validation.d.ts.map +1 -0
  237. package/dist/project/validation.js +501 -0
  238. package/dist/project/validation.js.map +1 -0
  239. package/dist/scene-understanding/scene-understanding-system.d.ts +23 -2
  240. package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
  241. package/dist/scene-understanding/scene-understanding-system.js +76 -54
  242. package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
  243. package/dist/schemas/iwsdk-project.v1.schema.json +305 -0
  244. package/dist/transform/transform-component.d.ts +32 -0
  245. package/dist/transform/transform-component.d.ts.map +1 -0
  246. package/dist/transform/transform-component.js +24 -0
  247. package/dist/transform/transform-component.js.map +1 -0
  248. package/dist/transform/transform.d.ts +9 -42
  249. package/dist/transform/transform.d.ts.map +1 -1
  250. package/dist/transform/transform.js +8 -25
  251. package/dist/transform/transform.js.map +1 -1
  252. package/dist/ui/document.d.ts +9 -2
  253. package/dist/ui/document.d.ts.map +1 -1
  254. package/dist/ui/document.js +30 -5
  255. package/dist/ui/document.js.map +1 -1
  256. package/dist/ui/follow-component.d.ts +57 -0
  257. package/dist/ui/follow-component.d.ts.map +1 -0
  258. package/dist/ui/follow-component.js +38 -0
  259. package/dist/ui/follow-component.js.map +1 -0
  260. package/dist/ui/follow.d.ts +28 -102
  261. package/dist/ui/follow.d.ts.map +1 -1
  262. package/dist/ui/follow.js +10 -48
  263. package/dist/ui/follow.js.map +1 -1
  264. package/dist/ui/index.d.ts +3 -0
  265. package/dist/ui/index.d.ts.map +1 -1
  266. package/dist/ui/panel-components.d.ts +29 -0
  267. package/dist/ui/panel-components.d.ts.map +1 -0
  268. package/dist/ui/panel-components.js +22 -0
  269. package/dist/ui/panel-components.js.map +1 -0
  270. package/dist/ui/screenspace-component.d.ts +39 -0
  271. package/dist/ui/screenspace-component.d.ts.map +1 -0
  272. package/dist/ui/screenspace-component.js +21 -0
  273. package/dist/ui/screenspace-component.js.map +1 -0
  274. package/dist/ui/screenspace.d.ts +47 -135
  275. package/dist/ui/screenspace.d.ts.map +1 -1
  276. package/dist/ui/screenspace.js +127 -65
  277. package/dist/ui/screenspace.js.map +1 -1
  278. package/dist/ui/ui.d.ts +20 -122
  279. package/dist/ui/ui.d.ts.map +1 -1
  280. package/dist/ui/ui.js +44 -107
  281. package/dist/ui/ui.js.map +1 -1
  282. package/dist/ui/uikitml-asset.d.ts +25 -0
  283. package/dist/ui/uikitml-asset.d.ts.map +1 -0
  284. package/dist/ui/uikitml-asset.js +56 -0
  285. package/dist/ui/uikitml-asset.js.map +1 -0
  286. package/dist/ui/uikitml.d.ts +41 -0
  287. package/dist/ui/uikitml.d.ts.map +1 -0
  288. package/dist/ui/uikitml.js +119 -0
  289. package/dist/ui/uikitml.js.map +1 -0
  290. package/dist/version.d.ts +1 -1
  291. package/dist/version.js +1 -1
  292. package/dist/visibility/visibility-component.d.ts +14 -0
  293. package/dist/visibility/visibility-component.d.ts.map +1 -0
  294. package/dist/visibility/visibility-component.js +15 -0
  295. package/dist/visibility/visibility-component.js.map +1 -0
  296. package/dist/visibility/visibility.d.ts +3 -10
  297. package/dist/visibility/visibility.d.ts.map +1 -1
  298. package/dist/visibility/visibility.js +9 -12
  299. package/dist/visibility/visibility.js.map +1 -1
  300. package/package.json +36 -8
  301. package/dist/ecs/component-registry.d.ts +0 -54
  302. package/dist/ecs/component-registry.d.ts.map +0 -1
  303. package/dist/ecs/component-registry.js +0 -86
  304. package/dist/ecs/component-registry.js.map +0 -1
  305. package/dist/level/level-entity-creator.d.ts +0 -27
  306. package/dist/level/level-entity-creator.d.ts.map +0 -1
  307. package/dist/level/level-entity-creator.js +0 -108
  308. package/dist/level/level-entity-creator.js.map +0 -1
  309. package/dist/level/level-glxf-importer.d.ts +0 -23
  310. package/dist/level/level-glxf-importer.d.ts.map +0 -1
  311. package/dist/level/level-glxf-importer.js +0 -40
  312. package/dist/level/level-glxf-importer.js.map +0 -1
@@ -4,185 +4,72 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import { Types } from '../ecs/component.js';
8
- /**
9
- * CSS‑like screen‑space layout for a {@link PanelUI}.
10
- *
11
- * @remarks
12
- * When XR is not presenting, the panel is re‑parented under the active camera and positioned
13
- * in pixels using CSS‑like expressions for `top`/`left`/`bottom`/`right`, with `width`/`height`
14
- * specified in any CSS units supported by the browser (e.g. `px`, `vw`, `vh`, `%`, `em`).
15
- *
16
- * On XR session start, the panel is automatically returned to world space.
17
- *
18
- * All size inputs are ultimately converted to meters using the camera frustum at `zOffset`.
19
- *
20
- * @example Place a panel at bottom‑right, 40% width, auto height
21
- * ```ts
22
- * entity.addComponent(PanelUI, { config: '/ui/menu.json' })
23
- * entity.addComponent(ScreenSpace, {
24
- * width: '40vw',
25
- * height: 'auto',
26
- * bottom: '24px',
27
- * right: '24px',
28
- * zOffset: 0.25,
29
- * })
30
- * ```
31
- *
32
- * @category UI
33
- */
34
- export declare const ScreenSpace: import("elics").Component<{
35
- /** CSS size expression for height (e.g., `240px`, `40vh`, `auto`). */
36
- height: {
37
- type: Types.String;
38
- default: string;
39
- };
40
- /** CSS size expression for width (e.g., `480px`, `40vw`, `auto`). */
41
- width: {
42
- type: Types.String;
43
- default: string;
44
- };
45
- /** CSS absolute `top` position (pixels/percent/vh) or `auto`. */
46
- top: {
47
- type: Types.String;
48
- default: string;
49
- };
50
- /** CSS absolute `bottom` position (pixels/percent/vh) or `auto`. */
51
- bottom: {
52
- type: Types.String;
53
- default: string;
54
- };
55
- /** CSS absolute `left` position (pixels/percent/vw) or `auto`. */
56
- left: {
57
- type: Types.String;
58
- default: string;
59
- };
60
- /** CSS absolute `right` position (pixels/percent/vw) or `auto`. */
61
- right: {
62
- type: Types.String;
63
- default: string;
64
- };
65
- /** Distance in meters in front of the camera’s near plane. */
66
- zOffset: {
67
- type: Types.Float32;
68
- default: number;
69
- };
70
- }>;
7
+ export { ScreenSpace } from './screenspace-component.js';
71
8
  declare const ScreenSpaceUISystem_base: import("elics").SystemConstructor<import("elics").SystemSchema, {
72
9
  panels: {
73
- required: (import("elics").Component<{
74
- config: {
75
- type: Types.String;
76
- default: string;
77
- };
78
- maxWidth: {
79
- type: Types.Float32;
80
- default: number;
81
- };
82
- maxHeight: {
83
- type: Types.Float32;
84
- default: number;
85
- };
86
- }> | import("elics").Component<{
87
- document: {
88
- type: Types.Object;
89
- default: undefined;
90
- };
91
- }> | import("elics").Component<{
92
- /** CSS size expression for height (e.g., `240px`, `40vh`, `auto`). */
10
+ required: import("elics").Component<{
93
11
  height: {
94
- type: Types.String;
12
+ type: import("elics").Types.String;
95
13
  default: string;
96
14
  };
97
- /** CSS size expression for width (e.g., `480px`, `40vw`, `auto`). */
98
15
  width: {
99
- type: Types.String;
16
+ type: import("elics").Types.String;
100
17
  default: string;
101
18
  };
102
- /** CSS absolute `top` position (pixels/percent/vh) or `auto`. */
103
19
  top: {
104
- type: Types.String;
20
+ type: import("elics").Types.String;
105
21
  default: string;
106
22
  };
107
- /** CSS absolute `bottom` position (pixels/percent/vh) or `auto`. */
108
23
  bottom: {
109
- type: Types.String;
24
+ type: import("elics").Types.String;
110
25
  default: string;
111
26
  };
112
- /** CSS absolute `left` position (pixels/percent/vw) or `auto`. */
113
27
  left: {
114
- type: Types.String;
28
+ type: import("elics").Types.String;
115
29
  default: string;
116
30
  };
117
- /** CSS absolute `right` position (pixels/percent/vw) or `auto`. */
118
31
  right: {
119
- type: Types.String;
32
+ type: import("elics").Types.String;
120
33
  default: string;
121
34
  };
122
- /** Distance in meters in front of the camera’s near plane. */
123
35
  zOffset: {
124
- type: Types.Float32;
36
+ type: import("elics").Types.Float32;
125
37
  default: number;
126
38
  };
127
- }>)[];
39
+ }>[];
128
40
  };
129
41
  }, import("../index.js").World, import("../ecs/system.js").System<import("elics").SystemSchema, {
130
42
  panels: {
131
- required: (import("elics").Component<{
132
- config: {
133
- type: Types.String;
134
- default: string;
135
- };
136
- maxWidth: {
137
- type: Types.Float32;
138
- default: number;
139
- };
140
- maxHeight: {
141
- type: Types.Float32;
142
- default: number;
143
- };
144
- }> | import("elics").Component<{
145
- document: {
146
- type: Types.Object;
147
- default: undefined;
148
- };
149
- }> | import("elics").Component<{
150
- /** CSS size expression for height (e.g., `240px`, `40vh`, `auto`). */
43
+ required: import("elics").Component<{
151
44
  height: {
152
- type: Types.String;
45
+ type: import("elics").Types.String;
153
46
  default: string;
154
47
  };
155
- /** CSS size expression for width (e.g., `480px`, `40vw`, `auto`). */
156
48
  width: {
157
- type: Types.String;
49
+ type: import("elics").Types.String;
158
50
  default: string;
159
51
  };
160
- /** CSS absolute `top` position (pixels/percent/vh) or `auto`. */
161
52
  top: {
162
- type: Types.String;
53
+ type: import("elics").Types.String;
163
54
  default: string;
164
55
  };
165
- /** CSS absolute `bottom` position (pixels/percent/vh) or `auto`. */
166
56
  bottom: {
167
- type: Types.String;
57
+ type: import("elics").Types.String;
168
58
  default: string;
169
59
  };
170
- /** CSS absolute `left` position (pixels/percent/vw) or `auto`. */
171
60
  left: {
172
- type: Types.String;
61
+ type: import("elics").Types.String;
173
62
  default: string;
174
63
  };
175
- /** CSS absolute `right` position (pixels/percent/vw) or `auto`. */
176
64
  right: {
177
- type: Types.String;
65
+ type: import("elics").Types.String;
178
66
  default: string;
179
67
  };
180
- /** Distance in meters in front of the camera’s near plane. */
181
68
  zOffset: {
182
- type: Types.Float32;
69
+ type: import("elics").Types.Float32;
183
70
  default: number;
184
71
  };
185
- }>)[];
72
+ }>[];
186
73
  };
187
74
  }>>;
188
75
  /**
@@ -193,29 +80,54 @@ declare const ScreenSpaceUISystem_base: import("elics").SystemConstructor<import
193
80
  * a camera‑relative plane given by `zOffset`.
194
81
  * - Automatically toggles between screen‑space (under the camera) and world‑space depending on
195
82
  * `renderer.xr.isPresenting`.
196
- * - Sets {@link UIKitDocument.setTargetDimensions} so that the UI scales to the requested size
197
- * without distorting aspect ratio.
83
+ * - Uses {@link UIKitDocument.setTargetDimensions} while camera-local, then restores intrinsic
84
+ * size in XR so the entity transform remains the world-space scale authority.
198
85
  *
199
86
  * @category UI
200
87
  */
201
88
  export declare class ScreenSpaceUISystem extends ScreenSpaceUISystem_base {
202
89
  private screenSpaceDescendants;
90
+ private documentSizes;
91
+ private entityDocuments;
92
+ private layoutEnvironment?;
203
93
  private layoutHelpers;
204
94
  private resized;
95
+ private autoDimensionWarned;
205
96
  /** Prepare hidden DOM helpers and resize listener. */
206
97
  init(): void;
207
98
  /** Move panels between world and screen space and recompute layout on changes. */
208
99
  update(): void;
100
+ /** Detect every renderer/camera input used to map screen pixels into world units. */
101
+ private hasLayoutEnvironmentChanged;
102
+ /** Resolve legacy component-backed and manifest-backed UIKit documents. */
103
+ private resolveDocument;
104
+ /** Track intrinsic UIKit dimensions so late font/content layout invalidates positioning. */
105
+ private hasDocumentSizeChanged;
209
106
  /** Compute pixel size/position and apply camera‑relative transform. */
210
107
  private calculateLayout;
211
108
  /**
212
109
  * Evaluate CSS expressions for width/height using a temporary DOM node.
213
110
  * Returns pixel values from `window.getComputedStyle`.
111
+ *
112
+ * @remarks
113
+ * Older scene documents may explicitly declare `'auto'`. On a floating
114
+ * helper `<div>` the browser resolves an unconstrained `auto`
115
+ * dimension to `0px`. A `0px` target collapses {@link
116
+ * UIKitDocument.setTargetDimensions} and the panel retains its intrinsic
117
+ * world-space size inside camera space, blowing the UI up to most of the
118
+ * viewport. Until aspect-ratio derivation from the
119
+ * other axis lands, treat `'auto'` as an unsupported size for screen-space
120
+ * layout: warn once per axis, and clamp the contributing CSS expression to
121
+ * a viewport-relative fallback that produces a sensibly-sized HUD.
214
122
  */
215
123
  private getComputedDimensionValues;
124
+ /**
125
+ * Substitute a `'25vw'` / `'25vh'` fallback for `'auto'` on the given axis,
126
+ * logging a single warning per axis the first time it triggers.
127
+ */
128
+ private resolveAutoDimension;
216
129
  /** Evaluate CSS absolute positioning and return `top`/`left` in pixels. */
217
130
  private getComputedPositionValues;
218
131
  destroy(): void;
219
132
  }
220
- export {};
221
133
  //# sourceMappingURL=screenspace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenspace.d.ts","sourceRoot":"","sources":["../../src/ui/screenspace.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAmB,MAAM,qBAAqB,CAAC;AAS7D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,WAAW;IAGpB,sEAAsE;;;;;IAEtE,qEAAqE;;;;;IAErE,iEAAiE;;;;;IAEjE,oEAAoE;;;;;IAEpE,kEAAkE;;;;;IAElE,mEAAmE;;;;;IAEnE,8DAA8D;;;;;EAIjE,CAAC;;;;;;;;;;;;;;;;;;;;;;YAhBE,sEAAsE;;;;;YAEtE,qEAAqE;;;;;YAErE,iEAAiE;;;;;YAEjE,oEAAoE;;;;;YAEpE,kEAAkE;;;;;YAElE,mEAAmE;;;;;YAEnE,8DAA8D;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAZ9D,sEAAsE;;;;;YAEtE,qEAAqE;;;;;YAErE,iEAAiE;;;;;YAEjE,oEAAoE;;;;;YAEpE,kEAAkE;;;;;YAElE,mEAAmE;;;;;YAEnE,8DAA8D;;;;;;;;AAKlE;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAoB,SAAQ,wBAEvC;IACA,OAAO,CAAC,sBAAsB,CAAkB;IAChD,OAAO,CAAC,aAAa,CAKnB;IACF,OAAO,CAAC,OAAO,CAAQ;IAEvB,sDAAsD;IACtD,IAAI;IAoBJ,kFAAkF;IAClF,MAAM,IAAI,IAAI;IA0Cd,uEAAuE;IACvE,OAAO,CAAC,eAAe;IAmEvB;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAgBlC,2EAA2E;IAC3E,OAAO,CAAC,yBAAyB;IAyBjC,OAAO,IAAI,IAAI;CAOhB"}
1
+ {"version":3,"file":"screenspace.d.ts","sourceRoot":"","sources":["../../src/ui/screenspace.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQzD;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAoB,SAAQ,wBAEvC;IACA,OAAO,CAAC,sBAAsB,CAAkB;IAChD,OAAO,CAAC,aAAa,CAGjB;IACJ,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,OAAO,CAAC,aAAa,CAKnB;IACF,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,mBAAmB,CAAmC;IAE9D,sDAAsD;IACtD,IAAI;IAoBJ,kFAAkF;IAClF,MAAM,IAAI,IAAI;IAkDd,qFAAqF;IACrF,OAAO,CAAC,2BAA2B;IAkBnC,2EAA2E;IAC3E,OAAO,CAAC,eAAe;IA4BvB,4FAA4F;IAC5F,OAAO,CAAC,sBAAsB;IAe9B,uEAAuE;IACvE,OAAO,CAAC,eAAe;IA4EvB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,0BAA0B;IAmBlC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAkB5B,2EAA2E;IAC3E,OAAO,CAAC,yBAAyB;IAyBjC,OAAO,IAAI,IAAI;CAOhB"}
@@ -1,8 +1,8 @@
1
- import { createComponent, Types } from 'elics';
2
1
  import { createSystem } from '../ecs/system.js';
3
- import '../runtime/three.js';
4
- import { PanelUI, PanelDocument } from './ui.js';
5
- import { MathUtils } from 'three';
2
+ import { UIKitDocument } from './document.js';
3
+ import { ScreenSpace } from './screenspace-component.js';
4
+ import './ui.js';
5
+ import { PanelDocument } from './panel-components.js';
6
6
 
7
7
  /**
8
8
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -10,48 +10,6 @@ import { MathUtils } from 'three';
10
10
  * This source code is licensed under the MIT license found in the
11
11
  * LICENSE file in the root directory of this source tree.
12
12
  */
13
- /**
14
- * CSS‑like screen‑space layout for a {@link PanelUI}.
15
- *
16
- * @remarks
17
- * When XR is not presenting, the panel is re‑parented under the active camera and positioned
18
- * in pixels using CSS‑like expressions for `top`/`left`/`bottom`/`right`, with `width`/`height`
19
- * specified in any CSS units supported by the browser (e.g. `px`, `vw`, `vh`, `%`, `em`).
20
- *
21
- * On XR session start, the panel is automatically returned to world space.
22
- *
23
- * All size inputs are ultimately converted to meters using the camera frustum at `zOffset`.
24
- *
25
- * @example Place a panel at bottom‑right, 40% width, auto height
26
- * ```ts
27
- * entity.addComponent(PanelUI, { config: '/ui/menu.json' })
28
- * entity.addComponent(ScreenSpace, {
29
- * width: '40vw',
30
- * height: 'auto',
31
- * bottom: '24px',
32
- * right: '24px',
33
- * zOffset: 0.25,
34
- * })
35
- * ```
36
- *
37
- * @category UI
38
- */
39
- const ScreenSpace = createComponent('ScreenSpace', {
40
- /** CSS size expression for height (e.g., `240px`, `40vh`, `auto`). */
41
- height: { type: Types.String, default: 'auto' },
42
- /** CSS size expression for width (e.g., `480px`, `40vw`, `auto`). */
43
- width: { type: Types.String, default: 'auto' },
44
- /** CSS absolute `top` position (pixels/percent/vh) or `auto`. */
45
- top: { type: Types.String, default: 'auto' },
46
- /** CSS absolute `bottom` position (pixels/percent/vh) or `auto`. */
47
- bottom: { type: Types.String, default: 'auto' },
48
- /** CSS absolute `left` position (pixels/percent/vw) or `auto`. */
49
- left: { type: Types.String, default: 'auto' },
50
- /** CSS absolute `right` position (pixels/percent/vw) or `auto`. */
51
- right: { type: Types.String, default: 'auto' },
52
- /** Distance in meters in front of the camera’s near plane. */
53
- zOffset: { type: Types.Float32, default: 0.2 },
54
- }, 'Component for screen-space UI positioning');
55
13
  /**
56
14
  * Positions {@link PanelUI} documents relative to the camera with CSS‑like semantics.
57
15
  *
@@ -60,17 +18,19 @@ const ScreenSpace = createComponent('ScreenSpace', {
60
18
  * a camera‑relative plane given by `zOffset`.
61
19
  * - Automatically toggles between screen‑space (under the camera) and world‑space depending on
62
20
  * `renderer.xr.isPresenting`.
63
- * - Sets {@link UIKitDocument.setTargetDimensions} so that the UI scales to the requested size
64
- * without distorting aspect ratio.
21
+ * - Uses {@link UIKitDocument.setTargetDimensions} while camera-local, then restores intrinsic
22
+ * size in XR so the entity transform remains the world-space scale authority.
65
23
  *
66
24
  * @category UI
67
25
  */
68
26
  class ScreenSpaceUISystem extends createSystem({
69
- panels: { required: [PanelUI, PanelDocument, ScreenSpace] },
27
+ panels: { required: [ScreenSpace] },
70
28
  }) {
71
29
  constructor() {
72
30
  super(...arguments);
73
31
  this.screenSpaceDescendants = [];
32
+ this.documentSizes = new WeakMap();
33
+ this.entityDocuments = new WeakMap();
74
34
  this.layoutHelpers = {
75
35
  dimensionContainer: document.createElement('div'),
76
36
  positionContainer: document.createElement('div'),
@@ -78,6 +38,7 @@ class ScreenSpaceUISystem extends createSystem({
78
38
  positionElement: document.createElement('div'),
79
39
  };
80
40
  this.resized = true;
41
+ this.autoDimensionWarned = { width: false, height: false };
81
42
  }
82
43
  /** Prepare hidden DOM helpers and resize listener. */
83
44
  init() {
@@ -89,51 +50,114 @@ class ScreenSpaceUISystem extends createSystem({
89
50
  this.layoutHelpers.positionContainer.style.height = '100vh';
90
51
  this.layoutHelpers.positionContainer.style.position = 'relative';
91
52
  this.layoutHelpers.positionContainer.style.visibility = 'hidden';
92
- window.addEventListener('resize', () => {
53
+ const onResize = () => {
93
54
  this.resized = true;
94
- }, false);
55
+ };
56
+ window.addEventListener('resize', onResize, false);
57
+ this.cleanupFuncs.push(() => window.removeEventListener('resize', onResize, false));
95
58
  }
96
59
  /** Move panels between world and screen space and recompute layout on changes. */
97
60
  update() {
98
61
  this.screenSpaceDescendants.length = 0;
62
+ const resized = this.resized;
63
+ const layoutEnvironmentChanged = this.hasLayoutEnvironmentChanged();
99
64
  this.queries.panels.entities.forEach((entity) => {
100
65
  const parent = entity.object3D;
101
- const document = PanelDocument.data.document[entity.index];
66
+ const document = this.resolveDocument(entity);
102
67
  if (!document) {
103
68
  return;
104
69
  } // Skip if UI not loaded yet
105
70
  const panelInScreenSpace = document.parent === this.camera;
71
+ const documentSizeChanged = this.hasDocumentSizeChanged(document);
106
72
  if (this.renderer.xr.isPresenting && panelInScreenSpace) {
107
73
  // Move back to world space when entering XR
108
74
  parent === null || parent === void 0 ? void 0 : parent.add(document);
75
+ document.clearTargetDimensions();
109
76
  // Reset position that were set during screen space layout
110
77
  document.position.set(0, 0, 0);
111
78
  }
112
79
  else if (!this.renderer.xr.isPresenting && !panelInScreenSpace) {
113
80
  // Move to screen space when not in XR
114
81
  this.camera.add(document);
115
- this.calculateLayout(entity);
82
+ this.calculateLayout(entity, document);
116
83
  }
117
- else if (panelInScreenSpace && this.resized) {
118
- // Recalculate layout on resize
119
- this.calculateLayout(entity);
120
- this.resized = false;
84
+ else if (panelInScreenSpace &&
85
+ (resized || documentSizeChanged || layoutEnvironmentChanged)) {
86
+ // Recalculate when the viewport, camera projection, or UIKit's intrinsic
87
+ // layout changes. In particular, three.js restores the browser camera one
88
+ // frame after XR ends, so the first non-XR layout may still see the XR
89
+ // projection and must self-correct on the following frame.
90
+ this.calculateLayout(entity, document);
121
91
  }
122
92
  if (document.parent === this.camera) {
123
93
  this.screenSpaceDescendants.push(document);
124
94
  }
125
95
  });
96
+ this.resized = false;
126
97
  const scene = this.scene;
127
98
  scene.screenSpaceDescendants =
128
99
  this.screenSpaceDescendants.length > 0
129
100
  ? this.screenSpaceDescendants
130
101
  : undefined;
131
102
  }
103
+ /** Detect every renderer/camera input used to map screen pixels into world units. */
104
+ hasLayoutEnvironmentChanged() {
105
+ const next = {
106
+ canvasWidth: this.renderer.domElement.clientWidth,
107
+ canvasHeight: this.renderer.domElement.clientHeight,
108
+ // Matrix element 5 is the vertical projection scale. Unlike camera.fov,
109
+ // it also reflects zoom and direct projection-matrix changes.
110
+ projectionScaleY: this.camera.projectionMatrix.elements[5],
111
+ };
112
+ const previous = this.layoutEnvironment;
113
+ this.layoutEnvironment = next;
114
+ return (previous == null ||
115
+ previous.canvasWidth !== next.canvasWidth ||
116
+ previous.canvasHeight !== next.canvasHeight ||
117
+ previous.projectionScaleY !== next.projectionScaleY);
118
+ }
119
+ /** Resolve legacy component-backed and manifest-backed UIKit documents. */
120
+ resolveDocument(entity) {
121
+ const host = entity.object3D;
122
+ if (!host) {
123
+ return undefined;
124
+ }
125
+ const cached = this.entityDocuments.get(host);
126
+ if (cached && !cached.disposed) {
127
+ return cached;
128
+ }
129
+ const componentDocument = PanelDocument.data.document[entity.index];
130
+ if (componentDocument && !componentDocument.disposed) {
131
+ this.entityDocuments.set(host, componentDocument);
132
+ return componentDocument;
133
+ }
134
+ let discovered;
135
+ host.traverse((object) => {
136
+ if (!discovered && object instanceof UIKitDocument && !object.disposed) {
137
+ discovered = object;
138
+ }
139
+ });
140
+ if (discovered) {
141
+ this.entityDocuments.set(host, discovered);
142
+ }
143
+ return discovered;
144
+ }
145
+ /** Track intrinsic UIKit dimensions so late font/content layout invalidates positioning. */
146
+ hasDocumentSizeChanged(document) {
147
+ const size = document.computedSize;
148
+ if (!size) {
149
+ return false;
150
+ }
151
+ const previous = this.documentSizes.get(document);
152
+ this.documentSizes.set(document, size);
153
+ return (previous == null ||
154
+ previous.width !== size.width ||
155
+ previous.height !== size.height);
156
+ }
132
157
  /** Compute pixel size/position and apply camera‑relative transform. */
133
- calculateLayout(entity) {
134
- const document = PanelDocument.data.document[entity.index];
135
- const computedSize = document === null || document === void 0 ? void 0 : document.computedSize;
136
- if (document && computedSize) {
158
+ calculateLayout(entity, document) {
159
+ const computedSize = document.computedSize;
160
+ if (computedSize) {
137
161
  const widthExp = entity.getValue(ScreenSpace, 'width');
138
162
  const heightExp = entity.getValue(ScreenSpace, 'height');
139
163
  const top = entity.getValue(ScreenSpace, 'top');
@@ -149,9 +173,18 @@ class ScreenSpaceUISystem extends createSystem({
149
173
  // Screen dimensions
150
174
  const W = this.renderer.domElement.clientWidth;
151
175
  const H = this.renderer.domElement.clientHeight;
176
+ const projectionScaleY = this.camera.projectionMatrix.elements[5];
177
+ // A hidden or transitioning canvas can temporarily report unusable
178
+ // dimensions. Leave the document attached and retry when the tracked
179
+ // layout environment becomes valid instead of writing NaN/Infinity.
180
+ if (W <= 0 ||
181
+ H <= 0 ||
182
+ !Number.isFinite(projectionScaleY) ||
183
+ projectionScaleY <= 0) {
184
+ return;
185
+ }
152
186
  // Calculate world-to-pixel conversion for screen space at zOffset
153
- const vFOV = MathUtils.degToRad(this.camera.fov);
154
- const worldHeightAtZ = 2 * Math.tan(vFOV / 2) * zOffset;
187
+ const worldHeightAtZ = (2 * zOffset) / projectionScaleY;
155
188
  const worldPerPixel = worldHeightAtZ / H;
156
189
  // Calculate desired world space dimensions
157
190
  const targetWorldWidth = wPx * worldPerPixel;
@@ -182,12 +215,25 @@ class ScreenSpaceUISystem extends createSystem({
182
215
  /**
183
216
  * Evaluate CSS expressions for width/height using a temporary DOM node.
184
217
  * Returns pixel values from `window.getComputedStyle`.
218
+ *
219
+ * @remarks
220
+ * Older scene documents may explicitly declare `'auto'`. On a floating
221
+ * helper `<div>` the browser resolves an unconstrained `auto`
222
+ * dimension to `0px`. A `0px` target collapses {@link
223
+ * UIKitDocument.setTargetDimensions} and the panel retains its intrinsic
224
+ * world-space size inside camera space, blowing the UI up to most of the
225
+ * viewport. Until aspect-ratio derivation from the
226
+ * other axis lands, treat `'auto'` as an unsupported size for screen-space
227
+ * layout: warn once per axis, and clamp the contributing CSS expression to
228
+ * a viewport-relative fallback that produces a sensibly-sized HUD.
185
229
  */
186
230
  getComputedDimensionValues(widthExp, heightExp) {
231
+ const widthForLayout = this.resolveAutoDimension(widthExp, 'width');
232
+ const heightForLayout = this.resolveAutoDimension(heightExp, 'height');
187
233
  const { dimensionElement: element, dimensionContainer: container } = this.layoutHelpers;
188
234
  document.body.appendChild(container);
189
- element.style.width = widthExp;
190
- element.style.height = heightExp;
235
+ element.style.width = widthForLayout;
236
+ element.style.height = heightForLayout;
191
237
  container.appendChild(element);
192
238
  const pixelValues = window.getComputedStyle(element);
193
239
  const result = {
@@ -197,6 +243,22 @@ class ScreenSpaceUISystem extends createSystem({
197
243
  document.body.removeChild(container);
198
244
  return result;
199
245
  }
246
+ /**
247
+ * Substitute a `'25vw'` / `'25vh'` fallback for `'auto'` on the given axis,
248
+ * logging a single warning per axis the first time it triggers.
249
+ */
250
+ resolveAutoDimension(expression, axis) {
251
+ if (expression !== 'auto') {
252
+ return expression;
253
+ }
254
+ if (!this.autoDimensionWarned[axis]) {
255
+ this.autoDimensionWarned[axis] = true;
256
+ console.warn(`[ScreenSpace] ${axis}: 'auto' is not supported in screen-space layout; ` +
257
+ `clamping to '25v${axis === 'width' ? 'w' : 'h'}'. Set an explicit CSS ` +
258
+ `size (e.g. '320px', '40vw') to silence this warning.`);
259
+ }
260
+ return axis === 'width' ? '25vw' : '25vh';
261
+ }
200
262
  /** Evaluate CSS absolute positioning and return `top`/`left` in pixels. */
201
263
  getComputedPositionValues(widthPx, heightPx, { top = 'auto', bottom = 'auto', left = 'auto', right = 'auto' }) {
202
264
  const { positionElement: element, positionContainer: container } = this.layoutHelpers;
@@ -1 +1 @@
1
- {"version":3,"file":"screenspace.js","sources":["../../src/ui/screenspace.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenspace.js","sources":["../../src/ui/screenspace.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}