angular-three 2.14.0 → 3.0.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.
Files changed (57) hide show
  1. package/fesm2022/angular-three-nativescript.mjs +3 -3
  2. package/fesm2022/angular-three-nativescript.mjs.map +1 -1
  3. package/fesm2022/angular-three-testing.mjs +12 -14
  4. package/fesm2022/angular-three-testing.mjs.map +1 -1
  5. package/fesm2022/angular-three.mjs +116 -100
  6. package/fesm2022/angular-three.mjs.map +1 -1
  7. package/lib/canvas.d.ts +31 -31
  8. package/lib/html.d.ts +3 -3
  9. package/lib/portal.d.ts +2 -2
  10. package/lib/routed-scene.d.ts +8 -2
  11. package/lib/utils/object-events.d.ts +0 -19
  12. package/nativescript/lib/canvas.d.ts +3 -3
  13. package/package.json +3 -9
  14. package/plugin/src/generators/init/schema.json +8 -8
  15. package/esm2022/angular-three.mjs +0 -5
  16. package/esm2022/index.mjs +0 -25
  17. package/esm2022/lib/canvas.mjs +0 -188
  18. package/esm2022/lib/directives/args.mjs +0 -53
  19. package/esm2022/lib/directives/selection.mjs +0 -69
  20. package/esm2022/lib/dom/events.mjs +0 -73
  21. package/esm2022/lib/events.mjs +0 -361
  22. package/esm2022/lib/html.mjs +0 -44
  23. package/esm2022/lib/instance.mjs +0 -83
  24. package/esm2022/lib/loader.mjs +0 -93
  25. package/esm2022/lib/loop.mjs +0 -141
  26. package/esm2022/lib/pipes/hexify.mjs +0 -86
  27. package/esm2022/lib/portal.mjs +0 -220
  28. package/esm2022/lib/renderer/catalogue.mjs +0 -7
  29. package/esm2022/lib/renderer/constants.mjs +0 -23
  30. package/esm2022/lib/renderer/index.mjs +0 -544
  31. package/esm2022/lib/renderer/state.mjs +0 -54
  32. package/esm2022/lib/renderer/utils.mjs +0 -223
  33. package/esm2022/lib/roots.mjs +0 -274
  34. package/esm2022/lib/routed-scene.mjs +0 -33
  35. package/esm2022/lib/store.mjs +0 -179
  36. package/esm2022/lib/three-types.mjs +0 -2
  37. package/esm2022/lib/types.mjs +0 -2
  38. package/esm2022/lib/utils/apply-props.mjs +0 -130
  39. package/esm2022/lib/utils/attach.mjs +0 -46
  40. package/esm2022/lib/utils/before-render.mjs +0 -41
  41. package/esm2022/lib/utils/is.mjs +0 -52
  42. package/esm2022/lib/utils/make.mjs +0 -52
  43. package/esm2022/lib/utils/object-events.mjs +0 -137
  44. package/esm2022/lib/utils/output-ref.mjs +0 -9
  45. package/esm2022/lib/utils/parameters.mjs +0 -70
  46. package/esm2022/lib/utils/resolve-ref.mjs +0 -8
  47. package/esm2022/lib/utils/signal-store.mjs +0 -90
  48. package/esm2022/lib/utils/update.mjs +0 -37
  49. package/esm2022/nativescript/angular-three-nativescript.mjs +0 -5
  50. package/esm2022/nativescript/index.mjs +0 -2
  51. package/esm2022/nativescript/lib/canvas.mjs +0 -127
  52. package/esm2022/testing/angular-three-testing.mjs +0 -5
  53. package/esm2022/testing/index.mjs +0 -3
  54. package/esm2022/testing/lib/test-bed.mjs +0 -130
  55. package/esm2022/testing/lib/test-canvas.mjs +0 -45
  56. package/esm2022/testing/lib/utils/mock-canvas.mjs +0 -37
  57. package/esm2022/testing/lib/utils/web-gl-rendering-context.mjs +0 -752
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { untracked, computed, signal, ElementRef, input, inject, ViewContainerRef, TemplateRef, effect, DestroyRef, Directive, InjectionToken, DebugNode, RendererFactory2, Injectable, makeEnvironmentProviders, Component, NgZone, EnvironmentInjector, Injector, booleanAttribute, output, viewChild, afterNextRender, createEnvironmentInjector, ChangeDetectionStrategy, Pipe, CUSTOM_ELEMENTS_SCHEMA, contentChild, model, Renderer2 } from '@angular/core';
3
- import { takeUntilDestroyed, outputFromObservable } from '@angular/core/rxjs-interop';
2
+ import { untracked, computed, signal, ElementRef, input, inject, ViewContainerRef, TemplateRef, effect, DestroyRef, Directive, InjectionToken, DebugNode, RendererFactory2, Injectable, makeEnvironmentProviders, EnvironmentInjector, InjectFlags, runInInjectionContext, Component, NgZone, Injector, booleanAttribute, output, viewChild, afterNextRender, createEnvironmentInjector, ChangeDetectionStrategy, Pipe, CUSTOM_ELEMENTS_SCHEMA, contentChild, model, Renderer2 } from '@angular/core';
3
+ import { outputFromObservable } from '@angular/core/rxjs-interop';
4
4
  import { provideResizeOptions, NgxResize } from 'ngxtension/resize';
