angular-three 1.0.0-beta.3 → 1.0.0-beta.4

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.
package/esm2020/index.mjs CHANGED
@@ -3,4 +3,11 @@ export * from './lib/types';
3
3
  export * from './lib/di/catalogue';
4
4
  export * from './lib/directives/args';
5
5
  export * from './lib/directives/repeat';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY2FudmFzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpL2NhdGFsb2d1ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2FyZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9yZXBlYXQnO1xuIl19
6
+ export * from './lib/stores/store';
7
+ export * from './lib/stores/rx-store';
8
+ export * from './lib/utils/instance';
9
+ export * from './lib/utils/update';
10
+ export * from './lib/loader';
11
+ export * from './lib/di/ref';
12
+ export * from './lib/di/destroy';
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdGhyZWUvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2NhbnZhcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaS9jYXRhbG9ndWUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9hcmdzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvcmVwZWF0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0b3Jlcy9zdG9yZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zdG9yZXMvcngtc3RvcmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvaW5zdGFuY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvdXBkYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xvYWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaS9yZWYnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGkvZGVzdHJveSc7XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { ChangeDetectorRef, inject } from '@angular/core';
2
+ import { ReplaySubject } from 'rxjs';
3
+ /**
4
+ * A utility injection fn that can be used in other injection fn to provide the destroy capability.
5
+ */
6
+ export function injectNgtDestroy(cb) {
7
+ try {
8
+ const cdr = inject(ChangeDetectorRef);
9
+ const destroy$ = new ReplaySubject();
10
+ queueMicrotask(() => {
11
+ cdr.onDestroy(() => {
12
+ destroy$.next();
13
+ destroy$.complete();
14
+ cb?.();
15
+ });
16
+ });
17
+ return { destroy$, cdr };
18
+ }
19
+ catch (e) {
20
+ console.warn(`[NGT] injectNgtDestroy is being called outside of Constructor Context`);
21
+ return {};
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci10aHJlZS9zcmMvbGliL2RpL2Rlc3Ryb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWpEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEVBQWU7SUFDNUMsSUFBSTtRQUNBLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksYUFBYSxFQUFRLENBQUM7UUFFM0MsY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUNmLEdBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUM1QixRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDO0tBQzVCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDUixPQUFPLENBQUMsSUFBSSxDQUFDLHVFQUF1RSxDQUFDLENBQUM7UUFDdEYsT0FBTyxFQUF5QyxDQUFDO0tBQ3BEO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBpbmplY3QsIFZpZXdSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBBIHV0aWxpdHkgaW5qZWN0aW9uIGZuIHRoYXQgY2FuIGJlIHVzZWQgaW4gb3RoZXIgaW5qZWN0aW9uIGZuIHRvIHByb3ZpZGUgdGhlIGRlc3Ryb3kgY2FwYWJpbGl0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndERlc3Ryb3koY2I/OiAoKSA9PiB2b2lkKTogeyBkZXN0cm95JDogT2JzZXJ2YWJsZTx2b2lkPjsgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiB9IHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgICAgICBjb25zdCBkZXN0cm95JCA9IG5ldyBSZXBsYXlTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAgICAgcXVldWVNaWNyb3Rhc2soKCkgPT4ge1xuICAgICAgICAgICAgKGNkciBhcyBWaWV3UmVmKS5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgICAgICAgICBkZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICAgICAgICAgIGNiPy4oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyBkZXN0cm95JCwgY2RyIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYFtOR1RdIGluamVjdE5ndERlc3Ryb3kgaXMgYmVpbmcgY2FsbGVkIG91dHNpZGUgb2YgQ29uc3RydWN0b3IgQ29udGV4dGApO1xuICAgICAgICByZXR1cm4ge30gYXMgUmV0dXJuVHlwZTx0eXBlb2YgaW5qZWN0Tmd0RGVzdHJveT47XG4gICAgfVxufVxuIl19
@@ -0,0 +1,71 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { BehaviorSubject, distinctUntilChanged, filter, map, merge, of, switchMap, takeUntil, } from 'rxjs';
3
+ import { getLocalState } from '../utils/instance';
4
+ import { is } from '../utils/is';
5
+ import { injectNgtDestroy } from './destroy';
6
+ export function injectNgtRef(initialValue = null) {
7
+ let ref = new ElementRef(initialValue);
8
+ if (is.ref(initialValue)) {
9
+ ref = initialValue;
10
+ }
11
+ let lastValue = ref.nativeElement;
12
+ const cdRefs = [];
13
+ const ref$ = new BehaviorSubject(lastValue);
14
+ const { destroy$, cdr } = injectNgtDestroy(() => {
15
+ ref$.complete();
16
+ });
17
+ cdRefs.push(cdr);
18
+ const obs$ = ref$.asObservable().pipe(distinctUntilChanged(), takeUntil(destroy$));
19
+ const subscribe = (callback) => {
20
+ return obs$.subscribe((current) => {
21
+ callback(current, lastValue);
22
+ lastValue = current;
23
+ });
24
+ };
25
+ const $ = obs$.pipe(filter((value, index) => index > 0 || value != null), takeUntil(destroy$));
26
+ const children$ = (type = 'objects') => $.pipe(switchMap((instance) => {
27
+ const localState = getLocalState(instance);
28
+ if (localState.objects && localState.nonObjects) {
29
+ return merge(localState.objects, localState.nonObjects).pipe(map(() => {
30
+ try {
31
+ return type === 'both'
32
+ ? [...localState.objects.value, ...localState.nonObjects.value]
33
+ : localState[type].value;
34
+ }
35
+ catch (e) {
36
+ console.error(`[NGT] Exception in accessing children of ${instance}`);
37
+ return [];
38
+ }
39
+ }));
40
+ }
41
+ return of([]);
42
+ }), filter((children, index) => index > 0 || children.length > 0), takeUntil(destroy$));
43
+ Object.defineProperty(ref, 'nativeElement', {
44
+ set: (newVal) => {
45
+ if (ref.nativeElement !== newVal) {
46
+ ref$.next(newVal);
47
+ lastValue = ref.nativeElement;
48
+ ref.nativeElement = newVal;
49
+ // clone the cdRefs so we can mutate cdRefs in the loop
50
+ const cds = [...cdRefs];
51
+ for (let i = 0; i < cds.length; i++) {
52
+ const cd = cds[i];
53
+ // if a ChangeDetectorRef is destroyed, we stop tracking it and go to the next one
54
+ if (cd.destroyed) {
55
+ cdRefs.splice(i, 1);
56
+ continue;
57
+ }
58
+ // during creation phase, 'context' on ViewRef will be null
59
+ // we check the "context" to avoid running detectChanges during this phase.
60
+ // becuase there's nothing to check
61
+ if (cd['context']) {
62
+ cd.detectChanges();
63
+ }
64
+ }
65
+ }
66
+ },
67
+ get: () => ref$.value,
68
+ });
69
+ return Object.assign(ref, { subscribe, $, children$, useCDR: (cdr) => void cdRefs.push(cdr) });
70
+ }
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXRocmVlL3NyYy9saWIvZGkvcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsVUFBVSxFQUFXLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFDSCxlQUFlLEVBQ2Ysb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTixHQUFHLEVBQ0gsS0FBSyxFQUVMLEVBQUUsRUFFRixTQUFTLEVBQ1QsU0FBUyxHQUNaLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBZTdDLE1BQU0sVUFBVSxZQUFZLENBQUksZUFBK0MsSUFBSTtJQUMvRSxJQUFJLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBSSxZQUFpQixDQUFDLENBQUM7SUFFL0MsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQ3RCLEdBQUcsR0FBRyxZQUFZLENBQUM7S0FDdEI7SUFFRCxJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQ2xDLE1BQU0sTUFBTSxHQUFHLEVBQXlCLENBQUM7SUFDekMsTUFBTSxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUksU0FBUyxDQUFDLENBQUM7SUFFL0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7UUFDNUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFFbkYsTUFBTSxTQUFTLEdBQWlCLENBQUMsUUFBUSxFQUFFLEVBQUU7UUFDekMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDOUIsUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztZQUM3QixTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDO0lBRUYsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDZixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsRUFDcEQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUN0QixDQUFDO0lBRUYsTUFBTSxTQUFTLEdBQUcsQ0FBQyxPQUEwQyxTQUFTLEVBQUUsRUFBRSxDQUN0RSxDQUFDLENBQUMsSUFBSSxDQUNGLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1FBQ25CLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxRQUEyQixDQUFDLENBQUM7UUFDOUQsSUFBSSxVQUFVLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxVQUFVLEVBQUU7WUFDN0MsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUN4RCxHQUFHLENBQUMsR0FBRyxFQUFFO2dCQUNMLElBQUk7b0JBQ0EsT0FBTyxJQUFJLEtBQUssTUFBTTt3QkFDbEIsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO3dCQUMvRCxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztpQkFDaEM7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsUUFBUSxFQUFFLENBQUMsQ0FBQztvQkFDdEUsT0FBTyxFQUFFLENBQUM7aUJBQ2I7WUFDTCxDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7UUFFRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQzdELFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FDdEIsQ0FBQztJQUVOLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRTtRQUN4QyxHQUFHLEVBQUUsQ0FBQyxNQUFTLEVBQUUsRUFBRTtZQUNmLElBQUksR0FBRyxDQUFDLGFBQWEsS0FBSyxNQUFNLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRWxCLFNBQVMsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDO2dCQUM5QixHQUFHLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQztnQkFFM0IsdURBQXVEO2dCQUN2RCxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7Z0JBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNqQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2xCLGtGQUFrRjtvQkFDbEYsSUFBSyxFQUFjLENBQUMsU0FBUyxFQUFFO3dCQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDcEIsU0FBUztxQkFDWjtvQkFDRCwyREFBMkQ7b0JBQzNELDJFQUEyRTtvQkFDM0UsbUNBQW1DO29CQUNuQyxJQUFLLEVBQW1CLENBQUMsU0FBUyxDQUFDLEVBQUU7d0JBQ2pDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztxQkFDdEI7aUJBQ0o7YUFDSjtRQUNMLENBQUM7UUFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUs7S0FDeEIsQ0FBQyxDQUFDO0lBRUgsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQXNCLEVBQUUsRUFBRSxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdEgsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBWaWV3UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEJlaGF2aW9yU3ViamVjdCxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBmaWx0ZXIsXG4gICAgbWFwLFxuICAgIG1lcmdlLFxuICAgIE9ic2VydmFibGUsXG4gICAgb2YsXG4gICAgU3Vic2NyaXB0aW9uLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUgeyBOZ3RBbnlSZWNvcmQsIE5ndEluc3RhbmNlTm9kZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGdldExvY2FsU3RhdGUgfSBmcm9tICcuLi91dGlscy9pbnN0YW5jZSc7XG5pbXBvcnQgeyBpcyB9IGZyb20gJy4uL3V0aWxzL2lzJztcbmltcG9ydCB7IGluamVjdE5ndERlc3Ryb3kgfSBmcm9tICcuL2Rlc3Ryb3knO1xuXG50eXBlIFN1YnNjcmliZTxUPiA9IChjYWxsYmFjazogKGN1cnJlbnQ6IFQsIHByZXZpb3VzOiBUIHwgbnVsbCkgPT4gdm9pZCkgPT4gU3Vic2NyaXB0aW9uO1xuXG5leHBvcnQgdHlwZSBOZ3RJbmplY3RlZFJlZjxUPiA9IEVsZW1lbnRSZWY8VD4gJiB7XG4gICAgLyogYSBTdWJzY3JpYmUgZm4gdGhhdCBlbWl0cyBjdXJyZW50IGFuZCBwcmV2aW91cyB2YWx1ZS4gVXNlZnVsIGZvciBkZWJ1ZyAqL1xuICAgIHN1YnNjcmliZTogU3Vic2NyaWJlPFQ+O1xuICAgIC8qIGNvbnN1bWVycyBzaG91bGQgdXNlIHRoaXMgZm9yIGxpc3RlbmluZyB0byB2YWx1ZSBvZiB0aGlzIHJlZi4gVGhpcyBmaWx0ZXJzIG91dCBpbml0aWFsIG51bGwgdmFsdWUgKi9cbiAgICAkOiBPYnNlcnZhYmxlPFQ+O1xuICAgIC8qIGNvbnN1bWVycyBzaG91bGQgdXNlIHRoaXMgZm9yIGxpc3RlbnRpbmcgdG8gY2hpbGRyZW4gY2hhbmdlcyBvbiB0aGlzIHJlZiAqL1xuICAgIGNoaWxkcmVuJDogKHR5cGU/OiAnb2JqZWN0cycgfCAnbm9uT2JqZWN0cycgfCAnYm90aCcpID0+IE9ic2VydmFibGU8Tmd0SW5zdGFuY2VOb2RlW10+O1xuICAgIC8qIG5vdGlmeSB0aGlzIENEIHdoZW4gcmVmIHZhbHVlIGNoYW5nZXMgKi9cbiAgICB1c2VDRFI6IChjZHI6IENoYW5nZURldGVjdG9yUmVmKSA9PiB2b2lkO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5ndFJlZjxUPihpbml0aWFsVmFsdWU6IE5ndEluamVjdGVkUmVmPFQ+IHwgKFQgfCBudWxsKSA9IG51bGwpOiBOZ3RJbmplY3RlZFJlZjxUPiB7XG4gICAgbGV0IHJlZiA9IG5ldyBFbGVtZW50UmVmPFQ+KGluaXRpYWxWYWx1ZSBhcyBUKTtcblxuICAgIGlmIChpcy5yZWYoaW5pdGlhbFZhbHVlKSkge1xuICAgICAgICByZWYgPSBpbml0aWFsVmFsdWU7XG4gICAgfVxuXG4gICAgbGV0IGxhc3RWYWx1ZSA9IHJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IGNkUmVmcyA9IFtdIGFzIENoYW5nZURldGVjdG9yUmVmW107XG4gICAgY29uc3QgcmVmJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VD4obGFzdFZhbHVlKTtcblxuICAgIGNvbnN0IHsgZGVzdHJveSQsIGNkciB9ID0gaW5qZWN0Tmd0RGVzdHJveSgoKSA9PiB7XG4gICAgICAgIHJlZiQuY29tcGxldGUoKTtcbiAgICB9KTtcblxuICAgIGNkUmVmcy5wdXNoKGNkcik7XG5cbiAgICBjb25zdCBvYnMkID0gcmVmJC5hc09ic2VydmFibGUoKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbChkZXN0cm95JCkpO1xuXG4gICAgY29uc3Qgc3Vic2NyaWJlOiBTdWJzY3JpYmU8VD4gPSAoY2FsbGJhY2spID0+IHtcbiAgICAgICAgcmV0dXJuIG9icyQuc3Vic2NyaWJlKChjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICBjYWxsYmFjayhjdXJyZW50LCBsYXN0VmFsdWUpO1xuICAgICAgICAgICAgbGFzdFZhbHVlID0gY3VycmVudDtcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0ICQgPSBvYnMkLnBpcGUoXG4gICAgICAgIGZpbHRlcigodmFsdWUsIGluZGV4KSA9PiBpbmRleCA+IDAgfHwgdmFsdWUgIT0gbnVsbCksXG4gICAgICAgIHRha2VVbnRpbChkZXN0cm95JClcbiAgICApO1xuXG4gICAgY29uc3QgY2hpbGRyZW4kID0gKHR5cGU6ICdvYmplY3RzJyB8ICdub25PYmplY3RzJyB8ICdib3RoJyA9ICdvYmplY3RzJykgPT5cbiAgICAgICAgJC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChpbnN0YW5jZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlIGFzIE5ndEluc3RhbmNlTm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2FsU3RhdGUub2JqZWN0cyAmJiBsb2NhbFN0YXRlLm5vbk9iamVjdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lcmdlKGxvY2FsU3RhdGUub2JqZWN0cywgbG9jYWxTdGF0ZS5ub25PYmplY3RzKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZSA9PT0gJ2JvdGgnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFsuLi5sb2NhbFN0YXRlLm9iamVjdHMudmFsdWUsIC4uLmxvY2FsU3RhdGUubm9uT2JqZWN0cy52YWx1ZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbG9jYWxTdGF0ZVt0eXBlXS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtOR1RdIEV4Y2VwdGlvbiBpbiBhY2Nlc3NpbmcgY2hpbGRyZW4gb2YgJHtpbnN0YW5jZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKChjaGlsZHJlbiwgaW5kZXgpID0+IGluZGV4ID4gMCB8fCBjaGlsZHJlbi5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgIHRha2VVbnRpbChkZXN0cm95JClcbiAgICAgICAgKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZWYsICduYXRpdmVFbGVtZW50Jywge1xuICAgICAgICBzZXQ6IChuZXdWYWw6IFQpID0+IHtcbiAgICAgICAgICAgIGlmIChyZWYubmF0aXZlRWxlbWVudCAhPT0gbmV3VmFsKSB7XG4gICAgICAgICAgICAgICAgcmVmJC5uZXh0KG5ld1ZhbCk7XG5cbiAgICAgICAgICAgICAgICBsYXN0VmFsdWUgPSByZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICByZWYubmF0aXZlRWxlbWVudCA9IG5ld1ZhbDtcblxuICAgICAgICAgICAgICAgIC8vIGNsb25lIHRoZSBjZFJlZnMgc28gd2UgY2FuIG11dGF0ZSBjZFJlZnMgaW4gdGhlIGxvb3BcbiAgICAgICAgICAgICAgICBjb25zdCBjZHMgPSBbLi4uY2RSZWZzXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjZCA9IGNkc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgYSBDaGFuZ2VEZXRlY3RvclJlZiBpcyBkZXN0cm95ZWQsIHdlIHN0b3AgdHJhY2tpbmcgaXQgYW5kIGdvIHRvIHRoZSBuZXh0IG9uZVxuICAgICAgICAgICAgICAgICAgICBpZiAoKGNkIGFzIFZpZXdSZWYpLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2RSZWZzLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIGR1cmluZyBjcmVhdGlvbiBwaGFzZSwgJ2NvbnRleHQnIG9uIFZpZXdSZWYgd2lsbCBiZSBudWxsXG4gICAgICAgICAgICAgICAgICAgIC8vIHdlIGNoZWNrIHRoZSBcImNvbnRleHRcIiB0byBhdm9pZCBydW5uaW5nIGRldGVjdENoYW5nZXMgZHVyaW5nIHRoaXMgcGhhc2UuXG4gICAgICAgICAgICAgICAgICAgIC8vIGJlY3Vhc2UgdGhlcmUncyBub3RoaW5nIHRvIGNoZWNrXG4gICAgICAgICAgICAgICAgICAgIGlmICgoY2QgYXMgTmd0QW55UmVjb3JkKVsnY29udGV4dCddKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGdldDogKCkgPT4gcmVmJC52YWx1ZSxcbiAgICB9KTtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHJlZiwgeyBzdWJzY3JpYmUsICQsIGNoaWxkcmVuJCwgdXNlQ0RSOiAoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikgPT4gdm9pZCBjZFJlZnMucHVzaChjZHIpIH0pO1xufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { ElementRef, Injectable, inject, InjectionToken, ViewContainerRef, TemplateRef, Directive, Input, EventEmitter, getDebugNode, ChangeDetectorRef, RendererFactory2, Component, Output, EnvironmentInjector, createEnvironmentInjector, HostBinding, ViewChild } from '@angular/core';
3
3
  import { injectNgxResize, provideNgxResizeOptions } from 'ngx-resize';
4
- import { BehaviorSubject, startWith, tap, isObservable, of, map, from, retry, catchError, share, ReplaySubject, switchMap, forkJoin, take, filter } from 'rxjs';
4
+ import { BehaviorSubject, startWith, tap, isObservable, of, map, from, retry, catchError, share, ReplaySubject, switchMap, forkJoin, take, filter, distinctUntilChanged, takeUntil, merge } from 'rxjs';
5
5
  import { __rest } from 'tslib';
6
6
  import { DOCUMENT, NgForOf } from '@angular/common';
7
7
  import { RxState, selectSlice } from '@rx-angular/state';
@@ -2469,9 +2469,97 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
2469
2469
  type: Input
2470
2470
  }] } });
