angular-three-soba 4.2.1 → 4.2.2
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.
- package/fesm2022/angular-three-soba-abstractions.mjs +98 -98
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +26 -26
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-controls.mjs +32 -32
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +119 -119
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
- package/fesm2022/angular-three-soba-loaders.mjs +6 -6
- package/fesm2022/angular-three-soba-loaders.mjs.map +1 -1
- package/fesm2022/angular-three-soba-materials.mjs +75 -75
- package/fesm2022/angular-three-soba-materials.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +70 -70
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-performances.mjs +67 -67
- package/fesm2022/angular-three-soba-performances.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +257 -257
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/fesm2022/angular-three-soba-stats.mjs +5 -5
- package/fesm2022/angular-three-soba-stats.mjs.map +1 -1
- package/package.json +3 -2
- package/types/angular-three-soba-misc.d.ts +6 -1
- package/types/angular-three-soba-staging.d.ts +1 -1
|
@@ -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/pointer-lock-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\n/**\n * Configuration options for the NgtsCameraControls component.\n *\n * Extends the camera-controls library options with Angular-specific\n * configuration for camera control, DOM element binding, and performance settings.\n */\nexport interface NgtsCameraControlsOptions {\n\t/**\n\t * The camera to control. Defaults to the store's camera.\n\t */\n\tcamera?: NgtCamera;\n\t/**\n\t * The DOM element to attach controls to. Defaults to the canvas.\n\t */\n\tdomElement?: HTMLElement;\n\t/**\n\t * Whether to make these the default controls in the store.\n\t * @default false\n\t */\n\tmakeDefault: boolean;\n\t/**\n\t * Whether to trigger performance regression when controls are active.\n\t * @default false\n\t */\n\tregress: boolean;\n}\n\nconst defaultOptions: Partial<CameraControls> & NgtsCameraControlsOptions = {\n\tmakeDefault: false,\n\tregress: false,\n};\n\n/**\n * A component that provides advanced camera controls using the camera-controls library.\n *\n * CameraControls offer smooth, customizable camera movements with features like\n * dolly, truck, rotate, and various transition animations. It provides more\n * advanced functionality than OrbitControls, including smooth transitions\n * and programmatic camera control.\n *\n * @see https://github.com/yomotsu/camera-controls\n *\n * @example\n * ```html\n * <ngts-camera-controls [options]=\"{ makeDefault: true }\" />\n * ```\n *\n * @example\n * ```html\n * <ngts-camera-controls\n * [options]=\"{ regress: true }\"\n * (control)=\"onControl($event)\"\n * (controlStart)=\"onControlStart($event)\"\n * (controlEnd)=\"onControlEnd($event)\"\n * (transitionStart)=\"onTransitionStart($event)\"\n * (update)=\"onUpdate($event)\"\n * (wake)=\"onWake($event)\"\n * (rest)=\"onRest($event)\"\n * (sleep)=\"onSleep($event)\"\n * />\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\tcontrol = output<any>();\n\tcontrolStart = output<any>();\n\tcontrolEnd = output<any>();\n\ttransitionStart = output<any>();\n\tupdate = output<any>();\n\twake = output<any>();\n\trest = output<any>();\n\tsleep = 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\tcontrols?.update(delta);\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 invalidateAndRegress = () => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t};\n\n\t\t\tconst control = (e: any) => {\n\t\t\t\tinvalidateAndRegress();\n\t\t\t\tthis.control.emit(e);\n\t\t\t};\n\n\t\t\tconst controlStart = (e: any) => {\n\t\t\t\tinvalidateAndRegress();\n\t\t\t\tthis.controlStart.emit(e);\n\t\t\t};\n\n\t\t\tconst transitionStart = (e: any) => {\n\t\t\t\tinvalidateAndRegress();\n\t\t\t\tthis.transitionStart.emit(e);\n\t\t\t};\n\n\t\t\tconst update = (e: any) => {\n\t\t\t\tinvalidateAndRegress();\n\t\t\t\tthis.update.emit(e);\n\t\t\t};\n\n\t\t\tconst wake = (e: any) => {\n\t\t\t\tinvalidateAndRegress();\n\t\t\t\tthis.wake.emit(e);\n\t\t\t};\n\n\t\t\tconst controlEnd = this.controlEnd.emit.bind(this.controlEnd);\n\t\t\tconst rest = this.rest.emit.bind(this.rest);\n\t\t\tconst sleep = this.sleep.emit.bind(this.sleep);\n\n\t\t\tcontrols.addEventListener('update', update);\n\t\t\tcontrols.addEventListener('controlstart', controlStart);\n\t\t\tcontrols.addEventListener('controlend', controlEnd);\n\t\t\tcontrols.addEventListener('control', control);\n\t\t\tcontrols.addEventListener('transitionstart', transitionStart);\n\t\t\tcontrols.addEventListener('wake', wake);\n\t\t\tcontrols.addEventListener('rest', rest);\n\t\t\tcontrols.addEventListener('sleep', sleep);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('update', update);\n\t\t\t\tcontrols.removeEventListener('controlstart', controlStart);\n\t\t\t\tcontrols.removeEventListener('controlend', controlEnd);\n\t\t\t\tcontrols.removeEventListener('control', control);\n\t\t\t\tcontrols.removeEventListener('transitionstart', transitionStart);\n\t\t\t\tcontrols.removeEventListener('wake', wake);\n\t\t\t\tcontrols.removeEventListener('rest', rest);\n\t\t\t\tcontrols.removeEventListener('sleep', sleep);\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\n/**\n * Event emitted when the OrbitControls change (camera moves).\n */\nexport type OrbitControlsChangeEvent = Parameters<ExtractCallback<OrbitControls, 'change'>>[0];\n\n/**\n * Configuration options for the NgtsOrbitControls component.\n *\n * Extends the standard OrbitControls options with Angular-specific\n * configuration for camera control, DOM element binding, and performance settings.\n */\nexport type NgtsOrbitControlsOptions = Omit<\n\tNgtOverwrite<\n\t\tNgtThreeElement<typeof OrbitControls>,\n\t\t{\n\t\t\t/**\n\t\t\t * The camera to control. Defaults to the store's camera.\n\t\t\t */\n\t\t\tcamera?: THREE.Camera;\n\t\t\t/**\n\t\t\t * The DOM element to attach controls to. Defaults to the canvas.\n\t\t\t */\n\t\t\tdomElement?: HTMLElement;\n\t\t\t/**\n\t\t\t * The target point to orbit around.\n\t\t\t */\n\t\t\ttarget?: NgtVector3;\n\t\t\t/**\n\t\t\t * Whether to make these the default controls in the store.\n\t\t\t * @default false\n\t\t\t */\n\t\t\tmakeDefault: boolean;\n\t\t\t/**\n\t\t\t * Whether to trigger performance regression when controls are active.\n\t\t\t * @default false\n\t\t\t */\n\t\t\tregress: boolean;\n\t\t\t/**\n\t\t\t * Whether to enable damping (inertia) for smooth camera movement.\n\t\t\t * @default true\n\t\t\t */\n\t\t\tenableDamping: boolean;\n\t\t\t/**\n\t\t\t * Whether to enable keyboard controls, or a specific element to listen for key events.\n\t\t\t * @default false\n\t\t\t */\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/**\n * A component that provides orbit-style camera controls for the Three.js scene.\n *\n * OrbitControls allow users to rotate, zoom, and pan the camera around a target point\n * using mouse or touch input. The camera is constrained to orbit around the target,\n * preventing it from flipping upside down.\n *\n * @example\n * ```html\n * <ngts-orbit-controls [options]=\"{ makeDefault: true }\" />\n * ```\n *\n * @example\n * ```html\n * <ngts-orbit-controls\n * [options]=\"{ enableDamping: true, regress: true }\"\n * (changed)=\"onControlsChange($event)\"\n * (started)=\"onDragStart($event)\"\n * (ended)=\"onDragEnd($event)\"\n * />\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 {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDOCUMENT,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tuntracked,\n} from '@angular/core';\nimport { injectStore, NgtArgs, NgtOverwrite, NgtThreeElement, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { PointerLockControls } from 'three-stdlib';\n\n/**\n * Configuration options for the NgtsPointerLockControls component.\n *\n * Extends the standard PointerLockControls options with Angular-specific\n * configuration for camera control, DOM element binding, and pointer lock behavior.\n */\nexport type NgtsPointerLockControlsOptions = Omit<\n\tNgtOverwrite<\n\t\tNgtThreeElement<typeof PointerLockControls>,\n\t\t{\n\t\t\t/**\n\t\t\t * The camera to control. Defaults to the store's camera.\n\t\t\t */\n\t\t\tcamera?: THREE.Camera;\n\t\t\t/**\n\t\t\t * The DOM element to attach controls to. Defaults to the canvas.\n\t\t\t */\n\t\t\tdomElement?: HTMLElement;\n\t\t\t/**\n\t\t\t * Whether to make these the default controls in the store.\n\t\t\t * @default false\n\t\t\t */\n\t\t\tmakeDefault: boolean;\n\t\t\t/**\n\t\t\t * Whether the controls are enabled.\n\t\t\t * @default true\n\t\t\t */\n\t\t\tenabled: boolean;\n\t\t\t/**\n\t\t\t * CSS selector for elements that trigger pointer lock on click.\n\t\t\t * If not provided, clicking the document will trigger pointer lock.\n\t\t\t */\n\t\t\tselector?: string;\n\t\t}\n\t>,\n\t'attach' | 'addEventListener' | 'removeEventListener' | 'parameters' | '___ngt_args__' | '_domElementKeyEvents'\n>;\n\nconst defaultOptions: NgtsPointerLockControlsOptions = {\n\tenabled: true,\n\tmakeDefault: false,\n};\n\n/**\n * A component that provides first-person style camera controls using the Pointer Lock API.\n *\n * PointerLockControls capture the mouse cursor and allow free-look camera movement,\n * commonly used for first-person games and immersive experiences. The controls\n * automatically center raycasting while active.\n *\n * @example\n * ```html\n * <ngts-pointer-lock-controls [options]=\"{ makeDefault: true }\" />\n * ```\n *\n * @example\n * ```html\n * <ngts-pointer-lock-controls\n * [options]=\"{ selector: '#start-button' }\"\n * (lock)=\"onPointerLock($event)\"\n * (unlock)=\"onPointerUnlock($event)\"\n * (change)=\"onCameraChange($event)\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-pointer-lock-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\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPointerLockControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tlock = output<THREE.Event>();\n\tunlock = output<THREE.Event>();\n\tchange = output<THREE.Event>();\n\n\tprotected parameters = omit(this.options, ['camera', 'domElement', 'makeDefault', 'enabled', 'selector']);\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate enabled = pick(this.options, 'enabled');\n\tprivate selector = pick(this.options, 'selector');\n\n\tcontrols = computed(() => {\n\t\tconst [camera, defaultCamera] = [this.camera(), this.store.camera()];\n\t\tconst controlsCamera = camera || defaultCamera;\n\t\treturn new PointerLockControls(controlsCamera);\n\t});\n\n\tprivate element = computed(() => {\n\t\tconst domElement = this.domElement();\n\t\tif (domElement) return domElement;\n\n\t\tconst connected = this.store.events.connected?.();\n\t\tif (connected) return connected;\n\n\t\treturn this.store.gl.domElement();\n\t});\n\n\tconstructor() {\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 = this.controls();\n\t\t\tif (!controls) return;\n\n\t\t\tconst enabled = this.enabled();\n\t\t\tif (!enabled) return;\n\n\t\t\tcontrols.connect(untracked(this.element));\n\t\t\t// force events to be centered while PLC is active\n\t\t\tconst oldComputeOffsets = this.store.snapshot.events.compute;\n\n\t\t\tthis.store.update((prevState) => ({\n\t\t\t\tevents: {\n\t\t\t\t\t...prevState.events,\n\t\t\t\t\tcompute(event, root) {\n\t\t\t\t\t\tconst state = root.snapshot;\n\t\t\t\t\t\tconst offsetX = state.size.width / 2;\n\t\t\t\t\t\tconst offsetY = state.size.height / 2;\n\t\t\t\t\t\tstate.pointer.set((offsetX / state.size.width) * 2 - 1, -(offsetY / state.size.height) * 2 + 1);\n\t\t\t\t\t\tstate.raycaster.setFromCamera(state.pointer, state.camera);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}));\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.disconnect();\n\t\t\t\tthis.store.update((prevState) => ({\n\t\t\t\t\tevents: { ...prevState.events, compute: oldComputeOffsets },\n\t\t\t\t}));\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, invalidate, selector] = [this.controls(), this.store.invalidate(), this.selector()];\n\n\t\t\tconst callback = (e: THREE.Event) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (this.change) this.change.emit(e);\n\t\t\t};\n\n\t\t\tconst lockCallback = this.lock.emit.bind(this.lock);\n\t\t\tconst unlockCallback = this.unlock.emit.bind(this.unlock);\n\n\t\t\tcontrols.addEventListener('change', callback);\n\t\t\tcontrols.addEventListener('lock', lockCallback);\n\t\t\tcontrols.addEventListener('unlock', unlockCallback);\n\n\t\t\t// enforce previous interaction\n\t\t\tconst handler = controls.lock.bind(controls);\n\t\t\tconst elements = selector ? Array.from(this.document.querySelectorAll(selector)) : [this.document];\n\t\t\tfor (const element of elements) {\n\t\t\t\tif (!element) continue;\n\t\t\t\telement.addEventListener('click', handler);\n\t\t\t}\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('change', callback);\n\t\t\t\tcontrols.removeEventListener('lock', lockCallback);\n\t\t\t\tcontrols.removeEventListener('unlock', unlockCallback);\n\n\t\t\t\tfor (const element of elements) {\n\t\t\t\t\tif (!element) continue;\n\t\t\t\t\telement.removeEventListener('click', handler);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tDirective,\n\tDOCUMENT,\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\n/**\n * Configuration options for the NgtsScrollControls component.\n *\n * These options control the behavior and appearance of scroll-based interactions\n * within a Three.js canvas.\n */\nexport interface NgtsScrollControlsOptions {\n\t/**\n\t * Precision threshold for detecting scroll changes.\n\t * @default 0.00001\n\t */\n\teps: number;\n\t/**\n\t * Whether to enable horizontal scrolling instead of vertical.\n\t * @default false\n\t */\n\thorizontal: boolean;\n\t/**\n\t * Whether to enable infinite/continuous scrolling (experimental).\n\t * @default false\n\t */\n\tinfinite: boolean;\n\t/**\n\t * Defines the length of the scroll area. Each page is height:100%.\n\t * @default 1\n\t */\n\tpages: number;\n\t/**\n\t * A factor that increases scroll bar travel distance.\n\t * @default 1\n\t */\n\tdistance: number;\n\t/**\n\t * Friction/smoothing duration in seconds.\n\t * @default 0.25\n\t */\n\tdamping: number;\n\t/**\n\t * Maximum scroll speed in units per second.\n\t * Useful for clamping speed when scrolling between distant pages.\n\t * If damping is 0.2s and works well for adjacent pages but moves too fast\n\t * for distant pages, setting maxSpeed to e.g. 3 will cap the speed.\n\t * @default Infinity\n\t */\n\tmaxSpeed: number;\n\t/**\n\t * If true, attaches the scroll container before the canvas element.\n\t * @default false\n\t */\n\tprepend: boolean;\n\t/**\n\t * Whether scroll controls are enabled.\n\t * @default true\n\t */\n\tenabled: boolean;\n\t/**\n\t * Additional CSS styles to apply to the scroll container.\n\t * @default {}\n\t */\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/**\n * A component that enables scroll-based interactions within a Three.js canvas.\n *\n * NgtsScrollControls creates a scrollable container that can be used to control\n * animations and camera movements based on scroll position. It provides smooth\n * damping, supports both horizontal and vertical scrolling, and offers utility\n * methods to query scroll progress.\n *\n * @example\n * ```html\n * <ngts-scroll-controls [options]=\"{ pages: 3, damping: 0.1 }\">\n * <ngt-group canvasScrollContent>\n * <!-- 3D content that moves with scroll -->\n * </ngt-group>\n * </ngts-scroll-controls>\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\t/**\n\t * The main scroll container element.\n\t */\n\tget el() {\n\t\treturn this._el;\n\t}\n\n\t/**\n\t * The fill element that creates the scrollable height/width.\n\t */\n\tget fill() {\n\t\treturn this._fill;\n\t}\n\n\t/**\n\t * The fixed position container for scroll content.\n\t */\n\tget fixed() {\n\t\treturn this._fixed;\n\t}\n\n\t/**\n\t * Calculates a linear progress value (0-1) within a specified scroll range.\n\t *\n\t * @param from - The starting scroll position (0-1)\n\t * @param distance - The length of the active scroll range\n\t * @param margin - Optional margin to extend the range on both ends\n\t * @returns A value between 0 and 1 representing progress through the range\n\t */\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\t/**\n\t * Calculates a curved (sinusoidal) progress value within a specified scroll range.\n\t * Returns 0 at the start, peaks at 1 in the middle, and returns to 0 at the end.\n\t *\n\t * @param from - The starting scroll position (0-1)\n\t * @param distance - The length of the active scroll range\n\t * @param margin - Optional margin to extend the range on both ends\n\t * @returns A sinusoidal value between 0 and 1\n\t */\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\t/**\n\t * Determines whether the current scroll position is within a specified range.\n\t *\n\t * @param from - The starting scroll position (0-1)\n\t * @param distance - The length of the active scroll range\n\t * @param margin - Optional margin to extend the range on both ends\n\t * @returns True if currently within the specified range\n\t */\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/**\n * A directive that automatically positions a group based on scroll progress.\n *\n * Apply this directive to an ngt-group element to have it automatically\n * move in response to scroll position within NgtsScrollControls.\n *\n * @example\n * ```html\n * <ngts-scroll-controls [options]=\"{ pages: 3 }\">\n * <ngt-group canvasScrollContent>\n * <!-- Content that moves with scroll -->\n * </ngt-group>\n * </ngts-scroll-controls>\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/**\n * A directive that automatically transforms an HTML element based on scroll progress.\n *\n * Apply this directive to a div element to have it automatically transform\n * in response to scroll position within NgtsScrollControls. This is useful\n * for creating HTML overlays that scroll in sync with the 3D content.\n *\n * @example\n * ```html\n * <ngts-scroll-controls [options]=\"{ pages: 3 }\">\n * <div htmlScrollContent>\n * <h1>Scrolling HTML content</h1>\n * </div>\n * </ngts-scroll-controls>\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\n/**\n * Configuration options for the NgtsTrackballControls component.\n *\n * Extends the standard TrackballControls options with Angular-specific\n * configuration for camera control, DOM element binding, and performance settings.\n */\nexport type NgtsTrackballControlsOptions = Omit<\n\tNgtOverwrite<\n\t\tNgtThreeElement<typeof TrackballControls>,\n\t\t{\n\t\t\t/**\n\t\t\t * The target point to orbit around.\n\t\t\t */\n\t\t\ttarget?: NgtVector3;\n\t\t\t/**\n\t\t\t * The camera to control. Defaults to the store's camera.\n\t\t\t */\n\t\t\tcamera?: THREE.Camera;\n\t\t\t/**\n\t\t\t * The DOM element to attach controls to. Defaults to the canvas.\n\t\t\t */\n\t\t\tdomElement?: HTMLElement;\n\t\t\t/**\n\t\t\t * Whether to trigger performance regression when controls are active.\n\t\t\t * @default false\n\t\t\t */\n\t\t\tregress: boolean;\n\t\t\t/**\n\t\t\t * Whether to make these the default controls in the store.\n\t\t\t * @default false\n\t\t\t */\n\t\t\tmakeDefault: boolean;\n\t\t}\n\t>,\n\t'attach' | 'addEventListener' | 'removeEventListener' | 'parameters' | '___ngt_args__'\n>;\n\nconst defaultOptions: NgtsTrackballControlsOptions = {\n\tregress: false,\n\tmakeDefault: false,\n};\n\n/**\n * A component that provides trackball-style camera controls for the Three.js scene.\n *\n * TrackballControls allow users to rotate, zoom, and pan the camera using mouse\n * or touch input. Unlike OrbitControls, TrackballControls have no restrictions\n * on vertical rotation, allowing the camera to flip upside down.\n *\n * @example\n * ```html\n * <ngts-trackball-controls [options]=\"{ makeDefault: true }\" />\n * ```\n *\n * @example\n * ```html\n * <ngts-trackball-controls\n * [options]=\"{ regress: true }\"\n * (changed)=\"onControlsChange($event)\"\n * (started)=\"onDragStart($event)\"\n * (ended)=\"onDragEnd($event)\"\n * />\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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"}
|
|
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/pointer-lock-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\n/**\n * Configuration options for the NgtsCameraControls component.\n *\n * Extends the camera-controls library options with Angular-specific\n * configuration for camera control, DOM element binding, and performance settings.\n */\nexport interface NgtsCameraControlsOptions {\n\t/**\n\t * The camera to control. Defaults to the store's camera.\n\t */\n\tcamera?: NgtCamera;\n\t/**\n\t * The DOM element to attach controls to. Defaults to the canvas.\n\t */\n\tdomElement?: HTMLElement;\n\t/**\n\t * Whether to make these the default controls in the store.\n\t * @default false\n\t */\n\tmakeDefault: boolean;\n\t/**\n\t * Whether to trigger performance regression when controls are active.\n\t * @default false\n\t */\n\tregress: boolean;\n}\n\nconst defaultOptions: Partial<CameraControls> & NgtsCameraControlsOptions = {\n\tmakeDefault: false,\n\tregress: false,\n};\n\n/**\n * A component that provides advanced camera controls using the camera-controls library.\n *\n * CameraControls offer smooth, customizable camera movements with features like\n * dolly, truck, rotate, and various transition animations. It provides more\n * advanced functionality than OrbitControls, including smooth transitions\n * and programmatic camera control.\n *\n * @see https://github.com/yomotsu/camera-controls\n *\n * @example\n * ```html\n * <ngts-camera-controls [options]=\"{ makeDefault: true }\" />\n * ```\n *\n * @example\n * ```html\n * <ngts-camera-controls\n * [options]=\"{ regress: true }\"\n * (control)=\"onControl($event)\"\n * (controlStart)=\"onControlStart($event)\"\n * (controlEnd)=\"onControlEnd($event)\"\n * (transitionStart)=\"onTransitionStart($event)\"\n * (update)=\"onUpdate($event)\"\n * (wake)=\"onWake($event)\"\n * (rest)=\"onRest($event)\"\n * (sleep)=\"onSleep($event)\"\n * />\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\tcontrol = output<any>();\n\tcontrolStart = output<any>();\n\tcontrolEnd = output<any>();\n\ttransitionStart = output<any>();\n\tupdate = output<any>();\n\twake = output<any>();\n\trest = output<any>();\n\tsleep = 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\tcontrols?.update(delta);\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 invalidateAndRegress = () => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (regress) performanceRegress();\n\t\t\t};\n\n\t\t\tconst control = (e: any) => {\n\t\t\t\tinvalidateAndRegress();\n\t\t\t\tthis.control.emit(e);\n\t\t\t};\n\n\t\t\tconst controlStart = (e: any) => {\n\t\t\t\tinvalidateAndRegress();\n\t\t\t\tthis.controlStart.emit(e);\n\t\t\t};\n\n\t\t\tconst transitionStart = (e: any) => {\n\t\t\t\tinvalidateAndRegress();\n\t\t\t\tthis.transitionStart.emit(e);\n\t\t\t};\n\n\t\t\tconst update = (e: any) => {\n\t\t\t\tinvalidateAndRegress();\n\t\t\t\tthis.update.emit(e);\n\t\t\t};\n\n\t\t\tconst wake = (e: any) => {\n\t\t\t\tinvalidateAndRegress();\n\t\t\t\tthis.wake.emit(e);\n\t\t\t};\n\n\t\t\tconst controlEnd = this.controlEnd.emit.bind(this.controlEnd);\n\t\t\tconst rest = this.rest.emit.bind(this.rest);\n\t\t\tconst sleep = this.sleep.emit.bind(this.sleep);\n\n\t\t\tcontrols.addEventListener('update', update);\n\t\t\tcontrols.addEventListener('controlstart', controlStart);\n\t\t\tcontrols.addEventListener('controlend', controlEnd);\n\t\t\tcontrols.addEventListener('control', control);\n\t\t\tcontrols.addEventListener('transitionstart', transitionStart);\n\t\t\tcontrols.addEventListener('wake', wake);\n\t\t\tcontrols.addEventListener('rest', rest);\n\t\t\tcontrols.addEventListener('sleep', sleep);\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('update', update);\n\t\t\t\tcontrols.removeEventListener('controlstart', controlStart);\n\t\t\t\tcontrols.removeEventListener('controlend', controlEnd);\n\t\t\t\tcontrols.removeEventListener('control', control);\n\t\t\t\tcontrols.removeEventListener('transitionstart', transitionStart);\n\t\t\t\tcontrols.removeEventListener('wake', wake);\n\t\t\t\tcontrols.removeEventListener('rest', rest);\n\t\t\t\tcontrols.removeEventListener('sleep', sleep);\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\n/**\n * Event emitted when the OrbitControls change (camera moves).\n */\nexport type OrbitControlsChangeEvent = Parameters<ExtractCallback<OrbitControls, 'change'>>[0];\n\n/**\n * Configuration options for the NgtsOrbitControls component.\n *\n * Extends the standard OrbitControls options with Angular-specific\n * configuration for camera control, DOM element binding, and performance settings.\n */\nexport type NgtsOrbitControlsOptions = Omit<\n\tNgtOverwrite<\n\t\tNgtThreeElement<typeof OrbitControls>,\n\t\t{\n\t\t\t/**\n\t\t\t * The camera to control. Defaults to the store's camera.\n\t\t\t */\n\t\t\tcamera?: THREE.Camera;\n\t\t\t/**\n\t\t\t * The DOM element to attach controls to. Defaults to the canvas.\n\t\t\t */\n\t\t\tdomElement?: HTMLElement;\n\t\t\t/**\n\t\t\t * The target point to orbit around.\n\t\t\t */\n\t\t\ttarget?: NgtVector3;\n\t\t\t/**\n\t\t\t * Whether to make these the default controls in the store.\n\t\t\t * @default false\n\t\t\t */\n\t\t\tmakeDefault: boolean;\n\t\t\t/**\n\t\t\t * Whether to trigger performance regression when controls are active.\n\t\t\t * @default false\n\t\t\t */\n\t\t\tregress: boolean;\n\t\t\t/**\n\t\t\t * Whether to enable damping (inertia) for smooth camera movement.\n\t\t\t * @default true\n\t\t\t */\n\t\t\tenableDamping: boolean;\n\t\t\t/**\n\t\t\t * Whether to enable keyboard controls, or a specific element to listen for key events.\n\t\t\t * @default false\n\t\t\t */\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/**\n * A component that provides orbit-style camera controls for the Three.js scene.\n *\n * OrbitControls allow users to rotate, zoom, and pan the camera around a target point\n * using mouse or touch input. The camera is constrained to orbit around the target,\n * preventing it from flipping upside down.\n *\n * @example\n * ```html\n * <ngts-orbit-controls [options]=\"{ makeDefault: true }\" />\n * ```\n *\n * @example\n * ```html\n * <ngts-orbit-controls\n * [options]=\"{ enableDamping: true, regress: true }\"\n * (changed)=\"onControlsChange($event)\"\n * (started)=\"onDragStart($event)\"\n * (ended)=\"onDragEnd($event)\"\n * />\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 {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDOCUMENT,\n\teffect,\n\tinject,\n\tinput,\n\toutput,\n\tuntracked,\n} from '@angular/core';\nimport { injectStore, NgtArgs, NgtOverwrite, NgtThreeElement, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { PointerLockControls } from 'three-stdlib';\n\n/**\n * Configuration options for the NgtsPointerLockControls component.\n *\n * Extends the standard PointerLockControls options with Angular-specific\n * configuration for camera control, DOM element binding, and pointer lock behavior.\n */\nexport type NgtsPointerLockControlsOptions = Omit<\n\tNgtOverwrite<\n\t\tNgtThreeElement<typeof PointerLockControls>,\n\t\t{\n\t\t\t/**\n\t\t\t * The camera to control. Defaults to the store's camera.\n\t\t\t */\n\t\t\tcamera?: THREE.Camera;\n\t\t\t/**\n\t\t\t * The DOM element to attach controls to. Defaults to the canvas.\n\t\t\t */\n\t\t\tdomElement?: HTMLElement;\n\t\t\t/**\n\t\t\t * Whether to make these the default controls in the store.\n\t\t\t * @default false\n\t\t\t */\n\t\t\tmakeDefault: boolean;\n\t\t\t/**\n\t\t\t * Whether the controls are enabled.\n\t\t\t * @default true\n\t\t\t */\n\t\t\tenabled: boolean;\n\t\t\t/**\n\t\t\t * CSS selector for elements that trigger pointer lock on click.\n\t\t\t * If not provided, clicking the document will trigger pointer lock.\n\t\t\t */\n\t\t\tselector?: string;\n\t\t}\n\t>,\n\t'attach' | 'addEventListener' | 'removeEventListener' | 'parameters' | '___ngt_args__' | '_domElementKeyEvents'\n>;\n\nconst defaultOptions: NgtsPointerLockControlsOptions = {\n\tenabled: true,\n\tmakeDefault: false,\n};\n\n/**\n * A component that provides first-person style camera controls using the Pointer Lock API.\n *\n * PointerLockControls capture the mouse cursor and allow free-look camera movement,\n * commonly used for first-person games and immersive experiences. The controls\n * automatically center raycasting while active.\n *\n * @example\n * ```html\n * <ngts-pointer-lock-controls [options]=\"{ makeDefault: true }\" />\n * ```\n *\n * @example\n * ```html\n * <ngts-pointer-lock-controls\n * [options]=\"{ selector: '#start-button' }\"\n * (lock)=\"onPointerLock($event)\"\n * (unlock)=\"onPointerUnlock($event)\"\n * (change)=\"onCameraChange($event)\"\n * />\n * ```\n */\n@Component({\n\tselector: 'ngts-pointer-lock-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\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class NgtsPointerLockControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tlock = output<THREE.Event>();\n\tunlock = output<THREE.Event>();\n\tchange = output<THREE.Event>();\n\n\tprotected parameters = omit(this.options, ['camera', 'domElement', 'makeDefault', 'enabled', 'selector']);\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\tprivate enabled = pick(this.options, 'enabled');\n\tprivate selector = pick(this.options, 'selector');\n\n\tcontrols = computed(() => {\n\t\tconst [camera, defaultCamera] = [this.camera(), this.store.camera()];\n\t\tconst controlsCamera = camera || defaultCamera;\n\t\treturn new PointerLockControls(controlsCamera);\n\t});\n\n\tprivate element = computed(() => {\n\t\tconst domElement = this.domElement();\n\t\tif (domElement) return domElement;\n\n\t\tconst connected = this.store.events.connected?.();\n\t\tif (connected) return connected;\n\n\t\treturn this.store.gl.domElement();\n\t});\n\n\tconstructor() {\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 = this.controls();\n\t\t\tif (!controls) return;\n\n\t\t\tconst enabled = this.enabled();\n\t\t\tif (!enabled) return;\n\n\t\t\tcontrols.connect(untracked(this.element));\n\t\t\t// force events to be centered while PLC is active\n\t\t\tconst oldComputeOffsets = this.store.snapshot.events.compute;\n\n\t\t\tthis.store.update((prevState) => ({\n\t\t\t\tevents: {\n\t\t\t\t\t...prevState.events,\n\t\t\t\t\tcompute(event, root) {\n\t\t\t\t\t\tconst state = root.snapshot;\n\t\t\t\t\t\tconst offsetX = state.size.width / 2;\n\t\t\t\t\t\tconst offsetY = state.size.height / 2;\n\t\t\t\t\t\tstate.pointer.set((offsetX / state.size.width) * 2 - 1, -(offsetY / state.size.height) * 2 + 1);\n\t\t\t\t\t\tstate.raycaster.setFromCamera(state.pointer, state.camera);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}));\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.disconnect();\n\t\t\t\tthis.store.update((prevState) => ({\n\t\t\t\t\tevents: { ...prevState.events, compute: oldComputeOffsets },\n\t\t\t\t}));\n\t\t\t});\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, invalidate, selector] = [this.controls(), this.store.invalidate(), this.selector()];\n\n\t\t\tconst callback = (e: THREE.Event) => {\n\t\t\t\tinvalidate();\n\t\t\t\tif (this.change) this.change.emit(e);\n\t\t\t};\n\n\t\t\tconst lockCallback = this.lock.emit.bind(this.lock);\n\t\t\tconst unlockCallback = this.unlock.emit.bind(this.unlock);\n\n\t\t\tcontrols.addEventListener('change', callback);\n\t\t\tcontrols.addEventListener('lock', lockCallback);\n\t\t\tcontrols.addEventListener('unlock', unlockCallback);\n\n\t\t\t// enforce previous interaction\n\t\t\tconst handler = controls.lock.bind(controls);\n\t\t\tconst elements = selector ? Array.from(this.document.querySelectorAll(selector)) : [this.document];\n\t\t\tfor (const element of elements) {\n\t\t\t\tif (!element) continue;\n\t\t\t\telement.addEventListener('click', handler);\n\t\t\t}\n\n\t\t\tonCleanup(() => {\n\t\t\t\tcontrols.removeEventListener('change', callback);\n\t\t\t\tcontrols.removeEventListener('lock', lockCallback);\n\t\t\t\tcontrols.removeEventListener('unlock', unlockCallback);\n\n\t\t\t\tfor (const element of elements) {\n\t\t\t\t\tif (!element) continue;\n\t\t\t\t\telement.removeEventListener('click', handler);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tDirective,\n\tDOCUMENT,\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\n/**\n * Configuration options for the NgtsScrollControls component.\n *\n * These options control the behavior and appearance of scroll-based interactions\n * within a Three.js canvas.\n */\nexport interface NgtsScrollControlsOptions {\n\t/**\n\t * Precision threshold for detecting scroll changes.\n\t * @default 0.00001\n\t */\n\teps: number;\n\t/**\n\t * Whether to enable horizontal scrolling instead of vertical.\n\t * @default false\n\t */\n\thorizontal: boolean;\n\t/**\n\t * Whether to enable infinite/continuous scrolling (experimental).\n\t * @default false\n\t */\n\tinfinite: boolean;\n\t/**\n\t * Defines the length of the scroll area. Each page is height:100%.\n\t * @default 1\n\t */\n\tpages: number;\n\t/**\n\t * A factor that increases scroll bar travel distance.\n\t * @default 1\n\t */\n\tdistance: number;\n\t/**\n\t * Friction/smoothing duration in seconds.\n\t * @default 0.25\n\t */\n\tdamping: number;\n\t/**\n\t * Maximum scroll speed in units per second.\n\t * Useful for clamping speed when scrolling between distant pages.\n\t * If damping is 0.2s and works well for adjacent pages but moves too fast\n\t * for distant pages, setting maxSpeed to e.g. 3 will cap the speed.\n\t * @default Infinity\n\t */\n\tmaxSpeed: number;\n\t/**\n\t * If true, attaches the scroll container before the canvas element.\n\t * @default false\n\t */\n\tprepend: boolean;\n\t/**\n\t * Whether scroll controls are enabled.\n\t * @default true\n\t */\n\tenabled: boolean;\n\t/**\n\t * Additional CSS styles to apply to the scroll container.\n\t * @default {}\n\t */\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/**\n * A component that enables scroll-based interactions within a Three.js canvas.\n *\n * NgtsScrollControls creates a scrollable container that can be used to control\n * animations and camera movements based on scroll position. It provides smooth\n * damping, supports both horizontal and vertical scrolling, and offers utility\n * methods to query scroll progress.\n *\n * @example\n * ```html\n * <ngts-scroll-controls [options]=\"{ pages: 3, damping: 0.1 }\">\n * <ngt-group canvasScrollContent>\n * <!-- 3D content that moves with scroll -->\n * </ngt-group>\n * </ngts-scroll-controls>\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\t/**\n\t * The main scroll container element.\n\t */\n\tget el() {\n\t\treturn this._el;\n\t}\n\n\t/**\n\t * The fill element that creates the scrollable height/width.\n\t */\n\tget fill() {\n\t\treturn this._fill;\n\t}\n\n\t/**\n\t * The fixed position container for scroll content.\n\t */\n\tget fixed() {\n\t\treturn this._fixed;\n\t}\n\n\t/**\n\t * Calculates a linear progress value (0-1) within a specified scroll range.\n\t *\n\t * @param from - The starting scroll position (0-1)\n\t * @param distance - The length of the active scroll range\n\t * @param margin - Optional margin to extend the range on both ends\n\t * @returns A value between 0 and 1 representing progress through the range\n\t */\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\t/**\n\t * Calculates a curved (sinusoidal) progress value within a specified scroll range.\n\t * Returns 0 at the start, peaks at 1 in the middle, and returns to 0 at the end.\n\t *\n\t * @param from - The starting scroll position (0-1)\n\t * @param distance - The length of the active scroll range\n\t * @param margin - Optional margin to extend the range on both ends\n\t * @returns A sinusoidal value between 0 and 1\n\t */\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\t/**\n\t * Determines whether the current scroll position is within a specified range.\n\t *\n\t * @param from - The starting scroll position (0-1)\n\t * @param distance - The length of the active scroll range\n\t * @param margin - Optional margin to extend the range on both ends\n\t * @returns True if currently within the specified range\n\t */\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/**\n * A directive that automatically positions a group based on scroll progress.\n *\n * Apply this directive to an ngt-group element to have it automatically\n * move in response to scroll position within NgtsScrollControls.\n *\n * @example\n * ```html\n * <ngts-scroll-controls [options]=\"{ pages: 3 }\">\n * <ngt-group canvasScrollContent>\n * <!-- Content that moves with scroll -->\n * </ngt-group>\n * </ngts-scroll-controls>\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/**\n * A directive that automatically transforms an HTML element based on scroll progress.\n *\n * Apply this directive to a div element to have it automatically transform\n * in response to scroll position within NgtsScrollControls. This is useful\n * for creating HTML overlays that scroll in sync with the 3D content.\n *\n * @example\n * ```html\n * <ngts-scroll-controls [options]=\"{ pages: 3 }\">\n * <div htmlScrollContent>\n * <h1>Scrolling HTML content</h1>\n * </div>\n * </ngts-scroll-controls>\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\n/**\n * Configuration options for the NgtsTrackballControls component.\n *\n * Extends the standard TrackballControls options with Angular-specific\n * configuration for camera control, DOM element binding, and performance settings.\n */\nexport type NgtsTrackballControlsOptions = Omit<\n\tNgtOverwrite<\n\t\tNgtThreeElement<typeof TrackballControls>,\n\t\t{\n\t\t\t/**\n\t\t\t * The target point to orbit around.\n\t\t\t */\n\t\t\ttarget?: NgtVector3;\n\t\t\t/**\n\t\t\t * The camera to control. Defaults to the store's camera.\n\t\t\t */\n\t\t\tcamera?: THREE.Camera;\n\t\t\t/**\n\t\t\t * The DOM element to attach controls to. Defaults to the canvas.\n\t\t\t */\n\t\t\tdomElement?: HTMLElement;\n\t\t\t/**\n\t\t\t * Whether to trigger performance regression when controls are active.\n\t\t\t * @default false\n\t\t\t */\n\t\t\tregress: boolean;\n\t\t\t/**\n\t\t\t * Whether to make these the default controls in the store.\n\t\t\t * @default false\n\t\t\t */\n\t\t\tmakeDefault: boolean;\n\t\t}\n\t>,\n\t'attach' | 'addEventListener' | 'removeEventListener' | 'parameters' | '___ngt_args__'\n>;\n\nconst defaultOptions: NgtsTrackballControlsOptions = {\n\tregress: false,\n\tmakeDefault: false,\n};\n\n/**\n * A component that provides trackball-style camera controls for the Three.js scene.\n *\n * TrackballControls allow users to rotate, zoom, and pan the camera using mouse\n * or touch input. Unlike OrbitControls, TrackballControls have no restrictions\n * on vertical rotation, allowing the camera to flip upside down.\n *\n * @example\n * ```html\n * <ngts-trackball-controls [options]=\"{ makeDefault: true }\" />\n * ```\n *\n * @example\n * ```html\n * <ngts-trackball-controls\n * [options]=\"{ regress: true }\"\n * (changed)=\"onControlsChange($event)\"\n * (started)=\"onDragStart($event)\"\n * (ended)=\"onDragEnd($event)\"\n * />\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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"}
|