5
5
  import { MathUtils, WebGLRenderer, OrthographicCamera, PerspectiveCamera, Vector3, Vector2, Clock, Layers, Color, ColorManagement, Texture, RGBAFormat, UnsignedByteType, EventDispatcher, Raycaster, Scene, PCFSoftShadowMap, BasicShadowMap, PCFShadowMap, VSMShadowMap, NoToneMapping, ACESFilmicToneMapping, Vector4 } from 'three';
6
6
  import { DOCUMENT } from '@angular/common';
@@ -8,7 +8,7 @@ import { Subject, filter } from 'rxjs';
8
8
  import { createInjectionToken } from 'ngxtension/create-injection-token';
9
9
  import { assertInjector } from 'ngxtension/assert-injector';
10
10
  import * as i1 from '@angular/router';
11
- import { ActivationEnd, RouterOutlet } from '@angular/router';
11
+ import { RouterOutlet, ActivationEnd } from '@angular/router';
12
12
 
13
13
  const STORE_COMPUTED_KEY = '__ngt_signal_store_computed__';
14
14
  function reducer(state) {
@@ -811,10 +811,10 @@ class NgtArgs {
811
811
  this.view = this.vcr.createEmbeddedView(this.template);
812
812
  this.view.detectChanges();
813
813
  }
814
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtArgs, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
815
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: NgtArgs, isStandalone: true, selector: "ng-template[args]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
814
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtArgs, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
815
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.5", type: NgtArgs, isStandalone: true, selector: "ng-template[args]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
816
816
  }
817
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtArgs, decorators: [{
817
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtArgs, decorators: [{
818
818
  type: Directive,
819
819
  args: [{ selector: 'ng-template[args]', standalone: true }]
820
820
  }], ctorParameters: () => [] });
@@ -1605,10 +1605,10 @@ class NgtRendererFactory {
1605
1605
  }
1606
1606
  return renderer;
1607
1607
  }
1608
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtRendererFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1609
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtRendererFactory }); }
1608
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtRendererFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1609
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtRendererFactory }); }
1610
1610
  }
1611
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtRendererFactory, decorators: [{
1611
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtRendererFactory, decorators: [{
1612
1612
  type: Injectable
1613
1613
  }] });
