@quick-threejs/reactive 0.1.25 → 0.1.27

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 (48) hide show
  1. package/dist/app.module-BQotCgts.js +34 -0
  2. package/dist/{app.module-BeaCiPyy.mjs → app.module-n-JVGlLg.mjs} +2199 -1939
  3. package/dist/common/blueprints/index.d.ts +2 -0
  4. package/dist/common/{models/register-props.model.d.ts → blueprints/props.blueprint.d.ts} +31 -8
  5. package/dist/common/blueprints/proxy.blueprint.d.ts +96 -0
  6. package/dist/common/index.d.ts +1 -1
  7. package/dist/common/interfaces/core.interface.d.ts +4 -5
  8. package/dist/common/interfaces/index.d.ts +2 -3
  9. package/dist/common/interfaces/loader.interface.d.ts +23 -0
  10. package/dist/common/interfaces/module.interface.d.ts +1 -1
  11. package/dist/common/interfaces/{object.interface.d.ts → proxy-event.interface.d.ts} +6 -0
  12. package/dist/common/tokens/index.d.ts +1 -0
  13. package/dist/common/tokens/loader.token.d.ts +1 -0
  14. package/dist/core/app/app.controller.d.ts +2 -2
  15. package/dist/core/app/app.module.d.ts +6 -4
  16. package/dist/core/app/{app.module-worker.d.ts → app.util.d.ts} +1 -1
  17. package/dist/core/app/loader/loader.controller.d.ts +5 -0
  18. package/dist/core/app/loader/loader.module.d.ts +16 -0
  19. package/dist/core/app/loader/loader.service.d.ts +8 -0
  20. package/dist/core/app/renderer/renderer.controller.d.ts +1 -1
  21. package/dist/core/index.d.ts +0 -1
  22. package/dist/core/register/loader/loader.controller.d.ts +11 -0
  23. package/dist/core/register/loader/loader.module.d.ts +31 -0
  24. package/dist/core/register/loader/loader.service.d.ts +26 -0
  25. package/dist/core/register/register.controller.d.ts +2 -2
  26. package/dist/core/register/register.module.d.ts +15 -28
  27. package/dist/core/register/register.service.d.ts +1 -1
  28. package/dist/core/register/register.util.d.ts +3 -3
  29. package/dist/main.js +3 -3
  30. package/dist/main.mjs +1218 -1286
  31. package/dist/main.worker.d.ts +1 -1
  32. package/dist/worker.js +1 -1
  33. package/dist/worker.mjs +10 -10
  34. package/package.json +5 -3
  35. package/dist/app.module-jsu6itlh.js +0 -34
  36. package/dist/common/interfaces/event.interface.d.ts +0 -6
  37. package/dist/common/interfaces/resource.interface.d.ts +0 -14
  38. package/dist/common/models/app-proxy-event-handler.model.d.ts +0 -32
  39. package/dist/common/models/index.d.ts +0 -7
  40. package/dist/common/models/launch-app-props.model.d.ts +0 -6
  41. package/dist/common/models/proxy-event-handler.model.d.ts +0 -19
  42. package/dist/common/models/proxy-event-observables.model.d.ts +0 -20
  43. package/dist/common/models/proxy-event-subjects.models.d.ts +0 -19
  44. package/dist/common/models/register-proxy-event-handler.model.d.ts +0 -17
  45. package/dist/core/loader/loader.component.d.ts +0 -25
  46. package/dist/core/loader/loader.controller.d.ts +0 -7
  47. package/dist/core/loader/loader.module-worker.d.ts +0 -3
  48. package/dist/core/loader/loader.module.d.ts +0 -33
@@ -0,0 +1,2 @@
1
+ export * from './proxy.blueprint';
2
+ export * from './props.blueprint';
@@ -1,8 +1,10 @@
1
- import { ContainerizedApp } from '../interfaces';
2
- import { DefaultCameraType } from '../enums/camera.enum';
3
1
  import { RegisterModule } from '../../core';
