angular-three 2.0.0-beta.2 → 2.0.0-beta.21

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 (141) hide show
  1. package/README.md +4 -147
  2. package/esm2022/angular-three.mjs +1 -1
  3. package/esm2022/index.mjs +11 -10
  4. package/esm2022/lib/before-render.mjs +13 -0
  5. package/esm2022/lib/canvas.mjs +130 -161
  6. package/esm2022/lib/directives/args.mjs +13 -11
  7. package/esm2022/lib/directives/common.mjs +29 -27
  8. package/esm2022/lib/directives/key.mjs +29 -0
  9. package/esm2022/lib/directives/parent.mjs +13 -11
  10. package/esm2022/lib/directives/repeat.mjs +5 -6
  11. package/esm2022/lib/dom/events.mjs +6 -1
  12. package/esm2022/lib/events.mjs +75 -58
  13. package/esm2022/lib/instance.mjs +65 -0
  14. package/esm2022/lib/loader.mjs +30 -37
  15. package/esm2022/lib/loop.mjs +6 -3
  16. package/esm2022/lib/portal.mjs +91 -102
  17. package/esm2022/lib/ref.mjs +48 -0
  18. package/esm2022/lib/renderer/catalogue.mjs +7 -0
  19. package/esm2022/lib/renderer/constants.mjs +21 -0
  20. package/esm2022/lib/renderer/index.mjs +419 -0
  21. package/esm2022/lib/renderer/store.mjs +144 -108
  22. package/esm2022/lib/renderer/utils.mjs +63 -48
  23. package/esm2022/lib/roots.mjs +249 -0
  24. package/esm2022/lib/routed-scene.mjs +11 -8
  25. package/esm2022/lib/store.mjs +207 -0
  26. package/esm2022/lib/three-types.mjs +2 -2
  27. package/esm2022/lib/types.mjs +1 -1
  28. package/esm2022/lib/utils/apply-props.mjs +23 -11
  29. package/esm2022/lib/utils/assert-injection-context.mjs +14 -0
  30. package/esm2022/lib/utils/attach.mjs +2 -2
  31. package/esm2022/lib/utils/create-injection-token.mjs +47 -0
  32. package/esm2022/lib/utils/is.mjs +1 -1
  33. package/esm2022/lib/utils/make.mjs +1 -1
  34. package/esm2022/lib/utils/safe-detect-changes.mjs +15 -13
  35. package/esm2022/lib/utils/signal-store.mjs +91 -0
  36. package/esm2022/lib/utils/update.mjs +1 -1
  37. package/fesm2022/angular-three.mjs +1770 -1589
  38. package/fesm2022/angular-three.mjs.map +1 -1
  39. package/index.d.ts +10 -9
  40. package/lib/{di/before-render.d.ts → before-render.d.ts} +1 -1
  41. package/lib/canvas.d.ts +81 -11
  42. package/lib/directives/args.d.ts +2 -2
  43. package/lib/directives/common.d.ts +5 -1
  44. package/lib/directives/key.d.ts +10 -0
  45. package/lib/directives/parent.d.ts +5 -5
  46. package/lib/dom/events.d.ts +3 -2
  47. package/lib/events.d.ts +78 -2
  48. package/lib/instance.d.ts +36 -0
  49. package/lib/loader.d.ts +13 -2
  50. package/lib/loop.d.ts +64 -6
  51. package/lib/portal.d.ts +20 -12
  52. package/lib/{di/ref.d.ts → ref.d.ts} +3 -2
  53. package/lib/renderer/catalogue.d.ts +9 -0
  54. package/lib/renderer/constants.d.ts +20 -0
  55. package/lib/renderer/index.d.ts +5 -0
  56. package/lib/renderer/store.d.ts +19 -15
  57. package/lib/renderer/utils.d.ts +28 -18
  58. package/lib/roots.d.ts +11 -0
  59. package/lib/routed-scene.d.ts +1 -1
  60. package/lib/store.d.ts +143 -0
  61. package/lib/three-types.d.ts +6 -6
  62. package/lib/types.d.ts +1 -309
  63. package/lib/utils/apply-props.d.ts +4 -2
  64. package/lib/utils/attach.d.ts +5 -3
  65. package/lib/utils/create-injection-token.d.ts +27 -0
  66. package/lib/utils/is.d.ts +4 -3
  67. package/lib/utils/make.d.ts +12 -1
  68. package/lib/utils/safe-detect-changes.d.ts +2 -2
  69. package/lib/utils/signal-store.d.ts +17 -0
  70. package/lib/utils/update.d.ts +1 -1
  71. package/metadata.json +1 -1
  72. package/package.json +5 -4
  73. package/plugin/generators.json +47 -17
  74. package/plugin/package.json +2 -5
  75. package/plugin/src/generators/init/compat.d.ts +3 -1
  76. package/plugin/src/generators/init/compat.js +2 -2
  77. package/plugin/src/generators/init/compat.js.map +1 -1
  78. package/plugin/src/generators/init/files/experience/experience.component.html.__tmpl__ +4 -0
  79. package/plugin/src/generators/init/files/experience/experience.component.ts.__tmpl__ +17 -0
  80. package/plugin/src/generators/init/generator.d.ts +6 -0
  81. package/plugin/src/generators/init/generator.js +144 -0
  82. package/plugin/src/generators/init/generator.js.map +1 -0
  83. package/plugin/src/generators/init/schema.json +15 -4
  84. package/plugin/src/generators/init-cannon/compat.d.ts +2 -0
  85. package/plugin/src/generators/init-cannon/compat.js +6 -0
  86. package/plugin/src/generators/init-cannon/compat.js.map +1 -0
  87. package/plugin/src/generators/init-cannon/generator.d.ts +2 -0
  88. package/plugin/src/generators/init-cannon/generator.js +22 -0
  89. package/plugin/src/generators/init-cannon/generator.js.map +1 -0
  90. package/plugin/src/generators/init-cannon/schema.json +6 -0
  91. package/plugin/src/generators/init-postprocessing/compat.d.ts +2 -0
  92. package/plugin/src/generators/init-postprocessing/compat.js +6 -0
  93. package/plugin/src/generators/init-postprocessing/compat.js.map +1 -0
  94. package/plugin/src/generators/init-postprocessing/generator.d.ts +2 -0
  95. package/plugin/src/generators/init-postprocessing/generator.js +20 -0
  96. package/plugin/src/generators/init-postprocessing/generator.js.map +1 -0
  97. package/plugin/src/generators/init-postprocessing/schema.json +6 -0
  98. package/plugin/src/generators/init-soba/compat.d.ts +2 -0
  99. package/plugin/src/generators/init-soba/compat.js +6 -0
  100. package/plugin/src/generators/init-soba/compat.js.map +1 -0
  101. package/plugin/src/generators/init-soba/generator.d.ts +2 -0
  102. package/plugin/src/generators/init-soba/generator.js +26 -0
  103. package/plugin/src/generators/init-soba/generator.js.map +1 -0
  104. package/plugin/src/generators/init-soba/schema.json +6 -0
  105. package/plugin/src/generators/utils.d.ts +2 -0
  106. package/plugin/src/generators/utils.js +34 -0
  107. package/plugin/src/generators/utils.js.map +1 -0
  108. package/plugin/src/generators/versions.d.ts +12 -0
  109. package/plugin/src/generators/versions.js +16 -0
  110. package/plugin/src/generators/versions.js.map +1 -0
  111. package/plugin/src/index.d.ts +3 -1
  112. package/plugin/src/index.js +7 -3
  113. package/plugin/src/index.js.map +1 -1
  114. package/web-types.json +1 -1
  115. package/esm2022/lib/di/before-render.mjs +0 -13
  116. package/esm2022/lib/di/catalogue.mjs +0 -7
  117. package/esm2022/lib/di/ref.mjs +0 -49
  118. package/esm2022/lib/renderer/di.mjs +0 -3
  119. package/esm2022/lib/renderer/enums.mjs +0 -2
  120. package/esm2022/lib/renderer/provider.mjs +0 -18
  121. package/esm2022/lib/renderer/renderer.mjs +0 -365
  122. package/esm2022/lib/stores/signal.store.mjs +0 -81
  123. package/esm2022/lib/stores/store.mjs +0 -423
  124. package/esm2022/lib/utils/assert-in-injection-context.mjs +0 -14
  125. package/esm2022/lib/utils/instance.mjs +0 -63
  126. package/esm2022/lib/utils/signal.mjs +0 -24
  127. package/esm2022/lib/utils/timing.mjs +0 -21
  128. package/lib/di/catalogue.d.ts +0 -3
  129. package/lib/renderer/di.d.ts +0 -2
  130. package/lib/renderer/enums.d.ts +0 -26
  131. package/lib/renderer/provider.d.ts +0 -8
  132. package/lib/renderer/renderer.d.ts +0 -49
  133. package/lib/stores/signal.store.d.ts +0 -20
  134. package/lib/stores/store.d.ts +0 -13
  135. package/lib/utils/instance.d.ts +0 -4
  136. package/lib/utils/signal.d.ts +0 -2
  137. package/lib/utils/timing.d.ts +0 -4
  138. package/plugin/src/generators/init/init.d.ts +0 -5
  139. package/plugin/src/generators/init/init.js +0 -56
  140. package/plugin/src/generators/init/init.js.map +0 -1
  141. /package/lib/utils/{assert-in-injection-context.d.ts → assert-injection-context.d.ts} +0 -0
