angular-three 2.0.0-beta.266 → 2.0.0-beta.268

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.
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { untracked, computed, signal, ElementRef, input, inject, ViewContainerRef, NgZone, TemplateRef, afterNextRender, DestroyRef, Directive, effect, InjectionToken, getDebugNode, RendererFactory2, Injectable, makeEnvironmentProviders, EnvironmentInjector, Injector, booleanAttribute, output, viewChild, createEnvironmentInjector, Component, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, contentChild, Renderer2 } from '@angular/core';
3
- import { outputFromObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
2
+ import { untracked, computed, signal, ElementRef, input, inject, ViewContainerRef, NgZone, TemplateRef, afterNextRender, DestroyRef, Directive, effect, InjectionToken, getDebugNode, RendererFactory2, Injectable, makeEnvironmentProviders, Component, EnvironmentInjector, Injector, booleanAttribute, output, viewChild, createEnvironmentInjector, ChangeDetectionStrategy, CUSTOM_ELEMENTS_SCHEMA, contentChild, Renderer2 } from '@angular/core';
3
+ import { takeUntilDestroyed, outputFromObservable } from '@angular/core/rxjs-interop';
4
4
  import { injectAutoEffect } from 'ngxtension/auto-effect';
5
5
  import { provideResizeOptions, NgxResize } from 'ngxtension/resize';
6
- import { MathUtils, WebGLRenderer, OrthographicCamera, PerspectiveCamera, Vector3, Layers, Color, BufferAttribute, ColorManagement, Texture, RGBAFormat, UnsignedByteType, Raycaster, Scene, PCFSoftShadowMap, BasicShadowMap, PCFShadowMap, VSMShadowMap, NoToneMapping, ACESFilmicToneMapping, Vector2, Clock } from 'three';
6
+ import { MathUtils, WebGLRenderer, OrthographicCamera, PerspectiveCamera, Vector3, Layers, Color, ColorManagement, Texture, RGBAFormat, UnsignedByteType, Raycaster, Scene, PCFSoftShadowMap, BasicShadowMap, PCFShadowMap, VSMShadowMap, NoToneMapping, ACESFilmicToneMapping, Vector2, Clock } from 'three';
7
7
  import { DOCUMENT } from '@angular/common';
8
8
  import { Subject, filter } from 'rxjs';
9
9
  import { createInjectionToken } from 'ngxtension/create-injection-token';
@@ -876,12 +876,7 @@ function applyProps(instance, props) {
876
876
  value &&
877
877
  value.constructor &&
878
878
  targetProp.constructor.name === value.constructor.name) {
879
- if (value instanceof BufferAttribute && !value.array) {
880
- currentInstance[key] = value;
881
- }
882
- else {
883
- targetProp['copy'](value);
884
- }
879
+ targetProp['copy'](value);
885
880
  if (!ColorManagement && !rootState.linear && isColor)
886
881
  targetProp['convertSRGBToLinear']();
887
882
  } // if nothing else fits, just set the single value, ignore undefined
@@ -2319,6 +2314,32 @@ function provideNgtRenderer(store) {
2319
2314
  return makeEnvironmentProviders(providers);
2320
2315
  }
2321
2316
 
2317
+ var _a$1;
2318
+ class NgtRoutedScene {
2319
+ static { _a$1 = ROUTED_SCENE; }
2320
+ static { this[_a$1] = true; }
2321
+ constructor(router, cdr) {
2322
+ router.events
2323
+ .pipe(filter((event) => event instanceof ActivationEnd), takeUntilDestroyed())
2324
+ .subscribe(cdr.detectChanges.bind(cdr));
2325
+ }
2326
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtRoutedScene, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2327
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: NgtRoutedScene, isStandalone: true, selector: "ngt-routed-scene", ngImport: i0, template: `
2328
+ <router-outlet />
2329
+ `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
2330
+ }
2331
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtRoutedScene, decorators: [{
2332
+ type: Component,
2333
+ args: [{
2334
+ standalone: true,
2335
+ selector: 'ngt-routed-scene',
2336
+ template: `
2337
+ <router-outlet />
2338
+ `,
2339
+ imports: [RouterOutlet],
2340
+ }]
2341
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i0.ChangeDetectorRef }] });
2342
+
2322
2343
  class NgtCanvas {
2323
2344
  constructor() {
2324
2345
  this.store = injectStore();
@@ -2329,7 +2350,13 @@ class NgtCanvas {
2329
2350
  this.zone = inject(NgZone);
2330
2351
  this.environmentInjector = inject(EnvironmentInjector);
2331
2352
  this.injector = inject(Injector);
2332
- this.sceneGraph = input.required();
2353
+ this.sceneGraph = input.required({
2354
+ transform: (value) => {
2355
+ if (value === 'routed')
2356
+ return NgtRoutedScene;
2357
+ return value;
2358
+ },
2359
+ });
2333
2360
  this.gl = input();
2334
2361
  this.size = input();
2335
2362
  this.shadows = input(false, {
@@ -2488,7 +2515,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
2488
2515
  }]
2489
2516
  }], ctorParameters: () => [] });
