angular-three 2.5.1 → 2.6.0

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.
@@ -138,8 +138,8 @@ export class NgtCanvas {
138
138
  });
139
139
  this.glRef.changeDetectorRef.detectChanges();
140
140
  }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.6", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: { classPropertyName: "sceneGraph", publicName: "sceneGraph", isSignal: true, isRequired: true, transformFunction: null }, gl: { classPropertyName: "gl", publicName: "gl", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shadows: { classPropertyName: "shadows", publicName: "shadows", isSignal: true, isRequired: false, transformFunction: null }, legacy: { classPropertyName: "legacy", publicName: "legacy", isSignal: true, isRequired: false, transformFunction: null }, linear: { classPropertyName: "linear", publicName: "linear", isSignal: true, isRequired: false, transformFunction: null }, flat: { classPropertyName: "flat", publicName: "flat", isSignal: true, isRequired: false, transformFunction: null }, orthographic: { classPropertyName: "orthographic", publicName: "orthographic", isSignal: true, isRequired: false, transformFunction: null }, frameloop: { classPropertyName: "frameloop", publicName: "frameloop", isSignal: true, isRequired: false, transformFunction: null }, performance: { classPropertyName: "performance", publicName: "performance", isSignal: true, isRequired: false, transformFunction: null }, dpr: { classPropertyName: "dpr", publicName: "dpr", isSignal: true, isRequired: false, transformFunction: null }, raycaster: { classPropertyName: "raycaster", publicName: "raycaster", isSignal: true, isRequired: false, transformFunction: null }, scene: { classPropertyName: "scene", publicName: "scene", isSignal: true, isRequired: false, transformFunction: null }, camera: { classPropertyName: "camera", publicName: "camera", isSignal: true, isRequired: false, transformFunction: null }, events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: false, transformFunction: null }, eventSource: { classPropertyName: "eventSource", publicName: "eventSource", isSignal: true, isRequired: false, transformFunction: null }, eventPrefix: { classPropertyName: "eventPrefix", publicName: "eventPrefix", isSignal: true, isRequired: false, transformFunction: null }, lookAt: { classPropertyName: "lookAt", publicName: "lookAt", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { properties: { "style.pointerEvents": "hbPointerEvents()" }, styleAttribute: "display: block;position: relative;width: 100%;height: 100%;overflow: hidden;" }, providers: [
