@iwsdk/core 0.4.2 → 0.5.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 (314) 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/vendor/draco/gltf/draco_encoder.js +0 -0
  291. package/dist/version.d.ts +1 -1
  292. package/dist/version.js +1 -1
  293. package/dist/visibility/visibility-component.d.ts +14 -0
  294. package/dist/visibility/visibility-component.d.ts.map +1 -0
  295. package/dist/visibility/visibility-component.js +15 -0
  296. package/dist/visibility/visibility-component.js.map +1 -0
  297. package/dist/visibility/visibility.d.ts +3 -10
  298. package/dist/visibility/visibility.d.ts.map +1 -1
  299. package/dist/visibility/visibility.js +9 -12
  300. package/dist/visibility/visibility.js.map +1 -1
  301. package/package.json +48 -19
  302. package/LICENSE +0 -21
  303. package/dist/ecs/component-registry.d.ts +0 -54
  304. package/dist/ecs/component-registry.d.ts.map +0 -1
  305. package/dist/ecs/component-registry.js +0 -86
  306. package/dist/ecs/component-registry.js.map +0 -1
  307. package/dist/level/level-entity-creator.d.ts +0 -27
  308. package/dist/level/level-entity-creator.d.ts.map +0 -1
  309. package/dist/level/level-entity-creator.js +0 -108
  310. package/dist/level/level-entity-creator.js.map +0 -1
  311. package/dist/level/level-glxf-importer.d.ts +0 -23
  312. package/dist/level/level-glxf-importer.d.ts.map +0 -1
  313. package/dist/level/level-glxf-importer.js +0 -40
  314. package/dist/level/level-glxf-importer.js.map +0 -1
