@needle-tools/engine 5.1.0-alpha.1 → 5.1.0-canary.0d9f44e

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 (162) hide show
  1. package/.needle/generated/needle-bindings.gen.d.ts +5 -0
  2. package/components.needle.json +1 -1
  3. package/dist/{gltf-progressive-DJBMx-zB.umd.cjs → gltf-progressive-BmblPzFj.umd.cjs} +4 -4
  4. package/dist/{gltf-progressive-BryRjllq.min.js → gltf-progressive-CN_mbb66.min.js} +2 -2
  5. package/dist/{gltf-progressive-Cl167Vjx.js → gltf-progressive-DUlhxdv4.js} +5 -2
  6. package/dist/{needle-engine.bundle-BGyKqxBH.js → needle-engine.bundle-B35n_IHX.js} +8736 -8500
  7. package/dist/{needle-engine.bundle-DzVx9Z8D.umd.cjs → needle-engine.bundle-CDj15wRB.umd.cjs} +164 -164
  8. package/dist/{needle-engine.bundle-CiYtOO2O.min.js → needle-engine.bundle-D5zzggEG.min.js} +164 -164
  9. package/dist/needle-engine.d.ts +140 -22
  10. package/dist/needle-engine.js +172 -170
  11. package/dist/needle-engine.min.js +1 -1
  12. package/dist/needle-engine.umd.cjs +1 -1
  13. package/dist/{postprocessing-B_9sKVU7.min.js → postprocessing-B571qGWR.min.js} +34 -34
  14. package/dist/{postprocessing-WDc9WwI3.js → postprocessing-CfrLAbLX.js} +0 -1
  15. package/dist/{postprocessing-B2wb6pzI.umd.cjs → postprocessing-CiGkAeM9.umd.cjs} +17 -17
  16. package/dist/three-examples.js +4289 -3778
  17. package/dist/three-examples.min.js +301 -14
  18. package/dist/three-examples.umd.cjs +301 -14
  19. package/dist/{vendor-CAcsI0eU.js → vendor-BFrMaK9q.js} +8983 -9136
  20. package/dist/vendor-CJmyOrCq.min.js +1116 -0
  21. package/dist/vendor-DkMW3WY4.umd.cjs +1116 -0
  22. package/lib/engine/api.d.ts +12 -0
  23. package/lib/engine/api.js +2 -0
  24. package/lib/engine/api.js.map +1 -1
  25. package/lib/engine/debug/debug_environment.js +1 -1
  26. package/lib/engine/debug/debug_environment.js.map +1 -1
  27. package/lib/engine/engine_application.js +8 -6
  28. package/lib/engine/engine_application.js.map +1 -1
  29. package/lib/engine/engine_constants.js +6 -0
  30. package/lib/engine/engine_constants.js.map +1 -1
  31. package/lib/engine/engine_context.d.ts +31 -2
  32. package/lib/engine/engine_context.js +43 -2
  33. package/lib/engine/engine_context.js.map +1 -1
  34. package/lib/engine/engine_context_registry.js +1 -1
  35. package/lib/engine/engine_context_registry.js.map +1 -1
  36. package/lib/engine/engine_init.js +5 -0
  37. package/lib/engine/engine_init.js.map +1 -1
  38. package/lib/engine/engine_input.d.ts +3 -2
  39. package/lib/engine/engine_input.js +3 -2
  40. package/lib/engine/engine_input.js.map +1 -1
  41. package/lib/engine/engine_license.d.ts +2 -0
  42. package/lib/engine/engine_license.js +25 -15
  43. package/lib/engine/engine_license.js.map +1 -1
  44. package/lib/engine/engine_lifecycle_functions_internal.js +5 -0
  45. package/lib/engine/engine_lifecycle_functions_internal.js.map +1 -1
  46. package/lib/engine/engine_networking_blob.d.ts +1 -1
  47. package/lib/engine/engine_networking_blob.js +5 -11
  48. package/lib/engine/engine_networking_blob.js.map +1 -1
  49. package/lib/engine/engine_physics_rapier.js +0 -1
  50. package/lib/engine/engine_physics_rapier.js.map +1 -1
  51. package/lib/engine/engine_pmrem.js +2 -2
  52. package/lib/engine/engine_pmrem.js.map +1 -1
  53. package/lib/engine/engine_scenedata.d.ts +34 -0
  54. package/lib/engine/engine_scenedata.js +135 -0
  55. package/lib/engine/engine_scenedata.js.map +1 -0
  56. package/lib/engine/engine_ssr.d.ts +18 -0
  57. package/lib/engine/engine_ssr.js +40 -0
  58. package/lib/engine/engine_ssr.js.map +1 -0
  59. package/lib/engine/engine_three_utils.d.ts +14 -7
  60. package/lib/engine/engine_three_utils.js +14 -7
  61. package/lib/engine/engine_three_utils.js.map +1 -1
  62. package/lib/engine/engine_types.d.ts +2 -0
  63. package/lib/engine/engine_types.js.map +1 -1
  64. package/lib/engine/engine_utils.js +2 -0
  65. package/lib/engine/engine_utils.js.map +1 -1
  66. package/lib/engine/engine_utils_hash.d.ts +9 -0
  67. package/lib/engine/engine_utils_hash.js +112 -0
  68. package/lib/engine/engine_utils_hash.js.map +1 -0
  69. package/lib/engine/webcomponents/logo-element.d.ts +10 -1
  70. package/lib/engine/webcomponents/logo-element.js +2 -1
  71. package/lib/engine/webcomponents/logo-element.js.map +1 -1
  72. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +12 -4
  73. package/lib/engine/webcomponents/needle menu/needle-menu.js +2 -1
  74. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  75. package/lib/engine/webcomponents/needle-button.d.ts +15 -1
  76. package/lib/engine/webcomponents/needle-button.js +2 -1
  77. package/lib/engine/webcomponents/needle-button.js.map +1 -1
  78. package/lib/engine/webcomponents/needle-engine.d.ts +7 -1
  79. package/lib/engine/webcomponents/needle-engine.js +2 -1
  80. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  81. package/lib/engine/xr/NeedleXRSession.js +1 -1
  82. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  83. package/lib/engine-components/Light.d.ts +25 -8
  84. package/lib/engine-components/Light.js +132 -27
  85. package/lib/engine-components/Light.js.map +1 -1
  86. package/lib/engine-components/RigidBody.js +3 -3
  87. package/lib/engine-components/RigidBody.js.map +1 -1
  88. package/lib/engine-components/SceneSwitcher.js +2 -0
  89. package/lib/engine-components/SceneSwitcher.js.map +1 -1
  90. package/lib/engine-components/postprocessing/Effects/BloomEffect.d.ts +1 -1
  91. package/lib/engine-components/postprocessing/Effects/Sharpening.js +1 -2
  92. package/lib/engine-components/postprocessing/Effects/Sharpening.js.map +1 -1
  93. package/lib/engine-components/postprocessing/PostProcessingHandler.js +5 -6
  94. package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
  95. package/lib/engine-components/web/ScrollFollow.d.ts +0 -1
  96. package/lib/engine-components/web/ScrollFollow.js +3 -2
  97. package/lib/engine-components/web/ScrollFollow.js.map +1 -1
  98. package/lib/needle-engine.d.ts +1 -0
  99. package/lib/needle-engine.js +1 -0
  100. package/lib/needle-engine.js.map +1 -1
  101. package/package.json +7 -5
  102. package/plugins/dts-generator/dts.codegen.js +334 -0
  103. package/plugins/dts-generator/dts.scan.js +99 -0
  104. package/plugins/dts-generator/dts.writer.js +59 -0
  105. package/plugins/dts-generator/glb.discovery.js +279 -0
  106. package/plugins/dts-generator/glb.extractor.js +215 -0
  107. package/plugins/dts-generator/glb.reader.js +167 -0
  108. package/plugins/dts-generator/index.js +36 -0
  109. package/plugins/dts-generator/manifest.types.js +174 -0
  110. package/plugins/types/index.d.ts +2 -1
  111. package/plugins/types/needle-bindings.d.ts +30 -0
  112. package/plugins/types/userconfig.d.ts +21 -2
  113. package/plugins/vite/asap.js +1 -1
  114. package/plugins/vite/dependency-watcher.d.ts +2 -2
  115. package/plugins/vite/dependency-watcher.js +3 -4
  116. package/plugins/vite/drop.d.ts +2 -2
  117. package/plugins/vite/drop.js +3 -4
  118. package/plugins/vite/dts-generator.d.ts +7 -0
  119. package/plugins/vite/dts-generator.js +191 -0
  120. package/plugins/vite/index.d.ts +10 -3
  121. package/plugins/vite/index.js +27 -10
  122. package/plugins/vite/logging.js +2 -2
  123. package/plugins/vite/meta.js +4 -2
  124. package/plugins/vite/poster.d.ts +2 -2
  125. package/plugins/vite/poster.js +3 -5
  126. package/plugins/vite/reload.d.ts +2 -2
  127. package/plugins/vite/reload.js +5 -5
  128. package/src/engine/api.ts +15 -1
  129. package/src/engine/debug/debug_environment.ts +1 -1
  130. package/src/engine/engine_application.ts +8 -6
  131. package/src/engine/engine_constants.ts +11 -6
  132. package/src/engine/engine_context.ts +47 -2
  133. package/src/engine/engine_context_registry.ts +1 -1
  134. package/src/engine/engine_init.ts +4 -0
  135. package/src/engine/engine_input.ts +3 -2
  136. package/src/engine/engine_license.ts +23 -19
  137. package/src/engine/engine_lifecycle_functions_internal.ts +7 -0
  138. package/src/engine/engine_networking_blob.ts +5 -11
  139. package/src/engine/engine_physics_rapier.ts +0 -3
  140. package/src/engine/engine_pmrem.ts +3 -3
  141. package/src/engine/engine_scenedata.ts +133 -0
  142. package/src/engine/engine_ssr.ts +48 -0
  143. package/src/engine/engine_three_utils.ts +15 -7
  144. package/src/engine/engine_types.ts +2 -0
  145. package/src/engine/engine_utils.ts +1 -0
  146. package/src/engine/engine_utils_hash.ts +65 -0
  147. package/src/engine/webcomponents/logo-element.ts +10 -1
  148. package/src/engine/webcomponents/needle menu/needle-menu.ts +11 -2
  149. package/src/engine/webcomponents/needle-button.ts +15 -1
  150. package/src/engine/webcomponents/needle-engine.ts +8 -1
  151. package/src/engine/xr/NeedleXRSession.ts +1 -1
  152. package/src/engine-components/Light.ts +132 -27
  153. package/src/engine-components/RigidBody.ts +3 -3
  154. package/src/engine-components/SceneSwitcher.ts +1 -0
  155. package/src/engine-components/postprocessing/Effects/BloomEffect.ts +1 -1
  156. package/src/engine-components/postprocessing/Effects/Sharpening.ts +1 -2
  157. package/src/engine-components/postprocessing/PostProcessingHandler.ts +4 -8
  158. package/src/engine-components/web/ScrollFollow.ts +2 -2
  159. package/src/needle-engine.ts +2 -0
  160. package/src/vite-env.d.ts +16 -0
  161. package/dist/vendor-CEM38hLE.umd.cjs +0 -1116
  162. package/dist/vendor-HRlxIBga.min.js +0 -1116