@@ -1,8 +1,10 @@
1
- import { NgtSignalStore } from '../stores/signal.store';
2
- import type { NgtAnyRecord, NgtAttachFunction, NgtState } from '../types';
1
+ import { type NgtAttachFunction } from '../instance';
2
+ import type { NgtState } from '../store';
3
+ import type { NgtAnyRecord } from '../types';
4
+ import type { NgtSignalStore } from './signal-store';
3
5
  export declare function attach(object: NgtAnyRecord, value: unknown, paths?: string[]): void;
4
6
  export declare function detach(parent: NgtAnyRecord, child: NgtAnyRecord, attachProp: string[] | NgtAttachFunction): void;
5
- export declare function createAttachFunction<TParent = any, TChild = any>(cb: (params: {
7
+ export declare function createAttachFunction<TChild = any, TParent = any>(cb: (params: {
6
8
  parent: TParent;
7
9
  child: TChild;
8
10
  store: NgtSignalStore<NgtState>;
@@ -0,0 +1,27 @@
1
+ import { Host, InjectionToken, Optional, Self, SkipSelf, type InjectOptions, type Provider, type Type } from '@angular/core';
2
+ type CreateInjectionTokenDep<TTokenType> = Type<TTokenType> | (abstract new (...args: any[]) => TTokenType) | InjectionToken<TTokenType>;
3
+ type CreateInjectionTokenDeps<TFactory extends (...args: any[]) => any, TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>> = {
4
+ [Index in keyof TFactoryDeps]: CreateInjectionTokenDep<TFactoryDeps[Index]> | [...modifiers: Array<Optional | Self | SkipSelf | Host>, token: CreateInjectionTokenDep<TFactoryDeps[Index]>];
5
+ } & {
6
+ length: TFactoryDeps['length'];
7
+ };
8
+ export type CreateInjectionTokenOptions<TFactory extends (...args: any[]) => any, TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>> = (TFactoryDeps[0] extends undefined ? {
9
+ isRoot: boolean;
10
+ deps?: never;
11
+ } : {
12
+ isRoot?: boolean;
13
+ deps: CreateInjectionTokenDeps<TFactory, TFactoryDeps>;
14
+ }) & {
15
+ token?: InjectionToken<ReturnType<TFactory>>;
16
+ extraProviders?: Provider;
17
+ };
18
+ type InjectFn<TFactory extends (...args: any[]) => any, TFactoryReturn extends ReturnType<TFactory> = ReturnType<TFactory>> = {
19
+ (): TFactoryReturn;
20
+ (injectOptions: InjectOptions & {
21
+ optional?: false;
22
+ }): TFactoryReturn;
23
+ (injectOptions: InjectOptions): TFactoryReturn | null;
24
+ };
25
+ export type CreateInjectionTokenReturn<TFactory extends (...args: any[]) => any, TFactoryReturn extends ReturnType<TFactory> = ReturnType<TFactory>> = [InjectFn<TFactory, TFactoryReturn>, (value?: TFactoryReturn) => Provider, InjectionToken<TFactoryReturn>];
26
+ export declare function createInjectionToken<TFactory extends (...args: any[]) => any, TFactoryDeps extends Parameters<TFactory> = Parameters<TFactory>, TFactoryReturn extends ReturnType<TFactory> = ReturnType<TFactory>>(factory: TFactory, options?: CreateInjectionTokenOptions<TFactory, TFactoryDeps>): CreateInjectionTokenReturn<TFactory, TFactoryReturn>;
27
+ export {};
package/lib/utils/is.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import { ElementRef } from '@angular/core';
2
2
  import * as THREE from 'three';
3
- import type { NgtEquConfig, NgtGLRenderer } from '../types';
3
+ import type { NgtRenderer } from '../store';
4
+ import type { NgtEquConfig } from '../types';
4
5
  export declare const is: {
5
6
  obj: (a: unknown) => a is object;
6
7
  material: (a: unknown) => a is THREE.Material;
7
- geometry: (a: unknown) => a is THREE.BufferGeometry;
8
+ geometry: (a: unknown) => a is THREE.BufferGeometry<THREE.NormalBufferAttributes>;
8
9
  orthographicCamera: (a: unknown) => a is THREE.OrthographicCamera;
9
10
  perspectiveCamera: (a: unknown) => a is THREE.PerspectiveCamera;
10
11
  camera: (a: unknown) => a is THREE.Camera;
@@ -13,7 +14,7 @@ export declare const is: {
13
14
  object3D: (a: unknown) => a is THREE.Object3D<THREE.Event>;
14
15
  instance: (a: unknown) => a is any;
15
16
  ref: (a: unknown) => a is ElementRef<any>;
16
- colorSpaceExist: <T extends object | NgtGLRenderer | THREE.Texture, P = T extends NgtGLRenderer ? {
17
+ colorSpaceExist: <T extends object | NgtRenderer | THREE.Texture, P = T extends NgtRenderer ? {
17
18
  outputColorSpace: string;
18
19
  } : {
19
20
  colorSpace: string;
@@ -1,7 +1,18 @@
1
1
  import * as THREE from 'three';
2
- import type { NgtDpr, NgtGLOptions, NgtIntersection, NgtObjectMap, NgtSize } from '../types';
2
+ import type { NgtGLOptions } from '../canvas';
3
+ import type { NgtIntersection } from '../events';
4
+ import type { NgtDpr, NgtSize } from '../store';
3
5
  export declare function makeId(event?: NgtIntersection): string;
4
6
  export declare function makeDpr(dpr: NgtDpr, window?: Window): number;
5
7
  export declare function makeDefaultCamera(isOrthographic: boolean, size: NgtSize): THREE.OrthographicCamera | THREE.PerspectiveCamera;
6
8
  export declare function makeDefaultRenderer(glOptions: NgtGLOptions, canvasElement: HTMLCanvasElement): THREE.WebGLRenderer;
9
+ export type NgtObjectMap = {
10
+ nodes: {
11
+ [name: string]: THREE.Object3D;
12
+ };
13
+ materials: {
14
+ [name: string]: THREE.Material;
15
+ };
16
+ [key: string]: any;
17
+ };
7
18
  export declare function makeObjectGraph(object: THREE.Object3D): NgtObjectMap;
@@ -1,2 +1,2 @@
1
- import { ChangeDetectorRef } from '@angular/core';
2
- export declare function safeDetectChanges(cdr: ChangeDetectorRef | undefined | null): void;
1
+ import type { ChangeDetectorRef } from '@angular/core';
2
+ export declare function safeDetectChanges(...cdrs: (ChangeDetectorRef | undefined | null)[]): void;
@@ -0,0 +1,17 @@
1
+ import { type CreateComputedOptions, type CreateSignalOptions, type Signal } from '@angular/core';
2
+ export type NgtSignalStore<State extends object> = {
3
+ select<Key1 extends keyof State, Key2 extends keyof State[Key1], Key3 extends keyof State[Key1][Key2], Key4 extends keyof State[Key1][Key2][Key3]>(key1: Key1, key2: Key2, key3: Key3, key4: Key4, options?: CreateComputedOptions<State[Key1][Key2][Key3][Key4]>): Signal<State[Key1][Key2][Key3][Key4]>;
4
+ select<Key1 extends keyof State, Key2 extends keyof State[Key1], Key3 extends keyof State[Key1][Key2]>(key1: Key1, key2: Key2, key3: Key3, options?: CreateComputedOptions<State[Key1][Key2][Key3]>): Signal<State[Key1][Key2][Key3]>;
5
+ select<Key1 extends keyof State, Key2 extends keyof State[Key1]>(key1: Key1, key2: Key2, options?: CreateComputedOptions<State[Key1][Key2]>): Signal<State[Key1][Key2]>;
6
+ select<Key extends keyof State>(key: Key, options?: CreateComputedOptions<State[Key]>): Signal<State[Key]>;
7
+ select(options?: CreateComputedOptions<State>): Signal<State>;
8
+ get<Key1 extends keyof State, Key2 extends keyof State[Key1], Key3 extends keyof State[Key1][Key2], Key4 extends keyof State[Key1][Key2][Key3]>(key1: Key1, key2: Key2, key3: Key3, key4: Key4): State[Key1][Key2][Key3][Key4];
9
+ get<Key1 extends keyof State, Key2 extends keyof State[Key1], Key3 extends keyof State[Key1][Key2]>(key1: Key1, key2: Key2, key3: Key3): State[Key1][Key2][Key3];
10
+ get<Key1 extends keyof State, Key2 extends keyof State[Key1]>(key1: Key1, key2: Key2): State[Key1][Key2];
11
+ get<Key extends keyof State>(key: Key): State[Key];
12
+ get(): State;
13
+ set(state: Partial<State> | ((previous: State) => Partial<State>)): void;
14
+ patch(state: Partial<State>): void;
15
+ state: Signal<State>;
16
+ };
17
+ export declare function signalStore<State extends object>(initialState?: Partial<State> | ((storeApi: Pick<NgtSignalStore<State>, 'get' | 'set' | 'patch'>) => Partial<State>), options?: CreateSignalOptions<State>): NgtSignalStore<State>;
@@ -1,4 +1,4 @@
1
- import type { NgtCameraManual, NgtSize } from '../types';
1
+ import type { NgtCameraManual, NgtSize } from '../store';
2
2
  export declare function checkNeedsUpdate(value: unknown): void;
3
3
  export declare function checkUpdate(value: unknown): void;
4
4
  export declare function updateCamera(camera: NgtCameraManual, size: NgtSize): void;