1614
1614
  class NgtRenderer {
@@ -1794,6 +1794,10 @@ class NgtRenderer {
1794
1794
  if (cRS[0 /* NgtRendererClassId.type */] === 'three') {
1795
1795
  removeThreeChild(oldChild, undefined, true);
1796
1796
  }
1797
+ // if the child is the root scene, we don't want to destroy it
1798
+ if (is.scene(oldChild) && oldChild.name === '__ngt_root_scene__')
1799
+ return;
1800
+ // otherwise, we'll destroy it
1797
1801
  this.destroyInternal(oldChild, undefined);
1798
1802
  }
1799
1803
  return;
@@ -2215,6 +2219,7 @@ function injectCanvasRootInitializer(injector) {
2215
2219
  applyProps(scene, sceneOptions);
2216
2220
  }
2217
2221
  applyProps(scene, {
2222
+ name: '__ngt_root_scene__',
2218
2223
  setAttribute: (name, value) => {
2219
2224
  if (canvas instanceof HTMLCanvasElement) {
2220
2225
  if (canvas.parentElement) {
@@ -2370,28 +2375,90 @@ function dispose(obj) {
2370
2375
  }
2371
2376
 
2372
2377
  var _a$1;
2378
+ /**
2379
+ * This is a custom EnvironmentInjector that returns the RendererFactory2 from the `ngtEnvironmentInjector`
2380
+ * for `NgtRendererFactory`
2381
+ */
2382
+ class NgtOutletEnvironmentInjector extends EnvironmentInjector {
2383
+ constructor(routeEnvInjector, ngtEnvInjector) {
2384
+ super();
2385
+ this.routeEnvInjector = routeEnvInjector;
2386
+ this.ngtEnvInjector = ngtEnvInjector;
2387
+ }
2388
+ get(token, notFoundValue, flags = InjectFlags.Default) {
2389
+ const options = {};
2390
+ if (typeof flags === 'object') {
2391
+ Object.assign(options, flags);
2392
+ }
2393
+ else {
2394
+ Object.assign(options, {
2395
+ optional: !!(flags & InjectFlags.Optional),
2396
+ host: !!(flags & InjectFlags.Host),
2397
+ self: !!(flags & InjectFlags.Self),
2398
+ skipSelf: !!(flags & InjectFlags.SkipSelf),
2399
+ });
2400
+ }
2401
+ if (token === RendererFactory2) {
2402
+ return this.ngtEnvInjector.get(token, notFoundValue, options);
2403
+ }
2404
+ return this.routeEnvInjector.get(token, notFoundValue, options);
2405
+ }
2406
+ runInContext(fn) {
2407
+ try {
2408
+ return runInInjectionContext(this.routeEnvInjector, fn);
2409
+ }
2410
+ catch { }
2411
+ return runInInjectionContext(this.ngtEnvInjector, fn);
2412
+ }
2413
+ destroy() {
2414
+ this.routeEnvInjector.destroy();
2415
+ }
2416
+ }
2417
+ /**
2418
+ * This is a custom RouterOutlet that modifies `activateWith` to inherit the `EnvironmentInjector`
2419
+ * that contains the custom `NgtRendererFactory`.
2420
+ *
2421
+ * Use this with extreme caution.
2422
+ */
2423
+ class NgtRouterOutlet extends RouterOutlet {
2424
+ constructor() {
2425
+ super(...arguments);
2426
+ this.environmentInjector = inject(EnvironmentInjector);
2427
+ }
2428
+ activateWith(activatedRoute, environmentInjector) {
2429
+ return super.activateWith(activatedRoute, new NgtOutletEnvironmentInjector(environmentInjector, this.environmentInjector));
2430
+ }
2431
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtRouterOutlet, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
2432
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: NgtRouterOutlet, isStandalone: true, selector: "ngt-router-outlet", usesInheritance: true, ngImport: i0 }); }
2433
+ }
2434
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtRouterOutlet, decorators: [{
2435
+ type: Directive,
2436
+ args: [{ selector: 'ngt-router-outlet' }]
2437
+ }] });
2373
2438
  class NgtRoutedScene {
2374
2439
  static { _a$1 = ROUTED_SCENE; }
2375
2440
  static { this[_a$1] = true; }
2376
2441
  constructor(router, cdr) {
2377
- router.events
2378
- .pipe(filter((event) => event instanceof ActivationEnd), takeUntilDestroyed())
2379
- .subscribe(cdr.detectChanges.bind(cdr));
2442
+ effect((onCleanup) => {
2443
+ const sub = router.events
2444
+ .pipe(filter((event) => event instanceof ActivationEnd))
2445
+ .subscribe(cdr.detectChanges.bind(cdr));
2446
+ onCleanup(() => sub.unsubscribe());
2447
+ });
2380
2448
  }
2381
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtRoutedScene, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2382
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.11", type: NgtRoutedScene, isStandalone: true, selector: "ngt-routed-scene", ngImport: i0, template: `
2383
- <router-outlet />
2384
- `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
2449
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtRoutedScene, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2450
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: NgtRoutedScene, isStandalone: true, selector: "ngt-routed-scene", ngImport: i0, template: `
2451
+ <ngt-router-outlet />
2452
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgtRouterOutlet, selector: "ngt-router-outlet" }] }); }
2385
2453
  }
2386
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtRoutedScene, decorators: [{
2454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtRoutedScene, decorators: [{
2387
2455
  type: Component,
2388
2456
  args: [{
2389
- standalone: true,
2390
2457
  selector: 'ngt-routed-scene',
2391
2458
  template: `
2392
- <router-outlet />
2459
+ <ngt-router-outlet />
2393
2460
  `,
2394
- imports: [RouterOutlet],
2461
+ imports: [NgtRouterOutlet],
2395
2462
  }]
2396
2463
  }], ctorParameters: () => [{ type: i1.Router }, { type: i0.ChangeDetectorRef }] });
