angular-three 4.0.0-next.1 → 4.0.0-next.10

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.
@@ -86,10 +86,10 @@ class NgtCanvasContent {
86
86
  commentNode.data = NGT_CANVAS_CONTENT_FLAG;
87
87
  commentNode[NGT_CANVAS_CONTENT_FLAG] = store;
88
88
  }
89
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtCanvasContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
90
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.6", type: NgtCanvasContent, isStandalone: true, selector: "ng-template[canvasContent]", ngImport: i0 }); }
89
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtCanvasContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
90
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.4", type: NgtCanvasContent, isStandalone: true, selector: "ng-template[canvasContent]", ngImport: i0 }); }
91
91
  }
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtCanvasContent, decorators: [{
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtCanvasContent, decorators: [{
93
93
  type: Directive,
94
94
  args: [{ selector: 'ng-template[canvasContent]' }]
95
95
  }], ctorParameters: () => [] });
@@ -172,6 +172,7 @@ class NgtCanvas {
172
172
  this.zone.runOutsideAngular(() => {
173
173
  configurator.configure(canvasOptions);
174
174
  if (this.glRef) {
175
+ this.store.snapshot.invalidate();
175
176
  this.glRef.detectChanges();
176
177
  }
177
178
  else {
@@ -216,8 +217,8 @@ class NgtCanvas {
216
217
  this.glRef = canvasVcr.createEmbeddedView(canvasContent, {}, { injector: this.injector });
217
218
  this.glRef.detectChanges();
218
219
  }
219
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
220
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.6", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { 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: { attributes: { "ngSkipHydration": "true" }, properties: { "style.pointerEvents": "hbPointerEvents()" }, styleAttribute: "display: block;position: relative;width: 100%;height: 100%;overflow: hidden;" }, providers: [
220
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
221
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtCanvas, isStandalone: true, selector: "ngt-canvas", inputs: { 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: { attributes: { "ngSkipHydration": "true" }, properties: { "style.pointerEvents": "hbPointerEvents()" }, styleAttribute: "display: block;position: relative;width: 100%;height: 100%;overflow: hidden;" }, providers: [
221
222
  provideResizeOptions({
222
223
  emitInZone: false,
223
224
  emitInitialResult: true,
@@ -231,7 +232,7 @@ class NgtCanvas {
231
232
  </div>
232
233
  `, isInline: true, dependencies: [{ kind: "directive", type: NgxResize, selector: "[ngxResize]", inputs: ["ngxResizeOptions"], outputs: ["ngxResize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
233
234
  }
234
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtCanvas, decorators: [{
235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtCanvas, decorators: [{
235
236
  type: Component,
236
237
  args: [{
237
238
  selector: 'ngt-canvas',
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-dom.mjs","sources":["../../../../libs/core/dom/src/lib/events.ts","../../../../libs/core/dom/src/lib/canvas.ts","../../../../libs/core/dom/src/lib/renderer.ts","../../../../libs/core/dom/src/angular-three-dom.ts"],"sourcesContent":["import {\n\tcreateEvents,\n\tNgtAnyRecord,\n\tNgtDomEvent,\n\tNgtEventManager,\n\tNgtEvents,\n\tNgtState,\n\tSignalState,\n} from 'angular-three';\n\nconst DOM_EVENTS = {\n\tclick: false,\n\tcontextmenu: false,\n\tdblclick: false,\n\twheel: false, // passive wheel errors with OrbitControls\n\tpointerdown: true,\n\tpointerup: true,\n\tpointerleave: true,\n\tpointermove: true,\n\tpointercancel: true,\n\tlostpointercapture: true,\n} as const;\n\nexport const supportedEvents = [\n\t'click',\n\t'contextmenu',\n\t'dblclick',\n\t'pointerup',\n\t'pointerdown',\n\t'pointerover',\n\t'pointerout',\n\t'pointerenter',\n\t'pointerleave',\n\t'pointermove',\n\t'pointermissed',\n\t'pointercancel',\n\t'wheel',\n] as const;\n\nexport function createPointerEvents(store: SignalState<NgtState>): NgtEventManager<HTMLElement> {\n\tconst { handlePointer } = createEvents(store);\n\n\treturn {\n\t\tpriority: 1,\n\t\tenabled: true,\n\t\tcompute: (event: NgtDomEvent, root: SignalState<NgtState>) => {\n\t\t\tconst state = root.snapshot;\n\t\t\t// https://github.com/pmndrs/react-three-fiber/pull/782\n\t\t\t// Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides\n\t\t\tstate.pointer.set((event.offsetX / state.size.width) * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);\n\t\t\tstate.raycaster.setFromCamera(state.pointer, state.camera);\n\t\t},\n\t\tconnected: undefined,\n\t\thandlers: Object.keys(DOM_EVENTS).reduce((handlers: NgtAnyRecord, supportedEventName) => {\n\t\t\thandlers[supportedEventName] = handlePointer(supportedEventName);\n\t\t\treturn handlers;\n\t\t}, {}) as NgtEvents,\n\t\tupdate: () => {\n\t\t\tconst { events, internal } = store.snapshot;\n\t\t\tif (internal.lastEvent?.nativeElement && events.handlers)\n\t\t\t\tevents.handlers.pointermove(internal.lastEvent.nativeElement);\n\t\t},\n\t\tconnect: (target: HTMLElement) => {\n\t\t\tconst state = store.snapshot;\n\t\t\tstate.events.disconnect?.();\n\n\t\t\tstate.setEvents({ connected: target });\n\n\t\t\tObject.entries(state.events.handlers ?? {}).forEach(([eventName, eventHandler]: [string, EventListener]) => {\n\t\t\t\tconst passive = DOM_EVENTS[eventName as keyof typeof DOM_EVENTS];\n\t\t\t\ttarget.addEventListener(eventName, eventHandler, { passive });\n\t\t\t});\n\t\t},\n\t\tdisconnect: () => {\n\t\t\tconst { events, setEvents } = store.snapshot;\n\t\t\tif (events.connected) {\n\t\t\t\tObject.entries(events.handlers ?? {}).forEach(([eventName, eventHandler]: [string, EventListener]) => {\n\t\t\t\t\tif (events.connected instanceof HTMLElement) {\n\t\t\t\t\t\tevents.connected.removeEventListener(eventName, eventHandler);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tsetEvents({ connected: undefined });\n\t\t\t}\n\t\t},\n\t};\n}\n","import {\n\tafterNextRender,\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tElementRef,\n\tEmbeddedViewRef,\n\tinject,\n\tInjector,\n\tinput,\n\tNgZone,\n\toutput,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n\tviewChild,\n\tViewContainerRef,\n} from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport {\n\tinjectCanvasRootInitializer,\n\tinjectStore,\n\tis,\n\tNGT_CANVAS_CONTENT_FLAG,\n\tNGT_STORE,\n\tNgtCamera,\n\tNgtCameraParameters,\n\tNgtCanvasConfigurator,\n\tNgtDomEvent,\n\tNgtDpr,\n\tNgtEventPrefix,\n\tNgtFrameloop,\n\tNgtGLOptions,\n\tNgtPerformance,\n\tNgtShadows,\n\tNgtSize,\n\tNgtState,\n\tNgtVector3,\n\tstoreFactory,\n} from 'angular-three';\nimport { NgxResize, provideResizeOptions, ResizeOptions, ResizeResult } from 'ngxtension/resize';\nimport * as THREE from 'three';\nimport { createPointerEvents } from './events';\n\n@Directive({ selector: 'ng-template[canvasContent]' })\nexport class NgtCanvasContent {\n\tconstructor() {\n\t\tconst store = injectStore();\n\t\tconst vcr = inject(ViewContainerRef);\n\t\tconst commentNode = vcr.element.nativeElement;\n\n\t\t// NOTE: flag this canvasContent ng-template comment node as the start\n\t\tcommentNode.data = NGT_CANVAS_CONTENT_FLAG;\n\t\tcommentNode[NGT_CANVAS_CONTENT_FLAG] = store;\n\t}\n}\n\n@Component({\n\tselector: 'ngt-canvas',\n\ttemplate: `\n\t\t<div (ngxResize)=\"resizeResult.set($event)\" style=\"height: 100%; width: 100%;\">\n\t\t\t<canvas #glCanvas style=\"display: block;\"></canvas>\n\t\t\t<ng-content />\n\t\t</div>\n\t`,\n\timports: [NgxResize],\n\tproviders: [\n\t\tprovideResizeOptions({\n\t\t\temitInZone: false,\n\t\t\temitInitialResult: true,\n\t\t\tdebounce: { scroll: 50, resize: 0 },\n\t\t} as ResizeOptions),\n\t\t{ provide: NGT_STORE, useFactory: storeFactory },\n\t],\n\thost: {\n\t\tstyle: 'display: block;position: relative;width: 100%;height: 100%;overflow: hidden;',\n\t\t'[style.pointerEvents]': 'hbPointerEvents()',\n\t\tngSkipHydration: 'true',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtCanvas {\n\tprivate store = injectStore();\n\tprivate initRoot = injectCanvasRootInitializer();\n\n\tprivate host = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate zone = inject(NgZone);\n\tprivate injector = inject(Injector);\n\n\tgl = input<NgtGLOptions>();\n\tsize = input<NgtSize>();\n\tshadows = input(false, {\n\t\ttransform: (value) => {\n\t\t\tif (value === '') return booleanAttribute(value);\n\t\t\treturn value as NgtShadows;\n\t\t},\n\t});\n\tlegacy = input(false, { transform: booleanAttribute });\n\tlinear = input(false, { transform: booleanAttribute });\n\tflat = input(false, { transform: booleanAttribute });\n\torthographic = input(false, { transform: booleanAttribute });\n\tframeloop = input<NgtFrameloop>('always');\n\tperformance = input<Partial<Omit<NgtPerformance, 'regress'>>>();\n\tdpr = input<NgtDpr>([1, 2]);\n\traycaster = input<Partial<THREE.Raycaster>>();\n\tscene = input<THREE.Scene | Partial<THREE.Scene>>();\n\tcamera = input<NgtCamera | NgtCameraParameters>();\n\tevents = input(createPointerEvents);\n\teventSource = input<HTMLElement | ElementRef<HTMLElement>>();\n\teventPrefix = input<NgtEventPrefix>('offset');\n\tlookAt = input<NgtVector3>();\n\n\tcreated = output<NgtState>();\n\tpointerMissed = outputFromObservable(this.store.snapshot.pointerMissed$);\n\n\tprivate glCanvas = viewChild.required<ElementRef<HTMLCanvasElement>>('glCanvas');\n\tprivate glCanvasViewContainerRef = viewChild.required('glCanvas', { read: ViewContainerRef });\n\tprivate canvasContentRef = contentChild.required(NgtCanvasContent, { read: TemplateRef });\n\n\tprotected hbPointerEvents = computed(() => (this.eventSource() ? 'none' : 'auto'));\n\n\t// NOTE: this signal is updated outside of Zone\n\tprotected resizeResult = signal<ResizeResult>({} as ResizeResult, { equal: Object.is });\n\tprivate configurator = signal<NgtCanvasConfigurator | null>(null);\n\n\tprivate glRef?: EmbeddedViewRef<unknown>;\n\n\tconstructor() {\n\t\t// NOTE: this means that everything in NgtCanvas will be in afterNextRender.\n\t\t// this allows the content of NgtCanvas to use effect instead of afterNextRender\n\t\tafterNextRender(() => {\n\t\t\tconst [canvasVcr, canvasElement, canvasContent] = [\n\t\t\t\tthis.glCanvasViewContainerRef(),\n\t\t\t\tthis.glCanvas().nativeElement,\n\t\t\t\tthis.canvasContentRef(),\n\t\t\t];\n\n\t\t\tthis.zone.runOutsideAngular(() => {\n\t\t\t\tthis.configurator.set(this.initRoot(canvasElement));\n\t\t\t});\n\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tconst resizeResult = this.resizeResult();\n\t\t\t\t\tif (!resizeResult.width || resizeResult.width <= 0 || !resizeResult.height || resizeResult.height <= 0)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tconst configurator = this.configurator();\n\t\t\t\t\tif (!configurator) return;\n\n\t\t\t\t\tconst canvasOptions = {\n\t\t\t\t\t\tgl: this.gl(),\n\t\t\t\t\t\tshadows: this.shadows(),\n\t\t\t\t\t\tlegacy: this.legacy(),\n\t\t\t\t\t\tlinear: this.linear(),\n\t\t\t\t\t\tflat: this.flat(),\n\t\t\t\t\t\torthographic: this.orthographic(),\n\t\t\t\t\t\tframeloop: this.frameloop(),\n\t\t\t\t\t\tperformance: this.performance(),\n\t\t\t\t\t\tdpr: this.dpr(),\n\t\t\t\t\t\traycaster: this.raycaster(),\n\t\t\t\t\t\tscene: this.scene(),\n\t\t\t\t\t\tcamera: this.camera(),\n\t\t\t\t\t\tevents: this.events(),\n\t\t\t\t\t\teventSource: this.eventSource(),\n\t\t\t\t\t\teventPrefix: this.eventPrefix(),\n\t\t\t\t\t\tlookAt: this.lookAt(),\n\t\t\t\t\t\tsize: resizeResult,\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.zone.runOutsideAngular(() => {\n\t\t\t\t\t\tconfigurator.configure(canvasOptions);\n\n\t\t\t\t\t\tif (this.glRef) {\n\t\t\t\t\t\t\tthis.glRef.detectChanges();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.noZoneRender(canvasElement, canvasVcr, canvasContent);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this.injector },\n\t\t\t);\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.glRef?.destroy();\n\t\t\tthis.configurator()?.destroy();\n\t\t});\n\t}\n\n\tprivate noZoneRender(\n\t\tcanvasElement: HTMLCanvasElement,\n\t\tcanvasVcr: ViewContainerRef,\n\t\tcanvasContent: TemplateRef<unknown>,\n\t) {\n\t\t// NOTE: destroy previous instances if existed\n\t\tthis.glRef?.destroy();\n\n\t\t// NOTE: Flag the canvas active, rendering will now begin\n\t\tthis.store.update((state) => ({ internal: { ...state.internal, active: true } }));\n\n\t\tconst [state, eventSource, eventPrefix] = [\n\t\t\tthis.store.snapshot,\n\t\t\tuntracked(this.eventSource),\n\t\t\tuntracked(this.eventPrefix),\n\t\t];\n\n\t\t// connect to event source\n\t\tstate.events.connect?.(\n\t\t\teventSource ? (is.ref(eventSource) ? eventSource.nativeElement : eventSource) : this.host.nativeElement,\n\t\t);\n\n\t\t// setup compute for eventPrefix\n\t\tif (eventPrefix) {\n\t\t\tstate.setEvents({\n\t\t\t\tcompute: (event, store) => {\n\t\t\t\t\tconst { pointer, raycaster, camera, size } = store.snapshot;\n\t\t\t\t\tconst x = event[(eventPrefix + 'X') as keyof NgtDomEvent] as number;\n\t\t\t\t\tconst y = event[(eventPrefix + 'Y') as keyof NgtDomEvent] as number;\n\t\t\t\t\tpointer.set((x / size.width) * 2 - 1, -(y / size.height) * 2 + 1);\n\t\t\t\t\traycaster.setFromCamera(pointer, camera);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthis.created.emit(this.store.snapshot);\n\n\t\tif (!this.store.snapshot.events.connected) {\n\t\t\tthis.store.snapshot.events.connect?.(canvasElement);\n\t\t}\n\n\t\tthis.glRef = canvasVcr.createEmbeddedView(canvasContent, {}, { injector: this.injector });\n\t\tthis.glRef.detectChanges();\n\t}\n}\n\nexport const NgtCanvasDeclarations = [NgtCanvas, NgtCanvasContent] as const;\n","import { makeEnvironmentProviders, RendererFactory2 } from '@angular/core';\nimport { ɵDomRendererFactory2 as DomRendererFactory2 } from '@angular/platform-browser';\nimport { NgtRendererFactory2 } from 'angular-three';\n\nexport function provideNgtRenderer() {\n\treturn makeEnvironmentProviders([\n\t\t{\n\t\t\tprovide: RendererFactory2,\n\t\t\tuseFactory: (domRendererFactory: RendererFactory2) => new NgtRendererFactory2(domRendererFactory),\n\t\t\tdeps: [DomRendererFactory2],\n\t\t},\n\t]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DomRendererFactory2"],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-dom.mjs","sources":["../../../../libs/core/dom/src/lib/events.ts","../../../../libs/core/dom/src/lib/canvas.ts","../../../../libs/core/dom/src/lib/renderer.ts","../../../../libs/core/dom/src/angular-three-dom.ts"],"sourcesContent":["import {\n\tcreateEvents,\n\tNgtAnyRecord,\n\tNgtDomEvent,\n\tNgtEventManager,\n\tNgtEvents,\n\tNgtState,\n\tSignalState,\n} from 'angular-three';\n\nconst DOM_EVENTS = {\n\tclick: false,\n\tcontextmenu: false,\n\tdblclick: false,\n\twheel: false, // passive wheel errors with OrbitControls\n\tpointerdown: true,\n\tpointerup: true,\n\tpointerleave: true,\n\tpointermove: true,\n\tpointercancel: true,\n\tlostpointercapture: true,\n} as const;\n\nexport const supportedEvents = [\n\t'click',\n\t'contextmenu',\n\t'dblclick',\n\t'pointerup',\n\t'pointerdown',\n\t'pointerover',\n\t'pointerout',\n\t'pointerenter',\n\t'pointerleave',\n\t'pointermove',\n\t'pointermissed',\n\t'pointercancel',\n\t'wheel',\n] as const;\n\nexport function createPointerEvents(store: SignalState<NgtState>): NgtEventManager<HTMLElement> {\n\tconst { handlePointer } = createEvents(store);\n\n\treturn {\n\t\tpriority: 1,\n\t\tenabled: true,\n\t\tcompute: (event: NgtDomEvent, root: SignalState<NgtState>) => {\n\t\t\tconst state = root.snapshot;\n\t\t\t// https://github.com/pmndrs/react-three-fiber/pull/782\n\t\t\t// Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides\n\t\t\tstate.pointer.set((event.offsetX / state.size.width) * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);\n\t\t\tstate.raycaster.setFromCamera(state.pointer, state.camera);\n\t\t},\n\t\tconnected: undefined,\n\t\thandlers: Object.keys(DOM_EVENTS).reduce((handlers: NgtAnyRecord, supportedEventName) => {\n\t\t\thandlers[supportedEventName] = handlePointer(supportedEventName);\n\t\t\treturn handlers;\n\t\t}, {}) as NgtEvents,\n\t\tupdate: () => {\n\t\t\tconst { events, internal } = store.snapshot;\n\t\t\tif (internal.lastEvent?.nativeElement && events.handlers)\n\t\t\t\tevents.handlers.pointermove(internal.lastEvent.nativeElement);\n\t\t},\n\t\tconnect: (target: HTMLElement) => {\n\t\t\tconst state = store.snapshot;\n\t\t\tstate.events.disconnect?.();\n\n\t\t\tstate.setEvents({ connected: target });\n\n\t\t\tObject.entries(state.events.handlers ?? {}).forEach(([eventName, eventHandler]: [string, EventListener]) => {\n\t\t\t\tconst passive = DOM_EVENTS[eventName as keyof typeof DOM_EVENTS];\n\t\t\t\ttarget.addEventListener(eventName, eventHandler, { passive });\n\t\t\t});\n\t\t},\n\t\tdisconnect: () => {\n\t\t\tconst { events, setEvents } = store.snapshot;\n\t\t\tif (events.connected) {\n\t\t\t\tObject.entries(events.handlers ?? {}).forEach(([eventName, eventHandler]: [string, EventListener]) => {\n\t\t\t\t\tif (events.connected instanceof HTMLElement) {\n\t\t\t\t\t\tevents.connected.removeEventListener(eventName, eventHandler);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tsetEvents({ connected: undefined });\n\t\t\t}\n\t\t},\n\t};\n}\n","import {\n\tafterNextRender,\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tElementRef,\n\tEmbeddedViewRef,\n\tinject,\n\tInjector,\n\tinput,\n\tNgZone,\n\toutput,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n\tviewChild,\n\tViewContainerRef,\n} from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport {\n\tinjectCanvasRootInitializer,\n\tinjectStore,\n\tis,\n\tNGT_CANVAS_CONTENT_FLAG,\n\tNGT_STORE,\n\tNgtCamera,\n\tNgtCameraParameters,\n\tNgtCanvasConfigurator,\n\tNgtDomEvent,\n\tNgtDpr,\n\tNgtEventPrefix,\n\tNgtFrameloop,\n\tNgtGLOptions,\n\tNgtPerformance,\n\tNgtShadows,\n\tNgtSize,\n\tNgtState,\n\tNgtVector3,\n\tstoreFactory,\n} from 'angular-three';\nimport { NgxResize, provideResizeOptions, ResizeOptions, ResizeResult } from 'ngxtension/resize';\nimport * as THREE from 'three';\nimport { createPointerEvents } from './events';\n\n@Directive({ selector: 'ng-template[canvasContent]' })\nexport class NgtCanvasContent {\n\tconstructor() {\n\t\tconst store = injectStore();\n\t\tconst vcr = inject(ViewContainerRef);\n\t\tconst commentNode = vcr.element.nativeElement;\n\n\t\t// NOTE: flag this canvasContent ng-template comment node as the start\n\t\tcommentNode.data = NGT_CANVAS_CONTENT_FLAG;\n\t\tcommentNode[NGT_CANVAS_CONTENT_FLAG] = store;\n\t}\n}\n\n@Component({\n\tselector: 'ngt-canvas',\n\ttemplate: `\n\t\t<div (ngxResize)=\"resizeResult.set($event)\" style=\"height: 100%; width: 100%;\">\n\t\t\t<canvas #glCanvas style=\"display: block;\"></canvas>\n\t\t\t<ng-content />\n\t\t</div>\n\t`,\n\timports: [NgxResize],\n\tproviders: [\n\t\tprovideResizeOptions({\n\t\t\temitInZone: false,\n\t\t\temitInitialResult: true,\n\t\t\tdebounce: { scroll: 50, resize: 0 },\n\t\t} as ResizeOptions),\n\t\t{ provide: NGT_STORE, useFactory: storeFactory },\n\t],\n\thost: {\n\t\tstyle: 'display: block;position: relative;width: 100%;height: 100%;overflow: hidden;',\n\t\t'[style.pointerEvents]': 'hbPointerEvents()',\n\t\tngSkipHydration: 'true',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtCanvas {\n\tprivate store = injectStore();\n\tprivate initRoot = injectCanvasRootInitializer();\n\n\tprivate host = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate zone = inject(NgZone);\n\tprivate injector = inject(Injector);\n\n\tgl = input<NgtGLOptions>();\n\tsize = input<NgtSize>();\n\tshadows = input(false, {\n\t\ttransform: (value) => {\n\t\t\tif (value === '') return booleanAttribute(value);\n\t\t\treturn value as NgtShadows;\n\t\t},\n\t});\n\tlegacy = input(false, { transform: booleanAttribute });\n\tlinear = input(false, { transform: booleanAttribute });\n\tflat = input(false, { transform: booleanAttribute });\n\torthographic = input(false, { transform: booleanAttribute });\n\tframeloop = input<NgtFrameloop>('always');\n\tperformance = input<Partial<Omit<NgtPerformance, 'regress'>>>();\n\tdpr = input<NgtDpr>([1, 2]);\n\traycaster = input<Partial<THREE.Raycaster>>();\n\tscene = input<THREE.Scene | Partial<THREE.Scene>>();\n\tcamera = input<NgtCamera | NgtCameraParameters>();\n\tevents = input(createPointerEvents);\n\teventSource = input<HTMLElement | ElementRef<HTMLElement>>();\n\teventPrefix = input<NgtEventPrefix>('offset');\n\tlookAt = input<NgtVector3>();\n\n\tcreated = output<NgtState>();\n\tpointerMissed = outputFromObservable(this.store.snapshot.pointerMissed$);\n\n\tprivate glCanvas = viewChild.required<ElementRef<HTMLCanvasElement>>('glCanvas');\n\tprivate glCanvasViewContainerRef = viewChild.required('glCanvas', { read: ViewContainerRef });\n\tprivate canvasContentRef = contentChild.required(NgtCanvasContent, { read: TemplateRef });\n\n\tprotected hbPointerEvents = computed(() => (this.eventSource() ? 'none' : 'auto'));\n\n\t// NOTE: this signal is updated outside of Zone\n\tprotected resizeResult = signal<ResizeResult>({} as ResizeResult, { equal: Object.is });\n\tprivate configurator = signal<NgtCanvasConfigurator | null>(null);\n\n\tprivate glRef?: EmbeddedViewRef<unknown>;\n\n\tconstructor() {\n\t\t// NOTE: this means that everything in NgtCanvas will be in afterNextRender.\n\t\t// this allows the content of NgtCanvas to use effect instead of afterNextRender\n\t\tafterNextRender(() => {\n\t\t\tconst [canvasVcr, canvasElement, canvasContent] = [\n\t\t\t\tthis.glCanvasViewContainerRef(),\n\t\t\t\tthis.glCanvas().nativeElement,\n\t\t\t\tthis.canvasContentRef(),\n\t\t\t];\n\n\t\t\tthis.zone.runOutsideAngular(() => {\n\t\t\t\tthis.configurator.set(this.initRoot(canvasElement));\n\t\t\t});\n\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tconst resizeResult = this.resizeResult();\n\t\t\t\t\tif (!resizeResult.width || resizeResult.width <= 0 || !resizeResult.height || resizeResult.height <= 0)\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\tconst configurator = this.configurator();\n\t\t\t\t\tif (!configurator) return;\n\n\t\t\t\t\tconst canvasOptions = {\n\t\t\t\t\t\tgl: this.gl(),\n\t\t\t\t\t\tshadows: this.shadows(),\n\t\t\t\t\t\tlegacy: this.legacy(),\n\t\t\t\t\t\tlinear: this.linear(),\n\t\t\t\t\t\tflat: this.flat(),\n\t\t\t\t\t\torthographic: this.orthographic(),\n\t\t\t\t\t\tframeloop: this.frameloop(),\n\t\t\t\t\t\tperformance: this.performance(),\n\t\t\t\t\t\tdpr: this.dpr(),\n\t\t\t\t\t\traycaster: this.raycaster(),\n\t\t\t\t\t\tscene: this.scene(),\n\t\t\t\t\t\tcamera: this.camera(),\n\t\t\t\t\t\tevents: this.events(),\n\t\t\t\t\t\teventSource: this.eventSource(),\n\t\t\t\t\t\teventPrefix: this.eventPrefix(),\n\t\t\t\t\t\tlookAt: this.lookAt(),\n\t\t\t\t\t\tsize: resizeResult,\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.zone.runOutsideAngular(() => {\n\t\t\t\t\t\tconfigurator.configure(canvasOptions);\n\n\t\t\t\t\t\tif (this.glRef) {\n\t\t\t\t\t\t\tthis.store.snapshot.invalidate();\n\t\t\t\t\t\t\tthis.glRef.detectChanges();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.noZoneRender(canvasElement, canvasVcr, canvasContent);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this.injector },\n\t\t\t);\n\t\t});\n\n\t\tinject(DestroyRef).onDestroy(() => {\n\t\t\tthis.glRef?.destroy();\n\t\t\tthis.configurator()?.destroy();\n\t\t});\n\t}\n\n\tprivate noZoneRender(\n\t\tcanvasElement: HTMLCanvasElement,\n\t\tcanvasVcr: ViewContainerRef,\n\t\tcanvasContent: TemplateRef<unknown>,\n\t) {\n\t\t// NOTE: destroy previous instances if existed\n\t\tthis.glRef?.destroy();\n\n\t\t// NOTE: Flag the canvas active, rendering will now begin\n\t\tthis.store.update((state) => ({ internal: { ...state.internal, active: true } }));\n\n\t\tconst [state, eventSource, eventPrefix] = [\n\t\t\tthis.store.snapshot,\n\t\t\tuntracked(this.eventSource),\n\t\t\tuntracked(this.eventPrefix),\n\t\t];\n\n\t\t// connect to event source\n\t\tstate.events.connect?.(\n\t\t\teventSource ? (is.ref(eventSource) ? eventSource.nativeElement : eventSource) : this.host.nativeElement,\n\t\t);\n\n\t\t// setup compute for eventPrefix\n\t\tif (eventPrefix) {\n\t\t\tstate.setEvents({\n\t\t\t\tcompute: (event, store) => {\n\t\t\t\t\tconst { pointer, raycaster, camera, size } = store.snapshot;\n\t\t\t\t\tconst x = event[(eventPrefix + 'X') as keyof NgtDomEvent] as number;\n\t\t\t\t\tconst y = event[(eventPrefix + 'Y') as keyof NgtDomEvent] as number;\n\t\t\t\t\tpointer.set((x / size.width) * 2 - 1, -(y / size.height) * 2 + 1);\n\t\t\t\t\traycaster.setFromCamera(pointer, camera);\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\n\t\tthis.created.emit(this.store.snapshot);\n\n\t\tif (!this.store.snapshot.events.connected) {\n\t\t\tthis.store.snapshot.events.connect?.(canvasElement);\n\t\t}\n\n\t\tthis.glRef = canvasVcr.createEmbeddedView(canvasContent, {}, { injector: this.injector });\n\t\tthis.glRef.detectChanges();\n\t}\n}\n\nexport const NgtCanvasDeclarations = [NgtCanvas, NgtCanvasContent] as const;\n","import { makeEnvironmentProviders, RendererFactory2 } from '@angular/core';\nimport { ɵDomRendererFactory2 as DomRendererFactory2 } from '@angular/platform-browser';\nimport { NgtRendererFactory2 } from 'angular-three';\n\nexport function provideNgtRenderer() {\n\treturn makeEnvironmentProviders([\n\t\t{\n\t\t\tprovide: RendererFactory2,\n\t\t\tuseFactory: (domRendererFactory: RendererFactory2) => new NgtRendererFactory2(domRendererFactory),\n\t\t\tdeps: [DomRendererFactory2],\n\t\t},\n\t]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DomRendererFactory2"],"mappings":"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"}
@@ -37,12 +37,12 @@ class NgtTestCanvas {
37
37
  destroy() {
38
38
  this.sceneRef?.destroy();
39
39
  }
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtTestCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.6", type: NgtTestCanvas, isStandalone: true, selector: "ngt-test-canvas", inputs: { sceneGraph: { classPropertyName: "sceneGraph", publicName: "sceneGraph", isSignal: true, isRequired: true, transformFunction: null }, sceneGraphInputs: { classPropertyName: "sceneGraphInputs", publicName: "sceneGraphInputs", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "anchorRef", first: true, predicate: ["anchor"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtTestCanvas, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.1.4", type: NgtTestCanvas, isStandalone: true, selector: "ngt-test-canvas", inputs: { sceneGraph: { classPropertyName: "sceneGraph", publicName: "sceneGraph", isSignal: true, isRequired: true, transformFunction: null }, sceneGraphInputs: { classPropertyName: "sceneGraphInputs", publicName: "sceneGraphInputs", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "anchorRef", first: true, predicate: ["anchor"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
42
42
  <ng-container #anchor />
43
43
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
44
44
  }
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtTestCanvas, decorators: [{
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtTestCanvas, decorators: [{
46
46
  type: Component,
47
47
  args: [{
48
48
  selector: 'ngt-test-canvas',
@@ -114,10 +114,10 @@ class NgtCommonDirective {
114
114
  this.view = this.vcr.createEmbeddedView(this.template);
115
115
  this.view.detectChanges();
116
116
  }
117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtCommonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
118
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.6", type: NgtCommonDirective, isStandalone: true, ngImport: i0 }); }
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtCommonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
118
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.4", type: NgtCommonDirective, isStandalone: true, ngImport: i0 }); }
119
119
  }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtCommonDirective, decorators: [{
120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtCommonDirective, decorators: [{
121
121
  type: Directive
122
122
  }], ctorParameters: () => [] });
123
123
 
@@ -141,10 +141,10 @@ class NgtArgs extends NgtCommonDirective {
141
141
  validate() {
142
142
  return !this.injected && !!this.injectedValue?.length;
143
143
  }
144
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtArgs, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
145
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtArgs, isStandalone: true, selector: "ng-template[args]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
144
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtArgs, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
145
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtArgs, isStandalone: true, selector: "ng-template[args]", inputs: { args: { classPropertyName: "args", publicName: "args", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
146
146
  }
147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtArgs, decorators: [{
147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtArgs, decorators: [{
148
148
  type: Directive,
149
149
  args: [{ selector: 'ng-template[args]' }]
150
150
  }], ctorParameters: () => [] });
@@ -652,10 +652,10 @@ class NgtParent extends NgtCommonDirective {
652
652
  commentNode[NGT_INTERNAL_SET_PARENT_COMMENT_FLAG](this.injectedValue);
653
653
  }
654
654
  }
655
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtParent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
656
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtParent, isStandalone: true, selector: "ng-template[parent]", inputs: { parent: { classPropertyName: "parent", publicName: "parent", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
655
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtParent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
656
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtParent, isStandalone: true, selector: "ng-template[parent]", inputs: { parent: { classPropertyName: "parent", publicName: "parent", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0 }); }
657
657
  }
658
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtParent, decorators: [{
658
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtParent, decorators: [{
659
659
  type: Directive,
660
660
  args: [{ selector: 'ng-template[parent]' }]
661
661
  }], ctorParameters: () => [] });
@@ -826,10 +826,10 @@ class NgtSelection {
826
826
  return;
827
827
  this.source.update(...args);
828
828
  }
829
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
830
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtSelection, isStandalone: true, selector: "[ngtSelection]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelection", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
829
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtSelection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
830
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtSelection, isStandalone: true, selector: "[ngtSelection]", inputs: { enabled: { classPropertyName: "enabled", publicName: "ngtSelection", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
831
831
  }
832
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtSelection, decorators: [{
832
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtSelection, decorators: [{
833
833
  type: Directive,
834
834
  args: [{ selector: '[ngtSelection]' }]
835
835
  }] });
@@ -873,10 +873,10 @@ class NgtSelect {
873
873
  });
874
874
  });
875
875
  }
876
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
877
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.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 }); }
876
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtSelect, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
877
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", 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 }); }
878
878
  }
879
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtSelect, decorators: [{
879
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtSelect, decorators: [{
880
880
  type: Directive,
881
881
  args: [{ selector: 'ngt-group[ngtSelect], ngt-mesh[ngtSelect]' }]
882
882
  }], ctorParameters: () => [] });
@@ -913,10 +913,10 @@ class NgtHTML {
913
913
  delete host.nativeElement[NGT_DOM_PARENT_FLAG];
914
914
  });
915
915
  }
916
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtHTML, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
917
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.6", type: NgtHTML, isStandalone: true, ngImport: i0 }); }
916
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtHTML, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
917
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.4", type: NgtHTML, isStandalone: true, ngImport: i0 }); }
918
918
  }
919
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtHTML, decorators: [{
919
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtHTML, decorators: [{
920
920
  type: Directive
921
921
  }], ctorParameters: () => [] });
922
922
 
@@ -1085,10 +1085,10 @@ class NgtHexify {
1085
1085
  const hex = component.toString(16);
1086
1086
  return hex.length === 1 ? '0' + hex : hex;
1087
1087
  }
1088
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtHexify, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1089
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: NgtHexify, isStandalone: true, name: "hexify" }); }
1088
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtHexify, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1089
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.1.4", ngImport: i0, type: NgtHexify, isStandalone: true, name: "hexify" }); }
1090
1090
  }
1091
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtHexify, decorators: [{
1091
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtHexify, decorators: [{
1092
1092
  type: Pipe,
1093
1093
  args: [{ name: 'hexify', pure: true }]
1094
1094
  }] });
@@ -1211,10 +1211,10 @@ class NgtPortalAutoRender {
1211
1211
  onCleanup(() => cleanup());
1212
1212
  });
1213
1213
  }
1214
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtPortalAutoRender, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1215
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: NgtPortalAutoRender, isStandalone: true, selector: "ngt-portal[autoRender]", inputs: { renderPriority: { classPropertyName: "renderPriority", publicName: "autoRender", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
1214
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtPortalAutoRender, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1215
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtPortalAutoRender, isStandalone: true, selector: "ngt-portal[autoRender]", inputs: { renderPriority: { classPropertyName: "renderPriority", publicName: "autoRender", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
1216
1216
  }
1217
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtPortalAutoRender, decorators: [{
1217
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtPortalAutoRender, decorators: [{
1218
1218
  type: Directive,
1219
1219
  args: [{ selector: 'ngt-portal[autoRender]' }]
1220
1220
  }], ctorParameters: () => [] });
@@ -1236,10 +1236,10 @@ class NgtPortalContent {
1236
1236
  delete commentNode[NGT_INTERNAL_ADD_COMMENT_FLAG];
1237
1237
  }
1238
1238
  }
1239
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtPortalContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1240
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.6", type: NgtPortalContent, isStandalone: true, selector: "ng-template[portalContent]", ngImport: i0 }); }
1239
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtPortalContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1240
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.4", type: NgtPortalContent, isStandalone: true, selector: "ng-template[portalContent]", ngImport: i0 }); }
1241
1241
  }
1242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtPortalContent, decorators: [{
1242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtPortalContent, decorators: [{
1243
1243
  type: Directive,
1244
1244
  args: [{ selector: 'ng-template[portalContent]' }]
1245
1245
  }], ctorParameters: () => [] });
@@ -1308,8 +1308,8 @@ class NgtPortal {
1308
1308
  this.portalContentRendered.set(true);
1309
1309
  });
1310
1310
  }
1311
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1312
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.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 } }, providers: [
1311
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtPortal, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1312
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", 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 } }, providers: [
1313
1313
  {
1314
1314
  provide: NGT_STORE,
1315
1315
  useFactory: (previousStore) => {
@@ -1336,7 +1336,7 @@ class NgtPortal {
1336
1336
  }
1337
1337
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1338
1338
  }
1339
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtPortal, decorators: [{
1339
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtPortal, decorators: [{
1340
1340
  type: Component,
1341
1341
  args: [{
1342
1342
  selector: 'ngt-portal',
@@ -1757,6 +1757,20 @@ const NGT_APPLY_PROPS = '__ngt_apply_props__';
1757
1757
  // https://github.com/mrdoob/three.js/pull/27042
1758
1758
  // https://github.com/mrdoob/three.js/pull/22748
1759
1759
  const colorMaps = ['map', 'emissiveMap', 'sheenColorMap', 'specularColorMap', 'envMap'];
1760
+ const MEMOIZED_PROTOTYPES = new Map();
1761
+ function getMemoizedPrototype(root) {
1762
+ let ctor = MEMOIZED_PROTOTYPES.get(root.constructor);
1763
+ try {
1764
+ if (!ctor) {
1765
+ ctor = new root.constructor();
1766
+ MEMOIZED_PROTOTYPES.set(root.constructor, ctor);
1767
+ }
1768
+ }
1769
+ catch (e) {
1770
+ // ...
1771
+ }
1772
+ return ctor;
1773
+ }
1760
1774
  // This function applies a set of changes to the instance
1761
1775
  function applyProps(instance, props) {
1762
1776
  // if props is empty
@@ -1792,7 +1806,22 @@ function applyProps(instance, props) {
1792
1806
  if (targetProp?.copy &&
1793
1807
  value?.constructor &&
1794
1808
  targetProp.constructor === value.constructor) {
1795
- targetProp.copy(value);
1809
+ // If both are geometries, we should assign the value directly instead of copying
1810
+ if (is.three(targetProp, 'isBufferGeometry') &&
1811
+ is.three(value, 'isBufferGeometry')) {
1812
+ Object.assign(currentInstance, { [key]: value });
1813
+ }
1814
+ else {
1815
+ // fetch the default state of the target
1816
+ const ctor = getMemoizedPrototype(currentInstance);
1817
+ // The target key was originally null or undefined, which indicates that the object which
1818
+ // is now present was externally set by the user, we should therefore assign the value directly
1819
+ if (ctor !== undefined && ctor[key] == null)
1820
+ Object.assign(currentInstance, { [key]: value });
1821
+ // Otherwise copy is correct
1822
+ else
1823
+ targetProp.copy(value);
1824
+ }
1796
1825
  }
1797
1826
  // Layers have no copy function, we must therefore copy the mask property
1798
1827
  else if (targetProp instanceof THREE.Layers && value instanceof THREE.Layers) {
@@ -2172,10 +2201,10 @@ class NgtRendererFactory2 {
2172
2201
  this.rendererMap.set(type.id, (renderer = new NgtRenderer2(delegateRenderer, this.catalogue, this.document)));
2173
2202
  return renderer;
2174
2203
  }
2175
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtRendererFactory2, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
2176
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtRendererFactory2 }); }
2204
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtRendererFactory2, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
2205
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtRendererFactory2 }); }
2177
2206
  }
2178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtRendererFactory2, decorators: [{
2207
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtRendererFactory2, decorators: [{
2179
2208
  type: Injectable
2180
2209
  }], ctorParameters: () => [{ type: i0.RendererFactory2 }] });
2181
2210
  class NgtRenderer2 {
@@ -2243,7 +2272,6 @@ class NgtRenderer2 {
2243
2272
  }
2244
2273
  const threeName = kebabToPascal(name.startsWith('ngt-') ? name.slice(4) : name);
2245
2274
  const threeTarget = this.catalogue[threeName];
2246
- //
2247
2275
  if (threeTarget) {
2248
2276
  const threeInstance = prepare(new threeTarget(...injectedArgs), name);
2249
2277
  const rendererNode = createRendererNode('three', threeInstance, this.document);
@@ -2251,7 +2279,7 @@ class NgtRenderer2 {
2251
2279
  const instanceState = getInstanceState(threeInstance);
2252
2280
  // auto-attach for geometry and material
2253
2281
  if (is.three(threeInstance, 'isBufferGeometry')) {
2254
- Object.assign(instanceState, { attach: ['geometry'] });
2282
+ instanceState.attach = ['geometry'];
2255
2283
  }
2256
2284
  else if (is.three(threeInstance, 'isMaterial')) {
2257
2285
  instanceState.attach = ['material'];
@@ -2945,12 +2973,12 @@ class NgtRoutedScene {
2945
2973
  onCleanup(() => sub.unsubscribe());
2946
2974
  });
2947
2975
  }
2948
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtRoutedScene, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2949
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.6", type: NgtRoutedScene, isStandalone: true, selector: "ngt-routed-scene", ngImport: i0, template: `
2976
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtRoutedScene, deps: [{ token: i1.Router }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2977
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.4", type: NgtRoutedScene, isStandalone: true, selector: "ngt-routed-scene", ngImport: i0, template: `
2950
2978
  <router-outlet />
2951
2979
  `, isInline: true, dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
2952
2980
  }
2953
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtRoutedScene, decorators: [{
2981
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtRoutedScene, decorators: [{
2954
2982
  type: Component,
2955
2983
  args: [{
2956
2984
  selector: 'ngt-routed-scene',
@@ -3069,10 +3097,10 @@ class NgtObjectEvents {
3069
3097
  emitEvent(eventName) {
3070
3098
  return this[eventName].emit.bind(this[eventName]);
3071
3099
  }
3072
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtObjectEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3073
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", 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 }); }
3100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtObjectEvents, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3101
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", 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 }); }
3074
3102
  }
3075
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: NgtObjectEvents, decorators: [{
3103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtObjectEvents, decorators: [{
3076
3104
  type: Directive,
3077
3105
  args: [{ selector: '[ngtObjectEvents]' }]
3078
3106
  }], ctorParameters: () => [] });
@@ -3082,7 +3110,7 @@ function injectObjectEvents(target, events, { injector } = {}) {
3082
3110
  const cleanUps = [];
3083
3111
  effect((onCleanup) => {
3084
3112
  const targetRef = resolveRef(target());
3085
- if (!targetRef)
3113
+ if (!targetRef || !is.instance(targetRef))
3086
3114
  return;
3087
3115
  Object.entries(events).forEach(([eventName, eventHandler]) => {
3088
3116
  cleanUps.push(renderer.listen(targetRef, eventName, eventHandler));