2490
2517
 
2491
- var _a$1;
2518
+ var _a;
2492
2519
  const NGT_HTML_DOM_ELEMENT = new InjectionToken('NGT_HTML_DOM_ELEMENT');
2493
2520
  function provideHTMLDomElement(...args) {
2494
2521
  if (args.length === 0) {
@@ -2497,8 +2524,8 @@ function provideHTMLDomElement(...args) {
2497
2524
  return { provide: NGT_HTML_DOM_ELEMENT, useFactory: args.pop(), deps: args };
2498
2525
  }
2499
2526
  class NgtHTML {
2500
- static { _a$1 = HTML; }
2501
- static { this[_a$1] = true; }
2527
+ static { _a = HTML; }
2528
+ static { this[_a] = true; }
2502
2529
  constructor() {
2503
2530
  this.store = injectStore();
2504
2531
  this.destroyRef = inject(DestroyRef);
@@ -2532,7 +2559,7 @@ function normalizeInputs(input) {
2532
2559
  return [input];
2533
2560
  return Object.values(input);
2534
2561
  }
2535
- function load(loaderConstructorFactory, inputs, { extensions, onProgress, } = {}) {
2562
+ function load(loaderConstructorFactory, inputs, { extensions, onLoad, onProgress, } = {}) {
2536
2563
  return () => {
2537
2564
  const urls = normalizeInputs(inputs());
2538
2565
  if (urls.some((url) => url.includes('undefined')))
@@ -2552,6 +2579,9 @@ function load(loaderConstructorFactory, inputs, { extensions, onProgress, } = {}
2552
2579
  if ('scene' in data) {
2553
2580
  Object.assign(data, makeObjectGraph(data['scene']));
2554
2581
  }
2582
+ if (onLoad) {
2583
+ onLoad(data);
2584
+ }
2555
2585
  resolve(data);
2556
2586
  }, onProgress, (error) => reject(new Error(`[NGT] Could not load ${url}: ${error?.message}`)));
2557
2587
  }));
@@ -2560,12 +2590,12 @@ function load(loaderConstructorFactory, inputs, { extensions, onProgress, } = {}
2560
2590
  });
2561
2591
  };
2562
2592
  }