2397
2464
 
@@ -2405,10 +2472,8 @@ class NgtCanvas {
2405
2472
  this.injector = inject(Injector);
2406
2473
  this.sceneGraph = input.required({
2407
2474
  transform: (value) => {
2408
- if (value === 'routed') {
2409
- console.warn(`[NGT] 'routed' sceneGraph is not working properly.`);
2475
+ if (value === 'routed')
2410
2476
  return NgtRoutedScene;
2411
- }
2412
2477
  return value;
2413
2478
  },
2414
2479
  });
@@ -2532,8 +2597,8 @@ class NgtCanvas {
2532
2597
  });
2533
2598
  this.glRef.changeDetectorRef.detectChanges();
2534
2599
  }
2535
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2536
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.11", 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: [
2600
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2601
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.5", 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: [
2537
2602
  provideResizeOptions({
2538
2603
  emitInZone: false,
2539
2604
  emitInitialResult: true,
@@ -2546,11 +2611,10 @@ class NgtCanvas {
2546
2611
  </div>
2547
2612
  `, isInline: true, dependencies: [{ kind: "directive", type: NgxResize, selector: "[ngxResize]", inputs: ["ngxResizeOptions"], outputs: ["ngxResize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2548
2613
  }
2549
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtCanvas, decorators: [{
2614
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtCanvas, decorators: [{
2550
2615
  type: Component,
2551
2616
  args: [{
2552
2617
  selector: 'ngt-canvas',
2553
- standalone: true,
2554
2618
  template: `
2555
2619
  <div (ngxResize)="resizeResult.set($event)" style="height: 100%; width: 100%;">
2556
2620
  <canvas #glCanvas style="display: block;"></canvas>
@@ -2584,10 +2648,10 @@ class NgtSelection {
2584
2648
  return;
2585
2649
  this.source.update(...args);
2586
2650
  }
2587
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2588
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: NgtSelection, isStandalone: true, selector: "[ngtSelection]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelection", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
2651
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2652
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.5", type: NgtSelection, isStandalone: true, selector: "[ngtSelection]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelection", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
2589
2653
  }
2590
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtSelection, decorators: [{
2654
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtSelection, decorators: [{
2591
2655
  type: Directive,
2592
2656
  args: [{ standalone: true, selector: '[ngtSelection]' }]
2593
2657
  }] });
@@ -2631,10 +2695,10 @@ class NgtSelect {
2631
2695
  });
2632
2696
  }, { allowSignalWrites: true });
2633
2697
  }
2634
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2635
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", 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 }); }
2698
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2699
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.5", 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 }); }
2636
2700
  }
2637
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtSelect, decorators: [{
2701
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtSelect, decorators: [{
2638
2702
  type: Directive,
2639
2703
  args: [{ standalone: true, selector: 'ngt-group[ngtSelect], ngt-mesh[ngtSelect]' }]
2640
2704
  }], ctorParameters: () => [] });
@@ -2671,10 +2735,10 @@ class NgtHTML {
2671
2735
  delete this.host.nativeElement[DOM_PARENT];
2672
2736
  });
2673
2737
  }
2674
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtHTML, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2675
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: NgtHTML, ngImport: i0 }); }
2738
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtHTML, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2739
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: NgtHTML, isStandalone: true, ngImport: i0 }); }
2676
2740
  }
2677
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtHTML, decorators: [{
2741
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtHTML, decorators: [{
2678
2742
  type: Directive
2679
2743
  }], ctorParameters: () => [] });
2680
2744
 
@@ -2843,10 +2907,10 @@ class NgtHexify {
2843
2907
  const hex = component.toString(16);
2844
2908
  return hex.length === 1 ? '0' + hex : hex;
2845
2909
  }
2846
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtHexify, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2847
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.11", ngImport: i0, type: NgtHexify, isStandalone: true, name: "hexify" }); }
2910
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtHexify, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
2911
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.5", ngImport: i0, type: NgtHexify, isStandalone: true, name: "hexify" }); }
2848
2912
  }
2849
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtHexify, decorators: [{
2913
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtHexify, decorators: [{
2850
2914
  type: Pipe,
2851
2915
  args: [{ name: 'hexify', pure: true, standalone: true }]
2852
2916
  }] });
