@quick-threejs/reactive 0.1.24 → 0.1.26

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 (76) hide show
  1. package/dist/app.module-Xeth1BSd.js +34 -0
  2. package/dist/app.module-ZQDNY2JF.mjs +6121 -0
  3. package/dist/common/blueprints/index.d.ts +2 -0
  4. package/dist/common/blueprints/props.blueprint.d.ts +105 -0
  5. package/dist/common/blueprints/proxy.blueprint.d.ts +96 -0
  6. package/dist/common/enums/index.d.ts +0 -1
  7. package/dist/common/index.d.ts +2 -2
  8. package/dist/common/interfaces/core.interface.d.ts +4 -5
  9. package/dist/common/interfaces/index.d.ts +2 -2
  10. package/dist/common/interfaces/loader.interface.d.ts +23 -0
  11. package/dist/common/interfaces/module.interface.d.ts +10 -2
  12. package/dist/common/{types/object.type.d.ts → interfaces/proxy-event.interface.d.ts} +6 -0
  13. package/dist/common/tokens/index.d.ts +2 -0
  14. package/dist/common/tokens/ioc.token.d.ts +1 -0
  15. package/dist/common/tokens/loader.token.d.ts +1 -0
  16. package/dist/core/app/app.controller.d.ts +5 -9
  17. package/dist/core/app/app.module.d.ts +23 -17
  18. package/dist/core/app/{app.component.d.ts → app.service.d.ts} +5 -3
  19. package/dist/core/app/app.util.d.ts +6 -0
  20. package/dist/core/app/camera/camera.controller.d.ts +4 -8
  21. package/dist/core/app/camera/camera.module.d.ts +6 -7
  22. package/dist/core/app/camera/{camera.component.d.ts → camera.service.d.ts} +4 -4
  23. package/dist/core/app/debug/debug.controller.d.ts +3 -4
  24. package/dist/core/app/debug/debug.module.d.ts +10 -8
  25. package/dist/core/app/debug/{debug.component.d.ts → debug.service.d.ts} +10 -10
  26. package/dist/core/app/loader/loader.controller.d.ts +5 -0
  27. package/dist/core/app/loader/loader.module.d.ts +16 -0
  28. package/dist/core/app/loader/loader.service.d.ts +8 -0
  29. package/dist/core/app/renderer/renderer.controller.d.ts +6 -8
  30. package/dist/core/app/renderer/renderer.module.d.ts +6 -8
  31. package/dist/core/app/renderer/renderer.service.d.ts +19 -0
  32. package/dist/core/app/sizes/sizes.controller.d.ts +5 -7
  33. package/dist/core/app/sizes/sizes.module.d.ts +4 -5
  34. package/dist/core/app/sizes/{sizes.component.d.ts → sizes.service.d.ts} +1 -1
  35. package/dist/core/app/timer/timer.controller.d.ts +18 -12
  36. package/dist/core/app/timer/timer.module.d.ts +22 -12
  37. package/dist/core/app/timer/timer.service.d.ts +10 -0
  38. package/dist/core/app/world/world.controller.d.ts +0 -3
  39. package/dist/core/app/world/world.module.d.ts +3 -6
  40. package/dist/core/app/world/{world.component.d.ts → world.service.d.ts} +1 -1
  41. package/dist/core/index.d.ts +0 -1
  42. package/dist/core/register/loader/loader.controller.d.ts +11 -0
  43. package/dist/core/register/loader/loader.module.d.ts +31 -0
  44. package/dist/core/register/loader/loader.service.d.ts +26 -0
  45. package/dist/core/register/register.controller.d.ts +5 -9
  46. package/dist/core/register/register.module.d.ts +23 -39
  47. package/dist/core/register/register.service.d.ts +9 -0
  48. package/dist/core/register/register.util.d.ts +8 -5
  49. package/dist/main.js +3 -12
  50. package/dist/main.mjs +1516 -1942
  51. package/dist/main.worker.d.ts +1 -1
  52. package/dist/worker.js +1 -3
  53. package/dist/worker.mjs +32 -315
  54. package/package.json +8 -5
  55. package/dist/app.module-Da11YIUG.js +0 -29
  56. package/dist/app.module-Dg_0i25D.mjs +0 -2640
  57. package/dist/common/enums/lifecycle.enum.d.ts +0 -10
  58. package/dist/common/interfaces/event.interface.d.ts +0 -10
  59. package/dist/common/interfaces/resource.interface.d.ts +0 -14
  60. package/dist/common/models/app-proxy-event-handler.model.d.ts +0 -32
  61. package/dist/common/models/index.d.ts +0 -7
  62. package/dist/common/models/launch-app-props.model.d.ts +0 -8
  63. package/dist/common/models/proxy-event-handler.model.d.ts +0 -19
  64. package/dist/common/models/proxy-event-observables.model.d.ts +0 -20
  65. package/dist/common/models/proxy-event-subjects.models.d.ts +0 -19
  66. package/dist/common/models/register-props.model.d.ts +0 -75
  67. package/dist/common/models/register-proxy-event-handler.model.d.ts +0 -17
  68. package/dist/common/types/index.d.ts +0 -1
  69. package/dist/core/app/app.module-worker.d.ts +0 -5
  70. package/dist/core/app/renderer/renderer.component.d.ts +0 -19
  71. package/dist/core/app/timer/timer.component.d.ts +0 -8
  72. package/dist/core/loader/loader.component.d.ts +0 -25
  73. package/dist/core/loader/loader.controller.d.ts +0 -9
  74. package/dist/core/loader/loader.module-worker.d.ts +0 -3
  75. package/dist/core/loader/loader.module.d.ts +0 -34
  76. package/dist/core/register/register.component.d.ts +0 -13