141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.9", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { sceneGraph: { classPropertyName: "sceneGraph", publicName: "sceneGraph", isSignal: true, isRequired: true, transformFunction: null }, gl: { classPropertyName: "gl", publicName: "gl", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shadows: { classPropertyName: "shadows", publicName: "shadows", isSignal: true, isRequired: false, transformFunction: null }, legacy: { classPropertyName: "legacy", publicName: "legacy", isSignal: true, isRequired: false, transformFunction: null }, linear: { classPropertyName: "linear", publicName: "linear", isSignal: true, isRequired: false, transformFunction: null }, flat: { classPropertyName: "flat", publicName: "flat", isSignal: true, isRequired: false, transformFunction: null }, orthographic: { classPropertyName: "orthographic", publicName: "orthographic", isSignal: true, isRequired: false, transformFunction: null }, frameloop: { classPropertyName: "frameloop", publicName: "frameloop", isSignal: true, isRequired: false, transformFunction: null }, performance: { classPropertyName: "performance", publicName: "performance", isSignal: true, isRequired: false, transformFunction: null }, dpr: { classPropertyName: "dpr", publicName: "dpr", isSignal: true, isRequired: false, transformFunction: null }, raycaster: { classPropertyName: "raycaster", publicName: "raycaster", isSignal: true, isRequired: false, transformFunction: null }, scene: { classPropertyName: "scene", publicName: "scene", isSignal: true, isRequired: false, transformFunction: null }, camera: { classPropertyName: "camera", publicName: "camera", isSignal: true, isRequired: false, transformFunction: null }, events: { classPropertyName: "events", publicName: "events", isSignal: true, isRequired: false, transformFunction: null }, eventSource: { classPropertyName: "eventSource", publicName: "eventSource", isSignal: true, isRequired: false, transformFunction: null }, eventPrefix: { classPropertyName: "eventPrefix", publicName: "eventPrefix", isSignal: true, isRequired: false, transformFunction: null }, lookAt: { classPropertyName: "lookAt", publicName: "lookAt", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { created: "created", pointerMissed: "pointerMissed" }, host: { properties: { "style.pointerEvents": "hbPointerEvents()" }, styleAttribute: "display: block;position: relative;width: 100%;height: 100%;overflow: hidden;" }, providers: [
143
143
  provideResizeOptions({
144
144
  emitInZone: false,
145
145
  emitInitialResult: true,
@@ -152,7 +152,7 @@ export class NgtCanvas {
152
152
  </div>
153
153
  `, isInline: true, dependencies: [{ kind: "directive", type: NgxResize, selector: "[ngxResize]", inputs: ["ngxResizeOptions"], outputs: ["ngxResize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
154
154
  }
155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtCanvas, decorators: [{
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtCanvas, decorators: [{
156
156
  type: Component,
157
157
  args: [{
158
158
  selector: 'ngt-canvas',
@@ -43,10 +43,10 @@ export class NgtArgs {
43
43
  this.view = this.vcr.createEmbeddedView(this.template);
44
44
  this.view.detectChanges();
45
45
  }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtArgs, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
47
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtArgs, isStandalone: true, selector: "ng-template[args]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtArgs, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
47
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.9", type: NgtArgs, isStandalone: true, selector: "ng-template[args]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtArgs, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtArgs, decorators: [{
50
50
  type: Directive,
51
51
  args: [{ selector: 'ng-template[args]', standalone: true }]
52
52
  }], ctorParameters: () => [] });
@@ -12,10 +12,10 @@ export class NgtSelection {
12
12
  return;
13
13
  this.source.update(...args);
14
14
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
16
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtSelection, isStandalone: true, selector: "[ngtSelection]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelection", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
16
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.9", type: NgtSelection, isStandalone: true, selector: "[ngtSelection]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelection", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
17
17
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtSelection, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtSelection, decorators: [{
19
19
  type: Directive,
20
20
  args: [{ standalone: true, selector: '[ngtSelection]' }]
21
21
  }] });
@@ -59,10 +59,10 @@ export class NgtSelect {
59
59
  });
60
60
  }, { allowSignalWrites: true });
61
61
  }
62
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
63
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: NgtSelect, isStandalone: true, selector: "ngt-group[ngtSelect], ngt-mesh[ngtSelect]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelect", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
63
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.9", type: NgtSelect, isStandalone: true, selector: "ngt-group[ngtSelect], ngt-mesh[ngtSelect]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelect", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
64
64
  }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtSelect, decorators: [{
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtSelect, decorators: [{
66
66
  type: Directive,
67
67
  args: [{ standalone: true, selector: 'ngt-group[ngtSelect], ngt-mesh[ngtSelect]' }]
68
68
  }], ctorParameters: () => [] });
@@ -1,6 +1,7 @@
1
1
  var _a;
2
2
  import { DestroyRef, Directive, ElementRef, inject, InjectionToken, } from '@angular/core';
3
3
  import { HTML } from './renderer';
4
+ import { DOM_PARENT } from './renderer/constants';
4
5
  import { injectStore } from './store';
5
6
  import * as i0 from "@angular/core";
6
7
  const NGT_HTML_DOM_ELEMENT = new InjectionToken('NGT_HTML_DOM_ELEMENT');
@@ -20,21 +21,21 @@ export class NgtHTML {
20
21
  this.domElement = inject(NGT_HTML_DOM_ELEMENT, { self: true, optional: true });
21
22
  if (this.domElement === 'gl') {
22
23
  Object.assign(this.host.nativeElement, {
23
- __ngt_dom_parent__: this.store.snapshot.gl.domElement.parentElement,
24
+ [DOM_PARENT]: this.store.snapshot.gl.domElement.parentElement,
24
25
  });
25
26
  }
26
27
  else if (this.domElement) {
27
- Object.assign(this.host.nativeElement, { __ngt_dom_parent__: this.domElement });
28
+ Object.assign(this.host.nativeElement, { [DOM_PARENT]: this.domElement });
28
29
  }
29
30
  this.destroyRef.onDestroy(() => {
30
- this.host.nativeElement['__ngt_dom_parent__'] = null;
31
- delete this.host.nativeElement['__ngt_dom_parent__'];
31
+ this.host.nativeElement[DOM_PARENT] = null;
32
+ delete this.host.nativeElement[DOM_PARENT];
32
33
  });
33
34
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtHTML, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
35
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: NgtHTML, ngImport: i0 }); }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtHTML, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
36
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.9", type: NgtHTML, ngImport: i0 }); }
36
37
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtHTML, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtHTML, decorators: [{
38
39
  type: Directive
39
40
  }], ctorParameters: () => [] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2h0bWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxHQUlkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFHdEMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsc0JBQXNCLENBQUMsQ0FBQztBQVM1RixNQUFNLFVBQVUscUJBQXFCLENBQUMsR0FBRyxJQUFXO0lBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM5RSxDQUFDO0FBR0QsTUFBTSxPQUFnQixPQUFPO2tCQUNwQixJQUFJO2FBQUwsUUFBTSxHQUFHLElBQUksQUFBUCxDQUFRO0lBT3JCO1FBTFUsVUFBSyxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsU0FBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDbkQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFHbkYsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYTthQUNuRSxDQUFDLENBQUM7UUFDSixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUE4QixDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3ZFLE9BQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUE4QixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOzhHQXJCb0IsT0FBTztrR0FBUCxPQUFPOzsyRkFBUCxPQUFPO2tCQUQ1QixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QWJzdHJhY3RUeXBlLFxuXHREZXN0cm95UmVmLFxuXHREaXJlY3RpdmUsXG5cdEVsZW1lbnRSZWYsXG5cdGluamVjdCxcblx0SW5qZWN0aW9uVG9rZW4sXG5cdFByb3ZpZGVyLFxuXHRQcm92aWRlclRva2VuLFxuXHRUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEhUTUwgfSBmcm9tICcuL3JlbmRlcmVyJztcbmltcG9ydCB7IGluamVjdFN0b3JlIH0gZnJvbSAnLi9zdG9yZSc7XG5pbXBvcnQgeyBOZ3RBbnlSZWNvcmQgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgTkdUX0hUTUxfRE9NX0VMRU1FTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW48J2dsJyB8IEhUTUxFbGVtZW50PignTkdUX0hUTUxfRE9NX0VMRU1FTlQnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVIVE1MRG9tRWxlbWVudCgpOiBQcm92aWRlcjtcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSFRNTERvbUVsZW1lbnQ8XG5cdFREZXBzIGV4dGVuZHMgQXJyYXk8UHJvdmlkZXJUb2tlbjxhbnk+Pixcblx0VFZhbHVlcyBleHRlbmRzIHtcblx0XHRbSyBpbiBrZXlvZiBURGVwc106IFREZXBzW0tdIGV4dGVuZHMgVHlwZTxpbmZlciBUPiB8IEFic3RyYWN0VHlwZTxpbmZlciBUPiB8IEluamVjdGlvblRva2VuPGluZmVyIFQ+ID8gVCA6IG5ldmVyO1xuXHR9LFxuPihkZXBzOiBURGVwcywgZmFjdG9yeTogKC4uLmFyZ3M6IFRWYWx1ZXMpID0+IEhUTUxFbGVtZW50KTogUHJvdmlkZXI7XG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUhUTUxEb21FbGVtZW50KC4uLmFyZ3M6IGFueVtdKSB7XG5cdGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiB7IHByb3ZpZGU6IE5HVF9IVE1MX0RPTV9FTEVNRU5ULCB1c2VGYWN0b3J5OiAoKSA9PiAnZ2wnIH07XG5cdH1cblxuXHRyZXR1cm4geyBwcm92aWRlOiBOR1RfSFRNTF9ET01fRUxFTUVOVCwgdXNlRmFjdG9yeTogYXJncy5wb3AoKSwgZGVwczogYXJncyB9O1xufVxuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOZ3RIVE1MIHtcblx0c3RhdGljIFtIVE1MXSA9IHRydWU7XG5cblx0cHJvdGVjdGVkIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJvdGVjdGVkIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cdHByb3RlY3RlZCBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblx0cHJvdGVjdGVkIGRvbUVsZW1lbnQgPSBpbmplY3QoTkdUX0hUTUxfRE9NX0VMRU1FTlQsIHsgc2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSk7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aWYgKHRoaXMuZG9tRWxlbWVudCA9PT0gJ2dsJykge1xuXHRcdFx0T2JqZWN0LmFzc2lnbih0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwge1xuXHRcdFx0XHRfX25ndF9kb21fcGFyZW50X186IHRoaXMuc3RvcmUuc25hcHNob3QuZ2wuZG9tRWxlbWVudC5wYXJlbnRFbGVtZW50LFxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLmRvbUVsZW1lbnQpIHtcblx0XHRcdE9iamVjdC5hc3NpZ24odGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIHsgX19uZ3RfZG9tX3BhcmVudF9fOiB0aGlzLmRvbUVsZW1lbnQgfSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG5cdFx0XHQodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQgYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfZG9tX3BhcmVudF9fJ10gPSBudWxsO1xuXHRcdFx0ZGVsZXRlICh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9kb21fcGFyZW50X18nXTtcblx0XHR9KTtcblx0fVxufVxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2h0bWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTixVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sY0FBYyxHQUlkLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBR3RDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQXFCLHNCQUFzQixDQUFDLENBQUM7QUFTNUYsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEdBQUcsSUFBVztJQUNuRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEUsQ0FBQztJQUVELE9BQU8sRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDOUUsQ0FBQztBQUdELE1BQU0sT0FBZ0IsT0FBTztrQkFDcEIsSUFBSTthQUFMLFFBQU0sR0FBRyxJQUFJLEFBQVAsQ0FBUTtJQU9yQjtRQUxVLFVBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUN0QixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLFNBQUksR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELGVBQVUsR0FBRyxNQUFNLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBR25GLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM5QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0QyxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYTthQUM3RCxDQUFDLENBQUM7UUFDSixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQThCLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzdELE9BQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUE4QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs4R0FyQm9CLE9BQU87a0dBQVAsT0FBTzs7MkZBQVAsT0FBTztrQkFENUIsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEFic3RyYWN0VHlwZSxcblx0RGVzdHJveVJlZixcblx0RGlyZWN0aXZlLFxuXHRFbGVtZW50UmVmLFxuXHRpbmplY3QsXG5cdEluamVjdGlvblRva2VuLFxuXHRQcm92aWRlcixcblx0UHJvdmlkZXJUb2tlbixcblx0VHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIVE1MIH0gZnJvbSAnLi9yZW5kZXJlcic7XG5pbXBvcnQgeyBET01fUEFSRU5UIH0gZnJvbSAnLi9yZW5kZXJlci9jb25zdGFudHMnO1xuaW1wb3J0IHsgaW5qZWN0U3RvcmUgfSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCB7IE5ndEFueVJlY29yZCB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBOR1RfSFRNTF9ET01fRUxFTUVOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjwnZ2wnIHwgSFRNTEVsZW1lbnQ+KCdOR1RfSFRNTF9ET01fRUxFTUVOVCcpO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUhUTUxEb21FbGVtZW50KCk6IFByb3ZpZGVyO1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVIVE1MRG9tRWxlbWVudDxcblx0VERlcHMgZXh0ZW5kcyBBcnJheTxQcm92aWRlclRva2VuPGFueT4+LFxuXHRUVmFsdWVzIGV4dGVuZHMge1xuXHRcdFtLIGluIGtleW9mIFREZXBzXTogVERlcHNbS10gZXh0ZW5kcyBUeXBlPGluZmVyIFQ+IHwgQWJzdHJhY3RUeXBlPGluZmVyIFQ+IHwgSW5qZWN0aW9uVG9rZW48aW5mZXIgVD4gPyBUIDogbmV2ZXI7XG5cdH0sXG4+KGRlcHM6IFREZXBzLCBmYWN0b3J5OiAoLi4uYXJnczogVFZhbHVlcykgPT4gSFRNTEVsZW1lbnQpOiBQcm92aWRlcjtcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlSFRNTERvbUVsZW1lbnQoLi4uYXJnczogYW55W10pIHtcblx0aWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIHsgcHJvdmlkZTogTkdUX0hUTUxfRE9NX0VMRU1FTlQsIHVzZUZhY3Rvcnk6ICgpID0+ICdnbCcgfTtcblx0fVxuXG5cdHJldHVybiB7IHByb3ZpZGU6IE5HVF9IVE1MX0RPTV9FTEVNRU5ULCB1c2VGYWN0b3J5OiBhcmdzLnBvcCgpLCBkZXBzOiBhcmdzIH07XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5ndEhUTUwge1xuXHRzdGF0aWMgW0hUTUxdID0gdHJ1ZTtcblxuXHRwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXHRwcm90ZWN0ZWQgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblx0cHJvdGVjdGVkIGhvc3QgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXHRwcm90ZWN0ZWQgZG9tRWxlbWVudCA9IGluamVjdChOR1RfSFRNTF9ET01fRUxFTUVOVCwgeyBzZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpZiAodGhpcy5kb21FbGVtZW50ID09PSAnZ2wnKSB7XG5cdFx0XHRPYmplY3QuYXNzaWduKHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LCB7XG5cdFx0XHRcdFtET01fUEFSRU5UXTogdGhpcy5zdG9yZS5zbmFwc2hvdC5nbC5kb21FbGVtZW50LnBhcmVudEVsZW1lbnQsXG5cdFx0XHR9KTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuZG9tRWxlbWVudCkge1xuXHRcdFx0T2JqZWN0LmFzc2lnbih0aGlzLmhvc3QubmF0aXZlRWxlbWVudCwgeyBbRE9NX1BBUkVOVF06IHRoaXMuZG9tRWxlbWVudCB9KTtcblx0XHR9XG5cblx0XHR0aGlzLmRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHtcblx0XHRcdCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCBhcyBOZ3RBbnlSZWNvcmQpW0RPTV9QQVJFTlRdID0gbnVsbDtcblx0XHRcdGRlbGV0ZSAodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQgYXMgTmd0QW55UmVjb3JkKVtET01fUEFSRU5UXTtcblx0XHR9KTtcblx0fVxufVxuIl19
@@ -45,7 +45,7 @@ export function prepare(object, localState) {
45
45
  nonObjects: nonObjectsChanged,
46
46
  add(object, type) {
47
47
  const current = instance.__ngt__.instanceStore.snapshot[type];
48
- const foundIndex = current.findIndex((node) => object === node || object.uuid === node.uuid);
48
+ const foundIndex = current.findIndex((node) => object === node || (!!object.uuid && !!node.uuid && object.uuid === node.uuid));
49
49
  if (foundIndex > -1) {
50
50
  current.splice(foundIndex, 1, object);
51
51
  instance.__ngt__.instanceStore.update({ [type]: current });
@@ -80,4 +80,4 @@ function notifyAncestors(instance, type) {
80
80
  localState.instanceStore.update({ [type]: (localState.instanceStore.snapshot[type] || []).slice() });
81
81
  notifyAncestors(parent, type);
82
82
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsTUFBTSxVQUFVLGFBQWEsQ0FBMkIsR0FBMEI7SUFDakYsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUMzQixPQUFRLEdBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBMkIsUUFBbUI7SUFDL0UsSUFBSSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUUzQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1gsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUNyQyxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0YsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FDdEIsTUFBaUIsRUFDakIsVUFBbUM7SUFFbkMsTUFBTSxRQUFRLEdBQUcsTUFBK0MsQ0FBQztJQUVqRSxJQUFJLFVBQVUsRUFBRSxTQUFTLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENB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LE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBQ0QsbUJBQW1CO2dCQUNsQixRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RSxDQUFDO1lBQ0QsR0FBRyxJQUFJO1NBQ1UsQ0FBQztJQUNwQixDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDakIsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFFBQWdDLEVBQUUsSUFBOEI7SUFDeEYsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPO0lBQ3RCLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsVUFBVTtRQUFFLE9BQU87SUFDeEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ3JELFVBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRyxlQUFlLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmd0QW55UmVjb3JkLCBOZ3RJbnN0YW5jZU5vZGUsIE5ndExvY2FsSW5zdGFuY2VTdGF0ZSwgTmd0TG9jYWxTdGF0ZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgc2lnbmFsU3RvcmUgfSBmcm9tICcuL3V0aWxzL3NpZ25hbC1zdG9yZSc7XG5pbXBvcnQgeyBjaGVja1VwZGF0ZSB9IGZyb20gJy4vdXRpbHMvdXBkYXRlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsU3RhdGU8VEluc3RhbmNlIGV4dGVuZHMgb2JqZWN0PihvYmo6IFRJbnN0YW5jZSB8IHVuZGVmaW5lZCk6IE5ndExvY2FsU3RhdGUgfCB1bmRlZmluZWQge1xuXHRpZiAoIW9iaikgcmV0dXJuIHVuZGVmaW5lZDtcblx0cmV0dXJuIChvYmogYXMgTmd0QW55UmVjb3JkKVsnX19uZ3RfXyddO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52YWxpZGF0ZUluc3RhbmNlPFRJbnN0YW5jZSBleHRlbmRzIG9iamVjdD4oaW5zdGFuY2U6IFRJbnN0YW5jZSkge1xuXHRsZXQgc3RvcmUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKT8uc3RvcmU7XG5cblx0aWYgKHN0b3JlKSB7XG5cdFx0d2hpbGUgKHN0b3JlLnNuYXBzaG90LnByZXZpb3VzUm9vdCkge1xuXHRcdFx0c3RvcmUgPSBzdG9yZS5zbmFwc2hvdC5wcmV2aW91c1Jvb3Q7XG5cdFx0fVxuXHRcdGlmIChzdG9yZS5zbmFwc2hvdC5pbnRlcm5hbC5mcmFtZXMgPT09IDApIHtcblx0XHRcdHN0b3JlLnNuYXBzaG90LmludmFsaWRhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRjaGVja1VwZGF0ZShpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlPFRJbnN0YW5jZSBleHRlbmRzIG9iamVjdCA9IE5ndEFueVJlY29yZD4oXG5cdG9iamVjdDogVEluc3RhbmNlLFxuXHRsb2NhbFN0YXRlPzogUGFydGlhbDxOZ3RMb2NhbFN0YXRlPixcbikge1xuXHRjb25zdCBpbnN0YW5jZSA9IG9iamVjdCBhcyB1bmtub3duIGFzIE5ndEluc3RhbmNlTm9kZTxUSW5zdGFuY2U+O1xuXG5cdGlmIChsb2NhbFN0YXRlPy5wcmltaXRpdmUgfHwgIWluc3RhbmNlLl9fbmd0X18pIHtcblx0XHRjb25zdCB7XG5cdFx0XHRpbnN0YW5jZVN0b3JlID0gc2lnbmFsU3RvcmU8Tmd0TG9jYWxJbnN0YW5jZVN0YXRlPih7XG5cdFx0XHRcdHBhcmVudDogbnVsbCxcblx0XHRcdFx0b2JqZWN0czogW10sXG5cdFx0XHRcdG5vbk9iamVjdHM6IFtdLFxuXHRcdFx0XHRnZW9tZXRyeVN0YW1wOiBEYXRlLm5vdygpLFxuXHRcdFx0fSksXG5cdFx0XHQuLi5yZXN0XG5cdFx0fSA9IGxvY2FsU3RhdGUgfHwge307XG5cblx0XHRjb25zdCBub25PYmplY3RzID0gaW5zdGFuY2VTdG9yZS5zZWxlY3QoJ25vbk9iamVjdHMnKTtcblx0XHRjb25zdCBnZW9tZXRyeVN0YW1wID0gaW5zdGFuY2VTdG9yZS5zZWxlY3QoJ2dlb21ldHJ5U3RhbXAnKTtcblxuXHRcdGNvbnN0IG5vbk9iamVjdHNDaGFuZ2VkID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgW19ub25PYmplY3RzXSA9IFtub25PYmplY3RzKCksIGdlb21ldHJ5U3RhbXAoKV07XG5cdFx0XHRyZXR1cm4gX25vbk9iamVjdHM7XG5cdFx0fSk7XG5cblx0XHRpbnN0YW5jZS5fX25ndF9fID0ge1xuXHRcdFx0cHJldmlvdXNBdHRhY2g6IG51bGwsXG5cdFx0XHRzdG9yZTogbnVsbCxcblx0XHRcdG1lbW9pemVkOiB7fSxcblx0XHRcdGV2ZW50Q291bnQ6IDAsXG5cdFx0XHRoYW5kbGVyczoge30sXG5cdFx0XHRpbnN0YW5jZVN0b3JlLFxuXHRcdFx0cGFyZW50OiBpbnN0YW5jZVN0b3JlLnNlbGVjdCgncGFyZW50JyksXG5cdFx0XHRvYmplY3RzOiBpbnN0YW5jZVN0b3JlLnNlbGVjdCgnb2JqZWN0cycpLFxuXHRcdFx0bm9uT2JqZWN0czogbm9uT2JqZWN0c0NoYW5nZWQsXG5cdFx0XHRhZGQob2JqZWN0LCB0eXBlKSB7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnQgPSBpbnN0YW5jZS5fX25ndF9fLmluc3RhbmNlU3RvcmUuc25hcHNob3RbdHlwZV07XG5cdFx0XHRcdGNvbnN0IGZvdW5kSW5kZXggPSBjdXJyZW50LmZpbmRJbmRleCgobm9kZTogTmd0SW5zdGFuY2VOb2RlKSA9PiBvYmplY3QgPT09IG5vZGUgfHwgb2JqZWN0LnV1aWQgPT09IG5vZGUudXVpZCk7XG5cblx0XHRcdFx0aWYgKGZvdW5kSW5kZXggPiAtMSkge1xuXHRcdFx0XHRcdGN1cnJlbnQuc3BsaWNlKGZvdW5kSW5kZXgsIDEsIG9iamVjdCk7XG5cdFx0XHRcdFx0aW5zdGFuY2UuX19uZ3RfXy5pbnN0YW5jZVN0b3JlLnVwZGF0ZSh7IFt0eXBlXTogY3VycmVudCB9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpbnN0YW5jZS5fX25ndF9fLmluc3RhbmNlU3RvcmUudXBkYXRlKChwcmV2KSA9PiAoeyBbdHlwZV06IFsuLi5wcmV2W3R5cGVdLCBvYmplY3RdIH0pKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdG5vdGlmeUFuY2VzdG9ycyhpbnN0YW5jZS5fX25ndF9fLmluc3RhbmNlU3RvcmUuc25hcHNob3QucGFyZW50LCB0eXBlKTtcblx0XHRcdH0sXG5cdFx0XHRyZW1vdmUob2JqZWN0LCB0eXBlKSB7XG5cdFx0XHRcdGluc3RhbmNlLl9fbmd0X18uaW5zdGFuY2VTdG9yZS51cGRhdGUoKHByZXYpID0+ICh7IFt0eXBlXTogcHJldlt0eXBlXS5maWx0ZXIoKG5vZGUpID0+IG5vZGUgIT09IG9iamVjdCkgfSkpO1xuXHRcdFx0XHRub3RpZnlBbmNlc3RvcnMoaW5zdGFuY2UuX19uZ3RfXy5pbnN0YW5jZVN0b3JlLnNuYXBzaG90LnBhcmVudCwgdHlwZSk7XG5cdFx0XHR9LFxuXHRcdFx0c2V0UGFyZW50KHBhcmVudCkge1xuXHRcdFx0XHRpbnN0YW5jZS5fX25ndF9fLmluc3RhbmNlU3RvcmUudXBkYXRlKHsgcGFyZW50IH0pO1xuXHRcdFx0fSxcblx0XHRcdHVwZGF0ZUdlb21ldHJ5U3RhbXAoKSB7XG5cdFx0XHRcdGluc3RhbmNlLl9fbmd0X18uaW5zdGFuY2VTdG9yZS51cGRhdGUoeyBnZW9tZXRyeVN0YW1wOiBEYXRlLm5vdygpIH0pO1xuXHRcdFx0fSxcblx0XHRcdC4uLnJlc3QsXG5cdFx0fSBhcyBOZ3RMb2NhbFN0YXRlO1xuXHR9XG5cblx0cmV0dXJuIGluc3RhbmNlO1xufVxuXG5mdW5jdGlvbiBub3RpZnlBbmNlc3RvcnMoaW5zdGFuY2U6IE5ndEluc3RhbmNlTm9kZSB8IG51bGwsIHR5cGU6ICdvYmplY3RzJyB8ICdub25PYmplY3RzJykge1xuXHRpZiAoIWluc3RhbmNlKSByZXR1cm47XG5cdGNvbnN0IGxvY2FsU3RhdGUgPSBnZXRMb2NhbFN0YXRlKGluc3RhbmNlKTtcblx0aWYgKCFsb2NhbFN0YXRlKSByZXR1cm47XG5cdGNvbnN0IHsgcGFyZW50IH0gPSBsb2NhbFN0YXRlLmluc3RhbmNlU3RvcmUuc25hcHNob3Q7XG5cdGxvY2FsU3RhdGUuaW5zdGFuY2VTdG9yZS51cGRhdGUoeyBbdHlwZV06IChsb2NhbFN0YXRlLmluc3RhbmNlU3RvcmUuc25hcHNob3RbdHlwZV0gfHwgW10pLnNsaWNlKCkgfSk7XG5cdG5vdGlmeUFuY2VzdG9ycyhwYXJlbnQsIHR5cGUpO1xufVxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9pbnN0YW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsTUFBTSxVQUFVLGFBQWEsQ0FBMkIsR0FBMEI7SUFDakYsSUFBSSxDQUFDLEdBQUc7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUMzQixPQUFRLEdBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBMkIsUUFBbUI7SUFDL0UsSUFBSSxLQUFLLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUUzQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1gsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BDLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztRQUNyQyxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0YsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU8sQ0FDdEIsTUFBaUIsRUFDakIsVUFBbUM7SUFFbkMsTUFBTSxRQUFRLEdBQUcsTUFBK0MsQ0FBQztJQUVqRSxJQUFJLFVBQVUsRUFBRSxTQUFTLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENB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TUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3ZFLENBQUM7WUFDRCxTQUFTLENBQUMsTUFBTTtnQkFDZixRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELENBQUM7WUFDRCxtQkFBbUI7Z0JBQ2xCLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLENBQUM7WUFDRCxHQUFHLElBQUk7U0FDVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsUUFBZ0MsRUFBRSxJQUE4QjtJQUN4RixJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU87SUFDdEIsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLElBQUksQ0FBQyxVQUFVO1FBQUUsT0FBTztJQUN4QixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDckQsVUFBVSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ3RBbnlSZWNvcmQsIE5ndEluc3RhbmNlTm9kZSwgTmd0TG9jYWxJbnN0YW5jZVN0YXRlLCBOZ3RMb2NhbFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBzaWduYWxTdG9yZSB9IGZyb20gJy4vdXRpbHMvc2lnbmFsLXN0b3JlJztcbmltcG9ydCB7IGNoZWNrVXBkYXRlIH0gZnJvbSAnLi91dGlscy91cGRhdGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9jYWxTdGF0ZTxUSW5zdGFuY2UgZXh0ZW5kcyBvYmplY3Q+KG9iajogVEluc3RhbmNlIHwgdW5kZWZpbmVkKTogTmd0TG9jYWxTdGF0ZSB8IHVuZGVmaW5lZCB7XG5cdGlmICghb2JqKSByZXR1cm4gdW5kZWZpbmVkO1xuXHRyZXR1cm4gKG9iaiBhcyBOZ3RBbnlSZWNvcmQpWydfX25ndF9fJ107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlSW5zdGFuY2U8VEluc3RhbmNlIGV4dGVuZHMgb2JqZWN0PihpbnN0YW5jZTogVEluc3RhbmNlKSB7XG5cdGxldCBzdG9yZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpPy5zdG9yZTtcblxuXHRpZiAoc3RvcmUpIHtcblx0XHR3aGlsZSAoc3RvcmUuc25hcHNob3QucHJldmlvdXNSb290KSB7XG5cdFx0XHRzdG9yZSA9IHN0b3JlLnNuYXBzaG90LnByZXZpb3VzUm9vdDtcblx0XHR9XG5cdFx0aWYgKHN0b3JlLnNuYXBzaG90LmludGVybmFsLmZyYW1lcyA9PT0gMCkge1xuXHRcdFx0c3RvcmUuc25hcHNob3QuaW52YWxpZGF0ZSgpO1xuXHRcdH1cblx0fVxuXG5cdGNoZWNrVXBkYXRlKGluc3RhbmNlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmU8VEluc3RhbmNlIGV4dGVuZHMgb2JqZWN0ID0gTmd0QW55UmVjb3JkPihcblx0b2JqZWN0OiBUSW5zdGFuY2UsXG5cdGxvY2FsU3RhdGU/OiBQYXJ0aWFsPE5ndExvY2FsU3RhdGU+LFxuKSB7XG5cdGNvbnN0IGluc3RhbmNlID0gb2JqZWN0IGFzIHVua25vd24gYXMgTmd0SW5zdGFuY2VOb2RlPFRJbnN0YW5jZT47XG5cblx0aWYgKGxvY2FsU3RhdGU/LnByaW1pdGl2ZSB8fCAhaW5zdGFuY2UuX19uZ3RfXykge1xuXHRcdGNvbnN0IHtcblx0XHRcdGluc3RhbmNlU3RvcmUgPSBzaWduYWxTdG9yZTxOZ3RMb2NhbEluc3RhbmNlU3RhdGU+KHtcblx0XHRcdFx0cGFyZW50OiBudWxsLFxuXHRcdFx0XHRvYmplY3RzOiBbXSxcblx0XHRcdFx0bm9uT2JqZWN0czogW10sXG5cdFx0XHRcdGdlb21ldHJ5U3RhbXA6IERhdGUubm93KCksXG5cdFx0XHR9KSxcblx0XHRcdC4uLnJlc3Rcblx0XHR9ID0gbG9jYWxTdGF0ZSB8fCB7fTtcblxuXHRcdGNvbnN0IG5vbk9iamVjdHMgPSBpbnN0YW5jZVN0b3JlLnNlbGVjdCgnbm9uT2JqZWN0cycpO1xuXHRcdGNvbnN0IGdlb21ldHJ5U3RhbXAgPSBpbnN0YW5jZVN0b3JlLnNlbGVjdCgnZ2VvbWV0cnlTdGFtcCcpO1xuXG5cdFx0Y29uc3Qgbm9uT2JqZWN0c0NoYW5nZWQgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBbX25vbk9iamVjdHNdID0gW25vbk9iamVjdHMoKSwgZ2VvbWV0cnlTdGFtcCgpXTtcblx0XHRcdHJldHVybiBfbm9uT2JqZWN0cztcblx0XHR9KTtcblxuXHRcdGluc3RhbmNlLl9fbmd0X18gPSB7XG5cdFx0XHRwcmV2aW91c0F0dGFjaDogbnVsbCxcblx0XHRcdHN0b3JlOiBudWxsLFxuXHRcdFx0bWVtb2l6ZWQ6IHt9LFxuXHRcdFx0ZXZlbnRDb3VudDogMCxcblx0XHRcdGhhbmRsZXJzOiB7fSxcblx0XHRcdGluc3RhbmNlU3RvcmUsXG5cdFx0XHRwYXJlbnQ6IGluc3RhbmNlU3RvcmUuc2VsZWN0KCdwYXJlbnQnKSxcblx0XHRcdG9iamVjdHM6IGluc3RhbmNlU3RvcmUuc2VsZWN0KCdvYmplY3RzJyksXG5cdFx0XHRub25PYmplY3RzOiBub25PYmplY3RzQ2hhbmdlZCxcblx0XHRcdGFkZChvYmplY3QsIHR5cGUpIHtcblx0XHRcdFx0Y29uc3QgY3VycmVudCA9IGluc3RhbmNlLl9fbmd0X18uaW5zdGFuY2VTdG9yZS5zbmFwc2hvdFt0eXBlXTtcblx0XHRcdFx0Y29uc3QgZm91bmRJbmRleCA9IGN1cnJlbnQuZmluZEluZGV4KFxuXHRcdFx0XHRcdChub2RlOiBOZ3RJbnN0YW5jZU5vZGUpID0+IG9iamVjdCA9PT0gbm9kZSB8fCAoISFvYmplY3QudXVpZCAmJiAhIW5vZGUudXVpZCAmJiBvYmplY3QudXVpZCA9PT0gbm9kZS51dWlkKSxcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRpZiAoZm91bmRJbmRleCA+IC0xKSB7XG5cdFx0XHRcdFx0Y3VycmVudC5zcGxpY2UoZm91bmRJbmRleCwgMSwgb2JqZWN0KTtcblx0XHRcdFx0XHRpbnN0YW5jZS5fX25ndF9fLmluc3RhbmNlU3RvcmUudXBkYXRlKHsgW3R5cGVdOiBjdXJyZW50IH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGluc3RhbmNlLl9fbmd0X18uaW5zdGFuY2VTdG9yZS51cGRhdGUoKHByZXYpID0+ICh7IFt0eXBlXTogWy4uLnByZXZbdHlwZV0sIG9iamVjdF0gfSkpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bm90aWZ5QW5jZXN0b3JzKGluc3RhbmNlLl9fbmd0X18uaW5zdGFuY2VTdG9yZS5zbmFwc2hvdC5wYXJlbnQsIHR5cGUpO1xuXHRcdFx0fSxcblx0XHRcdHJlbW92ZShvYmplY3QsIHR5cGUpIHtcblx0XHRcdFx0aW5zdGFuY2UuX19uZ3RfXy5pbnN0YW5jZVN0b3JlLnVwZGF0ZSgocHJldikgPT4gKHsgW3R5cGVdOiBwcmV2W3R5cGVdLmZpbHRlcigobm9kZSkgPT4gbm9kZSAhPT0gb2JqZWN0KSB9KSk7XG5cdFx0XHRcdG5vdGlmeUFuY2VzdG9ycyhpbnN0YW5jZS5fX25ndF9fLmluc3RhbmNlU3RvcmUuc25hcHNob3QucGFyZW50LCB0eXBlKTtcblx0XHRcdH0sXG5cdFx0XHRzZXRQYXJlbnQocGFyZW50KSB7XG5cdFx0XHRcdGluc3RhbmNlLl9fbmd0X18uaW5zdGFuY2VTdG9yZS51cGRhdGUoeyBwYXJlbnQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0dXBkYXRlR2VvbWV0cnlTdGFtcCgpIHtcblx0XHRcdFx0aW5zdGFuY2UuX19uZ3RfXy5pbnN0YW5jZVN0b3JlLnVwZGF0ZSh7IGdlb21ldHJ5U3RhbXA6IERhdGUubm93KCkgfSk7XG5cdFx0XHR9LFxuXHRcdFx0Li4ucmVzdCxcblx0XHR9IGFzIE5ndExvY2FsU3RhdGU7XG5cdH1cblxuXHRyZXR1cm4gaW5zdGFuY2U7XG59XG5cbmZ1bmN0aW9uIG5vdGlmeUFuY2VzdG9ycyhpbnN0YW5jZTogTmd0SW5zdGFuY2VOb2RlIHwgbnVsbCwgdHlwZTogJ29iamVjdHMnIHwgJ25vbk9iamVjdHMnKSB7XG5cdGlmICghaW5zdGFuY2UpIHJldHVybjtcblx0Y29uc3QgbG9jYWxTdGF0ZSA9IGdldExvY2FsU3RhdGUoaW5zdGFuY2UpO1xuXHRpZiAoIWxvY2FsU3RhdGUpIHJldHVybjtcblx0Y29uc3QgeyBwYXJlbnQgfSA9IGxvY2FsU3RhdGUuaW5zdGFuY2VTdG9yZS5zbmFwc2hvdDtcblx0bG9jYWxTdGF0ZS5pbnN0YW5jZVN0b3JlLnVwZGF0ZSh7IFt0eXBlXTogKGxvY2FsU3RhdGUuaW5zdGFuY2VTdG9yZS5zbmFwc2hvdFt0eXBlXSB8fCBbXSkuc2xpY2UoKSB9KTtcblx0bm90aWZ5QW5jZXN0b3JzKHBhcmVudCwgdHlwZSk7XG59XG4iXX0=
@@ -76,10 +76,10 @@ export class NgtHexify {
76
76
  const hex = component.toString(16);
77
77
  return hex.length === 1 ? '0' + hex : hex;
78
78
  }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtHexify, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
80
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: NgtHexify, isStandalone: true, name: "hexify" }); }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtHexify, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
80
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: NgtHexify, isStandalone: true, name: "hexify" }); }
81
81
  }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtHexify, decorators: [{
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtHexify, decorators: [{
83
83
  type: Pipe,
84
84
  args: [{ name: 'hexify', pure: true, standalone: true }]
85
85
  }] });
@@ -38,13 +38,13 @@ export class NgtPortalBeforeRender {
38
38
  onPointerOver() {
39
39
  /* noop */
40
40
  }
41
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.6", type: NgtPortalBeforeRender, isStandalone: true, selector: "ngt-portal-before-render", inputs: { renderPriority: { classPropertyName: "renderPriority", publicName: "renderPriority", isSignal: true, isRequired: false, transformFunction: null }, parentScene: { classPropertyName: "parentScene", publicName: "parentScene", isSignal: true, isRequired: true, transformFunction: null }, parentCamera: { classPropertyName: "parentCamera", publicName: "parentCamera", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.9", type: NgtPortalBeforeRender, isStandalone: true, selector: "ngt-portal-before-render", inputs: { renderPriority: { classPropertyName: "renderPriority", publicName: "renderPriority", isSignal: true, isRequired: false, transformFunction: null }, parentScene: { classPropertyName: "parentScene", publicName: "parentScene", isSignal: true, isRequired: true, transformFunction: null }, parentCamera: { classPropertyName: "parentCamera", publicName: "parentCamera", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
43
43
  <!-- Without an element that receives pointer events state.pointer will always be 0/0 -->
44
44
  <ngt-group (pointerover)="onPointerOver()" attach="none" />
45
45
  `, isInline: true }); }
