angular-three-soba 2.5.2 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +167 -167
  2. package/abstractions/lib/edges.d.ts +188 -188
  3. package/abstractions/lib/grid.d.ts +36 -36
  4. package/abstractions/lib/line.d.ts +2 -2
  5. package/abstractions/lib/prism-geometry.d.ts +4 -4
  6. package/abstractions/lib/rounded-box.d.ts +1 -1
  7. package/abstractions/lib/text-3d.d.ts +43 -43
  8. package/abstractions/lib/text.d.ts +2 -2
  9. package/cameras/lib/cube-camera.d.ts +1 -1
  10. package/cameras/lib/orthographic-camera.d.ts +1 -1
  11. package/cameras/lib/perspective-camera.d.ts +1 -1
  12. package/controls/lib/camera-controls.d.ts +1 -1
  13. package/controls/lib/orbit-controls.d.ts +1 -1
  14. package/esm2022/loaders/index.mjs +2 -1
  15. package/esm2022/loaders/lib/fbx-loader.mjs +13 -0
  16. package/fesm2022/angular-three-soba-loaders.mjs +14 -4
  17. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  18. package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +1 -1
  19. package/gizmos/lib/pivot-controls/axis-arrow.d.ts +1 -1
  20. package/gizmos/lib/pivot-controls/axis-rotator.d.ts +1 -1
  21. package/gizmos/lib/pivot-controls/pivot-controls.d.ts +1 -1
  22. package/gizmos/lib/pivot-controls/plane-slider.d.ts +1 -1
  23. package/gizmos/lib/pivot-controls/scaling-sphere.d.ts +1 -1
  24. package/gizmos/lib/transform-controls.d.ts +2 -2
  25. package/loaders/index.d.ts +1 -0
  26. package/loaders/lib/fbx-loader.d.ts +10 -0
  27. package/materials/lib/custom-shader-material.d.ts +3 -3
  28. package/materials/lib/mesh-refraction-material.d.ts +3 -3
  29. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  30. package/metadata.json +1 -1
  31. package/misc/lib/computed-attribute.d.ts +42 -46
  32. package/misc/lib/decal.d.ts +1 -1
  33. package/misc/lib/html/html.d.ts +1 -1
  34. package/misc/lib/sampler.d.ts +1 -1
  35. package/package.json +18 -18
  36. package/performances/lib/instances/instances.d.ts +11 -11
  37. package/performances/lib/points/points.d.ts +24 -24
  38. package/performances/lib/segments/segments.d.ts +4 -4
  39. package/shaders/lib/mesh-refraction-material.d.ts +2 -2
  40. package/staging/lib/caustics.d.ts +1 -1
  41. package/staging/lib/center.d.ts +6 -6
  42. package/staging/lib/contact-shadows.d.ts +1 -1
  43. package/staging/lib/lightformer.d.ts +4 -4
  44. package/staging/lib/mask.d.ts +1 -1
  45. package/staging/lib/render-texture.d.ts +1 -1
  46. package/staging/lib/sky.d.ts +1 -1
  47. package/staging/lib/spot-light.d.ts +2 -2
  48. package/staging/lib/stage.d.ts +17 -17
  49. package/web-types.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-loaders.mjs","sources":["../../../../libs/soba/loaders/src/lib/font-loader.ts","../../../../libs/soba/loaders/src/lib/gltf-loader.ts","../../../../libs/soba/loaders/src/lib/progress.ts","../../../../libs/soba/loaders/src/lib/loader.ts","../../../../libs/soba/loaders/src/lib/texture-loader.ts","../../../../libs/soba/loaders/src/angular-three-soba-loaders.ts"],"sourcesContent":["import { effect, Injector, signal, untracked } from '@angular/core';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Font, FontLoader } from 'three-stdlib';\n\nexport type Glyph = {\n\t_cachedOutline: string[];\n\tha: number;\n\to: string;\n};\n\nexport type FontData = {\n\tboundingBox: {\n\t\tyMax: number;\n\t\tyMin: number;\n\t};\n\tfamilyName: string;\n\tglyphs: {\n\t\t[k: string]: Glyph;\n\t};\n\tresolution: number;\n\tunderlineThickness: number;\n};\n\nexport type NgtsFontInput = string | FontData;\n\nlet fontLoader: FontLoader | null = null;\n\nasync function loadFontData(font: NgtsFontInput): Promise<FontData> {\n\treturn typeof font === 'string' ? await (await fetch(font)).json() : font;\n}\n\nfunction parseFontData(fontData: FontData) {\n\tif (!fontLoader) {\n\t\tfontLoader = new FontLoader();\n\t}\n\treturn fontLoader.parse(fontData);\n}\n\nconst cache = new Map<NgtsFontInput, Font>();\n\nexport function injectFont(input: () => NgtsFontInput, { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(injectFont, injector, () => {\n\t\tconst font = signal<Font | null>(null);\n\n\t\teffect(() => {\n\t\t\tconst fontInput = input();\n\n\t\t\tif (cache.has(fontInput)) {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tfont.set(cache.get(fontInput) as Font);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tloadFontData(input()).then((data) => {\n\t\t\t\tconst parsed = parseFontData(data);\n\t\t\t\tcache.set(fontInput, parsed);\n\t\t\t\tfont.set(parsed);\n\t\t\t});\n\t\t});\n\n\t\treturn font.asReadonly();\n\t});\n}\n\ninjectFont.preload = (input: () => NgtsFontInput) => {\n\tloadFontData(input()).then((data) => {\n\t\tconst parsed = parseFontData(data);\n\t\tcache.set(input(), parsed);\n\t});\n};\ninjectFont.clear = (input?: () => NgtsFontInput) => {\n\tif (input) {\n\t\tcache.delete(input());\n\t} else {\n\t\tcache.clear();\n\t}\n};\n","import { computed, Injector, Signal } from '@angular/core';\nimport { injectLoader, NgtLoaderResults, NgtObjectMap } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Loader } from 'three';\nimport { DRACOLoader, GLTF, GLTFLoader, MeshoptDecoder } from 'three-stdlib';\n\nlet dracoLoader: DRACOLoader | null = null;\nlet decoderPath = 'https://www.gstatic.com/draco/versioned/decoders/1.5.5/';\n\nfunction _extensions(useDraco: boolean | string, useMeshOpt: boolean, extensions?: (loader: GLTFLoader) => void) {\n\treturn (loader: Loader) => {\n\t\tif (extensions) {\n\t\t\textensions(loader as GLTFLoader);\n\t\t}\n\n\t\tif (useDraco) {\n\t\t\tif (!dracoLoader) {\n\t\t\t\tdracoLoader = new DRACOLoader();\n\t\t\t}\n\n\t\t\tdracoLoader.setDecoderPath(typeof useDraco === 'string' ? useDraco : decoderPath);\n\t\t\t(loader as GLTFLoader).setDRACOLoader(dracoLoader);\n\t\t}\n\t\tif (useMeshOpt) {\n\t\t\t(loader as GLTFLoader).setMeshoptDecoder(\n\t\t\t\ttypeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder,\n\t\t\t);\n\t\t}\n\t};\n}\n\nfunction _injectGLTF<TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\tinjector,\n\t\textensions,\n\t\tonLoad,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\tinjector?: Injector;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t\tonLoad?: (data: NgtLoaderResults<TUrl, GLTF & NgtObjectMap>) => void;\n\t} = {},\n): Signal<NgtLoaderResults<TUrl, GLTF & NgtObjectMap> | null> & { scene: Signal<GLTF['scene'] | null> } {\n\treturn assertInjector(_injectGLTF, injector, () => {\n\t\tconst result = injectLoader(() => GLTFLoader, path, {\n\t\t\textensions: _extensions(useDraco, useMeshOpt, extensions),\n\t\t\t// @ts-expect-error - we know the type of the data\n\t\t\tonLoad,\n\t\t});\n\n\t\tObject.defineProperty(result, 'scene', {\n\t\t\tvalue: computed(() => {\n\t\t\t\tconst gltf = result() as unknown as GLTF;\n\t\t\t\tif (!gltf) return null;\n\t\t\t\treturn gltf.scene;\n\t\t\t}),\n\t\t});\n\n\t\treturn result;\n\t}) as Signal<NgtLoaderResults<TUrl, GLTF & NgtObjectMap> | null> & { scene: Signal<GLTF['scene'] | null> };\n}\n\n_injectGLTF.preload = <TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\textensions,\n\t\tonLoad,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t\tonLoad?: (data: NgtLoaderResults<TUrl, GLTF & NgtObjectMap>) => void;\n\t} = {},\n) => {\n\tinjectLoader.preload(\n\t\t() => GLTFLoader,\n\t\tpath,\n\t\t_extensions(useDraco, useMeshOpt, extensions) as any,\n\t\t// @ts-expect-error - we know the type of the data\n\t\tonLoad,\n\t);\n};\n\n_injectGLTF.setDecoderPath = (path: string) => {\n\tdecoderPath = path;\n};\n\nexport type NgtsGLTFLoader = typeof _injectGLTF;\nexport const injectGLTF: NgtsGLTFLoader = _injectGLTF;\n","import { ChangeDetectorRef, Injector, inject, signal, untracked } from '@angular/core';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { DefaultLoadingManager } from 'three';\n\nexport function injectProgress(injector?: Injector) {\n\treturn assertInjector(injectProgress, injector, () => {\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tconst progress = signal<{\n\t\t\terrors: string[];\n\t\t\tactive: boolean;\n\t\t\tprogress: number;\n\t\t\titem: string;\n\t\t\tloaded: number;\n\t\t\ttotal: number;\n\t\t}>({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });\n\n\t\tlet saveLastTotalLoaded = 0;\n\n\t\tDefaultLoadingManager.onStart = (item, loaded, total) => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tactive: true,\n\t\t\t\t\titem,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,\n\t\t\t\t}));\n\t\t\t});\n\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tDefaultLoadingManager.onLoad = () => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({ ...prev, active: false }));\n\t\t\t});\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tDefaultLoadingManager.onError = (url) => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));\n\t\t\t});\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tDefaultLoadingManager.onProgress = (item, loaded, total) => {\n\t\t\tif (loaded === total) saveLastTotalLoaded = total;\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\titem,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,\n\t\t\t\t}));\n\t\t\t});\n\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\treturn progress.asReadonly();\n\t});\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinput,\n\tsignal,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { injectProgress } from './progress';\n\nconst defaultDataInterpolation = (p: number) => `Loading ${p.toFixed(2)}%`;\n\nexport interface NgtsLoaderOptions {\n\tcontainerClass?: string;\n\tinnerClass?: string;\n\tbarClass?: string;\n\tdataClass?: string;\n\tdataInterpolation: (value: number) => string;\n\tinitialState: (value: boolean) => boolean;\n}\n\nconst defaultOptions: NgtsLoaderOptions = {\n\tcontainerClass: '',\n\tinnerClass: '',\n\tbarClass: '',\n\tdataClass: '',\n\tdataInterpolation: defaultDataInterpolation,\n\tinitialState: (value) => value,\n};\n\n@Component({\n\tselector: 'ngts-loader',\n\tstandalone: true,\n\ttemplate: `\n\t\t@if (shown()) {\n\t\t\t<div\n\t\t\t\tclass=\"ngts-loader-container\"\n\t\t\t\t[class]=\"containerClass() || ''\"\n\t\t\t\t[style.--ngts-loader-container-opacity]=\"active() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<div>\n\t\t\t\t\t<div class=\"ngts-loader-inner\" [class]=\"innerClass() || ''\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"ngts-loader-bar\"\n\t\t\t\t\t\t\t[class]=\"barClass() || ''\"\n\t\t\t\t\t\t\t[style.--ngts-loader-bar-scale]=\"progress() / 100\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t\t<span #progressSpanRef class=\"ngts-loader-data\" [class]=\"dataClass() || ''\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\t`,\n\tstyleUrls: ['./loader.css'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsLoader {\n\tprivate progressState = injectProgress();\n\n\tactive = computed(() => this.progressState().active);\n\tprogress = computed(() => this.progressState().progress);\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tcontainerClass = pick(this.options, 'containerClass');\n\tinnerClass = pick(this.options, 'innerClass');\n\tbarClass = pick(this.options, 'barClass');\n\tdataClass = pick(this.options, 'dataClass');\n\tinitialState = pick(this.options, 'initialState');\n\tdataInterpolation = pick(this.options, 'dataInterpolation');\n\n\tprogressSpanRef = viewChild<ElementRef<HTMLSpanElement>>('progressSpanRef');\n\n\tshown = signal(this.initialState()(this.active()));\n\n\tconstructor() {\n\t\tthis.setShown();\n\t\tthis.updateProgress();\n\t}\n\n\tprivate setShown() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [active, lastShown] = [this.active(), untracked(this.shown)];\n\t\t\tif (lastShown !== active) {\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tthis.shown.set(active);\n\t\t\t\t}, 300);\n\t\t\t\tonCleanup(() => clearTimeout(timeoutId));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate updateProgress() {\n\t\tlet progressRef = 0;\n\t\tlet rafId: ReturnType<typeof requestAnimationFrame>;\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [dataInterpolation, progress] = [this.dataInterpolation(), this.progress()];\n\t\t\tconst updateProgress = () => {\n\t\t\t\tconst progressSpan = this.progressSpanRef()?.nativeElement;\n\t\t\t\tif (!progressSpan) return;\n\t\t\t\tprogressRef += (progress - progressRef) / 2;\n\t\t\t\tif (progressRef > 0.95 * progress || progress === 100) progressRef = progress;\n\t\t\t\tprogressSpan.innerText = dataInterpolation(progressRef);\n\t\t\t\tif (progressRef < progress) {\n\t\t\t\t\trafId = requestAnimationFrame(updateProgress);\n\t\t\t\t}\n\t\t\t};\n\t\t\tupdateProgress();\n\t\t\tonCleanup(() => cancelAnimationFrame(rafId));\n\t\t});\n\t}\n}\n","import { effect, Injector, Signal } from '@angular/core';\nimport { injectLoader, injectStore, NgtLoaderResults } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Texture, TextureLoader } from 'three';\n\nfunction _injectTexture<TInput extends string[] | string | Record<string, string>>(\n\tinput: () => TInput,\n\t{ onLoad, injector }: { onLoad?: (texture: Texture[]) => void; injector?: Injector } = {},\n): Signal<NgtLoaderResults<TInput, Texture> | null> {\n\treturn assertInjector(_injectTexture, injector, () => {\n\t\tconst store = injectStore();\n\t\tconst result = injectLoader(() => TextureLoader, input);\n\n\t\teffect(() => {\n\t\t\tconst textures = result();\n\t\t\tif (!textures) return;\n\t\t\tconst gl = store.get('gl');\n\t\t\tif ('initTexture' in gl) {\n\t\t\t\tconst array = Array.isArray(textures)\n\t\t\t\t\t? textures\n\t\t\t\t\t: textures instanceof Texture\n\t\t\t\t\t\t? [textures]\n\t\t\t\t\t\t: Object.values(textures);\n\t\t\t\tif (onLoad) onLoad(array);\n\t\t\t\tarray.forEach(gl.initTexture.bind(gl));\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t});\n}\n\n_injectTexture.preload = <TInput extends string[] | string | Record<string, string>>(input: () => TInput) => {\n\tinjectLoader.preload(() => TextureLoader, input);\n};\n\nexport type NgtsTextureLoader = typeof _injectTexture;\nexport const injectTexture: NgtsTextureLoader = _injectTexture;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-loaders.mjs","sources":["../../../../libs/soba/loaders/src/lib/fbx-loader.ts","../../../../libs/soba/loaders/src/lib/font-loader.ts","../../../../libs/soba/loaders/src/lib/gltf-loader.ts","../../../../libs/soba/loaders/src/lib/progress.ts","../../../../libs/soba/loaders/src/lib/loader.ts","../../../../libs/soba/loaders/src/lib/texture-loader.ts","../../../../libs/soba/loaders/src/angular-three-soba-loaders.ts"],"sourcesContent":["import { Injector } from '@angular/core';\nimport { injectLoader } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { FBXLoader } from 'three-stdlib';\n\nfunction _injectFBX<TUrl extends string | string[] | Record<string, string>>(\n\tinput: () => TUrl,\n\t{ injector }: { injector?: Injector } = {},\n) {\n\treturn assertInjector(_injectFBX, injector, () => {\n\t\treturn injectLoader(() => FBXLoader, input);\n\t});\n}\n\n_injectFBX.preload = <TUrl extends string | string[] | Record<string, string>>(input: () => TUrl) => {\n\tinjectLoader.preload(() => FBXLoader, input);\n};\n\nexport type NgtsFBXLoader = typeof _injectFBX;\nexport const injectFBX: NgtsFBXLoader = _injectFBX;\n","import { effect, Injector, signal, untracked } from '@angular/core';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Font, FontLoader } from 'three-stdlib';\n\nexport type Glyph = {\n\t_cachedOutline: string[];\n\tha: number;\n\to: string;\n};\n\nexport type FontData = {\n\tboundingBox: {\n\t\tyMax: number;\n\t\tyMin: number;\n\t};\n\tfamilyName: string;\n\tglyphs: {\n\t\t[k: string]: Glyph;\n\t};\n\tresolution: number;\n\tunderlineThickness: number;\n};\n\nexport type NgtsFontInput = string | FontData;\n\nlet fontLoader: FontLoader | null = null;\n\nasync function loadFontData(font: NgtsFontInput): Promise<FontData> {\n\treturn typeof font === 'string' ? await (await fetch(font)).json() : font;\n}\n\nfunction parseFontData(fontData: FontData) {\n\tif (!fontLoader) {\n\t\tfontLoader = new FontLoader();\n\t}\n\treturn fontLoader.parse(fontData);\n}\n\nconst cache = new Map<NgtsFontInput, Font>();\n\nexport function injectFont(input: () => NgtsFontInput, { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(injectFont, injector, () => {\n\t\tconst font = signal<Font | null>(null);\n\n\t\teffect(() => {\n\t\t\tconst fontInput = input();\n\n\t\t\tif (cache.has(fontInput)) {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tfont.set(cache.get(fontInput) as Font);\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tloadFontData(input()).then((data) => {\n\t\t\t\tconst parsed = parseFontData(data);\n\t\t\t\tcache.set(fontInput, parsed);\n\t\t\t\tfont.set(parsed);\n\t\t\t});\n\t\t});\n\n\t\treturn font.asReadonly();\n\t});\n}\n\ninjectFont.preload = (input: () => NgtsFontInput) => {\n\tloadFontData(input()).then((data) => {\n\t\tconst parsed = parseFontData(data);\n\t\tcache.set(input(), parsed);\n\t});\n};\ninjectFont.clear = (input?: () => NgtsFontInput) => {\n\tif (input) {\n\t\tcache.delete(input());\n\t} else {\n\t\tcache.clear();\n\t}\n};\n","import { computed, Injector, Signal } from '@angular/core';\nimport { injectLoader, NgtLoaderResults, NgtObjectMap } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Loader } from 'three';\nimport { DRACOLoader, GLTF, GLTFLoader, MeshoptDecoder } from 'three-stdlib';\n\nlet dracoLoader: DRACOLoader | null = null;\nlet decoderPath = 'https://www.gstatic.com/draco/versioned/decoders/1.5.5/';\n\nfunction _extensions(useDraco: boolean | string, useMeshOpt: boolean, extensions?: (loader: GLTFLoader) => void) {\n\treturn (loader: Loader) => {\n\t\tif (extensions) {\n\t\t\textensions(loader as GLTFLoader);\n\t\t}\n\n\t\tif (useDraco) {\n\t\t\tif (!dracoLoader) {\n\t\t\t\tdracoLoader = new DRACOLoader();\n\t\t\t}\n\n\t\t\tdracoLoader.setDecoderPath(typeof useDraco === 'string' ? useDraco : decoderPath);\n\t\t\t(loader as GLTFLoader).setDRACOLoader(dracoLoader);\n\t\t}\n\t\tif (useMeshOpt) {\n\t\t\t(loader as GLTFLoader).setMeshoptDecoder(\n\t\t\t\ttypeof MeshoptDecoder === 'function' ? MeshoptDecoder() : MeshoptDecoder,\n\t\t\t);\n\t\t}\n\t};\n}\n\nfunction _injectGLTF<TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\tinjector,\n\t\textensions,\n\t\tonLoad,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\tinjector?: Injector;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t\tonLoad?: (data: NgtLoaderResults<TUrl, GLTF & NgtObjectMap>) => void;\n\t} = {},\n): Signal<NgtLoaderResults<TUrl, GLTF & NgtObjectMap> | null> & { scene: Signal<GLTF['scene'] | null> } {\n\treturn assertInjector(_injectGLTF, injector, () => {\n\t\tconst result = injectLoader(() => GLTFLoader, path, {\n\t\t\textensions: _extensions(useDraco, useMeshOpt, extensions),\n\t\t\t// @ts-expect-error - we know the type of the data\n\t\t\tonLoad,\n\t\t});\n\n\t\tObject.defineProperty(result, 'scene', {\n\t\t\tvalue: computed(() => {\n\t\t\t\tconst gltf = result() as unknown as GLTF;\n\t\t\t\tif (!gltf) return null;\n\t\t\t\treturn gltf.scene;\n\t\t\t}),\n\t\t});\n\n\t\treturn result;\n\t}) as Signal<NgtLoaderResults<TUrl, GLTF & NgtObjectMap> | null> & { scene: Signal<GLTF['scene'] | null> };\n}\n\n_injectGLTF.preload = <TUrl extends string | string[] | Record<string, string>>(\n\tpath: () => TUrl,\n\t{\n\t\tuseDraco = true,\n\t\tuseMeshOpt = true,\n\t\textensions,\n\t\tonLoad,\n\t}: {\n\t\tuseDraco?: boolean | string;\n\t\tuseMeshOpt?: boolean;\n\t\textensions?: (loader: GLTFLoader) => void;\n\t\tonLoad?: (data: NgtLoaderResults<TUrl, GLTF & NgtObjectMap>) => void;\n\t} = {},\n) => {\n\tinjectLoader.preload(\n\t\t() => GLTFLoader,\n\t\tpath,\n\t\t_extensions(useDraco, useMeshOpt, extensions) as any,\n\t\t// @ts-expect-error - we know the type of the data\n\t\tonLoad,\n\t);\n};\n\n_injectGLTF.setDecoderPath = (path: string) => {\n\tdecoderPath = path;\n};\n\nexport type NgtsGLTFLoader = typeof _injectGLTF;\nexport const injectGLTF: NgtsGLTFLoader = _injectGLTF;\n","import { ChangeDetectorRef, Injector, inject, signal, untracked } from '@angular/core';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { DefaultLoadingManager } from 'three';\n\nexport function injectProgress(injector?: Injector) {\n\treturn assertInjector(injectProgress, injector, () => {\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\tconst progress = signal<{\n\t\t\terrors: string[];\n\t\t\tactive: boolean;\n\t\t\tprogress: number;\n\t\t\titem: string;\n\t\t\tloaded: number;\n\t\t\ttotal: number;\n\t\t}>({ errors: [], active: false, progress: 0, item: '', loaded: 0, total: 0 });\n\n\t\tlet saveLastTotalLoaded = 0;\n\n\t\tDefaultLoadingManager.onStart = (item, loaded, total) => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\tactive: true,\n\t\t\t\t\titem,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100,\n\t\t\t\t}));\n\t\t\t});\n\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tDefaultLoadingManager.onLoad = () => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({ ...prev, active: false }));\n\t\t\t});\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tDefaultLoadingManager.onError = (url) => {\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({ ...prev, errors: [...prev.errors, url] }));\n\t\t\t});\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\tDefaultLoadingManager.onProgress = (item, loaded, total) => {\n\t\t\tif (loaded === total) saveLastTotalLoaded = total;\n\t\t\tuntracked(() => {\n\t\t\t\tprogress.update((prev) => ({\n\t\t\t\t\t...prev,\n\t\t\t\t\titem,\n\t\t\t\t\tloaded,\n\t\t\t\t\ttotal,\n\t\t\t\t\tprogress: ((loaded - saveLastTotalLoaded) / (total - saveLastTotalLoaded)) * 100 || 100,\n\t\t\t\t}));\n\t\t\t});\n\n\t\t\tcdr.detectChanges();\n\t\t};\n\n\t\treturn progress.asReadonly();\n\t});\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tcomputed,\n\teffect,\n\tinput,\n\tsignal,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { injectProgress } from './progress';\n\nconst defaultDataInterpolation = (p: number) => `Loading ${p.toFixed(2)}%`;\n\nexport interface NgtsLoaderOptions {\n\tcontainerClass?: string;\n\tinnerClass?: string;\n\tbarClass?: string;\n\tdataClass?: string;\n\tdataInterpolation: (value: number) => string;\n\tinitialState: (value: boolean) => boolean;\n}\n\nconst defaultOptions: NgtsLoaderOptions = {\n\tcontainerClass: '',\n\tinnerClass: '',\n\tbarClass: '',\n\tdataClass: '',\n\tdataInterpolation: defaultDataInterpolation,\n\tinitialState: (value) => value,\n};\n\n@Component({\n\tselector: 'ngts-loader',\n\tstandalone: true,\n\ttemplate: `\n\t\t@if (shown()) {\n\t\t\t<div\n\t\t\t\tclass=\"ngts-loader-container\"\n\t\t\t\t[class]=\"containerClass() || ''\"\n\t\t\t\t[style.--ngts-loader-container-opacity]=\"active() ? 1 : 0\"\n\t\t\t>\n\t\t\t\t<div>\n\t\t\t\t\t<div class=\"ngts-loader-inner\" [class]=\"innerClass() || ''\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"ngts-loader-bar\"\n\t\t\t\t\t\t\t[class]=\"barClass() || ''\"\n\t\t\t\t\t\t\t[style.--ngts-loader-bar-scale]=\"progress() / 100\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t\t<span #progressSpanRef class=\"ngts-loader-data\" [class]=\"dataClass() || ''\"></span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\t`,\n\tstyleUrls: ['./loader.css'],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsLoader {\n\tprivate progressState = injectProgress();\n\n\tactive = computed(() => this.progressState().active);\n\tprogress = computed(() => this.progressState().progress);\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tcontainerClass = pick(this.options, 'containerClass');\n\tinnerClass = pick(this.options, 'innerClass');\n\tbarClass = pick(this.options, 'barClass');\n\tdataClass = pick(this.options, 'dataClass');\n\tinitialState = pick(this.options, 'initialState');\n\tdataInterpolation = pick(this.options, 'dataInterpolation');\n\n\tprogressSpanRef = viewChild<ElementRef<HTMLSpanElement>>('progressSpanRef');\n\n\tshown = signal(this.initialState()(this.active()));\n\n\tconstructor() {\n\t\tthis.setShown();\n\t\tthis.updateProgress();\n\t}\n\n\tprivate setShown() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [active, lastShown] = [this.active(), untracked(this.shown)];\n\t\t\tif (lastShown !== active) {\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tthis.shown.set(active);\n\t\t\t\t}, 300);\n\t\t\t\tonCleanup(() => clearTimeout(timeoutId));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate updateProgress() {\n\t\tlet progressRef = 0;\n\t\tlet rafId: ReturnType<typeof requestAnimationFrame>;\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [dataInterpolation, progress] = [this.dataInterpolation(), this.progress()];\n\t\t\tconst updateProgress = () => {\n\t\t\t\tconst progressSpan = this.progressSpanRef()?.nativeElement;\n\t\t\t\tif (!progressSpan) return;\n\t\t\t\tprogressRef += (progress - progressRef) / 2;\n\t\t\t\tif (progressRef > 0.95 * progress || progress === 100) progressRef = progress;\n\t\t\t\tprogressSpan.innerText = dataInterpolation(progressRef);\n\t\t\t\tif (progressRef < progress) {\n\t\t\t\t\trafId = requestAnimationFrame(updateProgress);\n\t\t\t\t}\n\t\t\t};\n\t\t\tupdateProgress();\n\t\t\tonCleanup(() => cancelAnimationFrame(rafId));\n\t\t});\n\t}\n}\n","import { effect, Injector, Signal } from '@angular/core';\nimport { injectLoader, injectStore, NgtLoaderResults } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { Texture, TextureLoader } from 'three';\n\nfunction _injectTexture<TInput extends string[] | string | Record<string, string>>(\n\tinput: () => TInput,\n\t{ onLoad, injector }: { onLoad?: (texture: Texture[]) => void; injector?: Injector } = {},\n): Signal<NgtLoaderResults<TInput, Texture> | null> {\n\treturn assertInjector(_injectTexture, injector, () => {\n\t\tconst store = injectStore();\n\t\tconst result = injectLoader(() => TextureLoader, input);\n\n\t\teffect(() => {\n\t\t\tconst textures = result();\n\t\t\tif (!textures) return;\n\t\t\tconst gl = store.get('gl');\n\t\t\tif ('initTexture' in gl) {\n\t\t\t\tconst array = Array.isArray(textures)\n\t\t\t\t\t? textures\n\t\t\t\t\t: textures instanceof Texture\n\t\t\t\t\t\t? [textures]\n\t\t\t\t\t\t: Object.values(textures);\n\t\t\t\tif (onLoad) onLoad(array);\n\t\t\t\tarray.forEach(gl.initTexture.bind(gl));\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t});\n}\n\n_injectTexture.preload = <TInput extends string[] | string | Record<string, string>>(input: () => TInput) => {\n\tinjectLoader.preload(() => TextureLoader, input);\n};\n\nexport type NgtsTextureLoader = typeof _injectTexture;\nexport const injectTexture: NgtsTextureLoader = _injectTexture;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -46,7 +46,7 @@ export interface NgtsGizmoViewportOptions extends Partial<NgtGroup> {
46
46
  export declare class NgtsGizmoViewport {
47
47
  protected readonly Math: Math;
48
48
  options: import("@angular/core").InputSignalWithTransform<NgtsGizmoViewportOptions, "" | Partial<NgtsGizmoViewportOptions>>;
49
- parameters: import("@angular/core").Signal<Omit<NgtsGizmoViewportOptions, "axisColors" | "axisScale" | "labels" | "axisHeadScale" | "labelColor" | "hideNegativeAxes" | "hideAxisHeads" | "disabled" | "font">>;
49
+ parameters: import("@angular/core").Signal<Omit<NgtsGizmoViewportOptions, "font" | "axisColors" | "axisScale" | "labels" | "axisHeadScale" | "labelColor" | "hideNegativeAxes" | "hideAxisHeads" | "disabled">>;
50
50
  click: import("@angular/core").OutputEmitterRef<NgtThreeEvent<MouseEvent>>;
51
51
  protected axisColors: import("@angular/core").Signal<[string, string, string]>;
52
52
  protected axisScale: import("@angular/core").Signal<[number, number, number] | undefined>;
@@ -7,7 +7,7 @@ export declare function calculateOffset(clickPoint: Vector3, normal: Vector3, ra
7
7
  export declare class NgtsAxisArrow {
8
8
  protected readonly DoubleSide: 2;
9
9
  direction: import("@angular/core").InputSignal<Vector3>;
10
- axis: import("@angular/core").InputSignal<0 | 1 | 2>;
10
+ axis: import("@angular/core").InputSignal<0 | 2 | 1>;
11
11
  groupRef: Signal<ElementRef<Group<import("three").Object3DEventMap>>>;
12
12
  annotationRef: Signal<ElementRef<HTMLDivElement> | undefined>;
13
13
  pivotControls: NgtsPivotControls;
@@ -7,7 +7,7 @@ export declare class NgtsAxisRotator {
7
7
  protected readonly DoubleSide: 2;
8
8
  dir1: import("@angular/core").InputSignal<Vector3>;
9
9
  dir2: import("@angular/core").InputSignal<Vector3>;
10
- axis: import("@angular/core").InputSignal<0 | 1 | 2>;
10
+ axis: import("@angular/core").InputSignal<0 | 2 | 1>;
11
11
  groupRef: Signal<ElementRef<Group<import("three").Object3DEventMap>>>;
12
12
  annotationRef: Signal<ElementRef<HTMLDivElement> | undefined>;
13
13
  pivotControls: NgtsPivotControls;
@@ -60,7 +60,7 @@ export interface NgtsPivotControlsOptions {
60
60
  }
61
61
  export declare class NgtsPivotControls {
62
62
  options: import("@angular/core").InputSignalWithTransform<NgtsPivotControlsOptions, "" | Partial<NgtsPivotControlsOptions>>;
63
- parameters: import("@angular/core").Signal<Omit<NgtsPivotControlsOptions, "scale" | "rotation" | "matrix" | "visible" | "userData" | "enabled" | "autoTransform" | "anchor" | "disableAxes" | "disableSliders" | "disableRotations" | "disableScaling" | "activeAxes" | "offset" | "lineWidth" | "fixed" | "translationLimits" | "rotationLimits" | "scaleLimits" | "depthTest" | "axisColors" | "hoveredColor" | "annotations" | "annotationsClass" | "opacity">>;
63
+ parameters: import("@angular/core").Signal<Omit<NgtsPivotControlsOptions, "opacity" | "scale" | "rotation" | "matrix" | "anchor" | "fixed" | "visible" | "userData" | "axisColors" | "hoveredColor" | "enabled" | "lineWidth" | "offset" | "autoTransform" | "activeAxes" | "disableAxes" | "disableSliders" | "disableRotations" | "disableScaling" | "translationLimits" | "rotationLimits" | "scaleLimits" | "annotations" | "annotationsClass" | "depthTest">>;
64
64
  dragStarted: import("@angular/core").OutputEmitterRef<OnDragStartParameters>;
65
65
  dragEnded: import("@angular/core").OutputEmitterRef<void>;
66
66
  dragged: import("@angular/core").OutputEmitterRef<OnDragParameters>;
@@ -7,7 +7,7 @@ export declare class NgtsPlaneSlider {
7
7
  protected readonly DoubleSide: 2;
8
8
  dir1: import("@angular/core").InputSignal<Vector3>;
9
9
  dir2: import("@angular/core").InputSignal<Vector3>;
10
- axis: import("@angular/core").InputSignal<0 | 1 | 2>;
10
+ axis: import("@angular/core").InputSignal<0 | 2 | 1>;
11
11
  groupRef: Signal<ElementRef<Group<import("three").Object3DEventMap>>>;
12
12
  annotationRef: Signal<ElementRef<HTMLDivElement> | undefined>;
13
13
  pivotControls: NgtsPivotControls;
@@ -6,7 +6,7 @@ import * as i0 from "@angular/core";
6
6
  export declare function calculateOffset(clickPoint: Vector3, normal: Vector3, rayStart: Vector3, rayDir: Vector3): number;
7
7
  export declare class NgtsScalingSphere {
8
8
  direction: import("@angular/core").InputSignal<Vector3>;
9
- axis: import("@angular/core").InputSignal<0 | 1 | 2>;
9
+ axis: import("@angular/core").InputSignal<0 | 2 | 1>;
10
10
  groupRef: Signal<ElementRef<Group<import("three").Object3DEventMap>>>;
11
11
  annotationRef: Signal<ElementRef<HTMLDivElement> | undefined>;
12
12
  meshRef: Signal<ElementRef<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>;
@@ -23,8 +23,8 @@ export type NgtsTransformControlsOptions = Partial<NgtsTransformControlsObject>
23
23
  export declare class NgtsTransformControls {
24
24
  object: import("@angular/core").InputSignal<Object3D<import("three").Object3DEventMap> | ElementRef<Object3D<import("three").Object3DEventMap>> | null | undefined>;
25
25
  options: import("@angular/core").InputSignal<Partial<NgtsTransformControlsOptions>>;
26
- parameters: Signal<Omit<Partial<NgtsTransformControlsOptions>, "enabled" | "axis" | "domElement" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "space" | "size" | "showX" | "showY" | "showZ" | "camera" | "makeDefault">>;
27
- protected controlsOptions: Signal<Pick<Partial<NgtsTransformControlsOptions>, "enabled" | "axis" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "space" | "size" | "showX" | "showY" | "showZ">>;
26
+ parameters: Signal<Omit<Partial<NgtsTransformControlsOptions>, "size" | "camera" | "enabled" | "axis" | "domElement" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "space" | "showX" | "showY" | "showZ" | "makeDefault">>;
27
+ protected controlsOptions: Signal<Pick<Partial<NgtsTransformControlsOptions>, "size" | "enabled" | "axis" | "mode" | "translationSnap" | "rotationSnap" | "scaleSnap" | "space" | "showX" | "showY" | "showZ">>;
28
28
  private camera;
29
29
  private domElement;
30
30
  private makeDefault;
@@ -1,3 +1,4 @@
1
+ export * from './lib/fbx-loader';
1
2
  export * from './lib/font-loader';
2
3
  export * from './lib/gltf-loader';
3
4
  export * from './lib/loader';
@@ -0,0 +1,10 @@
1
+ import { Injector } from '@angular/core';
2
+ declare function _injectFBX<TUrl extends string | string[] | Record<string, string>>(input: () => TUrl, { injector }?: {
3
+ injector?: Injector;
4
+ }): import("@angular/core").Signal<import("angular-three").NgtLoaderResults<TUrl, import("three").Group<import("three").Object3DEventMap>> | null>;
5
+ declare namespace _injectFBX {
6
+ var preload: <TUrl extends string | string[] | Record<string, string>>(input: () => TUrl) => void;
7
+ }
8
+ export type NgtsFBXLoader = typeof _injectFBX;
9
+ export declare const injectFBX: NgtsFBXLoader;
10
+ export {};
@@ -4,11 +4,11 @@ import { Material } from 'three';
4
4
  import CustomShaderMaterial from 'three-custom-shader-material/vanilla';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class NgtsCustomShaderMaterial {
7
- baseMaterial: import("@angular/core").InputSignal<typeof Material | Material | ElementRef<Material>>;
7
+ baseMaterial: import("@angular/core").InputSignal<Material | typeof Material | ElementRef<Material>>;
8
8
  attach: import("@angular/core").InputSignal<NgtAttachable>;
9
9
  options: import("@angular/core").InputSignal<Omit<any, "baseMaterial">>;
10
- parameters: import("@angular/core").Signal<Omit<Omit<any, "baseMaterial">, "uniforms" | "vertexShader" | "fragmentShader" | "cacheKey">>;
11
- base: import("@angular/core").Signal<typeof Material | Material>;
10
+ parameters: import("@angular/core").Signal<Omit<Omit<any, "baseMaterial">, "fragmentShader" | "vertexShader" | "uniforms" | "cacheKey">>;
11
+ base: import("@angular/core").Signal<Material | typeof Material>;
12
12
  private fragmentShader;
13
13
  private vertexShader;
14
14
  private uniforms;
@@ -20,11 +20,11 @@ export declare class NgtsMeshRefractionMaterial {
20
20
  envMap: import("@angular/core").InputSignal<Texture | CubeTexture>;
21
21
  attach: import("@angular/core").InputSignal<NgtAttachable>;
22
22
  options: import("@angular/core").InputSignalWithTransform<NgtsMeshRefractionMaterialOptions, "" | Partial<NgtsMeshRefractionMaterialOptions>>;
23
- parameters: import("@angular/core").Signal<Omit<NgtsMeshRefractionMaterialOptions, "fastChroma" | "aberrationStrength">>;
23
+ parameters: import("@angular/core").Signal<Omit<NgtsMeshRefractionMaterialOptions, "aberrationStrength" | "fastChroma">>;
24
24
  private fastChroma;
25
25
  aberrationStrength: import("@angular/core").Signal<number>;
26
26
  materialRef: import("@angular/core").Signal<ElementRef<import("three").ShaderMaterial & {
27
- [name: string]: number | boolean | any[] | import("three").Color | Texture | CubeTexture | Int32Array | Float32Array | import("three").Matrix4 | import("three").Matrix3 | import("three").Quaternion | import("three").Vector4 | import("three").Vector3 | import("three").Vector2 | null;
27
+ [name: string]: number | boolean | any[] | import("three").Color | Texture | import("three").Vector3 | import("three").Matrix4 | import("three").Vector4 | import("three").Quaternion | import("three").Matrix3 | CubeTexture | Int32Array | Float32Array | import("three").Vector2 | null;
28
28
  }> | undefined>;
29
29
  private store;
30
30
  private size;
@@ -34,7 +34,7 @@ export declare class NgtsMeshRefractionMaterial {
34
34
  }>;
35
35
  private defineKeys;
36
36
  material: import("@angular/core").Signal<import("three").ShaderMaterial & {
37
- [name: string]: number | boolean | any[] | import("three").Color | Texture | CubeTexture | Int32Array | Float32Array | import("three").Matrix4 | import("three").Matrix3 | import("three").Quaternion | import("three").Vector4 | import("three").Vector3 | import("three").Vector2 | null;
37
+ [name: string]: number | boolean | any[] | import("three").Color | Texture | import("three").Vector3 | import("three").Matrix4 | import("three").Vector4 | import("three").Quaternion | import("three").Matrix3 | CubeTexture | Int32Array | Float32Array | import("three").Vector2 | null;
38
38
  }>;
39
39
  constructor();
40
40
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsMeshRefractionMaterial, never>;
@@ -29,7 +29,7 @@ export type NgtsMeshTransmissionMaterialOptions = Partial<NgtMeshPhysicalMateria
29
29
  export declare class NgtsMeshTransmissionMaterial {
30
30
  attach: import("@angular/core").InputSignal<NgtAttachable>;
31
31
  options: import("@angular/core").InputSignalWithTransform<NgtsMeshTransmissionMaterialOptions, "" | Partial<NgtsMeshTransmissionMaterialOptions>>;
32
- parameters: import("@angular/core").Signal<Omit<NgtsMeshTransmissionMaterialOptions, "side" | "thickness" | "anisotropy" | "transmission" | "buffer" | "anisotropicBlur" | "samples" | "transmissionSampler" | "backside" | "backsideThickness" | "backsideEnvMapIntensity" | "resolution" | "backsideResolution" | "background">>;
32
+ parameters: import("@angular/core").Signal<Omit<NgtsMeshTransmissionMaterialOptions, "thickness" | "anisotropy" | "transmission" | "side" | "resolution" | "buffer" | "anisotropicBlur" | "samples" | "transmissionSampler" | "backside" | "backsideThickness" | "backsideEnvMapIntensity" | "backsideResolution" | "background">>;
33
33
  private resolution;
34
34
  private backsideResolution;
35
35
  private samples;
package/metadata.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://raw.githubusercontent.com/microsoft/vscode-html-languageservice/main/docs/customData.schema.json","version":1.1,"tags":[{"name":"ngt-grid-material","attributes":[{"name":"cellSize"},{"name":"[cellSize]"},{"name":"cellThickness"},{"name":"[cellThickness]"},{"name":"cellColor"},{"name":"[cellColor]"},{"name":"sectionSize"},{"name":"[sectionSize]"},{"name":"sectionThickness"},{"name":"[sectionThickness]"},{"name":"sectionColor"},{"name":"[sectionColor]"},{"name":"followCamera"},{"name":"[followCamera]"},{"name":"infiniteGrid"},{"name":"[infiniteGrid]"},{"name":"fadeDistance"},{"name":"[fadeDistance]"},{"name":"fadeStrength"},{"name":"[fadeStrength]"},{"name":"fadeFrom"},{"name":"[fadeFrom]"},{"name":"side"},{"name":"[side]"}],"extends":"/html/elements/ngt-shader-material"},{"name":"ngt-point-material","attributes":[{"name":"visible"},{"name":"[visible]"},{"name":"id"},{"name":"[id]"},{"name":"name"},{"name":"[name]"},{"name":"userData"},{"name":"[userData]"},{"name":"onBeforeRender"},{"name":"[onBeforeRender]"},{"name":"clippingPlanes"},{"name":"[clippingPlanes]"},{"name":"dispose"},{"name":"[dispose]"},{"name":"alphaHash"},{"name":"[alphaHash]"},{"name":"alphaToCoverage"},{"name":"[alphaToCoverage]"},{"name":"blendAlpha"},{"name":"[blendAlpha]"},{"name":"blendColor"},{"name":"[blendColor]"},{"name":"blendDst"},{"name":"[blendDst]"},{"name":"blendDstAlpha"},{"name":"[blendDstAlpha]"},{"name":"blendEquation"},{"name":"[blendEquation]"},{"name":"blendEquationAlpha"},{"name":"[blendEquationAlpha]"},{"name":"blending"},{"name":"[blending]"},{"name":"blendSrc"},{"name":"[blendSrc]"},{"name":"blendSrcAlpha"},{"name":"[blendSrcAlpha]"},{"name":"clipIntersection"},{"name":"[clipIntersection]"},{"name":"clipShadows"},{"name":"[clipShadows]"},{"name":"colorWrite"},{"name":"[colorWrite]"},{"name":"defines"},{"name":"[defines]"},{"name":"depthFunc"},{"name":"[depthFunc]"},{"name":"depthTest"},{"name":"[depthTest]"},{"name":"depthWrite"},{"name":"[depthWrite]"},{"name":"stencilWrite"},{"name":"[stencilWrite]"},{"name":"stencilFunc"},{"name":"[stencilFunc]"},{"name":"stencilRef"},{"name":"[stencilRef]"},{"name":"stencilWriteMask"},{"name":"[stencilWriteMask]"},{"name":"stencilFuncMask"},{"name":"[stencilFuncMask]"},{"name":"stencilFail"},{"name":"[stencilFail]"},{"name":"stencilZFail"},{"name":"[stencilZFail]"},{"name":"stencilZPass"},{"name":"[stencilZPass]"},{"name":"opacity"},{"name":"[opacity]"},{"name":"polygonOffset"},{"name":"[polygonOffset]"},{"name":"polygonOffsetFactor"},{"name":"[polygonOffsetFactor]"},{"name":"polygonOffsetUnits"},{"name":"[polygonOffsetUnits]"},{"name":"precision"},{"name":"[precision]"},{"name":"premultipliedAlpha"},{"name":"[premultipliedAlpha]"},{"name":"forceSinglePass"},{"name":"[forceSinglePass]"},{"name":"dithering"},{"name":"[dithering]"},{"name":"side"},{"name":"[side]"},{"name":"shadowSide"},{"name":"[shadowSide]"},{"name":"toneMapped"},{"name":"[toneMapped]"},{"name":"transparent"},{"name":"[transparent]"},{"name":"vertexColors"},{"name":"[vertexColors]"},{"name":"version"},{"name":"[version]"},{"name":"alphaTest"},{"name":"[alphaTest]"},{"name":"onBeforeCompile"},{"name":"[onBeforeCompile]"},{"name":"customProgramCacheKey"},{"name":"[customProgramCacheKey]"},{"name":"needsUpdate"},{"name":"[needsUpdate]"},{"name":"onBuild"},{"name":"[onBuild]"},{"name":"color"},{"name":"[color]"},{"name":"fog"},{"name":"[fog]"},{"name":"map"},{"name":"[map]"},{"name":"alphaMap"},{"name":"[alphaMap]"},{"name":"sizeAttenuation"},{"name":"[sizeAttenuation]"},{"name":"size"},{"name":"[size]"}],"extends":"/html/elements/ngt-points-material"},{"name":"ngt-soft-shadow-material","attributes":[{"name":"color"},{"name":"[color]"},{"name":"blend"},{"name":"[blend]"},{"name":"opacity"},{"name":"[opacity]"},{"name":"alphaTest"},{"name":"[alphaTest]"},{"name":"map"},{"name":"[map]"}],"extends":"/html/elements/ngt-mesh-standard-material"},{"name":"ngt-spot-light-material","attributes":[{"name":"depth"},{"name":"[depth]"},{"name":"opacity"},{"name":"[opacity]"},{"name":"attenuation"},{"name":"[attenuation]"},{"name":"anglePower"},{"name":"[anglePower]"},{"name":"spotPosition"},{"name":"[spotPosition]"},{"name":"lightColor"},{"name":"[lightColor]"},{"name":"cameraNear"},{"name":"[cameraNear]"},{"name":"cameraFar"},{"name":"[cameraFar]"},{"name":"resolution"},{"name":"[resolution]"},{"name":"transparent"},{"name":"[transparent]"},{"name":"depthWrite"},{"name":"[depthWrite]"}],"extends":"/html/elements/ngt-shader-material"},{"name":"ngt-caustics-projection-material","attributes":[{"name":"color"},{"name":"[color]"},{"name":"causticsTexture"},{"name":"[causticsTexture]"},{"name":"causticsTextureB"},{"name":"[causticsTextureB]"},{"name":"lightProjMatrix"},{"name":"[lightProjMatrix]"},{"name":"lightViewMatrix"},{"name":"[lightViewMatrix]"}],"extends":"/html/elements/ngt-shader-material"},{"name":"ngt-position-mesh","attributes":[{"name":"instance"},{"name":"[instance]"},{"name":"color"},{"name":"[color]"}],"extends":"/html/elements/ngt-group"},{"name":"ngt-position-point","attributes":[{"name":"instance"},{"name":"[instance]"},{"name":"color"},{"name":"[color]"},{"name":"size"},{"name":"[size]"}],"extends":"/html/elements/ngt-group"},{"name":"ngt-segment-object","attributes":[{"name":"start"},{"name":"[start]"},{"name":"color"},{"name":"[color]"},{"name":"end"},{"name":"[end]"}],"extends":""}]}
1
+ {"$schema":"https://raw.githubusercontent.com/microsoft/vscode-html-languageservice/main/docs/customData.schema.json","version":1.1,"tags":[{"name":"ngt-grid-material","attributes":[{"name":"cellSize"},{"name":"[cellSize]"},{"name":"cellThickness"},{"name":"[cellThickness]"},{"name":"cellColor"},{"name":"[cellColor]"},{"name":"sectionSize"},{"name":"[sectionSize]"},{"name":"sectionThickness"},{"name":"[sectionThickness]"},{"name":"sectionColor"},{"name":"[sectionColor]"},{"name":"followCamera"},{"name":"[followCamera]"},{"name":"infiniteGrid"},{"name":"[infiniteGrid]"},{"name":"fadeDistance"},{"name":"[fadeDistance]"},{"name":"fadeStrength"},{"name":"[fadeStrength]"},{"name":"fadeFrom"},{"name":"[fadeFrom]"},{"name":"side"},{"name":"[side]"}],"extends":"/html/elements/ngt-shader-material"},{"name":"ngt-point-material","attributes":[{"name":"visible"},{"name":"[visible]"},{"name":"id"},{"name":"[id]"},{"name":"name"},{"name":"[name]"},{"name":"userData"},{"name":"[userData]"},{"name":"onBeforeRender"},{"name":"[onBeforeRender]"},{"name":"dispose"},{"name":"[dispose]"},{"name":"alphaHash"},{"name":"[alphaHash]"},{"name":"alphaToCoverage"},{"name":"[alphaToCoverage]"},{"name":"blendAlpha"},{"name":"[blendAlpha]"},{"name":"blendColor"},{"name":"[blendColor]"},{"name":"blendDst"},{"name":"[blendDst]"},{"name":"blendDstAlpha"},{"name":"[blendDstAlpha]"},{"name":"blendEquation"},{"name":"[blendEquation]"},{"name":"blendEquationAlpha"},{"name":"[blendEquationAlpha]"},{"name":"blending"},{"name":"[blending]"},{"name":"blendSrc"},{"name":"[blendSrc]"},{"name":"blendSrcAlpha"},{"name":"[blendSrcAlpha]"},{"name":"clipIntersection"},{"name":"[clipIntersection]"},{"name":"clippingPlanes"},{"name":"[clippingPlanes]"},{"name":"clipShadows"},{"name":"[clipShadows]"},{"name":"colorWrite"},{"name":"[colorWrite]"},{"name":"defines"},{"name":"[defines]"},{"name":"depthFunc"},{"name":"[depthFunc]"},{"name":"depthTest"},{"name":"[depthTest]"},{"name":"depthWrite"},{"name":"[depthWrite]"},{"name":"stencilWrite"},{"name":"[stencilWrite]"},{"name":"stencilFunc"},{"name":"[stencilFunc]"},{"name":"stencilRef"},{"name":"[stencilRef]"},{"name":"stencilWriteMask"},{"name":"[stencilWriteMask]"},{"name":"stencilFuncMask"},{"name":"[stencilFuncMask]"},{"name":"stencilFail"},{"name":"[stencilFail]"},{"name":"stencilZFail"},{"name":"[stencilZFail]"},{"name":"stencilZPass"},{"name":"[stencilZPass]"},{"name":"opacity"},{"name":"[opacity]"},{"name":"polygonOffset"},{"name":"[polygonOffset]"},{"name":"polygonOffsetFactor"},{"name":"[polygonOffsetFactor]"},{"name":"polygonOffsetUnits"},{"name":"[polygonOffsetUnits]"},{"name":"precision"},{"name":"[precision]"},{"name":"premultipliedAlpha"},{"name":"[premultipliedAlpha]"},{"name":"forceSinglePass"},{"name":"[forceSinglePass]"},{"name":"dithering"},{"name":"[dithering]"},{"name":"side"},{"name":"[side]"},{"name":"shadowSide"},{"name":"[shadowSide]"},{"name":"toneMapped"},{"name":"[toneMapped]"},{"name":"transparent"},{"name":"[transparent]"},{"name":"vertexColors"},{"name":"[vertexColors]"},{"name":"version"},{"name":"[version]"},{"name":"alphaTest"},{"name":"[alphaTest]"},{"name":"onBeforeCompile"},{"name":"[onBeforeCompile]"},{"name":"customProgramCacheKey"},{"name":"[customProgramCacheKey]"},{"name":"needsUpdate"},{"name":"[needsUpdate]"},{"name":"onBuild"},{"name":"[onBuild]"},{"name":"color"},{"name":"[color]"},{"name":"fog"},{"name":"[fog]"},{"name":"map"},{"name":"[map]"},{"name":"alphaMap"},{"name":"[alphaMap]"},{"name":"sizeAttenuation"},{"name":"[sizeAttenuation]"},{"name":"size"},{"name":"[size]"}],"extends":"/html/elements/ngt-points-material"},{"name":"ngt-soft-shadow-material","attributes":[{"name":"color"},{"name":"[color]"},{"name":"blend"},{"name":"[blend]"},{"name":"opacity"},{"name":"[opacity]"},{"name":"alphaTest"},{"name":"[alphaTest]"},{"name":"map"},{"name":"[map]"}],"extends":"/html/elements/ngt-mesh-standard-material"},{"name":"ngt-spot-light-material","attributes":[{"name":"depth"},{"name":"[depth]"},{"name":"opacity"},{"name":"[opacity]"},{"name":"attenuation"},{"name":"[attenuation]"},{"name":"anglePower"},{"name":"[anglePower]"},{"name":"spotPosition"},{"name":"[spotPosition]"},{"name":"lightColor"},{"name":"[lightColor]"},{"name":"cameraNear"},{"name":"[cameraNear]"},{"name":"cameraFar"},{"name":"[cameraFar]"},{"name":"resolution"},{"name":"[resolution]"},{"name":"transparent"},{"name":"[transparent]"},{"name":"depthWrite"},{"name":"[depthWrite]"}],"extends":"/html/elements/ngt-shader-material"},{"name":"ngt-caustics-projection-material","attributes":[{"name":"color"},{"name":"[color]"},{"name":"causticsTexture"},{"name":"[causticsTexture]"},{"name":"causticsTextureB"},{"name":"[causticsTextureB]"},{"name":"lightProjMatrix"},{"name":"[lightProjMatrix]"},{"name":"lightViewMatrix"},{"name":"[lightViewMatrix]"}],"extends":"/html/elements/ngt-shader-material"},{"name":"ngt-position-mesh","attributes":[{"name":"instance"},{"name":"[instance]"},{"name":"color"},{"name":"[color]"}],"extends":"/html/elements/ngt-group"},{"name":"ngt-position-point","attributes":[{"name":"instance"},{"name":"[instance]"},{"name":"color"},{"name":"[color]"},{"name":"size"},{"name":"[size]"}],"extends":"/html/elements/ngt-group"},{"name":"ngt-segment-object","attributes":[{"name":"start"},{"name":"[start]"},{"name":"color"},{"name":"[color]"},{"name":"end"},{"name":"[end]"}],"extends":""}]}
@@ -4,54 +4,50 @@ import * as i0 from "@angular/core";
4
4
  export declare class NgtsComputedAttribute {
5
5
  compute: import("@angular/core").InputSignal<(geometry: BufferGeometry) => BufferAttribute>;
6
6
  name: import("@angular/core").InputSignal<string>;
7
- options: import("@angular/core").InputSignal<Partial<{
8
- set?: ((value: ArrayLike<number> | ArrayBufferView, offset?: number) => BufferAttribute) | undefined;
9
- name?: string | undefined;
10
- applyMatrix4?: ((m: import("three").Matrix4) => BufferAttribute) | undefined;
11
- toJSON?: (() => import("three").BufferAttributeJSON) | undefined;
12
- clone?: (() => BufferAttribute) | undefined;
13
- copy?: ((source: BufferAttribute) => BufferAttribute) | undefined;
14
- readonly count?: number | undefined;
15
- array?: import("three").TypedArray | undefined;
16
- itemSize?: number | undefined;
17
- usage?: import("three").Usage | undefined;
18
- gpuType?: import("three").AttributeGPUType | undefined;
19
- updateRanges?: {
7
+ options: import("@angular/core").InputSignal<Partial<import("angular-three").NgtExtendedColors<import("angular-three").NgtOverwrite<Partial<{
8
+ name: string;
9
+ clone: () => BufferAttribute;
10
+ toJSON: () => import("three").BufferAttributeJSON;
11
+ array: import("three").TypedArray;
12
+ itemSize: number;
13
+ usage: import("three").Usage;
14
+ gpuType: import("three").AttributeGPUType;
15
+ updateRanges: Array<{
20
16
  start: number;
21
17
  count: number;
22
- }[] | undefined;
23
- version?: number | undefined;
24
- normalized?: boolean | undefined;
25
- needsUpdate?: boolean | undefined;
26
- readonly isBufferAttribute?: true | undefined;
27
- onUploadCallback?: (() => void) | undefined;
28
- onUpload?: ((callback: () => void) => BufferAttribute) | undefined;
29
- setUsage?: ((usage: import("three").Usage) => BufferAttribute) | undefined;
30
- addUpdateRange?: ((start: number, count: number) => void) | undefined;
31
- clearUpdateRanges?: (() => void) | undefined;
32
- copyAt?: ((index1: number, attribute: BufferAttribute, index2: number) => BufferAttribute) | undefined;
33
- copyArray?: ((array: ArrayLike<number>) => BufferAttribute) | undefined;
34
- applyMatrix3?: ((m: import("three").Matrix3) => BufferAttribute) | undefined;
35
- applyNormalMatrix?: ((m: import("three").Matrix3) => BufferAttribute) | undefined;
36
- transformDirection?: ((m: import("three").Matrix4) => BufferAttribute) | undefined;
37
- getComponent?: ((index: number, component: number) => number) | undefined;
38
- setComponent?: ((index: number, component: number, value: number) => void) | undefined;
39
- getX?: ((index: number) => number) | undefined;
40
- setX?: ((index: number, x: number) => BufferAttribute) | undefined;
41
- getY?: ((index: number) => number) | undefined;
42
- setY?: ((index: number, y: number) => BufferAttribute) | undefined;
43
- getZ?: ((index: number) => number) | undefined;
44
- setZ?: ((index: number, z: number) => BufferAttribute) | undefined;
45
- getW?: ((index: number) => number) | undefined;
46
- setW?: ((index: number, z: number) => BufferAttribute) | undefined;
47
- setXY?: ((index: number, x: number, y: number) => BufferAttribute) | undefined;
48
- setXYZ?: ((index: number, x: number, y: number, z: number) => BufferAttribute) | undefined;
49
- setXYZW?: ((index: number, x: number, y: number, z: number, w: number) => BufferAttribute) | undefined;
50
- attach: string | string[] | import("angular-three").NgtAttachFunction;
51
- addEventListener: <TEventKey extends keyof import("angular-three").NgtNodeEventMap<BufferAttribute>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<BufferAttribute, typeof BufferAttribute>, ev: import("angular-three").NgtNodeEventMap<BufferAttribute>[TEventKey]) => any) => void;
52
- removeEventListener: <TEventKey extends keyof import("angular-three").NgtNodeEventMap<BufferAttribute>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<BufferAttribute, typeof BufferAttribute>, ev: import("angular-three").NgtNodeEventMap<BufferAttribute>[TEventKey]) => any) => void;
53
- __ngt_args__: [array: import("three").TypedArray, itemSize: number, normalized?: boolean | undefined];
54
- }>>;
18
+ }>;
19
+ version: number;
20
+ normalized: boolean;
21
+ readonly count: number;
22
+ needsUpdate: boolean;
23
+ readonly isBufferAttribute: true;
24
+ onUploadCallback: () => void;
25
+ onUpload: (callback: () => void) => BufferAttribute;
26
+ setUsage: (usage: import("three").Usage) => BufferAttribute;
27
+ addUpdateRange: (start: number, count: number) => void;
28
+ clearUpdateRanges: () => void;
29
+ copy: (source: BufferAttribute) => BufferAttribute;
30
+ copyAt: (index1: number, attribute: BufferAttribute, index2: number) => BufferAttribute;
31
+ copyArray: (array: ArrayLike<number>) => BufferAttribute;
32
+ applyMatrix3: (m: import("three").Matrix3) => BufferAttribute;
33
+ applyMatrix4: (m: import("three").Matrix4) => BufferAttribute;
34
+ applyNormalMatrix: (m: import("three").Matrix3) => BufferAttribute;
35
+ transformDirection: (m: import("three").Matrix4) => BufferAttribute;
36
+ set: (value: ArrayLike<number> | ArrayBufferView, offset?: number) => BufferAttribute;
37
+ getComponent: (index: number, component: number) => number;
38
+ setComponent: (index: number, component: number, value: number) => void;
39
+ getX: (index: number) => number;
40
+ setX: (index: number, x: number) => BufferAttribute;
41
+ getY: (index: number) => number;
42
+ setY: (index: number, y: number) => BufferAttribute;
43
+ getZ: (index: number) => number;
44
+ setZ: (index: number, z: number) => BufferAttribute;
45
+ getW: (index: number) => number;
46
+ setW: (index: number, z: number) => BufferAttribute;
47
+ setXY: (index: number, x: number, y: number) => BufferAttribute;
48
+ setXYZ: (index: number, x: number, y: number, z: number) => BufferAttribute;
49
+ setXYZW: (index: number, x: number, y: number, z: number, w: number) => BufferAttribute;
50
+ }>, import("angular-three").NgtNodeElement<BufferAttribute, typeof BufferAttribute>>>>>;
55
51
  bufferAttribute: BufferAttribute;
56
52
  attributeRef: import("@angular/core").Signal<ElementRef<BufferAttribute> | undefined>;
57
53
  constructor();
@@ -11,7 +11,7 @@ export interface NgtsDecalOptions extends Partial<NgtMesh> {
11
11
  export declare class NgtsDecal {
12
12
  mesh: import("@angular/core").InputSignal<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap> | ElementRef<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>> | null | undefined>;
13
13
  options: import("@angular/core").InputSignalWithTransform<NgtsDecalOptions, "" | Partial<NgtsDecalOptions>>;
14
- parameters: import("@angular/core").Signal<Omit<NgtsDecalOptions, "position" | "scale" | "rotation" | "debug" | "map" | "depthTest" | "polygonOffsetFactor">>;
14
+ parameters: import("@angular/core").Signal<Omit<NgtsDecalOptions, "position" | "scale" | "rotation" | "polygonOffsetFactor" | "depthTest" | "debug" | "map">>;
15
15
  meshRef: import("@angular/core").Signal<ElementRef<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>>>;
16
16
  helperRef: import("@angular/core").Signal<ElementRef<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>> | undefined>;
17
17
  protected map: import("@angular/core").Signal<Texture | null | undefined>;
@@ -14,7 +14,7 @@ export declare class NgtsHTML {
14
14
  groupRef: import("@angular/core").Signal<ElementRef<Group<import("three").Object3DEventMap>>>;
15
15
  occlusionMeshRef: import("@angular/core").Signal<ElementRef<Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>> | undefined>;
16
16
  occlusionGeometryRef: import("@angular/core").Signal<ElementRef<PlaneGeometry> | undefined>;
17
- occlude: import("@angular/core").Signal<boolean | "raycast" | ElementRef<Object3D<import("three").Object3DEventMap>>[] | Object3D<import("three").Object3DEventMap>[] | "blending">;
17
+ occlude: import("@angular/core").Signal<boolean | "raycast" | Object3D<import("three").Object3DEventMap>[] | ElementRef<Object3D<import("three").Object3DEventMap>>[] | "blending">;
18
18
  transform: import("@angular/core").Signal<boolean>;
19
19
  castShadow: import("@angular/core").Signal<boolean>;
20
20
  receiveShadow: import("@angular/core").Signal<boolean>;
@@ -62,7 +62,7 @@ export declare class NgtsSampler {
62
62
  mesh: import("@angular/core").InputSignal<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap> | ElementRef<Mesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>> | null>;
63
63
  instances: import("@angular/core").InputSignal<InstancedMesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").InstancedMeshEventMap> | ElementRef<InstancedMesh<BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").InstancedMeshEventMap>> | null>;
64
64
  options: import("@angular/core").InputSignalWithTransform<NgtsSamplerOptions, "" | Partial<NgtsSamplerOptions>>;
65
- parameters: import("@angular/core").Signal<Omit<NgtsSamplerOptions, "transform" | "weight" | "count">>;
65
+ parameters: import("@angular/core").Signal<Omit<NgtsSamplerOptions, "count" | "transform" | "weight">>;
66
66
  groupRef: import("@angular/core").Signal<ElementRef<Group<import("three").Object3DEventMap>> | undefined>;
67
67
  constructor();
68
68
  static ɵfac: i0.ɵɵFactoryDeclaration<NgtsSampler, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-three-soba",
3
- "version": "2.5.2",
3
+ "version": "2.6.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -57,35 +57,29 @@
57
57
  "esm": "./esm2022/angular-three-soba.mjs",
58
58
  "default": "./fesm2022/angular-three-soba.mjs"
59
59
  },
60
+ "./controls": {
61
+ "types": "./controls/index.d.ts",
62
+ "esm2022": "./esm2022/controls/angular-three-soba-controls.mjs",
63
+ "esm": "./esm2022/controls/angular-three-soba-controls.mjs",
64
+ "default": "./fesm2022/angular-three-soba-controls.mjs"
65
+ },
60
66
  "./abstractions": {
61
67
  "types": "./abstractions/index.d.ts",
62
68
  "esm2022": "./esm2022/abstractions/angular-three-soba-abstractions.mjs",
63
69
  "esm": "./esm2022/abstractions/angular-three-soba-abstractions.mjs",
64
70
  "default": "./fesm2022/angular-three-soba-abstractions.mjs"
65
71
  },
66
- "./cameras": {
67
- "types": "./cameras/index.d.ts",
68
- "esm2022": "./esm2022/cameras/angular-three-soba-cameras.mjs",
69
- "esm": "./esm2022/cameras/angular-three-soba-cameras.mjs",
70
- "default": "./fesm2022/angular-three-soba-cameras.mjs"
71
- },
72
- "./gizmos": {
73
- "types": "./gizmos/index.d.ts",
74
- "esm2022": "./esm2022/gizmos/angular-three-soba-gizmos.mjs",
75
- "esm": "./esm2022/gizmos/angular-three-soba-gizmos.mjs",
76
- "default": "./fesm2022/angular-three-soba-gizmos.mjs"
77
- },
78
72
  "./materials": {
79
73
  "types": "./materials/index.d.ts",
80
74
  "esm2022": "./esm2022/materials/angular-three-soba-materials.mjs",
81
75
  "esm": "./esm2022/materials/angular-three-soba-materials.mjs",
82
76
  "default": "./fesm2022/angular-three-soba-materials.mjs"
83
77
  },
84
- "./controls": {
85
- "types": "./controls/index.d.ts",
86
- "esm2022": "./esm2022/controls/angular-three-soba-controls.mjs",
87
- "esm": "./esm2022/controls/angular-three-soba-controls.mjs",
88
- "default": "./fesm2022/angular-three-soba-controls.mjs"
78
+ "./gizmos": {
79
+ "types": "./gizmos/index.d.ts",
80
+ "esm2022": "./esm2022/gizmos/angular-three-soba-gizmos.mjs",
81
+ "esm": "./esm2022/gizmos/angular-three-soba-gizmos.mjs",
82
+ "default": "./fesm2022/angular-three-soba-gizmos.mjs"
89
83
  },
90
84
  "./performances": {
91
85
  "types": "./performances/index.d.ts",
@@ -104,6 +98,12 @@
104
98
  "esm2022": "./esm2022/stats/angular-three-soba-stats.mjs",
105
99
  "esm": "./esm2022/stats/angular-three-soba-stats.mjs",
106
100
  "default": "./fesm2022/angular-three-soba-stats.mjs"
101
+ },
102
+ "./cameras": {
103
+ "types": "./cameras/index.d.ts",
104
+ "esm2022": "./esm2022/cameras/angular-three-soba-cameras.mjs",
105
+ "esm": "./esm2022/cameras/angular-three-soba-cameras.mjs",
106
+ "default": "./fesm2022/angular-three-soba-cameras.mjs"
107
107
  }
108
108
  },
109
109
  "peerDependencies": {
@@ -5,21 +5,16 @@ import { PositionMesh } from './position-mesh';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class NgtsInstance {
7
7
  options: import("@angular/core").InputSignal<Partial<{
8
- color?: import("three").ColorRepresentation | undefined;
9
- name?: string | undefined;
10
- visible?: boolean | undefined;
11
- userData?: Record<string, any> | undefined;
12
- attach: string | string[] | import("angular-three").NgtAttachFunction;
13
8
  addEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<PositionMesh>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<PositionMesh, typeof PositionMesh>, ev: import("angular-three").NgtNodeEventMap<PositionMesh>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
14
9
  removeEventListener: (<TEventKey extends keyof import("angular-three").NgtNodeEventMap<PositionMesh>>(type: TEventKey, listener: (this: import("angular-three").NgtNodeElement<PositionMesh, typeof PositionMesh>, ev: import("angular-three").NgtNodeEventMap<PositionMesh>[TEventKey]) => any) => void) & (<TEventKey extends keyof import("angular-three").NgtAllObject3DEventsMap>(type: TEventKey, listener: (this: any, ev: import("angular-three").NgtAllObject3DEventsMap[TEventKey]) => any) => void);
10
+ attach: string | string[] | import("angular-three").NgtAttachFunction;
15
11
  __ngt_args__: [];
16
- instance?: ElementRef<InstancedMesh> | InstancedMesh | null | undefined;
17
- readonly geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
18
- readonly isGroup?: true | undefined;
12
+ readonly type?: string | undefined;
13
+ toJSON?: ((meta?: import("three").JSONMeta) => import("three").Object3DJSON) | undefined;
19
14
  readonly isObject3D?: true | undefined;
20
15
  readonly id?: number | undefined;
21
16
  uuid?: string | undefined;
22
- readonly type?: string | undefined;
17
+ name?: string | undefined;
23
18
  parent?: import("three").Object3D<import("three").Object3DEventMap> | null | undefined;
24
19
  children?: import("three").Object3D<import("three").Object3DEventMap>[] | undefined;
25
20
  readonly modelViewMatrix?: Matrix4 | undefined;
@@ -28,11 +23,13 @@ export declare class NgtsInstance {
28
23
  matrixAutoUpdate?: boolean | undefined;
29
24
  matrixWorldAutoUpdate?: boolean | undefined;
30
25
  matrixWorldNeedsUpdate?: boolean | undefined;
26
+ visible?: boolean | undefined;
31
27
  castShadow?: boolean | undefined;
32
28
  receiveShadow?: boolean | undefined;
33
29
  frustumCulled?: boolean | undefined;
34
30
  renderOrder?: number | undefined;
35
31
  animations?: import("three").AnimationClip[] | undefined;
32
+ userData?: Record<string, any> | undefined;
36
33
  customDepthMaterial?: import("three").Material | undefined;
37
34
  customDistanceMaterial?: import("three").Material | undefined;
38
35
  onBeforeShadow?: ((renderer: import("three").WebGLRenderer, scene: import("three").Scene, camera: import("three").Camera, shadowCamera: import("three").Camera, geometry: import("three").BufferGeometry, depthMaterial: import("three").Material, group: import("three").Group) => void) | undefined;
@@ -78,11 +75,14 @@ export declare class NgtsInstance {
78
75
  updateMatrix?: (() => void) | undefined;
79
76
  updateMatrixWorld?: ((force?: boolean) => void) | undefined;
80
77
  updateWorldMatrix?: ((updateParents: boolean, updateChildren: boolean) => void) | undefined;
81
- toJSON?: ((meta?: import("three").JSONMeta) => import("three").Object3DJSON) | undefined;
82
78
  clone?: ((recursive?: boolean) => PositionMesh) | undefined;
83
79
  copy?: ((object: import("three").Object3D, recursive?: boolean) => PositionMesh) | undefined;
84
80
  hasEventListener?: (<T extends keyof import("three").Object3DEventMap>(type: T, listener: import("three").EventListener<import("three").Object3DEventMap[T], T, PositionMesh>) => boolean) | undefined;
85
81
  dispatchEvent?: (<T extends keyof import("three").Object3DEventMap>(event: import("three").BaseEvent<T> & import("three").Object3DEventMap[T]) => void) | undefined;
82
+ color?: import("three").ColorRepresentation | undefined;
83
+ instance?: ElementRef<InstancedMesh> | InstancedMesh | null | undefined;
84
+ readonly geometry?: import("three").BufferGeometry<import("three").NormalBufferAttributes> | undefined;
85
+ readonly isGroup?: true | undefined;
86
86
  position: import("angular-three").NgtVector3;
87
87
  up: import("angular-three").NgtVector3;
88
88
  scale: import("angular-three").NgtVector3;
@@ -107,7 +107,7 @@ export interface NgtsInstancesOptions extends Partial<NgtInstancedMesh> {
107
107
  export declare class NgtsInstances {
108
108
  protected readonly DynamicDrawUsage: 35048;
109
109
  options: import("@angular/core").InputSignalWithTransform<NgtsInstancesOptions, "" | Partial<NgtsInstancesOptions>>;
110
- protected parameters: import("@angular/core").Signal<Omit<NgtsInstancesOptions, "limit" | "range" | "frames">>;
110
+ protected parameters: import("@angular/core").Signal<Omit<NgtsInstancesOptions, "frames" | "range" | "limit">>;
111
111
  instancedMeshRef: import("@angular/core").Signal<ElementRef<InstancedMesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").InstancedMeshEventMap>>>;
112
112
  private limit;
113
113
  protected buffers: import("@angular/core").Signal<{