@@ -2882,13 +2946,13 @@ class NgtPortalBeforeRender {
2882
2946
  onPointerOver() {
2883
2947
  /* noop */
2884
2948
  }
2885
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2886
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.11", 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: `
2949
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtPortalBeforeRender, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2950
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.0.5", 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: `
2887
2951
  <!-- Without an element that receives pointer events state.pointer will always be 0/0 -->
2888
2952
  <ngt-group (pointerover)="onPointerOver()" attach="none" />
2889
2953
  `, isInline: true }); }
2890
2954
  }
2891
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
2955
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtPortalBeforeRender, decorators: [{
2892
2956
  type: Component,
2893
2957
  args: [{
2894
2958
  selector: 'ngt-portal-before-render',
@@ -2913,10 +2977,10 @@ class NgtPortalContent {
2913
2977
  static ngTemplateContextGuard(_, ctx) {
2914
2978
  return true;
2915
2979
  }
2916
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtPortalContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2917
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.11", type: NgtPortalContent, isStandalone: true, selector: "ng-template[portalContent]", ngImport: i0 }); }
2980
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtPortalContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2981
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.5", type: NgtPortalContent, isStandalone: true, selector: "ng-template[portalContent]", ngImport: i0 }); }
2918
2982
  }
2919
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtPortalContent, decorators: [{
2983
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtPortalContent, decorators: [{
2920
2984
  type: Directive,
2921
2985
  args: [{ selector: 'ng-template[portalContent]', standalone: true }]
2922
2986
  }], ctorParameters: () => [] });
@@ -3026,8 +3090,8 @@ class NgtPortal {
3026
3090
  ...rest,
3027
3091
  };
3028
3092
  }
3029
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3030
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.11", 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: `
3093
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3094
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", 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: `
3031
3095
  <ng-container #anchor />
3032
3096
 
3033
3097
  @if (shouldAutoRender()) {
@@ -3039,11 +3103,10 @@ class NgtPortal {
3039
3103
  }
3040
3104
  `, isInline: true, dependencies: [{ kind: "component", type: NgtPortalBeforeRender, selector: "ngt-portal-before-render", inputs: ["renderPriority", "parentScene", "parentCamera"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3041
3105
  }
3042
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtPortal, decorators: [{
3106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtPortal, decorators: [{
3043
3107
  type: Component,
3044
3108
  args: [{
3045
3109
  selector: 'ngt-portal',
3046
- standalone: true,
3047
3110
  template: `
3048
3111
  <ng-container #anchor />
3049
3112
 
@@ -3164,60 +3227,13 @@ class NgtObjectEvents {
3164
3227
  emitEvent(eventName) {
3165
3228
  return this[eventName].emit.bind(this[eventName]);
3166
3229
  }
3167
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtObjectEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3168
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.11", type: NgtObjectEvents, isStandalone: true, selector: "[ngtObjectEvents]", inputs: { ngtObjectEvents: { classPropertyName: "ngtObjectEvents", publicName: "ngtObjectEvents", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { click: "click", dblclick: "dblclick", contextmenu: "contextmenu", pointerup: "pointerup", pointerdown: "pointerdown", pointerover: "pointerover", pointerout: "pointerout", pointerenter: "pointerenter", pointerleave: "pointerleave", pointermove: "pointermove", pointermissed: "pointermissed", pointercancel: "pointercancel", wheel: "wheel", ngtObjectEvents: "ngtObjectEventsChange" }, ngImport: i0 }); }
3230
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtObjectEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3231
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.5", type: NgtObjectEvents, isStandalone: true, selector: "[ngtObjectEvents]", inputs: { ngtObjectEvents: { classPropertyName: "ngtObjectEvents", publicName: "ngtObjectEvents", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { click: "click", dblclick: "dblclick", contextmenu: "contextmenu", pointerup: "pointerup", pointerdown: "pointerdown", pointerover: "pointerover", pointerout: "pointerout", pointerenter: "pointerenter", pointerleave: "pointerleave", pointermove: "pointermove", pointermissed: "pointermissed", pointercancel: "pointercancel", wheel: "wheel", ngtObjectEvents: "ngtObjectEventsChange" }, ngImport: i0 }); }
3169
3232
  }
3170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: NgtObjectEvents, decorators: [{
3233
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: NgtObjectEvents, decorators: [{
3171
3234
  type: Directive,
3172
3235
  args: [{ standalone: true, selector: '[ngtObjectEvents]' }]
3173
3236
  }], ctorParameters: () => [] });
3174
- /**
3175
- * @deprecated this has never worked. Use `NgtObjectEvents` and explicit value for inputs and outputs instead
3176
- * @since 2.12.0 Will be removed in 3.0.0
3177
- */
3178
- const NgtObjectEventsInputs = ['ngtObjectEvents'];
3179
- /**
3180
- * @deprecated this has never worked. Use `NgtObjectEvents` and explicit value for inputs and outputs instead
3181
- * @since 2.12.0 Will be removed in 3.0.0
3182
- */
3183
- const NgtObjectEventsOutputs = [
3184
- 'click',
3185
- 'dblclick',
3186
- 'contextmenu',
3187
- 'pointerup',
3188
- 'pointerdown',
3189
- 'pointerover',
3190
- 'pointerout',
3191
- 'pointerenter',
3192
- 'pointerleave',
3193
- 'pointermove',
3194
- 'pointermissed',
3195
- 'pointercancel',
3196
- 'wheel',
3197
- ];
3198
- /**
3199
- * @deprecated Use NgtObjectEventsInputs and NgtObjectEventsOutputs instead along with NgtObjectEvents
3200
- * @since 2.6.0 Will be removed in 3.0.0
3201
- */
3202
- const NgtObjectEventsHostDirective = {
3203
- directive: NgtObjectEvents,
3204
- inputs: ['ngtObjectEvents'],
3205
- outputs: [
3206
- 'click',
3207
- 'dblclick',
3208
- 'contextmenu',
3209
- 'pointerup',
3210
- 'pointerdown',
3211
- 'pointerover',
3212
- 'pointerout',
3213
- 'pointerenter',
3214
- 'pointerleave',
3215
- 'pointermove',
3216
- 'pointermissed',
3217
- 'pointercancel',
3218
- 'wheel',
3219
- ],
3220
- };
3221
3237
  function injectObjectEvents(target, events, { injector } = {}) {
3222
3238
  return assertInjector(injectObjectEvents, injector, () => {
3223
3239
  const renderer = inject(Renderer2);
@@ -3321,5 +3337,5 @@ const vector4 = createVectorComputed(Vector4);
3321
3337
  * Generated bundle index. Do not edit.
3322
3338
  */
3323
3339
 
3324
- export { HTML, NGT_APPLY_PROPS, NGT_STORE, NON_ROOT, NgtArgs, NgtCanvas, NgtHTML, NgtHexify, NgtObjectEvents, NgtObjectEventsHostDirective, NgtObjectEventsInputs, NgtObjectEventsOutputs, NgtPortal, NgtPortalBeforeRender, NgtPortalContent, NgtRenderer, NgtRendererFactory, NgtRoutedScene, NgtSelect, NgtSelection, ROUTED_SCENE, addAfterEffect, addEffect, addTail, applyProps, attach, checkNeedsUpdate, checkUpdate, createAttachFunction, detach, dispose, extend, flushGlobalEffects, getEmitter, getLocalState, hasListener, injectBeforeRender, injectCanvasRootInitializer, injectLoader, injectLoop, injectObjectEvents, injectStore, invalidateInstance, is, makeCameraInstance, makeDpr, makeId, makeObjectGraph, makeRendererInstance, merge, omit, pick, prepare, privateKeys, provideHTMLDomElement, provideNgtRenderer, provideStore, resolveRef, roots, signalStore, updateCamera, vector2, vector3, vector4 };
3340
+ export { HTML, NGT_APPLY_PROPS, NGT_STORE, NON_ROOT, NgtArgs, NgtCanvas, NgtHTML, NgtHexify, NgtObjectEvents, NgtPortal, NgtPortalBeforeRender, NgtPortalContent, NgtRenderer, NgtRendererFactory, NgtRoutedScene, NgtRouterOutlet, NgtSelect, NgtSelection, ROUTED_SCENE, addAfterEffect, addEffect, addTail, applyProps, attach, checkNeedsUpdate, checkUpdate, createAttachFunction, detach, dispose, extend, flushGlobalEffects, getEmitter, getLocalState, hasListener, injectBeforeRender, injectCanvasRootInitializer, injectLoader, injectLoop, injectObjectEvents, injectStore, invalidateInstance, is, makeCameraInstance, makeDpr, makeId, makeObjectGraph, makeRendererInstance, merge, omit, pick, prepare, privateKeys, provideHTMLDomElement, provideNgtRenderer, provideStore, resolveRef, roots, signalStore, updateCamera, vector2, vector3, vector4 };
3325
3341
  //# sourceMappingURL=angular-three.mjs.map