46
46
  }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
48
48
  type: Component,
49
49
  args: [{
50
50
  selector: 'ngt-portal-before-render',
@@ -69,10 +69,10 @@ export class NgtPortalContent {
69
69
  static ngTemplateContextGuard(_, ctx) {
70
70
  return true;
71
71
  }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtPortalContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
73
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: NgtPortalContent, isStandalone: true, selector: "ng-template[portalContent]", ngImport: i0 }); }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtPortalContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
73
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.9", type: NgtPortalContent, isStandalone: true, selector: "ng-template[portalContent]", ngImport: i0 }); }
74
74
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtPortalContent, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtPortalContent, decorators: [{
76
76
  type: Directive,
77
77
  args: [{ selector: 'ng-template[portalContent]', standalone: true }]
78
78
  }], ctorParameters: () => [] });
@@ -182,8 +182,8 @@ export class NgtPortal {
182
182
  ...rest,
183
183
  };
184
184
  }
185
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
186
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: true, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, autoRender: { classPropertyName: "autoRender", publicName: "autoRender", isSignal: true, isRequired: false, transformFunction: null }, autoRenderPriority: { classPropertyName: "autoRenderPriority", publicName: "autoRenderPriority", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideStore(() => signalStore({}))], queries: [{ propertyName: "portalContent", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "portalAnchor", first: true, predicate: ["anchor"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
185
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
186
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: NgtPortal, isStandalone: true, selector: "ngt-portal", inputs: { container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: true, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, autoRender: { classPropertyName: "autoRender", publicName: "autoRender", isSignal: true, isRequired: false, transformFunction: null }, autoRenderPriority: { classPropertyName: "autoRenderPriority", publicName: "autoRenderPriority", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideStore(() => signalStore({}))], queries: [{ propertyName: "portalContent", first: true, predicate: NgtPortalContent, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "portalAnchor", first: true, predicate: ["anchor"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
187
187
  <ng-container #anchor />
188
188
 
189
189
  @if (renderAutoBeforeRender()) {
@@ -195,7 +195,7 @@ export class NgtPortal {
195
195
  }
196
196
  `, isInline: true, dependencies: [{ kind: "component", type: NgtPortalBeforeRender, selector: "ngt-portal-before-render", inputs: ["renderPriority", "parentScene", "parentCamera"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
197
197
  }
198
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: NgtPortal, decorators: [{
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: NgtPortal, decorators: [{
199
199
  type: Component,
200
200
  args: [{
201
201
  selector: 'ngt-portal',
@@ -2,6 +2,7 @@ export const ROUTED_SCENE = '__ngt_renderer_is_routed_scene__';
2
2
  export const HTML = '__ngt_renderer_is_html';
3
3
  export const NON_ROOT = '__ngt_renderer_is_non_root__';
4
4
  export const SPECIAL_INTERNAL_ADD_COMMENT = '__ngt_renderer_add_comment__';
5
+ export const DOM_PARENT = '__ngt_dom_parent__';
5
6
  export const SPECIAL_DOM_TAG = {
6
7
  NGT_PORTAL: 'ngt-portal',
7
8
  NGT_PRIMITIVE: 'ngt-primitive',
@@ -19,4 +20,4 @@ export const SPECIAL_EVENTS = {
19
20
  ATTACHED: 'attached',
20
21
  };
21
22
  export const THREE_NATIVE_EVENTS = ['added', 'removed', 'childadded', 'childremoved', 'disposed'];
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxrQ0FBa0MsQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsd0JBQXdCLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLDhCQUE4QixDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLDhCQUE4QixDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM5QixVQUFVLEVBQUUsWUFBWTtJQUN4QixhQUFhLEVBQUUsZUFBZTtJQUM5QixTQUFTLEVBQUUsV0FBVztDQUNiLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUNqQyxlQUFlLEVBQUUsVUFBVTtJQUMzQixNQUFNLEVBQUUsUUFBUTtJQUNoQixTQUFTLEVBQUUsVUFBVTtJQUNyQixVQUFVLEVBQUUsWUFBWTtDQUNmLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDN0IsYUFBYSxFQUFFLGNBQWM7SUFDN0IsT0FBTyxFQUFFLFNBQVM7SUFDbEIsUUFBUSxFQUFFLFVBQVU7Q0FDWCxDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgUk9VVEVEX1NDRU5FID0gJ19fbmd0X3JlbmRlcmVyX2lzX3JvdXRlZF9zY2VuZV9fJztcbmV4cG9ydCBjb25zdCBIVE1MID0gJ19fbmd0X3JlbmRlcmVyX2lzX2h0bWwnO1xuZXhwb3J0IGNvbnN0IE5PTl9ST09UID0gJ19fbmd0X3JlbmRlcmVyX2lzX25vbl9yb290X18nO1xuZXhwb3J0IGNvbnN0IFNQRUNJQUxfSU5URVJOQUxfQUREX0NPTU1FTlQgPSAnX19uZ3RfcmVuZGVyZXJfYWRkX2NvbW1lbnRfXyc7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX0RPTV9UQUcgPSB7XG5cdE5HVF9QT1JUQUw6ICduZ3QtcG9ydGFsJyxcblx0TkdUX1BSSU1JVElWRTogJ25ndC1wcmltaXRpdmUnLFxuXHROR1RfVkFMVUU6ICduZ3QtdmFsdWUnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFNQRUNJQUxfUFJPUEVSVElFUyA9IHtcblx0UkVOREVSX1BSSU9SSVRZOiAncHJpb3JpdHknLFxuXHRBVFRBQ0g6ICdhdHRhY2gnLFxuXHRSQVdfVkFMVUU6ICdyYXdWYWx1ZScsXG5cdFBBUkFNRVRFUlM6ICdwYXJhbWV0ZXJzJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBTUEVDSUFMX0VWRU5UUyA9IHtcblx0QkVGT1JFX1JFTkRFUjogJ2JlZm9yZVJlbmRlcicsXG5cdFVQREFURUQ6ICd1cGRhdGVkJyxcblx0QVRUQUNIRUQ6ICdhdHRhY2hlZCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgVEhSRUVfTkFUSVZFX0VWRU5UUyA9IFsnYWRkZWQnLCAncmVtb3ZlZCcsICdjaGlsZGFkZGVkJywgJ2NoaWxkcmVtb3ZlZCcsICdkaXNwb3NlZCddO1xuIl19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvcmVuZGVyZXIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxrQ0FBa0MsQ0FBQztBQUMvRCxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsd0JBQXdCLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLDhCQUE4QixDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLDhCQUE4QixDQUFDO0FBQzNFLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDOUIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsYUFBYSxFQUFFLGVBQWU7SUFDOUIsU0FBUyxFQUFFLFdBQVc7Q0FDYixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDakMsZUFBZSxFQUFFLFVBQVU7SUFDM0IsTUFBTSxFQUFFLFFBQVE7SUFDaEIsU0FBUyxFQUFFLFVBQVU7SUFDckIsVUFBVSxFQUFFLFlBQVk7Q0FDZixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzdCLGFBQWEsRUFBRSxjQUFjO0lBQzdCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFFBQVEsRUFBRSxVQUFVO0NBQ1gsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFJPVVRFRF9TQ0VORSA9ICdfX25ndF9yZW5kZXJlcl9pc19yb3V0ZWRfc2NlbmVfXyc7XG5leHBvcnQgY29uc3QgSFRNTCA9ICdfX25ndF9yZW5kZXJlcl9pc19odG1sJztcbmV4cG9ydCBjb25zdCBOT05fUk9PVCA9ICdfX25ndF9yZW5kZXJlcl9pc19ub25fcm9vdF9fJztcbmV4cG9ydCBjb25zdCBTUEVDSUFMX0lOVEVSTkFMX0FERF9DT01NRU5UID0gJ19fbmd0X3JlbmRlcmVyX2FkZF9jb21tZW50X18nO1xuZXhwb3J0IGNvbnN0IERPTV9QQVJFTlQgPSAnX19uZ3RfZG9tX3BhcmVudF9fJztcblxuZXhwb3J0IGNvbnN0IFNQRUNJQUxfRE9NX1RBRyA9IHtcblx0TkdUX1BPUlRBTDogJ25ndC1wb3J0YWwnLFxuXHROR1RfUFJJTUlUSVZFOiAnbmd0LXByaW1pdGl2ZScsXG5cdE5HVF9WQUxVRTogJ25ndC12YWx1ZScsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgU1BFQ0lBTF9QUk9QRVJUSUVTID0ge1xuXHRSRU5ERVJfUFJJT1JJVFk6ICdwcmlvcml0eScsXG5cdEFUVEFDSDogJ2F0dGFjaCcsXG5cdFJBV19WQUxVRTogJ3Jhd1ZhbHVlJyxcblx0UEFSQU1FVEVSUzogJ3BhcmFtZXRlcnMnLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFNQRUNJQUxfRVZFTlRTID0ge1xuXHRCRUZPUkVfUkVOREVSOiAnYmVmb3JlUmVuZGVyJyxcblx0VVBEQVRFRDogJ3VwZGF0ZWQnLFxuXHRBVFRBQ0hFRDogJ2F0dGFjaGVkJyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBUSFJFRV9OQVRJVkVfRVZFTlRTID0gWydhZGRlZCcsICdyZW1vdmVkJywgJ2NoaWxkYWRkZWQnLCAnY2hpbGRyZW1vdmVkJywgJ2Rpc3Bvc2VkJ107XG4iXX0=