angular-three-soba 4.0.0-next.97 → 4.0.0-next.98

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 (69) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +55 -55
  2. package/abstractions/lib/edges.d.ts +55 -55
  3. package/abstractions/lib/helper.d.ts +6 -1
  4. package/abstractions/lib/line.d.ts +1 -1
  5. package/abstractions/lib/text-3d.d.ts +1 -1
  6. package/cameras/lib/cube-camera.d.ts +7 -2
  7. package/cameras/lib/orthographic-camera.d.ts +1 -1
  8. package/cameras/lib/perspective-camera.d.ts +1 -1
  9. package/fesm2022/angular-three-soba-abstractions.mjs +16 -11
  10. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  11. package/fesm2022/angular-three-soba-cameras.mjs +16 -11
  12. package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
  13. package/fesm2022/angular-three-soba-controls.mjs +7 -7
  14. package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
  15. package/fesm2022/angular-three-soba-gizmos.mjs +10 -10
  16. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  17. package/fesm2022/angular-three-soba-loaders.mjs +186 -49
  18. package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
  19. package/fesm2022/angular-three-soba-materials.mjs +14 -14
  20. package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
  21. package/fesm2022/angular-three-soba-misc.mjs +38 -18
  22. package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
  23. package/fesm2022/angular-three-soba-performances.mjs +6 -6
  24. package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
  25. package/fesm2022/angular-three-soba-staging.mjs +142 -54
  26. package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
  27. package/gizmos/lib/pivot-controls/axis-arrow.d.ts +1 -1
  28. package/gizmos/lib/pivot-controls/axis-rotator.d.ts +1 -1
  29. package/gizmos/lib/pivot-controls/pivot-controls.d.ts +1 -1
  30. package/gizmos/lib/pivot-controls/plane-slider.d.ts +1 -1
  31. package/gizmos/lib/pivot-controls/scaling-sphere.d.ts +1 -1
  32. package/loaders/index.d.ts +4 -0
  33. package/loaders/lib/fbx-loader.d.ts +9 -1
  34. package/loaders/lib/fbx-resource.d.ts +7 -0
  35. package/loaders/lib/font-loader.d.ts +6 -20
  36. package/loaders/lib/font-resource.d.ts +28 -0
  37. package/loaders/lib/gltf-loader.d.ts +8 -0
  38. package/loaders/lib/gltf-resource.d.ts +32 -0
  39. package/loaders/lib/loader.d.ts +2 -2
  40. package/loaders/lib/progress.d.ts +6 -1
  41. package/loaders/lib/texture-loader.d.ts +8 -0
  42. package/loaders/lib/texture-resource.d.ts +10 -0
  43. package/materials/lib/custom-shader-material.d.ts +2 -2
  44. package/materials/lib/mesh-portal-material.d.ts +1 -1
  45. package/materials/lib/mesh-refraction-material.d.ts +1 -1
  46. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  47. package/misc/lib/animations.d.ts +6 -1
  48. package/misc/lib/decal.d.ts +1 -1
  49. package/misc/lib/depth-buffer.d.ts +6 -1
  50. package/misc/lib/fbo.d.ts +7 -2
  51. package/misc/lib/intersect.d.ts +6 -1
  52. package/package.json +5 -5
  53. package/performances/lib/bvh.d.ts +1 -1
  54. package/performances/lib/instances/instances.d.ts +1 -1
  55. package/performances/lib/points/points.d.ts +1 -1
  56. package/performances/lib/segments/segments.d.ts +23 -23
  57. package/staging/index.d.ts +1 -0
  58. package/staging/lib/accumulative-shadows.d.ts +1 -1
  59. package/staging/lib/caustics.d.ts +1 -1
  60. package/staging/lib/contact-shadows.d.ts +1 -1
  61. package/staging/lib/environment/environment-resource.d.ts +35 -0
  62. package/staging/lib/environment/environment.d.ts +3 -3
  63. package/staging/lib/environment/inject-environment.d.ts +8 -24
  64. package/staging/lib/lightformer.d.ts +1 -1
  65. package/staging/lib/matcap-texture.d.ts +17 -4
  66. package/staging/lib/normal-texture.d.ts +20 -7
  67. package/staging/lib/render-texture.d.ts +1 -1
  68. package/staging/lib/spot-light.d.ts +4 -4
  69. package/staging/lib/stage.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-cameras.mjs","sources":["../../../../libs/soba/cameras/src/lib/camera-content.ts","../../../../libs/soba/cameras/src/lib/cube-camera.ts","../../../../libs/soba/cameras/src/lib/orthographic-camera.ts","../../../../libs/soba/cameras/src/lib/perspective-camera.ts","../../../../libs/soba/cameras/src/angular-three-soba-cameras.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport * as THREE from 'three';\n\n@Directive({ selector: 'ng-template[cameraContent]' })\nexport class NgtsCameraContent {\n\tstatic ngTemplateContextGuard(_: NgtsCameraContent, ctx: unknown): ctx is { $implicit: THREE.Texture } {\n\t\treturn true;\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tTemplateRef,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectBeforeRender, injectStore, merge, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface CubeCameraOptions {\n\t/** Resolution of the FBO, 256 */\n\tresolution?: number;\n\t/** Camera near, 0.1 */\n\tnear?: number;\n\t/** Camera far, 1000 */\n\tfar?: number;\n\t/** Custom environment map that is temporarily set as the scenes background */\n\tenvMap?: THREE.Texture;\n\t/** Custom fog that is temporarily set as the scenes fog */\n\tfog?: THREE.Fog | THREE.FogExp2;\n}\n\nexport function injectCubeCamera(options: () => CubeCameraOptions, { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(injectCubeCamera, injector, () => {\n\t\tconst store = injectStore();\n\n\t\t// backfill the options with default values\n\t\tconst mergedOptions = merge(options, { resolution: 256, near: 0.1, far: 1000 }, 'backfill');\n\t\tconst resolution = pick(mergedOptions, 'resolution');\n\t\tconst near = pick(mergedOptions, 'near');\n\t\tconst far = pick(mergedOptions, 'far');\n\n\t\tconst fbo = computed(() => {\n\t\t\tconst fbo = new THREE.WebGLCubeRenderTarget(resolution());\n\t\t\tfbo.texture.type = THREE.HalfFloatType;\n\t\t\treturn fbo;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst _fbo = fbo();\n\t\t\tonCleanup(() => _fbo.dispose());\n\t\t});\n\n\t\tconst cubeCamera = computed(() => new THREE.CubeCamera(near()!, far()!, fbo()));\n\t\tconst update = () => {\n\t\t\tconst [scene, gl, camera, { envMap, fog }] = [\n\t\t\t\tstore.scene(),\n\t\t\t\tstore.gl(),\n\t\t\t\tcubeCamera(),\n\t\t\t\tuntracked(mergedOptions),\n\t\t\t];\n\t\t\tlet originalFog: THREE.Fog | THREE.FogExp2;\n\t\t\tlet originalBackground: THREE.Texture;\n\n\t\t\toriginalFog = scene.fog as THREE.Fog | THREE.FogExp2;\n\t\t\toriginalBackground = scene.background as THREE.Texture;\n\t\t\tscene.background = envMap || originalBackground;\n\t\t\tscene.fog = fog || originalFog;\n\t\t\tcamera.update(gl, scene);\n\t\t\tscene.fog = originalFog;\n\t\t\tscene.background = originalBackground;\n\t\t};\n\n\t\treturn { fbo, camera: cubeCamera, update };\n\t});\n}\n\nexport type NgtsCubeCameraOptions = Partial<NgtThreeElements['ngt-group']> &\n\tCubeCameraOptions & {\n\t\tframes: number;\n\t};\n\nconst defaultOptions: NgtsCubeCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tnear: 0.1,\n\tfar: 1000,\n};\n\n@Component({\n\tselector: 'ngts-cube-camera',\n\ttemplate: `\n\t\t<ngt-group [parameters]=\"parameters()\">\n\t\t\t<ngt-primitive *args=\"[camera()]\" />\n\t\t\t<ngt-group #group>\n\t\t\t\t<ng-container\n\t\t\t\t\t[ngTemplateOutlet]=\"cameraContent() ?? null\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: texture() }\"\n\t\t\t\t/>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCubeCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['fog', 'near', 'far', 'envMap', 'resolution', 'frames']);\n\n\tprivate cubeCamera = injectCubeCamera(pick(this.options, ['near', 'far', 'envMap', 'fog', 'resolution']));\n\n\tprotected camera = this.cubeCamera.camera;\n\tprotected texture = pick(this.cubeCamera.fbo, 'texture');\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tprotected cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tlet count = 0;\n\t\tinjectBeforeRender(() => {\n\t\t\tconst group = this.groupRef().nativeElement;\n\t\t\tif (!group) return;\n\n\t\t\tconst frames = this.options().frames;\n\t\t\tif (frames === Infinity || count < frames) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tthis.cubeCamera.update();\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tTemplateRef,\n\tcomputed,\n\tcontentChild,\n\teffect,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtThreeElements, extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, OrthographicCamera } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface NgtsOrthographicCameraOptions extends Partial<NgtThreeElements['ngt-orthographic-camera']> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: THREE.Texture;\n}\n\nconst defaultOptions: NgtsOrthographicCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-orthographic-camera',\n\ttemplate: `\n\t\t<ngt-orthographic-camera\n\t\t\t#camera\n\t\t\t[left]=\"left()\"\n\t\t\t[right]=\"right()\"\n\t\t\t[top]=\"top()\"\n\t\t\t[bottom]=\"bottom()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-container [ngTemplateOutlet]=\"content() ?? null\" />\n\t\t</ngt-orthographic-camera>\n\n\t\t<ngt-group #group>\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"cameraContent() ?? null\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: fbo.texture }\"\n\t\t\t/>\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrthographicCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'envMap',\n\t\t'makeDefault',\n\t\t'frames',\n\t\t'resolution',\n\t\t'left',\n\t\t'top',\n\t\t'bottom',\n\t\t'right',\n\t]);\n\n\tprotected content = contentChild(TemplateRef);\n\tprotected cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tcameraRef = viewChild.required<ElementRef<THREE.OrthographicCamera>>('camera');\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate store = injectStore();\n\n\tprivate _left = pick(this.options, 'left');\n\tprivate _right = pick(this.options, 'right');\n\tprivate _top = pick(this.options, 'top');\n\tprivate _bottom = pick(this.options, 'bottom');\n\n\tprotected left = computed(() => this._left() ?? this.store.size.width() / -2);\n\tprotected right = computed(() => this._right() ?? this.store.size.width() / 2);\n\tprotected top = computed(() => this._top() ?? this.store.size.height() / 2);\n\tprotected bottom = computed(() => this._bottom() ?? this.store.size.height() / -2);\n\n\tprivate manual = pick(this.options, 'manual');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tprotected fbo = injectFBO(() => ({ width: this.resolution() }));\n\n\tconstructor() {\n\t\textend({ OrthographicCamera, Group });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst oldCam = this.store.snapshot.camera;\n\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\tonCleanup(() => this.store.update(() => ({ camera: oldCam })));\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst manual = this.manual();\n\t\t\tif (manual) return;\n\n\t\t\tconst camera = this.cameraRef().nativeElement;\n\t\t\tcamera.updateProjectionMatrix();\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: THREE.Color | THREE.Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo,\n\t\t\t];\n\t\t\tif (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tTemplateRef,\n\tcontentChild,\n\teffect,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtThreeElements, extend, injectBeforeRender, injectStore, omit, pick } from 'angular-three';\nimport { injectFBO } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, PerspectiveCamera } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface NgtsPerspectiveCameraOptions extends Partial<NgtThreeElements['ngt-perspective-camera']> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: THREE.Texture;\n}\n\nconst defaultOptions: NgtsPerspectiveCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-perspective-camera',\n\ttemplate: `\n\t\t<ngt-perspective-camera #camera [parameters]=\"parameters()\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"content() ?? null\" />\n\t\t</ngt-perspective-camera>\n\n\t\t<ngt-group #group>\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"cameraContent() ?? null\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: fbo.texture }\"\n\t\t\t/>\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPerspectiveCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['envMap', 'makeDefault', 'frames', 'resolution']);\n\n\tprotected content = contentChild(TemplateRef);\n\tprotected cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tcameraRef = viewChild.required<ElementRef<THREE.PerspectiveCamera>>('camera');\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate store = injectStore();\n\n\tprivate manual = pick(this.options, 'manual');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate resolution = pick(this.options, 'resolution');\n\tprotected fbo = injectFBO(() => ({ width: this.resolution() }));\n\n\tconstructor() {\n\t\textend({ PerspectiveCamera, Group });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst camera = this.cameraRef().nativeElement;\n\t\t\tconst oldCam = this.store.snapshot.camera;\n\t\t\tthis.store.update({ camera });\n\t\t\tonCleanup(() => this.store.update(() => ({ camera: oldCam })));\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst camera = this.cameraRef().nativeElement;\n\t\t\tcamera.updateProjectionMatrix();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst manual = this.manual();\n\t\t\tif (manual) return;\n\t\t\tconst [camera, width, height] = [\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.store.size.width(),\n\t\t\t\tthis.store.size.height(),\n\t\t\t];\n\t\t\tcamera.aspect = width / height;\n\t\t\tcamera.updateProjectionMatrix();\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: THREE.Color | THREE.Texture | null = null;\n\t\tinjectBeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo,\n\t\t\t];\n\t\t\tif (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-cameras.mjs","sources":["../../../../libs/soba/cameras/src/lib/camera-content.ts","../../../../libs/soba/cameras/src/lib/cube-camera.ts","../../../../libs/soba/cameras/src/lib/orthographic-camera.ts","../../../../libs/soba/cameras/src/lib/perspective-camera.ts","../../../../libs/soba/cameras/src/angular-three-soba-cameras.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport * as THREE from 'three';\n\n@Directive({ selector: 'ng-template[cameraContent]' })\nexport class NgtsCameraContent {\n\tstatic ngTemplateContextGuard(_: NgtsCameraContent, ctx: unknown): ctx is { $implicit: THREE.Texture } {\n\t\treturn true;\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\tTemplateRef,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { beforeRender, extend, injectStore, merge, NgtArgs, NgtThreeElements, omit, pick } from 'angular-three';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface CubeCameraOptions {\n\t/** Resolution of the FBO, 256 */\n\tresolution?: number;\n\t/** Camera near, 0.1 */\n\tnear?: number;\n\t/** Camera far, 1000 */\n\tfar?: number;\n\t/** Custom environment map that is temporarily set as the scenes background */\n\tenvMap?: THREE.Texture;\n\t/** Custom fog that is temporarily set as the scenes fog */\n\tfog?: THREE.Fog | THREE.FogExp2;\n}\n\nexport function cubeCamera(options: () => CubeCameraOptions, { injector }: { injector?: Injector } = {}) {\n\treturn assertInjector(cubeCamera, injector, () => {\n\t\tconst store = injectStore();\n\n\t\t// backfill the options with default values\n\t\tconst mergedOptions = merge(options, { resolution: 256, near: 0.1, far: 1000 }, 'backfill');\n\t\tconst resolution = pick(mergedOptions, 'resolution');\n\t\tconst near = pick(mergedOptions, 'near');\n\t\tconst far = pick(mergedOptions, 'far');\n\n\t\tconst fbo = computed(() => {\n\t\t\tconst fbo = new THREE.WebGLCubeRenderTarget(resolution());\n\t\t\tfbo.texture.type = THREE.HalfFloatType;\n\t\t\treturn fbo;\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst _fbo = fbo();\n\t\t\tonCleanup(() => _fbo.dispose());\n\t\t});\n\n\t\tconst cubeCamera = computed(() => new THREE.CubeCamera(near()!, far()!, fbo()));\n\t\tconst update = () => {\n\t\t\tconst [scene, gl, camera, { envMap, fog }] = [\n\t\t\t\tstore.scene(),\n\t\t\t\tstore.gl(),\n\t\t\t\tcubeCamera(),\n\t\t\t\tuntracked(mergedOptions),\n\t\t\t];\n\t\t\tlet originalFog: THREE.Fog | THREE.FogExp2;\n\t\t\tlet originalBackground: THREE.Texture;\n\n\t\t\toriginalFog = scene.fog as THREE.Fog | THREE.FogExp2;\n\t\t\toriginalBackground = scene.background as THREE.Texture;\n\t\t\tscene.background = envMap || originalBackground;\n\t\t\tscene.fog = fog || originalFog;\n\t\t\tcamera.update(gl, scene);\n\t\t\tscene.fog = originalFog;\n\t\t\tscene.background = originalBackground;\n\t\t};\n\n\t\treturn { fbo, camera: cubeCamera, update };\n\t});\n}\n\n/**\n * @deprecated Use cubeCamera instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectCubeCamera = cubeCamera;\n\nexport type NgtsCubeCameraOptions = Partial<NgtThreeElements['ngt-group']> &\n\tCubeCameraOptions & {\n\t\tframes: number;\n\t};\n\nconst defaultOptions: NgtsCubeCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tnear: 0.1,\n\tfar: 1000,\n};\n\n@Component({\n\tselector: 'ngts-cube-camera',\n\ttemplate: `\n\t\t<ngt-group [parameters]=\"parameters()\">\n\t\t\t<ngt-primitive *args=\"[camera()]\" />\n\t\t\t<ngt-group #group>\n\t\t\t\t<ng-container\n\t\t\t\t\t[ngTemplateOutlet]=\"cameraContent() ?? null\"\n\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: texture() }\"\n\t\t\t\t/>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\timports: [NgtArgs, NgTemplateOutlet],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCubeCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['fog', 'near', 'far', 'envMap', 'resolution', 'frames']);\n\n\tprivate cubeCamera = cubeCamera(pick(this.options, ['near', 'far', 'envMap', 'fog', 'resolution']));\n\n\tprotected camera = this.cubeCamera.camera;\n\tprotected texture = pick(this.cubeCamera.fbo, 'texture');\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tprotected cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tlet count = 0;\n\t\tbeforeRender(() => {\n\t\t\tconst group = this.groupRef().nativeElement;\n\t\t\tif (!group) return;\n\n\t\t\tconst frames = this.options().frames;\n\t\t\tif (frames === Infinity || count < frames) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tthis.cubeCamera.update();\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tTemplateRef,\n\tcomputed,\n\tcontentChild,\n\teffect,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtThreeElements, beforeRender, extend, injectStore, omit, pick } from 'angular-three';\nimport { fbo } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, OrthographicCamera } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface NgtsOrthographicCameraOptions extends Partial<NgtThreeElements['ngt-orthographic-camera']> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: THREE.Texture;\n}\n\nconst defaultOptions: NgtsOrthographicCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-orthographic-camera',\n\ttemplate: `\n\t\t<ngt-orthographic-camera\n\t\t\t#camera\n\t\t\t[left]=\"left()\"\n\t\t\t[right]=\"right()\"\n\t\t\t[top]=\"top()\"\n\t\t\t[bottom]=\"bottom()\"\n\t\t\t[parameters]=\"parameters()\"\n\t\t>\n\t\t\t<ng-container [ngTemplateOutlet]=\"content() ?? null\" />\n\t\t</ngt-orthographic-camera>\n\n\t\t<ngt-group #group>\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"cameraContent() ?? null\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: fbo.texture }\"\n\t\t\t/>\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrthographicCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'envMap',\n\t\t'makeDefault',\n\t\t'frames',\n\t\t'resolution',\n\t\t'left',\n\t\t'top',\n\t\t'bottom',\n\t\t'right',\n\t]);\n\n\tprotected content = contentChild(TemplateRef);\n\tprotected cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tcameraRef = viewChild.required<ElementRef<THREE.OrthographicCamera>>('camera');\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate store = injectStore();\n\n\tprivate _left = pick(this.options, 'left');\n\tprivate _right = pick(this.options, 'right');\n\tprivate _top = pick(this.options, 'top');\n\tprivate _bottom = pick(this.options, 'bottom');\n\n\tprotected left = computed(() => this._left() ?? this.store.size.width() / -2);\n\tprotected right = computed(() => this._right() ?? this.store.size.width() / 2);\n\tprotected top = computed(() => this._top() ?? this.store.size.height() / 2);\n\tprotected bottom = computed(() => this._bottom() ?? this.store.size.height() / -2);\n\n\tprivate manual = pick(this.options, 'manual');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate resolution = pick(this.options, 'resolution');\n\n\tprotected fbo = fbo(() => ({ width: this.resolution() }));\n\n\tconstructor() {\n\t\textend({ OrthographicCamera, Group });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst oldCam = this.store.snapshot.camera;\n\t\t\tthis.store.update({ camera: this.cameraRef().nativeElement });\n\t\t\tonCleanup(() => this.store.update(() => ({ camera: oldCam })));\n\t\t});\n\n\t\teffect(() => {\n\t\t\tthis.cameraRef().nativeElement.updateProjectionMatrix();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst manual = this.manual();\n\t\t\tif (manual) return;\n\n\t\t\tconst camera = this.cameraRef().nativeElement;\n\t\t\tcamera.updateProjectionMatrix();\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: THREE.Color | THREE.Texture | null = null;\n\t\tbeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo,\n\t\t\t];\n\t\t\tif (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\tTemplateRef,\n\tcontentChild,\n\teffect,\n\tinput,\n\tviewChild,\n} from '@angular/core';\nimport { NgtThreeElements, beforeRender, extend, injectStore, omit, pick } from 'angular-three';\nimport { fbo } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group, PerspectiveCamera } from 'three';\nimport { NgtsCameraContent } from './camera-content';\n\nexport interface NgtsPerspectiveCameraOptions extends Partial<NgtThreeElements['ngt-perspective-camera']> {\n\t/** Registers the camera as the system default, fiber will start rendering with it */\n\tmakeDefault?: boolean;\n\t/** Making it manual will stop responsiveness and you have to calculate aspect ratio yourself. */\n\tmanual?: boolean;\n\t/** Number of frames to render, Infinity */\n\tframes: number;\n\t/** Resolution of the FBO, 256 */\n\tresolution: number;\n\t/** Optional environment map for functional use */\n\tenvMap?: THREE.Texture;\n}\n\nconst defaultOptions: NgtsPerspectiveCameraOptions = {\n\tframes: Infinity,\n\tresolution: 256,\n\tmakeDefault: false,\n\tmanual: false,\n};\n\n@Component({\n\tselector: 'ngts-perspective-camera',\n\ttemplate: `\n\t\t<ngt-perspective-camera #camera [parameters]=\"parameters()\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"content() ?? null\" />\n\t\t</ngt-perspective-camera>\n\n\t\t<ngt-group #group>\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"cameraContent() ?? null\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: fbo.texture }\"\n\t\t\t/>\n\t\t</ngt-group>\n\t`,\n\timports: [NgTemplateOutlet],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPerspectiveCamera {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['envMap', 'makeDefault', 'frames', 'resolution']);\n\n\tprotected content = contentChild(TemplateRef);\n\tprotected cameraContent = contentChild(NgtsCameraContent, { read: TemplateRef });\n\n\tcameraRef = viewChild.required<ElementRef<THREE.PerspectiveCamera>>('camera');\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate store = injectStore();\n\n\tprivate manual = pick(this.options, 'manual');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate resolution = pick(this.options, 'resolution');\n\tprotected fbo = fbo(() => ({ width: this.resolution() }));\n\n\tconstructor() {\n\t\textend({ PerspectiveCamera, Group });\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst camera = this.cameraRef().nativeElement;\n\t\t\tconst oldCam = this.store.snapshot.camera;\n\t\t\tthis.store.update({ camera });\n\t\t\tonCleanup(() => this.store.update(() => ({ camera: oldCam })));\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst camera = this.cameraRef().nativeElement;\n\t\t\tcamera.updateProjectionMatrix();\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst manual = this.manual();\n\t\t\tif (manual) return;\n\t\t\tconst [camera, width, height] = [\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.store.size.width(),\n\t\t\t\tthis.store.size.height(),\n\t\t\t];\n\t\t\tcamera.aspect = width / height;\n\t\t\tcamera.updateProjectionMatrix();\n\t\t});\n\n\t\tlet count = 0;\n\t\tlet oldEnvMap: THREE.Color | THREE.Texture | null = null;\n\t\tbeforeRender(({ gl, scene }) => {\n\t\t\tconst [{ frames, envMap }, group, camera, fbo] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t\tthis.cameraRef().nativeElement,\n\t\t\t\tthis.fbo,\n\t\t\t];\n\t\t\tif (this.cameraContent() && group && camera && fbo && (frames === Infinity || count < frames)) {\n\t\t\t\tgroup.visible = false;\n\t\t\t\tgl.setRenderTarget(fbo);\n\t\t\t\toldEnvMap = scene.background;\n\t\t\t\tif (envMap) scene.background = envMap;\n\t\t\t\tgl.render(scene, camera);\n\t\t\t\tscene.background = oldEnvMap;\n\t\t\t\tgl.setRenderTarget(null);\n\t\t\t\tgroup.visible = true;\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { input, output, computed, effect, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, model, inject, untracked, ElementRef, Directive } from '@angular/core';
3
- import { omit, injectStore, pick, injectBeforeRender, NgtArgs, NgtHTML, provideHTMLDomElement } from 'angular-three';
3
+ import { omit, injectStore, pick, beforeRender, NgtArgs, NgtHTML, provideHTMLDomElement } from 'angular-three';
4
4
  import CameraControls from 'camera-controls';
5
5
  import { mergeInputs } from 'ngxtension/inject-inputs';
6
6
  import * as THREE from 'three';
@@ -53,7 +53,7 @@ class NgtsCameraControls {
53
53
  this.store.update({ controls: controls });
54
54
  onCleanup(() => void this.store.update({ controls: oldControls }));
55
55
  });
56
- injectBeforeRender(({ delta }) => {
56
+ beforeRender(({ delta }) => {
57
57
  const controls = this.controls();
58
58
  if (controls?.enabled) {
59
59
  controls.update(delta);
@@ -156,7 +156,7 @@ class NgtsOrbitControls {
156
156
  return new OrbitControls(controlsCamera);
157
157
  });
158
158
  this.enableDamping = pick(this.options, 'enableDamping');
159
- injectBeforeRender(() => {
159
+ beforeRender(() => {
160
160
  const controls = this.controls();
161
161
  if (controls.enabled)
162
162
  controls.update();
@@ -386,7 +386,7 @@ class NgtsScrollControls {
386
386
  });
387
387
  });
388
388
  let last = 0;
389
- injectBeforeRender(({ delta }) => {
389
+ beforeRender(({ delta }) => {
390
390
  last = this.offset;
391
391
  easing.damp(this, 'offset', this.scroll, this.damping(), delta, this.maxSpeed(), undefined, this.eps());
392
392
  easing.damp(this, 'delta', Math.abs(last - this.offset), this.damping(), delta, this.maxSpeed(), undefined, this.eps());
@@ -436,7 +436,7 @@ class NgtsCanvasScrollContent {
436
436
  this.host = inject(ElementRef);
437
437
  this.scrollControls = inject(NgtsScrollControls);
438
438
  this.store = injectStore();
439
- injectBeforeRender(() => {
439
+ beforeRender(() => {
440
440
  const group = this.host.nativeElement;
441
441
  group.position.x = this.scrollControls.horizontal()
442
442
  ? -this.store.snapshot.viewport.width * (this.scrollControls.pages() - 1) * this.scrollControls.offset
@@ -459,7 +459,7 @@ class NgtsHTMLScrollContent extends NgtHTML {
459
459
  this.scrollControls = inject(NgtsScrollControls);
460
460
  this.store = injectStore();
461
461
  this.host = inject(ElementRef);
462
- injectBeforeRender(() => {
462
+ beforeRender(() => {
463
463
  if (this.scrollControls.delta > this.scrollControls.eps()) {
464
464
  this.host.nativeElement.style.transform = `translate3d(${this.scrollControls.horizontal()
465
465
  ? -this.store.snapshot.size.width *
@@ -503,7 +503,7 @@ class NgtsTrackballControls {
503
503
  return new TrackballControls(camera);
504
504
  return new TrackballControls(this.store.camera());
505
505
  });
506
- injectBeforeRender(() => {
506
+ beforeRender(() => {
507
507
  const controls = this.controls();
508
508
  if (controls.enabled)
509
509
  controls.update();
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-soba-controls.mjs","sources":["../../../../libs/soba/controls/src/lib/camera-controls.ts","../../../../libs/soba/controls/src/lib/orbit-controls.ts","../../../../libs/soba/controls/src/lib/scroll-controls.ts","../../../../libs/soba/controls/src/lib/trackball-controls.ts","../../../../libs/soba/controls/src/angular-three-soba-controls.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tinput,\n\toutput,\n} from '@angular/core';\nimport { injectBeforeRender, injectStore, NgtArgs, NgtCamera, omit, pick } from 'angular-three';\nimport CameraControls from 'camera-controls';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n\nexport interface NgtsCameraControlsOptions {\n\tcamera?: NgtCamera;\n\tdomElement?: HTMLElement;\n\tmakeDefault: boolean;\n\tregress: boolean;\n}\n\nconst defaultOptions: Partial<CameraControls> & NgtsCameraControlsOptions = {\n\tmakeDefault: false,\n\tregress: false,\n};\n\n@Component({\n\tselector: 'ngts-camera-controls',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\timports: [NgtArgs],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCameraControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement']);\n\n\tchanged = output<any>();\n\tstarted = output<any>();\n\tended = output<any>();\n\n\tprivate store = injectStore();\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate regress = pick(this.options, 'regress');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tcontrols = computed(() => {\n\t\tconst [camera, defaultCamera] = [this.camera(), this.store.camera()];\n\t\treturn new CameraControls(camera || defaultCamera);\n\t});\n\n\tconstructor() {\n\t\t// to allow for tree shaking, we only import the subset of THREE that is used by camera-controls\n\t\t// see https://github.com/yomotsu/camera-controls#important\n\t\tCameraControls.install({\n\t\t\tTHREE: {\n\t\t\t\tBox3: THREE.Box3,\n\t\t\t\tMathUtils: { clamp: THREE.MathUtils.clamp },\n\t\t\t\tMatrix4: THREE.Matrix4,\n\t\t\t\tQuaternion: THREE.Quaternion,\n\t\t\t\tRaycaster: THREE.Raycaster,\n\t\t\t\tSphere: THREE.Sphere,\n\t\t\t\tSpherical: THREE.Spherical,\n\t\t\t\tVector2: THREE.Vector2,\n\t\t\t\tVector3: THREE.Vector3,\n\t\t\t\tVector4: THREE.Vector4,\n\t\t\t},\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst controls = this.controls();\n\t\t\tconst oldControls = this.store.snapshot.controls;\n\t\t\tthis.store.update({ controls: controls as unknown as THREE.EventDispatcher });\n\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t});\n\n\t\tinjectBeforeRender(\n\t\t\t({ delta }) => {\n\t\t\t\tconst controls = this.controls();\n\t\t\t\tif (controls?.enabled) {\n\t\t\t\t\tcontrols.update(delta);\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [domElement, eventsElement, glDomElement, controls] = [\n\t\t\t\tthis.domElement(),\n\t\t\t\tthis.store.events.connected?.(),\n\t\t\t\tthis.store.gl.domElement(),\n\t\t\t\tthis.controls(),\n\t\t\t];\n\t\t\tcontrols.connect(domElement || eventsElement || glDomElement);\n\t\t\tonCleanup(() => controls.disconnect());\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst controls = this.controls();\n\t\t\tif (!controls) return;\n\n\t\t\tconst [regress, performanceRegress, invalidate] = [\n\t\t\t\tthis.regress(),\n\t\t\t\tthis.store.performance.regress(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t];\n\n\t\t\tconst callback = (e: any) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t\tthis.changed.emit(e);\n\t\t\t};\n\n\t\t\tconst startCallback = this.started.emit.bind(this.started);\n\t\t\tconst endCallback = this.ended.emit.bind(this.ended);\n\n\t\t\tcontrols.addEventListener('update', callback);\n\t\t\tcontrols.addEventListener('controlstart', startCallback);\n\t\t\tcontrols.addEventListener('controlend', endCallback);\n\t\t\tcontrols.addEventListener('control', callback);\n\t\t\tcontrols.addEventListener('transitionstart', callback);\n\t\t\tcontrols.addEventListener('wake', callback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('update', callback);\n\t\t\t\tcontrols.removeEventListener('controlstart', startCallback);\n\t\t\t\tcontrols.removeEventListener('controlend', endCallback);\n\t\t\t\tcontrols.removeEventListener('control', callback);\n\t\t\t\tcontrols.removeEventListener('transitionstart', callback);\n\t\t\t\tcontrols.removeEventListener('wake', callback);\n\t\t\t});\n\t\t});\n\t}\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, output } from '@angular/core';\nimport {\n\tinjectBeforeRender,\n\tinjectStore,\n\tNgtArgs,\n\tNgtCamera,\n\tNgtOverwrite,\n\tNgtThreeElement,\n\tNgtVector3,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\ntype ExtractCallback<T, E extends string> = T extends { addEventListener(event: E, callback: infer C): void }\n\t? C\n\t: never;\n\nexport type OrbitControlsChangeEvent = Parameters<ExtractCallback<OrbitControls, 'change'>>[0];\n\nexport type NgtsOrbitControlsOptions = Omit<\n\tNgtOverwrite<\n\t\tNgtThreeElement<typeof OrbitControls>,\n\t\t{\n\t\t\tcamera?: THREE.Camera;\n\t\t\tdomElement?: HTMLElement;\n\t\t\ttarget?: NgtVector3;\n\t\t\tmakeDefault: boolean;\n\t\t\tregress: boolean;\n\t\t\tenableDamping: boolean;\n\t\t\tkeyEvents: boolean | HTMLElement;\n\t\t}\n\t>,\n\t'attach' | 'addEventListener' | 'removeEventListener' | 'parameters' | '___ngt_args__' | '_domElementKeyEvents'\n>;\n\nconst defaultOptions: NgtsOrbitControlsOptions = {\n\tenableDamping: true,\n\tregress: false,\n\tmakeDefault: false,\n\tkeyEvents: false,\n};\n\n@Component({\n\tselector: 'ngts-orbit-controls',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"parameters()\" [enableDamping]=\"enableDamping()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrbitControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'makeDefault',\n\t\t'camera',\n\t\t'regress',\n\t\t'domElement',\n\t\t'keyEvents',\n\t\t'enableDamping',\n\t]);\n\n\tchanged = output<OrbitControlsChangeEvent>();\n\tstarted = output<THREE.Event>();\n\tended = output<THREE.Event>();\n\n\tprivate store = injectStore();\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate regress = pick(this.options, 'regress');\n\tprivate keyEvents = pick(this.options, 'keyEvents');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tcontrols = computed(() => {\n\t\tconst [camera, defaultCamera] = [this.camera(), this.store.camera()];\n\t\tconst controlsCamera = camera || defaultCamera;\n\t\treturn new OrbitControls(controlsCamera as NgtCamera);\n\t});\n\n\tprotected enableDamping = pick(this.options, 'enableDamping');\n\n\tconstructor() {\n\t\tinjectBeforeRender(\n\t\t\t() => {\n\t\t\t\tconst controls = this.controls();\n\t\t\t\tif (controls.enabled) controls.update();\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst controls = this.controls();\n\t\t\tconst oldControls = this.store.snapshot.controls;\n\t\t\tthis.store.update({ controls });\n\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, keyEvents, domElement] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.keyEvents(),\n\t\t\t\tthis.domElement() || this.store.snapshot.events.connected || this.store.gl.domElement(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\n\t\t\tif (keyEvents) {\n\t\t\t\tcontrols.connect(keyEvents === true ? domElement : keyEvents);\n\t\t\t} else {\n\t\t\t\tcontrols.connect(domElement);\n\t\t\t}\n\t\t\tonCleanup(() => void controls.dispose());\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, invalidate, performanceRegress, regress] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.store.performance.regress(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\n\t\t\tconst changeCallback: (e: OrbitControlsChangeEvent) => void = (e) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t\tthis.changed.emit(e);\n\t\t\t};\n\n\t\t\tconst startCallback = this.started.emit.bind(this.started);\n\t\t\tconst endCallback = this.ended.emit.bind(this.ended);\n\n\t\t\tcontrols.addEventListener('change', changeCallback);\n\t\t\tcontrols.addEventListener('start', startCallback);\n\t\t\tcontrols.addEventListener('end', endCallback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('change', changeCallback);\n\t\t\t\tcontrols.removeEventListener('start', startCallback);\n\t\t\t\tcontrols.removeEventListener('end', endCallback);\n\t\t\t});\n\t\t});\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tuntracked,\n} from '@angular/core';\nimport { injectBeforeRender, injectStore, NgtHTML, pick, provideHTMLDomElement } from 'angular-three';\nimport { easing } from 'maath';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n\nexport interface NgtsScrollControlsOptions {\n\t/** Precision, default 0.00001 */\n\teps: number;\n\t/** Horizontal scroll, default false (vertical) */\n\thorizontal: boolean;\n\t/** Infinite scroll, default false (experimental!) */\n\tinfinite: boolean;\n\t/** Defines the lenght of the scroll area, each page is height:100%, default 1 */\n\tpages: number;\n\t/** A factor that increases scroll bar travel,default: 1 */\n\tdistance: number;\n\t/** Friction in seconds, default: 0.25 (1/4 second) */\n\tdamping: number;\n\t/** maxSpeed optionally allows you to clamp the maximum speed. If damping is 0.2s and looks OK\n\t * going between, say, page 1 and 2, but not for pages far apart as it'll move very rapid,\n\t * then a maxSpeed of e.g. 3 which will clamp the speed to 3 units per second, it may now\n\t * take much longer than damping to reach the target if it is far away. Default: Infinity */\n\tmaxSpeed: number;\n\t/** If true attaches the scroll container before the canvas */\n\tprepend: boolean;\n\tenabled: boolean;\n\tstyle: Partial<CSSStyleDeclaration>;\n}\n\nconst defaultOptions: NgtsScrollControlsOptions = {\n\teps: 0.00001,\n\thorizontal: false,\n\tinfinite: false,\n\tpages: 1,\n\tdistance: 1,\n\tdamping: 0.25,\n\tmaxSpeed: Infinity,\n\tprepend: false,\n\tenabled: true,\n\tstyle: {},\n};\n\n@Component({\n\tselector: 'ngts-scroll-controls',\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsScrollControls {\n\tprogress = model(0);\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\n\tprivate _el = this.document.createElement('div');\n\tprivate _fill = this.document.createElement('div');\n\tprivate _fixed = this.document.createElement('div');\n\n\tprivate style = pick(this.options, 'style');\n\tprivate prepend = pick(this.options, 'prepend');\n\tprivate enabled = pick(this.options, 'enabled');\n\tprivate infinite = pick(this.options, 'infinite');\n\tprivate maxSpeed = pick(this.options, 'maxSpeed');\n\n\teps = pick(this.options, 'eps');\n\thorizontal = pick(this.options, 'horizontal');\n\tpages = pick(this.options, 'pages');\n\tdistance = pick(this.options, 'distance');\n\tdamping = pick(this.options, 'damping');\n\tscroll = 0;\n\toffset = 0;\n\tdelta = 0;\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst target = this.store.gl.domElement.parentNode();\n\t\t\tif (!target) return;\n\n\t\t\tconst parent = target as HTMLElement;\n\t\t\tconst [pages, distance, horizontal, el, fill, fixed, style, prepend, domElement, events] = [\n\t\t\t\tthis.pages(),\n\t\t\t\tthis.distance(),\n\t\t\t\tthis.horizontal(),\n\t\t\t\tthis.el,\n\t\t\t\tthis.fill,\n\t\t\t\tthis.fixed,\n\t\t\t\tuntracked(this.style),\n\t\t\t\tuntracked(this.prepend),\n\t\t\t\tthis.store.snapshot.gl.domElement,\n\t\t\t\tthis.store.snapshot.events,\n\t\t\t];\n\n\t\t\tel.style.position = 'absolute';\n\t\t\tel.style.width = '100%';\n\t\t\tel.style.height = '100%';\n\t\t\tel.style[horizontal ? 'overflowX' : 'overflowY'] = 'auto';\n\t\t\tel.style[horizontal ? 'overflowY' : 'overflowX'] = 'hidden';\n\t\t\tel.style.top = '0px';\n\t\t\tel.style.left = '0px';\n\n\t\t\tfor (const key in style) {\n\t\t\t\tel.style[key] = (style as CSSStyleDeclaration)[key];\n\t\t\t}\n\n\t\t\tfixed.style.position = 'sticky';\n\t\t\tfixed.style.top = '0px';\n\t\t\tfixed.style.left = '0px';\n\t\t\tfixed.style.width = '100%';\n\t\t\tfixed.style.height = '100%';\n\t\t\tfixed.style.overflow = 'hidden';\n\t\t\tel.appendChild(fixed);\n\n\t\t\tfill.style.height = horizontal ? '100%' : `${pages * distance * 100}%`;\n\t\t\tfill.style.width = horizontal ? `${pages * distance * 100}%` : '100%';\n\t\t\tfill.style.pointerEvents = 'none';\n\t\t\tel.appendChild(fill);\n\n\t\t\tif (prepend) parent.prepend(el);\n\t\t\telse parent.appendChild(el);\n\n\t\t\t// Init scroll one pixel in to allow upward/leftward scroll\n\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;\n\n\t\t\tconst oldTarget = (events.connected || domElement) as HTMLElement;\n\t\t\trequestAnimationFrame(() => events.connect?.(el));\n\t\t\tconst oldCompute = events.compute?.bind(events);\n\n\t\t\tthis.store.snapshot.setEvents({\n\t\t\t\tcompute(event, store) {\n\t\t\t\t\tconst state = store.snapshot;\n\t\t\t\t\t// we are using boundingClientRect because we could not rely on target.offsetTop as canvas could be positioned anywhere in dom\n\t\t\t\t\tconst { left, top } = parent.getBoundingClientRect();\n\t\t\t\t\tconst offsetX = event.clientX - left;\n\t\t\t\t\tconst offsetY = event.clientY - top;\n\t\t\t\t\tstate.pointer.set((offsetX / state.size.width) * 2 - 1, -(offsetY / state.size.height) * 2 + 1);\n\t\t\t\t\tstate.raycaster.setFromCamera(state.pointer, state.camera);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tonCleanup(() => {\n\t\t\t\tparent.removeChild(el);\n\t\t\t\tthis.store.snapshot.setEvents({ compute: oldCompute });\n\t\t\t\tevents.connect?.(oldTarget);\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [el, events] = [this.el, this.store.events()];\n\t\t\tif (!events.connected || events.connected !== el) return;\n\n\t\t\tconst [size, infinite, invalidate, horizontal, enabled] = [\n\t\t\t\tthis.store.size(),\n\t\t\t\tthis.infinite(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.horizontal(),\n\t\t\t\tthis.enabled(),\n\t\t\t];\n\n\t\t\tconst containerLength = size[horizontal ? 'width' : 'height'];\n\t\t\tconst scrollLength = el[horizontal ? 'scrollWidth' : 'scrollHeight'];\n\t\t\tconst scrollThreshold = scrollLength - containerLength;\n\n\t\t\tlet current = 0;\n\t\t\tlet disableScroll = true;\n\t\t\tlet firstRun = true;\n\n\t\t\tconst onScroll = () => {\n\t\t\t\t// Prevent first scroll because it is indirectly caused by the one pixel offset\n\t\t\t\tif (!enabled || firstRun) return;\n\n\t\t\t\tinvalidate();\n\t\t\t\tcurrent = el[horizontal ? 'scrollLeft' : 'scrollTop'];\n\t\t\t\tthis.scroll = current / scrollThreshold;\n\n\t\t\t\tif (infinite) {\n\t\t\t\t\tif (!disableScroll) {\n\t\t\t\t\t\tif (current >= scrollThreshold) {\n\t\t\t\t\t\t\tconst damp = 1 - this.offset;\n\t\t\t\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;\n\t\t\t\t\t\t\tthis.scroll = this.offset = -damp;\n\t\t\t\t\t\t\tdisableScroll = true;\n\t\t\t\t\t\t} else if (current <= 0) {\n\t\t\t\t\t\t\tconst damp = 1 + this.offset;\n\t\t\t\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = scrollLength;\n\t\t\t\t\t\t\tthis.scroll = this.offset = damp;\n\t\t\t\t\t\t\tdisableScroll = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (disableScroll) setTimeout(() => (disableScroll = false), 40);\n\t\t\t\t}\n\n\t\t\t\tthis.progress.set(this.scroll);\n\t\t\t};\n\n\t\t\tel.addEventListener('scroll', onScroll, { passive: true });\n\t\t\trequestAnimationFrame(() => (firstRun = false));\n\n\t\t\tconst onWheel = (e: WheelEvent) => (el[horizontal ? 'scrollLeft' : 'scrollTop'] += e.deltaY / 2);\n\t\t\tif (horizontal) el.addEventListener('wheel', onWheel, { passive: true });\n\n\t\t\tonCleanup(() => {\n\t\t\t\tel.removeEventListener('scroll', onScroll);\n\t\t\t\tif (horizontal) el.removeEventListener('wheel', onWheel);\n\t\t\t});\n\t\t});\n\n\t\tlet last = 0;\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tlast = this.offset;\n\t\t\teasing.damp(this, 'offset', this.scroll, this.damping(), delta, this.maxSpeed(), undefined, this.eps());\n\t\t\teasing.damp(\n\t\t\t\tthis,\n\t\t\t\t'delta',\n\t\t\t\tMath.abs(last - this.offset),\n\t\t\t\tthis.damping(),\n\t\t\t\tdelta,\n\t\t\t\tthis.maxSpeed(),\n\t\t\t\tundefined,\n\t\t\t\tthis.eps(),\n\t\t\t);\n\t\t\tif (this.delta > this.eps()) this.store.invalidate()();\n\t\t});\n\t}\n\n\tget el() {\n\t\treturn this._el;\n\t}\n\n\tget fill() {\n\t\treturn this._fill;\n\t}\n\n\tget fixed() {\n\t\treturn this._fixed;\n\t}\n\n\trange(from: number, distance: number, margin = 0): number {\n\t\tconst start = from - margin;\n\t\tconst end = start + distance + margin * 2;\n\t\treturn this.offset < start ? 0 : this.offset > end ? 1 : (this.offset - start) / (end - start);\n\t}\n\n\tcurve(from: number, distance: number, margin = 0): number {\n\t\treturn Math.sin(this.range(from, distance, margin) * Math.PI);\n\t}\n\n\tvisible(from: number, distance: number, margin = 0): boolean {\n\t\tconst start = from - margin;\n\t\tconst end = start + distance + margin * 2;\n\t\treturn this.offset >= start && this.offset <= end;\n\t}\n}\n\n@Directive({ selector: 'ngt-group[canvasScrollContent]' })\nexport class NgtsCanvasScrollContent {\n\tprivate host = inject<ElementRef<THREE.Group>>(ElementRef);\n\tprivate scrollControls = inject(NgtsScrollControls);\n\tprivate store = injectStore();\n\n\tconstructor() {\n\t\tinjectBeforeRender(() => {\n\t\t\tconst group = this.host.nativeElement;\n\n\t\t\tgroup.position.x = this.scrollControls.horizontal()\n\t\t\t\t? -this.store.snapshot.viewport.width * (this.scrollControls.pages() - 1) * this.scrollControls.offset\n\t\t\t\t: 0;\n\t\t\tgroup.position.y = this.scrollControls.horizontal()\n\t\t\t\t? 0\n\t\t\t\t: this.store.snapshot.viewport.height * (this.scrollControls.pages() - 1) * this.scrollControls.offset;\n\t\t});\n\t}\n}\n\n@Directive({\n\tselector: 'div[htmlScrollContent]',\n\thost: { style: 'position: absolute; top: 0; left: 0; will-change: transform;', 'data-html-scroll-content': '' },\n\tproviders: [provideHTMLDomElement([NgtsScrollControls], (scrollControls) => scrollControls.fixed)],\n})\nexport class NgtsHTMLScrollContent extends NgtHTML {\n\tprivate scrollControls = inject(NgtsScrollControls);\n\tprivate store = injectStore();\n\tprivate host = inject<ElementRef<HTMLDivElement>>(ElementRef);\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tinjectBeforeRender(() => {\n\t\t\tif (this.scrollControls.delta > this.scrollControls.eps()) {\n\t\t\t\tthis.host.nativeElement.style.transform = `translate3d(${\n\t\t\t\t\tthis.scrollControls.horizontal()\n\t\t\t\t\t\t? -this.store.snapshot.size.width *\n\t\t\t\t\t\t\t(this.scrollControls.pages() - 1) *\n\t\t\t\t\t\t\tthis.scrollControls.offset\n\t\t\t\t\t\t: 0\n\t\t\t\t}px,${this.scrollControls.horizontal() ? 0 : this.store.snapshot.size.height * (this.scrollControls.pages() - 1) * -this.scrollControls.offset}px,0)`;\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tinput,\n\toutput,\n} from '@angular/core';\nimport {\n\tinjectBeforeRender,\n\tinjectStore,\n\tNgtArgs,\n\tNgtOverwrite,\n\tNgtThreeElement,\n\tNgtVector3,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { TrackballControls } from 'three-stdlib';\n\nexport type NgtsTrackballControlsOptions = Omit<\n\tNgtOverwrite<\n\t\tNgtThreeElement<typeof TrackballControls>,\n\t\t{ target?: NgtVector3; camera?: THREE.Camera; domElement?: HTMLElement; regress: boolean; makeDefault: boolean }\n\t>,\n\t'attach' | 'addEventListener' | 'removeEventListener' | 'parameters' | '___ngt_args__'\n>;\n\nconst defaultOptions: NgtsTrackballControlsOptions = {\n\tregress: false,\n\tmakeDefault: false,\n};\n\n@Component({\n\tselector: 'ngts-trackball-controls',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsTrackballControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement']);\n\n\tchanged = output<THREE.Event>();\n\tstarted = output<THREE.Event>();\n\tended = output<THREE.Event>();\n\n\tprivate store = injectStore();\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate regress = pick(this.options, 'regress');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tprotected controls = computed(() => {\n\t\tconst camera = this.camera();\n\t\tif (camera) return new TrackballControls(camera as THREE.PerspectiveCamera);\n\t\treturn new TrackballControls(this.store.camera());\n\t});\n\n\tconstructor() {\n\t\tinjectBeforeRender(\n\t\t\t() => {\n\t\t\t\tconst controls = this.controls();\n\t\t\t\tif (controls.enabled) controls.update();\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst controls = this.controls();\n\t\t\tconst oldControls = this.store.snapshot.controls;\n\t\t\tthis.store.update({ controls });\n\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, domElement] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.domElement() || this.store.snapshot.events.connected || this.store.gl.domElement(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tcontrols.connect(domElement);\n\t\t\tonCleanup(() => void controls.dispose());\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, invalidate, performanceRegress, regress] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.store.performance.regress(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\n\t\t\tconst changeCallback: (e: THREE.Event) => void = (e) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t\tthis.changed.emit(e);\n\t\t\t};\n\n\t\t\tconst startCallback = this.started.emit.bind(this.started);\n\t\t\tconst endCallback = this.ended.emit.bind(this.ended);\n\n\t\t\tcontrols.addEventListener('change', changeCallback);\n\t\t\tcontrols.addEventListener('start', startCallback);\n\t\t\tcontrols.addEventListener('end', endCallback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('change', changeCallback);\n\t\t\t\tcontrols.removeEventListener('start', startCallback);\n\t\t\t\tcontrols.removeEventListener('end', endCallback);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [controls] = [this.controls(), this.store.viewport()];\n\t\t\tcontrols.handleResize();\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
1
+ {"version":3,"file":"angular-three-soba-controls.mjs","sources":["../../../../libs/soba/controls/src/lib/camera-controls.ts","../../../../libs/soba/controls/src/lib/orbit-controls.ts","../../../../libs/soba/controls/src/lib/scroll-controls.ts","../../../../libs/soba/controls/src/lib/trackball-controls.ts","../../../../libs/soba/controls/src/angular-three-soba-controls.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tinput,\n\toutput,\n} from '@angular/core';\nimport { beforeRender, injectStore, NgtArgs, NgtCamera, omit, pick } from 'angular-three';\nimport CameraControls from 'camera-controls';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n\nexport interface NgtsCameraControlsOptions {\n\tcamera?: NgtCamera;\n\tdomElement?: HTMLElement;\n\tmakeDefault: boolean;\n\tregress: boolean;\n}\n\nconst defaultOptions: Partial<CameraControls> & NgtsCameraControlsOptions = {\n\tmakeDefault: false,\n\tregress: false,\n};\n\n@Component({\n\tselector: 'ngts-camera-controls',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\timports: [NgtArgs],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsCameraControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement']);\n\n\tchanged = output<any>();\n\tstarted = output<any>();\n\tended = output<any>();\n\n\tprivate store = injectStore();\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate regress = pick(this.options, 'regress');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tcontrols = computed(() => {\n\t\tconst [camera, defaultCamera] = [this.camera(), this.store.camera()];\n\t\treturn new CameraControls(camera || defaultCamera);\n\t});\n\n\tconstructor() {\n\t\t// to allow for tree shaking, we only import the subset of THREE that is used by camera-controls\n\t\t// see https://github.com/yomotsu/camera-controls#important\n\t\tCameraControls.install({\n\t\t\tTHREE: {\n\t\t\t\tBox3: THREE.Box3,\n\t\t\t\tMathUtils: { clamp: THREE.MathUtils.clamp },\n\t\t\t\tMatrix4: THREE.Matrix4,\n\t\t\t\tQuaternion: THREE.Quaternion,\n\t\t\t\tRaycaster: THREE.Raycaster,\n\t\t\t\tSphere: THREE.Sphere,\n\t\t\t\tSpherical: THREE.Spherical,\n\t\t\t\tVector2: THREE.Vector2,\n\t\t\t\tVector3: THREE.Vector3,\n\t\t\t\tVector4: THREE.Vector4,\n\t\t\t},\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst controls = this.controls();\n\t\t\tconst oldControls = this.store.snapshot.controls;\n\t\t\tthis.store.update({ controls: controls as unknown as THREE.EventDispatcher });\n\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t});\n\n\t\tbeforeRender(\n\t\t\t({ delta }) => {\n\t\t\t\tconst controls = this.controls();\n\t\t\t\tif (controls?.enabled) {\n\t\t\t\t\tcontrols.update(delta);\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [domElement, eventsElement, glDomElement, controls] = [\n\t\t\t\tthis.domElement(),\n\t\t\t\tthis.store.events.connected?.(),\n\t\t\t\tthis.store.gl.domElement(),\n\t\t\t\tthis.controls(),\n\t\t\t];\n\t\t\tcontrols.connect(domElement || eventsElement || glDomElement);\n\t\t\tonCleanup(() => controls.disconnect());\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst controls = this.controls();\n\t\t\tif (!controls) return;\n\n\t\t\tconst [regress, performanceRegress, invalidate] = [\n\t\t\t\tthis.regress(),\n\t\t\t\tthis.store.performance.regress(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t];\n\n\t\t\tconst callback = (e: any) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t\tthis.changed.emit(e);\n\t\t\t};\n\n\t\t\tconst startCallback = this.started.emit.bind(this.started);\n\t\t\tconst endCallback = this.ended.emit.bind(this.ended);\n\n\t\t\tcontrols.addEventListener('update', callback);\n\t\t\tcontrols.addEventListener('controlstart', startCallback);\n\t\t\tcontrols.addEventListener('controlend', endCallback);\n\t\t\tcontrols.addEventListener('control', callback);\n\t\t\tcontrols.addEventListener('transitionstart', callback);\n\t\t\tcontrols.addEventListener('wake', callback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('update', callback);\n\t\t\t\tcontrols.removeEventListener('controlstart', startCallback);\n\t\t\t\tcontrols.removeEventListener('controlend', endCallback);\n\t\t\t\tcontrols.removeEventListener('control', callback);\n\t\t\t\tcontrols.removeEventListener('transitionstart', callback);\n\t\t\t\tcontrols.removeEventListener('wake', callback);\n\t\t\t});\n\t\t});\n\t}\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, output } from '@angular/core';\nimport {\n\tbeforeRender,\n\tinjectStore,\n\tNgtArgs,\n\tNgtCamera,\n\tNgtOverwrite,\n\tNgtThreeElement,\n\tNgtVector3,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\ntype ExtractCallback<T, E extends string> = T extends { addEventListener(event: E, callback: infer C): void }\n\t? C\n\t: never;\n\nexport type OrbitControlsChangeEvent = Parameters<ExtractCallback<OrbitControls, 'change'>>[0];\n\nexport type NgtsOrbitControlsOptions = Omit<\n\tNgtOverwrite<\n\t\tNgtThreeElement<typeof OrbitControls>,\n\t\t{\n\t\t\tcamera?: THREE.Camera;\n\t\t\tdomElement?: HTMLElement;\n\t\t\ttarget?: NgtVector3;\n\t\t\tmakeDefault: boolean;\n\t\t\tregress: boolean;\n\t\t\tenableDamping: boolean;\n\t\t\tkeyEvents: boolean | HTMLElement;\n\t\t}\n\t>,\n\t'attach' | 'addEventListener' | 'removeEventListener' | 'parameters' | '___ngt_args__' | '_domElementKeyEvents'\n>;\n\nconst defaultOptions: NgtsOrbitControlsOptions = {\n\tenableDamping: true,\n\tregress: false,\n\tmakeDefault: false,\n\tkeyEvents: false,\n};\n\n@Component({\n\tselector: 'ngts-orbit-controls',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"parameters()\" [enableDamping]=\"enableDamping()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsOrbitControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'makeDefault',\n\t\t'camera',\n\t\t'regress',\n\t\t'domElement',\n\t\t'keyEvents',\n\t\t'enableDamping',\n\t]);\n\n\tchanged = output<OrbitControlsChangeEvent>();\n\tstarted = output<THREE.Event>();\n\tended = output<THREE.Event>();\n\n\tprivate store = injectStore();\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate regress = pick(this.options, 'regress');\n\tprivate keyEvents = pick(this.options, 'keyEvents');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tcontrols = computed(() => {\n\t\tconst [camera, defaultCamera] = [this.camera(), this.store.camera()];\n\t\tconst controlsCamera = camera || defaultCamera;\n\t\treturn new OrbitControls(controlsCamera as NgtCamera);\n\t});\n\n\tprotected enableDamping = pick(this.options, 'enableDamping');\n\n\tconstructor() {\n\t\tbeforeRender(\n\t\t\t() => {\n\t\t\t\tconst controls = this.controls();\n\t\t\t\tif (controls.enabled) controls.update();\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst controls = this.controls();\n\t\t\tconst oldControls = this.store.snapshot.controls;\n\t\t\tthis.store.update({ controls });\n\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, keyEvents, domElement] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.keyEvents(),\n\t\t\t\tthis.domElement() || this.store.snapshot.events.connected || this.store.gl.domElement(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\n\t\t\tif (keyEvents) {\n\t\t\t\tcontrols.connect(keyEvents === true ? domElement : keyEvents);\n\t\t\t} else {\n\t\t\t\tcontrols.connect(domElement);\n\t\t\t}\n\t\t\tonCleanup(() => void controls.dispose());\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, invalidate, performanceRegress, regress] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.store.performance.regress(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\n\t\t\tconst changeCallback: (e: OrbitControlsChangeEvent) => void = (e) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t\tthis.changed.emit(e);\n\t\t\t};\n\n\t\t\tconst startCallback = this.started.emit.bind(this.started);\n\t\t\tconst endCallback = this.ended.emit.bind(this.ended);\n\n\t\t\tcontrols.addEventListener('change', changeCallback);\n\t\t\tcontrols.addEventListener('start', startCallback);\n\t\t\tcontrols.addEventListener('end', endCallback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('change', changeCallback);\n\t\t\t\tcontrols.removeEventListener('start', startCallback);\n\t\t\t\tcontrols.removeEventListener('end', endCallback);\n\t\t\t});\n\t\t});\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tuntracked,\n} from '@angular/core';\nimport { beforeRender, injectStore, NgtHTML, pick, provideHTMLDomElement } from 'angular-three';\nimport { easing } from 'maath';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n\nexport interface NgtsScrollControlsOptions {\n\t/** Precision, default 0.00001 */\n\teps: number;\n\t/** Horizontal scroll, default false (vertical) */\n\thorizontal: boolean;\n\t/** Infinite scroll, default false (experimental!) */\n\tinfinite: boolean;\n\t/** Defines the lenght of the scroll area, each page is height:100%, default 1 */\n\tpages: number;\n\t/** A factor that increases scroll bar travel,default: 1 */\n\tdistance: number;\n\t/** Friction in seconds, default: 0.25 (1/4 second) */\n\tdamping: number;\n\t/** maxSpeed optionally allows you to clamp the maximum speed. If damping is 0.2s and looks OK\n\t * going between, say, page 1 and 2, but not for pages far apart as it'll move very rapid,\n\t * then a maxSpeed of e.g. 3 which will clamp the speed to 3 units per second, it may now\n\t * take much longer than damping to reach the target if it is far away. Default: Infinity */\n\tmaxSpeed: number;\n\t/** If true attaches the scroll container before the canvas */\n\tprepend: boolean;\n\tenabled: boolean;\n\tstyle: Partial<CSSStyleDeclaration>;\n}\n\nconst defaultOptions: NgtsScrollControlsOptions = {\n\teps: 0.00001,\n\thorizontal: false,\n\tinfinite: false,\n\tpages: 1,\n\tdistance: 1,\n\tdamping: 0.25,\n\tmaxSpeed: Infinity,\n\tprepend: false,\n\tenabled: true,\n\tstyle: {},\n};\n\n@Component({\n\tselector: 'ngts-scroll-controls',\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgtsScrollControls {\n\tprogress = model(0);\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\n\tprivate _el = this.document.createElement('div');\n\tprivate _fill = this.document.createElement('div');\n\tprivate _fixed = this.document.createElement('div');\n\n\tprivate style = pick(this.options, 'style');\n\tprivate prepend = pick(this.options, 'prepend');\n\tprivate enabled = pick(this.options, 'enabled');\n\tprivate infinite = pick(this.options, 'infinite');\n\tprivate maxSpeed = pick(this.options, 'maxSpeed');\n\n\teps = pick(this.options, 'eps');\n\thorizontal = pick(this.options, 'horizontal');\n\tpages = pick(this.options, 'pages');\n\tdistance = pick(this.options, 'distance');\n\tdamping = pick(this.options, 'damping');\n\tscroll = 0;\n\toffset = 0;\n\tdelta = 0;\n\n\tconstructor() {\n\t\teffect((onCleanup) => {\n\t\t\tconst target = this.store.gl.domElement.parentNode();\n\t\t\tif (!target) return;\n\n\t\t\tconst parent = target as HTMLElement;\n\t\t\tconst [pages, distance, horizontal, el, fill, fixed, style, prepend, domElement, events] = [\n\t\t\t\tthis.pages(),\n\t\t\t\tthis.distance(),\n\t\t\t\tthis.horizontal(),\n\t\t\t\tthis.el,\n\t\t\t\tthis.fill,\n\t\t\t\tthis.fixed,\n\t\t\t\tuntracked(this.style),\n\t\t\t\tuntracked(this.prepend),\n\t\t\t\tthis.store.snapshot.gl.domElement,\n\t\t\t\tthis.store.snapshot.events,\n\t\t\t];\n\n\t\t\tel.style.position = 'absolute';\n\t\t\tel.style.width = '100%';\n\t\t\tel.style.height = '100%';\n\t\t\tel.style[horizontal ? 'overflowX' : 'overflowY'] = 'auto';\n\t\t\tel.style[horizontal ? 'overflowY' : 'overflowX'] = 'hidden';\n\t\t\tel.style.top = '0px';\n\t\t\tel.style.left = '0px';\n\n\t\t\tfor (const key in style) {\n\t\t\t\tel.style[key] = (style as CSSStyleDeclaration)[key];\n\t\t\t}\n\n\t\t\tfixed.style.position = 'sticky';\n\t\t\tfixed.style.top = '0px';\n\t\t\tfixed.style.left = '0px';\n\t\t\tfixed.style.width = '100%';\n\t\t\tfixed.style.height = '100%';\n\t\t\tfixed.style.overflow = 'hidden';\n\t\t\tel.appendChild(fixed);\n\n\t\t\tfill.style.height = horizontal ? '100%' : `${pages * distance * 100}%`;\n\t\t\tfill.style.width = horizontal ? `${pages * distance * 100}%` : '100%';\n\t\t\tfill.style.pointerEvents = 'none';\n\t\t\tel.appendChild(fill);\n\n\t\t\tif (prepend) parent.prepend(el);\n\t\t\telse parent.appendChild(el);\n\n\t\t\t// Init scroll one pixel in to allow upward/leftward scroll\n\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;\n\n\t\t\tconst oldTarget = (events.connected || domElement) as HTMLElement;\n\t\t\trequestAnimationFrame(() => events.connect?.(el));\n\t\t\tconst oldCompute = events.compute?.bind(events);\n\n\t\t\tthis.store.snapshot.setEvents({\n\t\t\t\tcompute(event, store) {\n\t\t\t\t\tconst state = store.snapshot;\n\t\t\t\t\t// we are using boundingClientRect because we could not rely on target.offsetTop as canvas could be positioned anywhere in dom\n\t\t\t\t\tconst { left, top } = parent.getBoundingClientRect();\n\t\t\t\t\tconst offsetX = event.clientX - left;\n\t\t\t\t\tconst offsetY = event.clientY - top;\n\t\t\t\t\tstate.pointer.set((offsetX / state.size.width) * 2 - 1, -(offsetY / state.size.height) * 2 + 1);\n\t\t\t\t\tstate.raycaster.setFromCamera(state.pointer, state.camera);\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tonCleanup(() => {\n\t\t\t\tparent.removeChild(el);\n\t\t\t\tthis.store.snapshot.setEvents({ compute: oldCompute });\n\t\t\t\tevents.connect?.(oldTarget);\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [el, events] = [this.el, this.store.events()];\n\t\t\tif (!events.connected || events.connected !== el) return;\n\n\t\t\tconst [size, infinite, invalidate, horizontal, enabled] = [\n\t\t\t\tthis.store.size(),\n\t\t\t\tthis.infinite(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.horizontal(),\n\t\t\t\tthis.enabled(),\n\t\t\t];\n\n\t\t\tconst containerLength = size[horizontal ? 'width' : 'height'];\n\t\t\tconst scrollLength = el[horizontal ? 'scrollWidth' : 'scrollHeight'];\n\t\t\tconst scrollThreshold = scrollLength - containerLength;\n\n\t\t\tlet current = 0;\n\t\t\tlet disableScroll = true;\n\t\t\tlet firstRun = true;\n\n\t\t\tconst onScroll = () => {\n\t\t\t\t// Prevent first scroll because it is indirectly caused by the one pixel offset\n\t\t\t\tif (!enabled || firstRun) return;\n\n\t\t\t\tinvalidate();\n\t\t\t\tcurrent = el[horizontal ? 'scrollLeft' : 'scrollTop'];\n\t\t\t\tthis.scroll = current / scrollThreshold;\n\n\t\t\t\tif (infinite) {\n\t\t\t\t\tif (!disableScroll) {\n\t\t\t\t\t\tif (current >= scrollThreshold) {\n\t\t\t\t\t\t\tconst damp = 1 - this.offset;\n\t\t\t\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;\n\t\t\t\t\t\t\tthis.scroll = this.offset = -damp;\n\t\t\t\t\t\t\tdisableScroll = true;\n\t\t\t\t\t\t} else if (current <= 0) {\n\t\t\t\t\t\t\tconst damp = 1 + this.offset;\n\t\t\t\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = scrollLength;\n\t\t\t\t\t\t\tthis.scroll = this.offset = damp;\n\t\t\t\t\t\t\tdisableScroll = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (disableScroll) setTimeout(() => (disableScroll = false), 40);\n\t\t\t\t}\n\n\t\t\t\tthis.progress.set(this.scroll);\n\t\t\t};\n\n\t\t\tel.addEventListener('scroll', onScroll, { passive: true });\n\t\t\trequestAnimationFrame(() => (firstRun = false));\n\n\t\t\tconst onWheel = (e: WheelEvent) => (el[horizontal ? 'scrollLeft' : 'scrollTop'] += e.deltaY / 2);\n\t\t\tif (horizontal) el.addEventListener('wheel', onWheel, { passive: true });\n\n\t\t\tonCleanup(() => {\n\t\t\t\tel.removeEventListener('scroll', onScroll);\n\t\t\t\tif (horizontal) el.removeEventListener('wheel', onWheel);\n\t\t\t});\n\t\t});\n\n\t\tlet last = 0;\n\t\tbeforeRender(({ delta }) => {\n\t\t\tlast = this.offset;\n\t\t\teasing.damp(this, 'offset', this.scroll, this.damping(), delta, this.maxSpeed(), undefined, this.eps());\n\t\t\teasing.damp(\n\t\t\t\tthis,\n\t\t\t\t'delta',\n\t\t\t\tMath.abs(last - this.offset),\n\t\t\t\tthis.damping(),\n\t\t\t\tdelta,\n\t\t\t\tthis.maxSpeed(),\n\t\t\t\tundefined,\n\t\t\t\tthis.eps(),\n\t\t\t);\n\t\t\tif (this.delta > this.eps()) this.store.invalidate()();\n\t\t});\n\t}\n\n\tget el() {\n\t\treturn this._el;\n\t}\n\n\tget fill() {\n\t\treturn this._fill;\n\t}\n\n\tget fixed() {\n\t\treturn this._fixed;\n\t}\n\n\trange(from: number, distance: number, margin = 0): number {\n\t\tconst start = from - margin;\n\t\tconst end = start + distance + margin * 2;\n\t\treturn this.offset < start ? 0 : this.offset > end ? 1 : (this.offset - start) / (end - start);\n\t}\n\n\tcurve(from: number, distance: number, margin = 0): number {\n\t\treturn Math.sin(this.range(from, distance, margin) * Math.PI);\n\t}\n\n\tvisible(from: number, distance: number, margin = 0): boolean {\n\t\tconst start = from - margin;\n\t\tconst end = start + distance + margin * 2;\n\t\treturn this.offset >= start && this.offset <= end;\n\t}\n}\n\n@Directive({ selector: 'ngt-group[canvasScrollContent]' })\nexport class NgtsCanvasScrollContent {\n\tprivate host = inject<ElementRef<THREE.Group>>(ElementRef);\n\tprivate scrollControls = inject(NgtsScrollControls);\n\tprivate store = injectStore();\n\n\tconstructor() {\n\t\tbeforeRender(() => {\n\t\t\tconst group = this.host.nativeElement;\n\n\t\t\tgroup.position.x = this.scrollControls.horizontal()\n\t\t\t\t? -this.store.snapshot.viewport.width * (this.scrollControls.pages() - 1) * this.scrollControls.offset\n\t\t\t\t: 0;\n\t\t\tgroup.position.y = this.scrollControls.horizontal()\n\t\t\t\t? 0\n\t\t\t\t: this.store.snapshot.viewport.height * (this.scrollControls.pages() - 1) * this.scrollControls.offset;\n\t\t});\n\t}\n}\n\n@Directive({\n\tselector: 'div[htmlScrollContent]',\n\thost: { style: 'position: absolute; top: 0; left: 0; will-change: transform;', 'data-html-scroll-content': '' },\n\tproviders: [provideHTMLDomElement([NgtsScrollControls], (scrollControls) => scrollControls.fixed)],\n})\nexport class NgtsHTMLScrollContent extends NgtHTML {\n\tprivate scrollControls = inject(NgtsScrollControls);\n\tprivate store = injectStore();\n\tprivate host = inject<ElementRef<HTMLDivElement>>(ElementRef);\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tbeforeRender(() => {\n\t\t\tif (this.scrollControls.delta > this.scrollControls.eps()) {\n\t\t\t\tthis.host.nativeElement.style.transform = `translate3d(${\n\t\t\t\t\tthis.scrollControls.horizontal()\n\t\t\t\t\t\t? -this.store.snapshot.size.width *\n\t\t\t\t\t\t\t(this.scrollControls.pages() - 1) *\n\t\t\t\t\t\t\tthis.scrollControls.offset\n\t\t\t\t\t\t: 0\n\t\t\t\t}px,${this.scrollControls.horizontal() ? 0 : this.store.snapshot.size.height * (this.scrollControls.pages() - 1) * -this.scrollControls.offset}px,0)`;\n\t\t\t}\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tinput,\n\toutput,\n} from '@angular/core';\nimport {\n\tbeforeRender,\n\tinjectStore,\n\tNgtArgs,\n\tNgtOverwrite,\n\tNgtThreeElement,\n\tNgtVector3,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { TrackballControls } from 'three-stdlib';\n\nexport type NgtsTrackballControlsOptions = Omit<\n\tNgtOverwrite<\n\t\tNgtThreeElement<typeof TrackballControls>,\n\t\t{ target?: NgtVector3; camera?: THREE.Camera; domElement?: HTMLElement; regress: boolean; makeDefault: boolean }\n\t>,\n\t'attach' | 'addEventListener' | 'removeEventListener' | 'parameters' | '___ngt_args__'\n>;\n\nconst defaultOptions: NgtsTrackballControlsOptions = {\n\tregress: false,\n\tmakeDefault: false,\n};\n\n@Component({\n\tselector: 'ngts-trackball-controls',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-primitive>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsTrackballControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement']);\n\n\tchanged = output<THREE.Event>();\n\tstarted = output<THREE.Event>();\n\tended = output<THREE.Event>();\n\n\tprivate store = injectStore();\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate regress = pick(this.options, 'regress');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tprotected controls = computed(() => {\n\t\tconst camera = this.camera();\n\t\tif (camera) return new TrackballControls(camera as THREE.PerspectiveCamera);\n\t\treturn new TrackballControls(this.store.camera());\n\t});\n\n\tconstructor() {\n\t\tbeforeRender(\n\t\t\t() => {\n\t\t\t\tconst controls = this.controls();\n\t\t\t\tif (controls.enabled) controls.update();\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\n\t\teffect((onCleanup) => {\n\t\t\tconst makeDefault = this.makeDefault();\n\t\t\tif (!makeDefault) return;\n\n\t\t\tconst controls = this.controls();\n\t\t\tconst oldControls = this.store.snapshot.controls;\n\t\t\tthis.store.update({ controls });\n\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, domElement] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.domElement() || this.store.snapshot.events.connected || this.store.gl.domElement(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tcontrols.connect(domElement);\n\t\t\tonCleanup(() => void controls.dispose());\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, invalidate, performanceRegress, regress] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.store.performance.regress(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\n\t\t\tconst changeCallback: (e: THREE.Event) => void = (e) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t\tthis.changed.emit(e);\n\t\t\t};\n\n\t\t\tconst startCallback = this.started.emit.bind(this.started);\n\t\t\tconst endCallback = this.ended.emit.bind(this.ended);\n\n\t\t\tcontrols.addEventListener('change', changeCallback);\n\t\t\tcontrols.addEventListener('start', startCallback);\n\t\t\tcontrols.addEventListener('end', endCallback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('change', changeCallback);\n\t\t\t\tcontrols.removeEventListener('start', startCallback);\n\t\t\t\tcontrols.removeEventListener('end', endCallback);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst [controls] = [this.controls(), this.store.viewport()];\n\t\t\tcontrols.handleResize();\n\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { NgTemplateOutlet, DOCUMENT } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { Directive, input, output, contentChild, TemplateRef, viewChild, computed, effect, Component, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, inject, signal, ElementRef } from '@angular/core';
4
4
  import * as i1 from 'angular-three';
5
- import { pick, injectStore, extend, injectBeforeRender, hasListener, NgtPortalAutoRender, NgtPortal, injectObjectEvents, NgtArgs, getEmitter, omit, getInstanceState, is, resolveRef } from 'angular-three';
5
+ import { pick, injectStore, extend, beforeRender, hasListener, NgtPortalAutoRender, NgtPortal, objectEvents, NgtArgs, getEmitter, omit, getInstanceState, is, resolveRef } from 'angular-three';
6
6
  import { NgtsOrthographicCamera } from 'angular-three-soba/cameras';
7
7
  import { mergeInputs } from 'ngxtension/inject-inputs';
8
8
  import * as THREE from 'three';
@@ -68,7 +68,7 @@ class NgtsGizmoHelperImpl {
68
68
  effect(() => {
69
69
  this.updateDefaultUpEffect();
70
70
  });
71
- injectBeforeRender(({ delta }) => {
71
+ beforeRender(({ delta }) => {
72
72
  const [virtualCamera, gizmo] = [
73
73
  this.virtualCameraRef()?.cameraRef()?.nativeElement,
74
74
  this.gizmoRef()?.nativeElement,
@@ -296,7 +296,7 @@ class FaceCube {
296
296
  this.Math = Math;
297
297
  extend({ Mesh, BoxGeometry });
298
298
  // TODO: (chau) remove this when event binding syntax no longer trigger cdr
299
- injectObjectEvents(this.meshRef, {
299
+ objectEvents(this.meshRef, {
300
300
  pointerout: (ev) => {
301
301
  ev.stopPropagation();
302
302
  this.hover.set(-1);
@@ -361,7 +361,7 @@ class EdgeCube {
361
361
  this.color = computed(() => (this.hover() ? this.hoverColor() : 'white'));
362
362
  extend({ Mesh, BoxGeometry, MeshBasicMaterial });
363
363
  // TODO: (chau) remove this when event binding syntax no longer trigger cdr
364
- injectObjectEvents(this.meshRef, {
364
+ objectEvents(this.meshRef, {
365
365
  pointerout: (ev) => {
366
366
  ev.stopPropagation();
367
367
  this.hover.set(false);
@@ -584,7 +584,7 @@ class AxisHead {
584
584
  this.scale = computed(() => (this.label() ? 1 : 0.75) * (this.active() ? 1.2 : 1) * this.axisHeadScale());
585
585
  extend({ Sprite, SpriteMaterial });
586
586
  // TODO: (chau) remove this when event binding syntax no longer trigger cdr
587
- injectObjectEvents(this.spriteRef, {
587
+ objectEvents(this.spriteRef, {
588
588
  pointerover: this.onPointerOver.bind(this),
589
589
  pointerout: this.onPointerOut.bind(this),
590
590
  pointerdown: this.onPointerDown.bind(this),
@@ -886,7 +886,7 @@ class NgtsAxisArrow {
886
886
  });
887
887
  extend({ Group, Mesh, ConeGeometry, CylinderGeometry, MeshBasicMaterial });
888
888
  // TODO: (chau) remove this when event binding syntax no longer trigger cdr
889
- injectObjectEvents(this.innerGroupRef, {
889
+ objectEvents(this.innerGroupRef, {
890
890
  pointerdown: this.onPointerDown.bind(this),
891
891
  pointermove: this.onPointerMove.bind(this),
892
892
  pointerup: this.onPointerUp.bind(this),
@@ -1169,7 +1169,7 @@ class NgtsAxisRotator {
1169
1169
  });
1170
1170
  extend({ Group });
1171
1171
  // TODO: (chau) remove this when event binding syntax no longer trigger cdr
1172
- injectObjectEvents(this.groupRef, {
1172
+ objectEvents(this.groupRef, {
1173
1173
  pointerdown: this.onPointerDown.bind(this),
1174
1174
  pointermove: this.onPointerMove.bind(this),
1175
1175
  pointerup: this.onPointerUp.bind(this),
@@ -1409,7 +1409,7 @@ class NgtsPlaneSlider {
1409
1409
  });
1410
1410
  extend({ Group, Mesh, PlaneGeometry, MeshBasicMaterial });
1411
1411
  // TODO: (chau) remove this when event binding syntax no longer trigger cdr
1412
- injectObjectEvents(this.meshRef, {
1412
+ objectEvents(this.meshRef, {
1413
1413
  pointerdown: this.onPointerDown.bind(this),
1414
1414
  pointermove: this.onPointerMove.bind(this),
1415
1415
  pointerup: this.onPointerUp.bind(this),
@@ -1649,7 +1649,7 @@ class NgtsScalingSphere {
1649
1649
  this.color = computed(() => this.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()]);
1650
1650
  extend({ Group, Mesh, SphereGeometry, MeshBasicMaterial });
1651
1651
  // TODO: (chau) remove this when event binding syntax no longer trigger cdr
1652
- injectObjectEvents(this.innerGroupRef, {
1652
+ objectEvents(this.innerGroupRef, {
1653
1653
  pointerdown: this.onPointerDown.bind(this),
1654
1654
  pointermove: this.onPointerMove.bind(this),
1655
1655
  pointerup: this.onPointerUp.bind(this),
@@ -1977,7 +1977,7 @@ class NgtsPivotControls {
1977
1977
  invalidate();
1978
1978
  });
1979
1979
  const vec = new THREE.Vector3();
1980
- injectBeforeRender(({ camera, size, invalidate }) => {
1980
+ beforeRender(({ camera, size, invalidate }) => {
1981
1981
  const [{ fixed, scale, matrix }, gizmo, group] = [
1982
1982
  this.options(),
1983
1983
  this.gizmoRef().nativeElement,