angular-three 2.0.0-beta.31 → 2.0.0-beta.310

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 (152) hide show
  1. package/README.md +221 -4
  2. package/esm2022/index.mjs +13 -13
  3. package/esm2022/lib/canvas.mjs +128 -200
  4. package/esm2022/lib/directives/args.mjs +46 -20
  5. package/esm2022/lib/directives/selection.mjs +65 -0
  6. package/esm2022/lib/dom/events.mjs +2 -2
  7. package/esm2022/lib/events.mjs +33 -31
  8. package/esm2022/lib/html.mjs +40 -0
  9. package/esm2022/lib/instance.mjs +43 -36
  10. package/esm2022/lib/loader.mjs +62 -31
  11. package/esm2022/lib/loop.mjs +28 -25
  12. package/esm2022/lib/pipes/hexify.mjs +67 -0
  13. package/esm2022/lib/portal.mjs +173 -193
  14. package/esm2022/lib/renderer/catalogue.mjs +2 -2
  15. package/esm2022/lib/renderer/constants.mjs +5 -6
  16. package/esm2022/lib/renderer/index.mjs +387 -234
  17. package/esm2022/lib/renderer/state.mjs +49 -0
  18. package/esm2022/lib/renderer/utils.mjs +107 -95
  19. package/esm2022/lib/roots.mjs +85 -61
  20. package/esm2022/lib/routed-scene.mjs +6 -7
  21. package/esm2022/lib/store.mjs +170 -194
  22. package/esm2022/lib/three-types.mjs +2 -2
  23. package/esm2022/lib/types.mjs +1 -1
  24. package/esm2022/lib/utils/apply-props.mjs +24 -28
  25. package/esm2022/lib/utils/attach.mjs +12 -9
  26. package/esm2022/lib/utils/before-render.mjs +12 -0
  27. package/esm2022/lib/utils/is.mjs +6 -5
  28. package/esm2022/lib/utils/make.mjs +19 -17
  29. package/esm2022/lib/utils/non-nullish.mjs +7 -0
  30. package/esm2022/lib/utils/object-events.mjs +92 -0
  31. package/esm2022/lib/utils/parameters.mjs +70 -0
  32. package/esm2022/lib/utils/resolve-ref.mjs +8 -0
  33. package/esm2022/lib/utils/signal-store.mjs +52 -58
  34. package/esm2022/lib/utils/update.mjs +8 -4
  35. package/esm2022/testing/angular-three-testing.mjs +5 -0
  36. package/esm2022/testing/index.mjs +3 -0
  37. package/esm2022/testing/lib/test-bed.mjs +130 -0
  38. package/esm2022/testing/lib/test-canvas.mjs +45 -0
  39. package/esm2022/testing/lib/utils/mock-canvas.mjs +37 -0
  40. package/esm2022/testing/lib/utils/web-gl-rendering-context.mjs +752 -0
  41. package/fesm2022/angular-three-testing.mjs +966 -0
  42. package/fesm2022/angular-three-testing.mjs.map +1 -0
  43. package/fesm2022/angular-three.mjs +2506 -2539
  44. package/fesm2022/angular-three.mjs.map +1 -1
  45. package/index.d.ts +14 -12
  46. package/lib/canvas.d.ts +366 -96
  47. package/lib/directives/args.d.ts +14 -7
  48. package/lib/directives/selection.d.ts +17 -0
  49. package/lib/dom/events.d.ts +2 -3
  50. package/lib/events.d.ts +4 -80
  51. package/lib/html.d.ts +17 -0
  52. package/lib/instance.d.ts +3 -35
  53. package/lib/loader.d.ts +18 -6
  54. package/lib/loop.d.ts +11 -59
  55. package/lib/pipes/hexify.d.ts +20 -0
  56. package/lib/portal.d.ts +54 -48
  57. package/lib/renderer/catalogue.d.ts +7 -3
  58. package/lib/renderer/constants.d.ts +4 -5
  59. package/lib/renderer/index.d.ts +64 -4
  60. package/lib/renderer/state.d.ts +24 -0
  61. package/lib/renderer/utils.d.ts +9 -27
  62. package/lib/roots.d.ts +9 -7
  63. package/lib/store.d.ts +13 -141
  64. package/lib/three-types.d.ts +500 -147
  65. package/lib/types.d.ts +291 -0
  66. package/lib/utils/apply-props.d.ts +1 -3
  67. package/lib/utils/attach.d.ts +3 -5
  68. package/lib/{before-render.d.ts → utils/before-render.d.ts} +1 -1
  69. package/lib/utils/is.d.ts +13 -14
  70. package/lib/utils/make.d.ts +7 -13
  71. package/lib/utils/non-nullish.d.ts +4 -0
  72. package/lib/utils/object-events.d.ts +34 -0
  73. package/lib/utils/parameters.d.ts +20 -0
  74. package/lib/utils/resolve-ref.d.ts +2 -0
  75. package/lib/utils/signal-store.d.ts +13 -4
  76. package/lib/utils/update.d.ts +1 -1
  77. package/metadata.json +1 -1
  78. package/package.json +40 -24
  79. package/plugin/generators.json +8 -30
  80. package/plugin/package.json +3 -22
  81. package/plugin/src/generators/add-soba/compat.js.map +1 -0
  82. package/plugin/src/generators/add-soba/generator.d.ts +3 -0
  83. package/plugin/src/generators/add-soba/generator.js +78 -0
  84. package/plugin/src/generators/add-soba/generator.js.map +1 -0
  85. package/plugin/src/generators/add-soba/schema.json +4 -0
  86. package/plugin/src/generators/init/compat.d.ts +1 -3
  87. package/plugin/src/generators/init/files/experience/experience.component.ts__tmpl__ +18 -7
  88. package/plugin/src/generators/init/generator.d.ts +5 -5
  89. package/plugin/src/generators/init/generator.js +100 -106
  90. package/plugin/src/generators/init/generator.js.map +1 -1
  91. package/plugin/src/generators/init/schema.json +8 -12
  92. package/plugin/src/generators/utils.js +4 -3
  93. package/plugin/src/generators/utils.js.map +1 -1
  94. package/plugin/src/generators/version.d.ts +17 -0
  95. package/plugin/src/generators/version.js +21 -0
  96. package/plugin/src/generators/version.js.map +1 -0
  97. package/plugin/src/index.d.ts +0 -3
  98. package/plugin/src/index.js +0 -9
  99. package/plugin/src/index.js.map +1 -1
  100. package/testing/README.md +3 -0
  101. package/testing/index.d.ts +2 -0
  102. package/testing/lib/test-bed.d.ts +38 -0
  103. package/testing/lib/test-canvas.d.ts +11 -0
  104. package/testing/lib/utils/mock-canvas.d.ts +5 -0
  105. package/testing/lib/utils/web-gl-rendering-context.d.ts +16 -0
  106. package/testing/package.json +3 -0
  107. package/web-types.json +1 -1
  108. package/esm2022/lib/before-render.mjs +0 -13
  109. package/esm2022/lib/directives/common.mjs +0 -41
  110. package/esm2022/lib/directives/key.mjs +0 -29
  111. package/esm2022/lib/directives/parent.mjs +0 -35
  112. package/esm2022/lib/ref.mjs +0 -48
  113. package/esm2022/lib/renderer/store.mjs +0 -408
  114. package/esm2022/lib/utils/safe-detect-changes.mjs +0 -17
  115. package/lib/directives/common.d.ts +0 -15
  116. package/lib/directives/key.d.ts +0 -10
  117. package/lib/directives/parent.d.ts +0 -11
  118. package/lib/ref.d.ts +0 -8
  119. package/lib/renderer/store.d.ts +0 -67
  120. package/lib/utils/safe-detect-changes.d.ts +0 -2
  121. package/plugin/migrations.json +0 -16
  122. package/plugin/src/generators/init/files/experience/experience.component.html__tmpl__ +0 -4
  123. package/plugin/src/generators/init-cannon/compat.js.map +0 -1
  124. package/plugin/src/generators/init-cannon/generator.d.ts +0 -2
  125. package/plugin/src/generators/init-cannon/generator.js +0 -23
  126. package/plugin/src/generators/init-cannon/generator.js.map +0 -1
  127. package/plugin/src/generators/init-cannon/schema.json +0 -6
  128. package/plugin/src/generators/init-postprocessing/compat.d.ts +0 -2
  129. package/plugin/src/generators/init-postprocessing/compat.js +0 -6
  130. package/plugin/src/generators/init-postprocessing/compat.js.map +0 -1
  131. package/plugin/src/generators/init-postprocessing/generator.d.ts +0 -2
  132. package/plugin/src/generators/init-postprocessing/generator.js +0 -21
  133. package/plugin/src/generators/init-postprocessing/generator.js.map +0 -1
  134. package/plugin/src/generators/init-postprocessing/schema.json +0 -6
  135. package/plugin/src/generators/init-soba/compat.d.ts +0 -2
  136. package/plugin/src/generators/init-soba/compat.js +0 -6
  137. package/plugin/src/generators/init-soba/compat.js.map +0 -1
  138. package/plugin/src/generators/init-soba/generator.d.ts +0 -2
  139. package/plugin/src/generators/init-soba/generator.js +0 -27
  140. package/plugin/src/generators/init-soba/generator.js.map +0 -1
  141. package/plugin/src/generators/init-soba/schema.json +0 -6
  142. package/plugin/src/generators/versions.d.ts +0 -13
  143. package/plugin/src/generators/versions.js +0 -17
  144. package/plugin/src/generators/versions.js.map +0 -1
  145. package/plugin/src/migrations/migrate-to-ngxtension/compat.d.ts +0 -2
  146. package/plugin/src/migrations/migrate-to-ngxtension/compat.js +0 -6
  147. package/plugin/src/migrations/migrate-to-ngxtension/compat.js.map +0 -1
  148. package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.d.ts +0 -2
  149. package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.js +0 -41
  150. package/plugin/src/migrations/migrate-to-ngxtension/migrate-to-ngxtension.js.map +0 -1
  151. /package/plugin/src/generators/{init-cannon → add-soba}/compat.d.ts +0 -0
  152. /package/plugin/src/generators/{init-cannon → add-soba}/compat.js +0 -0