4
- /** @description Quick-three register properties. */
5
- export declare class RegisterPropsModel {
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 {
6
8
  /**
7
9
  * @description The app worker logic location.
8
10
  *
@@ -42,7 +44,21 @@ export declare class RegisterPropsModel {
42
44
  */
43
45
  startTimer?: boolean;
44
46
  /**
45
- * Enable the debug mode
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
46
62
  *
47
63
  * @default undefined
48
64
  */
@@ -51,7 +67,7 @@ export declare class RegisterPropsModel {
51
67
  * Define the {@link THREE.AxesHelper} sizes.
52
68
  *
53
69
  * @remark __Deactivated if the value is `0` or `undefined`__
54
- * @remark __This property depends on {@link RegisterPropsModel.enableDebug}__
70
+ * @remark __This property depends on {@link RegisterPropsBlueprint.enableDebug enableDebug}__
55
71
  *
56
72
  * @default undefined
57
73
  */
@@ -60,7 +76,7 @@ export declare class RegisterPropsModel {
60
76
  * Define the {@link THREE.GridHelper} sizes.
61
77
  *
62
78
  * @remark __Deactivated if the value is `0` or `undefined`__
63
- * @remark __This property depends on {@link RegisterPropsModel.enableDebug}__
79
+ * @remark __This property depends on {@link RegisterPropsBlueprint.enableDebug enableDebug}__
64
80
  *
65
81
  * @default undefined
66
82
  */
@@ -68,7 +84,7 @@ export declare class RegisterPropsModel {
68
84
  /**
69
85
  * Display a mini perfective camera at the top right corner of the screen.
70
86
  *
71
- * @remark __This property depends on {@link RegisterPropsModel.enableDebug}__
87
+ * @remark __This property depends on {@link RegisterPropsBlueprint.enableDebug enableDebug}__
72
88
  *
73
89
  * @default false
74
90
  */
@@ -80,3 +96,10 @@ export declare class RegisterPropsModel {
80
96
  */
81
97
  onReady?: (app: ContainerizedApp<RegisterModule>) => unknown;
82
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,5 +1,5 @@
1
1
  export * from './constants';
2
2
  export * from './enums';
3
3
  export * from './interfaces';
4
- export * from './models';
4
+ export * from './blueprints';
5
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,6 +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 './object.interface';
6
- 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
+ }
@@ -8,7 +8,7 @@ export interface Module extends Disposable {
8
8
  /**
9
9
  * @description Module initializer method.
10
10
  *
11
- * Can be used for on-launch initialization (when the app is constructed) if the {@link RegisterPropsModel.initOnConstruct initOnConstruct} param is `true` or manually 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.
12
12
  */
13
13
  init(...props: any[]): void;
14
14
  /**
@@ -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 = {
@@ -1 +1,2 @@
1
1
  export * from './ioc.token';
2
+ export * from './loader.token';
@@ -0,0 +1 @@
1
+ export declare const LOADER_SERIALIZED_LOAD_TOKEN = "LOADER_SERIALIZED_LOAD";
@@ -1,6 +1,6 @@
1
1
  import { AppService } from './app.service';
2
- import { ProxyEventHandlersModel } from '../../common/models/proxy-event-handler.model';
3
- export declare class AppController extends ProxyEventHandlersModel {
2
+ import { ProxyEventHandlersBlueprint } from '../../common/blueprints/proxy.blueprint';
3
+ export declare class AppController extends ProxyEventHandlersBlueprint {
4
4
  private readonly _service;
5
5
  constructor(_service: AppService);
6
6
  }
@@ -1,6 +1,6 @@
1
1
  import { WorkerThreadModule } from '@quick-threejs/utils';
2
2
  import { Observable } from 'rxjs';
3
- import { CoreModuleMessageEventData, Module, AppProxyEventHandlersModel } from '../../common';
3
+ import { AppModulePropsMessageEvent, Module, AppProxyEventHandlersBlueprint } from '../../common';
4
4
  import { AppController } from './app.controller';
5
5
  import { AppService } from './app.service';
6
6
  import { TimerModule } from './timer/timer.module';
@@ -9,7 +9,8 @@ import { RendererModule } from './renderer/renderer.module';
9
9
  import { SizesModule } from './sizes/sizes.module';
10
10
  import { WorldModule } from './world/world.module';
11
11
  import { DebugModule } from './debug/debug.module';
12
- export declare class AppModule extends AppProxyEventHandlersModel implements Module, WorkerThreadModule {
12
+ import { LoaderModule } from './loader/loader.module';
13
+ export declare class AppModule extends AppProxyEventHandlersBlueprint implements Module, WorkerThreadModule {
13
14
  private readonly _controller;
14
15
  private readonly _service;
15
16
  readonly timer: TimerModule;
@@ -17,10 +18,11 @@ export declare class AppModule extends AppProxyEventHandlersModel implements Mod
17
18
  readonly camera: CameraModule;
18
19
  readonly world: WorldModule;
19
20
  readonly renderer: RendererModule;
21
+ readonly loader: LoaderModule;
20
22
  readonly debug: DebugModule;
21
- constructor(_controller: AppController, _service: AppService, 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);
22
24
  private _initProxyEvents;
23
- init(props: CoreModuleMessageEventData): void;
25
+ init(props: AppModulePropsMessageEvent["data"]): void;
24
26
  isInitialized(): boolean;
25
27
  beforeStep$(): Observable<import('@quick-threejs/utils').NonNever<{
26
28
  readonly frame: number;
@@ -1,6 +1,6 @@
1
1
  import { ExposedWorkerThreadModule, Methods } from '@quick-threejs/utils';
2
2
  import { ProxyEventListenerKeys, ContainerizedApp } from '../../common';
3
- import { LaunchAppProps } from '../../common/models';
3
+ import { LaunchAppProps } from '../../common/blueprints';
4
4
  import { AppModule } from './app.module';
5
5
  export declare const launchApp: (props?: LaunchAppProps<AppModule>) => ContainerizedApp<AppModule>;
6
6
  export type ExposedAppModule = Omit<ExposedWorkerThreadModule<Methods<AppModule>>, `${ProxyEventListenerKeys}$` | "init">;
@@ -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,5 +1,5 @@
1
1
  import { Observable } from 'rxjs';
2
- import { ProxyEvent } from '../../../common/interfaces/event.interface';
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
5
  import { RendererService } from './renderer.service';
@@ -1,4 +1,3 @@
1
1
  export * from './app/app.module';
2
- export * from './loader/loader.module';
3
2
  export * from './register/register.module';
4
3
  export * from './register/register.util';
@@ -0,0 +1,11 @@
1
+ import { Observable, Subject } from 'rxjs';
2
+ import { LoadedResourcePayload, SerializedLoadedResourcePayload } from '../../../common/interfaces/loader.interface';
3
+ import { LoaderService } from './loader.service';
4
+ export declare class LoaderController {
5
+ private readonly _service;
6
+ readonly load$$: Subject<Pick<LoadedResourcePayload, "resource" | "source">>;
7
+ readonly load$: Observable<LoadedResourcePayload>;
8
+ readonly serializedLoad$: Observable<SerializedLoadedResourcePayload>;
9
+ readonly loadCompleted$: Observable<LoadedResourcePayload>;
10
+ constructor(_service: LoaderService);
11
+ }
@@ -0,0 +1,31 @@
1
+ import { Module, LoaderSource, LoaderResource } from '../../../common/interfaces';
2
+ import { LoaderController } from './loader.controller';
3
+ import { LoaderService } from './loader.service';
4
+ import { RegisterPropsBlueprint } from '../../../common/blueprints';
5
+ export declare class LoaderModule implements Module {
6
+ private readonly _controller;
7
+ private readonly _service;
8
+ private readonly _props;
9
+ private readonly _subscriptions;
10
+ constructor(_controller: LoaderController, _service: LoaderService, _props: RegisterPropsBlueprint);
11
+ private _performLoad;
12
+ init(sources?: LoaderSource[]): void;
13
+ load(): void;
14
+ getLoadedResources(): Record<string, LoaderResource>;
15
+ getLoaders(): {
16
+ dracoLoader?: import('three/examples/jsm/loaders/DRACOLoader').DRACOLoader;
17
+ gltfLoader?: import('three/examples/jsm/loaders/GLTFLoader').GLTFLoader;
18
+ textureLoader?: import('three').ImageBitmapLoader;
19
+ cubeTextureLoader?: import('three').CubeTextureLoader;
20
+ audioLoader?: import('three').AudioLoader;
21
+ videoLoader?: LoaderService["videoLoader"];
22
+ };
23
+ getSources(): LoaderSource[];
24
+ getLoadedCount(): number;
25
+ getToLoadCount(): number;
26
+ getLoad$(): import('rxjs').Observable<import('../../../common/interfaces').LoadedResourcePayload>;
27
+ getLoadCompleted$(): import('rxjs').Observable<import('../../../common/interfaces').LoadedResourcePayload>;
28
+ setDracoDecoder(dracoDecoderPath: string): void;
29
+ dispose(): void;
30
+ }
31
+ export declare const loaderModule: LoaderModule;
@@ -0,0 +1,26 @@
1
+ import { AudioLoader, CubeTextureLoader, ImageBitmapLoader, LoadingManager } from 'three';
2
+ import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
3
+ import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';
4
+ import { LoadedResourcePayload, LoaderResource, LoaderSource } from '../../../common/interfaces/loader.interface';
5
+ export declare class LoaderService {
6
+ readonly loadingManager: LoadingManager;
7
+ readonly loaders: {
8
+ dracoLoader?: DRACOLoader;
9
+ gltfLoader?: GLTFLoader;
10
+ textureLoader?: ImageBitmapLoader;
11
+ cubeTextureLoader?: CubeTextureLoader;
12
+ audioLoader?: AudioLoader;
13
+ videoLoader?: LoaderService["videoLoader"];
14
+ };
15
+ sources: LoaderSource[];
16
+ loadedResources: Record<string, LoaderResource>;
17
+ toLoadCount: number;
18
+ loadedCount: number;
19
+ /** @description The video loader. based on {@link HTMLVideoElement}. */
20
+ private get videoLoader();
21
+ private _initLoaders;
22
+ _initSources(sources: LoaderSource[]): void;
23
+ init(sources?: LoaderSource[]): void;
24
+ setDracoDecoder(dracoDecoderPath?: string): void;
25
+ handleLoad({ source, resource, toLoadCount, loadedCount }: LoadedResourcePayload): void;
26
+ }
@@ -1,6 +1,6 @@
1
1
  import { RegisterService } from './register.service';
2
- import { ProxyEventHandlersModel } from '../../common/models/proxy-event-handler.model';
3
- export declare class RegisterController extends ProxyEventHandlersModel {
2
+ import { ProxyEventHandlersBlueprint } from '../../common/blueprints/proxy.blueprint';
3
+ export declare class RegisterController extends ProxyEventHandlersBlueprint {
4
4
  private readonly _service;
5
5
  private canvas;
6
6
  constructor(_service: RegisterService);
@@ -1,43 +1,30 @@
1
1
  import { DependencyContainer } from 'tsyringe';
2
- import { Module, ProgressedResource, Resource, RegisterPropsModel, RegisterProxyEventHandlersModel } from '../../common';
3
- import { ExposedAppModule } from '../app/app.module-worker';
4
- import { LoaderModule } from '../loader/loader.module';
5
- import { ExposedLoaderModule } from '../loader/loader.module-worker';
2
+ import { Module, RegisterPropsBlueprint, RegisterProxyEventHandlersBlueprint } from '../../common';
3
+ import { ExposedAppModule } from '../app/app.util';
6
4
  import { RegisterService } from './register.service';
7
5
  import { RegisterController } from './register.controller';
8
- export declare class RegisterModule extends RegisterProxyEventHandlersModel implements Module {
9
- private readonly _container;
6
+ import { LoaderModule } from './loader/loader.module';
7
+ import { LoaderController } from './loader/loader.controller';
8
+ export declare class RegisterModule extends RegisterProxyEventHandlersBlueprint implements Module {
10
9
  private readonly _service;
11
10
  private readonly _controller;
12
- readonly registerProps: RegisterPropsModel;
11
+ private readonly _loaderController;
12
+ readonly props: RegisterPropsBlueprint;
13
+ readonly loader: LoaderModule;
14
+ readonly container: DependencyContainer;
13
15
  initialized: boolean;
14
- constructor(_container: DependencyContainer, _service: RegisterService, _controller: RegisterController, registerProps: RegisterPropsModel);
16
+ constructor(_service: RegisterService, _controller: RegisterController, _loaderController: LoaderController, props: RegisterPropsBlueprint, loader: LoaderModule, container: DependencyContainer);
15
17
  private _initCanvas;
16
- private _initComponent;
18
+ private _initService;
17
19
  private _initController;
18
20
  private _initWorkerThread;
19
21
  private _initObservableProxyEvents;
22
+ private _initLoader;
23
+ isInitialized(): boolean;
20
24
  init(): Promise<void>;
21
- loadResources(props: {
22
- resources: Resource[];
23
- disposeOnComplete?: boolean;
24
- onMainThread?: boolean;
25
- immediateLoad?: boolean;
26
- onProgress?: (resource: ProgressedResource) => unknown;
27
- onProgressComplete?: (resource: ProgressedResource) => unknown;
28
- }): Promise<{
29
- load: LoaderModule["load"];
30
- items: ReturnType<LoaderModule["items"]>;
31
- loaders: ReturnType<LoaderModule["loaders"]>;
32
- toLoad: ReturnType<LoaderModule["toLoad"]>;
33
- loaded: ReturnType<LoaderModule["loaded"]>;
34
- resources: ReturnType<LoaderModule["resources"]>;
35
- worker?: import('threads').Worker;
36
- thread?: import('threads').ModuleThread<ExposedLoaderModule> | undefined;
37
- }>;
38
- workerPool(): import('@quick-threejs/utils').WorkerPool;
39
25
  canvas(): HTMLCanvasElement | undefined;
40
- worker(): import('threads/dist/types/master').Worker | undefined;
41
26
  thread(): import('threads').ModuleThread<ExposedAppModule> | undefined;
27
+ worker(): import('threads/dist/types/master').Worker | undefined;
28
+ workerPool(): import('@quick-threejs/utils').WorkerPool;
42
29
  dispose(): Promise<void>;
43
30
  }
@@ -1,5 +1,5 @@
1
1
  import { WorkerThreadResolution } from '@quick-threejs/utils';
2
- import { ExposedAppModule } from '../app/app.module-worker';
2
+ import { ExposedAppModule } from '../app/app.util';
3
3
  export declare class RegisterService {
4
4
  readonly workerPool: import('@quick-threejs/utils').WorkerPool;
5
5
  canvas?: HTMLCanvasElement;
@@ -1,5 +1,5 @@
1
1
  import { ContainerizedApp } from '../../common/interfaces';
2
- import { RegisterPropsModel } from '../../common/models';
2
+ import { RegisterPropsBlueprint } from '../../common/blueprints';
3
3
  import { RegisterModule } from './register.module';
4
4
  /**
5
5
  * @description
@@ -8,6 +8,6 @@ import { RegisterModule } from './register.module';
8
8
  *
9
9
  * **🏁 This helper should be called from the main thread**
10
10
  *
11
- * @param props {@link RegisterPropsModel}.
11
+ * @param props {@link RegisterPropsBlueprint}.
12
12
  */
13
- export declare const register: (props: RegisterPropsModel) => ContainerizedApp<RegisterModule>;
13
+ export declare const register: (props: RegisterPropsBlueprint) => ContainerizedApp<RegisterModule>;