@iwsdk/core 0.5.3 → 1.0.0-rc.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 (233) hide show
  1. package/README.md +22 -1
  2. package/dist/asset/asset-manager.d.ts.map +1 -1
  3. package/dist/asset/asset-manager.js +3 -2
  4. package/dist/asset/asset-manager.js.map +1 -1
  5. package/dist/asset/cache-manager.js.map +1 -1
  6. package/dist/asset/loaders/audio-loader.js.map +1 -1
  7. package/dist/asset/loaders/cached-asset-load.js.map +1 -1
  8. package/dist/asset/loaders/gltf-loader.js.map +1 -1
  9. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
  10. package/dist/asset/loaders/texture-loader.js.map +1 -1
  11. package/dist/asset/loaders/uikitml-loader.js.map +1 -1
  12. package/dist/audio/audio-pool.js.map +1 -1
  13. package/dist/audio/audio-system.js.map +1 -1
  14. package/dist/audio/audio-utils.js.map +1 -1
  15. package/dist/audio/audio.js.map +1 -1
  16. package/dist/camera/camera-source.js.map +1 -1
  17. package/dist/camera/camera-system.d.ts +7 -3
  18. package/dist/camera/camera-system.d.ts.map +1 -1
  19. package/dist/camera/camera-system.js +81 -50
  20. package/dist/camera/camera-system.js.map +1 -1
  21. package/dist/camera/camera-utils.d.ts +5 -0
  22. package/dist/camera/camera-utils.d.ts.map +1 -1
  23. package/dist/camera/camera-utils.js +8 -1
  24. package/dist/camera/camera-utils.js.map +1 -1
  25. package/dist/camera/types.js.map +1 -1
  26. package/dist/depth/depth-occludable.js.map +1 -1
  27. package/dist/depth/depth-sensing-system.d.ts +3 -0
  28. package/dist/depth/depth-sensing-system.d.ts.map +1 -1
  29. package/dist/depth/depth-sensing-system.js +55 -1
  30. package/dist/depth/depth-sensing-system.js.map +1 -1
  31. package/dist/depth/depth-textures.js.map +1 -1
  32. package/dist/depth/occlusion/preprocessing-pass.js.map +1 -1
  33. package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -1
  34. package/dist/ecs/builtin-components.js.map +1 -1
  35. package/dist/ecs/component-editor-metadata.js.map +1 -1
  36. package/dist/ecs/component-manifest.js.map +1 -1
  37. package/dist/ecs/entity.js.map +1 -1
  38. package/dist/ecs/system.js.map +1 -1
  39. package/dist/ecs/world.d.ts +2 -0
  40. package/dist/ecs/world.d.ts.map +1 -1
  41. package/dist/ecs/world.js +4 -0
  42. package/dist/ecs/world.js.map +1 -1
  43. package/dist/environment/dome-gradient.js.map +1 -1
  44. package/dist/environment/dome-texture.js.map +1 -1
  45. package/dist/environment/environment-system.js.map +1 -1
  46. package/dist/environment/gradient-environment.js.map +1 -1
  47. package/dist/environment/ibl-gradient.js.map +1 -1
  48. package/dist/environment/ibl-texture.js.map +1 -1
  49. package/dist/environment/scene-ar-environment.js.map +1 -1
  50. package/dist/environment-raycast/environment-raycast.js.map +1 -1
  51. package/dist/environment-raycast/raycast-target.js.map +1 -1
  52. package/dist/grab/distance-grabbable.d.ts +5 -0
  53. package/dist/grab/distance-grabbable.d.ts.map +1 -1
  54. package/dist/grab/distance-grabbable.js +5 -0
  55. package/dist/grab/distance-grabbable.js.map +1 -1
  56. package/dist/grab/grab-helpers.js.map +1 -1
  57. package/dist/grab/grab-system.js.map +1 -1
  58. package/dist/grab/grab-warnings.js.map +1 -1
  59. package/dist/grab/grabbed.js.map +1 -1
  60. package/dist/grab/handles.d.ts +6 -0
  61. package/dist/grab/handles.d.ts.map +1 -1
  62. package/dist/grab/handles.js +46 -12
  63. package/dist/grab/handles.js.map +1 -1
  64. package/dist/grab/index.js.map +1 -1
  65. package/dist/grab/one-hand-grabbable.d.ts +5 -0
  66. package/dist/grab/one-hand-grabbable.d.ts.map +1 -1
  67. package/dist/grab/one-hand-grabbable.js +5 -0
  68. package/dist/grab/one-hand-grabbable.js.map +1 -1
  69. package/dist/grab/pointer-events-patch.js.map +1 -1
  70. package/dist/grab/two-hands-grabbable.d.ts +5 -0
  71. package/dist/grab/two-hands-grabbable.d.ts.map +1 -1
  72. package/dist/grab/two-hands-grabbable.js +5 -0
  73. package/dist/grab/two-hands-grabbable.js.map +1 -1
  74. package/dist/index.js +4 -3
  75. package/dist/index.js.map +1 -1
  76. package/dist/init/browser-camera.js.map +1 -1
  77. package/dist/init/index.d.ts +2 -2
  78. package/dist/init/index.d.ts.map +1 -1
  79. package/dist/init/player-camera.js.map +1 -1
  80. package/dist/init/session-grant.d.ts +34 -0
  81. package/dist/init/session-grant.d.ts.map +1 -0
  82. package/dist/init/session-grant.js +89 -0
  83. package/dist/init/session-grant.js.map +1 -0
  84. package/dist/init/world-initializer.d.ts +87 -4
  85. package/dist/init/world-initializer.d.ts.map +1 -1
  86. package/dist/init/world-initializer.js +45 -41
  87. package/dist/init/world-initializer.js.map +1 -1
  88. package/dist/init/xr.d.ts +19 -0
  89. package/dist/init/xr.d.ts.map +1 -1
  90. package/dist/init/xr.js +136 -41
  91. package/dist/init/xr.js.map +1 -1
  92. package/dist/input/canvas-pointer-system.d.ts +2 -0
  93. package/dist/input/canvas-pointer-system.d.ts.map +1 -1
  94. package/dist/input/canvas-pointer-system.js +33 -13
  95. package/dist/input/canvas-pointer-system.js.map +1 -1
  96. package/dist/input/input-actions.js.map +1 -1
  97. package/dist/input/input-manager.js.map +1 -1
  98. package/dist/input/input-system.d.ts.map +1 -1
  99. package/dist/input/input-system.js +5 -2
  100. package/dist/input/input-system.js.map +1 -1
  101. package/dist/input/state-tags.js.map +1 -1
  102. package/dist/input/stateful-browser-gamepad.js.map +1 -1
  103. package/dist/input/stateful-keyboard.js.map +1 -1
  104. package/dist/layers/xr-cylinder-layer.d.ts +2 -1
  105. package/dist/layers/xr-cylinder-layer.d.ts.map +1 -1
  106. package/dist/layers/xr-cylinder-layer.js +2 -1
  107. package/dist/layers/xr-cylinder-layer.js.map +1 -1
  108. package/dist/layers/xr-layer-init.d.ts +19 -0
  109. package/dist/layers/xr-layer-init.d.ts.map +1 -0
  110. package/dist/layers/xr-layer-init.js +20 -0
  111. package/dist/layers/xr-layer-init.js.map +1 -0
  112. package/dist/layers/xr-layer-state.js.map +1 -1
  113. package/dist/layers/xr-layer-system.d.ts +41 -1
  114. package/dist/layers/xr-layer-system.d.ts.map +1 -1
  115. package/dist/layers/xr-layer-system.js +506 -132
  116. package/dist/layers/xr-layer-system.js.map +1 -1
  117. package/dist/layers/xr-layer-transform.d.ts +18 -0
  118. package/dist/layers/xr-layer-transform.d.ts.map +1 -0
  119. package/dist/layers/xr-layer-transform.js +115 -0
  120. package/dist/layers/xr-layer-transform.js.map +1 -0
  121. package/dist/layers/xr-quad-layer.d.ts +2 -1
  122. package/dist/layers/xr-quad-layer.d.ts.map +1 -1
  123. package/dist/layers/xr-quad-layer.js +2 -1
  124. package/dist/layers/xr-quad-layer.js.map +1 -1
  125. package/dist/level/level-component-applier.d.ts +2 -0
  126. package/dist/level/level-component-applier.d.ts.map +1 -1
  127. package/dist/level/level-component-applier.js +24 -5
  128. package/dist/level/level-component-applier.js.map +1 -1
  129. package/dist/level/level-player-rig.js.map +1 -1
  130. package/dist/level/level-root.js.map +1 -1
  131. package/dist/level/level-scene-environment.js.map +1 -1
  132. package/dist/level/level-scene-json-importer.js.map +1 -1
  133. package/dist/level/level-scene-material.js.map +1 -1
  134. package/dist/level/level-scene-object.js.map +1 -1
  135. package/dist/level/level-scene-primitive.js.map +1 -1
  136. package/dist/level/level-system.js.map +1 -1
  137. package/dist/level/level-tag.js.map +1 -1
  138. package/dist/lighting/light-binding.js.map +1 -1
  139. package/dist/lighting/light-components.js.map +1 -1
  140. package/dist/lighting/light-system.js.map +1 -1
  141. package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -1
  142. package/dist/locomotion/locomotion-environment.js.map +1 -1
  143. package/dist/locomotion/locomotion-input-provider.js.map +1 -1
  144. package/dist/locomotion/locomotion.js.map +1 -1
  145. package/dist/locomotion/materials/line.js.map +1 -1
  146. package/dist/locomotion/slide.js.map +1 -1
  147. package/dist/locomotion/teleport.js.map +1 -1
  148. package/dist/locomotion/turn.js.map +1 -1
  149. package/dist/mcp/ecs-debug-tools.d.ts +4 -1
  150. package/dist/mcp/ecs-debug-tools.d.ts.map +1 -1
  151. package/dist/mcp/ecs-debug-tools.js +113 -10
  152. package/dist/mcp/ecs-debug-tools.js.map +1 -1
  153. package/dist/mcp/index.d.ts +1 -0
  154. package/dist/mcp/index.d.ts.map +1 -1
  155. package/dist/mcp/mcp-runtime.d.ts +2 -0
  156. package/dist/mcp/mcp-runtime.d.ts.map +1 -1
  157. package/dist/mcp/mcp-runtime.js +41 -0
  158. package/dist/mcp/mcp-runtime.js.map +1 -1
  159. package/dist/mcp/scene-tools.js.map +1 -1
  160. package/dist/mcp/ui-debug-tools.d.ts +56 -0
  161. package/dist/mcp/ui-debug-tools.d.ts.map +1 -0
  162. package/dist/mcp/ui-debug-tools.js +412 -0
  163. package/dist/mcp/ui-debug-tools.js.map +1 -0
  164. package/dist/physics/index.js +1 -1
  165. package/dist/physics/physics-runtime.d.ts +22 -0
  166. package/dist/physics/physics-runtime.d.ts.map +1 -0
  167. package/dist/physics/physics-runtime.js +423 -0
  168. package/dist/physics/physics-runtime.js.map +1 -0
  169. package/dist/physics/physics-system.d.ts +84 -108
  170. package/dist/physics/physics-system.d.ts.map +1 -1
  171. package/dist/physics/physics-system.js +686 -555
  172. package/dist/physics/physics-system.js.map +1 -1
  173. package/dist/physics/physics-transport.d.ts +20 -0
  174. package/dist/physics/physics-transport.d.ts.map +1 -0
  175. package/dist/physics/physics-transport.js +111 -0
  176. package/dist/physics/physics-transport.js.map +1 -0
  177. package/dist/physics/physics-worker-protocol.d.ts +144 -0
  178. package/dist/physics/physics-worker-protocol.d.ts.map +1 -0
  179. package/dist/physics/physics-worker-protocol.js +41 -0
  180. package/dist/physics/physics-worker-protocol.js.map +1 -0
  181. package/dist/physics/physics-worker-utils.d.ts +8 -0
  182. package/dist/physics/physics-worker-utils.d.ts.map +1 -0
  183. package/dist/physics/physics-worker-utils.js +12 -0
  184. package/dist/physics/physics-worker-utils.js.map +1 -0
  185. package/dist/physics/physics-worker.d.ts +8 -0
  186. package/dist/physics/physics-worker.d.ts.map +1 -0
  187. package/dist/physics/physics-worker.js +66 -0
  188. package/dist/physics/physics-worker.js.map +1 -0
  189. package/dist/physics/physicsBody.js.map +1 -1
  190. package/dist/physics/physicsManipulation.js.map +1 -1
  191. package/dist/physics/physicsShape.js.map +1 -1
  192. package/dist/physics/utils.js.map +1 -1
  193. package/dist/project/normalize.js +7 -1
  194. package/dist/project/normalize.js.map +1 -1
  195. package/dist/project/paths.js.map +1 -1
  196. package/dist/project/types.d.ts +7 -1
  197. package/dist/project/types.d.ts.map +1 -1
  198. package/dist/project/types.js.map +1 -1
  199. package/dist/project/validation.js +36 -2
  200. package/dist/project/validation.js.map +1 -1
  201. package/dist/runtime/three.js.map +1 -1
  202. package/dist/scene-understanding/anchor.js.map +1 -1
  203. package/dist/scene-understanding/mesh.js.map +1 -1
  204. package/dist/scene-understanding/plane.js.map +1 -1
  205. package/dist/scene-understanding/scene-understanding-system.d.ts +42 -6
  206. package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
  207. package/dist/scene-understanding/scene-understanding-system.js +391 -106
  208. package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
  209. package/dist/schemas/iwsdk-project.v1.schema.json +20 -1
  210. package/dist/transform/synced-euler.js.map +1 -1
  211. package/dist/transform/synced-quaternion.js.map +1 -1
  212. package/dist/transform/synced-vector3.js.map +1 -1
  213. package/dist/transform/transform-component.js.map +1 -1
  214. package/dist/transform/transform-utils.js.map +1 -1
  215. package/dist/transform/transform.js.map +1 -1
  216. package/dist/ui/document.js.map +1 -1
  217. package/dist/ui/follow-component.js.map +1 -1
  218. package/dist/ui/follow.d.ts.map +1 -1
  219. package/dist/ui/follow.js +0 -1
  220. package/dist/ui/follow.js.map +1 -1
  221. package/dist/ui/panel-components.js.map +1 -1
  222. package/dist/ui/screenspace-component.js.map +1 -1
  223. package/dist/ui/screenspace.js.map +1 -1
  224. package/dist/ui/ui.js.map +1 -1
  225. package/dist/ui/uikitml-asset.js.map +1 -1
  226. package/dist/ui/uikitml.js.map +1 -1
  227. package/dist/version.d.ts +1 -1
  228. package/dist/version.d.ts.map +1 -1
  229. package/dist/version.js +1 -1
  230. package/dist/version.js.map +1 -1
  231. package/dist/visibility/visibility-component.js.map +1 -1
  232. package/dist/visibility/visibility.js.map +1 -1
  233. package/package.json +5 -5
