@iwsdk/core 1.0.0-rc.0 → 1.0.0-rc.2

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 (165) hide show
  1. package/dist/asset/asset-manager.js.map +1 -1
  2. package/dist/asset/cache-manager.js.map +1 -1
  3. package/dist/asset/loaders/audio-loader.js.map +1 -1
  4. package/dist/asset/loaders/cached-asset-load.js.map +1 -1
  5. package/dist/asset/loaders/gltf-loader.js.map +1 -1
  6. package/dist/asset/loaders/hdr-texture-loader.js.map +1 -1
  7. package/dist/asset/loaders/texture-loader.js.map +1 -1
  8. package/dist/asset/loaders/uikitml-loader.js.map +1 -1
  9. package/dist/audio/audio-pool.js.map +1 -1
  10. package/dist/audio/audio-system.js.map +1 -1
  11. package/dist/audio/audio-utils.js.map +1 -1
  12. package/dist/audio/audio.js.map +1 -1
  13. package/dist/camera/camera-source.js.map +1 -1
  14. package/dist/camera/camera-system.js.map +1 -1
  15. package/dist/camera/camera-utils.js.map +1 -1
  16. package/dist/camera/types.js.map +1 -1
  17. package/dist/depth/depth-occludable.js.map +1 -1
  18. package/dist/depth/depth-sensing-system.js.map +1 -1
  19. package/dist/depth/depth-textures.js.map +1 -1
  20. package/dist/depth/occlusion/preprocessing-pass.js.map +1 -1
  21. package/dist/depth/occlusion/preprocessing-shader.glsl.js.map +1 -1
  22. package/dist/ecs/builtin-components.js.map +1 -1
  23. package/dist/ecs/component-editor-metadata.js.map +1 -1
  24. package/dist/ecs/component-manifest.js.map +1 -1
  25. package/dist/ecs/entity.js.map +1 -1
  26. package/dist/ecs/system.js.map +1 -1
  27. package/dist/ecs/world.js.map +1 -1
  28. package/dist/environment/dome-gradient.js.map +1 -1
  29. package/dist/environment/dome-texture.js.map +1 -1
  30. package/dist/environment/environment-system.js.map +1 -1
  31. package/dist/environment/gradient-environment.js.map +1 -1
  32. package/dist/environment/ibl-gradient.js.map +1 -1
  33. package/dist/environment/ibl-texture.js.map +1 -1
  34. package/dist/environment/scene-ar-environment.js.map +1 -1
  35. package/dist/environment-raycast/environment-raycast.js.map +1 -1
  36. package/dist/environment-raycast/raycast-target.js.map +1 -1
  37. package/dist/gaze/gaze-system.d.ts +207 -0
  38. package/dist/gaze/gaze-system.d.ts.map +1 -0
  39. package/dist/gaze/gaze-system.js +168 -0
  40. package/dist/gaze/gaze-system.js.map +1 -0
  41. package/dist/gaze/index.d.ts +8 -0
  42. package/dist/gaze/index.d.ts.map +1 -0
  43. package/dist/grab/distance-grabbable.js.map +1 -1
  44. package/dist/grab/grab-helpers.d.ts +7 -6
  45. package/dist/grab/grab-helpers.d.ts.map +1 -1
  46. package/dist/grab/grab-helpers.js +12 -7
  47. package/dist/grab/grab-helpers.js.map +1 -1
  48. package/dist/grab/grab-system.d.ts.map +1 -1
  49. package/dist/grab/grab-system.js +2 -1
  50. package/dist/grab/grab-system.js.map +1 -1
  51. package/dist/grab/grab-warnings.js.map +1 -1
  52. package/dist/grab/grabbed.js.map +1 -1
  53. package/dist/grab/handles.d.ts +10 -1
  54. package/dist/grab/handles.d.ts.map +1 -1
  55. package/dist/grab/handles.js +29 -6
  56. package/dist/grab/handles.js.map +1 -1
  57. package/dist/grab/index.js.map +1 -1
  58. package/dist/grab/one-hand-grabbable.js.map +1 -1
  59. package/dist/grab/pointer-events-patch.js.map +1 -1
  60. package/dist/grab/two-hands-grabbable.js.map +1 -1
  61. package/dist/index.d.ts +1 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +4 -3
  64. package/dist/index.js.map +1 -1
  65. package/dist/init/browser-camera.js.map +1 -1
  66. package/dist/init/player-camera.js.map +1 -1
  67. package/dist/init/session-grant.js.map +1 -1
  68. package/dist/init/world-initializer.d.ts +49 -0
  69. package/dist/init/world-initializer.d.ts.map +1 -1
  70. package/dist/init/world-initializer.js +23 -11
  71. package/dist/init/world-initializer.js.map +1 -1
  72. package/dist/init/xr.d.ts +14 -0
  73. package/dist/init/xr.d.ts.map +1 -1
  74. package/dist/init/xr.js +19 -0
  75. package/dist/init/xr.js.map +1 -1
  76. package/dist/input/canvas-pointer-system.js.map +1 -1
  77. package/dist/input/input-actions.js.map +1 -1
  78. package/dist/input/input-manager.js.map +1 -1
  79. package/dist/input/input-system.d.ts +3 -0
  80. package/dist/input/input-system.d.ts.map +1 -1
  81. package/dist/input/input-system.js +72 -6
  82. package/dist/input/input-system.js.map +1 -1
  83. package/dist/input/state-tags.d.ts.map +1 -1
  84. package/dist/input/state-tags.js +2 -0
  85. package/dist/input/state-tags.js.map +1 -1
  86. package/dist/input/stateful-browser-gamepad.js.map +1 -1
  87. package/dist/input/stateful-keyboard.js.map +1 -1
  88. package/dist/layers/xr-cylinder-layer.js.map +1 -1
  89. package/dist/layers/xr-layer-init.js.map +1 -1
  90. package/dist/layers/xr-layer-state.js.map +1 -1
  91. package/dist/layers/xr-layer-system.js.map +1 -1
  92. package/dist/layers/xr-layer-transform.js.map +1 -1
  93. package/dist/layers/xr-quad-layer.js.map +1 -1
  94. package/dist/level/level-component-applier.js.map +1 -1
  95. package/dist/level/level-player-rig.js.map +1 -1
  96. package/dist/level/level-root.js.map +1 -1
  97. package/dist/level/level-scene-environment.js.map +1 -1
  98. package/dist/level/level-scene-json-importer.js.map +1 -1
  99. package/dist/level/level-scene-material.js.map +1 -1
  100. package/dist/level/level-scene-object.js.map +1 -1
  101. package/dist/level/level-scene-primitive.js.map +1 -1
  102. package/dist/level/level-system.js.map +1 -1
  103. package/dist/level/level-tag.js.map +1 -1
  104. package/dist/lighting/light-binding.js.map +1 -1
  105. package/dist/lighting/light-components.js.map +1 -1
  106. package/dist/lighting/light-system.js.map +1 -1
  107. package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -1
  108. package/dist/locomotion/locomotion-environment.js.map +1 -1
  109. package/dist/locomotion/locomotion-input-provider.js.map +1 -1
  110. package/dist/locomotion/locomotion.js.map +1 -1
  111. package/dist/locomotion/materials/line.js.map +1 -1
  112. package/dist/locomotion/slide.js.map +1 -1
  113. package/dist/locomotion/teleport.js.map +1 -1
  114. package/dist/locomotion/turn.js.map +1 -1
  115. package/dist/mcp/ecs-debug-tools.js.map +1 -1
  116. package/dist/mcp/mcp-runtime.js.map +1 -1
  117. package/dist/mcp/scene-tools.js.map +1 -1
  118. package/dist/mcp/ui-debug-tools.js.map +1 -1
  119. package/dist/physics/physics-runtime.js.map +1 -1
  120. package/dist/physics/physics-system.js.map +1 -1
  121. package/dist/physics/physics-transport.js.map +1 -1
  122. package/dist/physics/physics-worker-protocol.js.map +1 -1
  123. package/dist/physics/physics-worker-utils.js.map +1 -1
  124. package/dist/physics/physics-worker.js.map +1 -1
  125. package/dist/physics/physicsBody.js.map +1 -1
  126. package/dist/physics/physicsManipulation.js.map +1 -1
  127. package/dist/physics/physicsShape.js.map +1 -1
  128. package/dist/physics/utils.js.map +1 -1
  129. package/dist/project/normalize.d.ts.map +1 -1
  130. package/dist/project/normalize.js +11 -0
  131. package/dist/project/normalize.js.map +1 -1
  132. package/dist/project/paths.js.map +1 -1
  133. package/dist/project/types.d.ts +32 -2
  134. package/dist/project/types.d.ts.map +1 -1
  135. package/dist/project/types.js.map +1 -1
  136. package/dist/project/validation.d.ts.map +1 -1
  137. package/dist/project/validation.js +65 -1
  138. package/dist/project/validation.js.map +1 -1
  139. package/dist/runtime/three.js.map +1 -1
  140. package/dist/scene-understanding/anchor.js.map +1 -1
  141. package/dist/scene-understanding/mesh.js.map +1 -1
  142. package/dist/scene-understanding/plane.js.map +1 -1
  143. package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
  144. package/dist/schemas/iwsdk-project.v1.schema.json +45 -3
  145. package/dist/transform/synced-euler.js.map +1 -1
  146. package/dist/transform/synced-quaternion.js.map +1 -1
  147. package/dist/transform/synced-vector3.js.map +1 -1
  148. package/dist/transform/transform-component.js.map +1 -1
  149. package/dist/transform/transform-utils.js.map +1 -1
  150. package/dist/transform/transform.js.map +1 -1
  151. package/dist/ui/document.js.map +1 -1
  152. package/dist/ui/follow-component.js.map +1 -1
  153. package/dist/ui/follow.js.map +1 -1
  154. package/dist/ui/panel-components.js.map +1 -1
  155. package/dist/ui/screenspace-component.js.map +1 -1
  156. package/dist/ui/screenspace.js.map +1 -1
  157. package/dist/ui/ui.js.map +1 -1
  158. package/dist/ui/uikitml-asset.js.map +1 -1
  159. package/dist/ui/uikitml.js.map +1 -1
  160. package/dist/version.d.ts +1 -1
  161. package/dist/version.js +1 -1
  162. package/dist/version.js.map +1 -1
  163. package/dist/visibility/visibility-component.js.map +1 -1
  164. package/dist/visibility/visibility.js.map +1 -1
  165. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"screenspace.js","sources":["../../src/ui/screenspace.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenspace.js","sources":["../../src/ui/screenspace.ts"],"sourcesContent":["/**\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 type { Entity } from '../ecs/entity.js';\nimport { createSystem } from '../ecs/system.js';\nimport type { Object3D } from '../runtime/index.js';\nimport type { ScenePointerDescendants } from '../runtime/scene-pointer-descendants.js';\nimport { UIKitDocument } from './document.js';\nimport { ScreenSpace } from './screenspace-component.js';\nimport { PanelDocument } from './ui.js';\n\nexport { ScreenSpace } from './screenspace-component.js';\n\ninterface LayoutEnvironment {\n canvasWidth: number;\n canvasHeight: number;\n projectionScaleY: number;\n}\n\n/**\n * Positions {@link PanelUI} documents relative to the camera with CSS‑like semantics.\n *\n * @remarks\n * - Converts CSS units to pixels using temporary DOM nodes, then maps pixels to meters at\n * a camera‑relative plane given by `zOffset`.\n * - Automatically toggles between screen‑space (under the camera) and world‑space depending on\n * `renderer.xr.isPresenting`.\n * - Uses {@link UIKitDocument.setTargetDimensions} while camera-local, then restores intrinsic\n * size in XR so the entity transform remains the world-space scale authority.\n *\n * @category UI\n */\nexport class ScreenSpaceUISystem extends createSystem({\n panels: { required: [ScreenSpace] },\n}) {\n private screenSpaceDescendants: Object3D[] = [];\n private documentSizes = new WeakMap<\n UIKitDocument,\n { width: number; height: number }\n >();\n private entityDocuments = new WeakMap<Object3D, UIKitDocument>();\n private layoutEnvironment?: LayoutEnvironment;\n private layoutHelpers = {\n dimensionContainer: document.createElement('div'),\n positionContainer: document.createElement('div'),\n dimensionElement: document.createElement('div'),\n positionElement: document.createElement('div'),\n };\n private resized = true;\n private autoDimensionWarned = { width: false, height: false };\n\n /** Prepare hidden DOM helpers and resize listener. */\n init() {\n this.layoutHelpers.dimensionContainer.style.width = '100vw';\n this.layoutHelpers.dimensionContainer.style.height = '100vh';\n this.layoutHelpers.dimensionContainer.style.position = 'absolute';\n this.layoutHelpers.dimensionContainer.style.visibility = 'hidden';\n\n this.layoutHelpers.positionContainer.style.width = '100vw';\n this.layoutHelpers.positionContainer.style.height = '100vh';\n this.layoutHelpers.positionContainer.style.position = 'relative';\n this.layoutHelpers.positionContainer.style.visibility = 'hidden';\n\n const onResize = () => {\n this.resized = true;\n };\n window.addEventListener('resize', onResize, false);\n this.cleanupFuncs.push(() =>\n window.removeEventListener('resize', onResize, false),\n );\n }\n\n /** Move panels between world and screen space and recompute layout on changes. */\n update(): void {\n this.screenSpaceDescendants.length = 0;\n const resized = this.resized;\n const layoutEnvironmentChanged = this.hasLayoutEnvironmentChanged();\n\n this.queries.panels.entities.forEach((entity) => {\n const parent = entity.object3D;\n const document = this.resolveDocument(entity);\n\n if (!document) {\n return;\n } // Skip if UI not loaded yet\n\n const panelInScreenSpace = document.parent === this.camera;\n const documentSizeChanged = this.hasDocumentSizeChanged(document);\n\n if (this.renderer.xr.isPresenting && panelInScreenSpace) {\n // Move back to world space when entering XR\n parent?.add(document);\n document.clearTargetDimensions();\n // Reset position that were set during screen space layout\n document.position.set(0, 0, 0);\n } else if (!this.renderer.xr.isPresenting && !panelInScreenSpace) {\n // Move to screen space when not in XR\n this.camera.add(document);\n this.calculateLayout(entity, document);\n } else if (\n panelInScreenSpace &&\n (resized || documentSizeChanged || layoutEnvironmentChanged)\n ) {\n // Recalculate when the viewport, camera projection, or UIKit's intrinsic\n // layout changes. In particular, three.js restores the browser camera one\n // frame after XR ends, so the first non-XR layout may still see the XR\n // projection and must self-correct on the following frame.\n this.calculateLayout(entity, document);\n }\n\n if (document.parent === this.camera) {\n this.screenSpaceDescendants.push(document);\n }\n });\n this.resized = false;\n\n const scene = this.scene as typeof this.scene & ScenePointerDescendants;\n scene.screenSpaceDescendants =\n this.screenSpaceDescendants.length > 0\n ? this.screenSpaceDescendants\n : undefined;\n }\n\n /** Detect every renderer/camera input used to map screen pixels into world units. */\n private hasLayoutEnvironmentChanged(): boolean {\n const next = {\n canvasWidth: this.renderer.domElement.clientWidth,\n canvasHeight: this.renderer.domElement.clientHeight,\n // Matrix element 5 is the vertical projection scale. Unlike camera.fov,\n // it also reflects zoom and direct projection-matrix changes.\n projectionScaleY: this.camera.projectionMatrix.elements[5],\n };\n const previous = this.layoutEnvironment;\n this.layoutEnvironment = next;\n return (\n previous == null ||\n previous.canvasWidth !== next.canvasWidth ||\n previous.canvasHeight !== next.canvasHeight ||\n previous.projectionScaleY !== next.projectionScaleY\n );\n }\n\n /** Resolve legacy component-backed and manifest-backed UIKit documents. */\n private resolveDocument(entity: Entity): UIKitDocument | undefined {\n const host = entity.object3D;\n if (!host) {\n return undefined;\n }\n const cached = this.entityDocuments.get(host);\n if (cached && !cached.disposed) {\n return cached;\n }\n const componentDocument = PanelDocument.data.document[entity.index] as\n | UIKitDocument\n | undefined;\n if (componentDocument && !componentDocument.disposed) {\n this.entityDocuments.set(host, componentDocument);\n return componentDocument;\n }\n let discovered: UIKitDocument | undefined;\n host.traverse((object) => {\n if (!discovered && object instanceof UIKitDocument && !object.disposed) {\n discovered = object;\n }\n });\n if (discovered) {\n this.entityDocuments.set(host, discovered);\n }\n return discovered;\n }\n\n /** Track intrinsic UIKit dimensions so late font/content layout invalidates positioning. */\n private hasDocumentSizeChanged(document: UIKitDocument): boolean {\n const size = document.computedSize;\n if (!size) {\n return false;\n }\n\n const previous = this.documentSizes.get(document);\n this.documentSizes.set(document, size);\n return (\n previous == null ||\n previous.width !== size.width ||\n previous.height !== size.height\n );\n }\n\n /** Compute pixel size/position and apply camera‑relative transform. */\n private calculateLayout(entity: Entity, document: UIKitDocument) {\n const computedSize = document.computedSize;\n\n if (computedSize) {\n const widthExp = entity.getValue(ScreenSpace, 'width')!;\n const heightExp = entity.getValue(ScreenSpace, 'height')!;\n const top = entity.getValue(ScreenSpace, 'top')!;\n const bottom = entity.getValue(ScreenSpace, 'bottom')!;\n const left = entity.getValue(ScreenSpace, 'left')!;\n const right = entity.getValue(ScreenSpace, 'right')!;\n const zOffset = entity.getValue(ScreenSpace, 'zOffset')!;\n\n // Get desired dimensions in screen pixels\n const { height: hPx, width: wPx } = this.getComputedDimensionValues(\n widthExp,\n heightExp,\n );\n\n // Convert UIKit dimensions to world space units (UIKit uses cm units)\n const uiWidthInWorldUnits = computedSize.width / 100;\n const uiHeightInWorldUnits = computedSize.height / 100;\n\n // Screen dimensions\n const W = this.renderer.domElement.clientWidth;\n const H = this.renderer.domElement.clientHeight;\n const projectionScaleY = this.camera.projectionMatrix.elements[5];\n\n // A hidden or transitioning canvas can temporarily report unusable\n // dimensions. Leave the document attached and retry when the tracked\n // layout environment becomes valid instead of writing NaN/Infinity.\n if (\n W <= 0 ||\n H <= 0 ||\n !Number.isFinite(projectionScaleY) ||\n projectionScaleY <= 0\n ) {\n return;\n }\n\n // Calculate world-to-pixel conversion for screen space at zOffset\n const worldHeightAtZ = (2 * zOffset) / projectionScaleY;\n const worldPerPixel = worldHeightAtZ / H;\n\n // Calculate desired world space dimensions\n const targetWorldWidth = wPx * worldPerPixel;\n const targetWorldHeight = hPx * worldPerPixel;\n\n // Set target dimensions on UIKitDocument - this will trigger reactive scaling\n document.setTargetDimensions(targetWorldWidth, targetWorldHeight);\n\n // Get final scaled dimensions for positioning\n const finalScale = document.scale.x; // UIKitDocument sets uniform scale\n const usedWpx = (uiWidthInWorldUnits * finalScale) / worldPerPixel;\n const usedHpx = (uiHeightInWorldUnits * finalScale) / worldPerPixel;\n\n // Calculate position based on CSS-like positioning\n const { top: computedTop, left: computedLeft } =\n this.getComputedPositionValues(usedWpx, usedHpx, {\n top,\n bottom,\n left,\n right,\n });\n\n // Convert screen position to camera-relative world position\n const centerXpx = computedLeft + usedWpx / 2;\n const centerYpx = H - computedTop - usedHpx / 2;\n const camX = (centerXpx - W / 2) * worldPerPixel;\n const camY = (centerYpx - H / 2) * worldPerPixel;\n const camZ = -zOffset;\n\n // Position the UIKitDocument in camera space\n document.position.set(camX, camY, camZ);\n }\n }\n\n /**\n * Evaluate CSS expressions for width/height using a temporary DOM node.\n * Returns pixel values from `window.getComputedStyle`.\n *\n * @remarks\n * Older scene documents may explicitly declare `'auto'`. On a floating\n * helper `<div>` the browser resolves an unconstrained `auto`\n * dimension to `0px`. A `0px` target collapses {@link\n * UIKitDocument.setTargetDimensions} and the panel retains its intrinsic\n * world-space size inside camera space, blowing the UI up to most of the\n * viewport. Until aspect-ratio derivation from the\n * other axis lands, treat `'auto'` as an unsupported size for screen-space\n * layout: warn once per axis, and clamp the contributing CSS expression to\n * a viewport-relative fallback that produces a sensibly-sized HUD.\n */\n private getComputedDimensionValues(widthExp: string, heightExp: string) {\n const widthForLayout = this.resolveAutoDimension(widthExp, 'width');\n const heightForLayout = this.resolveAutoDimension(heightExp, 'height');\n\n const { dimensionElement: element, dimensionContainer: container } =\n this.layoutHelpers;\n document.body.appendChild(container);\n element.style.width = widthForLayout;\n element.style.height = heightForLayout;\n container.appendChild(element);\n const pixelValues = window.getComputedStyle(element);\n const result = {\n width: parseFloat(pixelValues.width),\n height: parseFloat(pixelValues.height),\n };\n document.body.removeChild(container);\n return result;\n }\n\n /**\n * Substitute a `'25vw'` / `'25vh'` fallback for `'auto'` on the given axis,\n * logging a single warning per axis the first time it triggers.\n */\n private resolveAutoDimension(\n expression: string,\n axis: 'width' | 'height',\n ): string {\n if (expression !== 'auto') {\n return expression;\n }\n if (!this.autoDimensionWarned[axis]) {\n this.autoDimensionWarned[axis] = true;\n console.warn(\n `[ScreenSpace] ${axis}: 'auto' is not supported in screen-space layout; ` +\n `clamping to '25v${axis === 'width' ? 'w' : 'h'}'. Set an explicit CSS ` +\n `size (e.g. '320px', '40vw') to silence this warning.`,\n );\n }\n return axis === 'width' ? '25vw' : '25vh';\n }\n\n /** Evaluate CSS absolute positioning and return `top`/`left` in pixels. */\n private getComputedPositionValues(\n widthPx: number,\n heightPx: number,\n { top = 'auto', bottom = 'auto', left = 'auto', right = 'auto' },\n ) {\n const { positionElement: element, positionContainer: container } =\n this.layoutHelpers;\n document.body.appendChild(container);\n element.style.position = 'absolute';\n element.style.width = `${widthPx}px`;\n element.style.height = `${heightPx}px`;\n element.style.top = top;\n element.style.bottom = bottom;\n element.style.left = left;\n element.style.right = right;\n container.appendChild(element);\n const pixelValues = window.getComputedStyle(element);\n const result = {\n top: parseFloat(pixelValues.top),\n left: parseFloat(pixelValues.left),\n };\n document.body.removeChild(container);\n return result;\n }\n\n destroy(): void {\n super.destroy();\n (\n this.scene as typeof this.scene & ScenePointerDescendants\n ).screenSpaceDescendants = undefined;\n this.screenSpaceDescendants.length = 0;\n }\n}\n"],"names":[],"mappings":"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"}
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":["/**\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 { setPreferredColorScheme } from '@pmndrs/uikit';\nimport { Types } from '../ecs/component.js';\nimport type { Entity } from '../ecs/entity.js';\nimport { createSystem } from '../ecs/system.js';\nimport type { Object3D } from '../runtime/index.js';\nimport { UIKitDocument } from './document.js';\nimport {\n PanelDocument,\n PanelUI,\n type ColorScheme,\n} from './panel-components.js';\nimport {\n DEFAULT_UIKITML_KIT,\n configureUIKitRenderer,\n loadUIKitMLComponent,\n type UIKitMLComponentSet,\n type UIKitMLKit,\n} from './uikitml.js';\n\nexport { ColorSchemeType, PanelDocument, PanelUI } from './panel-components.js';\nexport type { ColorScheme, PanelUIProps } from './panel-components.js';\n\n/**\n * Renders and updates spatial UI panels.\n *\n * @remarks\n * - Sets Three.js transparent sort to a stable painter order for UI readability.\n * - DOM pointer forwarding is owned by `CanvasPointerSystem` in the input layer.\n * - World-space size is controlled exclusively by the entity transform.\n * @category UI\n */\nexport class PanelUISystem extends createSystem(\n {\n unconfiguredPanels: { required: [PanelUI], excluded: [PanelDocument] },\n configuredPanels: { required: [PanelUI, PanelDocument] },\n },\n {\n /** Built-in UIKitML component collection. */\n kit: { type: Types.String, default: DEFAULT_UIKITML_KIT },\n /** Additional application-defined UIKitML components. */\n componentSets: { type: Types.Object, default: [] },\n /** Color scheme preference for UI theming */\n preferredColorScheme: { type: Types.String, default: 'system' },\n },\n) {\n /** Configure transparent sort, color scheme, and reactive queries. */\n init(): void {\n configureUIKitRenderer(this.renderer);\n\n // Apply color scheme preference. Register the unsubscribe / query handles\n // on cleanupFuncs so they are released on system teardown.\n this.cleanupFuncs.push(\n this.config.preferredColorScheme.subscribe((scheme) => {\n setPreferredColorScheme(scheme as ColorScheme);\n }),\n\n // Set up reactive UI loading when panels need configuration\n this.queries.unconfiguredPanels.subscribe('qualify', (entity) => {\n this.loadPanel(entity)\n .then(() => {\n // Loading completed successfully - PanelDocument component added\n })\n .catch((error) => {\n console.error(\n `[PanelUISystem] Failed to load panel for entity ${entity.index}:`,\n error,\n );\n });\n }),\n\n // Set up cleanup when panels are unconfigured\n this.queries.configuredPanels.subscribe('disqualify', (entity) => {\n this.cleanupPanel(entity);\n }),\n );\n }\n\n /** Tick every UIKit document in the scene, including manifest-backed assets. */\n update(_delta: number): void {\n const documents = new Set<UIKitDocument>();\n const collect = (object: Object3D): void => {\n if (object instanceof UIKitDocument && !object.disposed) {\n documents.add(object);\n }\n };\n this.scene.traverse(collect);\n this.camera.traverse(collect);\n for (const document of documents) {\n document.rootElement.update?.(_delta * 1000);\n }\n }\n\n /**\n * Load and parse the `PanelUI.config` UIKitML file, create a {@link UIKitDocument},\n * attach it to the entity, and tag the entity with {@link PanelDocument}.\n */\n private async loadPanel(entity: Entity): Promise<void> {\n if (!entity.object3D) {\n throw new Error(\n `Entity ${entity.index} cannot host PanelUI because it has no object3D. ` +\n 'Create it with world.createTransformEntity() before adding PanelUI.',\n );\n }\n\n const config = PanelUI.data.config[entity.index];\n const rootElement = await loadUIKitMLComponent(config, {\n kit: this.config.kit.value as UIKitMLKit,\n componentSets: this.config.componentSets.value as UIKitMLComponentSet[],\n preferredColorScheme: this.config.preferredColorScheme\n .value as ColorScheme,\n });\n const document = new UIKitDocument(rootElement);\n\n entity.object3D.add(document);\n entity.addComponent(PanelDocument, { document });\n }\n\n /** Remove, dispose, and detach the loaded {@link UIKitDocument} from the entity. */\n private cleanupPanel(entity: Entity): void {\n // Get the document before cleanup\n const document = PanelDocument.data.document[entity.index] as UIKitDocument;\n\n if (document) {\n // Remove UIKitDocument (Group) from scene first\n if (entity.object3D) {\n entity.object3D.remove(document);\n }\n\n // Delegate cleanup to UIKitDocument's dispose method\n if (typeof document.dispose === 'function') {\n document.dispose();\n }\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +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;;;;"}
1
+ {"version":3,"file":"uikitml-asset.js","sources":["../../src/ui/uikitml-asset.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 type { Component } from '@pmndrs/uikit';\nimport { Group, type Object3D } from '../runtime/index.js';\nimport { UIKitDocument } from './document.js';\n\n/** Object hierarchy produced when a UIKitML manifest asset is instantiated. */\nexport class UIKitMLAsset extends Group {\n readonly isUIKitMLAsset = true;\n\n constructor(\n readonly assetId: string,\n readonly document: UIKitDocument,\n ) {\n super();\n this.name = assetId;\n this.add(document);\n }\n\n /** Find a UIKit element without first dereferencing {@link document}. */\n getElementById<T extends Component<any> = Component<any>>(\n id: string,\n ): T | null {\n return this.document.getElementById<T>(id);\n }\n\n /** Return a typed UIKit element or throw when the id is absent. */\n requireElementById<T extends Component<any> = Component<any>>(id: string): T {\n return this.document.requireElementById<T>(id);\n }\n\n /** Release the document even when ScreenSpace has temporarily reparented it. */\n dispose(): void {\n this.document.removeFromParent();\n this.document.dispose();\n }\n}\n\n/** Find a UIKit document in either a manifest asset or a legacy panel hierarchy. */\nexport function findUIKitDocument(\n object: Object3D | null | undefined,\n): UIKitDocument | null {\n if (!object) {\n return null;\n }\n if (object instanceof UIKitDocument) {\n return object.disposed ? null : object;\n }\n if (object instanceof UIKitMLAsset) {\n return object.document.disposed ? null : object.document;\n }\n let result: UIKitDocument | null = null;\n object.traverse((child) => {\n if (!result && child instanceof UIKitDocument && !child.disposed) {\n result = child;\n }\n });\n return result;\n}\n"],"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;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"uikitml.js","sources":["../../src/ui/uikitml.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uikitml.js","sources":["../../src/ui/uikitml.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 {\n instantiate,\n parse,\n resolveKitComponentSets,\n type ComponentSet,\n type KitName,\n type UIKitMLAst,\n type UIKitMLError,\n} from '@drawcall/uikitml';\nimport {\n reversePainterSortStable,\n StyleSheet,\n type Component,\n type PreferredColorScheme,\n} from '@pmndrs/uikit';\nimport { AssetManager } from '../asset/asset-manager.js';\nimport { CacheManager } from '../asset/cache-manager.js';\nimport type { WebGLRenderer } from '../runtime/index.js';\nimport { UIKitDocument } from './document.js';\nimport { UIKitMLAsset } from './uikitml-asset.js';\n\n/** Built-in UIKitML component collection used by a panel. */\nexport type UIKitMLKit = KitName;\n\n/** Additional component definitions accepted by the UIKitML parser. */\nexport type UIKitMLComponentSet = ComponentSet;\n\nexport interface UIKitMLLoadOptions {\n /** Built-in component collection. @defaultValue `'horizon'` */\n kit?: UIKitMLKit;\n /** Additional application-defined UIKitML components. */\n componentSets?: UIKitMLComponentSet[];\n /** Color scheme supplied to the instantiated UIKit tree. */\n preferredColorScheme?: PreferredColorScheme;\n /** Bypass the cached source text, primarily for editor preview refreshes. */\n forceReload?: boolean;\n}\n\n/** Default component collection for IWSDK panels. */\nexport const DEFAULT_UIKITML_KIT: UIKitMLKit = 'horizon';\n\n/** Configure a renderer for UIKit clipping and transparent painter order. */\nexport function configureUIKitRenderer(renderer: WebGLRenderer): void {\n renderer.setTransparentSort(reversePainterSortStable);\n renderer.localClippingEnabled = true;\n}\n\nfunction formatParseError(error: UIKitMLError): string {\n const position = error.range?.start;\n const location = position ? ` at ${position.line}:${position.column}` : '';\n return `${error.message}${location}`;\n}\n\nfunction resolveFontFaceURLs(ast: UIKitMLAst, sourceURL?: string): void {\n if (!sourceURL || !ast.fontFaces) {\n return;\n }\n\n for (const fontFace of ast.fontFaces) {\n try {\n fontFace.src = new URL(fontFace.src, sourceURL).href;\n } catch {\n // Preserve values such as application-owned URL schemes that the\n // platform loader may still understand.\n }\n }\n}\n\nfunction getComponentSets(options: UIKitMLLoadOptions): UIKitMLComponentSet[] {\n return [\n ...resolveKitComponentSets(options.kit ?? DEFAULT_UIKITML_KIT),\n ...(options.componentSets ?? []),\n ];\n}\n\nasync function preloadTTFFonts(\n root: Component,\n ast: UIKitMLAst,\n): Promise<void> {\n // UIKit does not expose its resolved font loaders until the component is\n // attached, but UIKitML installs them on the root's constructor input.\n const fontFamilies = (\n root as unknown as { inputProperties?: { fontFamilies?: unknown } }\n ).inputProperties?.fontFamilies;\n if (\n !fontFamilies ||\n typeof fontFamilies !== 'object' ||\n Array.isArray(fontFamilies)\n ) {\n return;\n }\n\n // UIKitML's font loaders share their generated atlas cache. Resolve the\n // declared faces serially before the first render so text cannot disappear\n // from an initial runtime frame or editor preview capture.\n for (const fontFace of ast.fontFaces ?? []) {\n const family = (fontFamilies as Record<string, unknown>)[\n fontFace.fontFamily\n ];\n if (!family || typeof family !== 'object' || Array.isArray(family)) {\n continue;\n }\n const load = (family as Record<string, unknown>)[fontFace.fontWeight];\n if (typeof load === 'function') {\n await (load as () => Promise<unknown>)();\n }\n }\n}\n\n/**\n * Parse UIKitML source and resolve its relative TTF declarations.\n *\n * @param source UIKitML markup.\n * @param sourceURL URL of the UIKitML document, used as the base for font URLs.\n * @param options Parser and component-set options.\n */\nexport function parseUIKitMLSource(\n source: string,\n sourceURL?: string,\n options: UIKitMLLoadOptions = {},\n): UIKitMLAst {\n const componentSets = getComponentSets(options);\n const result = parse(source, { componentSets });\n\n if (!result.success) {\n throw new Error(result.errors.map(formatParseError).join('\\n'));\n }\n\n resolveFontFaceURLs(result.ast, sourceURL);\n return result.ast;\n}\n\n/** Fetch, parse, and instantiate a UIKitML document. */\nexport async function loadUIKitMLComponent(\n configURL: string,\n options: UIKitMLLoadOptions = {},\n): Promise<Component> {\n const source = await AssetManager.loadUIKitML(\n configURL,\n undefined,\n options.forceReload,\n );\n const resolvedURL = CacheManager.resolveUrl(configURL);\n const sourceURL =\n typeof document === 'undefined'\n ? resolvedURL\n : new URL(resolvedURL, document.baseURI).href;\n const componentSets = getComponentSets(options);\n let ast: UIKitMLAst;\n try {\n ast = parseUIKitMLSource(source, sourceURL, options);\n } catch (error) {\n throw new Error(\n `Failed to parse UIKitML ${configURL}:\\n${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n\n // UIKit resolves class names through its shared stylesheet registry.\n Object.assign(StyleSheet, ast.stylesheet);\n\n const root = instantiate(ast, {\n componentSets,\n preferredColorScheme: options.preferredColorScheme,\n });\n await preloadTTFFonts(root, ast);\n return root;\n}\n\n/** Fetch, parse, and instantiate a UIKitML file as a placeable scene asset. */\nexport async function loadUIKitMLAsset(\n assetIdOrURL: string,\n options: UIKitMLLoadOptions = {},\n): Promise<UIKitMLAsset> {\n const root = await loadUIKitMLComponent(assetIdOrURL, options);\n return new UIKitMLAsset(assetIdOrURL, new UIKitDocument(root));\n}\n"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.0.0-rc.0";
1
+ export declare const VERSION = "1.0.0-rc.2";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
- const VERSION = "1.0.0-rc.0";
1
+ const VERSION = "1.0.0-rc.2";
2
2
 
3
3
  export { VERSION };
4
4
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAO,MAAM,OAAO,GAAG;;;;"}
1
+ {"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["export const VERSION = \"1.0.0-rc.2\";\n"],"names":[],"mappings":"AAAO,MAAM,OAAO,GAAG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"visibility-component.js","sources":["../../src/visibility/visibility-component.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;AAKG;MAKU,UAAU,GAAG,0BAA0B,CAClD,eAAe,CACb,YAAY,EACZ;IACE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAClD,CAAA,EACD,qDAAqD,CACtD,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;;;;"}
1
+ {"version":3,"file":"visibility-component.js","sources":["../../src/visibility/visibility-component.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 { setComponentEditorMetadata } from '../ecs/component-editor-metadata.js';\nimport { Types, createComponent } from '../ecs/component.js';\n\nexport const Visibility = setComponentEditorMetadata(\n createComponent(\n 'Visibility',\n {\n isVisible: { type: Types.Boolean, default: true },\n },\n 'Component to control if an entity object is visible',\n ),\n { hidden: true, intrinsic: true },\n);\n"],"names":[],"mappings":";;;AAAA;;;;;AAKG;MAKU,UAAU,GAAG,0BAA0B,CAClD,eAAe,CACb,YAAY,EACZ;IACE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAClD,CAAA,EACD,qDAAqD,CACtD,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"visibility.js","sources":["../../src/visibility/visibility.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAQH,SAAS,cAAc,CAAC,MAAc,EAAA;AACpC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAChC,IAAA,IAAI,CAAC,QAAQ,IAAK,QAAgB,CAAC,oBAAoB,EAAE;QACvD;IACF;AACC,IAAA,QAAgB,CAAC,oBAAoB,GAAG,IAAI;AAE7C,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE;AACzC,QAAA,GAAG,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3D,QAAA,GAAG,EAAE,CAAC,KAAc,KAAI;YACtB,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC;QACjD,CAAC;AACD,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,YAAY,EAAE,IAAI;AACnB,KAAA,CAAC;AACJ;AAEA,SAAS,gBAAgB,CAAC,MAAc,EAAA;AACtC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;IAChC,IAAI,CAAC,QAAQ,IAAI,CAAE,QAAgB,CAAC,oBAAoB,EAAE;QACxD;IACF;AACA,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEhE,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE;AACzC,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,YAAY,EAAE,IAAI;AACnB,KAAA,CAAC;IACF,OAAQ,QAAgB,CAAC,oBAAoB;AAC/C;AAEM,MAAO,gBAAiB,SAAQ,YAAY,CAAC;AACjD,IAAA,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;CACvC,CAAC,CAAA;IACA,IAAI,GAAA;QACF,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACnE;AACD;;;;"}
1
+ {"version":3,"file":"visibility.js","sources":["../../src/visibility/visibility.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 { Entity } from '../ecs/entity.js';\nimport { createSystem } from '../ecs/system.js';\nimport { Visibility } from './visibility-component.js';\n\nexport { Visibility } from './visibility-component.js';\n\nfunction attachToEntity(entity: Entity): void {\n const object3D = entity.object3D;\n if (!object3D || (object3D as any).__visibilityAttached) {\n return;\n }\n (object3D as any).__visibilityAttached = true;\n\n Object.defineProperty(object3D, 'visible', {\n get: () => Boolean(Visibility.data.isVisible[entity.index]),\n set: (value: boolean) => {\n entity.setValue(Visibility, 'isVisible', value);\n },\n enumerable: true,\n configurable: true,\n });\n}\n\nfunction detachFromEntity(entity: Entity): void {\n const object3D = entity.object3D;\n if (!object3D || !(object3D as any).__visibilityAttached) {\n return;\n }\n const visible = Boolean(Visibility.data.isVisible[entity.index]);\n\n Object.defineProperty(object3D, 'visible', {\n value: visible,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n delete (object3D as any).__visibilityAttached;\n}\n\nexport class VisibilitySystem extends createSystem({\n visibility: { required: [Visibility] },\n}) {\n init(): void {\n this.queries.visibility.subscribe('qualify', attachToEntity);\n this.queries.visibility.subscribe('disqualify', detachFromEntity);\n }\n}\n"],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAQH,SAAS,cAAc,CAAC,MAAc,EAAA;AACpC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAChC,IAAA,IAAI,CAAC,QAAQ,IAAK,QAAgB,CAAC,oBAAoB,EAAE;QACvD;IACF;AACC,IAAA,QAAgB,CAAC,oBAAoB,GAAG,IAAI;AAE7C,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE;AACzC,QAAA,GAAG,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3D,QAAA,GAAG,EAAE,CAAC,KAAc,KAAI;YACtB,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC;QACjD,CAAC;AACD,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,YAAY,EAAE,IAAI;AACnB,KAAA,CAAC;AACJ;AAEA,SAAS,gBAAgB,CAAC,MAAc,EAAA;AACtC,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;IAChC,IAAI,CAAC,QAAQ,IAAI,CAAE,QAAgB,CAAC,oBAAoB,EAAE;QACxD;IACF;AACA,IAAA,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEhE,IAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE;AACzC,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,QAAQ,EAAE,IAAI;AACd,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,YAAY,EAAE,IAAI;AACnB,KAAA,CAAC;IACF,OAAQ,QAAgB,CAAC,oBAAoB;AAC/C;AAEM,MAAO,gBAAiB,SAAQ,YAAY,CAAC;AACjD,IAAA,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;CACvC,CAAC,CAAA;IACA,IAAI,GAAA;QACF,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACnE;AACD;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iwsdk/core",
3
- "version": "1.0.0-rc.0",
3
+ "version": "1.0.0-rc.2",
4
4
  "description": "Javascript WebXR Runtime for Emulation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -81,9 +81,9 @@
81
81
  "elics": "^3.4.1",
82
82
  "three": "npm:super-three@0.181.0",
83
83
  "three-mesh-bvh": "^0.9.1",
84
- "@iwsdk/locomotor": "1.0.0-rc.0",
85
- "@iwsdk/scene-composition": "1.0.0-rc.0",
86
- "@iwsdk/xr-input": "1.0.0-rc.0"
84
+ "@iwsdk/scene-composition": "1.0.0-rc.2",
85
+ "@iwsdk/xr-input": "1.0.0-rc.2",
86
+ "@iwsdk/locomotor": "1.0.0-rc.2"
87
87
  },
88
88
  "engines": {
89
89
  "node": ">=20.19.0 <21.0.0-0 || >=22.12.0 <23.0.0-0 || >=24.0.0"