2471
2471
 
2472
+ /**
2473
+ * A utility injection fn that can be used in other injection fn to provide the destroy capability.
2474
+ */
2475
+ function injectNgtDestroy(cb) {
2476
+ try {
2477
+ const cdr = inject(ChangeDetectorRef);
2478
+ const destroy$ = new ReplaySubject();
2479
+ queueMicrotask(() => {
2480
+ cdr.onDestroy(() => {
2481
+ destroy$.next();
2482
+ destroy$.complete();
2483
+ cb === null || cb === void 0 ? void 0 : cb();
2484
+ });
2485
+ });
2486
+ return { destroy$, cdr };
2487
+ }
2488
+ catch (e) {
2489
+ console.warn(`[NGT] injectNgtDestroy is being called outside of Constructor Context`);
2490
+ return {};
2491
+ }
2492
+ }
2493
+
2494
+ function injectNgtRef(initialValue = null) {
2495
+ let ref = new ElementRef(initialValue);
2496
+ if (is.ref(initialValue)) {
2497
+ ref = initialValue;
2498
+ }
2499
+ let lastValue = ref.nativeElement;
2500
+ const cdRefs = [];
2501
+ const ref$ = new BehaviorSubject(lastValue);
2502
+ const { destroy$, cdr } = injectNgtDestroy(() => {
2503
+ ref$.complete();
2504
+ });
2505
+ cdRefs.push(cdr);
2506
+ const obs$ = ref$.asObservable().pipe(distinctUntilChanged(), takeUntil(destroy$));
2507
+ const subscribe = (callback) => {
2508
+ return obs$.subscribe((current) => {
2509
+ callback(current, lastValue);
2510
+ lastValue = current;
2511
+ });
2512
+ };
2513
+ const $ = obs$.pipe(filter((value, index) => index > 0 || value != null), takeUntil(destroy$));
2514
+ const children$ = (type = 'objects') => $.pipe(switchMap((instance) => {
2515
+ const localState = getLocalState(instance);
2516
+ if (localState.objects && localState.nonObjects) {
2517
+ return merge(localState.objects, localState.nonObjects).pipe(map(() => {
2518
+ try {
2519
+ return type === 'both'
2520
+ ? [...localState.objects.value, ...localState.nonObjects.value]
2521
+ : localState[type].value;
2522
+ }
2523
+ catch (e) {
2524
+ console.error(`[NGT] Exception in accessing children of ${instance}`);
2525
+ return [];
2526
+ }
2527
+ }));
2528
+ }
2529
+ return of([]);
2530
+ }), filter((children, index) => index > 0 || children.length > 0), takeUntil(destroy$));
2531
+ Object.defineProperty(ref, 'nativeElement', {
2532
+ set: (newVal) => {
2533
+ if (ref.nativeElement !== newVal) {
2534
+ ref$.next(newVal);
2535
+ lastValue = ref.nativeElement;
2536
+ ref.nativeElement = newVal;
2537
+ // clone the cdRefs so we can mutate cdRefs in the loop
2538
+ const cds = [...cdRefs];
2539
+ for (let i = 0; i < cds.length; i++) {
2540
+ const cd = cds[i];
2541
+ // if a ChangeDetectorRef is destroyed, we stop tracking it and go to the next one
2542
+ if (cd.destroyed) {
2543
+ cdRefs.splice(i, 1);
2544
+ continue;
2545
+ }
2546
+ // during creation phase, 'context' on ViewRef will be null
2547
+ // we check the "context" to avoid running detectChanges during this phase.
2548
+ // becuase there's nothing to check
2549
+ if (cd['context']) {
2550
+ cd.detectChanges();
2551
+ }
2552
+ }
2553
+ }
2554
+ },
2555
+ get: () => ref$.value,
2556
+ });
2557
+ return Object.assign(ref, { subscribe, $, children$, useCDR: (cdr) => void cdRefs.push(cdr) });
2558
+ }
2559
+
2472
2560
  /**
2473
2561
  * Generated bundle index. Do not edit.
2474
2562
  */
2475
2563
 
2476
- export { NGT_CATALOGUE, NgtArgs, NgtCanvas, NgtCanvasContainer, NgtRepeat, extend };
2564
+ export { NGT_CATALOGUE, NgtArgs, NgtCanvas, NgtCanvasContainer, NgtRepeat, NgtRxStore, NgtStore, checkNeedsUpdate, checkUpdate, extend, getLocalState, injectNgtDestroy, injectNgtLoader, injectNgtRef, invalidateInstance, prepare, rootStateMap, startWithUndefined, updateCamera };
2477
2565
  //# sourceMappingURL=angular-three.mjs.map