@@ -10,7 +10,7 @@ import { World } from '../ecs/world.js';
10
10
  import { CanvasPointerEventsOption } from '../input/index.js';
11
11
  import { type BrowserLocomotionControls, TurningMethod } from '../locomotion/index.js';
12
12
  import { ColorScheme, UIKitMLComponentSet, UIKitMLKit } from '../ui/index.js';
13
- import { XROptions } from './xr.js';
13
+ import { SessionMode, XROptions } from './xr.js';
14
14
  /** Options for {@link initializeWorld} / {@link World.create}.
15
15
  *
16
16
  * @category Runtime
@@ -26,7 +26,11 @@ export type WorldOptions = {
26
26
  level?: {
27
27
  url?: string;
28
28
  } | string;
29
- /** XR session options and offer behavior. Set to `false` for browser-only worlds. */
29
+ /**
30
+ * XR session options and offer behavior. Set to `false` for browser-only
31
+ * worlds. Set `launchOnSessionGranted` to handle immersive browser entry
32
+ * that grants a session before or after asynchronous world initialization.
33
+ */
30
34
  xr?: false | (XROptions & {
31
35
  offer?: 'none' | 'once' | 'always';
32
36
  });
@@ -80,8 +84,15 @@ export type WorldOptions = {
80
84
  grabbing?: boolean | {
81
85
  useHandPinchForGrab?: boolean;
82
86
  };
83
- /** Physics simulation (Havok). @defaultValue false */
84
- physics?: boolean;
87
+ /** Physics simulation (Havok). Boolean or config. @defaultValue false */
88
+ physics?: boolean | {
89
+ /** Run the physics engine in a Web Worker. @defaultValue true */
90
+ useWorker?: boolean;
91
+ /** Fixed simulation rate in updates per second (maximum 240). @defaultValue 60 */
92
+ updateFrequency?: number;
93
+ /** Smooth render transforms between physics snapshots. @defaultValue true */
94
+ interpolation?: boolean;
95
+ };
85
96
  /** Scene Understanding (planes/meshes/anchors). Boolean or config. @defaultValue false */
86
97
  sceneUnderstanding?: boolean | {
87
98
  showWireFrame?: boolean;
@@ -121,4 +132,76 @@ export type WorldOptions = {
121
132
  * This function powers {@link World.create}. Prefer using that static helper.
122
133
  */
123
134
  export declare function initializeWorld(container: HTMLElement, options?: WorldOptions): Promise<World>;
135
+ /**
136
+ * Extract and normalize configuration options
137
+ */
138
+ /** @internal Exported for focused policy tests; not part of the package barrel. */
139
+ export declare function extractConfiguration(options: WorldOptions): {
140
+ readonly cameraFov: number;
141
+ readonly cameraNear: number;
142
+ readonly cameraFar: number;
143
+ readonly cameraPose: {
144
+ position?: [number, number, number];
145
+ rotation?: [number, number, number];
146
+ quaternion?: [number, number, number, number];
147
+ lookAt?: [number, number, number];
148
+ } | undefined;
149
+ readonly stencil: boolean;
150
+ readonly xr: {
151
+ readonly enabled: boolean;
152
+ readonly sessionMode: SessionMode;
153
+ readonly referenceSpace: import("./xr.js").ReferenceSpaceSpec;
154
+ readonly features: import("./xr.js").XRFeatureOptions | undefined;
155
+ readonly offer: "none" | "once" | "always";
156
+ readonly restoreCameraOnExit: boolean;
157
+ readonly launchOnSessionGranted: boolean;
158
+ };
159
+ readonly input: {
160
+ readonly canvasPointerEvents: CanvasPointerEventsOption | undefined;
161
+ };
162
+ readonly features: {
163
+ readonly locomotion: boolean | {
164
+ useWorker?: boolean;
165
+ initialPlayerPosition?: [number, number, number];
166
+ comfortAssistLevel?: number;
167
+ turningMethod?: TurningMethod;
168
+ /** Whether jumping is enabled. @defaultValue true */
169
+ enableJumping?: boolean;
170
+ /**
171
+ * Opt into browser-first locomotion bindings such as WASD, Space,
172
+ * and standard browser gamepad movement. Camera ownership remains
173
+ * app-controlled: rotate `world.camera` yourself for pointer-lock,
174
+ * orbit, touch-look, or follow cameras. Locomotion moves
175
+ * `world.player` along the camera's forward direction.
176
+ * @defaultValue false
177
+ */
178
+ browserControls?: BrowserLocomotionControls;
179
+ };
180
+ readonly grabbing: boolean | {
181
+ useHandPinchForGrab?: boolean;
182
+ };
183
+ readonly physics: boolean | {
184
+ /** Run the physics engine in a Web Worker. @defaultValue true */
185
+ useWorker?: boolean;
186
+ /** Fixed simulation rate in updates per second (maximum 240). @defaultValue 60 */
187
+ updateFrequency?: number;
188
+ /** Smooth render transforms between physics snapshots. @defaultValue true */
189
+ interpolation?: boolean;
190
+ };
191
+ readonly sceneUnderstanding: boolean | {
192
+ showWireFrame?: boolean;
193
+ };
194
+ readonly environmentRaycast: boolean;
195
+ readonly camera: boolean;
196
+ readonly spatialUI: boolean | {
197
+ /** @deprecated Use `input.canvasPointerEvents` instead. */
198
+ forwardHtmlEvents?: boolean;
199
+ /** Built-in UIKitML component collection. @defaultValue 'horizon' */
200
+ kit?: UIKitMLKit;
201
+ /** Additional application-defined UIKitML component definitions. */
202
+ componentSets?: UIKitMLComponentSet[];
203
+ preferredColorScheme?: ColorScheme;
204
+ };
205
+ };
206
+ };
124
207
  //# sourceMappingURL=world-initializer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"world-initializer.d.ts","sourceRoot":"","sources":["../../src/init/world-initializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"world-initializer.d.ts","sourceRoot":"","sources":["../../src/init/world-initializer.ts"],"names":[],"mappings":"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"}
@@ -52,9 +52,9 @@ import { XRMesh } from '../scene-understanding/mesh.js';
52
52
  import { TransformSystem } from '../transform/transform.js';
53
53
  import '../transform/transform-utils.js';
54
54
  import { VisibilitySystem } from '../visibility/visibility.js';
55
- import { attachBrowserCameraRestore } from './browser-camera.js';
56
55
  import { attachCameraToPlayer } from './player-camera.js';
57
- import { ReferenceSpaceType, SessionMode, buildSessionInit, normalizeReferenceSpec, resolveReferenceSpaceType } from './xr.js';
56
+ import { armSessionGrantCaptureForOptions, onSessionGrant } from './session-grant.js';
57
+ import { ReferenceSpaceType, SessionMode, buildSessionInit, adoptXRSession } from './xr.js';
58
58
  import { Transform } from '../transform/transform-component.js';
59
59
  import { Visibility } from '../visibility/visibility-component.js';
60
60
  import { AmbientLightComponent, HemisphereLightComponent, DirectionalLightComponent, PointLightComponent, SpotLightComponent, RectAreaLightComponent } from '../lighting/light-components.js';
@@ -91,6 +91,9 @@ import { XRLayerState } from '../layers/xr-layer-state.js';
91
91
  */
92
92
  async function initializeWorld(container, options = {}) {
93
93
  var _a, _b;
94
+ // This public entry point can be called without World.create(). Capture a
95
+ // browser-delivered grant before any asynchronous initialization can yield.
96
+ armSessionGrantCaptureForOptions(options.xr);
94
97
  // Create and configure world instance
95
98
  const world = createWorldInstance();
96
99
  registerApplicationComponents(world, options.components);
@@ -109,6 +112,7 @@ async function initializeWorld(container, options = {}) {
109
112
  referenceSpace: config.xr.referenceSpace,
110
113
  features: config.xr.features,
111
114
  restoreCameraOnExit: config.xr.restoreCameraOnExit,
115
+ launchOnSessionGranted: config.xr.launchOnSessionGranted,
112
116
  };
113
117
  world.xrEnabled = config.xr.enabled;
114
118
  // Register core systems
@@ -143,6 +147,14 @@ async function initializeWorld(container, options = {}) {
143
147
  else {
144
148
  await w.loadLevel();
145
149
  }
150
+ if (config.xr.launchOnSessionGranted) {
151
+ const unsubscribe = onSessionGrant(() => {
152
+ if (w.xrEnabled && w.session == null && !w.sessionRequestPending) {
153
+ w.launchXR();
154
+ }
155
+ }, { persistent: true });
156
+ w.addCleanup(unsubscribe);
157
+ }
146
158
  if (config.xr.offer && config.xr.offer !== 'none') {
147
159
  manageOfferFlow(w, config.xr.offer);
148
160
  }
@@ -176,8 +188,9 @@ function registerApplicationComponents(world, components) {
176
188
  /**
177
189
  * Extract and normalize configuration options
178
190
  */
191
+ /** @internal Exported for focused policy tests; not part of the package barrel. */
179
192
  function extractConfiguration(options) {
180
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5;
193
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6;
181
194
  const xrOptions = options.xr === false ? undefined : options.xr;
182
195
  const spatialUI = (_a = options.features) === null || _a === void 0 ? void 0 : _a.spatialUI;
183
196
  const legacyForwardHtmlEvents = typeof spatialUI === 'object' && spatialUI
@@ -195,20 +208,23 @@ function extractConfiguration(options) {
195
208
  sessionMode: (_o = xrOptions === null || xrOptions === void 0 ? void 0 : xrOptions.sessionMode) !== null && _o !== void 0 ? _o : SessionMode.ImmersiveVR,
196
209
  referenceSpace: (_p = xrOptions === null || xrOptions === void 0 ? void 0 : xrOptions.referenceSpace) !== null && _p !== void 0 ? _p : ReferenceSpaceType.LocalFloor,
197
210
  features: xrOptions === null || xrOptions === void 0 ? void 0 : xrOptions.features,
198
- offer: options.xr === false ? 'none' : ((_q = xrOptions === null || xrOptions === void 0 ? void 0 : xrOptions.offer) !== null && _q !== void 0 ? _q : 'always'),
211
+ offer: options.xr === false || (xrOptions === null || xrOptions === void 0 ? void 0 : xrOptions.launchOnSessionGranted) === true
212
+ ? 'none'
213
+ : ((_q = xrOptions === null || xrOptions === void 0 ? void 0 : xrOptions.offer) !== null && _q !== void 0 ? _q : 'always'),
199
214
  restoreCameraOnExit: (_r = xrOptions === null || xrOptions === void 0 ? void 0 : xrOptions.restoreCameraOnExit) !== null && _r !== void 0 ? _r : true,
215
+ launchOnSessionGranted: (_s = xrOptions === null || xrOptions === void 0 ? void 0 : xrOptions.launchOnSessionGranted) !== null && _s !== void 0 ? _s : false,
200
216
  },
201
217
  input: {
202
218
  canvasPointerEvents,
203
219
  },
204
220
  features: {
205
- locomotion: (_t = (_s = options.features) === null || _s === void 0 ? void 0 : _s.locomotion) !== null && _t !== void 0 ? _t : false,
206
- grabbing: (_v = (_u = options.features) === null || _u === void 0 ? void 0 : _u.grabbing) !== null && _v !== void 0 ? _v : false,
207
- physics: (_x = (_w = options.features) === null || _w === void 0 ? void 0 : _w.physics) !== null && _x !== void 0 ? _x : false,
208
- sceneUnderstanding: (_z = (_y = options.features) === null || _y === void 0 ? void 0 : _y.sceneUnderstanding) !== null && _z !== void 0 ? _z : false,
209
- environmentRaycast: (_1 = (_0 = options.features) === null || _0 === void 0 ? void 0 : _0.environmentRaycast) !== null && _1 !== void 0 ? _1 : false,
210
- camera: (_3 = (_2 = options.features) === null || _2 === void 0 ? void 0 : _2.camera) !== null && _3 !== void 0 ? _3 : false,
211
- spatialUI: (_5 = (_4 = options.features) === null || _4 === void 0 ? void 0 : _4.spatialUI) !== null && _5 !== void 0 ? _5 : true,
221
+ locomotion: (_u = (_t = options.features) === null || _t === void 0 ? void 0 : _t.locomotion) !== null && _u !== void 0 ? _u : false,
222
+ grabbing: (_w = (_v = options.features) === null || _v === void 0 ? void 0 : _v.grabbing) !== null && _w !== void 0 ? _w : false,
223
+ physics: (_y = (_x = options.features) === null || _x === void 0 ? void 0 : _x.physics) !== null && _y !== void 0 ? _y : false,
224
+ sceneUnderstanding: (_0 = (_z = options.features) === null || _z === void 0 ? void 0 : _z.sceneUnderstanding) !== null && _0 !== void 0 ? _0 : false,
225
+ environmentRaycast: (_2 = (_1 = options.features) === null || _1 === void 0 ? void 0 : _1.environmentRaycast) !== null && _2 !== void 0 ? _2 : false,
226
+ camera: (_4 = (_3 = options.features) === null || _3 === void 0 ? void 0 : _3.camera) !== null && _4 !== void 0 ? _4 : false,
227
+ spatialUI: (_6 = (_5 = options.features) === null || _5 === void 0 ? void 0 : _5.spatialUI) !== null && _6 !== void 0 ? _6 : true,
212
228
  },
213
229
  };
214
230
  }
@@ -347,40 +363,17 @@ function manageOfferFlow(world, mode) {
347
363
  if (!session) {
348
364
  return;
349
365
  }
350
- const refSpec = normalizeReferenceSpec(opts.referenceSpace);
351
- session.addEventListener('end', onEnd);
352
- try {
353
- // disable built-in occlusion
354
- world.renderer.xr.getDepthSensingMesh = function () {
355
- return null;
356
- };
357
- const resolvedType = await resolveReferenceSpaceType(session, refSpec.type, refSpec.required ? [] : refSpec.fallbackOrder);
358
- world.renderer.xr.setReferenceSpaceType(resolvedType);
359
- if (opts.restoreCameraOnExit !== false) {
360
- attachBrowserCameraRestore(world.camera, session);
361
- }
362
- await world.renderer.xr.setSession(session);
363
- world.session = session;
364
- }
365
- catch (err) {
366
- console.error('[XR] Failed to acquire reference space:', err);
367
- try {
368
- await session.end();
369
- }
370
- catch (_e) { }
371
- }
366
+ await adoptXRSession(world, session, opts, onEnd);
372
367
  }
373
368
  finally {
374
369
  offering = false;
375
370
  }
376
371
  };
377
372
  const onEnd = () => {
378
- var _a;
379
- (_a = world.session) === null || _a === void 0 ? void 0 : _a.removeEventListener('end', onEnd);
380
- world.session = undefined;
381
373
  if (mode === 'always') {
382
- // re-offer after session ends
383
- offer();
374
+ // Adoption can end before offer() clears its single-flight guard. Start
375
+ // the replacement offer in the next task so that path can recover too.
376
+ setTimeout(() => void offer(), 0);
384
377
  }
385
378
  };
386
379
  // initial offer once world is ready
@@ -432,7 +425,8 @@ async function registerFeatureSystems(world, config) {
432
425
  const locomotionEnabled = !!locomotion;
433
426
  const grabbing = config.features.grabbing;
434
427
  const grabbingEnabled = !!grabbing;
435
- const physicsEnabled = !!config.features.physics;
428
+ const physics = config.features.physics;
429
+ const physicsEnabled = !!physics;
436
430
  const sceneUnderstanding = config.features.sceneUnderstanding;
437
431
  const sceneUnderstandingEnabled = !!sceneUnderstanding;
438
432
  const environmentRaycastEnabled = !!config.features.environmentRaycast;
@@ -480,11 +474,21 @@ async function registerFeatureSystems(world, config) {
480
474
  // stays out of the static module graph for non-physics projects.
481
475
  if (physicsEnabled) {
482
476
  const { PhysicsBody, PhysicsManipulation, PhysicsShape, PhysicsSystem } = await import('../physics/index.js');
477
+ const physicsOpts = typeof physics === 'object' && physics
478
+ ? Object.fromEntries(Object.entries({
479
+ useWorker: physics.useWorker,
480
+ updateFrequency: physics.updateFrequency,
481
+ interpolation: physics.interpolation,
482
+ }).filter(([, value]) => value !== undefined))
483
+ : undefined;
483
484
  world
484
485
  .registerComponent(PhysicsBody)
485
486
  .registerComponent(PhysicsShape)
486
487
  .registerComponent(PhysicsManipulation)
487
- .registerSystem(PhysicsSystem, { priority: -2 });
488
+ .registerSystem(PhysicsSystem, {
489
+ priority: -2,
490
+ configData: physicsOpts,
491
+ });
488
492
  }
489
493
  // Scene Understanding updates plane/mesh/anchor debug after input/physics
490
494
  if (sceneUnderstandingEnabled) {
@@ -641,5 +645,5 @@ function setupMCPRuntime(world) {
641
645
  }
642
646
  }
643
647
 
644
- export { initializeWorld };
648
+ export { extractConfiguration, initializeWorld };
645
649
  //# sourceMappingURL=world-initializer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"world-initializer.js","sources":["../../src/init/world-initializer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"world-initializer.js","sources":["../../src/init/world-initializer.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { mergeSceneComponentCatalogs } from '@iwsdk/scene-composition';\nimport { XRInputManager } from '@iwsdk/xr-input';\nimport { signal } from '@preact/signals-core';\nimport {\n AssetManager,\n AssetManifest,\n RenderableAssetRegistry,\n} from '../asset/index.js';\nimport { AudioSource, AudioSystem } from '../audio/index.js';\nimport { CameraSource, CameraSystem } from '../camera/index.js';\nimport {\n ComponentRegistry,\n IWSDK_BUILTIN_COMPONENTS,\n componentCatalogFromComponents,\n type ComponentManifest,\n} from '../ecs/index.js';\nimport { World, VisibilityState } from '../ecs/world.js';\nimport {\n DomeTexture,\n DomeGradient,\n IBLTexture,\n IBLGradient,\n EnvironmentSystem,\n} from '../environment/index.js';\nimport {\n EnvironmentRaycastSystem,\n EnvironmentRaycastTarget,\n} from '../environment-raycast/index.js';\nimport { GrabSystem } from '../grab/index.js';\nimport {\n CanvasPointerEventsOption,\n CanvasPointerSystem,\n RayInteractable,\n PokeInteractable,\n Hovered,\n InputManager,\n Pressed,\n} from '../input/index.js';\nimport { InputSystem } from '../input/index.js';\nimport {\n XRQuadLayer,\n XRCylinderLayer,\n XRLayerState,\n XRLayerSystem,\n} from '../layers/index.js';\nimport { LevelTag, LevelRoot } from '../level/index.js';\nimport { LevelSystem } from '../level/index.js';\nimport {\n AmbientLightComponent,\n DirectionalLightComponent,\n HemisphereLightComponent,\n LightSystem,\n PointLightComponent,\n RectAreaLightComponent,\n SpotLightComponent,\n} from '../lighting/index.js';\nimport {\n type BrowserLocomotionControls,\n LocomotionSystem,\n TurningMethod,\n} from '../locomotion/index.js';\nimport { MCPRuntime } from '../mcp/index.js';\n// The physics module pulls in `@babylonjs/havok` (~2 MB WASM + engine JS) at\n// the static-graph level. Load it lazily in `registerFeatureSystems` only\n// when `features.physics` is enabled so non-physics projects don't pay the\n// bundle-size tax.\nimport {\n Clock,\n PerspectiveCamera,\n SRGBColorSpace,\n Scene,\n WebGLRenderer,\n} from '../runtime/index.js';\nimport {\n SceneUnderstandingSystem,\n XRAnchor,\n XRMesh,\n XRPlane,\n} from '../scene-understanding/index.js';\nimport { Transform, TransformSystem } from '../transform/index.js';\nimport {\n FollowSystem,\n Follower,\n ScreenSpace,\n ScreenSpaceUISystem,\n PanelUI,\n PanelUISystem,\n ColorScheme,\n UIKitMLComponentSet,\n UIKitMLKit,\n loadUIKitMLAsset,\n} from '../ui/index.js';\nimport { Visibility, VisibilitySystem } from '../visibility/index.js';\nimport { attachCameraToPlayer } from './player-camera.js';\nimport {\n armSessionGrantCaptureForOptions,\n onSessionGrant,\n} from './session-grant.js';\nimport {\n ReferenceSpaceType,\n SessionMode,\n XROptions,\n adoptXRSession,\n buildSessionInit,\n} from './xr.js';\n\n/** Options for {@link initializeWorld} / {@link World.create}.\n *\n * @category Runtime\n * @remarks\n * Defaults are tuned for VR; camera and renderer behavior can be customized through {@link WorldOptions.render}.\n */\nexport type WorldOptions = {\n /** Asset manifest to preload before the first frame. */\n assets?: AssetManifest;\n\n /** Application components registered before the initial level is loaded. */\n components?: ComponentManifest;\n\n /** Native scene JSON level to load after initialization. Accepts a URL string or an object with a `url` field. */\n level?: { url?: string } | string;\n\n /**\n * XR session options and offer behavior. Set to `false` for browser-only\n * worlds. Set `launchOnSessionGranted` to handle immersive browser entry\n * that grants a session before or after asynchronous world initialization.\n */\n xr?: false | (XROptions & { offer?: 'none' | 'once' | 'always' });\n\n /** Renderer & camera configuration. */\n render?: {\n /** Camera field of view in degrees. @defaultValue 50 */\n fov?: number;\n /** Near clipping plane. @defaultValue 0.1 */\n near?: number;\n /** Far clipping plane. @defaultValue 200 */\n far?: number;\n /** Enable stencil buffer. @defaultValue false */\n stencil?: boolean;\n /** Initial local camera pose under `world.player`. */\n camera?: {\n position?: [number, number, number];\n rotation?: [number, number, number];\n quaternion?: [number, number, number, number];\n lookAt?: [number, number, number];\n };\n };\n\n /** Browser input and pointer interaction configuration. */\n input?: {\n /**\n * Forward DOM pointer events from the renderer canvas into the Three scene.\n * @defaultValue true\n */\n canvasPointerEvents?: CanvasPointerEventsOption;\n };\n\n /** Opt‑in feature systems. */\n features?: {\n /** Locomotion (teleport/slide/turn). Boolean or config. @defaultValue false */\n locomotion?:\n | boolean\n | {\n useWorker?: boolean;\n initialPlayerPosition?: [number, number, number];\n comfortAssistLevel?: number;\n turningMethod?: TurningMethod;\n /** Whether jumping is enabled. @defaultValue true */\n enableJumping?: boolean;\n /**\n * Opt into browser-first locomotion bindings such as WASD, Space,\n * and standard browser gamepad movement. Camera ownership remains\n * app-controlled: rotate `world.camera` yourself for pointer-lock,\n * orbit, touch-look, or follow cameras. Locomotion moves\n * `world.player` along the camera's forward direction.\n * @defaultValue false\n */\n browserControls?: BrowserLocomotionControls;\n };\n /** Grabbing (one/two‑hand, distance). @defaultValue false */\n grabbing?: boolean | { useHandPinchForGrab?: boolean };\n /** Physics simulation (Havok). Boolean or config. @defaultValue false */\n physics?:\n | boolean\n | {\n /** Run the physics engine in a Web Worker. @defaultValue true */\n useWorker?: boolean;\n /** Fixed simulation rate in updates per second (maximum 240). @defaultValue 60 */\n updateFrequency?: number;\n /** Smooth render transforms between physics snapshots. @defaultValue true */\n interpolation?: boolean;\n };\n /** Scene Understanding (planes/meshes/anchors). Boolean or config. @defaultValue false */\n sceneUnderstanding?: boolean | { showWireFrame?: boolean };\n /** Environment Raycast (hit-test against real-world surfaces). @defaultValue false */\n environmentRaycast?: boolean;\n /** Camera access for video streaming. @defaultValue false */\n camera?: boolean;\n /** Spatial UI systems (PanelUI/ScreenSpace/Follow). Boolean or config. @defaultValue true */\n spatialUI?:\n | boolean\n | {\n /** @deprecated Use `input.canvasPointerEvents` instead. */\n forwardHtmlEvents?: boolean;\n /** Built-in UIKitML component collection. @defaultValue 'horizon' */\n kit?: UIKitMLKit;\n /** Additional application-defined UIKitML component definitions. */\n componentSets?: UIKitMLComponentSet[];\n preferredColorScheme?: ColorScheme;\n };\n };\n};\n\ntype CameraPoseOptions = NonNullable<\n NonNullable<WorldOptions['render']>['camera']\n>;\n\n/**\n * Initialize a new WebXR world with all required systems and setup\n *\n * @param sceneContainer - HTML container for the renderer canvas\n * @param assets - Asset manifest for preloading\n * @param options - Configuration options for the world\n * @returns Promise that resolves to the initialized World instance\n */\n/**\n * Initialize a new WebXR world with all required systems and setup.\n *\n * @param sceneContainer HTML container for the renderer canvas.\n * @param options Configuration options for the world.\n * @returns Promise that resolves to the initialized {@link World} instance.\n *\n * @remarks\n * This function powers {@link World.create}. Prefer using that static helper.\n */\nexport async function initializeWorld(\n container: HTMLElement,\n options: WorldOptions = {},\n): Promise<World> {\n // This public entry point can be called without World.create(). Capture a\n // browser-delivered grant before any asynchronous initialization can yield.\n armSessionGrantCaptureForOptions(options.xr);\n\n // Create and configure world instance\n const world = createWorldInstance();\n registerApplicationComponents(world, options.components);\n world.componentCatalog = componentCatalogFromComponents(\n IWSDK_BUILTIN_COMPONENTS,\n { source: 'iwsdk' },\n );\n world.componentCatalog = mergeSceneComponentCatalogs(\n world.componentCatalog,\n componentCatalogFromComponents(options.components ?? [], { source: 'app' }),\n );\n\n // Extract configuration options\n const config = extractConfiguration(options);\n\n // Setup core rendering components\n const { camera, renderer, scene } = setupRendering(container, config);\n assignRenderingToWorld(world, camera, renderer, scene);\n\n // Setup input management\n setupInputManagement(world, config.input);\n\n // Store XR defaults for later explicit launch/offer calls\n world.xrDefaults = {\n sessionMode: config.xr.sessionMode,\n referenceSpace: config.xr.referenceSpace,\n features: config.xr.features,\n restoreCameraOnExit: config.xr.restoreCameraOnExit,\n launchOnSessionGranted: config.xr.launchOnSessionGranted,\n };\n world.xrEnabled = config.xr.enabled;\n\n // Register core systems\n registerCoreSystems(world);\n\n // Initialize asset manager\n initializeAssetManager(renderer, world);\n\n // Register additional systems (UI + Audio on by default)\n registerAdditionalSystems(world);\n\n // Register input and feature systems with explicit priorities.\n // Awaited because the physics branch dynamically imports its module so\n // `@babylonjs/havok` stays out of the static graph for non-physics builds.\n await registerFeatureSystems(world, config);\n\n // Setup render loop\n setupRenderLoop(world, renderer);\n\n // Setup resize handling\n setupResizeHandling(world, camera, renderer);\n\n // Setup MCP runtime for framework-specific tools (dev only).\n // In production Vite builds, import.meta.env.DEV is false and this entire\n // code path is tree-shaken. In Node.js/tests, import.meta.env is undefined\n // so the check defaults to enabled.\n if ((import.meta as any).env?.DEV !== false) {\n setupMCPRuntime(world);\n }\n\n // Return promise that resolves after asset preloading\n return finalizeInitialization(world, options.assets, config).then(\n async (w) => {\n // Load initial level or create empty level\n const levelUrl =\n typeof options.level === 'string' ? options.level : options.level?.url;\n if (levelUrl) {\n await w.loadLevel(levelUrl);\n } else {\n await w.loadLevel();\n }\n if (config.xr.launchOnSessionGranted) {\n const unsubscribe = onSessionGrant(\n () => {\n if (w.xrEnabled && w.session == null && !w.sessionRequestPending) {\n w.launchXR();\n }\n },\n { persistent: true },\n );\n w.addCleanup(unsubscribe);\n }\n if (config.xr.offer && config.xr.offer !== 'none') {\n manageOfferFlow(w, config.xr.offer);\n }\n return w;\n },\n );\n}\n\n/**\n * Create a new World instance with basic ECS setup\n */\nfunction createWorldInstance(): World {\n const world = new World();\n world\n .registerComponent(Transform)\n .registerComponent(Visibility)\n .registerComponent(LevelTag)\n .registerSystem(TransformSystem)\n .registerSystem(VisibilitySystem);\n return world;\n}\n\nfunction registerApplicationComponents(\n world: World,\n components: ComponentManifest | undefined,\n) {\n if (components == null) {\n return;\n }\n if (components.componentRegistry !== ComponentRegistry) {\n throw new Error(\n 'The component manifest was created by a different Elics module instance. Ensure @iwsdk/core and elics resolve to one copy.',\n );\n }\n for (const component of components) {\n world.registerComponent(component);\n }\n}\n\n/**\n * Extract and normalize configuration options\n */\n/** @internal Exported for focused policy tests; not part of the package barrel. */\nexport function extractConfiguration(options: WorldOptions) {\n const xrOptions = options.xr === false ? undefined : options.xr;\n const spatialUI = options.features?.spatialUI;\n const legacyForwardHtmlEvents =\n typeof spatialUI === 'object' && spatialUI\n ? spatialUI.forwardHtmlEvents\n : undefined;\n const canvasPointerEvents =\n options.input?.canvasPointerEvents ?? legacyForwardHtmlEvents;\n\n return {\n cameraFov: options.render?.fov ?? 50,\n cameraNear: options.render?.near ?? 0.1,\n cameraFar: options.render?.far ?? 200,\n cameraPose: options.render?.camera,\n stencil: options.render?.stencil ?? false,\n xr: {\n enabled: options.xr !== false,\n sessionMode: xrOptions?.sessionMode ?? SessionMode.ImmersiveVR,\n referenceSpace:\n xrOptions?.referenceSpace ?? ReferenceSpaceType.LocalFloor,\n features: xrOptions?.features,\n offer:\n options.xr === false || xrOptions?.launchOnSessionGranted === true\n ? 'none'\n : (xrOptions?.offer ?? 'always'),\n restoreCameraOnExit: xrOptions?.restoreCameraOnExit ?? true,\n launchOnSessionGranted: xrOptions?.launchOnSessionGranted ?? false,\n },\n input: {\n canvasPointerEvents,\n },\n features: {\n locomotion: options.features?.locomotion ?? false,\n grabbing: options.features?.grabbing ?? false,\n physics: options.features?.physics ?? false,\n sceneUnderstanding: options.features?.sceneUnderstanding ?? false,\n environmentRaycast: options.features?.environmentRaycast ?? false,\n camera: options.features?.camera ?? false,\n spatialUI: options.features?.spatialUI ?? true,\n },\n } as const;\n}\n\n/**\n * Setup camera, renderer, and scene\n */\nfunction setupRendering(sceneContainer: HTMLElement, config: any) {\n // Camera Setup\n const camera = new PerspectiveCamera(\n config.cameraFov,\n window.innerWidth / window.innerHeight,\n config.cameraNear,\n config.cameraFar,\n );\n camera.position.set(0, 1.7, 0);\n if (config.cameraPose) {\n applyCameraPose(camera, config.cameraPose);\n }\n\n // Renderer Setup\n const renderer = new WebGLRenderer({\n antialias: true,\n alpha:\n config.xr.enabled && config.xr.sessionMode === SessionMode.ImmersiveAR,\n // @ts-ignore\n multiviewStereo: true,\n stencil: config.stencil,\n });\n renderer.setPixelRatio(window.devicePixelRatio);\n renderer.setSize(window.innerWidth, window.innerHeight);\n renderer.outputColorSpace = SRGBColorSpace;\n renderer.xr.enabled = config.xr.enabled;\n sceneContainer.appendChild(renderer.domElement);\n\n // Scene Setup\n const scene = new Scene();\n\n return { camera, renderer, scene };\n}\n\nfunction applyCameraPose(\n camera: PerspectiveCamera,\n pose: CameraPoseOptions,\n): void {\n if (pose.position) {\n camera.position.fromArray(pose.position);\n }\n if (pose.rotation) {\n camera.rotation.fromArray(pose.rotation);\n }\n if (pose.quaternion) {\n camera.quaternion.fromArray(pose.quaternion);\n }\n if (pose.lookAt) {\n camera.lookAt(...pose.lookAt);\n }\n}\n\n/**\n * Assign rendering components to world instance\n */\nfunction assignRenderingToWorld(\n world: World,\n camera: PerspectiveCamera,\n renderer: WebGLRenderer,\n scene: Scene,\n) {\n world.scene = scene;\n world.camera = camera;\n world.renderer = renderer;\n // Scene entity (wrap Scene in an entity for parenting convenience)\n world.sceneEntity = world.createTransformEntity(scene);\n // Create a default level root so activeLevel is always defined\n const levelRootEntity = world.createTransformEntity(undefined, {\n parent: world.sceneEntity,\n });\n levelRootEntity.object3D!.name = 'LevelRoot';\n // @ts-ignore init signal now; LevelSystem will enforce identity each frame\n world.activeLevel = signal(levelRootEntity);\n}\n\n/**\n * Setup XR input management\n */\nfunction setupInputManagement(\n world: World,\n config: ReturnType<typeof extractConfiguration>['input'],\n): XRInputManager {\n const xrInputManager = new XRInputManager({\n camera: world.camera,\n scene: world.scene,\n assetLoader: AssetManager,\n });\n world.scene.add(xrInputManager.xrOrigin);\n attachCameraToPlayer(xrInputManager.xrOrigin, world.camera);\n world.player = xrInputManager.xrOrigin;\n world.input = new InputManager(xrInputManager, {\n canvasPointerEvents: config.canvasPointerEvents,\n });\n\n const xrOrigin = xrInputManager.xrOrigin;\n\n const playerEntity = world.createTransformEntity(xrOrigin, {\n parent: world.sceneEntity,\n persistent: true,\n });\n world.cameraEntity = world.createTransformEntity(world.camera, {\n parent: playerEntity,\n persistent: true,\n });\n\n const headEntity = world.createTransformEntity(xrOrigin.head, {\n parent: playerEntity,\n persistent: true,\n });\n\n const rayLeftEntity = world.createTransformEntity(xrOrigin.raySpaces.left, {\n parent: playerEntity,\n persistent: true,\n });\n const rayRightEntity = world.createTransformEntity(xrOrigin.raySpaces.right, {\n parent: playerEntity,\n persistent: true,\n });\n\n const gripLeftEntity = world.createTransformEntity(xrOrigin.gripSpaces.left, {\n parent: playerEntity,\n persistent: true,\n });\n const gripRightEntity = world.createTransformEntity(\n xrOrigin.gripSpaces.right,\n { parent: playerEntity, persistent: true },\n );\n\n const indexTipLeftEntity = world.createTransformEntity(\n xrOrigin.indexTipSpaces.left,\n { parent: playerEntity, persistent: true },\n );\n const indexTipRightEntity = world.createTransformEntity(\n xrOrigin.indexTipSpaces.right,\n { parent: playerEntity, persistent: true },\n );\n\n world.playerEntity = playerEntity;\n world.playerHeadEntity = headEntity;\n world.playerSpaceEntities = {\n head: headEntity,\n raySpaces: { left: rayLeftEntity, right: rayRightEntity },\n gripSpaces: { left: gripLeftEntity, right: gripRightEntity },\n indexTipSpaces: { left: indexTipLeftEntity, right: indexTipRightEntity },\n };\n\n return xrInputManager;\n}\n\n/**\n * Manage offering XR sessions according to the configured offer policy.\n * - 'once': offer after init; no re-offer on end\n * - 'always': offer after init and re-offer whenever the session ends\n */\nfunction manageOfferFlow(world: World, mode: 'once' | 'always') {\n let offering = false;\n const offer = async () => {\n if (offering || world.session) {\n return;\n }\n offering = true;\n try {\n const opts = world.xrDefaults ?? {\n sessionMode: SessionMode.ImmersiveVR,\n };\n const sessionInit = buildSessionInit(opts as XROptions);\n\n const session = await navigator.xr?.offerSession?.(\n opts.sessionMode ?? SessionMode.ImmersiveVR,\n // if the dynamic import failed, rebuild via launchXR path by calling request, but we only want offer\n sessionInit as XRSessionInit,\n );\n if (!session) {\n return;\n }\n await adoptXRSession(world, session, opts as XROptions, onEnd);\n } finally {\n offering = false;\n }\n };\n\n const onEnd = () => {\n if (mode === 'always') {\n // Adoption can end before offer() clears its single-flight guard. Start\n // the replacement offer in the next task so that path can recover too.\n setTimeout(() => void offer(), 0);\n }\n };\n\n // initial offer once world is ready\n offer();\n}\n\n/**\n * Register core interaction systems\n */\nfunction registerCoreSystems(world: World) {\n world\n .registerComponent(RayInteractable)\n .registerComponent(PokeInteractable)\n .registerComponent(Hovered)\n .registerComponent(Pressed)\n .registerComponent(LevelRoot)\n // New split components\n .registerComponent(DomeTexture)\n .registerComponent(DomeGradient)\n .registerComponent(IBLTexture)\n .registerComponent(IBLGradient)\n .registerComponent(AmbientLightComponent)\n .registerComponent(HemisphereLightComponent)\n .registerComponent(DirectionalLightComponent)\n .registerComponent(PointLightComponent)\n .registerComponent(SpotLightComponent)\n .registerComponent(RectAreaLightComponent)\n // Unified environment system (background + IBL)\n .registerSystem(EnvironmentSystem)\n .registerSystem(LightSystem)\n .registerSystem(LevelSystem);\n}\n\n/**\n * Initialize the asset manager\n */\nfunction initializeAssetManager(renderer: WebGLRenderer, world: World) {\n AssetManager.init(renderer, world);\n world.assetManager = AssetManager;\n}\n\n/**\n * Register optional systems based on configuration\n */\nfunction registerAdditionalSystems(world: World) {\n // Audio system remains always-on\n world.registerComponent(AudioSource).registerSystem(AudioSystem);\n}\n\nasync function registerFeatureSystems(\n world: World,\n config: ReturnType<typeof extractConfiguration>,\n) {\n const locomotion = config.features.locomotion as\n | boolean\n | {\n useWorker?: boolean;\n initialPlayerPosition?: [number, number, number];\n comfortAssistLevel?: number;\n turningMethod?: TurningMethod;\n enableJumping?: boolean;\n browserControls?: BrowserLocomotionControls;\n };\n const locomotionEnabled = !!locomotion;\n const grabbing = config.features.grabbing as\n | boolean\n | { useHandPinchForGrab?: boolean };\n const grabbingEnabled = !!grabbing;\n const physics = config.features.physics as\n | boolean\n | {\n useWorker?: boolean;\n updateFrequency?: number;\n interpolation?: boolean;\n };\n const physicsEnabled = !!physics;\n const sceneUnderstanding = config.features.sceneUnderstanding as\n | boolean\n | { showWireFrame?: boolean };\n const sceneUnderstandingEnabled = !!sceneUnderstanding;\n const environmentRaycastEnabled = !!config.features.environmentRaycast;\n const cameraEnabled = !!config.features.camera;\n\n const spatialUI = config.features.spatialUI as\n | boolean\n | {\n forwardHtmlEvents?: boolean;\n kit?: UIKitMLKit;\n componentSets?: UIKitMLComponentSet[];\n preferredColorScheme?: ColorScheme;\n };\n const spatialUIEnabled = !!spatialUI;\n\n if (locomotionEnabled) {\n const locOpts =\n typeof locomotion === 'object' && locomotion\n ? Object.fromEntries(\n Object.entries({\n useWorker: locomotion.useWorker,\n initialPlayerPosition: locomotion.initialPlayerPosition,\n comfortAssist: locomotion.comfortAssistLevel,\n turningMethod: locomotion.turningMethod,\n enableJumping: locomotion.enableJumping,\n browserControls: locomotion.browserControls,\n }).filter(([, v]) => v !== undefined),\n )\n : undefined;\n world.registerSystem(LocomotionSystem, {\n priority: -5,\n configData: locOpts,\n });\n }\n world.registerSystem(InputSystem, {\n priority: -4,\n configData: {\n maintainScenePointers: world.input.canvasPointerEvents.enabled,\n },\n });\n if (world.input.canvasPointerEvents.enabled) {\n world.registerSystem(CanvasPointerSystem, {\n priority: -3.5,\n configData: world.input.canvasPointerEvents,\n });\n }\n if (grabbingEnabled) {\n const grabOpts =\n typeof grabbing === 'object' && grabbing\n ? Object.fromEntries(\n Object.entries({\n useHandPinchForGrab: grabbing.useHandPinchForGrab,\n }).filter(([, v]) => v !== undefined),\n )\n : undefined;\n world.registerSystem(GrabSystem, { priority: -3, configData: grabOpts });\n }\n\n // Physics runs after Grab so it can respect Pressed overrides.\n // Dynamically imported so the physics module (and its ~2 MB Havok WASM)\n // stays out of the static module graph for non-physics projects.\n if (physicsEnabled) {\n const { PhysicsBody, PhysicsManipulation, PhysicsShape, PhysicsSystem } =\n await import('../physics/index.js');\n const physicsOpts =\n typeof physics === 'object' && physics\n ? Object.fromEntries(\n Object.entries({\n useWorker: physics.useWorker,\n updateFrequency: physics.updateFrequency,\n interpolation: physics.interpolation,\n }).filter(([, value]) => value !== undefined),\n )\n : undefined;\n world\n .registerComponent(PhysicsBody)\n .registerComponent(PhysicsShape)\n .registerComponent(PhysicsManipulation)\n .registerSystem(PhysicsSystem, {\n priority: -2,\n configData: physicsOpts,\n });\n }\n\n // Scene Understanding updates plane/mesh/anchor debug after input/physics\n if (sceneUnderstandingEnabled) {\n const sceneOpts =\n typeof sceneUnderstanding === 'object' && sceneUnderstanding\n ? Object.fromEntries(\n Object.entries({\n showWireFrame: sceneUnderstanding.showWireFrame,\n }).filter(([, v]) => v !== undefined),\n )\n : undefined;\n world\n .registerComponent(XRPlane)\n .registerComponent(XRMesh)\n .registerComponent(XRAnchor)\n .registerSystem(SceneUnderstandingSystem, {\n priority: -1,\n configData: sceneOpts,\n });\n }\n\n // Environment Raycast system - requires hit-test feature\n if (environmentRaycastEnabled) {\n world\n .registerComponent(EnvironmentRaycastTarget)\n .registerSystem(EnvironmentRaycastSystem, {\n priority: -1,\n });\n }\n\n // Camera system for video streaming\n if (cameraEnabled) {\n world.registerComponent(CameraSource).registerSystem(CameraSystem);\n }\n\n // WebXR composition layers (quad/cylinder)\n if (config.xr.enabled && config.xr.features?.layers) {\n world\n .registerComponent(XRQuadLayer)\n .registerComponent(XRCylinderLayer)\n .registerComponent(XRLayerState)\n .registerSystem(XRLayerSystem, { priority: 1 });\n }\n\n // Spatial UI systems (Panel, ScreenSpace, Follow)\n if (spatialUIEnabled) {\n const kit =\n typeof spatialUI === 'object' && spatialUI ? spatialUI.kit : undefined;\n const componentSets =\n typeof spatialUI === 'object' && spatialUI\n ? spatialUI.componentSets\n : undefined;\n const preferredColorScheme =\n typeof spatialUI === 'object' && spatialUI\n ? spatialUI.preferredColorScheme\n : undefined;\n\n world\n .registerComponent(PanelUI)\n .registerComponent(ScreenSpace)\n .registerComponent(Follower)\n .registerSystem(PanelUISystem, {\n // Keep UIKit document updates ahead of screen-space layout publishing.\n priority: -3.8,\n configData: {\n ...(kit ? { kit } : {}),\n ...(componentSets ? { componentSets } : {}),\n ...(preferredColorScheme !== undefined\n ? { preferredColorScheme }\n : {}),\n },\n })\n .registerSystem(ScreenSpaceUISystem, {\n // Publish camera-local UI descendants after PanelUISystem updates\n // documents and before CanvasPointerSystem forwards DOM pointer events.\n priority: -3.75,\n })\n .registerSystem(FollowSystem);\n }\n}\n\n/**\n * Setup the main render loop\n */\nfunction setupRenderLoop(world: World, renderer: WebGLRenderer) {\n const clock = new Clock();\n\n const render = () => {\n const delta = clock.getDelta();\n const elapsedTime = clock.elapsedTime;\n world.visibilityState.value = (world.session?.visibilityState ??\n VisibilityState.NonImmersive) as VisibilityState;\n // Run ECS systems in priority order (InputSystem => LocomotionSystem => GrabSystem)\n world.update(delta, elapsedTime);\n // Fan out the live XRFrame to userland callbacks (world.onXRFrame) after\n // systems update and before rendering. Guarded so non-XR ticks and worlds\n // with no subscribers pay nothing.\n const xrFrame = renderer.xr.getFrame?.();\n if (xrFrame) {\n world.runXRFrameCallbacks(xrFrame, delta, elapsedTime);\n }\n renderer.render(world.scene, world.camera);\n };\n\n renderer.setAnimationLoop(render);\n // Allow World.destroy() to stop the loop (otherwise it keeps the world,\n // renderer, scene and camera alive forever via the render closure).\n world.addCleanup(() => renderer.setAnimationLoop(null));\n\n // No explicit sessionend handling required on r177; WebXRManager handles\n // render target and canvas sizing restoration internally.\n}\n\n/**\n * Setup window resize handling\n */\nfunction setupResizeHandling(\n world: World,\n camera: PerspectiveCamera,\n renderer: WebGLRenderer,\n) {\n const onWindowResize = () => {\n camera.aspect = window.innerWidth / window.innerHeight;\n camera.updateProjectionMatrix();\n renderer.setSize(window.innerWidth, window.innerHeight);\n };\n\n window.addEventListener('resize', onWindowResize, false);\n // Allow World.destroy() to remove this listener (otherwise it fires forever\n // and pins the camera/renderer captured in the closure).\n world.addCleanup(() =>\n window.removeEventListener('resize', onWindowResize, false),\n );\n}\n\n/**\n * Finalize initialization with asset preloading\n */\nfunction finalizeInitialization(\n world: World,\n assets?: AssetManifest,\n config?: ReturnType<typeof extractConfiguration>,\n): Promise<World> {\n const spatialUI = config?.features.spatialUI;\n world.assets = new RenderableAssetRegistry(assets, {\n ...(spatialUI\n ? {\n instantiateUIKitML: async (assetId: string) => {\n const options = typeof spatialUI === 'object' ? spatialUI : {};\n const asset = await loadUIKitMLAsset(assetId, {\n ...(options.kit ? { kit: options.kit } : {}),\n ...(options.componentSets\n ? { componentSets: options.componentSets }\n : {}),\n ...(options.preferredColorScheme !== undefined\n ? { preferredColorScheme: options.preferredColorScheme }\n : {}),\n });\n asset.userData.iwsdkDisposeAsset = () => asset.dispose();\n return asset;\n },\n }\n : {}),\n });\n return world.assets.preload().then(() => world);\n}\n\n/**\n * Setup MCP runtime for framework-specific tools.\n * This creates the MCPRuntime and exposes it on window.FRAMEWORK_MCP_RUNTIME\n * for vite-plugin-dev to route framework-specific tool calls.\n */\nfunction setupMCPRuntime(world: World) {\n world.mcpRuntime = new MCPRuntime(world);\n\n // Expose globally for vite-plugin discovery\n // This allows the vite plugin to route framework-specific MCP tools\n // without having a direct dependency on @iwsdk/core\n if (typeof window !== 'undefined') {\n (window as any).FRAMEWORK_MCP_RUNTIME = world.mcpRuntime;\n if (typeof window.dispatchEvent === 'function') {\n window.dispatchEvent(new Event('iwsdk:mcp-runtime-ready'));\n }\n }\n}\n"],"names":[],"mappings":"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"}
package/dist/init/xr.d.ts CHANGED
@@ -81,11 +81,29 @@ export type XROptions = {
81
81
  * @defaultValue true
82
82
  */
83
83
  restoreCameraOnExit?: boolean;
84
+ /**
85
+ * Launch XR when the browser grants an immersive session through an external
86
+ * entry point such as a headset deep link. The listener is armed before
87
+ * asynchronous world initialization so an early grant is not lost.
88
+ * This takes precedence over `offer`; IWSDK does not run both native grant
89
+ * and offer flows for the same world.
90
+ * @defaultValue false
91
+ */
92
+ launchOnSessionGranted?: boolean;
84
93
  };
85
94
  /** Build `XRSessionInit` from structured feature flags. */
86
95
  export declare function buildSessionInit(opts: XROptions): XRSessionInit;
87
96
  export declare function normalizeReferenceSpec(spec?: ReferenceSpaceSpec): Required<Exclude<ReferenceSpaceSpec, ReferenceSpaceType>>;
88
97
  export declare function resolveReferenceSpaceType(session: XRSession, preferred: ReferenceSpaceType, fallbacks: ReferenceSpaceType[]): Promise<ReferenceSpaceType>;
98
+ type SessionEndedCallback = () => void;
99
+ /**
100
+ * Adopt a native or emulated session into the world's renderer. Concurrent
101
+ * offer/request paths reconcile here: the first successfully adopted session
102
+ * wins and any later session is ended.
103
+ *
104
+ * @internal
105
+ */
106
+ export declare function adoptXRSession(world: World, session: XRSession, options: XROptions, onSessionEnded?: SessionEndedCallback): Promise<boolean>;
89
107
  /**
90
108
  * Explicitly request a WebXR session with the given options.
91
109
  *
@@ -94,4 +112,5 @@ export declare function resolveReferenceSpaceType(session: XRSession, preferred:
94
112
  * @category Runtime
95
113
  */
96
114
  export declare function launchXR(world: World, options?: Partial<XROptions>): void;
115
+ export {};
97
116
  //# sourceMappingURL=xr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xr.d.ts","sourceRoot":"","sources":["../../src/init/xr.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,gEAAgE;AAChE,oBAAY,WAAW;IACrB,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;CAC7B;AAED,uDAAuD;AACvD,oBAAY,kBAAkB;IAC5B,YAAY,kBAAkB;IAC9B,KAAK,UAAU;IACf,UAAU,gBAAgB;IAC1B,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3D,6DAA6D;AAC7D,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP;IACE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,eAAe,GAAG,eAAe,CAAC;IAC1C,oCAAoC;IACpC,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACxC,CAAC;AAEN,qEAAqE;AACrE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,kBAAkB,GAC1B,kBAAkB,GAClB;IACE,kEAAkE;IAClE,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACtC,CAAC;AAEN,6DAA6D;AAC7D,MAAM,MAAM,SAAS,GAAG;IACtB,qEAAqE;IACrE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,qDAAqD;IACrD,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAsBF,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,CA4E/D;AAED,wBAAgB,sBAAsB,CACpC,IAAI,CAAC,EAAE,kBAAkB,GACxB,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAgB3D;AAkBD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,kBAAkB,EAC7B,SAAS,EAAE,kBAAkB,EAAE,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAqB7B;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,QA2DlE"}
1
+ {"version":3,"file":"xr.d.ts","sourceRoot":"","sources":["../../src/init/xr.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,gEAAgE;AAChE,oBAAY,WAAW;IACrB,WAAW,iBAAiB;IAC5B,WAAW,iBAAiB;CAC7B;AAED,uDAAuD;AACvD,oBAAY,kBAAkB;IAC5B,YAAY,kBAAkB;IAC9B,KAAK,UAAU;IACf,UAAU,gBAAgB;IAC1B,SAAS,cAAc;IACvB,MAAM,WAAW;CAClB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3D,6DAA6D;AAC7D,MAAM,MAAM,gBAAgB,GACxB,OAAO,GACP;IACE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,eAAe,GAAG,eAAe,CAAC;IAC1C,oCAAoC;IACpC,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACxC,CAAC;AAEN,qEAAqE;AACrE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,kBAAkB,GAC1B,kBAAkB,GAClB;IACE,kEAAkE;IAClE,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACtC,CAAC;AAEN,6DAA6D;AAC7D,MAAM,MAAM,SAAS,GAAG;IACtB,qEAAqE;IACrE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,qDAAqD;IACrD,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;OAOG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAsBF,2DAA2D;AAC3D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,CA4E/D;AAED,wBAAgB,sBAAsB,CACpC,IAAI,CAAC,EAAE,kBAAkB,GACxB,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CAgB3D;AAoBD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,kBAAkB,EAC7B,SAAS,EAAE,kBAAkB,EAAE,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAqB7B;AAED,KAAK,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAevC;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,SAAS,EAClB,cAAc,CAAC,EAAE,oBAAoB,GACpC,OAAO,CAAC,OAAO,CAAC,CAsGlB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,QA0ClE"}