angular-three 4.0.0-next.9 → 4.0.0-next.90

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/README.md +38 -183
  2. package/dom/lib/canvas.d.ts +6 -4
  3. package/dom/lib/renderer.d.ts +2 -1
  4. package/fesm2022/angular-three-dom.mjs +21 -12
  5. package/fesm2022/angular-three-dom.mjs.map +1 -1
  6. package/fesm2022/angular-three-testing.mjs +3 -3
  7. package/fesm2022/angular-three.mjs +275 -194
  8. package/fesm2022/angular-three.mjs.map +1 -1
  9. package/lib/directives/common.d.ts +1 -1
  10. package/lib/directives/selection.d.ts +5 -4
  11. package/lib/html.d.ts +1 -1
  12. package/lib/portal.d.ts +4 -4
  13. package/lib/renderer/renderer.d.ts +9 -3
  14. package/lib/three-types.d.ts +130 -418
  15. package/lib/types.d.ts +5 -1
  16. package/lib/utils/before-render.d.ts +10 -21
  17. package/lib/utils/is.d.ts +1 -0
  18. package/lib/utils/make.d.ts +2 -1
  19. package/metadata.json +37469 -0
  20. package/package.json +3 -26
  21. package/testing/lib/utils/web-gl-rendering-context.d.ts +1 -1
  22. package/web-types.json +37475 -0
  23. package/plugin/README.md +0 -11
  24. package/plugin/generators.json +0 -27
  25. package/plugin/src/generators/add-soba/compat.d.ts +0 -2
  26. package/plugin/src/generators/add-soba/compat.js +0 -6
  27. package/plugin/src/generators/add-soba/compat.js.map +0 -1
  28. package/plugin/src/generators/add-soba/generator.d.ts +0 -3
  29. package/plugin/src/generators/add-soba/generator.js +0 -77
  30. package/plugin/src/generators/add-soba/generator.js.map +0 -1
  31. package/plugin/src/generators/add-soba/schema.json +0 -4
  32. package/plugin/src/generators/init/compat.d.ts +0 -2
  33. package/plugin/src/generators/init/compat.js +0 -6
  34. package/plugin/src/generators/init/compat.js.map +0 -1
  35. package/plugin/src/generators/init/files/experience/experience.component.ts__tmpl__ +0 -28
  36. package/plugin/src/generators/init/generator.d.ts +0 -6
  37. package/plugin/src/generators/init/generator.js +0 -154
  38. package/plugin/src/generators/init/generator.js.map +0 -1
  39. package/plugin/src/generators/init/schema.json +0 -13
  40. package/plugin/src/generators/utils.d.ts +0 -2
  41. package/plugin/src/generators/utils.js +0 -35
  42. package/plugin/src/generators/utils.js.map +0 -1
  43. package/plugin/src/generators/version.d.ts +0 -17
  44. package/plugin/src/generators/version.js +0 -21
  45. package/plugin/src/generators/version.js.map +0 -1
  46. package/plugin/src/index.d.ts +0 -0
  47. package/plugin/src/index.js +0 -1
  48. package/plugin/src/index.js.map +0 -1
@@ -4,32 +4,21 @@ import type { NgtBeforeRenderRecord } from '../types';
4
4
  * `injectBeforeRender` invokes its callback on every frame. Hence, the notion of tracking
5
5
  * changes (i.e: signals) does not really matter since we're getting latest values of the things we need on every frame anyway.
6
6
  *
7
- * If `priority` is dynamic, consumers should set up `injectBeforeRender` in
8
- * an `effect` and track `priority` changes. Make use of `onCleanup` to clean up
9
- * previous before render subscription
7
+ * If `priority` is a Signal, `injectBeforeRender` will set up an Effect internally and returns the `EffectRef#destroy` instead.
10
8
  *
11
9
  * @example
12
10
  * ```ts
13
- * const injector = inject(Injector);
14
- *
15
- * effect((onCleanup) => {
16
- * const priority = this.priority(); // track priority
17
- *
18
- * const sub = injectBeforeRender(
19
- * ({ gl, camera }) => {
20
- * // before render logic
21
- * },
22
- * {
23
- * priority,
24
- * injector, // injector is needed since injectBeforeRender is invoked in effect body
25
- * }
26
- * });
27
- *
28
- * onCleanup(() => sub());
29
- * });
11
+ * const destroy = injectBeforeRender(
12
+ * ({ gl, camera }) => {
13
+ * // before render logic
14
+ * },
15
+ * {
16
+ * priority: this.priority, // this.priority is a Signal<number>
17
+ * }
18
+ * )
30
19
  * ```
31
20
  */
32
21
  export declare function injectBeforeRender(cb: NgtBeforeRenderRecord['callback'], { priority, injector }?: {
33
- priority?: number;
22
+ priority?: number | (() => number);
34
23
  injector?: Injector;
35
24
  }): () => void;
package/lib/utils/is.d.ts CHANGED
@@ -14,6 +14,7 @@ export declare const is: {
14
14
  instance: (a: unknown) => a is NgtInstanceNode;
15
15
  object3D: (a: unknown) => a is THREE.Object3D;
16
16
  three: <TThreeEntity extends object, TKey extends keyof TThreeEntity = keyof TThreeEntity>(a: unknown, isKey: TKey extends `is${infer K}` ? TKey : never) => a is TThreeEntity;
17
+ colorRepresentation: (a: unknown) => a is THREE.ColorRepresentation;
17
18
  colorSpaceExist: <T extends NgtRendererLike | THREE.Texture | object, P = T extends NgtRendererLike ? {
18
19
  outputColorSpace: string;
19
20
  } : {
@@ -3,10 +3,11 @@ import type { NgtCanvasElement, NgtDpr, NgtGLOptions, NgtIntersection, NgtSize }
3
3
  export declare function makeId(event?: NgtIntersection): string;
4
4
  export declare function makeDpr(dpr: NgtDpr, window?: Window): number;
5
5
  export declare function makeRendererInstance<TCanvas extends NgtCanvasElement>(glOptions: NgtGLOptions, canvas: TCanvas): THREE.WebGLRenderer;
6
- export declare function makeCameraInstance(isOrthographic: boolean, size: NgtSize): THREE.OrthographicCamera | THREE.PerspectiveCamera;
6
+ export declare function makeCameraInstance(isOrthographic: boolean, size: NgtSize): THREE.PerspectiveCamera | THREE.OrthographicCamera;
7
7
  export type NgtObjectMap = {
8
8
  nodes: Record<string, THREE.Object3D<any>>;
9
9
  materials: Record<string, THREE.Material>;
10
+ meshes: Record<string, THREE.Mesh>;
10
11
  [key: string]: any;
11
12
  };
12
13
  export declare function makeObjectGraph(object: THREE.Object3D): NgtObjectMap;