1
- import { DestroyRef , inject , Injector , signal } from '@angular/core' ;
1
+ import { DestroyRef , inject , Injector } from '@angular/core' ;
2
+ import { signalState } from 'angular-three' ;
2
3
import { assertInjector } from 'ngxtension/assert-injector' ;
3
4
import * as THREE from 'three' ;
4
5
5
- export function injectProgress ( injector ?: Injector ) {
6
- return assertInjector ( injectProgress , injector , ( ) => {
7
- const progress = signal < {
6
+ export function progress ( injector ?: Injector ) {
7
+ return assertInjector ( progress , injector , ( ) => {
8
+ const progressState = signalState < {
8
9
errors : string [ ] ;
9
10
active : boolean ;
10
11
progress : number ;
@@ -21,34 +22,32 @@ export function injectProgress(injector?: Injector) {
21
22
let saveLastTotalLoaded = 0 ;
22
23
23
24
THREE . DefaultLoadingManager . onStart = ( item , loaded , total ) => {
24
- progress . update ( ( prev ) => ( {
25
- ...prev ,
25
+ progressState . update ( {
26
26
active : true ,
27
27
item,
28
28
loaded,
29
29
total,
30
30
progress : ( ( loaded - saveLastTotalLoaded ) / ( total - saveLastTotalLoaded ) ) * 100 ,
31
- } ) ) ;
31
+ } ) ;
32
32
} ;
33
33
34
34
THREE . DefaultLoadingManager . onLoad = ( ) => {
35
- progress . update ( ( prev ) => ( { ... prev , active : false } ) ) ;
35
+ progressState . update ( { active : false } ) ;
36
36
} ;
37
37
38
38
THREE . DefaultLoadingManager . onError = ( url ) => {
39
- progress . update ( ( prev ) => ( { ... prev , errors : [ ...prev . errors , url ] } ) ) ;
39
+ progressState . update ( ( prev ) => ( { errors : [ ...prev . errors , url ] } ) ) ;
40
40
} ;
41
41
42
42
THREE . DefaultLoadingManager . onProgress = ( item , loaded , total ) => {
43
43
if ( loaded === total ) saveLastTotalLoaded = total ;
44
44
45
- progress . update ( ( prev ) => ( {
46
- ...prev ,
45
+ progressState . update ( {
47
46
item,
48
47
loaded,
49
48
total,
50
49
progress : ( ( loaded - saveLastTotalLoaded ) / ( total - saveLastTotalLoaded ) ) * 100 || 100 ,
51
- } ) ) ;
50
+ } ) ;
52
51
} ;
53
52
54
53
inject ( DestroyRef ) . onDestroy ( ( ) => {
@@ -58,6 +57,12 @@ export function injectProgress(injector?: Injector) {
58
57
THREE . DefaultLoadingManager . onProgress = defaultOnProgress ;
59
58
} ) ;
60
59
61
- return progress . asReadonly ( ) ;
60
+ return progressState ;
62
61
} ) ;
63
62
}
63
+
64
+ /**
65
+ * @deprecated Use `progress` instead. Will be removed in v5.0.0
66
+ * @since v4.0.0
67
+ */
68
+ export const injectProgress = progress ;
0 commit comments