{"version":3,"file":"angular-three-core.mjs","sources":["../../../../libs/core/src/lib/ref.ts","../../../../libs/core/src/lib/utils/is.ts","../../../../libs/core/src/lib/utils/inject.ts","../../../../libs/core/src/lib/di/instance.ts","../../../../libs/core/src/lib/stores/component-store.ts","../../../../libs/core/src/lib/di/performance.ts","../../../../libs/core/src/lib/di/window.ts","../../../../libs/core/src/lib/di/resize.ts","../../../../libs/core/src/lib/services/resize.ts","../../../../libs/core/src/lib/utils/check-needs-update.ts","../../../../libs/core/src/lib/utils/instance.ts","../../../../libs/core/src/lib/utils/apply-props.ts","../../../../libs/core/src/lib/utils/camera.ts","../../../../libs/core/src/lib/utils/make.ts","../../../../libs/core/src/lib/utils/events.ts","../../../../libs/core/src/lib/stores/store.ts","../../../../libs/core/src/lib/utils/coercion.ts","../../../../libs/core/src/lib/utils/mutate.ts","../../../../libs/core/src/lib/abstracts/instance.ts","../../../../libs/core/src/lib/di/object.ts","../../../../libs/core/src/lib/abstracts/object.ts","../../../../libs/core/src/lib/abstracts/material-geometry.ts","../../../../libs/core/src/lib/utils/build-graph.ts","../../../../libs/core/src/lib/services/loader.ts","../../../../libs/core/src/lib/utils/loop.ts","../../../../libs/core/src/lib/canvas.ts","../../../../libs/core/src/lib/di/attribute.ts","../../../../libs/core/src/lib/di/audio.ts","../../../../libs/core/src/lib/di/camera.ts","../../../../libs/core/src/lib/di/curve.ts","../../../../libs/core/src/lib/di/geometry.ts","../../../../libs/core/src/lib/di/helper.ts","../../../../libs/core/src/lib/di/is-webgl-available.ts","../../../../libs/core/src/lib/di/light.ts","../../../../libs/core/src/lib/di/line.ts","../../../../libs/core/src/lib/di/material.ts","../../../../libs/core/src/lib/di/mesh.ts","../../../../libs/core/src/lib/di/skinned-mesh.ts","../../../../libs/core/src/lib/di/sprite.ts","../../../../libs/core/src/lib/di/texture.ts","../../../../libs/core/src/lib/directives/cursor.ts","../../../../libs/core/src/lib/utils/pass-through.ts","../../../../libs/core/src/lib/directives/object-pass-through.ts","../../../../libs/core/src/lib/directives/repeat.ts","../../../../libs/core/src/lib/pipes/math.ts","../../../../libs/core/src/lib/pipes/pi.ts","../../../../libs/core/src/lib/pipes/radian.ts","../../../../libs/core/src/lib/pipes/side.ts","../../../../libs/core/src/lib/portal.ts","../../../../libs/core/src/lib/three/attribute.ts","../../../../libs/core/src/lib/three/audio.ts","../../../../libs/core/src/lib/three/camera.ts","../../../../libs/core/src/lib/three/curve.ts","../../../../libs/core/src/lib/three/geometry.ts","../../../../libs/core/src/lib/three/helper.ts","../../../../libs/core/src/lib/three/light.ts","../../../../libs/core/src/lib/three/line.ts","../../../../libs/core/src/lib/three/material.ts","../../../../libs/core/src/lib/three/mesh.ts","../../../../libs/core/src/lib/three/object-helper.ts","../../../../libs/core/src/lib/three/sprite.ts","../../../../libs/core/src/lib/three/texture.ts","../../../../libs/core/src/lib/utils/shader-material.ts","../../../../libs/core/src/index.ts","../../../../libs/core/src/angular-three-core.ts"],"sourcesContent":["import { BehaviorSubject } from 'rxjs';\n\nexport class Ref<TValue = any> extends BehaviorSubject<TValue> {\n  constructor(value?: TValue | null) {\n    super((value ? value : null) as TValue);\n  }\n\n  set(value: ((prev: TValue) => TValue) | TValue) {\n    if (typeof value === 'function') {\n      this.next((value as (prev: TValue) => TValue)(this.value));\n    } else {\n      this.next(value);\n    }\n  }\n}\n","import { EventEmitter } from '@angular/core';\nimport * as THREE from 'three';\nimport { Ref } from '../ref';\nimport type { EquConfig, NgtUnknownInstance, UnknownRecord } from '../types';\n\nexport const is = {\n  obj: (a: unknown): a is object => a === Object(a) && !is.arr(a) && typeof a !== 'function',\n  material: (a: unknown): a is THREE.Material => !!a && (a as THREE.Material)['isMaterial'],\n  geometry: (a: unknown): a is THREE.BufferGeometry => !!a && (a as THREE.BufferGeometry)['isBufferGeometry'],\n  mesh: (a: unknown): a is THREE.Mesh => !!a && (a as THREE.Mesh).isMesh,\n  orthographic: (a: unknown): a is THREE.OrthographicCamera =>\n    !!a && (a as THREE.OrthographicCamera).isOrthographicCamera,\n  perspective: (a: unknown): a is THREE.PerspectiveCamera => !!a && (a as THREE.PerspectiveCamera).isPerspectiveCamera,\n  camera: (a: unknown): a is THREE.Camera => !!a && (a as THREE.Camera).isCamera,\n  glRenderer: (a: unknown): a is THREE.WebGLRenderer => !!a && a instanceof THREE.WebGLRenderer,\n  scene: (a: unknown): a is THREE.Scene => !!a && (a as THREE.Scene).isScene,\n  object3d: (a: unknown): a is THREE.Object3D => !!a && (a as THREE.Object3D).isObject3D,\n  instance: (a: unknown): a is NgtUnknownInstance => !!a && !!(a as UnknownRecord)['__ngt__'],\n  ref: (a: unknown): a is Ref => !!a && a instanceof Ref,\n  vector3: (a: unknown): a is THREE.Vector3 => !!a && (a as THREE.Vector3).isVector3,\n  color: (a: unknown): a is THREE.Color => !!a && (a as THREE.Color).isColor,\n  supportColorManagement: (): boolean => 'ColorManagement' in THREE,\n  fun: (a: unknown): a is Function => typeof a === 'function',\n  str: (a: unknown): a is string => typeof a === 'string',\n  num: (a: unknown): a is number => typeof a === 'number',\n  boo: (a: unknown): a is boolean => typeof a === 'boolean',\n  und: (a: unknown) => a === void 0,\n  eventEmitter: (a: unknown): a is EventEmitter<any> => a instanceof EventEmitter,\n  arr: (a: unknown): a is Array<any> => Array.isArray(a),\n  equ(a: any, b: any, { arrays = 'shallow', objects = 'reference', strict = true }: EquConfig = {}) {\n    // Wrong type or one of the two undefined, doesn't match\n    if (typeof a !== typeof b || !!a !== !!b) return false;\n    // Atomic, just compare a against b\n    if (is.str(a) || is.num(a)) return a === b;\n    const isObj = is.obj(a);\n    if (isObj && objects === 'reference') return a === b;\n    const isArr = is.arr(a);\n    if (isArr && arrays === 'reference') return a === b;\n    // Array or Object, shallow compare first to see if it's a match\n    if ((isArr || isObj) && a === b) return true;\n    // Last resort, go through keys\n    let i;\n    for (i in a) if (!(i in b)) return false;\n    for (i in strict ? b : a) if (a[i] !== b[i]) return false;\n    if (is.und(i)) {\n      if (isArr && a.length === 0 && b.length === 0) return true;\n      if (isObj && Object.keys(a).length === 0 && Object.keys(b).length === 0) return true;\n      if (a !== b) return false;\n    }\n    return true;\n  },\n};\n","import { inject, InjectionToken, InjectOptions, Provider } from '@angular/core';\nimport { Ref } from '../ref';\nimport type { AnyCtor, AnyFunction } from '../types';\nimport { is } from './is';\n\nexport function createNgtProvider(base: AnyCtor, ...providers: AnyFunction[]) {\n  return (sub: AnyCtor) => {\n    return [\n      ...(providers || []).map((providerFn) => providerFn(sub)),\n      {\n        provide: base,\n        useExisting: sub,\n      },\n    ];\n  };\n}\n\nexport function createInjection<\n  TTokenValue,\n  TProvideValue = TTokenValue extends object ? Partial<TTokenValue> : TTokenValue\n>(\n  description: string,\n  {\n    defaultValueOrFactory,\n    provideValueFactory,\n  }: {\n    defaultValueOrFactory?: TTokenValue | (() => TTokenValue);\n    provideValueFactory?: (value: TProvideValue) => TTokenValue;\n  } = {}\n): [\n  injectFn: (options?: InjectOptions) => TTokenValue,\n  provideFn: (value: TProvideValue) => Provider,\n  token: InjectionToken<TTokenValue>\n] {\n  const factory = (\n    defaultValueOrFactory && typeof defaultValueOrFactory === 'function'\n      ? defaultValueOrFactory\n      : () => defaultValueOrFactory\n  ) as () => TTokenValue;\n  const injectionToken = new InjectionToken(description, { factory });\n\n  function injectFn(options: InjectOptions = {}) {\n    return inject(injectionToken, options) as TTokenValue;\n  }\n\n  function provideFn(value: TProvideValue): Provider {\n    return {\n      provide: injectionToken,\n      useValue: provideValueFactory ? provideValueFactory(value) : value,\n    };\n  }\n\n  return [injectFn, provideFn, injectionToken];\n}\n\nexport function createRefInjection<\n  TInstanceType extends object = any,\n  TCtor extends AnyCtor<TInstanceType> = AnyCtor<TInstanceType>\n>(\n  description: string,\n  hostOrProviderFactory?: AnyFunction<Provider> | true,\n  ...providersFactory: AnyFunction<Provider>[]\n): [\n  injectFn: (options?: InjectOptions) => AnyFunction<Ref<TInstanceType>>,\n  providedFn: <TProvideCtor extends TCtor = TCtor>(\n    sub: TProvideCtor,\n    factory?: (instance: InstanceType<TProvideCtor>) => Ref\n  ) => Provider,\n  token: InjectionToken<AnyFunction<Ref<TInstanceType>>>\n] {\n  if (is.fun(hostOrProviderFactory)) {\n    providersFactory = [hostOrProviderFactory, ...providersFactory];\n  }\n\n  const injectionToken = new InjectionToken(description);\n\n  function injectFn(options: InjectOptions = {}) {\n    return inject(injectionToken, options) as AnyFunction<Ref>;\n  }\n\n  function providedFn<TProvideCtor extends TCtor = TCtor>(\n    sub: TProvideCtor,\n    factory?: (instance: InstanceType<TProvideCtor>) => Ref\n  ) {\n    return [\n      ...(providersFactory || []).map((providerFn) => providerFn(sub, factory)),\n      {\n        provide: injectionToken,\n        useFactory: (instance: InstanceType<TProvideCtor>) => {\n          if (factory) {\n            return () => factory(instance);\n          }\n\n          if (is.boo(hostOrProviderFactory)) {\n            return (instance as any)['parentRef'];\n          }\n\n          return () => (instance as any)['instance'];\n        },\n        deps: [sub],\n      },\n    ];\n  }\n\n  return [injectFn, providedFn, injectionToken];\n}\n","import { createRefInjection } from '../utils/inject';\n\nexport const [injectInstanceRef, provideInstanceRef, NGT_INSTANCE_REF] = createRefInjection('NgtInstance ref');\nexport const [injectInstanceHostRef, provideInstanceHostRef, NGT_INSTANCE_HOST_REF] =\n  createRefInjection('NgtInstance host ref');\n","import { Directive, OnDestroy } from '@angular/core';\nimport type { MonoTypeOperatorFunction } from 'rxjs';\nimport {\n  combineLatest,\n  concatMap,\n  distinctUntilChanged,\n  filter,\n  isObservable,\n  map,\n  noop,\n  Observable,\n  of,\n  OperatorFunction,\n  queueScheduler,\n  ReplaySubject,\n  scheduled,\n  share,\n  startWith,\n  Subject,\n  Subscription,\n  take,\n  takeUntil,\n  tap,\n  withLatestFrom,\n} from 'rxjs';\n\nexport type SelectorResults<TSelectors extends Observable<unknown>[]> = {\n  [Key in keyof TSelectors]: TSelectors[Key] extends Observable<infer TResult> ? TResult : never;\n};\n\nexport type Projector<Selectors extends Observable<unknown>[], TResult> = (\n  ...args: SelectorResults<Selectors>\n) => TResult;\n\n/**\n * Implementation from ngrx/component-store with slight modification\n */\n@Directive()\nexport abstract class NgtComponentStore<TState extends object = any> implements OnDestroy {\n  // Should be used only in ngOnDestroy.\n  private readonly destroySubject$ = new ReplaySubject<void>(1);\n  // Exposed to any extending Store to be used for the teardown.\n  readonly destroy$ = this.destroySubject$.asObservable();\n\n  private readonly stateSubject$ = new ReplaySubject<TState>(1);\n\n  /** Completes all relevant Observable streams. */\n  ngOnDestroy() {\n    this.stateSubject$.complete();\n    this.destroySubject$.next();\n  }\n\n  get(): TState;\n  get<TResult>(projector: (s: TState) => TResult): TResult;\n  get<TResult>(projector?: (s: TState) => TResult): TResult | TState {\n    let value: TResult | TState;\n\n    this.stateSubject$\n      .pipe(\n        take(1),\n        skipUndefined(),\n        map((state) => (projector ? projector(state) : state)),\n        skipUndefined()\n      )\n      .subscribe((result) => {\n        value = result;\n      });\n\n    return value!;\n  }\n\n  /**\n   * Patches the state with provided partial state.\n   *\n   * @param partialStateOrUpdaterFn a partial state or a partial updater\n   * function that accepts the state and returns the partial state.\n   */\n  set(\n    partialStateOrUpdaterFn:\n      | Partial<TState>\n      | Observable<Partial<TState>>\n      | ((state: TState) => Partial<TState> | Observable<Partial<TState>>)\n  ): void {\n    const patchedState =\n      typeof partialStateOrUpdaterFn === 'function' ? partialStateOrUpdaterFn(this.get()) : partialStateOrUpdaterFn;\n\n    this.updateState((state, partialState: Partial<TState>) => ({\n      ...state,\n      ...partialState,\n    }))(patchedState);\n  }\n\n  /**\n   * Creates a selector.\n   *\n   * @param projector A pure projection function that takes the current state and\n   *   returns some new slice/projection of that state.\n   * @return An observable of the projector results.\n   */\n  select(): Observable<TState>;\n  select<TResult>(projector: (s: TState) => TResult): Observable<TResult>;\n  select<TSelectors extends Observable<unknown>[], TResult>(\n    ...args: [...selectors: TSelectors, projector: Projector<TSelectors, TResult>]\n  ): Observable<TResult>;\n  select<TSelectors extends Observable<unknown>[]>(...args: [...selectors: TSelectors]): Observable<{}>;\n  select<\n    TSelectors extends Array<Observable<unknown> | TProjectorFn>,\n    TResult,\n    TProjectorFn = (...a: unknown[]) => TResult\n  >(...args: TSelectors): Observable<TResult> | Observable<TState> {\n    if (args.length === 0) {\n      return this.stateSubject$.pipe(\n        skipUndefined(),\n        distinctUntilChanged(),\n        share({\n          connector: () => new ReplaySubject(1),\n          resetOnComplete: true,\n          resetOnRefCountZero: true,\n          resetOnError: true,\n        }),\n        takeUntil(this.destroy$)\n      );\n    }\n\n    // if last item is an observable, then the project is missing\n    if (isObservable(args[args.length - 1])) {\n      const defaultProjector = (() => ({})) as unknown as TProjectorFn;\n      args.push(defaultProjector);\n    }\n\n    const { observables, projector } = processSelectorArgs<TSelectors, TResult, TProjectorFn>(args);\n\n    let observable$: Observable<TResult>;\n    // If there are no Observables to combine, then we'll just map the value.\n    if (observables.length === 0) {\n      observable$ = this.stateSubject$.pipe(\n        skipUndefined(),\n        map(projector as unknown as (value: TState, index: number) => TResult)\n      );\n    } else {\n      // If there are multiple arguments, then we're aggregating selectors, so we need\n      // to take the combineLatest of them before calling the map function.\n      observable$ = combineLatest(observables).pipe(\n        map((projectorArgs) => (projector as unknown as (...a: unknown[]) => TResult)(...projectorArgs))\n      );\n    }\n\n    return observable$.pipe(\n      skipUndefined(),\n      distinctUntilChanged(),\n      share({\n        connector: () => new ReplaySubject(1),\n        resetOnComplete: true,\n        resetOnRefCountZero: true,\n        resetOnError: true,\n      }),\n      takeUntil(this.destroy$)\n    );\n  }\n\n  /**\n   * Creates an effect.\n   *\n   * This effect is subscribed to throughout the lifecycle of the ComponentStore.\n   * @param generator A function that takes an origin Observable input and\n   *     returns an Observable. The Observable that is returned will be\n   *     subscribed to for the life of the component.\n   * @return A function that, when called, will trigger the origin Observable.\n   */\n  effect<\n    // This type quickly became part of effect 'API'\n    TProvidedType = void,\n    // The actual origin$ type, which could be unknown, when not specified\n    TOriginType extends Observable<TProvidedType> | unknown = Observable<TProvidedType>,\n    // Unwrapped actual type of the origin$ Observable, after default was applied\n    TObservableType = TOriginType extends Observable<infer A> ? A : never,\n    // Return either an empty callback or a function requiring specific types as inputs\n    TReturnType = TProvidedType | TObservableType extends void\n      ? () => void\n      : (observableOrValue: TObservableType | Observable<TObservableType>) => Subscription\n  >(generator: (origin$: TOriginType) => Observable<unknown>): TReturnType {\n    const origin$ = new Subject<TObservableType>();\n    generator(origin$ as TOriginType)\n      // tied to the lifecycle 👇 of ComponentStore\n      .pipe(takeUntil(this.destroy$))\n      .subscribe();\n\n    return ((observableOrValue?: TObservableType | Observable<TObservableType>): Subscription => {\n      const observable$ = isObservable(observableOrValue) ? observableOrValue : of(observableOrValue);\n      return observable$.pipe(takeUntil(this.destroy$)).subscribe((value) => {\n        // any new 👇 value is pushed into a stream\n        origin$.next(value as TObservableType);\n      });\n    }) as unknown as TReturnType;\n  }\n\n  private updateState<\n    // Allow to force-provide the type\n    TProvidedType = void,\n    // This type is derived from the `value` property, defaulting to void if it's missing\n    TOriginType = TProvidedType,\n    // The Value type is assigned from the Origin\n    TValueType = TOriginType,\n    // Return either an empty callback or a function requiring specific types as inputs\n    TReturnType = TOriginType extends void\n      ? () => void\n      : (observableOrValue: TValueType | Observable<TValueType>) => Subscription\n  >(updaterFn: (state: TState, value: TOriginType) => TState): TReturnType {\n    return ((observableOrValue?: TOriginType | Observable<TOriginType>): Subscription => {\n      const observable$ = isObservable(observableOrValue) ? observableOrValue : of(observableOrValue);\n\n      return observable$\n        .pipe(\n          concatMap((value) =>\n            scheduled([value], queueScheduler).pipe(withLatestFrom(this.stateSubject$.pipe(startWith({}))))\n          ),\n          takeUntil(this.destroy$)\n        )\n        .subscribe({\n          next: ([value, currentState]) => {\n            this.stateSubject$.next(updaterFn((currentState || {}) as TState, value!));\n          },\n          error: (error: Error) => {\n            this.stateSubject$.error(error);\n          },\n        });\n    }) as unknown as TReturnType;\n  }\n}\n\n/**\n * An extended `tap` operator that accepts an `effectFn` which:\n * - runs on every `next` notification from `source$`\n * - can optionally return a `cleanUp` function that\n * invokes from the 2nd `next` notification onward and on `unsubscribe` (destroyed)\n *\n *\n * @example\n * ```typescript\n * source$.pipe(\n *  tapEffect((sourceValue) = {\n *    const cb = () => {\n *      doStuff(sourceValue);\n *    };\n *    addListener('event', cb);\n *\n *    return () => {\n *      removeListener('event', cb);\n *    }\n *  })\n * )\n * ```\n */\nexport function tapEffect<TValue>(\n  effectFn: (\n    value: TValue\n  ) => ((cleanUpParams: { prev: TValue | undefined; complete: boolean; error: boolean }) => void) | void | undefined\n): MonoTypeOperatorFunction<TValue> {\n  let cleanupFn: (cleanUpParams: { prev: TValue | undefined; complete: boolean; error: boolean }) => void = noop;\n  let firstRun = false;\n  let prev: TValue | undefined = undefined;\n\n  const teardown = (error: boolean) => {\n    return () => {\n      if (cleanupFn) {\n        cleanupFn({ prev, complete: true, error });\n      }\n    };\n  };\n\n  return tap<TValue>({\n    next: (value: TValue) => {\n      if (cleanupFn && firstRun) {\n        cleanupFn({ prev, complete: false, error: false });\n      }\n\n      const cleanUpOrVoid = effectFn(value);\n      if (cleanUpOrVoid) {\n        cleanupFn = cleanUpOrVoid;\n      }\n\n      prev = value;\n\n      if (!firstRun) {\n        firstRun = true;\n      }\n    },\n    complete: teardown(false),\n    unsubscribe: teardown(false),\n    error: teardown(true),\n  });\n}\n\nexport function skipUndefined<TValue>(): MonoTypeOperatorFunction<TValue> {\n  return filter<TValue>((value) => value !== undefined);\n}\n\nexport function startWithUndefined<TValue>(): OperatorFunction<TValue, TValue> {\n  return startWith<TValue>(undefined) as OperatorFunction<TValue, TValue>;\n}\n\nfunction processSelectorArgs<\n  TSelectors extends Array<Observable<unknown> | TProjectorFn>,\n  TResult,\n  TProjectorFn = (...a: unknown[]) => TResult\n>(\n  args: TSelectors\n): {\n  observables: Observable<unknown>[];\n  projector: TProjectorFn;\n} {\n  const selectorArgs = Array.from(args);\n  // Last argument is either projector or config\n  const projector = selectorArgs.pop() as TProjectorFn;\n\n  // The Observables to combine, if there are any.\n  const observables = selectorArgs as Observable<unknown>[];\n  return {\n    observables,\n    projector,\n  };\n}\n","import type { NgtPerformanceOptions } from '../types';\nimport { createInjection } from '../utils/inject';\n\nconst defaultPerformance = {\n  current: 1,\n  min: 0.5,\n  max: 1,\n  debounce: 200,\n};\n\nexport const [injectPerformanceOptions, providePerformanceOptions, NGT_PERFORMANCE_OPTIONS] =\n  createInjection<NgtPerformanceOptions>('NgtPerformance options', {\n    defaultValueOrFactory: defaultPerformance,\n    provideValueFactory: (value) => ({ ...defaultPerformance, ...value }),\n  });\n","import { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\nimport { createInjection } from '../utils/inject';\n\nexport const [injectWindow, , NGT_WINDOW] = createInjection<Window & typeof globalThis>('window', {\n  defaultValueOrFactory: () => {\n    const { defaultView } = inject(DOCUMENT);\n\n    if (!defaultView) {\n      throw `window is not available!`;\n    }\n\n    return defaultView;\n  },\n});\n","import { createInjection } from '../utils/inject';\nimport { injectWindow } from './window';\n\nexport interface NgtResizeOptions {\n  box: ResizeObserverBoxOptions;\n  debounce: number | { scroll: number; resize: number };\n  scroll: boolean;\n  offsetSize: boolean;\n}\n\nexport const defaultResizeOptions: NgtResizeOptions = {\n  box: 'content-box',\n  scroll: false,\n  offsetSize: false,\n  debounce: { scroll: 50, resize: 0 },\n};\n\nexport const [injectResizeOptions, provideResizeOptions, NGT_RESIZE_OPTIONS] = createInjection<NgtResizeOptions>(\n  'ngtResize Options',\n  {\n    defaultValueOrFactory: defaultResizeOptions,\n    provideValueFactory: (value) => ({ ...defaultResizeOptions, ...value }),\n  }\n);\n\nexport const [injectResizeObserverSupport] = createInjection<boolean>('Resize Observer API support', {\n  defaultValueOrFactory: () => {\n    const window = injectWindow();\n    return 'ResizeObserver' in window && (window as unknown as Record<string, unknown>)['ResizeObserver'] != null;\n  },\n});\n","import { ElementRef, inject, Injectable, NgZone } from '@angular/core';\nimport {\n  debounceTime,\n  fromEvent,\n  MonoTypeOperatorFunction,\n  Observable,\n  pipe,\n  ReplaySubject,\n  share,\n  Subject,\n  takeUntil,\n} from 'rxjs';\nimport { injectResizeObserverSupport, injectResizeOptions } from '../di/resize';\nimport { injectWindow } from '../di/window';\n\nexport interface NgtResizeResult {\n  readonly entries: ReadonlyArray<ResizeObserverEntry>;\n  readonly x: number;\n  readonly y: number;\n  readonly width: number;\n  readonly height: number;\n  readonly top: number;\n  readonly right: number;\n  readonly bottom: number;\n  readonly left: number;\n  readonly dpr: number;\n}\n\n@Injectable()\nexport class NgtResize extends Observable<NgtResizeResult> {\n  constructor() {\n    const { nativeElement } = inject(ElementRef) as ElementRef<Element>;\n    const zone = inject(NgZone);\n    const window = injectWindow();\n    const isSupport = injectResizeObserverSupport();\n    const { box, offsetSize, scroll, debounce } = injectResizeOptions();\n\n    let observer: ResizeObserver;\n    let lastBounds: Omit<NgtResizeResult, 'entries' | 'dpr'>;\n    let lastEntries: ResizeObserverEntry[] = [];\n\n    const torndown$ = new Subject<void>();\n    const scrollContainers: HTMLOrSVGElement[] | null = findScrollContainers(nativeElement as HTMLElement);\n\n    // set actual debounce values early, so effects know if they should react accordingly\n    const scrollDebounce = debounce ? (typeof debounce === 'number' ? debounce : debounce.scroll) : null;\n\n    const resizeDebounce = debounce ? (typeof debounce === 'number' ? debounce : debounce.resize) : null;\n\n    const debounceAndDestroy = <T>(debounce: number | null): MonoTypeOperatorFunction<T> => {\n      return pipe(debounceTime(debounce ?? 0), takeUntil(torndown$));\n    };\n\n    super((subscriber) => {\n      if (!isSupport) {\n        subscriber.error('ResizeObserver is not supported in your browser. Please use a polyfill');\n        return;\n      }\n\n      zone.runOutsideAngular(() => {\n        const callback = (entries: ResizeObserverEntry[]) => {\n          lastEntries = entries;\n          const { left, top, width, height, bottom, right, x, y } =\n            nativeElement.getBoundingClientRect() as unknown as Omit<NgtResizeResult, 'entries'>;\n\n          const size = {\n            left,\n            top,\n            width,\n            height,\n            bottom,\n            right,\n            x,\n            y,\n          };\n\n          if (nativeElement instanceof HTMLElement && offsetSize) {\n            size.height = nativeElement.offsetHeight;\n            size.width = nativeElement.offsetWidth;\n          }\n\n          Object.freeze(size);\n          subscriber.next({\n            entries,\n            dpr: window.devicePixelRatio,\n            ...size,\n          });\n          if (!areBoundsEqual(lastBounds || {}, size)) {\n            lastBounds = size;\n          }\n        };\n\n        const boundEntriesCallback = () => {\n          callback(lastEntries);\n        };\n\n        observer = new ResizeObserver(callback);\n        observer.observe(nativeElement, { box });\n        if (scroll) {\n          if (scrollContainers) {\n            scrollContainers.forEach((scrollContainer) => {\n              fromEvent(scrollContainer as HTMLElement, 'scroll', {\n                capture: true,\n                passive: true,\n              })\n                .pipe(debounceAndDestroy(scrollDebounce))\n                .subscribe(boundEntriesCallback);\n            });\n          }\n\n          fromEvent(window, 'scroll', {\n            capture: true,\n            passive: true,\n          })\n            .pipe(debounceAndDestroy(scrollDebounce))\n            .subscribe(boundEntriesCallback);\n        }\n\n        fromEvent(window, 'resize').pipe(debounceAndDestroy(resizeDebounce)).subscribe(boundEntriesCallback);\n      });\n\n      return () => {\n        if (observer) {\n          observer.unobserve(nativeElement);\n          observer.disconnect();\n        }\n        torndown$.next();\n        torndown$.complete();\n      };\n    });\n\n    return this.pipe(\n      debounceTime(scrollDebounce || 0),\n      share({\n        connector: () => new ReplaySubject(1),\n        resetOnRefCountZero: true,\n        resetOnComplete: true,\n      })\n    );\n  }\n}\n\n// Returns a list of scroll offsets\nfunction findScrollContainers(element: HTMLOrSVGElement | null): HTMLOrSVGElement[] {\n  const result: HTMLOrSVGElement[] = [];\n  if (!element || element === document.body) return result;\n  const { overflow, overflowX, overflowY } = window.getComputedStyle(element as HTMLElement);\n  if ([overflow, overflowX, overflowY].some((prop) => prop === 'auto' || prop === 'scroll')) result.push(element);\n  return [...result, ...findScrollContainers((element as HTMLElement).parentElement)];\n}\n\n// Checks if element boundaries are equal\nconst keys: (keyof Omit<NgtResizeResult, 'entries' | 'dpr'>)[] = [\n  'x',\n  'y',\n  'top',\n  'bottom',\n  'left',\n  'right',\n  'width',\n  'height',\n];\nconst areBoundsEqual = (\n  a: Omit<NgtResizeResult, 'entries' | 'dpr'>,\n  b: Omit<NgtResizeResult, 'entries' | 'dpr'>\n): boolean => keys.every((key) => a[key] === b[key]);\n","import type { UnknownRecord } from '../types';\n\nexport function checkNeedsUpdate(value: unknown) {\n  if (value !== null && typeof value === 'object' && 'needsUpdate' in (value as UnknownRecord)) {\n    (value as UnknownRecord)['needsUpdate'] = true;\n\n    if ('uniformsNeedUpdate' in (value as UnknownRecord)) {\n      (value as UnknownRecord)['uniformsNeedUpdate'] = true;\n    }\n  }\n}\n","import { map, Observable, of, pairwise, startWith } from 'rxjs';\nimport { Ref } from '../ref';\nimport { NgtComponentStore, startWithUndefined } from '../stores/component-store';\nimport type { NgtInstanceInternal, NgtState, NgtUnknownInstance, UnknownRecord } from '../types';\nimport { applyProps } from './apply-props';\nimport { checkNeedsUpdate } from './check-needs-update';\nimport { is } from './is';\n\nexport function getInstanceInternal<T extends object = UnknownRecord>(\n  obj: T | undefined\n): NgtInstanceInternal | undefined {\n  if (!obj) return undefined;\n  return (obj as UnknownRecord)['__ngt__'] as NgtInstanceInternal;\n}\n\nexport function prepare<TInstance extends object = UnknownRecord>(\n  instance: TInstance,\n  root: () => NgtState,\n  parentInstance?: Ref,\n  previousInstance?: Ref,\n  isPrimitive = false\n): NgtUnknownInstance<TInstance> {\n  const previousInstanceInternal = getInstanceInternal(previousInstance?.value);\n\n  const parent = parentInstance\n    ? parentInstance\n    : previousInstanceInternal\n    ? previousInstanceInternal.parent\n    : undefined;\n\n  if (is.scene(instance)) {\n    applyProps(instance, { dispose: null });\n  }\n\n  return Object.assign(instance, {\n    __ngt__: {\n      root,\n      primitive: !isPrimitive ? previousInstanceInternal?.primitive : isPrimitive,\n      eventCount: previousInstanceInternal?.eventCount ?? 0,\n      handlers: previousInstanceInternal?.handlers ?? {},\n      objects: previousInstanceInternal?.objects ?? new Ref([] as Ref[]),\n      parent: parent ? (parent === instance ? null : parent) : null,\n    },\n  });\n}\n\nexport function optionsFieldsToOptions(\n  instance: NgtComponentStore,\n  fields: Record<string, boolean>,\n  keepPrevious = false\n): Observable<UnknownRecord> {\n  const optionEntries = Object.entries(fields);\n  if (optionEntries.length === 0) return of({});\n  return instance\n    .select(\n      ...optionEntries.map(([inputKey, shouldStartWithUndefined]) => {\n        const subInput$ = instance.select((s) => (s as UnknownRecord)[inputKey]);\n        if (shouldStartWithUndefined) return subInput$.pipe(startWithUndefined());\n        return subInput$;\n      }),\n      (...args: any[]) =>\n        args.reduce((record, arg, index) => {\n          record[optionEntries[index][0]] = arg;\n          return record;\n        }, {} as UnknownRecord)\n    )\n    .pipe(\n      startWith({}),\n      pairwise(),\n      map(([prev, curr]) =>\n        Object.entries(curr).reduce((options, [currKey, currValue]) => {\n          if (!is.equ(prev[currKey], currValue) || (keepPrevious && is.equ(prev[currKey], currValue))) {\n            options[currKey] = currValue;\n          }\n          return options;\n        }, {} as UnknownRecord)\n      )\n    );\n}\n\nexport function checkUpdate(value: unknown): void {\n  if (is.object3d(value)) {\n    value.updateMatrix();\n  } else if (is.camera(value)) {\n    if (is.perspective(value) || is.orthographic(value)) {\n      value.updateProjectionMatrix();\n    }\n    value.updateMatrixWorld();\n  }\n\n  checkNeedsUpdate(value);\n}\n","import * as THREE from 'three';\nimport type { AnyConstructor, AnyFunction, NgtInstanceInternal, NgtUnknownInstance, UnknownRecord } from '../types';\nimport { checkNeedsUpdate } from './check-needs-update';\nimport { getInstanceInternal } from './instance';\nimport { is } from './is';\n\nexport function applyProps<TInstance extends object = UnknownRecord>(instance: TInstance, props: UnknownRecord): void {\n  // props is empty\n  if (!Object.keys(props).length) return;\n\n  const instanceInternal: NgtInstanceInternal = getInstanceInternal(instance) || ({} as NgtInstanceInternal);\n  const rootState = instanceInternal.root?.() ?? {};\n\n  if ('__ngt__' in props) {\n    (instance as NgtUnknownInstance).__ngt__ = getInstanceInternal(props) as NgtInstanceInternal;\n  }\n\n  /** TODO: check if this is still needed */\n  // if (\n  //     (instance as UnknownRecord)['set'] != null &&\n  //     typeof (instance as UnknownRecord)['set'] === 'function' &&\n  //     !(instance instanceof THREE.Raycaster)\n  // ) {\n  //     try {\n  //         ((instance as UnknownRecord)['set'] as Function)(props);\n  //     } catch (e) {\n  //         console.info(\n  //             `Swallowing erroneous \"set\" invoked on ${instance.constructor.name} as non fatal: ${e}`\n  //         );\n  //     }\n  // }\n\n  for (const entry of Object.entries(props)) {\n    const key = entry[0];\n    let prop = entry[1];\n\n    // raycast is null or undefined. we'll skip\n    if (key === 'raycast' && prop == undefined) continue;\n\n    if (is.ref(prop)) {\n      prop = prop.value;\n    }\n\n    const currentInstance = instance;\n    const target = (currentInstance as UnknownRecord)[key] as UnknownRecord;\n\n    if (target && target['set'] && (target['copy'] || target instanceof THREE.Layers)) {\n      // If value is an array\n      if (is.arr(prop)) {\n        if (target['fromArray']) (target['fromArray'] as AnyFunction)(prop);\n        else (target['set'] as AnyFunction)(...prop);\n      } else if (\n        target['copy'] &&\n        prop &&\n        (prop as AnyConstructor<unknown>).constructor &&\n        target.constructor.name === (prop as AnyConstructor<unknown>).constructor.name\n      ) {\n        (target['copy'] as AnyFunction)(prop);\n      } // If nothing else fits, just set the single value, ignore undefined\n      // https://github.com/pmndrs/react-three-fiber/issues/274\n      else if (prop !== undefined) {\n        const isColor = target instanceof THREE.Color;\n        // Allow setting array scalars\n        if (!isColor && target['setScalar']) {\n          (target['setScalar'] as AnyFunction)(prop);\n        }\n        // Layers have no copy function, we must therefore copy the mask property\n        else if (target instanceof THREE.Layers && prop instanceof THREE.Layers) {\n          target.mask = prop.mask;\n        }\n        // Otherwise just set ...\n        else {\n          (target['set'] as AnyFunction)(prop);\n        }\n        // For versions of three which don't support THREE.ColorManagement,\n        // Auto-convert sRGB colors\n        // https://github.com/pmndrs/react-three-fiber/issues/344\n        if (!is.supportColorManagement() && !rootState.linear && isColor) {\n          target.convertSRGBToLinear();\n        }\n      }\n    } else {\n      (currentInstance as UnknownRecord)[key] = prop;\n      // Auto-convert sRGB textures, for now ...\n      // https://github.com/pmndrs/react-three-fiber/issues/344\n      if (!rootState.linear && (currentInstance as UnknownRecord)[key] instanceof THREE.Texture) {\n        ((currentInstance as UnknownRecord)[key] as THREE.Texture).encoding = THREE.sRGBEncoding;\n      }\n    }\n\n    checkNeedsUpdate(prop);\n    checkNeedsUpdate(target);\n  }\n}\n","import * as THREE from 'three';\nimport type { NgtCamera, NgtCameraOptions, NgtSize, NgtState } from '../types';\nimport { is } from './is';\n\nexport function updateCamera(cameraOptions: NgtCameraOptions, camera: NgtCamera & { manual?: boolean }, size: NgtSize) {\n  // leave the userland camera alone\n  if (!(is.camera(cameraOptions) || camera.manual)) {\n    if (is.orthographic(camera)) {\n      camera.left = size.width / -2;\n      camera.right = size.width / 2;\n      camera.top = size.height / 2;\n      camera.bottom = size.height / -2;\n    } else {\n      camera.aspect = size.width / size.height;\n    }\n\n    camera.updateProjectionMatrix();\n    // https://github.com/pmndrs/react-three-fiber/issues/178\n    // Update matrix world since the renderer is a frame late\n    camera.updateMatrixWorld();\n  }\n}\n\nexport function createDefaultCamera(state: NgtState) {\n  if (state.orthographic) {\n    return new THREE.OrthographicCamera(0, 0, 0, 0, 0.1, 1000);\n  }\n\n  return new THREE.PerspectiveCamera(75, state.size.width / state.size.height, 0.1, 1000);\n}\n","import * as THREE from 'three';\nimport type { AnyConstructor, NgtDpr, NgtIntersection } from '../types';\nimport { is } from './is';\n\nexport function make<TType extends AnyConstructor>(\n  type: TType,\n  input?:\n    | InstanceType<TType>\n    | Parameters<typeof type.prototype['set']>\n    | Parameters<typeof type.prototype['setScalar']>[0]\n    | ConstructorParameters<TType>\n): InstanceType<TType> {\n  if (!input) return new type();\n\n  if (input instanceof type) {\n    return input as InstanceType<TType>;\n  }\n\n  if (!is.arr(input)) {\n    input = typeof input === 'number' ? [input, input, input] : [input];\n  }\n\n  return new type(...(input as any[]));\n}\n\nexport function makeDpr(dpr: NgtDpr) {\n  return is.arr(dpr) ? Math.min(Math.max(dpr[0], window.devicePixelRatio), dpr[1]) : dpr;\n}\n\nconst idCache: { [id: string]: boolean | undefined } = {};\n\n/**\n * Generate a random Id or an Event's uuid\n *\n * @param {NgtIntersection} event\n *\n * @internal\n * @private\n */\nexport function makeId(event?: NgtIntersection): string {\n  if (event) {\n    return (event.eventObject || event.object).uuid + '/' + event.index + event.instanceId;\n  }\n\n  const newId = THREE.MathUtils.generateUUID();\n  // ensure not already used\n  if (!idCache[newId]) {\n    idCache[newId] = true;\n    return newId;\n  }\n  return makeId();\n}\n","import * as THREE from 'three';\nimport type {\n  NgtDomEvent,\n  NgtEvent,\n  NgtEventHandlers,\n  NgtInstanceInternal,\n  NgtIntersection,\n  NgtPointerCaptureTarget,\n  NgtState,\n} from '../types';\nimport { getInstanceInternal } from './instance';\nimport { makeId } from './make';\n\n/**\n * Release pointer captures.\n * This is called by releasePointerCapture in the API, and when an object is removed.\n */\nfunction releaseInternalPointerCapture(\n  capturedMap: Map<number, Map<THREE.Object3D, NgtPointerCaptureTarget>>,\n  obj: THREE.Object3D,\n  captures: Map<THREE.Object3D, NgtPointerCaptureTarget>,\n  pointerId: number\n): void {\n  const captureData: NgtPointerCaptureTarget | undefined = captures.get(obj);\n  if (captureData) {\n    captures.delete(obj);\n    // If this was the last capturing object for this pointer\n    if (captures.size === 0) {\n      capturedMap.delete(pointerId);\n      captureData.target.releasePointerCapture(pointerId);\n    }\n  }\n}\n\nexport function removeInteractivity(state: () => NgtState, object: THREE.Object3D) {\n  const internal = state().internal;\n  // Removes every trace of an object from the data store\n  internal.interaction = internal.interaction.filter((o) => o !== object);\n  internal.initialHits = internal.initialHits.filter((o) => o !== object);\n  internal.hovered.forEach((value, key) => {\n    if (value.eventObject === object || value.object === object) {\n      // Clear out intersects, they are outdated by now\n      internal.hovered.delete(key);\n    }\n  });\n  internal.capturedMap.forEach((captures, pointerId) => {\n    releaseInternalPointerCapture(internal.capturedMap, object, captures, pointerId);\n  });\n}\n\nexport function createEvents(state: () => NgtState) {\n  const temp = new THREE.Vector3();\n\n  /** Calculates delta */\n  function calculateDistance(event: NgtDomEvent) {\n    const internal = state().internal;\n    const dx = event.offsetX - internal.initialClick[0];\n    const dy = event.offsetY - internal.initialClick[1];\n    return Math.round(Math.sqrt(dx * dx + dy * dy));\n  }\n\n  /** Returns true if an instance has a valid pointer-event registered, this excludes scroll, clicks etc */\n  function filterPointerEvents(objects: THREE.Object3D[]) {\n    return objects.filter((obj) =>\n      ['move', 'over', 'enter', 'out', 'leave'].some(\n        (name) => getInstanceInternal(obj)?.handlers?.[('pointer' + name) as keyof NgtEventHandlers]\n      )\n    );\n  }\n\n  function intersect(event: NgtDomEvent, filter?: (objects: THREE.Object3D[]) => THREE.Object3D[]) {\n    const rootState = state();\n    const duplicates = new Set<string>();\n    const intersections: NgtIntersection[] = [];\n    // Allow callers to eliminate event objects\n    const eventsObjects = filter ? filter(rootState.internal.interaction) : rootState.internal.interaction;\n    // Reset all raycaster cameras to undefined\n    eventsObjects.forEach((obj) => {\n      const instanceRootState = getInstanceInternal(obj)?.root();\n      if (instanceRootState) {\n        instanceRootState.raycaster.camera = undefined!;\n      }\n    });\n\n    if (!rootState.previousState) {\n      // Make sure root-level pointer and ray are set up\n      rootState.events.compute?.(event, rootState);\n    }\n\n    // Collect events\n    let hits: THREE.Intersection<THREE.Object3D<THREE.Event>>[] = eventsObjects\n      // Intersect objects\n      // @ts-ignore\n      .flatMap((obj) => {\n        const instanceRootState = getInstanceInternal(obj)?.root();\n        // Skip event handling when noEvents is set, or when the raycasters camera is null\n        if (!instanceRootState || !instanceRootState.events.enabled || instanceRootState.raycaster.camera === null)\n          return [];\n\n        // When the camera is undefined we have to call the event layers update function\n        if (instanceRootState.raycaster.camera === undefined) {\n          instanceRootState.events.compute?.(event, instanceRootState, instanceRootState.previousState);\n          // If the camera is still undefined we have to skip this layer entirely\n          if (instanceRootState.raycaster.camera === undefined) instanceRootState.raycaster.camera = null!;\n        }\n\n        // Intersect object by object\n        return instanceRootState.raycaster.camera ? instanceRootState.raycaster.intersectObject(obj, true) : [];\n      })\n      // Sort by event priority and distance\n      .sort((a: any, b: any) => {\n        const aState = getInstanceInternal(a.object)?.root();\n        const bState = getInstanceInternal(b.object)?.root();\n        if (!aState || !bState) return 0;\n        return bState.events.priority - aState.events.priority || a.distance - b.distance;\n      })\n      // Filter out duplicates\n      .filter((item: any) => {\n        const id = makeId(item as NgtIntersection);\n        if (duplicates.has(id)) return false;\n        duplicates.add(id);\n        return true;\n      });\n\n    // https://github.com/mrdoob/three.js/issues/16031\n    // Allow custom userland intersect sort order, this likely only makes sense on the root filter\n    if (rootState.events.filter) hits = rootState.events.filter(hits, rootState);\n\n    // Bubble up the events, find the event source (eventObject)\n    for (const hit of hits) {\n      let eventObject: THREE.Object3D | null = hit.object;\n      // Bubble event up\n      while (eventObject) {\n        if (getInstanceInternal(eventObject)?.eventCount) intersections.push({ ...hit, eventObject });\n        eventObject = eventObject.parent;\n      }\n    }\n\n    // If the interaction is captured, make all capturing targets part of the intersect.\n    if ('pointerId' in event && rootState.internal.capturedMap.has(event.pointerId)) {\n      for (const captureData of rootState.internal.capturedMap.get(event.pointerId)!.values()) {\n        intersections.push(captureData.intersection);\n      }\n    }\n    return intersections;\n  }\n\n  /**  Handles intersections by forwarding them to handlers */\n  function handleIntersects(\n    intersections: NgtIntersection[],\n    event: NgtDomEvent,\n    delta: number,\n    callback: (event: NgtEvent<NgtDomEvent>) => void\n  ) {\n    const { raycaster, pointer, camera, internal } = state();\n    // If anything has been found, forward it to the event listeners\n    if (intersections.length) {\n      const unprojectedPoint = temp.set(pointer.x, pointer.y, 0).unproject(camera);\n\n      const localState = { stopped: false };\n\n      for (const hit of intersections) {\n        const hasPointerCapture = (id: number) => internal.capturedMap.get(id)?.has(hit.eventObject) ?? false;\n\n        const setPointerCapture = (id: number) => {\n          const captureData = {\n            intersection: hit,\n            target: event.target as Element,\n          };\n          if (internal.capturedMap.has(id)) {\n            // if the pointerId was previously captured, we add the hit to the\n            // event capturedMap.\n            internal.capturedMap.get(id)!.set(hit.eventObject, captureData);\n          } else {\n            // if the pointerId was not previously captured, we create a map\n            // containing the hitObject, and the hit. hitObject is used for\n            // faster access.\n            internal.capturedMap.set(id, new Map([[hit.eventObject, captureData]]));\n          }\n          // Call the original event now\n          (event.target as Element).setPointerCapture(id);\n        };\n\n        const releasePointerCapture = (id: number) => {\n          const captures = internal.capturedMap.get(id);\n          if (captures) {\n            releaseInternalPointerCapture(internal.capturedMap, hit.eventObject, captures, id);\n          }\n        };\n\n        // Add native event props\n        const extractEventProps: any = {};\n        // This iterates over the event's properties including the inherited ones. Native PointerEvents have most of their props as getters which are inherited, but polyfilled PointerEvents have them all as their own properties (i.e. not inherited). We can't use Object.keys() or Object.entries() as they only return \"own\" properties; nor Object.getPrototypeOf(event) as that *doesn't* return \"own\" properties, only inherited ones.\n        for (const prop in event) {\n          const property = event[prop as keyof NgtDomEvent];\n          // Only copy over atomics, leave functions alone as these should be\n          // called as event.nativeEvent.fn()\n          if (typeof property !== 'function') extractEventProps[prop] = property;\n        }\n\n        const raycastEvent: NgtEvent<NgtDomEvent> = {\n          ...hit,\n          ...extractEventProps,\n          pointer,\n          intersections,\n          stopped: localState.stopped,\n          delta,\n          unprojectedPoint,\n          ray: raycaster.ray,\n          camera: camera,\n          // Hijack stopPropagation, which just sets a flag\n          stopPropagation: () => {\n            // https://github.com/pmndrs/react-three-fiber/issues/596\n            // Events are not allowed to stop propagation if the pointer has been captured\n            const capturesForPointer = 'pointerId' in event && internal.capturedMap.get(event.pointerId);\n\n            // We only authorize stopPropagation...\n            if (\n              // ...if this pointer hasn't been captured\n              !capturesForPointer ||\n              // ... or if the hit object is capturing the pointer\n              capturesForPointer.has(hit.eventObject)\n            ) {\n              raycastEvent.stopped = localState.stopped = true;\n              // Propagation is stopped, remove all other hover records\n              // An event handler is only allowed to flush other handlers if it is hovered itself\n              if (\n                internal.hovered.size &&\n                Array.from(internal.hovered.values()).find((i) => i.eventObject === hit.eventObject)\n              ) {\n                // Objects cannot flush out higher up objects that have already caught the event\n                const higher = intersections.slice(0, intersections.indexOf(hit));\n                cancelPointer([...higher, hit]);\n              }\n            }\n          },\n          // there should be a distinction between target and currentTarget\n          target: {\n            hasPointerCapture,\n            setPointerCapture,\n            releasePointerCapture,\n          },\n          currentTarget: {\n            hasPointerCapture,\n            setPointerCapture,\n            releasePointerCapture,\n          },\n          nativeEvent: event,\n        };\n\n        // Call subscribers\n        callback(raycastEvent);\n        // Event bubbling may be interrupted by stopPropagation\n        if (localState.stopped === true) break;\n      }\n    }\n    return intersections;\n  }\n\n  function cancelPointer(hits: NgtIntersection[]) {\n    const internal = state().internal;\n    Array.from(internal.hovered.values()).forEach((hoveredObj) => {\n      // When no objects were hit or the the hovered object wasn't found underneath the cursor\n      // we call onPointerOut and delete the object from the hovered-elements map\n      if (\n        !hits.length ||\n        !hits.find(\n          (hit) =>\n            hit.object === hoveredObj.object &&\n            hit.index === hoveredObj.index &&\n            hit.instanceId === hoveredObj.instanceId\n        )\n      ) {\n        const eventObject = hoveredObj.eventObject;\n        const instance = getInstanceInternal(eventObject) as NgtInstanceInternal;\n        const handlers = instance?.handlers;\n        internal.hovered.delete(makeId(hoveredObj));\n        if (instance?.eventCount) {\n          // Clear out intersects, they are outdated by now\n          const data = { ...hoveredObj, intersections: hits || [] };\n          handlers.pointerout?.(data as NgtEvent<PointerEvent>);\n          handlers.pointerleave?.(data as NgtEvent<PointerEvent>);\n        }\n      }\n    });\n  }\n\n  const handlePointer = (name: string) => {\n    // Deal with cancelation\n    switch (name) {\n      case 'pointerleave':\n      case 'pointercancel':\n        return () => cancelPointer([]);\n      case 'lostpointercapture':\n        return (event: NgtDomEvent) => {\n          const internal = state().internal;\n          if ('pointerId' in event && !internal.capturedMap.has(event.pointerId)) {\n            // If the object event interface had onLostPointerCapture, we'd call it here on every\n            // object that's getting removed.\n            internal.capturedMap.delete(event.pointerId);\n            cancelPointer([]);\n          }\n        };\n    }\n\n    // Any other pointer goes here ...\n    return (event: NgtDomEvent) => {\n      const { pointerMissed, internal } = state();\n\n      //prepareRay(event)\n      internal.lastEvent = event;\n\n      // Get fresh intersects\n      const isPointerMove = name === 'pointermove';\n      const isClickEvent = name === 'click' || name === 'contextmenu' || name === 'dblclick';\n      const filter = isPointerMove ? filterPointerEvents : undefined;\n      //const hits = patchIntersects(intersect(filter), event)\n      const hits = intersect(event, filter);\n      const delta = isClickEvent ? calculateDistance(event) : 0;\n\n      // Save initial coordinates on pointer-down\n      if (name === 'pointerdown') {\n        internal.initialClick = [event.offsetX, event.offsetY];\n        internal.initialHits = hits.map((hit) => hit.eventObject);\n      }\n\n      // If a click yields no results, pass it back to the user as a miss\n      // Missed events have to come first in order to establish user-land side-effect clean up\n      if (isClickEvent && !hits.length) {\n        if (delta <= 2) {\n          objectPointerMissed(event, internal.interaction);\n          if (pointerMissed) pointerMissed(event);\n        }\n      }\n      // Take care of unhover\n      if (isPointerMove) cancelPointer(hits);\n\n      handleIntersects(hits, event, delta, (data: NgtEvent<NgtDomEvent>) => {\n        const eventObject = data.eventObject;\n        const instance = getInstanceInternal(eventObject) as NgtInstanceInternal;\n        const handlers = instance?.handlers;\n        // Check presence of handlers\n        if (!instance?.eventCount) return;\n\n        if (isPointerMove) {\n          // Move event ...\n          if (handlers.pointerover || handlers.pointerenter || handlers.pointerout || handlers.pointerleave) {\n            // When enter or out is present take care of hover-state\n            const id = makeId(data);\n            const hoveredItem = internal.hovered.get(id);\n            if (!hoveredItem) {\n              // If the object wasn't previously hovered, book it and call its handler\n              internal.hovered.set(id, data);\n              handlers.pointerover?.(data as NgtEvent<PointerEvent>);\n              handlers.pointerenter?.(data as NgtEvent<PointerEvent>);\n            } else if (hoveredItem.stopped) {\n              // If the object was previously hovered and stopped, we shouldn't allow other items to proceed\n              data.stopPropagation();\n            }\n          }\n          // Call mouse move\n          handlers.pointermove?.(data as NgtEvent<PointerEvent>);\n        } else {\n          // All other events ...\n          const handler = handlers[name as keyof NgtEventHandlers] as (event: NgtEvent<PointerEvent>) => void;\n          if (handler) {\n            // Forward all events back to their respective handlers with the exception of click events,\n            // which must use the initial target\n            if (!isClickEvent || internal.initialHits.includes(eventObject)) {\n              // Missed events have to come first\n              objectPointerMissed(\n                event,\n                internal.interaction.filter((object) => !internal.initialHits.includes(object))\n              );\n              // Now call the handler\n              handler(data as NgtEvent<PointerEvent>);\n            }\n          } else {\n            // Trigger onPointerMissed on all elements that have pointer over/out handlers, but not click and weren't hit\n            if (isClickEvent && internal.initialHits.includes(eventObject)) {\n              objectPointerMissed(\n                event,\n                internal.interaction.filter((object) => !internal.initialHits.includes(object))\n              );\n            }\n          }\n        }\n      });\n    };\n  };\n\n  function objectPointerMissed(event: MouseEvent, objects: THREE.Object3D[]) {\n    objects.forEach((object: THREE.Object3D) => getInstanceInternal(object)?.handlers?.pointermissed?.(event));\n  }\n\n  return { handlePointer };\n}\n","import { ElementRef, Inject, Injectable, NgZone, Optional, SkipSelf } from '@angular/core';\nimport { filter, Observable, Subscription, tap } from 'rxjs';\nimport * as THREE from 'three';\nimport { NGT_PERFORMANCE_OPTIONS } from '../di/performance';\nimport { NGT_WINDOW } from '../di/window';\nimport { Ref } from '../ref';\nimport { NgtResize, NgtResizeResult } from '../services/resize';\nimport type {\n  EquConfig,\n  NgtBeforeRenderRecord,\n  NgtCamera,\n  NgtEvents,\n  NgtGLOptions,\n  NgtPerformanceOptions,\n  NgtState,\n  NgtUnknownInstance,\n  UnknownRecord,\n} from '../types';\nimport { applyProps } from '../utils/apply-props';\nimport { createDefaultCamera, updateCamera } from '../utils/camera';\nimport { checkNeedsUpdate } from '../utils/check-needs-update';\nimport { createEvents } from '../utils/events';\nimport { prepare } from '../utils/instance';\nimport { is } from '../utils/is';\nimport { make, makeDpr, makeId } from '../utils/make';\nimport { NgtComponentStore, tapEffect } from './component-store';\n\ntype NgtAnimationRecordWithUuid = NgtBeforeRenderRecord & { uuid: string };\n\nconst DOM_EVENTS = {\n  click: false,\n  contextmenu: false,\n  dblclick: false,\n  wheel: false, // passive wheel errors with OrbitControls\n  pointerdown: true,\n  pointerup: true,\n  pointerleave: true,\n  pointermove: true,\n  pointercancel: true,\n  lostpointercapture: true,\n} as const;\n\nconst shallowLoose = { objects: 'shallow', strict: false } as EquConfig;\n\n@Injectable()\nexport class NgtStore extends NgtComponentStore<NgtState> {\n  readonly #pointer = new THREE.Vector2();\n  readonly #position = new THREE.Vector3();\n  readonly #defaultTarget = new THREE.Vector3();\n  readonly #tempTarget = new THREE.Vector3();\n\n  readonly ready$ = this.select((s) => s.ready).pipe(filter((ready) => ready));\n\n  readonly #allConstructed$ = this.select(\n    this.select((s) => s.camera),\n    this.select((s) => s.scene),\n    this.select((s) => s.gl),\n    this.select((s) => s.raycaster),\n    this.select((s) => s.internal.active),\n    (camera, scene, gl, raycaster, active) => ({ ready: !!camera && !!gl && !!scene && !!raycaster && active === true })\n  );\n\n  #performanceTimeoutId: ReturnType<typeof setTimeout> | undefined = undefined;\n\n  readonly #dimensions$ = this.select(\n    this.select((s) => s.size),\n    this.select((s) => s.viewport)\n  );\n\n  constructor(\n    { nativeElement: { clientWidth, clientHeight } }: ElementRef<HTMLElement>,\n    @Inject(NGT_PERFORMANCE_OPTIONS)\n    performanceOptions: NgtPerformanceOptions,\n    @Inject(NGT_WINDOW) { devicePixelRatio }: Window,\n    @Optional() @SkipSelf() private parentStore: NgtStore,\n    @Inject(NgtResize) private resizeResult$: Observable<NgtResizeResult>,\n    private zone: NgZone\n  ) {\n    super();\n    this.set({\n      ready: false,\n      clock: new THREE.Clock(),\n      frameloop: 'always',\n      legacy: false,\n      linear: false,\n      flat: false,\n      orthographic: false,\n      shadows: false,\n      controls: null,\n      pointer: this.#pointer,\n      mouse: this.#pointer,\n      sceneRef: new Ref(),\n      cameraRef: new Ref(),\n      events: {\n        priority: 1,\n        enabled: true,\n        connected: undefined,\n        handlers: {} as NgtEvents,\n        compute: (event, state) => {\n          // https://github.com/pmndrs/react-three-fiber/pull/782\n          // Events trigger outside of canvas when moved, use offsetX/Y by default and allow overrides\n          state.pointer.set((event.offsetX / state.size.width) * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);\n          state.raycaster.setFromCamera(state.pointer, state.camera);\n        },\n      },\n      cameraOptions: {},\n      glOptions: {},\n      raycasterOptions: {},\n      sceneOptions: {},\n      // eslint-disable-next-line @typescript-eslint/no-empty-function\n      pointerMissed: () => {},\n      internal: {\n        active: false,\n        lastEvent: null,\n        priority: 0,\n        frames: 0,\n        interaction: [],\n        hovered: new Map(),\n        subscribers: [],\n        initialClick: [0, 0],\n        initialHits: [],\n        capturedMap: new Map(),\n        animations: new Map(),\n      },\n      dpr: [1, 2],\n      size: {\n        width: clientWidth,\n        height: clientHeight,\n      },\n      viewport: {\n        initialDpr: devicePixelRatio || 1,\n        dpr: devicePixelRatio || 1,\n        width: clientWidth,\n        height: clientHeight,\n        aspect: clientWidth / clientHeight,\n        distance: 0,\n        factor: 0,\n        getCurrentViewport: (\n          camera = this.get((s) => s.camera),\n          target: THREE.Vector3 | Parameters<THREE.Vector3['set']> = this.#defaultTarget,\n          size = this.get((s) => s.size)\n        ) => {\n          const { width, height } = size;\n          const aspect = width / height;\n          if (target instanceof THREE.Vector3) this.#tempTarget.copy(target);\n          else this.#tempTarget.set(...target);\n          const distance = camera.getWorldPosition(this.#position).distanceTo(this.#tempTarget);\n          if (is.orthographic(camera)) {\n            return {\n              width: width / camera.zoom,\n              height: height / camera.zoom,\n              factor: 1,\n              distance,\n              aspect,\n            };\n          }\n          const fov = (camera.fov * Math.PI) / 180; // convert vertical fov to radians\n          const h = 2 * Math.tan(fov / 2) * distance; // visible height\n          const w = h * (width / height);\n          return {\n            width: w,\n            height: h,\n            factor: width / w,\n            distance,\n            aspect,\n          };\n        },\n      },\n      performance: {\n        ...performanceOptions,\n        regress: () => {\n          this.zone.runOutsideAngular(() => {\n            const performance = this.get((s) => s.performance);\n            // Clear timeout\n            if (this.#performanceTimeoutId) clearTimeout(this.#performanceTimeoutId);\n            // Set lower bound performance\n            if (performance.current !== performance.min) {\n              this.set((state) => ({\n                performance: {\n                  ...state.performance,\n                  current: performance.min,\n                },\n              }));\n            }\n            // Go back to upper bound performance after a while unless something regresses meanwhile\n            this.#performanceTimeoutId = setTimeout(\n              () =>\n                this.set((state) => ({\n                  performance: {\n                    ...state.performance,\n                    current: this.get((s) => s.performance.max),\n                  },\n                })),\n              performance.debounce\n            );\n          });\n        },\n      },\n      previousState: parentStore?.get(),\n    });\n  }\n\n  init(\n    canvasElement: HTMLCanvasElement,\n    rootStateMap: Map<Element, () => NgtState>,\n    invalidate: (state?: () => NgtState, frames?: number) => void,\n    advance: (timestamp: number, runGlobalCallbacks?: boolean, state?: () => NgtState, frame?: XRFrame) => void\n  ) {\n    this.#initEvents(canvasElement);\n    this.#resize(this.resizeResult$);\n    this.#updateDimensions(this.#dimensions$);\n    this.#initRenderer({ canvasElement, rootStateMap, advance, invalidate });\n    this.#updateSubscribers(\n      this.select(\n        this.select((s) => s.internal.animations),\n        this.select((s) => s.internal.priority)\n      )\n    );\n    this.set((state) => ({\n      invalidate: () => invalidate(this.get.bind(this)),\n      advance: (timestamp, runGlobalCallbacks) => advance(timestamp, runGlobalCallbacks, this.get.bind(this)),\n      internal: { ...state.internal, active: true },\n    }));\n    this.set(this.#allConstructed$);\n  }\n\n  onReady(cb: Parameters<typeof tapEffect>[0]): Subscription {\n    return this.effect(tapEffect(cb))(this.ready$);\n  }\n\n  registerBeforeRender(record: NgtBeforeRenderRecord) {\n    const uuid = is.object3d(record.obj) ? record.obj.uuid : is.ref(record.obj) ? record.obj.value.uuid : makeId();\n    this.#registerBeforeRenderEffect({ ...record, uuid });\n    return () => {\n      this.unregisterBeforeRender(uuid);\n    };\n  }\n\n  unregisterBeforeRender(uuid: string) {\n    if (!uuid) return;\n    const currentAnimations = this.get((s) => s.internal.animations);\n    const record = currentAnimations.get(uuid);\n    const deleted = currentAnimations.delete(uuid);\n    if (deleted && record) {\n      this.set((state) => ({\n        internal: {\n          ...state.internal,\n          animations: currentAnimations,\n          priority: state.internal.priority - ((record.priority || 0) > 0 ? 1 : 0),\n        },\n      }));\n    }\n  }\n\n  addInteraction(interaction: THREE.Object3D) {\n    this.set((state) => ({\n      ...state,\n      internal: {\n        ...state.internal,\n        interaction: [...state.internal.interaction, interaction],\n      },\n    }));\n  }\n\n  removeInteraction(uuid: string) {\n    this.set((state) => ({\n      ...state,\n      internal: {\n        ...state.internal,\n        interaction: state.internal.interaction.filter((interaction) => interaction.uuid !== uuid),\n      },\n    }));\n  }\n\n  setFrameloop(frameloop: NgtState['frameloop'] = 'always') {\n    const clock = this.get((s) => s.clock);\n\n    // if frameloop === \"never\" clock.elapsedTime is updated using advance(timestamp)\n    clock.stop();\n    clock.elapsedTime = 0;\n\n    if (frameloop !== 'never') {\n      clock.start();\n      clock.elapsedTime = 0;\n    }\n    this.set({ frameloop });\n  }\n\n  setDpr(dpr: NgtState['dpr']) {\n    const resolved = makeDpr(dpr);\n    this.set(({ viewport }) => ({\n      dpr: resolved,\n      viewport: {\n        ...viewport,\n        dpr: resolved,\n        initialDpr: viewport.initialDpr || resolved,\n      },\n    }));\n  }\n\n  readonly startLoop = this.effect<NgtState>(\n    tap(({ invalidate }) => {\n      invalidate();\n    })\n  );\n\n  readonly #initRenderer = this.effect<{\n    canvasElement: HTMLCanvasElement;\n    rootStateMap: Map<Element, () => NgtState>;\n    advance: (timestamp: number, runGlobalCallbacks?: boolean, state?: () => NgtState, frame?: XRFrame) => void;\n    invalidate: (state?: () => NgtState, frames?: number) => void;\n  }>(\n    tapEffect(({ canvasElement, rootStateMap, advance, invalidate }) => {\n      const state = this.get();\n\n      // Scene\n      const scene = prepare(\n        new THREE.Scene(),\n        () => this.get(),\n        this.parentStore?.get((s) => s.sceneRef)\n      );\n      applyProps(scene, state.sceneOptions);\n      this.get((s) => s.sceneRef).set(scene);\n\n      // Set up renderer (one time only!)\n      let gl = state.gl;\n      if (!state.gl) {\n        gl = createRenderer(state.glOptions, canvasElement);\n      }\n      this.set({ gl });\n\n      // Set up raycaster (one time only!)\n      let raycaster = state.raycaster;\n      if (!state.raycaster) {\n        raycaster = new THREE.Raycaster();\n      }\n      // Set raycaster options\n      const { params, ...options } = state.raycasterOptions || {};\n      if (!is.equ(options, raycaster, shallowLoose)) applyProps(raycaster, { ...options });\n      if (!is.equ(params, raycaster.params, shallowLoose))\n        applyProps(raycaster, {\n          params: { ...raycaster.params, ...(params || {}) },\n        });\n\n      // Create default camera (one time only!)\n      let camera = state.camera;\n      if (!state.camera) {\n        const isCamera = is.camera(state.cameraOptions);\n        camera = isCamera ? (state.cameraOptions as NgtCamera) : createDefaultCamera(state);\n        if (!isCamera) {\n          if (state.cameraOptions) {\n            applyProps(camera, state.cameraOptions as UnknownRecord);\n          }\n\n          // Set position.z if position not passed in\n          if (!state.cameraOptions?.position) {\n            camera.position.z = 5;\n          }\n\n          // Always look at center by default\n          if (!state.cameraOptions?.rotation) {\n            camera.lookAt(state.lookAt ?? make(THREE.Vector3));\n          }\n\n          // Update projection matrix after applying props\n          camera.updateProjectionMatrix();\n        }\n\n        if (!is.instance(camera)) {\n          camera = prepare(\n            camera,\n            () => this.get(),\n            this.parentStore?.get((s) => s.cameraRef)\n          );\n        }\n        this.get((s) => s.cameraRef).set(camera as NgtUnknownInstance<NgtCamera>);\n      }\n\n      // Set up XR (one time only!)\n      let xr = state.xr;\n      if (!state.xr) {\n        // Handle frame behavior in WebXR\n        const handleXRFrame: XRFrameRequestCallback = (timestamp: number, frame?: XRFrame) => {\n          const state = this.get();\n          if (state.frameloop === 'never') return;\n          advance(timestamp, true, this.get.bind(this), frame);\n        };\n\n        // Toggle render switching on session\n        const handleSessionChange = () => {\n          const gl = this.get((s) => s.gl);\n          gl.xr.enabled = gl.xr.isPresenting;\n          // WebXRManager's signature is incorrect.\n          // See: https://github.com/pmndrs/react-three-fiber/pull/2017#discussion_r790134505\n          gl.xr.setAnimationLoop(gl.xr.isPresenting ? handleXRFrame : null);\n          if (!gl.xr.isPresenting) invalidate(this.get.bind(this));\n        };\n\n        // WebXR session manager\n        xr = {\n          connect: () => {\n            const gl = this.get((s) => s.gl);\n            gl.xr.addEventListener('sessionstart', handleSessionChange);\n            gl.xr.addEventListener('sessionend', handleSessionChange);\n          },\n          disconnect: () => {\n            const gl = this.get((s) => s.gl);\n            gl.xr.removeEventListener('sessionstart', handleSessionChange);\n            gl.xr.removeEventListener('sessionend', handleSessionChange);\n          },\n        };\n\n        // Subscribe to WebXR session events\n        if (gl.xr) xr.connect();\n        this.set({ xr });\n      }\n\n      // Set shadowmap\n      if (gl.shadowMap) {\n        const isBoolean = is.boo(state.shadows);\n        if (\n          (isBoolean && gl.shadowMap.enabled !== state.shadows) ||\n          !is.equ(state.shadows, gl.shadowMap, shallowLoose)\n        ) {\n          const old = gl.shadowMap.enabled;\n          gl.shadowMap.enabled = !!state.shadows;\n          if (!isBoolean) Object.assign(gl.shadowMap, state.shadows);\n          else gl.shadowMap.type = THREE.PCFSoftShadowMap;\n\n          if (old !== gl.shadowMap.enabled) checkNeedsUpdate(gl.shadowMap);\n        }\n      }\n\n      // Set color management\n      // Safely set color management if available.\n      // Avoid accessing THREE.ColorManagement to play nice with older versions\n      if (is.supportColorManagement()) {\n        (THREE as any)['ColorManagement'].legacyMode = state.legacy;\n      }\n      const outputEncoding = state.linear ? THREE.LinearEncoding : THREE.sRGBEncoding;\n      const toneMapping = state.flat ? THREE.NoToneMapping : THREE.ACESFilmicToneMapping;\n      if (gl.outputEncoding !== outputEncoding) gl.outputEncoding = outputEncoding;\n      if (gl.toneMapping !== toneMapping) gl.toneMapping = toneMapping;\n\n      gl.setClearAlpha(0);\n      gl.setPixelRatio(makeDpr(state.viewport.dpr));\n      gl.setSize(state.size.width, state.size.height);\n\n      if (is.obj(state.glOptions) && !is.fun(state.glOptions) && !is.glRenderer(state.glOptions)) {\n        applyProps(gl, state.glOptions as UnknownRecord);\n      }\n\n      this.set({ gl, camera, scene, raycaster });\n\n      return () => {\n        const { gl, xr, cameraRef, sceneRef, events } = this.get();\n        if (gl) {\n          if (events.disconnect) {\n            events.disconnect();\n          }\n\n          gl.renderLists.dispose();\n          gl.forceContextLoss();\n\n          if (gl.xr && gl.xr.enabled) {\n            gl.xr.setAnimationLoop(null);\n            xr.disconnect();\n          }\n\n          cameraRef.complete();\n          sceneRef.complete();\n\n          this.set((state) => ({\n            ...state,\n            internal: { ...state.internal, active: false },\n          }));\n\n          rootStateMap.delete(canvasElement);\n        }\n      };\n    })\n  );\n\n  readonly #resize = this.effect<NgtResizeResult>(\n    tap(({ width, height, dpr }) => {\n      this.set(({ viewport, camera }) => {\n        const size = { width, height };\n        return {\n          size,\n          viewport: {\n            ...viewport,\n            ...viewport.getCurrentViewport(camera, this.#defaultTarget, size),\n            dpr: makeDpr(dpr),\n          },\n        };\n      });\n    })\n  );\n\n  readonly #updateDimensions = this.effect(\n    tap(() => {\n      const { camera, gl, ready, cameraOptions, size, viewport } = this.get();\n      if (ready) {\n        updateCamera(cameraOptions, camera, size);\n\n        // update renderer\n        gl.setPixelRatio(viewport.dpr);\n        gl.setSize(size.width, size.height);\n      }\n    })\n  );\n\n  readonly #registerBeforeRenderEffect = this.effect<NgtAnimationRecordWithUuid>(\n    tapEffect(({ uuid, ...record }) => {\n      if (uuid) {\n        this.set((state) => ({\n          internal: {\n            ...state.internal,\n            animations: new Map(state.internal.animations).set(uuid, record),\n            priority: state.internal.priority + ((record.priority || 0) > 0 ? 1 : 0),\n          },\n        }));\n      }\n\n      return ({ prev: { uuid: prevUuid } = {}, complete }) => {\n        if (prevUuid !== uuid || complete) {\n          this.unregisterBeforeRender(uuid);\n        }\n      };\n    })\n  );\n\n  readonly #updateSubscribers = this.effect(\n    tap(() => {\n      const internal = this.get((s) => s.internal);\n      if (!internal.animations.size) return;\n      const subscribers = Array.from(internal.animations.values());\n      subscribers.sort((a, b) => (a.priority || 0) - (b.priority || 0));\n      this.set((state) => ({\n        internal: { ...state.internal, subscribers },\n      }));\n    })\n  );\n\n  #initEvents(canvasElement: HTMLCanvasElement) {\n    const { handlePointer } = createEvents(() => this.get());\n\n    this.set((state) => ({\n      events: {\n        ...state.events,\n        handlers: Object.keys(DOM_EVENTS).reduce((handlers: UnknownRecord, supportedEventName) => {\n          handlers[supportedEventName] = handlePointer(supportedEventName);\n          return handlers;\n        }, {}) as NgtEvents,\n      },\n    }));\n\n    this.#connectElement(canvasElement);\n  }\n\n  #connectElement(canvasElement: HTMLCanvasElement) {\n    this.set((state) => ({\n      events: { ...state.events, connected: canvasElement },\n    }));\n    const handlers = this.get((s) => s.events.handlers);\n    Object.entries(handlers ?? {}).forEach(([eventName, handler]) => {\n      const passive = DOM_EVENTS[eventName as keyof typeof DOM_EVENTS];\n      canvasElement.addEventListener(eventName, handler, { passive });\n    });\n  }\n\n  #disconnectElement() {\n    const { handlers, connected } = this.get((s) => s.events);\n    if (connected) {\n      Object.entries(handlers ?? {}).forEach(([eventName, handler]) => {\n        if (connected instanceof HTMLElement) {\n          connected.removeEventListener(eventName, handler);\n        }\n      });\n    }\n  }\n\n  override ngOnDestroy() {\n    this.#disconnectElement();\n    super.ngOnDestroy();\n  }\n}\n\nfunction createRenderer(glOptions: NgtGLOptions, canvasElement: HTMLCanvasElement): THREE.WebGLRenderer {\n  const customRenderer = (\n    typeof glOptions === 'function' ? glOptions(canvasElement) : glOptions\n  ) as THREE.WebGLRenderer;\n\n  if (customRenderer?.render != null) {\n    return customRenderer;\n  }\n\n  return new THREE.WebGLRenderer({\n    powerPreference: 'high-performance',\n    canvas: canvasElement,\n    antialias: true,\n    alpha: true,\n    ...glOptions,\n  });\n}\n","export function coerceBooleanProperty(value: unknown): boolean {\n  return value != null && `${value}` !== 'false';\n}\n\n/** Coerces a data-bound value (typically a string) to a number. */\nexport function coerceNumberProperty(value: any): number;\nexport function coerceNumberProperty(value: any, fallback: any): number;\nexport function coerceNumberProperty(value: any, fallbackValue = 0): number {\n  return isNumberValue(value) ? Number(value) : coerceNumberProperty(fallbackValue);\n}\n\n/**\n * Whether the provided value is considered a number.\n */\nfunction isNumberValue(value: any): boolean {\n  // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n  // and other non-number values as NaN, where Number just uses 0) but it considers the string\n  // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n  return !isNaN(parseFloat(value as any)) && !isNaN(Number(value));\n}\n","import type { NgtUnknownInstance } from '../types';\nimport { applyProps } from './apply-props';\n\nexport function mutate<T extends Record<string, unknown>>(object: T, path: string[], value: unknown): void {\n  const { decomposedPath, base } = decomposePath(path);\n\n  if (base === undefined) {\n    return;\n  }\n\n  // assign an empty object in order to spread object\n  assignEmpty(object, base);\n\n  // Determine if there is still layers to traverse\n  if (decomposedPath.length <= 1) {\n    applyProps(object as NgtUnknownInstance, { [base]: value });\n  } else {\n    mutate(object[base] as Record<string, unknown>, decomposedPath.slice(1), value);\n  }\n}\n\nfunction decomposePath(path: string[]): {\n  decomposedPath: string[];\n  base: string;\n} {\n  if (path.length < 1) {\n    return { base: '', decomposedPath: [] };\n  }\n  const decomposedPath = path;\n  const base = path[0];\n  return { base, decomposedPath };\n}\n\nfunction assignEmpty(obj: Record<string, unknown>, base: string) {\n  if (!Object.prototype.hasOwnProperty.call(obj, base) && Reflect && !!Reflect.has && !Reflect.has(obj, base)) {\n    obj[base] = {};\n  }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  Directive,\n  EventEmitter,\n  Inject,\n  inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n} from '@angular/core';\nimport { filter, map, Observable, of, pipe, switchMap, tap, withLatestFrom } from 'rxjs';\nimport * as THREE from 'three';\nimport { injectInstanceHostRef, injectInstanceRef } from '../di/instance';\nimport { Ref } from '../ref';\nimport { NgtComponentStore, tapEffect } from '../stores/component-store';\nimport { NgtStore } from '../stores/store';\nimport type { AttachFunction, BooleanInput, NgtInstanceInternal, NgtUnknownInstance, UnknownRecord } from '../types';\nimport { applyProps } from '../utils/apply-props';\nimport { checkNeedsUpdate } from '../utils/check-needs-update';\nimport { coerceBooleanProperty } from '../utils/coercion';\nimport { removeInteractivity } from '../utils/events';\nimport { createNgtProvider } from '../utils/inject';\nimport { checkUpdate, optionsFieldsToOptions, prepare } from '../utils/instance';\nimport { is } from '../utils/is';\nimport { mutate } from '../utils/mutate';\n\nexport interface NgtInstanceState<TInstance extends object = UnknownRecord> {\n  instance: Ref<TInstance>;\n  instanceArgs: unknown[];\n  attach: string[] | AttachFunction;\n  attachExplicit?: boolean;\n  noAttach: boolean;\n  noAttachExplicit?: boolean;\n  skipParent: boolean;\n  skipParentExplicit?: boolean;\n  [option: string]: any;\n}\n\n@Directive()\nexport abstract class NgtInstance<\n    TInstance extends object,\n    TInstanceState extends NgtInstanceState<TInstance> = NgtInstanceState<TInstance>\n  >\n  extends NgtComponentStore<TInstanceState>\n  implements OnInit, OnDestroy\n{\n  @Input() set ref(ref: Ref) {\n    this.set({ instance: ref } as Partial<TInstanceState>);\n  }\n\n  @Input() set skipParent(skipParent: BooleanInput) {\n    this.set({\n      attachExplicit: true,\n      skipParent: coerceBooleanProperty(skipParent),\n    } as Partial<TInstanceState>);\n  }\n  get skipParent() {\n    return this.get((s) => s.skipParent);\n  }\n\n  @Output() ready = new EventEmitter<TInstance>();\n  protected hasEmittedAlready = false;\n\n  @Output() update = new EventEmitter<TInstance>();\n\n  @Input() set noAttach(noAttach: BooleanInput) {\n    this.set({\n      noAttachExplicit: true,\n      noAttach: coerceBooleanProperty(noAttach),\n    } as Partial<TInstanceState>);\n  }\n  get noAttach() {\n    return this.get((s) => s.noAttach);\n  }\n\n  @Input()\n  set attach(value: string | string[] | AttachFunction | undefined) {\n    if (value) {\n      this.set({\n        skipParentExplicit: true,\n        attach: typeof value === 'function' ? value : is.arr(value) ? value : [value],\n      } as Partial<TInstanceState>);\n    }\n  }\n  get attach() {\n    return this.get((s) => s.attach);\n  }\n\n  readonly instance$ = this.select((s) => s.instance).pipe(\n    switchMap((instance) => instance.pipe(filter((instance): instance is TInstance => instance != null)))\n  );\n\n  get instance(): Ref<TInstance> {\n    return this.get((s) => s.instance);\n  }\n\n  get instanceValue(): TInstance {\n    return this.isRaw ? (this.instance.value.valueOf() as TInstance) : this.instance.value;\n  }\n\n  get __ngt__(): NgtInstanceInternal {\n    return (this.instance.value as NgtUnknownInstance).__ngt__;\n  }\n\n  get parent(): Ref {\n    if (!this.skipParent) return this.parentRef?.();\n    return this.parentHostRef?.() || this.parentRef?.();\n  }\n\n  protected readonly instanceArgs$ = this.select((s) => s.instanceArgs);\n\n  set instanceArgs(v: unknown | unknown[]) {\n    this.set({\n      instanceArgs: is.arr(v) ? v : [v],\n    } as Partial<TInstanceState>);\n  }\n  get instanceArgs() {\n    return this.get((s) => s.instanceArgs);\n  }\n\n  protected zone = inject(NgZone);\n  protected store = this.skipSelfStore ? inject(NgtStore, { skipSelf: true }) : inject(NgtStore);\n  protected document = inject(DOCUMENT);\n  protected parentRef = injectInstanceRef({ skipSelf: true, optional: true });\n  protected parentHostRef = injectInstanceHostRef({ skipSelf: true, optional: true });\n\n  constructor(@Optional() @Inject('NGT_SKIP_SELF_STORE') private skipSelfStore = false) {\n    super();\n    this.set({\n      instance: new Ref(null),\n      instanceArgs: [],\n      attach: [],\n      noAttach: false,\n      skipParent: false,\n    } as unknown as TInstanceState);\n  }\n\n  ngOnInit() {\n    this.zone.runOutsideAngular(() => {\n      this.preInit();\n      this.store.onReady(() => {\n        // make sure `instance()` is available before doing anything\n        this.instanceReady(this.instance$);\n      });\n    });\n  }\n\n  /**\n   * Sub-classes can use this function to run pre-init logic\n   * @protected\n   */\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  protected preInit() {}\n\n  /**\n   * Sub-classes can choose to run additional logic after init\n   * @protected\n   */\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  protected postInit() {}\n\n  protected emitReady() {\n    // only emit ready once to prevent reconstruct\n    if (!this.hasEmittedAlready) {\n      this.ready.emit(this.instanceValue);\n      this.hasEmittedAlready = true;\n    }\n  }\n\n  protected isPrimitive = false;\n  protected isWrapper = false;\n  protected isRaw = false;\n\n  prepareInstance(instance: TInstance, uuid?: string): NgtUnknownInstance<TInstance> {\n    if (uuid && 'uuid' in instance) {\n      (instance as UnknownRecord)['uuid'] = uuid;\n    }\n\n    const prepInstance = prepare(instance, () => this.store.get(), this.parent, this.instance, this.isPrimitive);\n\n    this.postPrepare(prepInstance);\n    this.instance.set(prepInstance);\n    this.emitReady();\n\n    if (!is.object3d(prepInstance) && !this.noAttach && !this.skipParent) {\n      const parentObjects = prepInstance.__ngt__.parent?.value?.__ngt__?.objects;\n      parentObjects && parentObjects.set([...parentObjects.value, this.instance]);\n    }\n\n    return prepInstance;\n  }\n\n  /**\n   * Sub-classes can use this to modify the constructor parameters\n   * before calling this.prepareInstance\n   */\n  protected adjustCtorParams(instanceArgs: unknown[]) {\n    return instanceArgs;\n  }\n\n  /**\n   * Sub-classes, if adjust CtorParams, can also use ctorParams$ to ensure ctor is re-invoked\n   */\n  protected get ctorParams$() {\n    return this.instanceArgs$.pipe(map(() => ({})));\n  }\n\n  protected destroy() {\n    if (this.instanceValue) {\n      if (is.object3d(this.instanceValue)) {\n        const parentInstance = this.parent;\n        if (parentInstance && is.object3d(parentInstance.value)) {\n          removeInteractivity(this.__ngt__.root.bind(this.__ngt__), this.instanceValue);\n        }\n\n        if (this.instanceValue.clear != null) {\n          this.instanceValue.clear();\n        }\n      } else {\n        // non-scene objects\n        const previousAttach = this.__ngt__.previousAttach;\n        if (previousAttach != null) {\n          if (typeof previousAttach === 'function') {\n            previousAttach();\n            if (this.__ngt__.parent && this.__ngt__.parent.value) {\n              checkNeedsUpdate(this.__ngt__.parent.value);\n            }\n          } else {\n            const previousAttachValue = this.__ngt__.previousAttachValue;\n            if (this.__ngt__.parent && this.__ngt__.parent.value) {\n              mutate(this.__ngt__.parent.value, previousAttach, previousAttachValue);\n              checkNeedsUpdate(this.__ngt__.parent.value);\n            }\n          }\n        }\n      }\n\n      const dispose = (this.instanceValue as UnknownRecord)['dispose'];\n      if (dispose && typeof dispose === 'function') {\n        dispose.apply(this.instanceValue);\n      }\n    }\n\n    this.set({ attach: [] } as unknown as Partial<TInstanceState>);\n    this.instance.complete();\n  }\n\n  /**\n   * Can be used by sub-classes to run additional logic after prepare\n   * @protected\n   */\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  protected postPrepare(_: TInstance): void {}\n\n  protected get optionFields(): Record<string, boolean> {\n    return {};\n  }\n\n  override ngOnDestroy() {\n    this.zone.runOutsideAngular(() => {\n      this.destroy();\n    });\n    super.ngOnDestroy();\n  }\n\n  private readonly instanceReady = this.effect<TInstance>(\n    tapEffect(() => {\n      // assigning\n      const setOptionsSub = this.setOptions(\n        this.select(\n          optionsFieldsToOptions(this, this.optionFields, is.material(this.instanceValue)),\n          this.setOptionsTrigger$,\n          (options) => options\n        )\n      );\n\n      // attaching\n      if (!this.get((s) => s.noAttach)) {\n        this.attachToParent();\n      }\n\n      return () => {\n        setOptionsSub.unsubscribe();\n      };\n    })\n  );\n\n  /**\n   * Can be used by sub-classes to run additional logic after options are set\n   * @protected\n   */\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  protected postSetOptions(_: TInstance): void {}\n\n  /**\n   * Sub-classes can customize this to run setOptions on custom trigger\n   * @protected\n   */\n  protected get setOptionsTrigger$(): Observable<{}> {\n    return of({});\n  }\n\n  private readonly setOptions = this.effect<UnknownRecord>(\n    tap((options) => {\n      // no options; return early\n      if (Object.keys(options).length === 0) return;\n\n      if (this.instanceValue) {\n        // TODO: Material is handling this on their own. To be changed when [parameters] is removed\n        // if (is.material(this.instanceValue)) return;\n\n        const state = this.get();\n        const customOptions = {} as UnknownRecord;\n\n        const { rotation, quaternion, ...restOptions } = options;\n\n        if (rotation) {\n          customOptions['rotation'] = state['rotation'];\n        } else if (quaternion) {\n          customOptions['quaternion'] = state['quaternion'];\n        }\n\n        for (const option of Object.keys(restOptions)) {\n          const skipOption = is.material(this.instanceValue) ? state[option] !== undefined : state[option] != null;\n          if (skipOption) {\n            customOptions[option] = state[option];\n          }\n        }\n\n        if (is.material(this.instanceValue)) {\n          customOptions['uniforms'] = {};\n          if ('uniforms' in this.instanceValue && 'uniforms' in restOptions) {\n            customOptions['uniforms'] = {\n              ...(this.instanceValue as THREE.ShaderMaterial)['uniforms'],\n              ...(restOptions as THREE.ShaderMaterialParameters)['uniforms'],\n            };\n          }\n          this.instanceValue.setValues(customOptions);\n        } else {\n          applyProps(this.instanceValue, customOptions);\n        }\n\n        this.postSetOptions(this.instanceValue);\n\n        checkUpdate(this.instanceValue);\n\n        if (this.update.observed) {\n          this.update.emit(this.instanceValue);\n        }\n      }\n    })\n  );\n\n  private attachToParent = this.effect<void>(\n    pipe(\n      withLatestFrom(this.select((s) => s.attach)),\n      tap(([, attach]) => {\n        let parentInstanceRef = this.__ngt__.parent;\n\n        // if no parentInstance, try re-run the factory due to late init\n        if (!parentInstanceRef || !parentInstanceRef.value) {\n          // return early if failed to retrieve\n          if (!this.parent?.value) return;\n\n          // reassign on instance internal state\n          this.__ngt__.parent = this.parent;\n          parentInstanceRef = this.parent;\n        }\n\n        if (typeof attach === 'function') {\n          const attachCleanUp = attach(parentInstanceRef, this.instance);\n          if (attachCleanUp) {\n            this.__ngt__.previousAttach = attachCleanUp;\n          }\n        } else {\n          const propertyToAttach = [...attach];\n\n          // if propertyToAttach is empty\n          if (propertyToAttach.length === 0) return;\n\n          // array material handling\n          if (\n            propertyToAttach[0] === 'material' &&\n            propertyToAttach[1] &&\n            is.num(Number(propertyToAttach[1])) &&\n            is.material(this.instanceValue)\n          ) {\n            if (!is.arr((parentInstanceRef.value as unknown as THREE.Mesh).material)) {\n              (parentInstanceRef.value as unknown as THREE.Mesh).material = [];\n            }\n          }\n\n          // return early if instance is material or geometry but parent isn't a Mesh\n          if (\n            (propertyToAttach[0] === 'material' || propertyToAttach[0] === 'geometry') &&\n            !is.mesh(parentInstanceRef.value)\n          ) {\n            return;\n          }\n\n          // retrieve the current value on the parentInstance so we can reset it later\n          this.__ngt__.previousAttachValue = propertyToAttach.reduce(\n            (value: any, property) => value[property],\n            parentInstanceRef.value\n          );\n\n          // attach the instance value on the parent\n          mutate(parentInstanceRef.value, propertyToAttach, this.instanceValue);\n\n          // validate on the instance\n          if (this.__ngt__) {\n            this.__ngt__.root().invalidate();\n          }\n\n          // also validate on the parentInstance\n          if (parentInstanceRef.value.__ngt__) {\n            parentInstanceRef.value.__ngt__.root().invalidate();\n          }\n\n          this.__ngt__.previousAttach = propertyToAttach;\n          this.set({ attach: propertyToAttach } as Partial<TInstanceState>);\n        }\n        checkUpdate(parentInstanceRef.value);\n        checkUpdate(this.instanceValue);\n      })\n    )\n  );\n}\n\nexport const provideNgtInstance = createNgtProvider(NgtInstance);\n","import { createRefInjection } from '../utils/inject';\nimport { provideInstanceHostRef, provideInstanceRef } from './instance';\n\nexport const [injectObjectRef, provideObjectRef, NGT_OBJECT_REF] = createRefInjection(\n  'NgtObject ref',\n  provideInstanceRef\n);\nexport const [injectObjectHostRef, provideObjectHostRef, NGT_OBJECT_HOST_REF] = createRefInjection(\n  'NgtObject host ref',\n  true,\n  provideInstanceHostRef\n);\nexport const [injectCameraRef, provideCameraRef, NGT_CAMERA_REF] = createRefInjection('NgtCamera ref');\nexport const [injectSceneRef, provideSceneRef, NGT_SCENE_REF] = createRefInjection('NgtScene ref');\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\nimport * as THREE from 'three';\nimport { injectObjectHostRef, injectObjectRef } from '../di/object';\nimport { Ref } from '../ref';\nimport { tapEffect } from '../stores/component-store';\nimport type {\n  BooleanInput,\n  NgtColor,\n  NgtEuler,\n  NgtEvent,\n  NgtEventHandlers,\n  NgtQuaternion,\n  NgtRenderState,\n  NgtTriple,\n  NgtUnknownInstance,\n  NgtVector3,\n  NumberInput,\n  UnknownRecord,\n} from '../types';\nimport { applyProps } from '../utils/apply-props';\nimport { coerceBooleanProperty, coerceNumberProperty } from '../utils/coercion';\nimport { createNgtProvider } from '../utils/inject';\nimport { is } from '../utils/is';\nimport { make } from '../utils/make';\nimport { NgtInstance, NgtInstanceState, provideNgtInstance } from './instance';\n\nconst supportedEvents = [\n  'click',\n  'contextmenu',\n  'dblclick',\n  'pointerup',\n  'pointerdown',\n  'pointerover',\n  'pointerout',\n  'pointerenter',\n  'pointerleave',\n  'pointermove',\n  'pointermissed',\n  'pointercancel',\n  'wheel',\n] as const;\n\nexport type NgtPreObjectInit = ((initFn: () => void) => void) | undefined;\n\nexport interface NgtObjectPropsState<TObject extends THREE.Object3D = THREE.Object3D>\n  extends NgtInstanceState<TObject> {\n  name: string;\n  nameExplicit?: boolean;\n  position: THREE.Vector3;\n  positionExplicit?: boolean;\n  rotation: THREE.Euler;\n  rotationExplicit?: boolean;\n  quaternion: THREE.Quaternion;\n  quaternionExplicit?: boolean;\n  scale: THREE.Vector3;\n  scaleExplicit?: boolean;\n  color: THREE.Color;\n  colorExplicit?: boolean;\n  castShadow: boolean;\n  castShadowExplicit?: boolean;\n  receiveShadow: boolean;\n  receiveShadowExplicit?: boolean;\n  priority: number;\n  priorityExplicit?: boolean;\n  visible: boolean;\n  visibleExplicit?: boolean;\n  matrixAutoUpdate: boolean;\n  matrixAutoUpdateExplicit?: boolean;\n  appendMode: 'immediate' | 'root' | 'none';\n  appendModeExplicit?: boolean;\n  userData?: UnknownRecord;\n  userDataExplicit?: boolean;\n  dispose?: (() => void) | null;\n  disposeExplicit?: boolean;\n  raycast?: THREE.Object3D['raycast'] | null;\n  raycastExplicit?: boolean;\n  appendTo?: Ref<THREE.Object3D>;\n  appendToExplicit?: boolean;\n}\n\n@Directive()\nexport abstract class NgtObjectProps<\n  TObject extends THREE.Object3D = THREE.Object3D,\n  TObjectInputsState extends NgtObjectPropsState<TObject> = NgtObjectPropsState<TObject>\n> extends NgtInstance<TObject, TObjectInputsState> {\n  @Input() set name(name: string) {\n    this.set({\n      nameExplicit: true,\n      name,\n    } as Partial<TObjectInputsState>);\n  }\n  get name(): string {\n    return this.get((s) => s.name);\n  }\n\n  @Input() set position(position: NgtVector3 | undefined) {\n    this.set({\n      positionExplicit: true,\n      position: make(THREE.Vector3, position),\n    } as Partial<TObjectInputsState>);\n  }\n  get position(): THREE.Vector3 {\n    return this.get((s) => s.position);\n  }\n\n  get rotation() {\n    return this.get((s) => s.rotation);\n  }\n  @Input() set rotation(rotation: NgtEuler | NgtTriple | undefined) {\n    this.set({\n      rotationExplicit: true,\n      rotation: make(THREE.Euler, rotation),\n    } as Partial<TObjectInputsState>);\n  }\n\n  get quaternion() {\n    return this.get((s) => s.quaternion);\n  }\n  @Input() set quaternion(quaternion: NgtQuaternion | undefined) {\n    this.set({\n      quaternionExplicit: true,\n      quaternion: make(THREE.Quaternion, quaternion),\n    } as Partial<TObjectInputsState>);\n  }\n\n  get scale() {\n    return this.get((s) => s.scale);\n  }\n  @Input() set scale(scale: NgtVector3 | undefined) {\n    this.set({\n      scaleExplicit: true,\n      scale: make(THREE.Vector3, scale),\n    } as Partial<TObjectInputsState>);\n  }\n\n  get color() {\n    return this.get((s) => s.color);\n  }\n  @Input() set color(color: NgtColor | undefined) {\n    this.set({\n      colorExplicit: true,\n      color: make(THREE.Color, color),\n    } as Partial<TObjectInputsState>);\n  }\n\n  get castShadow() {\n    return this.get((s) => s.castShadow);\n  }\n  @Input() set castShadow(value: BooleanInput) {\n    this.set({\n      castShadowExplicit: true,\n      castShadow: coerceBooleanProperty(value),\n    } as Partial<TObjectInputsState>);\n  }\n\n  get receiveShadow() {\n    return this.get((s) => s.receiveShadow);\n  }\n  @Input() set receiveShadow(value: BooleanInput) {\n    this.set({\n      receiveShadowExplicit: true,\n      receiveShadow: coerceBooleanProperty(value),\n    } as Partial<TObjectInputsState>);\n  }\n\n  get priority() {\n    return this.get((s) => s.priority);\n  }\n  @Input() set priority(priority: NumberInput) {\n    this.set({\n      priorityExplicit: true,\n      priority: coerceNumberProperty(priority),\n    } as Partial<TObjectInputsState>);\n  }\n\n  get visible() {\n    return this.get((s) => s.visible);\n  }\n  @Input() set visible(visible: BooleanInput) {\n    this.set({\n      visibleExplicit: true,\n      visible: coerceBooleanProperty(visible),\n    } as Partial<TObjectInputsState>);\n  }\n  get matrixAutoUpdate() {\n    return this.get((s) => s.matrixAutoUpdate);\n  }\n  @Input() set matrixAutoUpdate(matrixAutoUpdate: BooleanInput) {\n    this.set({\n      matrixAutoUpdateExplicit: true,\n      matrixAutoUpdate: coerceBooleanProperty(matrixAutoUpdate),\n    } as Partial<TObjectInputsState>);\n  }\n\n  get userData() {\n    return this.get((s) => s.userData);\n  }\n  @Input() set userData(userData: UnknownRecord | undefined) {\n    this.set({\n      userDataExplicit: true,\n      userData,\n    } as Partial<TObjectInputsState>);\n  }\n\n  get dispose() {\n    return this.get((s) => s.dispose);\n  }\n  @Input() set dispose(dispose: (() => void) | null | undefined) {\n    this.set({\n      disposeExplicit: true,\n      dispose,\n    } as Partial<TObjectInputsState>);\n  }\n\n  get raycast() {\n    return this.get((s) => s.raycast);\n  }\n  @Input() set raycast(raycast: THREE.Object3D['raycast'] | null | undefined) {\n    this.set({\n      raycastExplicit: true,\n      raycast,\n    } as Partial<TObjectInputsState>);\n  }\n\n  get appendMode() {\n    return this.get((s) => s.appendMode);\n  }\n  @Input() set appendMode(appendMode: 'immediate' | 'root' | 'none') {\n    this.set({\n      appendModeExplicit: true,\n      appendMode,\n    } as Partial<TObjectInputsState>);\n  }\n\n  get appendTo() {\n    return this.get((s) => s.appendTo);\n  }\n  @Input() set appendTo(appendTo: Ref<THREE.Object3D> | THREE.Object3D | undefined) {\n    this.set({\n      appendToExplicit: true,\n      appendTo: appendTo ? (is.ref(appendTo) ? appendTo : new Ref(appendTo)) : undefined,\n    } as Partial<TObjectInputsState>);\n  }\n\n  // events\n  @Output() click = new EventEmitter<NgtEvent<MouseEvent>>();\n  @Output() contextmenu = new EventEmitter<NgtEvent<MouseEvent>>();\n  @Output() dblclick = new EventEmitter<NgtEvent<MouseEvent>>();\n  @Output() pointerup = new EventEmitter<NgtEvent<PointerEvent>>();\n  @Output() pointerdown = new EventEmitter<NgtEvent<PointerEvent>>();\n  @Output() pointerover = new EventEmitter<NgtEvent<PointerEvent>>();\n  @Output() pointerout = new EventEmitter<NgtEvent<PointerEvent>>();\n  @Output() pointerenter = new EventEmitter<NgtEvent<PointerEvent>>();\n  @Output() pointerleave = new EventEmitter<NgtEvent<PointerEvent>>();\n  @Output() pointermove = new EventEmitter<NgtEvent<PointerEvent>>();\n  @Output() pointermissed = new EventEmitter<NgtEvent<PointerEvent>>();\n  @Output() pointercancel = new EventEmitter<NgtEvent<PointerEvent>>();\n  @Output() wheel = new EventEmitter<NgtEvent<WheelEvent>>();\n\n  shouldPassThroughRef = true;\n\n  protected override get optionFields(): Record<string, boolean> {\n    return {\n      name: false,\n      position: false,\n      rotation: false,\n      quaternion: false,\n      scale: false,\n      color: false,\n      castShadow: false,\n      receiveShadow: false,\n      visible: false,\n      matrixAutoUpdate: false,\n      userData: false,\n      dispose: true,\n      raycast: true,\n    };\n  }\n\n  protected override parentRef = injectObjectRef({ optional: true, skipSelf: true });\n  protected override parentHostRef = injectObjectHostRef({ optional: true, skipSelf: true });\n\n  constructor() {\n    super();\n    this.set({\n      name: '',\n      position: new THREE.Vector3(),\n      rotation: new THREE.Euler(),\n      quaternion: new THREE.Quaternion(),\n      scale: new THREE.Vector3(1, 1, 1),\n      color: new THREE.Color(),\n      castShadow: false,\n      receiveShadow: false,\n      priority: 0,\n      visible: true,\n      matrixAutoUpdate: true,\n      appendMode: 'immediate' as const,\n      userData: {},\n    } as Partial<TObjectInputsState>);\n  }\n}\n\n@Directive()\nexport abstract class NgtObject<\n  TObject extends THREE.Object3D = THREE.Object3D,\n  TObjectState extends NgtObjectPropsState<TObject> = NgtObjectPropsState<TObject>\n> extends NgtObjectProps<TObject, TObjectState> {\n  @Output() appended = new EventEmitter<TObject>();\n  @Output() beforeRender = new EventEmitter<{\n    state: NgtRenderState;\n    object: TObject;\n  }>();\n  /**\n   * @deprecated Use {@link beforeRender} instead\n   */\n  @Output() animateReady = this.beforeRender;\n\n  protected abstract objectInitFn(): TObject;\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        if (this.preObjectInit) {\n          this.preObjectInit(() => this.init(this.instanceArgs$));\n        } else {\n          this.init(this.instanceArgs$);\n        }\n      });\n    });\n  }\n\n  /**\n   * Sub-classes can use this function to add additional logic BEFORE\n   * initializing the object3d. The actual `initFn` is passed in so\n   * the implementor needs to call this initFn() manually.\n   *\n   * This function is also called outside of Angular Zone\n   * @protected\n   */\n  protected get preObjectInit(): NgtPreObjectInit {\n    return undefined;\n  }\n\n  private readonly init = this.effect(\n    tapEffect(() => {\n      if (this.instance.value && this.__ngt__) {\n        this.switch();\n      } else {\n        this.prepareInstance(this.objectInitFn(), this.instance?.value?.uuid);\n      }\n\n      if (this.instance.value) {\n        if (this.postInit) {\n          this.postInit();\n        }\n\n        const observedEvents = supportedEvents.reduce(\n          (result, event) => {\n            const controllerEvent = this[event].observed ? this[event] : null;\n            if (controllerEvent) {\n              result.handlers[event] = this.eventNameToHandler(controllerEvent as EventEmitter<NgtEvent<any>>);\n              result.eventCount += 1;\n            }\n            return result;\n          },\n          { handlers: {}, eventCount: 0 } as {\n            handlers: NgtEventHandlers;\n            eventCount: number;\n          }\n        );\n\n        // patch __ngt__ with events\n        applyProps(this.__ngt__ as unknown as NgtUnknownInstance, {\n          handlers: observedEvents.handlers,\n          eventCount: observedEvents.eventCount,\n        });\n\n        // add as an interaction if there are events observed\n        if (observedEvents.eventCount > 0) {\n          this.store.addInteraction(this.instance.value);\n        }\n\n        // append to parent\n        if (is.object3d(this.instance.value)) {\n          this.appendToParent();\n        }\n\n        // setup beforeRender\n        if (this.beforeRender.observed) {\n          this.store.registerBeforeRender({\n            obj: this.instance,\n            callback: (state) => {\n              this.beforeRender.emit({\n                state,\n                object: this.instance.value,\n              });\n            },\n            priority: this.get((s) => s.priority),\n          });\n        }\n      }\n\n      return () => {\n        this.destroy();\n      };\n    })\n  );\n\n  protected override destroy() {\n    if (this.instance.value) {\n      // remove beforeRender callback\n      this.store.unregisterBeforeRender(this.instance.value.uuid);\n\n      // remove interaction\n      if (this.__ngt__.eventCount > 0) {\n        this.store.removeInteraction(this.instance.value.uuid);\n      }\n\n      this.remove();\n    }\n    super.destroy();\n  }\n\n  private appendToParent(): void {\n    // appendToParent is late a frame due to appendTo\n    // only emit the object is ready after it's been added to the scene\n    const callback = () => {\n      const appendToRef = this.get((s) => s.appendTo);\n      if (appendToRef && appendToRef.value) {\n        appendToRef.value.add(this.instance.value);\n        this.appended.emit(this.instance.value);\n        return;\n      }\n\n      const appendMode = this.get((s) => s.appendMode);\n\n      if (appendMode === 'none') return;\n\n      if (appendMode === 'root') {\n        this.addToScene();\n        this.appended.emit(this.instance.value);\n        return;\n      }\n\n      if (appendMode === 'immediate') {\n        this.addToParent();\n        this.appended.emit(this.instance.value);\n      }\n    };\n\n    const gl = this.store.get((s) => s.gl);\n    if (gl.xr.enabled) {\n      gl.xr.getSession()?.requestAnimationFrame(callback);\n    } else {\n      requestAnimationFrame(callback);\n    }\n  }\n\n  private addToScene() {\n    const scene = this.store.get((s) => s.scene);\n    if (scene) {\n      scene.add(this.instance.value);\n    }\n  }\n\n  private addToParent() {\n    let parent = this.parent;\n    if (this.shouldUseParent(parent)) {\n      parent.value.add(this.instance.value);\n      return;\n    }\n\n    parent = this.parentHostRef?.();\n    if (this.shouldUseParent(parent)) {\n      parent.value.add(this.instance.value);\n      return;\n    }\n\n    this.addToScene();\n  }\n\n  private shouldUseParent(parent: Ref<NgtUnknownInstance<THREE.Object3D>>) {\n    return parent && parent.value && parent.value.uuid !== this.instance.value.uuid;\n  }\n\n  private remove() {\n    const { appendMode, appendTo } = this.get();\n    if (appendTo && appendTo.value) {\n      appendTo.value.remove(this.instance.value);\n    } else if (this.shouldUseParent(this.parent) && appendMode === 'immediate') {\n      this.parent.value.remove(this.instance.value);\n    } else {\n      const scene = this.store.get((s) => s.scene);\n      if (scene) {\n        scene.remove(this.instance.value);\n      }\n    }\n  }\n\n  private switch() {\n    const newObject3d = this.objectInitFn();\n    if (this.instance.value.children) {\n      this.instance.value.traverse((object) => {\n        if (object !== this.instance.value && object.parent === this.instance.value) {\n          object.parent = newObject3d;\n        }\n      });\n      this.instance.value.children = [];\n    }\n\n    if (this.__ngt__.eventCount > 0) {\n      this.store.removeInteraction(this.instance.value.uuid);\n    }\n\n    this.remove();\n    this.prepareInstance(newObject3d);\n  }\n\n  private eventNameToHandler(\n    controllerEvent: EventEmitter<NgtEvent<PointerEvent>> | EventEmitter<NgtEvent<WheelEvent>>\n  ) {\n    return (event: Parameters<Exclude<NgtEventHandlers[typeof supportedEvents[number]], undefined>>[0]) => {\n      // go back into Angular Zone so that state updates on these events trigger CD\n      this.zone.run(() => {\n        controllerEvent.emit(event as NgtEvent<any>);\n      });\n    };\n  }\n}\n\nexport const provideNgtObject = createNgtProvider(NgtObject, provideNgtInstance);\n","import { Directive, Input } from '@angular/core';\nimport * as THREE from 'three';\nimport { Ref } from '../ref';\nimport type { AnyConstructor, UnknownRecord } from '../types';\nimport { is } from '../utils/is';\nimport { NgtObject, NgtObjectPropsState } from './object';\n\nexport interface NgtMaterialGeometryState<TObject extends THREE.Object3D = THREE.Object3D>\n  extends NgtObjectPropsState<TObject> {\n  material: THREE.Material | THREE.Material[] | Ref<THREE.Material> | Ref<THREE.Material>[];\n  geometry: THREE.BufferGeometry | Ref<THREE.BufferGeometry>;\n  morphTargetInfluences?: number[];\n  morphTargetDictionary?: Record<string, number>;\n}\n\n@Directive()\nexport abstract class NgtMaterialGeometry<\n  TMaterialGeometryObject extends THREE.Object3D = THREE.Object3D\n> extends NgtObject<TMaterialGeometryObject, NgtMaterialGeometryState<TMaterialGeometryObject>> {\n  @Input() set material(material: THREE.Material | THREE.Material[] | Ref<THREE.Material> | Ref<THREE.Material>[]) {\n    this.set({ material });\n  }\n\n  @Input() set geometry(geometry: THREE.BufferGeometry | Ref<THREE.BufferGeometry>) {\n    this.set({ geometry });\n  }\n\n  @Input() set morphTargetInfluences(morphTargetInfluences: number[]) {\n    this.set({ morphTargetInfluences });\n  }\n\n  @Input() set morphTargetDictionary(morphTargetDictionary: Record<string, number>) {\n    this.set({ morphTargetDictionary });\n  }\n\n  abstract get objectType(): AnyConstructor<TMaterialGeometryObject>;\n\n  protected override objectInitFn(): TMaterialGeometryObject {\n    const state = this.get();\n\n    // this is the additional arguments to pass into the object constructor\n    // eg: InstancedMesh has \"count\" -> objectArgs = [count]\n    const objectArgs = this.argsKeys.reduce((args, argKey) => {\n      args.push(state[argKey]);\n      return args;\n    }, [] as unknown[]);\n\n    const object = new this.objectType(\n      is.ref(state.geometry) ? state.geometry.value : state.geometry,\n      is.arr(state.material)\n        ? state.material.map((m) => (is.ref(m) ? m.value : m))\n        : is.ref(state.material)\n        ? state.material.value\n        : state.material,\n      ...objectArgs\n    );\n\n    if (state.morphTargetDictionary && 'morphTargetDictionary' in object) {\n      (object as unknown as UnknownRecord)['morphTargetDictionary'] = state.morphTargetDictionary;\n    }\n\n    if (state.morphTargetInfluences && 'morphTargetInfluences' in object) {\n      (object as unknown as UnknownRecord)['morphTargetInfluences'] = state.morphTargetInfluences;\n    }\n\n    return object;\n  }\n\n  protected get argsKeys(): string[] {\n    return [];\n  }\n\n  protected override get optionFields(): Record<string, boolean> {\n    return {\n      ...super.optionFields,\n      material: true,\n      geometry: true,\n      morphTargetInfluences: true,\n      morphTargetDictionary: true,\n    };\n  }\n}\n","import * as THREE from 'three';\nimport type { NgtObjectMap } from '../types';\n\nexport function buildGraph(object: THREE.Object3D): NgtObjectMap {\n  const data: NgtObjectMap = { nodes: {}, materials: {} };\n  if (object) {\n    object.traverse((obj: any) => {\n      if (obj['name']) {\n        data.nodes[obj['name']] = obj;\n      }\n      if (obj['material'] && !data.materials[obj['material']['name']]) {\n        data.materials[obj['material']['name']] = obj['material'];\n      }\n    });\n  }\n  return data;\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { catchError, forkJoin, from, map, Observable, of, ReplaySubject, retry, share, tap } from 'rxjs';\nimport type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';\nimport * as THREE from 'three';\nimport type { BranchingReturn, LoaderExtensions, NgtLoaderResult, NgtObjectMap } from '../types';\nimport { buildGraph } from '../utils/build-graph';\nimport { is } from '../utils/is';\n\n@Injectable({ providedIn: 'root' })\nexport class NgtLoader implements OnDestroy {\n  readonly cached = new Map();\n\n  use<TReturnType, TUrl extends string | string[]>(\n    loaderConstructor: new () => NgtLoaderResult<TReturnType>,\n    input: TUrl,\n    extensions?: LoaderExtensions,\n    onProgress?: (event: ProgressEvent) => void\n  ): TUrl extends string[]\n    ? Observable<BranchingReturn<TReturnType, GLTF, GLTF & NgtObjectMap>[]>\n    : Observable<BranchingReturn<TReturnType, GLTF, GLTF & NgtObjectMap>> {\n    const keys = (is.arr(input) ? input : [input]) as string[];\n    const loader = new loaderConstructor();\n    if (extensions) {\n      extensions(loader);\n    }\n\n    const observables$ = keys.map((key) => {\n      if (!this.cached.has(key)) {\n        this.cached.set(\n          key,\n          from(loader.loadAsync(key, onProgress)).pipe(\n            tap((data) => {\n              if (data.scene) {\n                Object.assign(data, buildGraph(data.scene as THREE.Scene));\n              }\n            }),\n            retry({ count: 2 }),\n            catchError((err) => {\n              console.error(`Error loading ${key}: ${err.message}`);\n              return of(null);\n            }),\n            share({\n              connector: () => new ReplaySubject(),\n              resetOnComplete: true,\n              resetOnRefCountZero: true,\n              resetOnError: true,\n            })\n          )\n        );\n      }\n\n      return this.cached.get(key);\n    });\n\n    return forkJoin(observables$).pipe(map((results) => (is.arr(input) ? results : results[0])));\n  }\n\n  destroy() {\n    this.cached.clear();\n  }\n\n  ngOnDestroy() {\n    this.destroy();\n  }\n}\n","import type { NgtRenderState, NgtState } from '../types';\nimport { is } from './is';\n\ntype GlobalRenderCallback = (timeStamp: number) => void;\n\ninterface SubItem {\n  callback: GlobalRenderCallback;\n}\n\nconst globalEffects: Set<SubItem> = new Set();\nconst globalAfterEffects: Set<SubItem> = new Set();\nconst globalTailEffects: Set<SubItem> = new Set();\n\nfunction createSub(callback: GlobalRenderCallback, subs: Set<SubItem>): () => void {\n  const sub = { callback };\n  subs.add(sub);\n  return () => void subs.delete(sub);\n}\n\nfunction run(effects: Set<SubItem>, timestamp: number) {\n  effects.forEach(({ callback }) => callback(timestamp));\n}\n\n/**\n * Adds a global render callback which is called each frame.\n */\nexport function addCallback(callback: GlobalRenderCallback) {\n  return createSub(callback, globalEffects);\n}\n\n/**\n * Adds a global after-render callback which is called each frame.\n */\nexport function addAfterCallback(callback: GlobalRenderCallback) {\n  return createSub(callback, globalAfterEffects);\n}\n\n/**\n * Adds a global callback which is called when rendering stops.\n */\nexport function addTail(callback: GlobalRenderCallback) {\n  return createSub(callback, globalTailEffects);\n}\n\nexport function render(timestamp: number, state: () => NgtState, frame?: XRFrame): number {\n  const rootState = state();\n\n  let delta = rootState.clock.getDelta();\n\n  // in frameloop='never' mode, clock times are updated using provided timestamp\n  if (rootState.frameloop === 'never' && typeof timestamp === 'number') {\n    delta = timestamp - rootState.clock.elapsedTime;\n    rootState.clock.oldTime = rootState.clock.elapsedTime;\n    rootState.clock.elapsedTime = timestamp;\n  }\n\n  // call animation subscribers\n  for (const subscriber of rootState.internal.subscribers) {\n    const object = is.ref(subscriber.obj) ? subscriber.obj.value : subscriber.obj;\n    subscriber.callback({ ...rootState, delta, frame } as NgtRenderState, object);\n  }\n\n  // Render content\n  if (!rootState.internal.priority && rootState.gl.render) {\n    rootState.gl.render(rootState.scene, rootState.camera);\n  }\n\n  // Decrease frame count\n  rootState.internal.frames = Math.max(0, rootState.internal.frames - 1);\n  return rootState.frameloop === 'always' ? 1 : rootState.internal.frames;\n}\n\nexport function createLoop(rootStateMap: Map<Element, () => NgtState>) {\n  let running = false;\n  let repeat: number;\n  let frame: number;\n  let state: NgtState;\n\n  function loop(timestamp: number): void {\n    frame = requestAnimationFrame(loop);\n    running = true;\n    repeat = 0;\n\n    // Run effects\n    if (globalEffects.size) run(globalEffects, timestamp);\n\n    // Render all rootStateMap\n    rootStateMap.forEach((rootState) => {\n      state = rootState();\n      // If the frameloop is invalidated, do not run another frame\n      if (\n        state.internal.active &&\n        (state.frameloop === 'always' || state.internal.frames > 0) &&\n        !state.gl.xr?.isPresenting\n      ) {\n        repeat += render(timestamp, rootState);\n      }\n    });\n\n    // Run after-effects\n    if (globalAfterEffects.size) run(globalAfterEffects, timestamp);\n\n    // Stop the loop if nothing invalidates it\n    if (repeat === 0) {\n      // Tail call effects, they are called when rendering stops\n      if (globalTailEffects.size) run(globalTailEffects, timestamp);\n\n      // Flag end of operation\n      running = false;\n      return cancelAnimationFrame(frame);\n    }\n  }\n\n  function invalidate(state?: () => NgtState, frames = 1): void {\n    const stateToInvalidate = state?.();\n    if (!stateToInvalidate) return rootStateMap.forEach((rootState) => invalidate(rootState, frames));\n    if (\n      stateToInvalidate.gl.xr?.isPresenting ||\n      !stateToInvalidate.internal.active ||\n      stateToInvalidate.frameloop === 'never'\n    )\n      return;\n    // Increase frames, do not go higher than 60\n    stateToInvalidate.internal.frames = Math.min(60, stateToInvalidate.internal.frames + frames);\n    // If the render-loop isn't active, start it\n    if (!running) {\n      running = true;\n      requestAnimationFrame(loop);\n    }\n  }\n\n  function advance(timestamp: number, runGlobalEffects = true, state?: () => NgtState, frame?: XRFrame): void {\n    if (runGlobalEffects) run(globalEffects, timestamp);\n    if (!state) rootStateMap.forEach((rootState) => render(timestamp, rootState));\n    else render(timestamp, state, frame);\n    if (runGlobalEffects) run(globalAfterEffects, timestamp);\n  }\n\n  return {\n    loop,\n    /**\n     * Invalidates the view, requesting a frame to be rendered. Will globally invalidate unless passed a root's state.\n     */\n    invalidate,\n    /**\n     * Advances the frameloop and runs render effects, useful for when manually rendering via `frameloop=\"never\"`.\n     */\n    advance,\n  };\n}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  inject,\n  Input,\n  NgModule,\n  NgZone,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport * as THREE from 'three';\nimport { provideCameraRef, provideObjectRef, provideSceneRef } from './di/object';\nimport { NgtLoader } from './services/loader';\nimport { NgtResize } from './services/resize';\nimport { NgtComponentStore } from './stores/component-store';\nimport { NgtStore } from './stores/store';\nimport type {\n  BooleanInput,\n  NgtCameraOptions,\n  NgtDpr,\n  NgtGLOptions,\n  NgtSceneOptions,\n  NgtState,\n  NgtVector3,\n} from './types';\nimport { coerceBooleanProperty } from './utils/coercion';\nimport { createLoop } from './utils/loop';\nimport { make } from './utils/make';\n\nconst rootStateMap = new Map<Element, () => NgtState>();\nconst { invalidate, advance } = createLoop(rootStateMap);\n\n@Component({\n  selector: 'ngt-canvas',\n  standalone: true,\n  template: `\n    <canvas #rendererCanvas></canvas>\n    <ng-container *ngIf=\"projectContent\" [ngTemplateOutlet]=\"contentTemplate\"></ng-container>\n    <ng-template #contentTemplate>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n  imports: [NgIf, NgTemplateOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  styles: [\n    `\n      :host {\n        display: block;\n        position: relative;\n        width: 100%;\n        height: 100%;\n        overflow: hidden;\n      }\n\n      :host canvas {\n        display: block;\n      }\n    `,\n  ],\n  providers: [\n    NgtStore,\n    NgtResize,\n    provideObjectRef(NgtCanvas, (canvas) => canvas.sceneRef),\n    provideSceneRef(NgtCanvas, (canvas) => canvas.sceneRef),\n    provideCameraRef(NgtCanvas, (canvas) => canvas.cameraRef),\n  ],\n})\nexport class NgtCanvas extends NgtComponentStore implements OnInit {\n  @HostBinding('class.ngt-canvas') hostClass = true;\n\n  @Input() set linear(linear: BooleanInput) {\n    this.store.set({ linear: coerceBooleanProperty(linear) });\n  }\n\n  @Input() set legacy(legacy: BooleanInput) {\n    this.store.set({ legacy: coerceBooleanProperty(legacy) });\n  }\n\n  @Input() set flat(flat: BooleanInput) {\n    this.store.set({ flat: coerceBooleanProperty(flat) });\n  }\n\n  @Input() set frameloop(frameloop: 'always' | 'demand' | 'never') {\n    this.store.setFrameloop(frameloop);\n  }\n\n  @Input() set orthographic(orthographic: BooleanInput) {\n    this.store.set({\n      orthographic: coerceBooleanProperty(orthographic),\n    });\n  }\n\n  @Input() set dpr(dpr: NgtDpr) {\n    this.store.setDpr(dpr);\n  }\n\n  @Input() set raycaster(raycaster: Partial<THREE.Raycaster>) {\n    this.store.set({ raycasterOptions: raycaster });\n  }\n\n  @Input() set shadows(shadows: BooleanInput | Partial<THREE.WebGLShadowMap>) {\n    this.store.set({\n      shadows:\n        typeof shadows === 'object' ? (shadows as Partial<THREE.WebGLShadowMap>) : coerceBooleanProperty(shadows),\n    });\n  }\n\n  @Input() set camera(cameraOptions: NgtCameraOptions) {\n    this.store.set({ cameraOptions });\n  }\n  get cameraRef() {\n    return this.store.get((s) => s.cameraRef);\n  }\n\n  @Input() set lookAt(lookAt: NgtVector3) {\n    this.store.set({ lookAt: make(THREE.Vector3, lookAt) });\n  }\n\n  @Input() set scene(sceneOptions: NgtSceneOptions) {\n    this.store.set({ sceneOptions });\n  }\n  get sceneRef() {\n    return this.store.get((s) => s.sceneRef);\n  }\n\n  @Input() set gl(glOptions: NgtGLOptions) {\n    this.store.set({ glOptions });\n  }\n\n  private _initialLog = false;\n  get initialLog(): boolean {\n    return this._initialLog;\n  }\n  @Input() set initialLog(value: BooleanInput) {\n    this._initialLog = coerceBooleanProperty(value);\n  }\n\n  private _projectContent = false;\n  get projectContent(): boolean {\n    return this._projectContent;\n  }\n  @Input() set projectContent(value: BooleanInput) {\n    this._projectContent = coerceBooleanProperty(value);\n  }\n\n  @Output() created = new EventEmitter<NgtState>();\n  @Output() pointermissed = new EventEmitter<MouseEvent>();\n\n  @ViewChild('rendererCanvas', { static: true })\n  rendererCanvas!: ElementRef<HTMLCanvasElement>;\n\n  private zone = inject(NgZone);\n  private store = inject(NgtStore);\n  private loader = inject(NgtLoader);\n\n  ngOnInit() {\n    this.zone.runOutsideAngular(() => {\n      // if there is handler to pointermissed on the canvas\n      // update pointermissed in events store so that\n      // events util will handle it\n      if (this.pointermissed.observed) {\n        this.store.set({\n          pointerMissed: (event) => {\n            this.pointermissed.emit(event);\n          },\n        });\n      }\n      rootStateMap.set(this.rendererCanvas.nativeElement, () => this.store.get());\n\n      this.store.init(this.rendererCanvas.nativeElement, rootStateMap, invalidate, advance);\n      this.store.onReady(() => {\n        const canvasState = this.store.get();\n        this.created.emit(canvasState);\n        if (this.initialLog) {\n          console.group('[NgtCanvas] Initialized');\n          console.log(canvasState);\n          console.groupEnd();\n        }\n        this.store.startLoop(this.store.select());\n      });\n    });\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n    this.loader.destroy();\n  }\n}\n\n@NgModule({\n  imports: [NgtCanvas],\n  exports: [NgtCanvas],\n})\nexport class NgtCanvasModule {}\n","import { createRefInjection } from '../utils/inject';\nimport { provideInstanceRef } from './instance';\n\nexport const [injectCommonAttributeRef, provideCommonAttributeRef, NGT_COMMON_ATTRIBUTE_REF] = createRefInjection(\n  'NgtCommonAttribute ref',\n  provideInstanceRef\n);\n","import { createRefInjection } from '../utils/inject';\nimport { provideObjectRef } from './object';\n\nexport const [injectCommonAudioRef, provideCommonAudioRef, NGT_COMMON_AUDIO_REF] = createRefInjection(\n  'NgtCommonAudio ref',\n  provideObjectRef\n);\n","import { createRefInjection } from '../utils/inject';\nimport { provideObjectRef } from './object';\n\nexport const [injectCommonCameraRef, provideCommonCameraRef, NGT_COMMON_CAMERA_REF] = createRefInjection(\n  'NgtCommonCamera ref',\n  provideObjectRef\n);\n","import { createRefInjection } from '../utils/inject';\nimport { provideInstanceRef } from './instance';\n\nexport const [injectCommonCurveRef, provideCommonCurveRef, NGT_COMMON_CURVE_REF] = createRefInjection(\n  'NgtCommonCurve ref',\n  provideInstanceRef\n);\n","import { createRefInjection } from '../utils/inject';\nimport { provideInstanceRef } from './instance';\n\nexport const [injetCommonGeometryRef, provideCommonGeometryRef, NGT_COMMON_GEOMETRY_REF] = createRefInjection(\n  'NgtCommonGeometry ref',\n  provideInstanceRef\n);\n","import { createRefInjection } from '../utils/inject';\nimport { provideInstanceRef } from './instance';\nimport { provideObjectRef } from './object';\n\nexport const [injectCommonHelperRef, provideCommonHelperRef, NGT_COMMON_HELPER_REF] = createRefInjection(\n  'NgtCommonHelper ref',\n  provideObjectRef\n);\nexport const [injectCommonObjectHelperRef, provideCommonObjectHelperRef, NGT_COMMON_OBJECT_HELPER_REF] =\n  createRefInjection('NgtCommonObjectHelper ref', provideInstanceRef);\n","import { DOCUMENT } from '@angular/common';\nimport { inject } from '@angular/core';\nimport { createInjection } from '../utils/inject';\nimport { injectWindow } from './window';\n\nexport const [injectIsWebGLAvailable, , NGT_IS_WEBGL_AVAILABLE] = createInjection<boolean>('isWebGLAvailable', {\n  defaultValueOrFactory: () => {\n    const document = inject(DOCUMENT);\n    const window = injectWindow();\n\n    try {\n      const canvas = document.createElement('canvas');\n      return !!(window.WebGL2RenderingContext && canvas.getContext('webgl2'));\n    } catch (e) {\n      return false;\n    }\n  },\n});\n","import { createRefInjection } from '../utils/inject';\nimport { provideObjectRef } from './object';\n\nexport const [injectCommonLightRef, provideCommonLightRef, NGT_COMMON_LIGHT_REF] = createRefInjection(\n  'NgtCommonLight ref',\n  provideObjectRef\n);\n","import { createRefInjection } from '../utils/inject';\nimport { provideObjectRef } from './object';\n\nexport const [injectCommonLineRef, provideCommonLineRef, NGT_COMMON_LINE_REF] = createRefInjection(\n  'NgtCommonLine ref',\n  provideObjectRef\n);\n","import { createRefInjection } from '../utils/inject';\nimport { provideInstanceRef } from './instance';\n\nexport const [injectCommonMaterialRef, provideCommonMaterialRef, NGT_COMMON_MATERIAL_REF] = createRefInjection(\n  'NgtCommonMaterial ref',\n  provideInstanceRef\n);\n","import { createRefInjection } from '../utils/inject';\nimport { provideObjectRef } from './object';\n\nexport const [injectCommonMeshRef, provideCommonMeshRef, NGT_COMMON_MESH_REF] = createRefInjection(\n  'NgtCommonMesh ref',\n  provideObjectRef\n);\n","import { createRefInjection } from '../utils/inject';\n\nexport const [injectSkinnedMeshHostRef, provideSkinnedMeshHostRef, NGT_HOST_SKINNED_MESH_REF] = createRefInjection(\n  'NgtSkinnedMesh host ref',\n  true\n);\n\nexport const [injectSkeletonHostRef, provideSkeletonHostRef, NGT_HOST_SKELETON_REF] = createRefInjection(\n  'NgtSkeleton host ref',\n  true\n);\n\nexport const [injectBoneHostRef, provideBoneHostRef, NGT_HOST_BONE_REF] = createRefInjection('NgtBone host ref', true);\n","import { createRefInjection } from '../utils/inject';\nimport { provideObjectRef } from './object';\n\nexport const [injectCommonSpriteRef, provideCommonSpriteRef, NGT_COMMON_SPRITE_REF] = createRefInjection(\n  'NgtCommonSprite ref',\n  provideObjectRef\n);\n","import { createRefInjection } from '../utils/inject';\nimport { provideInstanceRef } from './instance';\n\nexport const [injectCommonTextureRef, provideCommonTextureRef, NGT_COMMON_TEXTURE_REF] = createRefInjection(\n  'NgtCommonTexture ref',\n  provideInstanceRef\n);\n","import { DOCUMENT } from '@angular/common';\nimport { Directive, Inject, NgModule, Optional, Self } from '@angular/core';\nimport { map, merge, takeUntil } from 'rxjs';\nimport { NgtObject } from '../abstracts/object';\n\n@Directive({\n  selector: '[ngtCursor]',\n  standalone: true,\n  exportAs: 'ngtCursor',\n})\nexport class NgtCursor {\n  constructor(\n    @Optional()\n    @Self()\n    object: NgtObject,\n    @Inject(DOCUMENT) document: Document\n  ) {\n    if (!object) return;\n    merge(object.pointerover.pipe(map(() => true)), object.pointerout.pipe(map(() => false)))\n      .pipe(takeUntil(object.destroy$))\n      .subscribe((hovered) => {\n        document.body.style.cursor = hovered ? 'pointer' : 'auto';\n      });\n  }\n}\n\n@NgModule({\n  imports: [NgtCursor],\n  exports: [NgtCursor],\n})\nexport class NgtCursorModule {}\n","import { merge, takeUntil } from 'rxjs';\nimport { NgtComponentStore, startWithUndefined } from '../stores/component-store';\nimport { is } from './is';\n\nexport function createPassThroughOutput<TObject extends NgtComponentStore>(wrapper: TObject, host: TObject) {\n  return (key: keyof TObject) => {\n    const wrapperEvent = wrapper[key];\n    const hostEvent = host[key];\n    if (is.eventEmitter(wrapperEvent) && is.eventEmitter(hostEvent) && wrapperEvent.observed) {\n      hostEvent.pipe(takeUntil(wrapper.destroy$)).subscribe(wrapperEvent.emit.bind(wrapperEvent));\n    }\n  };\n}\n\nexport function createPassThroughInput<TObject extends NgtComponentStore>(wrapper: TObject, host: TObject) {\n  return (key: keyof TObject, shouldStartWithUndefined = false, useMergeValue = false) => {\n    let wrapper$ = wrapper.select((s) => s[key]);\n    let host$ = host.select((s) => s[key]);\n\n    if (shouldStartWithUndefined) {\n      wrapper$ = wrapper$.pipe(startWithUndefined());\n      host$ = host$.pipe(startWithUndefined());\n    }\n\n    merge(wrapper$, host$)\n      .pipe(takeUntil(wrapper.destroy$))\n      .subscribe((mergedValue) => {\n        if (useMergeValue) {\n          host[key] = host[key] !== undefined && mergedValue === undefined ? host[key] : mergedValue;\n        } else {\n          host[key] = host.get((s) => s[(key as any) + 'Explicit']) ? host[key] : wrapper[key];\n        }\n      });\n  };\n}\n","import { Directive, Input, NgModule, Optional, Self } from '@angular/core';\nimport { NgtObject, NgtObjectProps } from '../abstracts/object';\nimport { createPassThroughInput, createPassThroughOutput } from '../utils/pass-through';\n\n@Directive({\n  selector: '[ngtObjectPassThrough]',\n  standalone: true,\n})\nexport class NgtObjectPassThrough {\n  @Input() set ngtObjectPassThrough(wrapper: unknown) {\n    NgtObjectPassThrough.assertWrapper(wrapper);\n\n    const passThroughInput = createPassThroughInput(wrapper, this.host);\n    const passThroughOutput = createPassThroughOutput(wrapper, this.host);\n\n    passThroughOutput('click');\n    passThroughOutput('contextmenu');\n    passThroughOutput('dblclick');\n    passThroughOutput('pointerup');\n    passThroughOutput('pointerdown');\n    passThroughOutput('pointerover');\n    passThroughOutput('pointerout');\n    passThroughOutput('pointerenter');\n    passThroughOutput('pointerleave');\n    passThroughOutput('pointermove');\n    passThroughOutput('pointermissed');\n    passThroughOutput('pointercancel');\n    passThroughOutput('wheel');\n    passThroughOutput('ready');\n\n    if (wrapper.shouldPassThroughRef) {\n      this.host.ref = wrapper.instance;\n    }\n\n    passThroughInput('attach');\n    passThroughInput('skipParent');\n    passThroughInput('noAttach');\n    passThroughInput('name');\n    passThroughInput('position');\n    passThroughInput('rotation');\n    passThroughInput('quaternion');\n    passThroughInput('scale');\n    passThroughInput('color');\n    passThroughInput('userData');\n    passThroughInput('castShadow', true);\n    passThroughInput('receiveShadow', true);\n    passThroughInput('visible');\n    passThroughInput('matrixAutoUpdate');\n    passThroughInput('dispose', true);\n    passThroughInput('raycast', true);\n    passThroughInput('appendMode');\n    passThroughInput('appendTo', true);\n  }\n\n  constructor(@Optional() @Self() private host: NgtObject) {\n    if (!host) return;\n  }\n\n  private static assertWrapper(wrapper: unknown): asserts wrapper is NgtObjectProps {\n    if (!(wrapper instanceof NgtObjectProps)) {\n      throw new Error(`[NgtObjectPassThrough] wrapper is not an NgtObject`);\n    }\n  }\n}\n\n@NgModule({\n  imports: [NgtObjectPassThrough],\n  exports: [NgtObjectPassThrough],\n})\nexport class NgtObjectPassThroughModule {}\n","import { NgForOf } from '@angular/common';\nimport { Directive, Input, NgModule } from '@angular/core';\n\n@Directive({\n  selector: '[ngFor][ngForRepeat]',\n  standalone: true,\n})\nexport class NgtRepeat extends NgForOf<number> {\n  @Input() set ngForRepeat(count: number) {\n    this.ngForOf = Number.isInteger(count) ? Array.from({ length: count }, (_, i) => i) : [];\n  }\n}\n\n@NgModule({\n  imports: [NgtRepeat],\n  exports: [NgtRepeat],\n})\nexport class NgtRepeatModule {}\n","import { NgModule, Pipe, PipeTransform } from '@angular/core';\nimport { is } from '../utils/is';\n\n@Pipe({ name: 'math', standalone: true })\nexport class NgtMathPipe implements PipeTransform {\n  transform(\n    value: number | number[],\n    keyOfMath: keyof Omit<Math, 'PI' | 'E' | 'LN2' | 'LOG2E' | 'LN10' | 'LOG10E' | 'SQRT1_2' | 'SQRT2' | 'random'>\n  ): ReturnType<Extract<Math[typeof keyOfMath], 'string'>> {\n    const params: number[] = is.arr(value) ? value : [value];\n    return (Math[keyOfMath] as unknown as (...args: number[]) => number)(...params) as ReturnType<\n      Extract<Math[typeof keyOfMath], 'string'>\n    >;\n  }\n}\n\n@NgModule({\n  imports: [NgtMathPipe],\n  exports: [NgtMathPipe],\n})\nexport class NgtMathPipeModule {}\n","import { NgModule, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'pi', standalone: true })\nexport class NgtPiPipe implements PipeTransform {\n  transform(value: number): number {\n    return value * Math.PI;\n  }\n}\n\n@NgModule({\n  imports: [NgtPiPipe],\n  exports: [NgtPiPipe],\n})\nexport class NgtPiPipeModule {}\n","import { NgModule, Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'radian', standalone: true })\nexport class NgtRadianPipe implements PipeTransform {\n  transform(degree: number): number {\n    return (degree * Math.PI) / 180;\n  }\n}\n\n@NgModule({\n  imports: [NgtRadianPipe],\n  exports: [NgtRadianPipe],\n})\nexport class NgtRadianPipeModule {}\n","import { NgModule, Pipe, PipeTransform } from '@angular/core';\nimport * as THREE from 'three';\n\n@Pipe({ name: 'side', standalone: true })\nexport class NgtSidePipe implements PipeTransform {\n  transform(side: 'front' | 'back' | 'double'): THREE.Side {\n    switch (side) {\n      case 'front':\n        return THREE.FrontSide;\n      case 'back':\n        return THREE.BackSide;\n      case 'double':\n        return THREE.DoubleSide;\n    }\n  }\n}\n\n@NgModule({\n  imports: [NgtSidePipe],\n  exports: [NgtSidePipe],\n})\nexport class NgtSidePipeModule {}\n","import { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ContentChild,\n  Directive,\n  inject,\n  Input,\n  NgModule,\n  TemplateRef,\n} from '@angular/core';\nimport { tap } from 'rxjs';\nimport * as THREE from 'three';\nimport { NgtInstance, NgtInstanceState } from './abstracts/instance';\nimport { provideCameraRef, provideObjectRef, provideSceneRef } from './di/object';\nimport { Ref } from './ref';\nimport { NgtResize } from './services/resize';\nimport { tapEffect } from './stores/component-store';\nimport { NgtStore } from './stores/store';\nimport type { NgtEventManager, NgtSize, NgtState } from './types';\nimport { updateCamera } from './utils/camera';\nimport { prepare } from './utils/instance';\nimport { makeDpr } from './utils/make';\n\nexport const privateKeys = ['events', 'invalidate', 'advance', 'size', 'viewport'] as const;\n\n@Directive({\n  selector: 'ng-template[ngt-portal-content]',\n  standalone: true,\n})\nexport class NgtPortalContent {\n  constructor(public templateRef: TemplateRef<{ portal: Ref<THREE.Scene> }>) {}\n\n  static ngTemplateContextGuard(dir: NgtPortalContent, ctx: any): ctx is { portal: Ref<THREE.Scene> } {\n    return true;\n  }\n}\n\nexport interface NgtPortalState extends NgtInstanceState<THREE.Scene> {\n  size: NgtSize;\n  events: Pick<NgtEventManager, 'enabled' | 'priority' | 'compute' | 'connected'>;\n\n  raycaster: THREE.Raycaster;\n  pointer: THREE.Vector2;\n\n  portalStore: NgtStore;\n}\n\n@Component({\n  selector: 'ngt-portal',\n  standalone: true,\n  template: `\n    <ng-container\n      *ngIf=\"content\"\n      [ngTemplateOutlet]=\"content.templateRef\"\n      [ngTemplateOutletContext]=\"{ portal: instance }\"\n    ></ng-container>\n    <ng-content></ng-content>\n  `,\n  imports: [NgIf, NgTemplateOutlet],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    NgtResize,\n    {\n      provide: NgtStore,\n      useFactory: (portal: NgtPortal) => {\n        return portal.get((s) => s.portalStore);\n      },\n      deps: [NgtPortal],\n    },\n    provideObjectRef(NgtPortal, (portal) => portal.get((s) => s.portalStore).get((s) => s.sceneRef)),\n    provideSceneRef(NgtPortal, (portal) => portal.get((s) => s.portalStore).get((s) => s.sceneRef)),\n    provideCameraRef(NgtPortal, (portal) => portal.get((s) => s.portalStore).get((s) => s.cameraRef)),\n  ],\n})\nexport class NgtPortal extends NgtInstance<THREE.Scene, NgtPortalState> {\n  @Input() set size(size: NgtSize) {\n    this.set({ size });\n  }\n\n  @Input() set events(events: Pick<NgtEventManager, 'enabled' | 'priority' | 'compute' | 'connected'>) {\n    this.set({ events });\n  }\n\n  @ContentChild(NgtPortalContent) content?: NgtPortalContent;\n\n  private resizeResult$ = inject(NgtResize);\n\n  constructor() {\n    super(true);\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n\n    this.zone.runOutsideAngular(() => {\n      // portal initialization does not need to wait for canvas ready\n      this.init();\n      this.store.onReady(() => {\n        // init portal store\n        this.initPortalStore();\n        this.subscribeToRoot();\n        this.setInitialPortalState();\n      });\n    });\n  }\n\n  private readonly init = this.effect<void>(\n    tap(() => {\n      const previousState = this.store.get();\n      this.set((state) => ({\n        raycaster: new THREE.Raycaster(),\n        pointer: new THREE.Vector2(),\n        size: state.size ?? previousState.size,\n        events: state.events ?? previousState.events,\n      }));\n    })\n  );\n\n  private readonly initPortalStore = this.effect<void>(\n    tap(() => {\n      const previousState = this.store.get();\n      const portalState = this.get();\n\n      const clientDimensions = {\n        clientWidth: portalState.size.width,\n        clientHeight: portalState.size.height,\n      };\n\n      const { regress: _, ...performanceOptions } = previousState.performance;\n\n      const portalStore = new NgtStore(\n        { nativeElement: clientDimensions as HTMLElement },\n        performanceOptions,\n        {\n          devicePixelRatio: makeDpr(previousState.viewport.dpr),\n        } as Window,\n        this.store,\n        this.resizeResult$,\n        this.zone\n      );\n\n      const sceneRef = this.instance;\n\n      let scene = this.instance.value;\n\n      if (!scene) {\n        scene = prepare(new THREE.Scene(), () => portalStore.get(), this.parentRef?.());\n        this.instance.set(scene);\n      }\n\n      portalStore.set({\n        ...previousState,\n        scene,\n        sceneRef,\n        raycaster: portalState.raycaster,\n        pointer: portalState.pointer,\n        mouse: portalState.pointer,\n        previousState: this.store.get(),\n        events: { ...previousState.events, ...portalState.events },\n        size: { ...previousState.size, ...portalState.size },\n      });\n\n      this.set({ portalStore });\n    })\n  );\n\n  private readonly subscribeToRoot = this.effect<void>(\n    tapEffect(() => {\n      const unsub = this.store.select().subscribe((root) => {\n        this.get((s) => s.portalStore).set((portal) => this.inject(root, portal));\n      });\n\n      return () => {\n        unsub.unsubscribe();\n      };\n    })\n  );\n\n  private readonly setInitialPortalState = this.effect<void>(\n    tap(() => {\n      this.get((s) => s.portalStore).set((portal) => this.inject(this.store.get(), portal));\n    })\n  );\n\n  private inject(root: NgtState, injected: NgtState): Partial<NgtState> {\n    const { size, events, portalStore } = this.get();\n\n    const {\n      scene,\n      raycaster,\n      pointer,\n      previousState,\n      events: portalStoreEvents,\n      size: portalStoreSize,\n      viewport: portalStoreViewport,\n      mouse,\n      ...rest\n    } = portalStore.get();\n\n    const intersect: Partial<NgtState> = { ...root };\n\n    Object.keys(root).forEach((key) => {\n      if (\n        privateKeys.includes(key as typeof privateKeys[number]) ||\n        root[key as keyof NgtState] !== injected[key as keyof NgtState]\n      ) {\n        delete intersect[key as keyof NgtState];\n      }\n    });\n\n    let viewport = undefined;\n    if (injected && size) {\n      const camera = injected.camera;\n      viewport = root.viewport.getCurrentViewport(camera, new THREE.Vector3(), size);\n      if (camera !== root.camera) {\n        updateCamera(root.cameraOptions, camera, size);\n      }\n    }\n\n    return {\n      ...intersect,\n      scene,\n      raycaster,\n      pointer,\n      mouse,\n      previousState,\n      events: {\n        ...root.events,\n        ...(injected?.events || portalStoreEvents),\n        ...events,\n      },\n      size: { ...root.size, ...portalStoreSize, ...size },\n      viewport: {\n        ...root.viewport,\n        ...(viewport || portalStoreViewport),\n      },\n      ...rest,\n    };\n  }\n}\n\n@NgModule({\n  imports: [NgtPortal, NgtPortalContent],\n  exports: [NgtPortal, NgtPortalContent],\n})\nexport class NgtPortalModule {}\n","import { Directive, Input } from '@angular/core';\nimport * as THREE from 'three';\nimport { NgtInstance, NgtInstanceState, provideNgtInstance } from '../abstracts/instance';\nimport { tapEffect } from '../stores/component-store';\nimport type { AnyConstructor } from '../types';\nimport { createNgtProvider } from '../utils/inject';\n\n@Directive()\nexport abstract class NgtCommonAttribute<\n  TAttribute extends THREE.BufferAttribute | THREE.InterleavedBufferAttribute = THREE.BufferAttribute\n> extends NgtInstance<TAttribute, NgtInstanceState<TAttribute>> {\n  abstract get attributeType(): AnyConstructor<TAttribute>;\n\n  @Input() set args(v: ConstructorParameters<AnyConstructor<TAttribute>>) {\n    this.instanceArgs = v;\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        const initSub = this.init(this.instanceArgs$);\n        this.postInit();\n        return () => {\n          if (initSub && initSub.unsubscribe) {\n            initSub.unsubscribe();\n          }\n        };\n      });\n    });\n  }\n\n  private readonly init = this.effect<unknown[]>(\n    tapEffect((instanceArgs) => {\n      this.prepareInstance(new this.attributeType(...instanceArgs));\n    })\n  );\n}\n\nexport const provideNgtCommonAttribute = createNgtProvider(NgtCommonAttribute, provideNgtInstance);\n","import { Directive, Input } from '@angular/core';\nimport * as THREE from 'three';\nimport { NgtObject, NgtObjectPropsState, NgtPreObjectInit, provideNgtObject } from '../abstracts/object';\nimport { tapEffect } from '../stores/component-store';\nimport type { AnyConstructor, BooleanInput, NumberInput } from '../types';\nimport { coerceBooleanProperty, coerceNumberProperty } from '../utils/coercion';\nimport { createNgtProvider } from '../utils/inject';\n\nexport interface NgtCommonAudioState<\n  TAudioNode extends AudioNode = GainNode,\n  TAudio extends THREE.Audio<TAudioNode> = THREE.Audio<TAudioNode>\n> extends NgtObjectPropsState<TAudio> {\n  listener: THREE.AudioListener;\n  buffer: null | AudioBuffer;\n  detune: number;\n  loop: boolean;\n  loopStart: number;\n  loopEnd: number;\n  offset: number;\n  playbackRate: number;\n  isPlaying: boolean;\n  hasPlaybackControl: boolean;\n  sourceType: string;\n  source: null | AudioBufferSourceNode;\n  filters: AudioNode[];\n  duration?: number;\n  autoplay?: boolean;\n}\n\n@Directive()\nexport abstract class NgtCommonAudio<\n  TAudioNode extends AudioNode = GainNode,\n  TAudio extends THREE.Audio<TAudioNode> = THREE.Audio<TAudioNode>\n> extends NgtObject<TAudio, NgtCommonAudioState<TAudioNode, TAudio>> {\n  abstract get audioType(): AnyConstructor<TAudio>;\n\n  @Input() set listener(listener: THREE.AudioListener) {\n    this.set({ listener });\n  }\n\n  @Input() set buffer(buffer: null | AudioBuffer) {\n    this.set({ buffer });\n  }\n\n  @Input() set detune(detune: NumberInput) {\n    this.set({ detune: coerceNumberProperty(detune) });\n  }\n\n  @Input() set loop(loop: BooleanInput) {\n    this.set({ loop: coerceBooleanProperty(loop) });\n  }\n\n  @Input() set loopStart(loopStart: NumberInput) {\n    this.set({ loopStart: coerceNumberProperty(loopStart) });\n  }\n\n  @Input() set loopEnd(loopEnd: NumberInput) {\n    this.set({ loopEnd: coerceNumberProperty(loopEnd) });\n  }\n\n  @Input() set offset(offset: NumberInput) {\n    this.set({ offset: coerceNumberProperty(offset) });\n  }\n\n  @Input() set playbackRate(playbackRate: NumberInput) {\n    this.set({ playbackRate: coerceNumberProperty(playbackRate) });\n  }\n\n  @Input() set isPlaying(isPlaying: BooleanInput) {\n    this.set({ isPlaying: coerceBooleanProperty(isPlaying) });\n  }\n\n  @Input() set hasPlaybackControl(hasPlaybackControl: BooleanInput) {\n    this.set({\n      hasPlaybackControl: coerceBooleanProperty(hasPlaybackControl),\n    });\n  }\n\n  @Input() set sourceType(sourceType: string) {\n    this.set({ sourceType });\n  }\n\n  @Input() set source(source: null | AudioBufferSourceNode) {\n    this.set({ source });\n  }\n\n  @Input() set filters(filters: AudioNode[]) {\n    this.set({ filters });\n  }\n\n  @Input() set duration(duration: NumberInput) {\n    this.set({ duration: coerceNumberProperty(duration) });\n  }\n\n  @Input() set autoplay(autoplay: BooleanInput) {\n    this.set({ autoplay: coerceBooleanProperty(autoplay) });\n  }\n\n  protected override objectInitFn(): TAudio {\n    const { listener } = this.get();\n\n    if (!listener) {\n      throw new Error(`[NgtCommonAudio] Cannot initialize ${this.audioType} without \"THREE.AudioListener\"`);\n    }\n\n    return new this.audioType(listener);\n  }\n\n  protected override preInit() {\n    this.set((state) => ({\n      buffer: state.buffer || null,\n      detune: state.detune || 0,\n      loop: state.loop || false,\n      loopStart: state.loopStart || 0,\n      loopEnd: state.loopEnd || 0,\n      offset: state.offset || 0,\n      duration: state.duration || undefined,\n      playbackRate: state.playbackRate || 1,\n      isPlaying: state.isPlaying || false,\n      hasPlaybackControl: state.hasPlaybackControl || true,\n      sourceType: state.sourceType || 'empty',\n      source: state.source || null,\n      filters: state.filters || [],\n    }));\n  }\n\n  protected override get preObjectInit(): NgtPreObjectInit {\n    return (initFn) => {\n      this.effect<THREE.AudioListener>(\n        tapEffect(() => {\n          initFn();\n        })\n      )(this.select((s) => s.listener));\n    };\n  }\n\n  protected override get optionFields(): Record<string, boolean> {\n    return {\n      ...super.optionFields,\n      autoplay: true,\n      buffer: false,\n      detune: false,\n      loop: false,\n      loopStart: false,\n      loopEnd: false,\n      offset: false,\n      duration: true,\n      playbackRate: false,\n      isPlaying: false,\n      hasPlaybackControl: false,\n      sourceType: false,\n      source: false,\n      filters: false,\n    };\n  }\n}\n\nexport const provideNgtCommonAudio = createNgtProvider(NgtCommonAudio, provideNgtObject);\n","import { Directive, Input } from '@angular/core';\nimport * as THREE from 'three';\nimport { NgtObject, provideNgtObject } from '../abstracts/object';\nimport type { AnyConstructor } from '../types';\nimport { createNgtProvider } from '../utils/inject';\n\n@Directive()\nexport abstract class NgtCommonCamera<TCamera extends THREE.Camera = THREE.Camera> extends NgtObject<TCamera> {\n  abstract get cameraType(): AnyConstructor<TCamera>;\n\n  @Input() set args(v: ConstructorParameters<AnyConstructor<TCamera>>) {\n    this.instanceArgs = v;\n  }\n\n  protected override objectInitFn(): TCamera {\n    const instanceArgs = this.get((s) => s.instanceArgs);\n    return new this.cameraType(...instanceArgs);\n  }\n}\n\nexport const provideNgtCommonCamera = createNgtProvider(NgtCommonCamera, provideNgtObject);\n","import { Directive, Input } from '@angular/core';\nimport * as THREE from 'three';\nimport { NgtInstance, NgtInstanceState, provideNgtInstance } from '../abstracts/instance';\nimport { tapEffect } from '../stores/component-store';\nimport type { AnyConstructor, NumberInput } from '../types';\nimport { coerceNumberProperty } from '../utils/coercion';\nimport { createNgtProvider } from '../utils/inject';\n\nexport interface NgtCommonCurveState<TCurve extends THREE.Curve<THREE.Vector> = THREE.Curve<THREE.Vector>>\n  extends NgtInstanceState<TCurve> {\n  arcLengthDivisions?: number;\n}\n\n@Directive()\nexport abstract class NgtCommonCurve<\n  TCurve extends THREE.Curve<THREE.Vector> = THREE.Curve<THREE.Vector>\n> extends NgtInstance<TCurve, NgtCommonCurveState<TCurve>> {\n  abstract get curveType(): AnyConstructor<TCurve>;\n\n  @Input() set args(v: ConstructorParameters<AnyConstructor<TCurve>>) {\n    this.instanceArgs = v;\n  }\n\n  @Input() set arcLengthDivisions(arcLengthDivisions: NumberInput) {\n    this.set({\n      arcLengthDivisions: coerceNumberProperty(arcLengthDivisions),\n    });\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.init(this.instanceArgs$);\n        this.postInit();\n      });\n    });\n  }\n\n  protected override postPrepare(curve: TCurve) {\n    const arcLengthDivisions = this.get((s) => s.arcLengthDivisions);\n    if (arcLengthDivisions != undefined) {\n      curve.arcLengthDivisions = arcLengthDivisions;\n    }\n  }\n\n  private readonly init = this.effect<unknown[]>(\n    tapEffect((instanceArgs) => {\n      this.prepareInstance(new this.curveType(...instanceArgs));\n    })\n  );\n}\n\nexport const provideNgtCommonCurve = createNgtProvider(NgtCommonCurve, provideNgtInstance);\n","import { Directive, Input } from '@angular/core';\nimport * as THREE from 'three';\nimport type { NgtInstanceState } from '../abstracts/instance';\nimport { NgtInstance, provideNgtInstance } from '../abstracts/instance';\nimport { injectObjectHostRef, injectObjectRef } from '../di/object';\nimport { tapEffect } from '../stores/component-store';\nimport type { AnyConstructor } from '../types';\nimport { createNgtProvider } from '../utils/inject';\n\n@Directive()\nexport abstract class NgtCommonGeometry<\n  TGeometry extends THREE.BufferGeometry = THREE.BufferGeometry\n> extends NgtInstance<TGeometry, NgtInstanceState<TGeometry>> {\n  abstract get geometryType(): AnyConstructor<TGeometry>;\n\n  @Input() set args(v: ConstructorParameters<AnyConstructor<TGeometry>>) {\n    this.instanceArgs = v;\n  }\n\n  protected override parentRef = injectObjectRef({ optional: true, skipSelf: true });\n  protected override parentHostRef = injectObjectHostRef({ optional: true, skipSelf: true });\n\n  protected override preInit() {\n    this.set((state) => ({\n      attach: state.attach.length ? state.attach : ['geometry'],\n    }));\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.init(this.ctorParams$);\n        this.postInit();\n      });\n    });\n  }\n\n  private readonly init = this.effect(\n    tapEffect(() => {\n      const instanceArgs = this.get((s) => s.instanceArgs);\n      const geometryArgs = this.adjustCtorParams(instanceArgs);\n      const geometry = this.prepareInstance(new this.geometryType(...geometryArgs));\n\n      return () => {\n        geometry.dispose();\n      };\n    })\n  );\n}\n\nexport const provideNgtCommonGeometry = createNgtProvider(NgtCommonGeometry, provideNgtInstance);\n","import { Directive, Input } from '@angular/core';\nimport * as THREE from 'three';\nimport { NgtObject, provideNgtObject } from '../abstracts/object';\nimport type { AnyConstructor } from '../types';\nimport { createNgtProvider } from '../utils/inject';\n\n@Directive()\nexport abstract class NgtCommonHelper<THelper extends THREE.Object3D = THREE.Object3D> extends NgtObject<THelper> {\n  abstract get helperType(): AnyConstructor<THelper>;\n\n  @Input() set args(v: ConstructorParameters<AnyConstructor<THelper>>) {\n    this.instanceArgs = v;\n  }\n\n  protected override objectInitFn(): THelper {\n    const instanceArgs = this.get((s) => s.instanceArgs);\n    return new this.helperType(...instanceArgs);\n  }\n}\n\nexport const provideNgtCommonHelper = createNgtProvider(NgtCommonHelper, provideNgtObject);\n","import { Directive, Input } from '@angular/core';\nimport * as THREE from 'three';\nimport type { NgtObjectPropsState, NgtPreObjectInit } from '../abstracts/object';\nimport { NgtObject, provideNgtObject } from '../abstracts/object';\nimport type { AnyConstructor, NumberInput } from '../types';\nimport { coerceNumberProperty } from '../utils/coercion';\nimport { createNgtProvider } from '../utils/inject';\n\nexport interface NgtCommonLightState<TLight extends THREE.Light = THREE.Light> extends NgtObjectPropsState<TLight> {\n  intensity: number;\n}\n\n@Directive()\nexport abstract class NgtCommonLight<TLight extends THREE.Light = THREE.Light> extends NgtObject<\n  TLight,\n  NgtCommonLightState<TLight>\n> {\n  abstract get lightType(): AnyConstructor<TLight>;\n\n  @Input() set args(v: ConstructorParameters<AnyConstructor<TLight>>) {\n    this.instanceArgs = v;\n  }\n\n  @Input() set intensity(intensity: NumberInput) {\n    this.set({ intensity: coerceNumberProperty(intensity) });\n  }\n\n  protected override objectInitFn(): TLight {\n    const { intensity, instanceArgs } = this.get();\n\n    const light = new this.lightType(...instanceArgs);\n\n    if (intensity != undefined) {\n      light.intensity = intensity;\n    }\n\n    return light;\n  }\n\n  protected override get preObjectInit(): NgtPreObjectInit {\n    return (initFn) => {\n      this.set((state) => ({ intensity: state.intensity ?? 1 }));\n      initFn();\n    };\n  }\n\n  protected override get optionFields(): Record<string, boolean> {\n    return { ...super.optionFields, intensity: false };\n  }\n}\n\nexport const provideNgtCommonLight = createNgtProvider(NgtCommonLight, provideNgtObject);\n","import { Directive } from '@angular/core';\nimport * as THREE from 'three';\nimport { NgtMaterialGeometry } from '../abstracts/material-geometry';\nimport { provideNgtObject } from '../abstracts/object';\nimport { AnyConstructor } from '../types';\nimport { createNgtProvider } from '../utils/inject';\n\n@Directive()\nexport abstract class NgtCommonLine<TLine extends THREE.Line = THREE.Line> extends NgtMaterialGeometry<TLine> {\n  abstract get lineType(): AnyConstructor<TLine>;\n\n  override get objectType(): AnyConstructor<TLine> {\n    return this.lineType;\n  }\n}\n\nexport const provideNgtCommonLine = createNgtProvider(NgtCommonLine, provideNgtObject);\n","import { Directive, Input } from '@angular/core';\nimport * as THREE from 'three';\nimport { Plane } from 'three/src/math/Plane';\nimport type { NgtInstanceState } from '../abstracts/instance';\nimport { NgtInstance, provideNgtInstance } from '../abstracts/instance';\nimport { injectObjectHostRef, injectObjectRef } from '../di/object';\nimport { tapEffect } from '../stores/component-store';\nimport type { AnyConstructor, BooleanInput, NumberInput } from '../types';\nimport { coerceBooleanProperty, coerceNumberProperty } from '../utils/coercion';\nimport { createNgtProvider } from '../utils/inject';\n\nexport interface NgtCommonMaterialState<TMaterial extends THREE.Material = THREE.Material>\n  extends NgtInstanceState<TMaterial> {\n  alphaTest?: number;\n  alphaToCoverage?: boolean;\n  blendDst?: THREE.BlendingDstFactor;\n  blendDstAlpha?: number;\n  blendEquation?: THREE.BlendingEquation;\n  blendEquationAlpha?: number;\n  blending?: THREE.Blending;\n  blendSrc?: THREE.BlendingSrcFactor | THREE.BlendingDstFactor;\n  blendSrcAlpha?: number;\n  clipIntersection?: boolean;\n  clippingPlanes?: Plane[];\n  clipShadows?: boolean;\n  colorWrite?: boolean;\n  defines?: any;\n  depthFunc?: THREE.DepthModes;\n  depthTest?: boolean;\n  depthWrite?: boolean;\n  name?: string;\n  opacity?: number;\n  polygonOffset?: boolean;\n  polygonOffsetFactor?: number;\n  polygonOffsetUnits?: number;\n  precision?: 'highp' | 'mediump' | 'lowp' | null;\n  premultipliedAlpha?: boolean;\n  dithering?: boolean;\n  side?: THREE.Side;\n  shadowSide?: THREE.Side;\n  toneMapped?: boolean;\n  transparent?: boolean;\n  vertexColors?: boolean;\n  visible?: boolean;\n  format?: THREE.PixelFormat;\n  stencilWrite?: boolean;\n  stencilFunc?: THREE.StencilFunc;\n  stencilRef?: number;\n  stencilWriteMask?: number;\n  stencilFuncMask?: number;\n  stencilFail?: THREE.StencilOp;\n  stencilZFail?: THREE.StencilOp;\n  stencilZPass?: THREE.StencilOp;\n  userData?: any;\n}\n\n@Directive()\nexport abstract class NgtCommonMaterial<TMaterial extends THREE.Material = THREE.Material> extends NgtInstance<\n  TMaterial,\n  NgtCommonMaterialState<TMaterial>\n> {\n  @Input() set alphaTest(alphaTest: NumberInput) {\n    this.set({ alphaTest: coerceNumberProperty(alphaTest) });\n  }\n\n  @Input() set alphaToCoverage(alphaToCoverage: BooleanInput) {\n    this.set({ alphaToCoverage: coerceBooleanProperty(alphaToCoverage) });\n  }\n\n  @Input() set blendDst(blendDst: THREE.BlendingDstFactor) {\n    this.set({ blendDst });\n  }\n\n  @Input() set blendDstAlpha(blendDstAlpha: NumberInput) {\n    this.set({ blendDstAlpha: coerceNumberProperty(blendDstAlpha) });\n  }\n\n  @Input() set blendEquation(blendEquation: THREE.BlendingEquation) {\n    this.set({ blendEquation });\n  }\n\n  @Input() set blendEquationAlpha(blendEquationAlpha: NumberInput) {\n    this.set({\n      blendEquationAlpha: coerceNumberProperty(blendEquationAlpha),\n    });\n  }\n\n  @Input() set blending(blending: THREE.Blending) {\n    this.set({ blending });\n  }\n\n  @Input() set blendSrc(blendSrc: THREE.BlendingSrcFactor | THREE.BlendingDstFactor) {\n    this.set({ blendSrc });\n  }\n\n  @Input() set blendSrcAlpha(blendSrcAlpha: NumberInput) {\n    this.set({ blendSrcAlpha: coerceNumberProperty(blendSrcAlpha) });\n  }\n\n  @Input() set clipIntersection(clipIntersection: BooleanInput) {\n    this.set({ clipIntersection: coerceBooleanProperty(clipIntersection) });\n  }\n\n  @Input() set clippingPlanes(clippingPlanes: Plane[]) {\n    this.set({ clippingPlanes });\n  }\n\n  @Input() set clipShadows(clipShadows: BooleanInput) {\n    this.set({ clipShadows: coerceBooleanProperty(clipShadows) });\n  }\n\n  @Input() set colorWrite(colorWrite: BooleanInput) {\n    this.set({ colorWrite: coerceBooleanProperty(colorWrite) });\n  }\n\n  @Input() set defines(defines: any) {\n    this.set({ defines });\n  }\n\n  @Input() set depthFunc(depthFunc: THREE.DepthModes) {\n    this.set({ depthFunc });\n  }\n\n  @Input() set depthTest(depthTest: BooleanInput) {\n    this.set({ depthTest: coerceBooleanProperty(depthTest) });\n  }\n\n  @Input() set depthWrite(depthWrite: BooleanInput) {\n    this.set({ depthWrite: coerceBooleanProperty(depthWrite) });\n  }\n\n  @Input() set name(name: string) {\n    this.set({ name });\n  }\n\n  @Input() set opacity(opacity: NumberInput) {\n    this.set({ opacity: coerceNumberProperty(opacity) });\n  }\n\n  @Input() set polygonOffset(polygonOffset: BooleanInput) {\n    this.set({ polygonOffset: coerceBooleanProperty(polygonOffset) });\n  }\n\n  @Input() set polygonOffsetFactor(polygonOffsetFactor: NumberInput) {\n    this.set({\n      polygonOffsetFactor: coerceNumberProperty(polygonOffsetFactor),\n    });\n  }\n\n  @Input() set polygonOffsetUnits(polygonOffsetUnits: NumberInput) {\n    this.set({\n      polygonOffsetUnits: coerceNumberProperty(polygonOffsetUnits),\n    });\n  }\n\n  @Input() set precision(precision: 'highp' | 'mediump' | 'lowp' | null) {\n    this.set({ precision });\n  }\n\n  @Input() set premultipliedAlpha(premultipliedAlpha: BooleanInput) {\n    this.set({\n      premultipliedAlpha: coerceBooleanProperty(premultipliedAlpha),\n    });\n  }\n\n  @Input() set dithering(dithering: BooleanInput) {\n    this.set({ dithering: coerceBooleanProperty(dithering) });\n  }\n\n  @Input() set side(side: THREE.Side) {\n    this.set({ side });\n  }\n\n  @Input() set shadowSide(shadowSide: THREE.Side) {\n    this.set({ shadowSide });\n  }\n\n  @Input() set toneMapped(toneMapped: BooleanInput) {\n    this.set({ toneMapped: coerceBooleanProperty(toneMapped) });\n  }\n\n  @Input() set transparent(transparent: BooleanInput) {\n    this.set({ transparent: coerceBooleanProperty(transparent) });\n  }\n\n  @Input() set vertexColors(vertexColors: BooleanInput) {\n    this.set({ vertexColors: coerceBooleanProperty(vertexColors) });\n  }\n\n  @Input() set visible(visible: BooleanInput) {\n    this.set({ visible: coerceBooleanProperty(visible) });\n  }\n\n  @Input() set format(format: THREE.PixelFormat) {\n    this.set({ format });\n  }\n\n  @Input() set stencilWrite(stencilWrite: BooleanInput) {\n    this.set({ stencilWrite: coerceBooleanProperty(stencilWrite) });\n  }\n\n  @Input() set stencilFunc(stencilFunc: THREE.StencilFunc) {\n    this.set({ stencilFunc });\n  }\n\n  @Input() set stencilRef(stencilRef: NumberInput) {\n    this.set({ stencilRef: coerceNumberProperty(stencilRef) });\n  }\n\n  @Input() set stencilWriteMask(stencilWriteMask: NumberInput) {\n    this.set({ stencilWriteMask: coerceNumberProperty(stencilWriteMask) });\n  }\n\n  @Input() set stencilFuncMask(stencilFuncMask: NumberInput) {\n    this.set({ stencilFuncMask: coerceNumberProperty(stencilFuncMask) });\n  }\n\n  @Input() set stencilFail(stencilFail: THREE.StencilOp) {\n    this.set({ stencilFail });\n  }\n\n  @Input() set stencilZFail(stencilZFail: THREE.StencilOp) {\n    this.set({ stencilZFail });\n  }\n\n  @Input() set stencilZPass(stencilZPass: THREE.StencilOp) {\n    this.set({ stencilZPass });\n  }\n\n  @Input() set userData(userData: any) {\n    this.set({ userData });\n  }\n\n  abstract get materialType(): AnyConstructor<TMaterial>;\n\n  protected override parentRef = injectObjectRef({ optional: true, skipSelf: true });\n  protected override parentHostRef = injectObjectHostRef({ optional: true, skipSelf: true });\n\n  protected override preInit() {\n    this.set((state) => ({\n      attach: state.attach.length ? state.attach : ['material'],\n    }));\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.init(this.ctorParams$);\n        this.postInit();\n      });\n    });\n  }\n\n  private readonly init = this.effect(\n    tapEffect(() => {\n      const material = this.prepareInstance(new this.materialType());\n      return () => {\n        material.dispose();\n      };\n    })\n  );\n\n  protected override get optionFields(): Record<string, boolean> {\n    return {\n      ...super.optionFields,\n      alphaTest: true,\n      alphaToCoverage: true,\n      blendDst: true,\n      blendDstAlpha: true,\n      blendEquation: true,\n      blendEquationAlpha: true,\n      blending: true,\n      blendSrc: true,\n      blendSrcAlpha: true,\n      clipIntersection: true,\n      clippingPlanes: true,\n      clipShadows: true,\n      colorWrite: true,\n      defines: true,\n      depthFunc: true,\n      depthTest: true,\n      depthWrite: true,\n      fog: true,\n      name: true,\n      opacity: true,\n      polygonOffset: true,\n      polygonOffsetFactor: true,\n      polygonOffsetUnits: true,\n      precision: true,\n      premultipliedAlpha: true,\n      dithering: true,\n      side: true,\n      shadowSide: true,\n      toneMapped: true,\n      transparent: true,\n      vertexColors: true,\n      visible: true,\n      format: true,\n      stencilWrite: true,\n      stencilFunc: true,\n      stencilRef: true,\n      stencilWriteMask: true,\n      stencilFuncMask: true,\n      stencilFail: true,\n      stencilZFail: true,\n      stencilZPass: true,\n      userData: true,\n    };\n  }\n}\n\nexport const provideNgtCommonMaterial = createNgtProvider(NgtCommonMaterial, provideNgtInstance);\n","import { Directive } from '@angular/core';\nimport * as THREE from 'three';\nimport { NgtMaterialGeometry } from '../abstracts/material-geometry';\nimport { provideNgtObject } from '../abstracts/object';\nimport { AnyConstructor } from '../types';\nimport { createNgtProvider } from '../utils/inject';\n\n@Directive()\nexport abstract class NgtCommonMesh<TMesh extends THREE.Mesh = THREE.Mesh> extends NgtMaterialGeometry<TMesh> {\n  abstract get meshType(): AnyConstructor<TMesh>;\n\n  override get objectType(): AnyConstructor<TMesh> {\n    return this.meshType;\n  }\n}\n\nexport const provideNgtCommonMesh = createNgtProvider(NgtCommonMesh, provideNgtObject);\n","import { Directive, Input } from '@angular/core';\nimport * as THREE from 'three';\nimport { NgtInstance, NgtInstanceState, provideNgtInstance } from '../abstracts/instance';\nimport { injectObjectHostRef, injectObjectRef } from '../di/object';\nimport { tapEffect } from '../stores/component-store';\nimport { AnyConstructor, BooleanInput } from '../types';\nimport { coerceBooleanProperty } from '../utils/coercion';\nimport { createNgtProvider } from '../utils/inject';\n\n@Directive()\nexport abstract class NgtCommonObjectHelper<TObjectHelper extends THREE.Object3D> extends NgtInstance<\n  TObjectHelper,\n  NgtInstanceState<TObjectHelper>\n> {\n  abstract get objectHelperType(): AnyConstructor<TObjectHelper>;\n\n  @Input() set helperVisible(helperVisible: BooleanInput) {\n    this.set({ visible: coerceBooleanProperty(helperVisible) });\n  }\n\n  protected override parentRef = injectObjectRef({ optional: true });\n  protected override parentHostRef = injectObjectHostRef({ optional: true });\n\n  protected override preInit() {\n    super.preInit();\n    this.set((state) => ({\n      visible: state['visible'] ?? true,\n    }));\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.init(this.instanceArgs$);\n        this.postInit();\n      });\n    });\n  }\n\n  private readonly init = this.effect<unknown[]>(\n    tapEffect((instanceArgs) => {\n      if (!this.parent || !this.parent.value) {\n        console.info('Parent is not an object3d');\n        return;\n      }\n\n      const objectHelper = this.prepareInstance(new this.objectHelperType(this.parent.value, ...instanceArgs));\n\n      const scene = this.store.get((s) => s.scene);\n      if (objectHelper && scene) {\n        scene.add(objectHelper);\n        const unregister = this.store.registerBeforeRender({\n          callback: () => {\n            if (objectHelper) {\n              (\n                objectHelper as unknown as TObjectHelper & {\n                  update: () => void;\n                }\n              ).update();\n            }\n          },\n          obj: this.instance,\n        });\n        return () => {\n          if (objectHelper && scene) {\n            scene.remove(objectHelper);\n            unregister();\n          }\n        };\n      }\n      return;\n    })\n  );\n\n  protected override get optionFields(): Record<string, boolean> {\n    return { ...super.optionFields, visible: false };\n  }\n}\n\nexport const provideNgtCommonObjectHelper = createNgtProvider(NgtCommonObjectHelper, provideNgtInstance);\n","import { Directive, Input } from '@angular/core';\nimport * as THREE from 'three';\nimport type { NgtObjectPropsState } from '../abstracts/object';\nimport { NgtObject, provideNgtObject } from '../abstracts/object';\nimport type { AnyConstructor } from '../types';\nimport { createNgtProvider } from '../utils/inject';\n\nexport interface NgtCommonSpriteState<TSprite extends THREE.Sprite = THREE.Sprite>\n  extends NgtObjectPropsState<TSprite> {\n  material?: THREE.SpriteMaterial;\n}\n\n@Directive()\nexport abstract class NgtCommonSprite<TSprite extends THREE.Sprite = THREE.Sprite> extends NgtObject<\n  TSprite,\n  NgtCommonSpriteState<TSprite>\n> {\n  @Input() set args(v: ConstructorParameters<AnyConstructor<TSprite>>) {\n    this.instanceArgs = v;\n  }\n\n  @Input() set material(material: THREE.SpriteMaterial) {\n    this.set({ material });\n  }\n\n  abstract get spriteType(): AnyConstructor<TSprite>;\n\n  protected override objectInitFn(): TSprite {\n    const { material } = this.get();\n    return new this.spriteType(material);\n  }\n\n  protected override get optionFields(): Record<string, boolean> {\n    return { ...super.optionFields, material: true };\n  }\n}\n\nexport const provideNgtCommonSprite = createNgtProvider(NgtCommonSprite, provideNgtObject);\n","import { Directive, Input } from '@angular/core';\nimport * as THREE from 'three';\nimport { NgtInstance, NgtInstanceState, provideNgtInstance } from '../abstracts/instance';\nimport { tapEffect } from '../stores/component-store';\nimport type { AnyConstructor, NumberInput } from '../types';\nimport { checkNeedsUpdate } from '../utils/check-needs-update';\nimport { coerceNumberProperty } from '../utils/coercion';\nimport { createNgtProvider } from '../utils/inject';\n\n@Directive()\nexport abstract class NgtCommonTexture<TTexture extends THREE.Texture = THREE.Texture> extends NgtInstance<\n  TTexture,\n  NgtInstanceState<TTexture>\n> {\n  abstract get textureType(): AnyConstructor<TTexture>;\n\n  @Input() set args(v: ConstructorParameters<AnyConstructor<TTexture>>) {\n    this.instanceArgs = v;\n  }\n\n  @Input() set image(image: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement) {\n    this.set({ image });\n  }\n\n  @Input() set mapping(mapping: THREE.Mapping) {\n    this.set({ mapping });\n  }\n\n  @Input() set wrapS(wrapS: THREE.Wrapping) {\n    this.set({ wrapS });\n  }\n\n  @Input() set wrapT(wrapT: THREE.Wrapping) {\n    this.set({ wrapT });\n  }\n\n  @Input() set magFilter(magFilter: THREE.TextureFilter) {\n    this.set({ magFilter });\n  }\n\n  @Input() set minFilter(minFilter: THREE.TextureFilter) {\n    this.set({ minFilter });\n  }\n\n  @Input() set format(format: THREE.PixelFormat | THREE.CompressedPixelFormat) {\n    this.set({ format });\n  }\n\n  @Input() set type(type: THREE.TextureDataType) {\n    this.set({ type });\n  }\n\n  @Input() set anisotropy(anisotropy: NumberInput) {\n    this.set({ anisotropy: coerceNumberProperty(anisotropy) });\n  }\n\n  @Input() set encoding(encoding: THREE.TextureEncoding) {\n    this.set({ encoding });\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.zone.runOutsideAngular(() => {\n      this.store.onReady(() => {\n        this.init(this.ctorParams$);\n        this.postInit();\n      });\n    });\n  }\n\n  private readonly init = this.effect(\n    tapEffect(() => {\n      const gl = this.store.get((s) => s.gl);\n      const instanceArgs = this.get((s) => s.instanceArgs);\n      const textureInstanceArgs = this.adjustCtorParams(instanceArgs);\n      const texture = this.prepareInstance(new this.textureType(...textureInstanceArgs));\n\n      texture.encoding = gl.outputEncoding;\n      checkNeedsUpdate(texture);\n\n      return () => {\n        texture.dispose();\n      };\n    })\n  );\n\n  protected override get optionFields(): Record<string, boolean> {\n    return {\n      ...super.optionFields,\n      image: true,\n      mapping: true,\n      wrapS: true,\n      wrapT: true,\n      magFilter: true,\n      minFilter: true,\n      format: true,\n      type: true,\n      anisotropy: true,\n      encoding: true,\n    };\n  }\n}\n\nexport const provideNgtCommonTexture = createNgtProvider(NgtCommonTexture, provideNgtInstance);\n","import * as THREE from 'three';\n\nexport function shaderMaterial(\n  uniforms: {\n    [name: string]:\n      | THREE.CubeTexture\n      | THREE.Texture\n      | Int32Array\n      | Float32Array\n      | THREE.Matrix4\n      | THREE.Matrix3\n      | THREE.Quaternion\n      | THREE.Vector4\n      | THREE.Vector3\n      | THREE.Vector2\n      | THREE.Color\n      | number\n      | boolean\n      | Array<any>\n      | null;\n  },\n  vertexShader: string,\n  fragmentShader: string,\n  onInit?: (material?: THREE.ShaderMaterial) => void\n) {\n  return class extends THREE.ShaderMaterial {\n    constructor() {\n      const entries = Object.entries(uniforms);\n      // Create unforms and shaders\n      super({\n        uniforms: entries.reduce((acc, [name, value]) => {\n          const uniform = THREE.UniformsUtils.clone({\n            [name]: { value },\n          });\n          return {\n            ...acc,\n            ...uniform,\n          };\n        }, {}),\n        vertexShader,\n        fragmentShader,\n      });\n      // Create getter/setters\n      entries.forEach(([name]) =>\n        Object.defineProperty(this, name, {\n          get: () => this.uniforms[name].value,\n          set: (v) => (this.uniforms[name].value = v),\n        })\n      );\n      if (onInit) onInit(this);\n    }\n  };\n}\n","/* abstracts */\nexport * from './lib/abstracts/instance';\nexport * from './lib/abstracts/material-geometry';\nexport * from './lib/abstracts/object';\n/* main canvas */\nexport * from './lib/canvas';\n/* dependency injection tokens */\nexport * from './lib/di/attribute';\nexport * from './lib/di/audio';\nexport * from './lib/di/camera';\nexport * from './lib/di/curve';\nexport * from './lib/di/geometry';\nexport * from './lib/di/helper';\nexport * from './lib/di/instance';\nexport * from './lib/di/is-webgl-available';\nexport * from './lib/di/light';\nexport * from './lib/di/line';\nexport * from './lib/di/material';\nexport * from './lib/di/mesh';\nexport * from './lib/di/object';\nexport * from './lib/di/performance';\nexport * from './lib/di/resize';\nexport * from './lib/di/skinned-mesh';\nexport * from './lib/di/sprite';\nexport * from './lib/di/texture';\nexport * from './lib/di/window';\n/* directives */\nexport * from './lib/directives/cursor';\nexport * from './lib/directives/object-pass-through';\nexport * from './lib/directives/repeat';\n/* pipes */\nexport * from './lib/pipes/math';\nexport * from './lib/pipes/pi';\nexport * from './lib/pipes/radian';\nexport * from './lib/pipes/side';\n/* portal */\nexport * from './lib/portal';\nexport * from './lib/ref';\n/* services */\nexport * from './lib/services/loader';\nexport * from './lib/services/resize';\n/* stores*/\nexport * from './lib/stores/component-store';\nexport * from './lib/stores/store';\n/* three abstract classes */\nexport * from './lib/three/attribute';\nexport * from './lib/three/audio';\nexport * from './lib/three/camera';\nexport * from './lib/three/curve';\nexport * from './lib/three/geometry';\nexport * from './lib/three/helper';\nexport * from './lib/three/light';\nexport * from './lib/three/line';\nexport * from './lib/three/material';\nexport * from './lib/three/mesh';\nexport * from './lib/three/object-helper';\nexport * from './lib/three/sprite';\nexport * from './lib/three/texture';\nexport * from './lib/types';\n/* utils */\nexport * from './lib/utils/apply-props';\nexport * from './lib/utils/build-graph';\nexport * from './lib/utils/camera';\nexport * from './lib/utils/check-needs-update';\nexport * from './lib/utils/coercion';\nexport * from './lib/utils/instance';\nexport * from './lib/utils/is';\nexport * from './lib/utils/loop';\nexport * from './lib/utils/make';\nexport * from './lib/utils/shader-material';\nexport * from './lib/utils/pass-through';\nexport * from './lib/utils/inject';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NgtObject"],"mappings":"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"}