1- import { DestroyRef , inject , Injector , signal } from '@angular/core' ;
1+ import { DestroyRef , inject , Injector } from '@angular/core' ;
2+ import { signalState } from 'angular-three' ;
23import { assertInjector } from 'ngxtension/assert-injector' ;
34import * as THREE from 'three' ;
45
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 < {
89 errors : string [ ] ;
910 active : boolean ;
1011 progress : number ;
@@ -21,34 +22,32 @@ export function injectProgress(injector?: Injector) {
2122 let saveLastTotalLoaded = 0 ;
2223
2324 THREE . DefaultLoadingManager . onStart = ( item , loaded , total ) => {
24- progress . update ( ( prev ) => ( {
25- ...prev ,
25+ progressState . update ( {
2626 active : true ,
2727 item,
2828 loaded,
2929 total,
3030 progress : ( ( loaded - saveLastTotalLoaded ) / ( total - saveLastTotalLoaded ) ) * 100 ,
31- } ) ) ;
31+ } ) ;
3232 } ;
3333
3434 THREE . DefaultLoadingManager . onLoad = ( ) => {
35- progress . update ( ( prev ) => ( { ... prev , active : false } ) ) ;
35+ progressState . update ( { active : false } ) ;
3636 } ;
3737
3838 THREE . DefaultLoadingManager . onError = ( url ) => {
39- progress . update ( ( prev ) => ( { ... prev , errors : [ ...prev . errors , url ] } ) ) ;
39+ progressState . update ( ( prev ) => ( { errors : [ ...prev . errors , url ] } ) ) ;
4040 } ;
4141
4242 THREE . DefaultLoadingManager . onProgress = ( item , loaded , total ) => {
4343 if ( loaded === total ) saveLastTotalLoaded = total ;
4444
45- progress . update ( ( prev ) => ( {
46- ...prev ,
45+ progressState . update ( {
4746 item,
4847 loaded,
4948 total,
5049 progress : ( ( loaded - saveLastTotalLoaded ) / ( total - saveLastTotalLoaded ) ) * 100 || 100 ,
51- } ) ) ;
50+ } ) ;
5251 } ;
5352
5453 inject ( DestroyRef ) . onDestroy ( ( ) => {
@@ -58,6 +57,12 @@ export function injectProgress(injector?: Injector) {
5857 THREE . DefaultLoadingManager . onProgress = defaultOnProgress ;
5958 } ) ;
6059
61- return progress . asReadonly ( ) ;
60+ return progressState ;
6261 } ) ;
6362}
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