package/dist/ui/ui.d.ts CHANGED
@@ -5,79 +5,18 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import { Types } from '../ecs/component.js';
8
- /**
9
- * Color scheme options for UI theming.
10
- * @category UI
11
- */
12
- export declare const ColorSchemeType: {
13
- /** Follow system/browser color scheme preference */
14
- readonly System: "system";
15
- /** Force light mode */
16
- readonly Light: "light";
17
- /** Force dark mode */
18
- readonly Dark: "dark";
19
- };
20
- /**
21
- * Type representing available color scheme options.
22
- * @category UI
23
- */
24
- export type ColorScheme = (typeof ColorSchemeType)[keyof typeof ColorSchemeType];
25
- /**
26
- * Props accepted by the {@link PanelUI} component.
27
- * @category UI
28
- */
29
- export interface PanelUIProps {
30
- /** Path to compiled UIKitML JSON. @example "/ui/settings.json" */
31
- config: string;
32
- /** Max panel width in meters. @defaultValue 1 */
33
- maxWidth?: number;
34
- /** Max panel height in meters. @defaultValue 1 */
35
- maxHeight?: number;
36
- }
37
- /**
38
- * Component for 3D panel UI elements with file‑based configuration.
39
- *
40
- * @remarks
41
- * - Compile `.uikitml` → JSON using the UIKitML Vite plugin, then set {@link PanelUIProps.config}.
42
- * - When parented to world space (default), {@link PanelUISystem} drives target dimensions from
43
- * {@link PanelUIProps.maxWidth} / {@link PanelUIProps.maxHeight} and accounts for world scale.
44
- * - Pointer events are forwarded by the input layer when canvas pointer events are enabled.
45
- * @category UI
46
- * @see /getting-started/06-spatial-ui
47
- */
48
- export declare const PanelUI: import("elics").Component<{
49
- /** Path to .json file */
50
- config: {
8
+ export { ColorSchemeType, PanelDocument, PanelUI } from './panel-components.js';
9
+ export type { ColorScheme, PanelUIProps } from './panel-components.js';
10
+ declare const PanelUISystem_base: import("elics").SystemConstructor<{
11
+ /** Built-in UIKitML component collection. */
12
+ kit: {
51
13
  type: Types.String;
52
- default: string;
53
- };
54
- /** Max width constraint */
55
- maxWidth: {
56
- type: Types.Float32;
57
- default: number;
14
+ default: import("@drawcall/uikitml").KitName;
58
15
  };
59
- /** Max height constraint */
60
- maxHeight: {
61
- type: Types.Float32;
62
- default: number;
63
- };
64
- }>;
65
- /**
66
- * Internal component containing the loaded UI document (a UIKitDocument `Group`).
67
- * @category UI
68
- * @hideineditor
69
- */
70
- export declare const PanelDocument: import("elics").Component<{
71
- document: {
16
+ /** Additional application-defined UIKitML components. */
17
+ componentSets: {
72
18
  type: Types.Object;
73
- default: undefined;
74
- };
75
- }>;
76
- declare const PanelUISystem_base: import("elics").SystemConstructor<{
77
- /** Additional pre-built UI component libraries */
78
- kits: {
79
- type: Types.Object;
80
- default: {};
19
+ default: never[];
81
20
  };
82
21
  /** Color scheme preference for UI theming */
83
22
  preferredColorScheme: {
@@ -87,21 +26,10 @@ declare const PanelUISystem_base: import("elics").SystemConstructor<{
87
26
  }, {
88
27
  unconfiguredPanels: {
89
28
  required: import("elics").Component<{
90
- /** Path to .json file */
91
29
  config: {
92
30
  type: Types.String;
93
31
  default: string;
94
32
  };
95
- /** Max width constraint */
96
- maxWidth: {
97
- type: Types.Float32;
98
- default: number;
99
- };
100
- /** Max height constraint */
101
- maxHeight: {
102
- type: Types.Float32;
103
- default: number;
104
- };
105
33
  }>[];
106
34
  excluded: import("elics").Component<{
107
35
  document: {
@@ -112,21 +40,10 @@ declare const PanelUISystem_base: import("elics").SystemConstructor<{
112
40
  };
113
41
  configuredPanels: {
114
42
  required: (import("elics").Component<{
115
- /** Path to .json file */
116
43
  config: {
117
44
  type: Types.String;
118
45
  default: string;
119
46
  };
120
- /** Max width constraint */
121
- maxWidth: {
122
- type: Types.Float32;
123
- default: number;
124
- };
125
- /** Max height constraint */
126
- maxHeight: {
127
- type: Types.Float32;
128
- default: number;
129
- };
130
47
  }> | import("elics").Component<{
131
48
  document: {
132
49
  type: Types.Object;
@@ -135,10 +52,15 @@ declare const PanelUISystem_base: import("elics").SystemConstructor<{
135
52
  }>)[];
136
53
  };
137
54
  }, import("../index.js").World, import("../ecs/system.js").System<{
138
- /** Additional pre-built UI component libraries */
139
- kits: {
55
+ /** Built-in UIKitML component collection. */
56
+ kit: {
57
+ type: Types.String;
58
+ default: import("@drawcall/uikitml").KitName;
59
+ };
60
+ /** Additional application-defined UIKitML components. */
61
+ componentSets: {
140
62
  type: Types.Object;
141
- default: {};
63
+ default: never[];
142
64
  };
143
65
  /** Color scheme preference for UI theming */
144
66
  preferredColorScheme: {
@@ -148,21 +70,10 @@ declare const PanelUISystem_base: import("elics").SystemConstructor<{
148
70
  }, {
149
71
  unconfiguredPanels: {
150
72
  required: import("elics").Component<{
151
- /** Path to .json file */
152
73
  config: {
153
74
  type: Types.String;
154
75
  default: string;
155
76
  };
156
- /** Max width constraint */
157
- maxWidth: {
158
- type: Types.Float32;
159
- default: number;
160
- };
161
- /** Max height constraint */
162
- maxHeight: {
163
- type: Types.Float32;
164
- default: number;
165
- };
166
77
  }>[];
167
78
  excluded: import("elics").Component<{
168
79
  document: {
@@ -173,21 +84,10 @@ declare const PanelUISystem_base: import("elics").SystemConstructor<{
173
84
  };
174
85
  configuredPanels: {
175
86
  required: (import("elics").Component<{
176
- /** Path to .json file */
177
87
  config: {
178
88
  type: Types.String;
179
89
  default: string;
180
90
  };
181
- /** Max width constraint */
182
- maxWidth: {
183
- type: Types.Float32;
184
- default: number;
185
- };
186
- /** Max height constraint */
187
- maxHeight: {
188
- type: Types.Float32;
189
- default: number;
190
- };
191
91
  }> | import("elics").Component<{
192
92
  document: {
193
93
  type: Types.Object;
@@ -202,22 +102,20 @@ declare const PanelUISystem_base: import("elics").SystemConstructor<{
202
102
  * @remarks
203
103
  * - Sets Three.js transparent sort to a stable painter order for UI readability.
204
104
  * - DOM pointer forwarding is owned by `CanvasPointerSystem` in the input layer.
205
- * - Continuously updates document target dimensions in world space.
105
+ * - World-space size is controlled exclusively by the entity transform.
206
106
  * @category UI
207
107
  */
208
108
  export declare class PanelUISystem extends PanelUISystem_base {
209
- private vec3;
210
109
  /** Configure transparent sort, color scheme, and reactive queries. */
211
110
  init(): void;
212
- /** Tick loaded UIKit documents each frame. */
111
+ /** Tick every UIKit document in the scene, including manifest-backed assets. */
213
112
  update(_delta: number): void;
214
113
  /**
215
- * Load and interpret the `PanelUI.config` JSON file, create a {@link UIKitDocument},
114
+ * Load and parse the `PanelUI.config` UIKitML file, create a {@link UIKitDocument},
216
115
  * attach it to the entity, and tag the entity with {@link PanelDocument}.
217
116
  */
218
117
  private loadPanel;
219
118
  /** Remove, dispose, and detach the loaded {@link UIKitDocument} from the entity. */
220
119
  private cleanupPanel;
221
120
  }
222
- export {};
223
121
  //# sourceMappingURL=ui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/ui/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,KAAK,EAAmB,MAAM,qBAAqB,CAAC;AAM7D;;;GAGG;AACH,eAAO,MAAM,eAAe;IAC1B,oDAAoD;;IAEpD,uBAAuB;;IAEvB,sBAAsB;;CAEd,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,WAAW,GACrB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO;IAGhB,yBAAyB;;;;;IAEzB,2BAA2B;;;;;IAE3B,4BAA4B;;;;;EAI/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;EAMzB,CAAC;;IAiBE,kDAAkD;;;;;IAElD,6CAA6C;;;;;;;;YAxC7C,yBAAyB;;;;;YAEzB,2BAA2B;;;;;YAE3B,4BAA4B;;;;;;;;;;;;;;;YAJ5B,yBAAyB;;;;;YAEzB,2BAA2B;;;;;YAE3B,4BAA4B;;;;;;;;;;;;;IAkC5B,kDAAkD;;;;;IAElD,6CAA6C;;;;;;;;YAxC7C,yBAAyB;;;;;YAEzB,2BAA2B;;;;;YAE3B,4BAA4B;;;;;;;;;;;;;;;YAJ5B,yBAAyB;;;;;YAEzB,2BAA2B;;;;;YAE3B,4BAA4B;;;;;;;;;;;;;AAmBhC;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,kBAWlC;IACC,OAAO,CAAC,IAAI,CAAiB;IAE7B,sEAAsE;IACtE,IAAI,IAAI,IAAI;IA6BZ,8CAA8C;IAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA8B5B;;;OAGG;YACW,SAAS;IA8CvB,oFAAoF;IACpF,OAAO,CAAC,YAAY;CAgBrB"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/ui/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAkB5C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;;IAiBnE,6CAA6C;;;;;IAE7C,yDAAyD;;;;;IAEzD,6CAA6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAJ7C,6CAA6C;;;;;IAE7C,yDAAyD;;;;;IAEzD,6CAA6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAnBjD;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,kBAalC;IACC,sEAAsE;IACtE,IAAI,IAAI,IAAI;IA+BZ,gFAAgF;IAChF,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAc5B;;;OAGG;YACW,SAAS;IAqBvB,oFAAoF;IACpF,OAAO,CAAC,YAAY;CAgBrB"}
package/dist/ui/ui.js CHANGED
@@ -1,10 +1,10 @@
1
- import { reversePainterSortStable, setPreferredColorScheme } from '@pmndrs/uikit';
2
- import { interpret } from '@pmndrs/uikitml';
3
- import { createComponent, Types } from 'elics';
1
+ import { setPreferredColorScheme } from '@pmndrs/uikit';
2
+ import { Types } from 'elics';
4
3
  import { createSystem } from '../ecs/system.js';
5
- import '../runtime/three.js';
6
4
  import { UIKitDocument } from './document.js';
7
- import { Vector3 } from 'three';
5
+ import { PanelUI, PanelDocument } from './panel-components.js';
6
+ export { ColorSchemeType } from './panel-components.js';
7
+ import { configureUIKitRenderer, loadUIKitMLComponent, DEFAULT_UIKITML_KIT } from './uikitml.js';
8
8
 
9
9
  /**
10
10
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -12,75 +12,34 @@ import { Vector3 } from 'three';
12
12
  * This source code is licensed under the MIT license found in the
13
13
  * LICENSE file in the root directory of this source tree.
14
14
  */
15
- /**
16
- * Color scheme options for UI theming.
17
- * @category UI
18
- */
19
- const ColorSchemeType = {
20
- /** Follow system/browser color scheme preference */
21
- System: 'system',
22
- /** Force light mode */
23
- Light: 'light',
24
- /** Force dark mode */
25
- Dark: 'dark',
26
- };
27
- /**
28
- * Component for 3D panel UI elements with file‑based configuration.
29
- *
30
- * @remarks
31
- * - Compile `.uikitml` → JSON using the UIKitML Vite plugin, then set {@link PanelUIProps.config}.
32
- * - When parented to world space (default), {@link PanelUISystem} drives target dimensions from
33
- * {@link PanelUIProps.maxWidth} / {@link PanelUIProps.maxHeight} and accounts for world scale.
34
- * - Pointer events are forwarded by the input layer when canvas pointer events are enabled.
35
- * @category UI
36
- * @see /getting-started/06-spatial-ui
37
- */
38
- const PanelUI = createComponent('PanelUI', {
39
- /** Path to .json file */
40
- config: { type: Types.String, default: '' },
41
- /** Max width constraint */
42
- maxWidth: { type: Types.Float32, default: 1 },
43
- /** Max height constraint */
44
- maxHeight: { type: Types.Float32, default: 1 },
45
- }, 'Component for 3D panel UI elements with file-based configuration');
46
- /**
47
- * Internal component containing the loaded UI document (a UIKitDocument `Group`).
48
- * @category UI
49
- * @hideineditor
50
- */
51
- const PanelDocument = createComponent('PanelDocument', {
52
- document: { type: Types.Object, default: undefined }, // UIKitDocument (extends Group)
53
- }, 'Internal component containing loaded UI document');
54
15
  /**
55
16
  * Renders and updates spatial UI panels.
56
17
  *
57
18
  * @remarks
58
19
  * - Sets Three.js transparent sort to a stable painter order for UI readability.
59
20
  * - DOM pointer forwarding is owned by `CanvasPointerSystem` in the input layer.
60
- * - Continuously updates document target dimensions in world space.
21
+ * - World-space size is controlled exclusively by the entity transform.
61
22
  * @category UI
62
23
  */
63
24
  class PanelUISystem extends createSystem({
64
25
  unconfiguredPanels: { required: [PanelUI], excluded: [PanelDocument] },
65
26
  configuredPanels: { required: [PanelUI, PanelDocument] },
66
27
  }, {
67
- /** Additional pre-built UI component libraries */
68
- kits: { type: Types.Object, default: {} },
28
+ /** Built-in UIKitML component collection. */
29
+ kit: { type: Types.String, default: DEFAULT_UIKITML_KIT },
30
+ /** Additional application-defined UIKitML components. */
31
+ componentSets: { type: Types.Object, default: [] },
69
32
  /** Color scheme preference for UI theming */
70
33
  preferredColorScheme: { type: Types.String, default: 'system' },
71
34
  }) {
72
- constructor() {
73
- super(...arguments);
74
- this.vec3 = new Vector3();
75
- }
76
35
  /** Configure transparent sort, color scheme, and reactive queries. */
77
36
  init() {
78
- this.renderer.setTransparentSort(reversePainterSortStable);
79
- this.renderer.localClippingEnabled = true;
80
- // Apply color scheme preference
81
- this.config.preferredColorScheme.subscribe((scheme) => {
37
+ configureUIKitRenderer(this.renderer);
38
+ // Apply color scheme preference. Register the unsubscribe / query handles
39
+ // on cleanupFuncs so they are released on system teardown.
40
+ this.cleanupFuncs.push(this.config.preferredColorScheme.subscribe((scheme) => {
82
41
  setPreferredColorScheme(scheme);
83
- });
42
+ }),
84
43
  // Set up reactive UI loading when panels need configuration
85
44
  this.queries.unconfiguredPanels.subscribe('qualify', (entity) => {
86
45
  this.loadPanel(entity)
@@ -90,69 +49,47 @@ class PanelUISystem extends createSystem({
90
49
  .catch((error) => {
91
50
  console.error(`[PanelUISystem] Failed to load panel for entity ${entity.index}:`, error);
92
51
  });
93
- });
52
+ }),
94
53
  // Set up cleanup when panels are unconfigured
95
54
  this.queries.configuredPanels.subscribe('disqualify', (entity) => {
96
55
  this.cleanupPanel(entity);
97
- });
56
+ }));
98
57
  }
99
- /** Tick loaded UIKit documents each frame. */
58
+ /** Tick every UIKit document in the scene, including manifest-backed assets. */
100
59
  update(_delta) {
101
- // Update loaded panels - need to call update on root component for animations/frame updates
102
- this.queries.configuredPanels.entities.forEach((entity) => {
103
- const document = PanelDocument.data.document[entity.index];
104
- if ((document === null || document === void 0 ? void 0 : document.rootElement) &&
105
- typeof document.rootElement.update === 'function') {
106
- document.rootElement.update(_delta * 1000); // UIKit expects milliseconds
107
- }
108
- // Continuously set target dimensions when UIKitDocument is in world space (parented to entity)
109
- // This ensures PanelUISystem controls dimensions when not in screen space
110
- // Note: Signals automatically handle duplicate value detection, so no need to check for changes
111
- if (document && document.parent === entity.object3D) {
112
- const maxWidth = PanelUI.data.maxWidth[entity.index];
113
- const maxHeight = PanelUI.data.maxHeight[entity.index];
114
- // Account for entity's world scale to get accurate target dimensions
115
- const worldScale = entity.object3D.getWorldScale(this.vec3);
116
- const adjustedMaxWidth = maxWidth / worldScale.x;
117
- const adjustedMaxHeight = maxHeight / worldScale.y;
118
- document.setTargetDimensions(adjustedMaxWidth, adjustedMaxHeight);
60
+ var _a, _b;
61
+ const documents = new Set();
62
+ const collect = (object) => {
63
+ if (object instanceof UIKitDocument && !object.disposed) {
64
+ documents.add(object);
119
65
  }
120
- });
66
+ };
67
+ this.scene.traverse(collect);
68
+ this.camera.traverse(collect);
69
+ for (const document of documents) {
70
+ (_b = (_a = document.rootElement).update) === null || _b === void 0 ? void 0 : _b.call(_a, _delta * 1000);
71
+ }
121
72
  }
122
73
  /**
123
- * Load and interpret the `PanelUI.config` JSON file, create a {@link UIKitDocument},
74
+ * Load and parse the `PanelUI.config` UIKitML file, create a {@link UIKitDocument},
124
75
  * attach it to the entity, and tag the entity with {@link PanelDocument}.
125
76
  */
126
77
  async loadPanel(entity) {
127
- try {
128
- const config = PanelUI.data.config[entity.index];
129
- // Load and parse JSON file
130
- const response = await fetch(config);
131
- if (!response.ok) {
132
- throw new Error(`Failed to load UI config: ${config} (${response.status} ${response.statusText})`);
133
- }
134
- const parseResult = await response.json();
135
- const rootElement = interpret(parseResult, this.config.kits.value);
136
- if (!rootElement) {
137
- throw new Error(`Failed to interpret UI config: ${config}`);
138
- }
139
- // Create UIKitDocument
140
- const document = new UIKitDocument(rootElement);
141
- // Add the UIKitDocument (Group) to the entity's object3D
142
- if (entity.object3D) {
143
- entity.object3D.add(document);
144
- }
145
- else {
146
- console.warn(`[PanelUISystem] Entity ${entity.index} has no object3D! Cannot add UI to scene.`);
147
- }
148
- // Add PanelDocument component to entity - this triggers reactive system
149
- entity.addComponent(PanelDocument, {
150
- document: document,
151
- });
78
+ const config = PanelUI.data.config[entity.index];
79
+ const rootElement = await loadUIKitMLComponent(config, {
80
+ kit: this.config.kit.value,
81
+ componentSets: this.config.componentSets.value,
82
+ preferredColorScheme: this.config.preferredColorScheme
83
+ .value,
84
+ });
85
+ const document = new UIKitDocument(rootElement);
86
+ if (entity.object3D) {
87
+ entity.object3D.add(document);
152
88
  }
153
- catch (error) {
154
- console.error(`[PanelUISystem] Error loading panel for entity ${entity.index}:`, error);
89
+ else {
90
+ console.warn(`[PanelUISystem] Entity ${entity.index} has no object3D! Cannot add UI to scene.`);
155
91
  }
92
+ entity.addComponent(PanelDocument, { document });
156
93
  }
157
94
  /** Remove, dispose, and detach the loaded {@link UIKitDocument} from the entity. */
158
95
  cleanupPanel(entity) {
@@ -171,5 +108,5 @@ class PanelUISystem extends createSystem({
171
108
  }
172
109
  }
173
110
 
174
- export { ColorSchemeType, PanelDocument, PanelUI, PanelUISystem };
111
+ export { PanelDocument, PanelUI, PanelUISystem };
175
112
  //# sourceMappingURL=ui.js.map
package/dist/ui/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sources":["../../src/ui/ui.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sources":["../../src/ui/ui.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
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 type { Component } from '@pmndrs/uikit';
8
+ import { Group, type Object3D } from '../runtime/index.js';
9
+ import { UIKitDocument } from './document.js';
10
+ /** Object hierarchy produced when a UIKitML manifest asset is instantiated. */
11
+ export declare class UIKitMLAsset extends Group {
12
+ readonly assetId: string;
13
+ readonly document: UIKitDocument;
14
+ readonly isUIKitMLAsset = true;
15
+ constructor(assetId: string, document: UIKitDocument);
16
+ /** Find a UIKit element without first dereferencing {@link document}. */
17
+ getElementById<T extends Component<any> = Component<any>>(id: string): T | null;
18
+ /** Return a typed UIKit element or throw when the id is absent. */
19
+ requireElementById<T extends Component<any> = Component<any>>(id: string): T;
20
+ /** Release the document even when ScreenSpace has temporarily reparented it. */
21
+ dispose(): void;
22
+ }
23
+ /** Find a UIKit document in either a manifest asset or a legacy panel hierarchy. */
24
+ export declare function findUIKitDocument(object: Object3D | null | undefined): UIKitDocument | null;
25
+ //# sourceMappingURL=uikitml-asset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uikitml-asset.d.ts","sourceRoot":"","sources":["../../src/ui/uikitml-asset.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,+EAA+E;AAC/E,qBAAa,YAAa,SAAQ,KAAK;IAInC,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,QAAQ,EAAE,aAAa;IAJlC,QAAQ,CAAC,cAAc,QAAQ;gBAGpB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa;IAOlC,yEAAyE;IACzE,cAAc,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,EACtD,EAAE,EAAE,MAAM,GACT,CAAC,GAAG,IAAI;IAIX,mEAAmE;IACnE,kBAAkB,CAAC,CAAC,SAAS,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC;IAI5E,gFAAgF;IAChF,OAAO,IAAI,IAAI;CAIhB;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,GAClC,aAAa,GAAG,IAAI,CAiBtB"}
@@ -0,0 +1,56 @@
1
+ import '../runtime/three.js';
2
+ import { UIKitDocument } from './document.js';
3
+ import { Group } from 'three';
4
+
5
+ /**
6
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
7
+ *
8
+ * This source code is licensed under the MIT license found in the
9
+ * LICENSE file in the root directory of this source tree.
10
+ */
11
+ /** Object hierarchy produced when a UIKitML manifest asset is instantiated. */
12
+ class UIKitMLAsset extends Group {
13
+ constructor(assetId, document) {
14
+ super();
15
+ this.assetId = assetId;
16
+ this.document = document;
17
+ this.isUIKitMLAsset = true;
18
+ this.name = assetId;
19
+ this.add(document);
20
+ }
21
+ /** Find a UIKit element without first dereferencing {@link document}. */
22
+ getElementById(id) {
23
+ return this.document.getElementById(id);
24
+ }
25
+ /** Return a typed UIKit element or throw when the id is absent. */
26
+ requireElementById(id) {
27
+ return this.document.requireElementById(id);
28
+ }
29
+ /** Release the document even when ScreenSpace has temporarily reparented it. */
30
+ dispose() {
31
+ this.document.removeFromParent();
32
+ this.document.dispose();
33
+ }
34
+ }
35
+ /** Find a UIKit document in either a manifest asset or a legacy panel hierarchy. */
36
+ function findUIKitDocument(object) {
37
+ if (!object) {
38
+ return null;
39
+ }
40
+ if (object instanceof UIKitDocument) {
41
+ return object.disposed ? null : object;
42
+ }
43
+ if (object instanceof UIKitMLAsset) {
44
+ return object.document.disposed ? null : object.document;
45
+ }
46
+ let result = null;
47
+ object.traverse((child) => {
48
+ if (!result && child instanceof UIKitDocument && !child.disposed) {
49
+ result = child;
50
+ }
51
+ });
52
+ return result;
53
+ }
54
+
55
+ export { UIKitMLAsset, findUIKitDocument };
56
+ //# sourceMappingURL=uikitml-asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uikitml-asset.js","sources":["../../src/ui/uikitml-asset.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAAA;;;;;AAKG;AAMH;AACM,MAAO,YAAa,SAAQ,KAAK,CAAA;IAGrC,WAAA,CACW,OAAe,EACf,QAAuB,EAAA;AAEhC,QAAA,KAAK,EAAE;QAHE,IAAA,CAAA,OAAO,GAAP,OAAO;QACP,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAJV,IAAA,CAAA,cAAc,GAAG,IAAI;AAO5B,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO;AACnB,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;IACpB;;AAGA,IAAA,cAAc,CACZ,EAAU,EAAA;QAEV,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAI,EAAE,CAAC;IAC5C;;AAGA,IAAA,kBAAkB,CAA4C,EAAU,EAAA;QACtE,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAI,EAAE,CAAC;IAChD;;IAGA,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;AAChC,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;IACzB;AACD;AAED;AACM,SAAU,iBAAiB,CAC/B,MAAmC,EAAA;IAEnC,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,IAAI;IACb;AACA,IAAA,IAAI,MAAM,YAAY,aAAa,EAAE;QACnC,OAAO,MAAM,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM;IACxC;AACA,IAAA,IAAI,MAAM,YAAY,YAAY,EAAE;AAClC,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ;IAC1D;IACA,IAAI,MAAM,GAAyB,IAAI;AACvC,IAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAI;AACxB,QAAA,IAAI,CAAC,MAAM,IAAI,KAAK,YAAY,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YAChE,MAAM,GAAG,KAAK;QAChB;AACF,IAAA,CAAC,CAAC;AACF,IAAA,OAAO,MAAM;AACf;;;;"}
@@ -0,0 +1,41 @@
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 { type ComponentSet, type KitName, type UIKitMLAst } from '@drawcall/uikitml';
8
+ import { type Component, type PreferredColorScheme } from '@pmndrs/uikit';
9
+ import type { WebGLRenderer } from '../runtime/index.js';
10
+ import { UIKitMLAsset } from './uikitml-asset.js';
11
+ /** Built-in UIKitML component collection used by a panel. */
12
+ export type UIKitMLKit = KitName;
13
+ /** Additional component definitions accepted by the UIKitML parser. */
14
+ export type UIKitMLComponentSet = ComponentSet;
15
+ export interface UIKitMLLoadOptions {
16
+ /** Built-in component collection. @defaultValue `'horizon'` */
17
+ kit?: UIKitMLKit;
18
+ /** Additional application-defined UIKitML components. */
19
+ componentSets?: UIKitMLComponentSet[];
20
+ /** Color scheme supplied to the instantiated UIKit tree. */
21
+ preferredColorScheme?: PreferredColorScheme;
22
+ /** Bypass the cached source text, primarily for editor preview refreshes. */
23
+ forceReload?: boolean;
24
+ }
25
+ /** Default component collection for IWSDK panels. */
26
+ export declare const DEFAULT_UIKITML_KIT: UIKitMLKit;
27
+ /** Configure a renderer for UIKit clipping and transparent painter order. */
28
+ export declare function configureUIKitRenderer(renderer: WebGLRenderer): void;
29
+ /**
30
+ * Parse UIKitML source and resolve its relative TTF declarations.
31
+ *
32
+ * @param source UIKitML markup.
33
+ * @param sourceURL URL of the UIKitML document, used as the base for font URLs.
34
+ * @param options Parser and component-set options.
35
+ */
36
+ export declare function parseUIKitMLSource(source: string, sourceURL?: string, options?: UIKitMLLoadOptions): UIKitMLAst;
37
+ /** Fetch, parse, and instantiate a UIKitML document. */
38
+ export declare function loadUIKitMLComponent(configURL: string, options?: UIKitMLLoadOptions): Promise<Component>;
39
+ /** Fetch, parse, and instantiate a UIKitML file as a placeable scene asset. */
40
+ export declare function loadUIKitMLAsset(assetIdOrURL: string, options?: UIKitMLLoadOptions): Promise<UIKitMLAsset>;
41
+ //# sourceMappingURL=uikitml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uikitml.d.ts","sourceRoot":"","sources":["../../src/ui/uikitml.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,UAAU,EAEhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AAGvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,6DAA6D;AAC7D,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AAEjC,uEAAuE;AACvE,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,+DAA+D;IAC/D,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,yDAAyD;IACzD,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACtC,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,EAAE,UAAsB,CAAC;AAEzD,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAGpE;AAgED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE,kBAAuB,GAC/B,UAAU,CAUZ;AAED,wDAAwD;AACxD,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,SAAS,CAAC,CAgCpB;AAED,+EAA+E;AAC/E,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,YAAY,CAAC,CAGvB"}