@@ -0,0 +1,2 @@
1
+ export * from './proxy.blueprint';
2
+ export * from './props.blueprint';
@@ -0,0 +1,105 @@
1
+ import { RegisterModule } from '../../core';
2
+ import { DefaultCameraType } from '../enums';
3
+ import { ContainerizedApp, Module, LoaderSource } from '../interfaces';
4
+ /**
5
+ * @description {@link RegisterModule} initialization properties.
6
+ */
7
+ export declare class RegisterPropsBlueprint {
8
+ /**
9
+ * @description The app worker logic location.
10
+ *
11
+ * @required
12
+ */
13
+ location: string;
14
+ /**
15
+ * @description Initialize the app on construct.
16
+ *
17
+ * @default true
18
+ */
19
+ initOnConstruct?: boolean;
20
+ /**
21
+ * @description App `canvas` element reference.
22
+ *
23
+ * @default undefined
24
+ */
25
+ canvas?: HTMLCanvasElement;
26
+ /**
27
+ * @description Set the `canvas` view in fullscreen and auto-resize it.
28
+ *
29
+ * @default true
30
+ */
31
+ fullScreen?: boolean;
32
+ /**
33
+ * Default used camera.
34
+ *
35
+ * @see {@link DefaultCameraType}
36
+ *
37
+ * @default DefaultCameraType.PERSPECTIVE
38
+ */
39
+ defaultCamera?: DefaultCameraType;
40
+ /**
41
+ * @description Start timer update on launch.
42
+ *
43
+ * @default true
44
+ */
45
+ startTimer?: boolean;
46
+ /**
47
+ * @description Resources to load.
48
+ *
49
+ * @default []
50
+ */
51
+ loaderDataSources?: LoaderSource[];
52
+ /**
53
+ * @description Will directly load the resources on initialization.
54
+ *
55
+ * @remark __This property depends on {@link RegisterPropsBlueprint.initOnConstruct initOnConstruct}__
56
+ *
57
+ * @default true
58
+ */
59
+ loadResourcesOnInit?: boolean;
60
+ /**
61
+ * @description Enable the debug mode
62
+ *
63
+ * @default undefined
64
+ */
65
+ enableDebug?: boolean;
66
+ /**
67
+ * Define the {@link THREE.AxesHelper} sizes.
68
+ *
69
+ * @remark __Deactivated if the value is `0` or `undefined`__
70
+ * @remark __This property depends on {@link RegisterPropsBlueprint.enableDebug enableDebug}__
71
+ *
72
+ * @default undefined
73
+ */
74
+ axesSizes?: number;
75
+ /**
76
+ * Define the {@link THREE.GridHelper} sizes.
77
+ *
78
+ * @remark __Deactivated if the value is `0` or `undefined`__
79
+ * @remark __This property depends on {@link RegisterPropsBlueprint.enableDebug enableDebug}__
80
+ *
81
+ * @default undefined
82
+ */
83
+ gridSizes?: number;
84
+ /**
85
+ * Display a mini perfective camera at the top right corner of the screen.
86
+ *
87
+ * @remark __This property depends on {@link RegisterPropsBlueprint.enableDebug enableDebug}__
88
+ *
89
+ * @default false
90
+ */
91
+ withMiniCamera?: boolean;
92
+ /**
93
+ * @description Handler called when the app is ready.
94
+ *
95
+ * @default undefined
96
+ */
97
+ onReady?: (app: ContainerizedApp<RegisterModule>) => unknown;
98
+ }
99
+ /**
100
+ * @description {@link AppModule} initialization properties.
101
+ */
102
+ export declare class LaunchAppProps<M extends Module> {
103
+ /** @description Handler triggered when the app is ready. */
104
+ onReady?: (workerApp: ContainerizedApp<M>) => unknown;
105
+ }
@@ -0,0 +1,96 @@
1
+ import { Observable, Subject } from 'rxjs';
2
+ import { ProxyEvent, ProxyEventHandlersImplementation, ProxyEventObservablesImplementation, ProxyEventSubjectsImplementation } from '../interfaces/proxy-event.interface';
3
+ export declare class ProxyEventSubjectsBlueprint implements ProxyEventSubjectsImplementation {
4
+ contextmenu$$: Subject<MouseEvent & ProxyEvent>;
5
+ resize$$: Subject<UIEvent & ProxyEvent>;
6
+ mousedown$$: Subject<PointerEvent & ProxyEvent>;
7
+ mousemove$$: Subject<PointerEvent & ProxyEvent>;
8
+ mouseup$$: Subject<PointerEvent & ProxyEvent>;
9
+ pointerdown$$: Subject<PointerEvent & ProxyEvent>;
10
+ pointermove$$: Subject<PointerEvent & ProxyEvent>;
11
+ pointercancel$$: Subject<PointerEvent & ProxyEvent>;
12
+ pointerup$$: Subject<PointerEvent & ProxyEvent>;
13
+ touchstart$$: Subject<TouchEvent & ProxyEvent>;
14
+ touchmove$$: Subject<TouchEvent & ProxyEvent>;
15
+ touchend$$: Subject<TouchEvent & ProxyEvent>;
16
+ wheel$$: Subject<WheelEvent & ProxyEvent>;
17
+ keydown$$: Subject<KeyboardEvent & ProxyEvent>;
18
+ }
19
+ export declare class ProxyEventObservablesBlueprint extends ProxyEventSubjectsBlueprint implements ProxyEventObservablesImplementation {
20
+ contextmenu$: Observable<MouseEvent & ProxyEvent>;
21
+ resize$: Observable<UIEvent & ProxyEvent>;
22
+ mousedown$: Observable<PointerEvent & ProxyEvent>;
23
+ mousemove$: Observable<PointerEvent & ProxyEvent>;
24
+ mouseup$: Observable<PointerEvent & ProxyEvent>;
25
+ pointerdown$: Observable<PointerEvent & ProxyEvent>;
26
+ pointermove$: Observable<PointerEvent & ProxyEvent>;
27
+ pointercancel$: Observable<PointerEvent & ProxyEvent>;
28
+ pointerup$: Observable<PointerEvent & ProxyEvent>;
29
+ touchstart$: Observable<TouchEvent & ProxyEvent>;
30
+ touchmove$: Observable<TouchEvent & ProxyEvent>;
31
+ touchend$: Observable<TouchEvent & ProxyEvent>;
32
+ wheel$: Observable<WheelEvent & ProxyEvent>;
33
+ keydown$: Observable<KeyboardEvent & ProxyEvent>;
34
+ }
35
+ export declare class ProxyEventHandlersBlueprint extends ProxyEventObservablesBlueprint implements ProxyEventHandlersImplementation {
36
+ contextmenu: (e: MouseEvent & ProxyEvent) => void;
37
+ resize: (e: UIEvent & ProxyEvent) => void;
38
+ mousedown: (e: PointerEvent & ProxyEvent) => void;
39
+ mousemove: (e: PointerEvent & ProxyEvent) => void;
40
+ mouseup: (e: PointerEvent & ProxyEvent) => void;
41
+ pointerdown: (e: PointerEvent & ProxyEvent) => void;
42
+ pointermove: (e: PointerEvent & ProxyEvent) => void;
43
+ pointercancel: (e: PointerEvent & ProxyEvent) => void;
44
+ pointerup: (e: PointerEvent & ProxyEvent) => void;
45
+ touchstart: (e: TouchEvent & ProxyEvent) => void;
46
+ touchmove: (e: TouchEvent & ProxyEvent) => void;
47
+ touchend: (e: TouchEvent & ProxyEvent) => void;
48
+ wheel: (e: WheelEvent & ProxyEvent) => void;
49
+ keydown: (e: KeyboardEvent & ProxyEvent) => void;
50
+ }
51
+ export declare class AppProxyEventHandlersBlueprint {
52
+ contextmenu$?: () => Observable<MouseEvent & ProxyEvent>;
53
+ resize$?: () => Observable<UIEvent & ProxyEvent>;
54
+ mousedown$?: () => Observable<PointerEvent & ProxyEvent>;
55
+ mousemove$?: () => Observable<PointerEvent & ProxyEvent>;
56
+ mouseup$?: () => Observable<PointerEvent & ProxyEvent>;
57
+ pointerdown$?: () => Observable<PointerEvent & ProxyEvent>;
58
+ pointermove$?: () => Observable<PointerEvent & ProxyEvent>;
59
+ pointercancel$?: () => Observable<PointerEvent & ProxyEvent>;
60
+ pointerup$?: () => Observable<PointerEvent & ProxyEvent>;
61
+ touchstart$?: () => Observable<TouchEvent & ProxyEvent>;
62
+ touchmove$?: () => Observable<TouchEvent & ProxyEvent>;
63
+ touchend$?: () => Observable<TouchEvent & ProxyEvent>;
64
+ wheel$?: () => Observable<WheelEvent & ProxyEvent>;
65
+ keydown$?: () => Observable<KeyboardEvent & ProxyEvent>;
66
+ contextmenu: (e: MouseEvent & ProxyEvent) => void;
67
+ resize: (e: UIEvent & ProxyEvent) => void;
68
+ mousedown: (e: PointerEvent & ProxyEvent) => void;
69
+ mousemove: (e: PointerEvent & ProxyEvent) => void;
70
+ mouseup: (e: PointerEvent & ProxyEvent) => void;
71
+ pointerdown: (e: PointerEvent & ProxyEvent) => void;
72
+ pointermove: (e: PointerEvent & ProxyEvent) => void;
73
+ pointercancel: (e: PointerEvent & ProxyEvent) => void;
74
+ pointerup: (e: PointerEvent & ProxyEvent) => void;
75
+ touchstart: (e: TouchEvent & ProxyEvent) => void;
76
+ touchmove: (e: TouchEvent & ProxyEvent) => void;
77
+ touchend: (e: TouchEvent & ProxyEvent) => void;
78
+ wheel: (e: WheelEvent & ProxyEvent) => void;
79
+ keydown: (e: KeyboardEvent & ProxyEvent) => void;
80
+ }
81
+ export declare class RegisterProxyEventHandlersBlueprint {
82
+ contextmenu$?: () => Observable<Event>;
83
+ resize$?: () => Observable<Event>;
84
+ mousedown$?: () => Observable<Event>;
85
+ mousemove$?: () => Observable<Event>;
86
+ mouseup$?: () => Observable<Event>;
87
+ pointerdown$?: () => Observable<Event>;
88
+ pointermove$?: () => Observable<Event>;
89
+ pointercancel$?: () => Observable<Event>;
90
+ pointerup$?: () => Observable<Event>;
91
+ touchstart$?: () => Observable<Event>;
92
+ touchmove$?: () => Observable<Event>;
93
+ touchend$?: () => Observable<Event>;
94
+ wheel$?: () => Observable<Event>;
95
+ keydown$?: () => Observable<Event>;
96
+ }
@@ -1,2 +1 @@
1
1
  export * from './camera.enum';
