@iwsdk/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/asset/asset-manager.d.ts +72 -0
- package/dist/asset/asset-manager.d.ts.map +1 -0
- package/dist/asset/asset-manager.js +138 -0
- package/dist/asset/asset-manager.js.map +1 -0
- package/dist/asset/cache-manager.d.ts +44 -0
- package/dist/asset/cache-manager.d.ts.map +1 -0
- package/dist/asset/cache-manager.js +80 -0
- package/dist/asset/cache-manager.js.map +1 -0
- package/dist/asset/index.d.ts +9 -0
- package/dist/asset/index.d.ts.map +1 -0
- package/dist/asset/loaders/audio-loader.d.ts +21 -0
- package/dist/asset/loaders/audio-loader.d.ts.map +1 -0
- package/dist/asset/loaders/audio-loader.js +57 -0
- package/dist/asset/loaders/audio-loader.js.map +1 -0
- package/dist/asset/loaders/gltf-loader.d.ts +33 -0
- package/dist/asset/loaders/gltf-loader.d.ts.map +1 -0
- package/dist/asset/loaders/gltf-loader.js +79 -0
- package/dist/asset/loaders/gltf-loader.js.map +1 -0
- package/dist/asset/loaders/hdr-texture-loader.d.ts +18 -0
- package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -0
- package/dist/asset/loaders/hdr-texture-loader.js +65 -0
- package/dist/asset/loaders/hdr-texture-loader.js.map +1 -0
- package/dist/asset/loaders/texture-loader.d.ts +21 -0
- package/dist/asset/loaders/texture-loader.d.ts.map +1 -0
- package/dist/asset/loaders/texture-loader.js +57 -0
- package/dist/asset/loaders/texture-loader.js.map +1 -0
- package/dist/audio/audio-pool.d.ts +59 -0
- package/dist/audio/audio-pool.d.ts.map +1 -0
- package/dist/audio/audio-pool.js +105 -0
- package/dist/audio/audio-pool.js.map +1 -0
- package/dist/audio/audio-system.d.ts +326 -0
- package/dist/audio/audio-system.d.ts.map +1 -0
- package/dist/audio/audio-system.js +478 -0
- package/dist/audio/audio-system.js.map +1 -0
- package/dist/audio/audio-utils.d.ts +71 -0
- package/dist/audio/audio-utils.d.ts.map +1 -0
- package/dist/audio/audio-utils.js +145 -0
- package/dist/audio/audio-utils.js.map +1 -0
- package/dist/audio/audio.d.ts +178 -0
- package/dist/audio/audio.d.ts.map +1 -0
- package/dist/audio/audio.js +104 -0
- package/dist/audio/audio.js.map +1 -0
- package/dist/audio/index.d.ts +11 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/ecs/component-registry.d.ts +54 -0
- package/dist/ecs/component-registry.d.ts.map +1 -0
- package/dist/ecs/component-registry.js +86 -0
- package/dist/ecs/component-registry.js.map +1 -0
- package/dist/ecs/component.d.ts +12 -0
- package/dist/ecs/component.d.ts.map +1 -0
- package/dist/ecs/entity.d.ts +17 -0
- package/dist/ecs/entity.d.ts.map +1 -0
- package/dist/ecs/entity.js +13 -0
- package/dist/ecs/entity.js.map +1 -0
- package/dist/ecs/index.d.ts +12 -0
- package/dist/ecs/index.d.ts.map +1 -0
- package/dist/ecs/system.d.ts +70 -0
- package/dist/ecs/system.d.ts.map +1 -0
- package/dist/ecs/system.js +79 -0
- package/dist/ecs/system.js.map +1 -0
- package/dist/ecs/world.d.ts +101 -0
- package/dist/ecs/world.d.ts.map +1 -0
- package/dist/ecs/world.js +165 -0
- package/dist/ecs/world.js.map +1 -0
- package/dist/environment/dome-gradient.d.ts +39 -0
- package/dist/environment/dome-gradient.d.ts.map +1 -0
- package/dist/environment/dome-gradient.js +30 -0
- package/dist/environment/dome-gradient.js.map +1 -0
- package/dist/environment/dome-texture.d.ts +39 -0
- package/dist/environment/dome-texture.d.ts.map +1 -0
- package/dist/environment/dome-texture.js +30 -0
- package/dist/environment/dome-texture.js.map +1 -0
- package/dist/environment/environment-system.d.ts +82 -0
- package/dist/environment/environment-system.d.ts.map +1 -0
- package/dist/environment/environment-system.js +389 -0
- package/dist/environment/environment-system.js.map +1 -0
- package/dist/environment/gradient-environment.d.ts +37 -0
- package/dist/environment/gradient-environment.d.ts.map +1 -0
- package/dist/environment/gradient-environment.js +99 -0
- package/dist/environment/gradient-environment.js.map +1 -0
- package/dist/environment/ibl-gradient.d.ts +38 -0
- package/dist/environment/ibl-gradient.d.ts.map +1 -0
- package/dist/environment/ibl-gradient.js +29 -0
- package/dist/environment/ibl-gradient.js.map +1 -0
- package/dist/environment/ibl-texture.d.ts +36 -0
- package/dist/environment/ibl-texture.d.ts.map +1 -0
- package/dist/environment/ibl-texture.js +30 -0
- package/dist/environment/ibl-texture.js.map +1 -0
- package/dist/environment/index.d.ts +12 -0
- package/dist/environment/index.d.ts.map +1 -0
- package/dist/grab/distance-grabbable.d.ts +115 -0
- package/dist/grab/distance-grabbable.d.ts.map +1 -0
- package/dist/grab/distance-grabbable.js +102 -0
- package/dist/grab/distance-grabbable.js.map +1 -0
- package/dist/grab/grab-system.d.ts +320 -0
- package/dist/grab/grab-system.d.ts.map +1 -0
- package/dist/grab/grab-system.js +239 -0
- package/dist/grab/grab-system.js.map +1 -0
- package/dist/grab/handles.d.ts +43 -0
- package/dist/grab/handles.d.ts.map +1 -0
- package/dist/grab/handles.js +132 -0
- package/dist/grab/handles.js.map +1 -0
- package/dist/grab/index.d.ts +13 -0
- package/dist/grab/index.d.ts.map +1 -0
- package/dist/grab/index.js +23 -0
- package/dist/grab/index.js.map +1 -0
- package/dist/grab/one-hand-grabbable.d.ts +80 -0
- package/dist/grab/one-hand-grabbable.d.ts.map +1 -0
- package/dist/grab/one-hand-grabbable.js +80 -0
- package/dist/grab/one-hand-grabbable.js.map +1 -0
- package/dist/grab/pointer-events-patch.d.ts +16 -0
- package/dist/grab/pointer-events-patch.d.ts.map +1 -0
- package/dist/grab/pointer-events-patch.js +223 -0
- package/dist/grab/pointer-events-patch.js.map +1 -0
- package/dist/grab/two-hands-grabbable.d.ts +103 -0
- package/dist/grab/two-hands-grabbable.d.ts.map +1 -0
- package/dist/grab/two-hands-grabbable.js +100 -0
- package/dist/grab/two-hands-grabbable.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/init/index.d.ts +9 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/world-initializer.d.ts +76 -0
- package/dist/init/world-initializer.d.ts.map +1 -0
- package/dist/init/world-initializer.js +403 -0
- package/dist/init/world-initializer.js.map +1 -0
- package/dist/init/xr.d.ts +87 -0
- package/dist/init/xr.d.ts.map +1 -0
- package/dist/init/xr.js +193 -0
- package/dist/init/xr.js.map +1 -0
- package/dist/input/index.d.ts +9 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/input-system.d.ts +52 -0
- package/dist/input/input-system.d.ts.map +1 -0
- package/dist/input/input-system.js +176 -0
- package/dist/input/input-system.js.map +1 -0
- package/dist/input/state-tags.d.ts +56 -0
- package/dist/input/state-tags.d.ts.map +1 -0
- package/dist/input/state-tags.js +63 -0
- package/dist/input/state-tags.js.map +1 -0
- package/dist/level/index.d.ts +12 -0
- package/dist/level/index.d.ts.map +1 -0
- package/dist/level/level-entity-creator.d.ts +27 -0
- package/dist/level/level-entity-creator.d.ts.map +1 -0
- package/dist/level/level-entity-creator.js +110 -0
- package/dist/level/level-entity-creator.js.map +1 -0
- package/dist/level/level-glxf-importer.d.ts +22 -0
- package/dist/level/level-glxf-importer.d.ts.map +1 -0
- package/dist/level/level-glxf-importer.js +40 -0
- package/dist/level/level-glxf-importer.js.map +1 -0
- package/dist/level/level-root.d.ts +18 -0
- package/dist/level/level-root.d.ts.map +1 -0
- package/dist/level/level-root.js +25 -0
- package/dist/level/level-root.js.map +1 -0
- package/dist/level/level-system.d.ts +54 -0
- package/dist/level/level-system.d.ts.map +1 -0
- package/dist/level/level-system.js +134 -0
- package/dist/level/level-system.js.map +1 -0
- package/dist/level/level-tag.d.ts +25 -0
- package/dist/level/level-tag.d.ts.map +1 -0
- package/dist/level/level-tag.js +28 -0
- package/dist/level/level-tag.js.map +1 -0
- package/dist/locomotion/geometries/beveled-cylinder.d.ts +12 -0
- package/dist/locomotion/geometries/beveled-cylinder.d.ts.map +1 -0
- package/dist/locomotion/geometries/beveled-cylinder.js +64 -0
- package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -0
- package/dist/locomotion/index.d.ts +11 -0
- package/dist/locomotion/index.d.ts.map +1 -0
- package/dist/locomotion/locomotion.d.ts +239 -0
- package/dist/locomotion/locomotion.d.ts.map +1 -0
- package/dist/locomotion/locomotion.js +256 -0
- package/dist/locomotion/locomotion.js.map +1 -0
- package/dist/locomotion/materials/line.d.ts +24 -0
- package/dist/locomotion/materials/line.d.ts.map +1 -0
- package/dist/locomotion/materials/line.js +307 -0
- package/dist/locomotion/materials/line.js.map +1 -0
- package/dist/locomotion/slide.d.ts +76 -0
- package/dist/locomotion/slide.d.ts.map +1 -0
- package/dist/locomotion/slide.js +131 -0
- package/dist/locomotion/slide.js.map +1 -0
- package/dist/locomotion/teleport.d.ts +68 -0
- package/dist/locomotion/teleport.d.ts.map +1 -0
- package/dist/locomotion/teleport.js +150 -0
- package/dist/locomotion/teleport.js.map +1 -0
- package/dist/locomotion/turn.d.ts +77 -0
- package/dist/locomotion/turn.d.ts.map +1 -0
- package/dist/locomotion/turn.js +126 -0
- package/dist/locomotion/turn.js.map +1 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js +13 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js +154 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js +66 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js +162 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js +519 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js +15 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js +32 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js +10 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js +41 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js +35 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js +24 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js +92 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js +382 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js +2587 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js +477 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js +17 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js.map +1 -0
- package/dist/physics/index.d.ts +11 -0
- package/dist/physics/index.d.ts.map +1 -0
- package/dist/physics/physics-system.d.ts +314 -0
- package/dist/physics/physics-system.d.ts.map +1 -0
- package/dist/physics/physics-system.js +419 -0
- package/dist/physics/physics-system.js.map +1 -0
- package/dist/physics/physicsBody.d.ts +83 -0
- package/dist/physics/physicsBody.d.ts.map +1 -0
- package/dist/physics/physicsBody.js +60 -0
- package/dist/physics/physicsBody.js.map +1 -0
- package/dist/physics/physicsManipulation.d.ts +51 -0
- package/dist/physics/physicsManipulation.d.ts.map +1 -0
- package/dist/physics/physicsManipulation.js +46 -0
- package/dist/physics/physicsManipulation.js.map +1 -0
- package/dist/physics/physicsShape.d.ts +133 -0
- package/dist/physics/physicsShape.d.ts.map +1 -0
- package/dist/physics/physicsShape.js +97 -0
- package/dist/physics/physicsShape.js.map +1 -0
- package/dist/physics/utils.d.ts +21 -0
- package/dist/physics/utils.d.ts.map +1 -0
- package/dist/physics/utils.js +130 -0
- package/dist/physics/utils.js.map +1 -0
- package/dist/runtime/index.d.ts +8 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/three.d.ts +8 -0
- package/dist/runtime/three.d.ts.map +1 -0
- package/dist/runtime/three.js +18 -0
- package/dist/runtime/three.js.map +1 -0
- package/dist/scene-understanding/anchor.d.ts +42 -0
- package/dist/scene-understanding/anchor.d.ts.map +1 -0
- package/dist/scene-understanding/anchor.js +45 -0
- package/dist/scene-understanding/anchor.js.map +1 -0
- package/dist/scene-understanding/index.d.ts +11 -0
- package/dist/scene-understanding/index.d.ts.map +1 -0
- package/dist/scene-understanding/mesh.d.ts +67 -0
- package/dist/scene-understanding/mesh.d.ts.map +1 -0
- package/dist/scene-understanding/mesh.js +55 -0
- package/dist/scene-understanding/mesh.js.map +1 -0
- package/dist/scene-understanding/plane.d.ts +39 -0
- package/dist/scene-understanding/plane.d.ts.map +1 -0
- package/dist/scene-understanding/plane.js +42 -0
- package/dist/scene-understanding/plane.js.map +1 -0
- package/dist/scene-understanding/scene-understanding-system.d.ts +180 -0
- package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -0
- package/dist/scene-understanding/scene-understanding-system.js +342 -0
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -0
- package/dist/transform/index.d.ts +10 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/synced-quaternion.d.ts +35 -0
- package/dist/transform/synced-quaternion.d.ts.map +1 -0
- package/dist/transform/synced-quaternion.js +128 -0
- package/dist/transform/synced-quaternion.js.map +1 -0
- package/dist/transform/synced-vector3.d.ts +34 -0
- package/dist/transform/synced-vector3.d.ts.map +1 -0
- package/dist/transform/synced-vector3.js +106 -0
- package/dist/transform/synced-vector3.js.map +1 -0
- package/dist/transform/transform.d.ts +100 -0
- package/dist/transform/transform.d.ts.map +1 -0
- package/dist/transform/transform.js +194 -0
- package/dist/transform/transform.js.map +1 -0
- package/dist/types/webxr-augmentations.d.ts +23 -0
- package/dist/types/webxr-augmentations.d.ts.map +1 -0
- package/dist/ui/document.d.ts +112 -0
- package/dist/ui/document.d.ts.map +1 -0
- package/dist/ui/document.js +298 -0
- package/dist/ui/document.js.map +1 -0
- package/dist/ui/follow.d.ts +197 -0
- package/dist/ui/follow.d.ts.map +1 -0
- package/dist/ui/follow.js +143 -0
- package/dist/ui/follow.js.map +1 -0
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/screenspace.d.ts +219 -0
- package/dist/ui/screenspace.d.ts.map +1 -0
- package/dist/ui/screenspace.js +215 -0
- package/dist/ui/screenspace.js.map +1 -0
- package/dist/ui/ui.d.ts +209 -0
- package/dist/ui/ui.d.ts.map +1 -0
- package/dist/ui/ui.js +185 -0
- package/dist/ui/ui.js.map +1 -0
- package/dist/vendor/basis/README.md +46 -0
- package/dist/vendor/basis/basis_transcoder.js +19 -0
- package/dist/vendor/basis/basis_transcoder.wasm +0 -0
- package/dist/vendor/draco/README.md +32 -0
- package/dist/vendor/draco/draco_decoder.js +34 -0
- package/dist/vendor/draco/draco_decoder.wasm +0 -0
- package/dist/vendor/draco/draco_encoder.js +33 -0
- package/dist/vendor/draco/draco_wasm_wrapper.js +117 -0
- package/dist/vendor/draco/gltf/draco_decoder.js +33 -0
- package/dist/vendor/draco/gltf/draco_decoder.wasm +0 -0
- package/dist/vendor/draco/gltf/draco_encoder.js +33 -0
- package/dist/vendor/draco/gltf/draco_wasm_wrapper.js +116 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/dist/visibility/index.d.ts +8 -0
- package/dist/visibility/index.d.ts.map +1 -0
- package/dist/visibility/visibility.d.ts +37 -0
- package/dist/visibility/visibility.d.ts.map +1 -0
- package/dist/visibility/visibility.js +52 -0
- package/dist/visibility/visibility.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import '../runtime/three.js';
|
|
2
|
+
import { Vector3 } from 'three';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Vector3 whose x/y/z accessors read from and write to a target Float32Array.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* - Used by {@link TransformSystem} to bind Object3D.position/scale directly to
|
|
15
|
+
* ECS component storage for zero‑copy updates.
|
|
16
|
+
* - When no target is set, falls back to internal fields so it behaves like a
|
|
17
|
+
* normal `Vector3`.
|
|
18
|
+
*
|
|
19
|
+
* @category Scene
|
|
20
|
+
*/
|
|
21
|
+
class SyncedVector3 extends Vector3 {
|
|
22
|
+
constructor(x = 0, y = 0, z = 0) {
|
|
23
|
+
super(x, y, z);
|
|
24
|
+
this.target = null;
|
|
25
|
+
this.targetOffset = 0;
|
|
26
|
+
this.__x = 0;
|
|
27
|
+
this.__y = 0;
|
|
28
|
+
this.__z = 0;
|
|
29
|
+
// Preserve the values set by parent constructor before overriding properties
|
|
30
|
+
this.__x = this.x;
|
|
31
|
+
this.__y = this.y;
|
|
32
|
+
this.__z = this.z;
|
|
33
|
+
this.setupProperties();
|
|
34
|
+
}
|
|
35
|
+
setupProperties() {
|
|
36
|
+
// Override x, y, z properties to sync with target
|
|
37
|
+
Object.defineProperty(this, 'x', {
|
|
38
|
+
get: () => {
|
|
39
|
+
if (this.target) {
|
|
40
|
+
return this.target[this.targetOffset];
|
|
41
|
+
}
|
|
42
|
+
// Fallback to a private property when no target is set
|
|
43
|
+
return this.__x;
|
|
44
|
+
},
|
|
45
|
+
set: (value) => {
|
|
46
|
+
if (this.target) {
|
|
47
|
+
this.target[this.targetOffset] = value;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this.__x = value;
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
enumerable: true,
|
|
54
|
+
configurable: true,
|
|
55
|
+
});
|
|
56
|
+
Object.defineProperty(this, 'y', {
|
|
57
|
+
get: () => {
|
|
58
|
+
if (this.target) {
|
|
59
|
+
return this.target[this.targetOffset + 1];
|
|
60
|
+
}
|
|
61
|
+
return this.__y;
|
|
62
|
+
},
|
|
63
|
+
set: (value) => {
|
|
64
|
+
if (this.target) {
|
|
65
|
+
this.target[this.targetOffset + 1] = value;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.__y = value;
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
enumerable: true,
|
|
72
|
+
configurable: true,
|
|
73
|
+
});
|
|
74
|
+
Object.defineProperty(this, 'z', {
|
|
75
|
+
get: () => {
|
|
76
|
+
if (this.target) {
|
|
77
|
+
return this.target[this.targetOffset + 2];
|
|
78
|
+
}
|
|
79
|
+
return this.__z;
|
|
80
|
+
},
|
|
81
|
+
set: (value) => {
|
|
82
|
+
if (this.target) {
|
|
83
|
+
this.target[this.targetOffset + 2] = value;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.__z = value;
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
enumerable: true,
|
|
90
|
+
configurable: true,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Bind this vector to a packed float array.
|
|
95
|
+
* @param target Float32Array to read/write.
|
|
96
|
+
* @param offset Starting index within the array (x at `offset`).
|
|
97
|
+
*/
|
|
98
|
+
setTarget(target, offset = 0) {
|
|
99
|
+
this.target = target;
|
|
100
|
+
this.targetOffset = offset;
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
export { SyncedVector3 };
|
|
106
|
+
//# sourceMappingURL=synced-vector3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synced-vector3.js","sources":["../../src/transform/synced-vector3.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { Types } from '../ecs/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* 3D transform component that binds an entity to a Three.js Object3D.
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* - The {@link TransformSystem} wires Object3D.position/quaternion/scale to
|
|
13
|
+
* component views for zero‑copy updates and parenting.
|
|
14
|
+
* - Default values are `NaN` so an existing Object3D keeps its initial transform
|
|
15
|
+
* unless a value is explicitly written by code or GLXF.
|
|
16
|
+
* - Set `parent` to reparent under another entity. When unset, entities are
|
|
17
|
+
* automatically parented under the active level root (or scene if persistent).
|
|
18
|
+
*
|
|
19
|
+
* @category Scene
|
|
20
|
+
* @hideineditor
|
|
21
|
+
*/
|
|
22
|
+
export declare const Transform: import("elics").Component<{
|
|
23
|
+
position: {
|
|
24
|
+
type: Types.Vec3;
|
|
25
|
+
default: [number, number, number];
|
|
26
|
+
};
|
|
27
|
+
orientation: {
|
|
28
|
+
type: Types.Vec4;
|
|
29
|
+
default: [number, number, number, number];
|
|
30
|
+
};
|
|
31
|
+
scale: {
|
|
32
|
+
type: Types.Vec3;
|
|
33
|
+
default: [number, number, number];
|
|
34
|
+
};
|
|
35
|
+
parent: {
|
|
36
|
+
type: Types.Entity;
|
|
37
|
+
default: any;
|
|
38
|
+
};
|
|
39
|
+
}>;
|
|
40
|
+
declare const TransformSystem_base: import("elics").SystemConstructor<import("elics").SystemSchema, {
|
|
41
|
+
transform: {
|
|
42
|
+
required: import("elics").Component<{
|
|
43
|
+
position: {
|
|
44
|
+
type: Types.Vec3;
|
|
45
|
+
default: [number, number, number];
|
|
46
|
+
};
|
|
47
|
+
orientation: {
|
|
48
|
+
type: Types.Vec4;
|
|
49
|
+
default: [number, number, number, number];
|
|
50
|
+
};
|
|
51
|
+
scale: {
|
|
52
|
+
type: Types.Vec3;
|
|
53
|
+
default: [number, number, number];
|
|
54
|
+
};
|
|
55
|
+
parent: {
|
|
56
|
+
type: Types.Entity;
|
|
57
|
+
default: any;
|
|
58
|
+
};
|
|
59
|
+
}>[];
|
|
60
|
+
};
|
|
61
|
+
}, import("../ecs/world.js").World, import("../ecs/system.js").System<import("elics").SystemSchema, {
|
|
62
|
+
transform: {
|
|
63
|
+
required: import("elics").Component<{
|
|
64
|
+
position: {
|
|
65
|
+
type: Types.Vec3;
|
|
66
|
+
default: [number, number, number];
|
|
67
|
+
};
|
|
68
|
+
orientation: {
|
|
69
|
+
type: Types.Vec4;
|
|
70
|
+
default: [number, number, number, number];
|
|
71
|
+
};
|
|
72
|
+
scale: {
|
|
73
|
+
type: Types.Vec3;
|
|
74
|
+
default: [number, number, number];
|
|
75
|
+
};
|
|
76
|
+
parent: {
|
|
77
|
+
type: Types.Entity;
|
|
78
|
+
default: any;
|
|
79
|
+
};
|
|
80
|
+
}>[];
|
|
81
|
+
};
|
|
82
|
+
}>>;
|
|
83
|
+
/**
|
|
84
|
+
* Keeps Object3D and Transform component in sync and manages parenting.
|
|
85
|
+
*
|
|
86
|
+
* @remarks
|
|
87
|
+
* - Replaces Object3D accessors with synced views for fast ECS writes.
|
|
88
|
+
* - Ensures entities without an explicit `parent` attach to the level root
|
|
89
|
+
* (or the scene for persistent objects).
|
|
90
|
+
* - If an Object3D is manually reparented under another entity, the component
|
|
91
|
+
* `parent` value is updated to match.
|
|
92
|
+
*
|
|
93
|
+
* @category Scene
|
|
94
|
+
*/
|
|
95
|
+
export declare class TransformSystem extends TransformSystem_base {
|
|
96
|
+
init(): void;
|
|
97
|
+
update(): void;
|
|
98
|
+
}
|
|
99
|
+
export {};
|
|
100
|
+
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/transform/transform.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,EAKN,MAAM,iBAAiB,CAAC;AAMzB;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;iBAMkC,GAAG;;EAG1D,CAAC;;;;;;;;;;;;;;;;;;yBAHsD,GAAG;;;;;;;;;;;;;;;;;;;;;yBAAH,GAAG;;;;;AAsH3D;;;;;;;;;;;GAWG;AACH,qBAAa,eAAgB,SAAQ,oBAEnC;IACA,IAAI,IAAI,IAAI;IAKZ,MAAM,IAAI,IAAI;CA4Bf"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { createSystem } from '../ecs/system.js';
|
|
2
|
+
import '../ecs/world.js';
|
|
3
|
+
import { createComponent, Types } from 'elics';
|
|
4
|
+
import { NullEntity } from '../ecs/entity.js';
|
|
5
|
+
import '../ecs/component-registry.js';
|
|
6
|
+
import '../level/level-system.js';
|
|
7
|
+
import { LevelTag } from '../level/level-tag.js';
|
|
8
|
+
import '@iwsdk/glxf';
|
|
9
|
+
import '../asset/asset-manager.js';
|
|
10
|
+
import '../asset/cache-manager.js';
|
|
11
|
+
import '@pmndrs/uikit';
|
|
12
|
+
import '@preact/signals-core';
|
|
13
|
+
import { Vector3, Quaternion } from 'three';
|
|
14
|
+
import '../ui/ui.js';
|
|
15
|
+
import '../ui/follow.js';
|
|
16
|
+
import '../ui/screenspace.js';
|
|
17
|
+
import '../level/level-root.js';
|
|
18
|
+
import '../runtime/three.js';
|
|
19
|
+
import { SyncedQuaternion } from './synced-quaternion.js';
|
|
20
|
+
import { SyncedVector3 } from './synced-vector3.js';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
24
|
+
*
|
|
25
|
+
* This source code is licensed under the MIT license found in the
|
|
26
|
+
* LICENSE file in the root directory of this source tree.
|
|
27
|
+
*/
|
|
28
|
+
/**
|
|
29
|
+
* 3D transform component that binds an entity to a Three.js Object3D.
|
|
30
|
+
*
|
|
31
|
+
* @remarks
|
|
32
|
+
* - The {@link TransformSystem} wires Object3D.position/quaternion/scale to
|
|
33
|
+
* component views for zero‑copy updates and parenting.
|
|
34
|
+
* - Default values are `NaN` so an existing Object3D keeps its initial transform
|
|
35
|
+
* unless a value is explicitly written by code or GLXF.
|
|
36
|
+
* - Set `parent` to reparent under another entity. When unset, entities are
|
|
37
|
+
* automatically parented under the active level root (or scene if persistent).
|
|
38
|
+
*
|
|
39
|
+
* @category Scene
|
|
40
|
+
* @hideineditor
|
|
41
|
+
*/
|
|
42
|
+
const Transform = createComponent('Transform', {
|
|
43
|
+
position: { type: Types.Vec3, default: [NaN, NaN, NaN] }, // Local position [x,y,z]; NaN preserves Object3D value
|
|
44
|
+
orientation: { type: Types.Vec4, default: [NaN, NaN, NaN, NaN] }, // Local rotation quaternion [x,y,z,w]; NaN preserves
|
|
45
|
+
scale: { type: Types.Vec3, default: [NaN, NaN, NaN] }, // Local scale [x,y,z]; NaN preserves
|
|
46
|
+
parent: { type: Types.Entity, default: undefined }, // Parent entity for hierarchy (defaults to level root)
|
|
47
|
+
}, 'Component for 3D transformation (position, rotation, scale)');
|
|
48
|
+
function attachToEntity(entity) {
|
|
49
|
+
const object3D = entity.object3D;
|
|
50
|
+
if (!object3D) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (object3D.__transformAttached) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
object3D.__transformAttached = true;
|
|
57
|
+
object3D.entityIdx = entity.index;
|
|
58
|
+
object3D.positionView = entity.getVectorView(Transform, 'position');
|
|
59
|
+
object3D.quaternionView = entity.getVectorView(Transform, 'orientation');
|
|
60
|
+
object3D.scaleView = entity.getVectorView(Transform, 'scale');
|
|
61
|
+
// if component values contains NaN, keep original values instead
|
|
62
|
+
if (object3D.positionView.some(Number.isNaN)) {
|
|
63
|
+
object3D.position.toArray(object3D.positionView);
|
|
64
|
+
}
|
|
65
|
+
if (object3D.quaternionView.some(Number.isNaN)) {
|
|
66
|
+
object3D.quaternion.toArray(object3D.quaternionView);
|
|
67
|
+
}
|
|
68
|
+
if (object3D.scaleView.some(Number.isNaN)) {
|
|
69
|
+
object3D.scale.toArray(object3D.scaleView);
|
|
70
|
+
}
|
|
71
|
+
Object.defineProperty(object3D, 'position', {
|
|
72
|
+
value: new SyncedVector3().setTarget(object3D.positionView),
|
|
73
|
+
writable: false,
|
|
74
|
+
configurable: true,
|
|
75
|
+
enumerable: true,
|
|
76
|
+
});
|
|
77
|
+
Object.defineProperty(object3D, 'quaternion', {
|
|
78
|
+
value: new SyncedQuaternion().setTarget(object3D.quaternionView),
|
|
79
|
+
writable: false,
|
|
80
|
+
configurable: true,
|
|
81
|
+
enumerable: true,
|
|
82
|
+
});
|
|
83
|
+
Object.defineProperty(object3D, 'scale', {
|
|
84
|
+
value: new SyncedVector3().setTarget(object3D.scaleView),
|
|
85
|
+
writable: false,
|
|
86
|
+
configurable: true,
|
|
87
|
+
enumerable: true,
|
|
88
|
+
});
|
|
89
|
+
object3D._parent = object3D.parent; // save original parent
|
|
90
|
+
Object.defineProperty(object3D, 'parent', {
|
|
91
|
+
get: () => {
|
|
92
|
+
return object3D._parent;
|
|
93
|
+
},
|
|
94
|
+
set: (value) => {
|
|
95
|
+
var _a;
|
|
96
|
+
object3D._parent = value;
|
|
97
|
+
Transform.data.parent[entity.index] = (_a = value === null || value === void 0 ? void 0 : value.entityIdx) !== null && _a !== void 0 ? _a : NullEntity;
|
|
98
|
+
},
|
|
99
|
+
configurable: true,
|
|
100
|
+
enumerable: true,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
function detachFromEntity(entity) {
|
|
104
|
+
const object3D = entity.object3D;
|
|
105
|
+
if (!object3D) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (!object3D.__transformAttached) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
delete object3D.entityIdx;
|
|
112
|
+
delete object3D.positionView;
|
|
113
|
+
delete object3D.quaternionView;
|
|
114
|
+
delete object3D.scaleView;
|
|
115
|
+
Object.defineProperty(object3D, 'position', {
|
|
116
|
+
value: new Vector3().copy(object3D.position),
|
|
117
|
+
writable: false,
|
|
118
|
+
configurable: true,
|
|
119
|
+
enumerable: true,
|
|
120
|
+
});
|
|
121
|
+
Object.defineProperty(object3D, 'quaternion', {
|
|
122
|
+
value: new Quaternion().copy(object3D.quaternion),
|
|
123
|
+
writable: false,
|
|
124
|
+
configurable: true,
|
|
125
|
+
enumerable: true,
|
|
126
|
+
});
|
|
127
|
+
Object.defineProperty(object3D, 'scale', {
|
|
128
|
+
value: new Vector3().copy(object3D.scale),
|
|
129
|
+
writable: false,
|
|
130
|
+
configurable: true,
|
|
131
|
+
enumerable: true,
|
|
132
|
+
});
|
|
133
|
+
Object.defineProperty(object3D, 'parent', {
|
|
134
|
+
value: object3D._parent,
|
|
135
|
+
writable: true,
|
|
136
|
+
configurable: true,
|
|
137
|
+
enumerable: true,
|
|
138
|
+
});
|
|
139
|
+
delete object3D._parent;
|
|
140
|
+
delete object3D.__transformAttached;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Keeps Object3D and Transform component in sync and manages parenting.
|
|
144
|
+
*
|
|
145
|
+
* @remarks
|
|
146
|
+
* - Replaces Object3D accessors with synced views for fast ECS writes.
|
|
147
|
+
* - Ensures entities without an explicit `parent` attach to the level root
|
|
148
|
+
* (or the scene for persistent objects).
|
|
149
|
+
* - If an Object3D is manually reparented under another entity, the component
|
|
150
|
+
* `parent` value is updated to match.
|
|
151
|
+
*
|
|
152
|
+
* @category Scene
|
|
153
|
+
*/
|
|
154
|
+
class TransformSystem extends createSystem({
|
|
155
|
+
transform: { required: [Transform] },
|
|
156
|
+
}) {
|
|
157
|
+
init() {
|
|
158
|
+
this.queries.transform.subscribe('qualify', attachToEntity);
|
|
159
|
+
this.queries.transform.subscribe('disqualify', detachFromEntity);
|
|
160
|
+
}
|
|
161
|
+
update() {
|
|
162
|
+
this.queries.transform.entities.forEach((entity) => {
|
|
163
|
+
var _a;
|
|
164
|
+
const object = entity.object3D;
|
|
165
|
+
if (!object || object === this.world.scene) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const parentEntity = entity.getValue(Transform, 'parent');
|
|
169
|
+
const parentObject = parentEntity === null || parentEntity === void 0 ? void 0 : parentEntity.object3D;
|
|
170
|
+
if (!parentObject) {
|
|
171
|
+
// no valid parent specified in Transform
|
|
172
|
+
if (((_a = object.parent) === null || _a === void 0 ? void 0 : _a.entityIdx) !== undefined) {
|
|
173
|
+
// check whether object is already parented under an entity, if so, update parent in Transform
|
|
174
|
+
Transform.data.parent[entity.index] = object.parent.entityIdx;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// Default parent: active level if entity has LevelTag; otherwise scene (persistent)
|
|
178
|
+
const targetEntity = entity.hasComponent(LevelTag)
|
|
179
|
+
? this.world.activeLevel.value
|
|
180
|
+
: this.world.sceneEntity;
|
|
181
|
+
targetEntity.object3D.add(object);
|
|
182
|
+
entity.setValue(Transform, 'parent', targetEntity);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else if (parentObject !== object.parent) {
|
|
186
|
+
// parent changed in Transform
|
|
187
|
+
parentObject.add(object);
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export { Transform, TransformSystem };
|
|
194
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sources":["../../src/transform/transform.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
declare global {
|
|
8
|
+
interface XRSession {
|
|
9
|
+
trackedSources?: XRInputSourceArray;
|
|
10
|
+
initiateRoomCapture?: () => Promise<undefined>;
|
|
11
|
+
}
|
|
12
|
+
interface XRFrame {
|
|
13
|
+
readonly detectedPlanes?: XRPlaneSet;
|
|
14
|
+
readonly detectedMeshes?: XRMeshSet;
|
|
15
|
+
fillPoses?: (space: ArrayLike<XRSpace>, baseSpace: XRSpace, transforms: Float32Array) => boolean;
|
|
16
|
+
fillJointRadii?: (space: ArrayLike<XRSpace>, radii: Float32Array) => boolean;
|
|
17
|
+
}
|
|
18
|
+
interface XRSystem {
|
|
19
|
+
offerSession?: (mode: XRSessionMode, options?: XRSessionInit) => Promise<XRSession>;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=webxr-augmentations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webxr-augmentations.d.ts","sourceRoot":"","sources":["../../src/types/webxr-augmentations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,SAAS;QACjB,cAAc,CAAC,EAAE,kBAAkB,CAAC;QACpC,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;KAChD;IAED,UAAU,OAAO;QACf,QAAQ,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;QACpC,SAAS,CAAC,EAAE,CACV,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,EACzB,SAAS,EAAE,OAAO,EAClB,UAAU,EAAE,YAAY,KACrB,OAAO,CAAC;QACb,cAAc,CAAC,EAAE,CACf,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,EACzB,KAAK,EAAE,YAAY,KAChB,OAAO,CAAC;KACd;IAED,UAAU,QAAQ;QAChB,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,aAAa,EACnB,OAAO,CAAC,EAAE,aAAa,KACpB,OAAO,CAAC,SAAS,CAAC,CAAC;KACzB;CACF;AAED,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { Component } from '@pmndrs/uikit';
|
|
8
|
+
import { Signal } from '@preact/signals-core';
|
|
9
|
+
import { Group } from 'three';
|
|
10
|
+
/**
|
|
11
|
+
* Lightweight DOM-like wrapper around a UIKit root `Component` that lives in the 3D scene.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* - Provides query helpers (`getElementById`, `getElementsByClassName`, `querySelector(All)`).
|
|
15
|
+
* - Maintains reactive target dimensions via {@link targetWidth}/{@link targetHeight} and
|
|
16
|
+
* scales the group to fit while preserving aspect ratio.
|
|
17
|
+
* - Intended to be attached to an entity's `object3D` in world space or to the `camera` for
|
|
18
|
+
* screen‑space UI. Use together with {@link PanelUISystem} and {@link ScreenSpaceUISystem}.
|
|
19
|
+
*
|
|
20
|
+
* @category UI
|
|
21
|
+
*/
|
|
22
|
+
export declare class UIKitDocument extends Group {
|
|
23
|
+
private elementMap;
|
|
24
|
+
private classMap;
|
|
25
|
+
private _rootElement;
|
|
26
|
+
private _abortController;
|
|
27
|
+
/** Reactive target width in meters. Set via {@link setTargetDimensions}. */
|
|
28
|
+
readonly targetWidth: Signal<number>;
|
|
29
|
+
/** Reactive target height in meters. Set via {@link setTargetDimensions}. */
|
|
30
|
+
readonly targetHeight: Signal<number>;
|
|
31
|
+
/**
|
|
32
|
+
* Create a document backed by a UIKit root component.
|
|
33
|
+
* @param rootComponent The root `Component` produced by `@pmndrs/uikitml` `interpret()`.
|
|
34
|
+
*/
|
|
35
|
+
constructor(rootComponent: Component<any>);
|
|
36
|
+
/**
|
|
37
|
+
* Return the first element with a matching `id` (UIKit property).
|
|
38
|
+
* @param id The element identifier without the `#` prefix.
|
|
39
|
+
*/
|
|
40
|
+
getElementById(id: string): Component<any> | null;
|
|
41
|
+
/**
|
|
42
|
+
* Return all elements that include `className` in their class list.
|
|
43
|
+
* @param className The class without the preceding dot.
|
|
44
|
+
*/
|
|
45
|
+
getElementsByClassName(className: string): Component<any>[];
|
|
46
|
+
/**
|
|
47
|
+
* Return the first element matching a simple CSS‑like selector.
|
|
48
|
+
*
|
|
49
|
+
* @remarks
|
|
50
|
+
* Supported selectors:
|
|
51
|
+
* - `#id`
|
|
52
|
+
* - `.class`
|
|
53
|
+
* - Descendant combinations, e.g. `#parent .child`
|
|
54
|
+
*/
|
|
55
|
+
querySelector(selector: string): Component<any> | null;
|
|
56
|
+
/**
|
|
57
|
+
* Return all elements matching a simple CSS‑like selector. See {@link querySelector}.
|
|
58
|
+
*/
|
|
59
|
+
querySelectorAll(selector: string): Component<any>[];
|
|
60
|
+
/** Parse descendant selectors like `#parent .child`. */
|
|
61
|
+
private parseDescendantSelector;
|
|
62
|
+
/** Find all descendants of a parent that match a selector. */
|
|
63
|
+
private findDescendants;
|
|
64
|
+
/** Recursively search for descendants matching a selector. */
|
|
65
|
+
private searchDescendants;
|
|
66
|
+
/** Check if a component matches a simple selector (`#id` or `.class`). */
|
|
67
|
+
private matchesSelector;
|
|
68
|
+
/**
|
|
69
|
+
* Check if `element` is a descendant of `ancestor`.
|
|
70
|
+
* @returns `true` if `ancestor` appears in the parent chain of `element`.
|
|
71
|
+
*/
|
|
72
|
+
isDescendantOf(element: Component<any>, ancestor: Component<any>): boolean;
|
|
73
|
+
/** Convenience for `querySelectorAll("${parent} ${child}")`. */
|
|
74
|
+
querySelectorAllWithin(parentSelector: string, childSelector: string): Component<any>[];
|
|
75
|
+
/** Convenience for the first match of `querySelectorAllWithin`. */
|
|
76
|
+
querySelectorWithin(parentSelector: string, childSelector: string): Component<any> | null;
|
|
77
|
+
/** Set up reactivity that rescales the group when size or target changes. */
|
|
78
|
+
private setupReactiveResizing;
|
|
79
|
+
/** Compute uniform scale to fit the target width/height while preserving aspect ratio. */
|
|
80
|
+
private updateScaling;
|
|
81
|
+
/**
|
|
82
|
+
* Set desired dimensions for the UI in meters. The document computes a uniform scale
|
|
83
|
+
* that fits these constraints while preserving aspect ratio.
|
|
84
|
+
* @param width Target width in meters.
|
|
85
|
+
* @param height Target height in meters.
|
|
86
|
+
*/
|
|
87
|
+
setTargetDimensions(width: number, height: number): void;
|
|
88
|
+
/**
|
|
89
|
+
* Current intrinsic size of the UIKit root component (in UIKit units, centimeters),
|
|
90
|
+
* if available from the underlying component's `size` signal.
|
|
91
|
+
*/
|
|
92
|
+
get computedSize(): {
|
|
93
|
+
width: number;
|
|
94
|
+
height: number;
|
|
95
|
+
} | null;
|
|
96
|
+
/** Return the most recently requested target size in meters. */
|
|
97
|
+
get targetSize(): {
|
|
98
|
+
width: number;
|
|
99
|
+
height: number;
|
|
100
|
+
};
|
|
101
|
+
/** The root UIKit component for this document. */
|
|
102
|
+
get rootElement(): Component<any>;
|
|
103
|
+
/**
|
|
104
|
+
* Dispose of internal resources and detach children. Safe to call multiple times.
|
|
105
|
+
*/
|
|
106
|
+
dispose(): void;
|
|
107
|
+
/** String summary useful for debugging. */
|
|
108
|
+
toString(): string;
|
|
109
|
+
/** Index IDs and classes for DOM‑like queries. */
|
|
110
|
+
private indexElements;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/ui/document.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAU,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAY,MAAM,OAAO,CAAC;AAExC;;;;;;;;;;;GAWG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,YAAY,CAAiB;IACrC,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAa;IACjD,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAa;IAElD;;;OAGG;gBACS,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC;IAUzC;;;OAGG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI;IAIjD;;;OAGG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE;IAI3D;;;;;;;;OAQG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI;IAKtD;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE;IAkBpD,wDAAwD;IACxD,OAAO,CAAC,uBAAuB;IA4B/B,8DAA8D;IAC9D,OAAO,CAAC,eAAe;IASvB,8DAA8D;IAC9D,OAAO,CAAC,iBAAiB;IAgBzB,0EAA0E;IAC1E,OAAO,CAAC,eAAe;IAsBvB;;;OAGG;IACH,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO;IAW1E,gEAAgE;IAChE,sBAAsB,CACpB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,SAAS,CAAC,GAAG,CAAC,EAAE;IAGnB,mEAAmE;IACnE,mBAAmB,CACjB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,MAAM,GACpB,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI;IAGxB,6EAA6E;IAC7E,OAAO,CAAC,qBAAqB;IAqB7B,0FAA0F;IAC1F,OAAO,CAAC,aAAa;IAiCrB;;;;;OAKG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAKxD;;;OAGG;IACH,IAAI,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAS3D;IAED,gEAAgE;IAChE,IAAI,UAAU,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAKlD;IAED,kDAAkD;IAClD,IAAI,WAAW,IAAI,SAAS,CAAC,GAAG,CAAC,CAEhC;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;IAiBf,2CAA2C;IAC3C,QAAQ,IAAI,MAAM;IAQlB,kDAAkD;IAClD,OAAO,CAAC,aAAa;CA+BtB"}
|