2563
- function _injectLoader(loaderConstructorFactory, inputs, { extensions, onProgress, injector, } = {}) {
2593
+ function _injectLoader(loaderConstructorFactory, inputs, { extensions, onProgress, onLoad, injector, } = {}) {
2564
2594
  return assertInjector(_injectLoader, injector, () => {
2565
2595
  const autoEffect = injectAutoEffect();
2566
2596
  const response = signal(null);
2567
2597
  afterNextRender(() => {
2568
- const effector = load(loaderConstructorFactory, inputs, { extensions, onProgress });
2598
+ const effector = load(loaderConstructorFactory, inputs, { extensions, onProgress, onLoad });
2569
2599
  autoEffect(() => {
2570
2600
  const originalUrls = inputs();
2571
2601
  const cachedEffect = effector();
@@ -2617,17 +2647,6 @@ function injectBeforeRender(cb, { priority = 0, injector } = {}) {
2617
2647
  return sub;
2618
2648
  });
2619
2649
  }
2620
- // TODO (chau): clean this up
2621
- function injectNextBeforeRender(cb, { priority = 0, injector } = {}) {
2622
- return assertInjector(injectNextBeforeRender, injector, () => {
2623
- const assertedInjector = inject(Injector);
2624
- const sub = signal(null);
2625
- afterNextRender(() => {
2626
- sub.set(injectBeforeRender(cb, { priority, injector: assertedInjector }));
2627
- });
2628
- return sub.asReadonly();
2629
- });
2630
- }
2631
2650
 
2632
2651
  class NgtPortalBeforeRender {
2633
2652
  constructor() {
@@ -2840,32 +2859,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
2840
2859
  }]
2841
2860
  }], ctorParameters: () => [] });
2842
2861
 
2843
- var _a;
2844
- class NgtRoutedScene {
2845
- static { _a = ROUTED_SCENE; }
2846
- static { this[_a] = true; }
2847
- constructor(router, cdr) {
2848
- router.events
2849
- .pipe(filter((event) => event instanceof ActivationEnd), takeUntilDestroyed())
2850
- .subscribe(cdr.detectChanges.bind(cdr));
2851
- }
2852
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtRoutedScene, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2853
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: NgtRoutedScene, isStandalone: true, selector: "ngt-routed-scene", ngImport: i0, template: `
2854
- <router-outlet />
2855
- `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
2856
- }
2857
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: NgtRoutedScene, decorators: [{
2858
- type: Component,
2859
- args: [{
2860
- standalone: true,
2861
- selector: 'ngt-routed-scene',
2862
- template: `
2863
- <router-outlet />
2864
- `,
2865
- imports: [RouterOutlet],
2866
- }]
2867
- }], ctorParameters: () => [{ type: i1.Router }, { type: i0.ChangeDetectorRef }] });
2868
-
2869
2862
  function resolveRef(ref) {
2870
2863
  if (is.ref(ref)) {
2871
2864
  return ref.nativeElement;
@@ -2961,5 +2954,5 @@ function vector3(options, key, keepUndefined = false) {
2961
2954
  * Generated bundle index. Do not edit.
2962
2955
  */
2963
2956
 
2964
- export { HTML, NGT_STORE, NgtArgs, NgtCanvas, NgtHTML, NgtPortal, NgtPortalContent, NgtRenderer, NgtRendererFactory, NgtRoutedScene, ROUTED_SCENE, addAfterEffect, addEffect, addTail, applyProps, checkNeedsUpdate, checkUpdate, createAttachFunction, extend, getLocalState, injectBeforeRender, injectLoader, injectNextBeforeRender, injectObjectEvents, injectStore, invalidateInstance, is, makeCameraInstance, makeDpr, makeId, makeObjectGraph, makeRendererInstance, merge, omit, pick, prepare, provideHTMLDomElement, provideNgtRenderer, provideStore, resolveRef, signalStore, updateCamera, vector2, vector3 };
2957
+ export { HTML, NGT_STORE, NgtArgs, NgtCanvas, NgtHTML, NgtPortal, NgtPortalContent, NgtRenderer, NgtRendererFactory, NgtRoutedScene, ROUTED_SCENE, addAfterEffect, addEffect, addTail, applyProps, checkNeedsUpdate, checkUpdate, createAttachFunction, extend, getLocalState, injectBeforeRender, injectLoader, injectObjectEvents, injectStore, invalidateInstance, is, makeCameraInstance, makeDpr, makeId, makeObjectGraph, makeRendererInstance, merge, omit, pick, prepare, provideHTMLDomElement, provideNgtRenderer, provideStore, resolveRef, signalStore, updateCamera, vector2, vector3 };
2965
2958
  //# sourceMappingURL=angular-three.mjs.map