2
- export * from './lifecycle.enum';
@@ -1,5 +1,5 @@
1
1
  export * from './constants';
2
2
  export * from './enums';
3
3
  export * from './interfaces';
4
- export * from './models';
5
- export * from './types';
4
+ export * from './blueprints';
5
+ export * from './tokens';
@@ -1,11 +1,10 @@
1
- import { RegisterPropsModel } from '../models/register-props.model';
2
- export interface CoreModuleMessageEventData extends Omit<RegisterPropsModel, "canvas" | "location"> {
1
+ import { RegisterPropsBlueprint } from '../blueprints/props.blueprint';
2
+ export interface AppModulePropsMessageEvent extends MessageEvent<Omit<RegisterPropsBlueprint, "canvas" | "location" | "loaderDataSources"> & {
3
3
  /**
4
4
  * The canvas element based on.
5
5
  *
6
- * @defaultValue `undefined`
6
+ * @default `undefined`
7
7
  */
8
8
  canvas?: OffscreenCanvas;
9
- }
10
- export interface CoreModuleMessageEvent extends MessageEvent<CoreModuleMessageEventData> {
9
+ }> {
11
10
  }
@@ -1,5 +1,5 @@
1
1
  export * from './canvas.interface';
2
2
  export * from './core.interface';
3
- export * from './event.interface';
4
3
  export * from './module.interface';
5
- export * from './resource.interface';
4
+ export * from './proxy-event.interface';
5
+ export * from './loader.interface';
@@ -0,0 +1,23 @@
1
+ import { JsonSerializable } from 'threads';
2
+ import { CubeTextureLoader, Texture, VideoTexture } from 'three';
3
+ import { GLTF } from 'three/examples/jsm/loaders/GLTFLoader.js';
4
+ /** @description The sources of the {@link LoaderResource resources} to load. */
5
+ export interface LoaderSource {
6
+ name: string;
7
+ type: "cubeTexture" | "texture" | "gltfModel" | "video" | "audio";
8
+ path: string | string[];
9
+ }
10
+ /** @description Supported loadable resource. */
11
+ export type LoaderResource = GLTF | Texture | CubeTextureLoader | VideoTexture | AudioBuffer;
12
+ /** @description Represent a loaded resource. */
13
+ export interface LoadedResourcePayload {
14
+ source: LoaderSource;
15
+ resource?: LoaderResource;
16
+ /** @description The number of loaded resources. */
17
+ loadedCount: number;
18
+ /** @description The number of resources to load. */
19
+ toLoadCount: number;
20
+ }
21
+ export interface SerializedLoadedResourcePayload extends Omit<LoadedResourcePayload, "resource"> {
22
+ resource?: JsonSerializable;
23
+ }
@@ -1,13 +1,14 @@
1
+ import { DependencyContainer, Disposable } from 'tsyringe';
1
2
  /**
2
3
  * @description Module representation.
3
4
  *
4
5
  * @important Each module should `implement` this interface.
5
6
  */
6
- export interface Module {
7
+ export interface Module extends Disposable {
7
8
  /**
8
9
  * @description Module initializer method.
9
10
  *
10
- * Can be used for direct initialization (when constructing `quick-three`) or manual (later in the code).
11
+ * Can be used for on-launch initialization (when the app is constructed) if the {@link RegisterPropsBlueprint.initOnConstruct initOnConstruct} param is `true` or manually later in the code.
11
12
  */
12
13
  init(...props: any[]): void;
13
14
  /**
@@ -17,3 +18,10 @@ export interface Module {
17
18
  */
18
19
  dispose(): void;
19
20
  }
21
+ /**
22
+ * @description Containerized App representation.
23
+ */
24
+ export interface ContainerizedApp<M extends Module = Module> {
25
+ container: DependencyContainer;
26
+ module: M;
27
+ }
@@ -1,5 +1,11 @@
1
1
  import { Observable, Subject } from 'rxjs';
2
2
  import { PROXY_EVENT_LISTENERS } from '../constants/event.constants';
3
+ export interface ProxyEvent {
4
+ width: number;
5
+ height: number;
6
+ windowWidth: number;
7
+ windowHeight: number;
8
+ }
3
9
  /** @description */
4
10
  export type ProxyEventListenerKeys = (typeof PROXY_EVENT_LISTENERS)[number];
5
11
  export type ProxyEventHandlersImplementation = {
@@ -0,0 +1,2 @@
1
+ export * from './ioc.token';
2
+ export * from './loader.token';
@@ -0,0 +1 @@
1
+ export declare const CONTAINER_TOKEN = "CONTAINER";
@@ -0,0 +1 @@
1
+ export declare const LOADER_SERIALIZED_LOAD_TOKEN = "LOADER_SERIALIZED_LOAD";
@@ -1,10 +1,6 @@
1
- import { Observable, Subject } from 'rxjs';
2
- import { AppComponent } from './app.component';
3
- import { ProxyEventHandlersModel } from '../../common/models/proxy-event-handler.model';
4
- import { AppLifecycleState } from '../../common/enums/lifecycle.enum';
5
- export declare class AppController extends ProxyEventHandlersModel {
6
- private readonly component;
7
- readonly lifecycle$$: Subject<AppLifecycleState>;
8
- readonly lifecycle$: Observable<AppLifecycleState>;
9
- constructor(component: AppComponent);
1
+ import { AppService } from './app.service';
2
+ import { ProxyEventHandlersBlueprint } from '../../common/blueprints/proxy.blueprint';
3
+ export declare class AppController extends ProxyEventHandlersBlueprint {
4
+ private readonly _service;
5
+ constructor(_service: AppService);
10
6
  }
@@ -1,35 +1,41 @@
1
1
  import { WorkerThreadModule } from '@quick-threejs/utils';
2
+ import { Observable } from 'rxjs';
3
+ import { AppModulePropsMessageEvent, Module, AppProxyEventHandlersBlueprint } from '../../common';
2
4
  import { AppController } from './app.controller';
3
- import { AppComponent } from './app.component';
5
+ import { AppService } from './app.service';
4
6
  import { TimerModule } from './timer/timer.module';
5
7
  import { CameraModule } from './camera/camera.module';
6
8
  import { RendererModule } from './renderer/renderer.module';
7
9
  import { SizesModule } from './sizes/sizes.module';
8
10
  import { WorldModule } from './world/world.module';
9
11
  import { DebugModule } from './debug/debug.module';
10
- import { AppLifecycleState } from '../../common/enums/lifecycle.enum';
11
- import { AppProxyEventHandlersModel } from '../../common/models/app-proxy-event-handler.model';
12
- import { Module } from '../../common/interfaces/module.interface';
13
- import { OffscreenCanvasWithStyle } from '../../common/interfaces/canvas.interface';
14
- import { CoreModuleMessageEventData } from '../../common/interfaces/core.interface';
15
- import { Observable } from 'rxjs';
16
- export declare class AppModule extends AppProxyEventHandlersModel implements Module, WorkerThreadModule {
17
- private readonly controller;
18
- private readonly component;
12
+ import { LoaderModule } from './loader/loader.module';
13
+ export declare class AppModule extends AppProxyEventHandlersBlueprint implements Module, WorkerThreadModule {
14
+ private readonly _controller;
15
+ private readonly _service;
19
16
  readonly timer: TimerModule;
20
17
  readonly sizes: SizesModule;
21
18
  readonly camera: CameraModule;
22
19
  readonly world: WorldModule;
23
20
  readonly renderer: RendererModule;
21
+ readonly loader: LoaderModule;
24
22
  readonly debug: DebugModule;
25
- constructor(controller: AppController, component: AppComponent, timer: TimerModule, sizes: SizesModule, camera: CameraModule, world: WorldModule, renderer: RendererModule, debug: DebugModule);
23
+ constructor(_controller: AppController, _service: AppService, timer: TimerModule, sizes: SizesModule, camera: CameraModule, world: WorldModule, renderer: RendererModule, loader: LoaderModule, debug: DebugModule);
26
24
  private _initProxyEvents;
27
- private _onMessage;
28
- init(props: CoreModuleMessageEventData): void;
29
- get canvas(): OffscreenCanvasWithStyle | undefined;
30
- get initialized(): boolean;
25
+ init(props: AppModulePropsMessageEvent["data"]): void;
31
26
  isInitialized(): boolean;
27
+ beforeStep$(): Observable<import('@quick-threejs/utils').NonNever<{
28
+ readonly frame: number;
29
+ readonly initialTime: number;
30
+ currentTime: number;
31
+ deltaTime: number;
32
+ deltaRatio: number;
33
+ elapsedTime: number;
34
+ enabled: boolean;
35
+ step: never;
36
+ }>>;
37
+ step$(): Observable<Omit<import('./timer/timer.service').TimerService, never> & {
38
+ type?: string;
39
+ }>;
32
40
  dispose(): void;
33
- lifecycle$(): Observable<AppLifecycleState>;
34
41
  }
35
- export declare const appModule: AppModule;
@@ -1,7 +1,9 @@
1
1
  import { ProxyReceiver } from '@quick-threejs/utils';
2
- import { OffscreenCanvasWithStyle } from '../../common/interfaces/canvas.interface';
3
- export declare class AppComponent {
2
+ import { OffscreenCanvasWithStyle } from '../../common/interfaces';
3
+ export declare class AppService {
4
+ private _canvas?;
4
5
  readonly proxyReceiver: ProxyReceiver<Record<string, unknown>>;
5
6
  initialized: boolean;
6
- canvas?: OffscreenCanvasWithStyle;
7
+ get canvas(): OffscreenCanvasWithStyle | undefined;
8
+ set canvas(canvas: OffscreenCanvasWithStyle | OffscreenCanvas);
7
9
  }
@@ -0,0 +1,6 @@
1
+ import { ExposedWorkerThreadModule, Methods } from '@quick-threejs/utils';
2
+ import { ProxyEventListenerKeys, ContainerizedApp } from '../../common';
3
+ import { LaunchAppProps } from '../../common/blueprints';
4
+ import { AppModule } from './app.module';
5
+ export declare const launchApp: (props?: LaunchAppProps<AppModule>) => ContainerizedApp<AppModule>;
6
+ export type ExposedAppModule = Omit<ExposedWorkerThreadModule<Methods<AppModule>>, `${ProxyEventListenerKeys}$` | "init">;
@@ -1,12 +1,8 @@
1
- import { Observable, Subject } from 'rxjs';
2
- import { CameraComponent } from './camera.component';
1
+ import { CameraService } from './camera.service';
3
2
  import { TimerController } from '../timer/timer.controller';
4
- import { StepPayload } from '../../../common/interfaces/event.interface';
5
3
  export declare class CameraController {
6
- private readonly component;
7
4
  private readonly timerController;
8
- readonly enable$$: Subject<boolean>;
9
- readonly enable$: Observable<boolean>;
10
- readonly step$: Observable<StepPayload>;
11
- constructor(component: CameraComponent, timerController: TimerController);
5
+ private readonly _service;
6
+ readonly step$: TimerController["step$"];
7
+ constructor(timerController: TimerController, _service: CameraService);
12
8
  }
@@ -1,13 +1,13 @@
1
1
  import { Camera, PerspectiveCamera, Quaternion, Vector3 } from 'three';
2
- import { CameraComponent } from './camera.component';
2
+ import { CameraService } from './camera.service';
3
3
  import { CameraController } from './camera.controller';
4
- import { SizesComponent } from '../sizes/sizes.component';
4
+ import { SizesService } from '../sizes/sizes.service';
5
5
  import { Module } from '../../../common/interfaces/module.interface';
6
6
  export declare class CameraModule implements Module {
7
- private readonly component;
8
- private readonly sizesComponent;
9
- private readonly controller;
10
- constructor(component: CameraComponent, sizesComponent: SizesComponent, controller: CameraController);
7
+ private readonly _sizesService;
8
+ private readonly _controller;
9
+ private readonly _service;
10
+ constructor(_sizesService: SizesService, _controller: CameraController, _service: CameraService);
11
11
  init(withMiniCamera?: boolean): void;
12
12
  dispose(): void;
13
13
  aspectRatio(value?: number): number;
@@ -16,5 +16,4 @@ export declare class CameraModule implements Module {
16
16
  miniCamera(value?: PerspectiveCamera): PerspectiveCamera | undefined;
17
17
  position(value?: Vector3): Vector3;
18
18
  quaternion(value?: Quaternion): Quaternion;
19
- enabled$(): import('rxjs').Observable<boolean>;
20
19
  }
@@ -1,12 +1,12 @@
1
1
  import { Camera, Euler, PerspectiveCamera, Quaternion, Vector3 } from 'three';
2
- import { SizesComponent } from '../sizes/sizes.component';
2
+ import { SizesService } from '../sizes/sizes.service';
3
3
  import { DefaultCameraType } from '../../../common/enums/camera.enum';
4
- export declare class CameraComponent {
5
- private readonly sizesComponent;
4
+ export declare class CameraService {
5
+ private readonly _sizesService;
6
6
  instance?: Camera;
7
7
  miniCamera?: PerspectiveCamera;
8
8
  enabled: boolean;
9
- constructor(sizesComponent: SizesComponent);
9
+ constructor(_sizesService: SizesService);
10
10
  set aspectRatio(ratio: number);
11
11
  set quaternion(quaternion: Quaternion);
12
12
  set position(position: Vector3);
@@ -1,9 +1,8 @@
1
- import { Subject } from 'rxjs';
2
1
  import { TimerController } from '../timer/timer.controller';
2
+ import { CameraService } from '../camera/camera.service';
3
3
  export declare class DebugController {
4
4
  private readonly timerController;
5
- readonly enable$$: Subject<boolean>;
6
- readonly enable$: import('rxjs').Observable<boolean>;
5
+ private readonly _service;
7
6
  readonly step$: TimerController["step$"];
8
- constructor(timerController: TimerController);
7
+ constructor(timerController: TimerController, _service: CameraService);
9
8
  }
@@ -1,17 +1,19 @@
1
- import { DebugComponent } from './debug.component';
2
- import { DebugController } from './debug.controller';
3
1
  import { Module } from '../../../common/interfaces/module.interface';
2
+ import { DebugService } from './debug.service';
3
+ import { DebugController } from './debug.controller';
4
4
  export declare class DebugModule implements Module {
5
- readonly component: DebugComponent;
6
- readonly controller: DebugController;
7
- constructor(component: DebugComponent, controller: DebugController);
8
- init(props?: Parameters<DebugComponent["init"]>[0]): void;
9
- dispose(): void;
5
+ readonly _service: DebugService;
6
+ readonly _controller: DebugController;
7
+ constructor(_service: DebugService, _controller: DebugController);
8
+ step$(): import('rxjs').Observable<Omit<import('../timer/timer.service').TimerService, never> & {
9
+ type?: string;
10
+ }>;
11
+ init(props?: Parameters<DebugService["activate"]>[0]): void;
10
12
  axesHelper(): import('three').AxesHelper | undefined;
11
13
  cameraControls(): import('three/examples/jsm/controls/OrbitControls').OrbitControls | undefined;
12
14
  cameraHelper(): import('three').CameraHelper | undefined;
13
15
  enabled(value?: boolean): boolean;
14
16
  gridHelper(): import('three').GridHelper | undefined;
15
17
  miniCameraControls(): import('three/examples/jsm/controls/OrbitControls').OrbitControls | undefined;
16
- enabled$(): import('rxjs').Observable<boolean>;
18
+ dispose(): void;
17
19
  }
@@ -1,28 +1,28 @@
1
1
  import { AxesHelper, CameraHelper, GridHelper } from 'three';
2
2
  import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
3
- import { CameraComponent } from '../camera/camera.component';
4
- import { AppComponent } from '../app.component';
5
- import { WorldComponent } from '../world/world.component';
6
- export declare class DebugComponent {
7
- private readonly appComponent;
8
- private readonly cameraComponent;
9
- private readonly worldComponent;
3
+ import { CameraService } from '../camera/camera.service';
4
+ import { AppService } from '../app.service';
5
+ import { WorldService } from '../world/world.service';
6
+ export declare class DebugService {
7
+ private readonly _appService;
8
+ private readonly _cameraService;
9
+ private readonly _worldService;
10
10
  enabled: boolean;
11
11
  cameraControls?: OrbitControls;
12
12
  miniCameraControls?: OrbitControls;
13
13
  cameraHelper?: CameraHelper;
14
14
  axesHelper?: AxesHelper;
15
15
  gridHelper?: GridHelper;
16
- constructor(appComponent: AppComponent, cameraComponent: CameraComponent, worldComponent: WorldComponent);
16
+ constructor(_appService: AppService, _cameraService: CameraService, _worldService: WorldService);
17
17
  private _setCameraOrbitControl;
18
18
  private _setMiniCameraOrbitControls;
19
19
  private _setCameraHelper;
20
20
  private _setAxesHelper;
21
21
  private _setGridHelper;
22
- init(props?: {
22
+ activate(props?: {
23
23
  axesSizes?: number;
24
24
  gridSizes?: number;
25
25
  }): void;
26
26
  update(): void;
27
- dispose(): void;
27
+ deactivate(): void;
28
28
  }
@@ -0,0 +1,5 @@
1
+ import { LoadedResourcePayload } from '../../../common';
2
+ export declare class LoaderController {
3
+ readonly load$: import('rxjs').Observable<LoadedResourcePayload>;
4
+ readonly loadCompleted$: import('rxjs').Observable<LoadedResourcePayload>;
5
+ }
@@ -0,0 +1,16 @@
1
+ import { Module } from '../../../common/interfaces';
2
+ import { LoaderController } from './loader.controller';
3
+ import { LoaderService } from './loader.service';
4
+ export declare class LoaderModule implements Module {
5
+ private readonly _controller;
6
+ private readonly _service;
7
+ private readonly _subscriptions;
8
+ constructor(_controller: LoaderController, _service: LoaderService);
9
+ init(): void;
10
+ getLoadedResources(): Record<string, import('../../../common/interfaces').LoaderResource>;
11
+ getLoadedCount(): number;
12
+ getToLoadCount(): number;
13
+ getLoad$(): import('rxjs').Observable<import('../../../common/interfaces').LoadedResourcePayload>;
14
+ getLoadCompleted$(): import('rxjs').Observable<import('../../../common/interfaces').LoadedResourcePayload>;
15
+ dispose(): void;
16
+ }
@@ -0,0 +1,8 @@
1
+ import { LoadedResourcePayload, LoaderResource } from '../../../common/interfaces';
2
+ import { LoaderService as RegisterLoaderService } from '../../register/loader/loader.service';
3
+ export declare class LoaderService implements Pick<RegisterLoaderService, "toLoadCount" | "loadedCount" | "loadedResources"> {
4
+ loadedResources: Record<string, LoaderResource>;
5
+ toLoadCount: number;
6
+ loadedCount: number;
7
+ handleLoad(payload: LoadedResourcePayload): void;
8
+ }
@@ -1,15 +1,13 @@
1
- import { Observable, Subject } from 'rxjs';
2
- import { ProxyEvent, StepPayload } from 'common';
1
+ import { Observable } from 'rxjs';
2
+ import { ProxyEvent } from '../../../common/interfaces/proxy-event.interface';
3
3
  import { SizesController } from '../sizes/sizes.controller';
4
4
  import { TimerController } from '../timer/timer.controller';
5
- import { RendererComponent } from './renderer.component';
5
+ import { RendererService } from './renderer.service';
6
6
  export declare class RendererController {
7
- private readonly rendererComponent;
7
+ private readonly _service;
8
8
  private readonly timerController;
9
9
  private readonly sizesController;
10
- readonly enable$$: Subject<boolean>;
11
- readonly enable$: Observable<boolean>;
12
- readonly step$: Observable<StepPayload>;
10
+ readonly step$: TimerController["step$"];
13
11
  readonly resize$: Observable<UIEvent & ProxyEvent>;
14
- constructor(rendererComponent: RendererComponent, timerController: TimerController, sizesController: SizesController);
12
+ constructor(_service: RendererService, timerController: TimerController, sizesController: SizesController);
15
13
  }