@@ -84,6 +84,7 @@ import { RawShaderMaterial } from 'three';
84
84
  import { Ray } from 'three';
85
85
  import { Raycaster } from 'three';
86
86
  import { Scene } from 'three';
87
+ import { SceneData } from '../../plugins/types/needle-bindings.d.ts';
87
88
  import { ShaderMaterial } from 'three';
88
89
  import { ShapeJSON } from 'three.quarks';
89
90
  import { SkinnedMesh } from 'three';
@@ -2192,7 +2193,7 @@ export declare namespace BlobStorage {
2192
2193
  /**
2193
2194
  * Generates an md5 hash from a given buffer
2194
2195
  * @param buffer The buffer to hash
2195
- * @returns The md5 hash
2196
+ * @returns The md5 hash as a hex string
2196
2197
  */
2197
2198
  export function hashMD5(buffer: ArrayBuffer): string;
2198
2199
  export function hashMD5_Base64(buffer: ArrayBuffer): string;
@@ -4458,6 +4459,30 @@ export declare class Context implements IContext {
4458
4459
  * The main camera of the scene - this camera is used for rendering
4459
4460
  * Use `setCurrentCamera` for updating the main camera.
4460
4461
  */
4462
+ /**
4463
+ * Typed proxy providing direct access to scene components by node and component name.
4464
+ * Types are auto-generated from your GLB assets by the `needle:dts-generator` Vite plugin
4465
+ * and written to `src/generated/needle-bindings.d.ts` on every dev-server start and GLB change.
4466
+ *
4467
+ * Each property access traverses the live scene graph on demand — no caching, always fresh.
4468
+ * This is a convenience shorthand for `getComponent` lookups; the same result can be
4469
+ * achieved manually via `scene.getObjectByName(name)` + `getComponent(node, Type)`.
4470
+ *
4471
+ * @example
4472
+ * // Toggle auto-rotate on the orbit camera
4473
+ * ctx.sceneData.Camera.OrbitControls.autoRotate = true;
4474
+ *
4475
+ * @example
4476
+ * // Change the background color
4477
+ * ctx.sceneData.Camera.Camera.backgroundColor = new RGBAColor(1, 0, 0, 1);
4478
+ *
4479
+ * @example
4480
+ * // Equivalent manual approach (without sceneData)
4481
+ * const node = ctx.scene.getObjectByName("Camera");
4482
+ * const orbit = getComponent(node, OrbitControls);
4483
+ * if (orbit) orbit.autoRotate = true;
4484
+ */
4485
+ get sceneData(): SceneData;
4461
4486
  get mainCamera(): Camera_2;
4462
4487
  /** Set the main camera of the scene. If set to null the camera of the {@link mainCameraComponent} will be used - this camera is used for rendering */
4463
4488
  set mainCamera(cam: Camera_2 | null);
@@ -4479,8 +4504,12 @@ export declare class Context implements IContext {
4479
4504
  connection: NetworkConnection;
4480
4505
  /** @deprecated AssetDatabase is deprecated */
4481
4506
  assets: AssetDatabase;
4482
- /** The main light in the scene */
4483
- mainLight: ILight | null;
4507
+ /** All registered lights in the scene, maintained by the Light component */
4508
+ readonly lights: Set<ILight>;
4509
+ /** The brightest registered directional light, or null if none are registered
4510
+ * @see lights
4511
+ */
4512
+ get mainLight(): ILight | null;
4484
4513
  /** @deprecated Use sceneLighting */
4485
4514
  get rendererData(): RendererData;
4486
4515
  /** Access the scene lighting manager to control lighting settings in the context */
@@ -7130,6 +7159,20 @@ export declare function getPeerOptions(): PeerJSOption | undefined;
7130
7159
 
7131
7160
  export declare function getResourceUserCount(object: object): number | undefined;
7132
7161
 
7162
+ /**
7163
+ * Returns a lazily-resolved proxy typed as {@link SceneData}.
7164
+ * The proxy is cached per context — each context gets exactly one instance.
7165
+ *
7166
+ * Shape mirrors the generated `needle-bindings.gen.d.ts`:
7167
+ * ctx.sceneData.MyGlb.Camera.$components.OrbitControls.autoRotate = true;
7168
+ * ctx.sceneData.MyGlb.Camera.$object // → THREE.Camera
7169
+ * ctx.sceneData.MyGlb.UI.Button.$components.Button // → Needle Button component
7170
+ *
7171
+ * GLB name is ignored at runtime (scene is already loaded).
7172
+ * Node lookup starts at the scene root.
7173
+ */
7174
+ export declare function getSceneData(ctx: IContext): SceneData;
7175
+
7133
7176
  export declare function getTempColor(color?: Color): Color;
7134
7177
 
7135
7178
  /**
@@ -7460,13 +7503,20 @@ export declare class GraphicRaycaster extends ObjectRaycaster {
7460
7503
  * Utility class to perform various graphics operations like copying textures to canvas
7461
7504
  */
7462
7505
  export declare class Graphics {
7463
- private static readonly planeGeometry;
7464
- private static readonly renderer;
7465
- private static readonly perspectiveCam;
7466
- private static readonly orthographicCam;
7467
- private static readonly scene;
7468
- private static readonly blitMaterial;
7469
- private static readonly mesh;
7506
+ private static _planeGeometry;
7507
+ private static _renderer;
7508
+ private static _perspectiveCam;
7509
+ private static _orthographicCam;
7510
+ private static _scene;
7511
+ private static _blitMaterial;
7512
+ private static _mesh;
7513
+ private static get planeGeometry();
7514
+ private static get renderer();
7515
+ private static get perspectiveCam();
7516
+ private static get orthographicCam();
7517
+ private static get scene();
7518
+ private static get blitMaterial();
7519
+ private static get mesh();
7470
7520
  /**
7471
7521
  * Copy a texture to a new texture
7472
7522
  * @param texture the texture to copy
@@ -7930,6 +7980,9 @@ export declare class HoverAnimation extends Component {
7930
7980
  private playHover;
7931
7981
  }
7932
7982
 
7983
+ /** SSR-safe base class for web components. */
7984
+ declare const HTMLElementBase: typeof HTMLElement;
7985
+
7933
7986
  export declare type IAnimationComponent = Pick<IComponent, "gameObject"> & {
7934
7987
  isAnimationComponent: boolean;
7935
7988
  addClip?(clip: AnimationClip): any;
@@ -8189,6 +8242,8 @@ declare interface ILayoutGroup extends IComponent {
8189
8242
  export declare interface ILight extends IComponent {
8190
8243
  intensity: number;
8191
8244
  color: Color;
8245
+ /** The type of light as a lowercase string: `"directional"`, `"point"`, `"spot"` */
8246
+ readonly type: "directional" | "point" | "spot";
8192
8247
  }
8193
8248
 
8194
8249
  declare interface ILightDataRegistry {
@@ -9699,6 +9754,9 @@ declare const enum KeyboardEnumType {
9699
9754
  KeyPressed = "keypress"
9700
9755
  }
9701
9756
 
9757
+ /** SSR-safe base class for keyboard events. */
9758
+ declare const KeyboardEventBase: typeof KeyboardEvent;
9759
+
9702
9760
  declare type KeyboardEventListener = (evt: NEKeyboardEvent) => void;
9703
9761
 
9704
9762
  declare type KeyboardEventNames = EnumToPrimitiveUnion<KeyboardEnumType>;
@@ -9823,10 +9881,13 @@ declare type LifecycleMethodOptions = {
9823
9881
  */
9824
9882
  export declare class Light extends Component implements ILight {
9825
9883
  /**
9826
- * The type of light (spot, directional, point, etc.)
9827
- * Can not be changed at runtime.
9884
+ * The type of light as a lowercase string: `"directional"`, `"point"`, `"spot"`.
9885
+ * Implements {@link ILight.type}. Can not be changed at runtime.
9828
9886
  */
9829
- private type;
9887
+ get type(): ILight["type"];
9888
+ /** Numeric LightType serialized from Unity/Blender — converts to string on write */
9889
+ set type(value: LightType | ILight["type"]);
9890
+ private _type;
9830
9891
  /**
9831
9892
  * The maximum distance the light affects.
9832
9893
  * Only applicable for spot and point lights.
@@ -9906,6 +9967,19 @@ export declare class Light extends Component implements ILight {
9906
9967
  get shadowResolution(): number;
9907
9968
  set shadowResolution(val: number);
9908
9969
  private _shadowResolution?;
9970
+ /**
9971
+ * Number of shadow cascade levels (only used when `useCascades` is true)
9972
+ */
9973
+ cascades: number;
9974
+ /**
9975
+ * Cascade split mode (only used when `useCascades` is true):
9976
+ * - `practical` — balanced (default, recommended)
9977
+ * - `logarithmic` — more resolution close up
9978
+ * - `uniform` — equal splits
9979
+ */
9980
+ cascadeMode: "practical" | "logarithmic" | "uniform";
9981
+ private _csm?;
9982
+ private _csmHelper?;
9909
9983
  /**
9910
9984
  * Whether this light's illumination is entirely baked into lightmaps
9911
9985
  */
@@ -9927,16 +10001,12 @@ export declare class Light extends Component implements ILight {
9927
10001
  awake(): void;
9928
10002
  onEnable(): void;
9929
10003
  onDisable(): void;
10004
+ onBeforeRender(): void;
9930
10005
  /**
9931
10006
  * Creates the appropriate three.js light based on the configured light type
9932
10007
  * and applies all settings like shadows, intensity, and color.
9933
10008
  */
9934
10009
  createLight(): void;
9935
- /**
9936
- * Coroutine that updates the main light reference in the context
9937
- * if this directional light should be the main light
9938
- */
9939
- updateMainLightRoutine(): Generator<undefined, void, unknown>;
9940
10010
  /**
9941
10011
  * Controls whether the renderer's shadow map type can be changed when soft shadows are used
9942
10012
  */
@@ -9952,6 +10022,11 @@ export declare class Light extends Component implements ILight {
9952
10022
  * When the rig is scaled, world-space distances change proportionally
9953
10023
  * causing lights to appear brighter or dimmer due to distance falloff. */
9954
10024
  private applyXRScale;
10025
+ /**
10026
+ * Creates and initializes a CSM instance for this directional light.
10027
+ * CSM manages its own cascade DirectionalLights internally.
10028
+ */
10029
+ private createCSM;
9955
10030
  /**
9956
10031
  * Configures a directional light by adding and positioning its target
9957
10032
  * @param dirLight The directional light to set up
@@ -9985,6 +10060,25 @@ declare enum LightShadows {
9985
10060
  Soft = 2
9986
10061
  }
9987
10062
 
10063
+ /**
10064
+ * Defines the type of light in a scene.
10065
+ * @see {@link Light} for configuring light properties and behavior
10066
+ */
10067
+ declare enum LightType {
10068
+ /** Spot light that emits light in a cone shape */
10069
+ Spot = 0,
10070
+ /** Directional light that emits parallel light rays in a specific direction */
10071
+ Directional = 1,
10072
+ /** Point light that emits light in all directions from a single point */
10073
+ Point = 2,
10074
+ /** Area light */
10075
+ Area = 3,
10076
+ /** Rectangle shaped area light that only affects baked lightmaps and light probes */
10077
+ Rectangle = 3,
10078
+ /** Disc shaped area light that only affects baked lightmaps and light probes */
10079
+ Disc = 4
10080
+ }
10081
+
9988
10082
  export declare class LimitVelocityOverLifetimeModule {
9989
10083
  enabled: boolean;
9990
10084
  dampen: number;
@@ -10972,6 +11066,25 @@ export declare type MouseButtonName = "left" | "right" | "middle";
10972
11066
 
10973
11067
  /* Excluded from this release type: nameofFactory */
10974
11068
 
11069
+ /**
11070
+ * Global proxy for the primary Needle Engine context.
11071
+ * Resolves lazily on property access via `ContextRegistry.Current` —
11072
+ * safe to import at module level, including in SSR environments
11073
+ * (returns a silent error proxy when no context is active).
11074
+ *
11075
+ * Use this outside of Needle component lifecycle (e.g. in Svelte/React/Vue
11076
+ * components, button handlers, or vanilla JS) instead of threading `ctx` around.
11077
+ *
11078
+ * For multiple `<needle-engine>` elements on the same page, use `ctx` directly.
11079
+ *
11080
+ * @example
11081
+ * import { needle } from "@needle-tools/engine";
11082
+ * button.onclick = () => {
11083
+ * needle.sceneData.Camera.OrbitControls.autoRotate = true;
11084
+ * };
11085
+ */
11086
+ export declare const needle: IContext;
11087
+
10975
11088
  declare class NEEDLE_components implements GLTFLoaderPlugin {
10976
11089
  get name(): string;
10977
11090
  exportContext: {
@@ -11105,7 +11218,7 @@ export { NEEDLE_progressive }
11105
11218
  * @see {@link NeedleEngineWebComponent} for the main &lt;needle-engine&gt; element
11106
11219
  * @see {@link NeedleMenu} for the built-in menu component that can display similar buttons
11107
11220
  */
11108
- export declare class NeedleButtonElement extends HTMLElement {
11221
+ export declare class NeedleButtonElement extends HTMLElementBase {
11109
11222
  #private;
11110
11223
  static observedAttributes: string[];
11111
11224
  constructor();
@@ -11245,7 +11358,7 @@ export declare namespace NeedleEngineModelLoader {
11245
11358
  * @see {@link NeedleButtonElement} for adding AR/VR/Quicklook buttons via &lt;needle-button&gt;
11246
11359
  * @see {@link NeedleMenu} for the built-in menu configuration component
11247
11360
  */
11248
- export declare class NeedleEngineWebComponent extends HTMLElement implements INeedleEngineComponent {
11361
+ export declare class NeedleEngineWebComponent extends HTMLElementBase implements INeedleEngineComponent {
11249
11362
  static get observedAttributes(): string[];
11250
11363
  get loadingProgress01(): number;
11251
11364
  get loadingFinished(): boolean;
@@ -12218,7 +12331,7 @@ export declare class NeedleXRUtils {
12218
12331
  }): void;
12219
12332
  }
12220
12333
 
12221
- export declare class NEKeyboardEvent extends KeyboardEvent {
12334
+ export declare class NEKeyboardEvent extends KeyboardEventBase {
12222
12335
  source?: Event;
12223
12336
  constructor(type: InputEvents, source: Event, init: KeyboardEventInit);
12224
12337
  stopImmediatePropagation(): void;
@@ -12242,7 +12355,7 @@ export declare class NEKeyboardEvent extends KeyboardEvent {
12242
12355
  * @see {@link Input} for the input management system
12243
12356
  * @see {@link PointerType} for available pointer types
12244
12357
  */
12245
- export declare class NEPointerEvent extends PointerEvent {
12358
+ export declare class NEPointerEvent extends PointerEventBase {
12246
12359
  /**
12247
12360
  * Spatial input data
12248
12361
  */
@@ -15074,6 +15187,9 @@ export declare class OrbitControls extends Component implements ICameraControlle
15074
15187
  PointerMove = "pointermove"
15075
15188
  }
15076
15189
 
15190
+ /** SSR-safe base class for pointer events. */
15191
+ declare const PointerEventBase: typeof PointerEvent;
15192
+
15077
15193
  /** [PointerEventData](https://engine.needle.tools/docs/api/PointerEventData) This pointer event data object is passed to all event receivers that are currently active
15078
15194
  * It contains hit information if an object was hovered or clicked
15079
15195
  * If the event is received in onPointerDown or onPointerMove, you can call `setPointerCapture` to receive onPointerMove events even when the pointer has left the object until you call `releasePointerCapture` or when the pointerUp event happens
@@ -16961,6 +17077,8 @@ export declare class OrbitControls extends Component implements ICameraControlle
16961
17077
  */
16962
17078
  declare type ScaleClipType = "linear" | "spring";
16963
17079
 
17080
+ export { SceneData }
17081
+
16964
17082
  export declare class SceneLightSettings extends Component {
16965
17083
  ambientMode: AmbientMode;
16966
17084
  ambientLight?: Color;