package/lib/store.d.ts CHANGED
@@ -1,143 +1,15 @@
1
- /// <reference types="webxr" />
2
- import { ElementRef, InjectionToken, Injector } from '@angular/core';
3
- import { type Observable } from 'rxjs';
4
- import * as THREE from 'three';
5
- import type { NgtCamera, NgtDomEvent, NgtEventManager, NgtPointerCaptureTarget, NgtThreeEvent } from './events';
6
- import type { NgtInstanceNode } from './instance';
7
- import { type NgtLoop } from './loop';
8
- import { type NgtSignalStore } from './utils/signal-store';
9
- export type NgtRenderer = {
10
- render: (scene: THREE.Scene, camera: THREE.Camera) => any;
11
- };
12
- export type NgtCameraManual = NgtCamera & {
13
- manual?: boolean;
14
- };
15
- export type NgtDpr = number | [min: number, max: number];
16
- export type NgtSize = {
17
- width: number;
18
- height: number;
19
- top: number;
20
- left: number;
21
- };
22
- export type NgtViewport = NgtSize & {
23
- /** The initial pixel ratio */
24
- initialDpr: number;
25
- /** Current pixel ratio */
26
- dpr: number;
27
- /** size.width / viewport.width */
28
- factor: number;
29
- /** Camera distance */
30
- distance: number;
31
- /** Camera aspect ratio: width / height */
32
- aspect: number;
33
- };
34
- export type NgtPerformance = {
35
- /** Current performance normal, between min and max */
36
- current: number;
37
- /** How low the performance can go, between 0 and max */
38
- min: number;
39
- /** How high the performance can go, between min and max */
40
- max: number;
41
- /** Time until current returns to max in ms */
42
- debounce: number;
43
- /** Sets current to min, puts the system in regression */
44
- regress: () => void;
45
- };
46
- export type NgtRenderState = NgtState & {
47
- delta: number;
48
- frame?: XRFrame;
49
- };
50
- export type NgtBeforeRenderEvent<TObject extends NgtInstanceNode = NgtInstanceNode> = {
51
- state: NgtRenderState;
52
- object: TObject;
53
- };
54
- export type NgtBeforeRenderRecord = {
55
- callback: (state: NgtRenderState) => void;
56
- store: NgtSignalStore<NgtState>;
57
- priority?: number;
58
- };
59
- export type NgtInternalState = {
60
- active: boolean;
61
- priority: number;
62
- frames: number;
63
- lastEvent: ElementRef<NgtDomEvent | null>;
64
- interaction: THREE.Object3D[];
65
- hovered: Map<string, NgtThreeEvent<NgtDomEvent>>;
66
- capturedMap: Map<number, Map<THREE.Object3D, NgtPointerCaptureTarget>>;
67
- initialClick: [x: number, y: number];
68
- initialHits: THREE.Object3D[];
69
- subscribers: NgtBeforeRenderRecord[];
70
- subscribe: (callback: NgtBeforeRenderRecord['callback'], priority?: number, store?: NgtSignalStore<NgtState>) => () => void;
71
- };
72
- export type NgtState = {
73
- /** when all building blocks are initialized */
74
- ready: boolean;
75
- /** The instance of the renderer */
76
- gl: THREE.WebGLRenderer;
77
- /** Default camera */
78
- camera: NgtCameraManual;
79
- /** Default scene */
80
- scene: THREE.Scene;
81
- /** Default raycaster */
82
- raycaster: THREE.Raycaster;
83
- /** Default clock */
84
- clock: THREE.Clock;
85
- /** Event layer interface, contains the event handler and the node they're connected to */
86
- events: NgtEventManager<any>;
87
- /** XR interface */
88
- xr: {
89
- connect: () => void;
90
- disconnect: () => void;
91
- };
92
- /** Currently used controls */
93
- controls: THREE.EventDispatcher | null;
94
- /** Normalized event coordinates */
95
- pointer: THREE.Vector2;
96
- legacy: boolean;
97
- /** Shortcut to gl.outputColorSpace = THREE.LinearSRGBColorSpace */
98
- linear: boolean;
99
- /** Shortcut to gl.toneMapping = NoTonemapping */
100
- flat: boolean;
101
- /** Render loop flags */
102
- frameloop: 'always' | 'demand' | 'never';
103
- /** Adaptive performance interface */
104
- performance: NgtPerformance;
105
- /** Reactive pixel-size of the canvas */
106
- size: NgtSize;
107
- /** Reactive size of the viewport in threejs units */
108
- viewport: NgtViewport & {
109
- getCurrentViewport: (camera?: NgtCamera, target?: THREE.Vector3 | Parameters<THREE.Vector3['set']>, size?: NgtSize) => Omit<NgtViewport, 'dpr' | 'initialDpr'>;
110
- };
111
- /** Flags the canvas for render, but doesn't render in itself */
112
- invalidate: (frames?: number) => void;
113
- /** Advance (render) one step */
114
- advance: (timestamp: number, runGlobalEffects?: boolean) => void;
115
- /** Shortcut to setting the event layer */
116
- setEvents: (events: Partial<NgtEventManager<any>>) => void;
117
- /**
118
- * Shortcut to manual sizing
119
- */
120
- setSize: (width: number, height: number, top?: number, left?: number) => void;
121
- /** Shortcut to manual setting the pixel ratio */
122
- setDpr: (dpr: NgtDpr) => void;
123
- /** Shortcut to frameloop flags */
124
- setFrameloop: (frameloop?: 'always' | 'demand' | 'never') => void;
125
- /** When the canvas was clicked but nothing was hit */
126
- /** PointerMissed Observable */
127
- pointerMissed$: Observable<MouseEvent>;
128
- /** If this state model is layerd (via createPortal) then this contains the previous layer */
129
- previousRoot: NgtSignalStore<NgtState> | null;
130
- /** Internals */
131
- internal: NgtInternalState;
132
- };
133
- declare function storeFactory(loop: NgtLoop, document: Document, injector: Injector, parent: NgtSignalStore<NgtState> | null): NgtSignalStore<NgtState>;
134
- export type NgtStore = ReturnType<typeof storeFactory>;
1
+ import { InjectOptions, InjectionToken } from '@angular/core';
2
+ import { NgtState } from './types';
3
+ import { NgtSignalStore } from './utils/signal-store';
4
+ declare function storeFactory(previousStore: NgtSignalStore<NgtState> | null): NgtSignalStore<NgtState>;
135
5
  export declare const NGT_STORE: InjectionToken<NgtSignalStore<NgtState>>;
136
- export declare const injectNgtStore: {
137
- (): NgtSignalStore<NgtState>;
138
- (injectOptions: import("@angular/core").InjectOptions & {
139
- optional?: false | undefined;
140
- }): NgtSignalStore<NgtState>;
141
- (injectOptions: import("@angular/core").InjectOptions): NgtSignalStore<NgtState> | null;
142
- }, provideNgtStore: (value?: NgtSignalStore<NgtState> | undefined) => import("@angular/core").Provider;
6
+ export declare function provideStore(store?: () => NgtSignalStore<NgtState>): {
7
+ provide: InjectionToken<NgtSignalStore<NgtState>>;
8
+ useFactory: typeof storeFactory;
9
+ };
10
+ export declare function injectStore(options: InjectOptions & {
11
+ optional?: false;
12
+ }): NgtSignalStore<NgtState>;
13
+ export declare function injectStore(options: InjectOptions): NgtSignalStore<NgtState> | null;
14
+ export declare function injectStore(): NgtSignalStore<NgtState>;
143
15
  export {};