angular-three-soba 2.0.0 → 2.2.0
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/abstractions/lib/catmull-rom-line.d.ts +148 -148
- package/abstractions/lib/edges.d.ts +166 -166
- package/abstractions/lib/grid.d.ts +30 -30
- package/abstractions/lib/line.d.ts +2 -2
- package/abstractions/lib/prism-geometry.d.ts +4 -4
- package/abstractions/lib/rounded-box.d.ts +1 -1
- package/abstractions/lib/text-3d.d.ts +37 -37
- package/abstractions/lib/text.d.ts +2 -2
- package/cameras/lib/cube-camera.d.ts +1 -1
- package/cameras/lib/orthographic-camera.d.ts +1 -1
- package/cameras/lib/perspective-camera.d.ts +1 -1
- package/controls/index.d.ts +9 -1
- package/controls/lib/camera-controls.d.ts +1 -1
- package/controls/lib/orbit-controls.d.ts +1 -1
- package/esm2022/controls/index.mjs +6 -2
- package/esm2022/gizmos/angular-three-soba-gizmos.mjs +5 -0
- package/esm2022/gizmos/index.mjs +6 -0
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-helper.mjs +187 -0
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewcube.mjs +304 -0
- package/esm2022/gizmos/lib/gizmo-helper/gizmo-viewport.mjs +332 -0
- package/esm2022/gizmos/lib/pivot-controls/axis-arrow.mjs +263 -0
- package/esm2022/gizmos/lib/pivot-controls/axis-rotator.mjs +264 -0
- package/esm2022/gizmos/lib/pivot-controls/pivot-controls.mjs +340 -0
- package/esm2022/gizmos/lib/pivot-controls/plane-slider.mjs +266 -0
- package/esm2022/gizmos/lib/pivot-controls/scaling-sphere.mjs +232 -0
- package/esm2022/gizmos/lib/transform-controls.mjs +177 -0
- package/esm2022/staging/index.mjs +2 -1
- package/esm2022/staging/lib/mask.mjs +78 -0
- package/fesm2022/angular-three-soba-controls.mjs +14 -1337
- package/fesm2022/angular-three-soba-controls.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +2319 -0
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -0
- package/fesm2022/angular-three-soba-staging.mjs +92 -21
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/gizmos/README.md +3 -0
- package/gizmos/index.d.ts +5 -0
- package/gizmos/lib/gizmo-helper/gizmo-helper.d.ts +45 -0
- package/gizmos/lib/gizmo-helper/gizmo-viewcube.d.ts +74 -0
- package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +64 -0
- package/{controls → gizmos}/lib/pivot-controls/pivot-controls.d.ts +1 -1
- package/gizmos/lib/transform-controls.d.ts +50 -0
- package/materials/lib/custom-shader-material.d.ts +3 -3
- package/materials/lib/mesh-refraction-material.d.ts +3 -3
- package/materials/lib/mesh-transmission-material.d.ts +1 -1
- package/misc/lib/computed-attribute.d.ts +5 -5
- package/misc/lib/decal.d.ts +1 -1
- package/misc/lib/html/html.d.ts +1 -1
- package/misc/lib/sampler.d.ts +1 -1
- package/package.json +18 -12
- package/performances/lib/instances/instances.d.ts +9 -9
- package/performances/lib/points/points.d.ts +20 -20
- package/performances/lib/segments/segments.d.ts +4 -4
- package/shaders/lib/mesh-refraction-material.d.ts +2 -2
- package/staging/index.d.ts +1 -0
- package/staging/lib/caustics.d.ts +1 -1
- package/staging/lib/center.d.ts +2 -2
- package/staging/lib/contact-shadows.d.ts +1 -1
- package/staging/lib/lightformer.d.ts +1 -1
- package/staging/lib/mask.d.ts +30 -0
- package/staging/lib/render-texture.d.ts +1 -1
- package/staging/lib/sky.d.ts +1 -1
- package/staging/lib/spot-light.d.ts +2 -2
- package/staging/lib/stage.d.ts +6 -6
- package/esm2022/controls/lib/pivot-controls/axis-arrow.mjs +0 -263
- package/esm2022/controls/lib/pivot-controls/axis-rotator.mjs +0 -264
- package/esm2022/controls/lib/pivot-controls/pivot-controls.mjs +0 -340
- package/esm2022/controls/lib/pivot-controls/plane-slider.mjs +0 -266
- package/esm2022/controls/lib/pivot-controls/scaling-sphere.mjs +0 -232
- /package/{controls → gizmos}/lib/pivot-controls/axis-arrow.d.ts +0 -0
- /package/{controls → gizmos}/lib/pivot-controls/axis-rotator.d.ts +0 -0
- /package/{controls → gizmos}/lib/pivot-controls/plane-slider.d.ts +0 -0
- /package/{controls → gizmos}/lib/pivot-controls/scaling-sphere.d.ts +0 -0
|
@@ -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/pivot-controls/axis-arrow.ts","../../../../libs/soba/controls/src/lib/pivot-controls/axis-rotator.ts","../../../../libs/soba/controls/src/lib/pivot-controls/plane-slider.ts","../../../../libs/soba/controls/src/lib/pivot-controls/scaling-sphere.ts","../../../../libs/soba/controls/src/lib/pivot-controls/pivot-controls.ts","../../../../libs/soba/controls/src/lib/scroll-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 { extend, injectBeforeRender, injectStore, NgtArgs, NgtCamera, omit, pick } from 'angular-three';\nimport CameraControls from 'camera-controls';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tBox3,\n\tEventDispatcher,\n\tMathUtils,\n\tMatrix4,\n\tQuaternion,\n\tRaycaster,\n\tSphere,\n\tSpherical,\n\tVector2,\n\tVector3,\n\tVector4,\n} from 'three';\n\nexport interface NgtsCameraControlsOptions {\n\tcamera?: NgtCamera;\n\tdomElement?: HTMLElement;\n\tmakeDefault: boolean;\n\tevents: boolean;\n\tregress: boolean;\n}\n\nconst defaultOptions: Partial<CameraControls> & NgtsCameraControlsOptions = {\n\tmakeDefault: false,\n\tevents: false,\n\tregress: false,\n};\n\n@Component({\n\tselector: 'ngts-camera-controls',\n\tstandalone: true,\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\tparameters = 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\tprivate invalidate = this.store.select('invalidate');\n\tprivate performanceRegress = this.store.select('performance', 'regress');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate glDomElement = this.store.select('gl', 'domElement');\n\tprivate eventsElement = this.store.select('events', 'connected');\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.defaultCamera()];\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,\n\t\t\t\tMathUtils: { clamp: MathUtils.clamp },\n\t\t\t\tMatrix4,\n\t\t\t\tQuaternion,\n\t\t\t\tRaycaster,\n\t\t\t\tSphere,\n\t\t\t\tSpherical,\n\t\t\t\tVector2,\n\t\t\t\tVector3,\n\t\t\t\tVector4,\n\t\t\t},\n\t\t});\n\t\textend({ CameraControls });\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.eventsElement(),\n\t\t\t\tthis.glDomElement(),\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, regress, performanceRegress, invalidate] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.regress(),\n\t\t\t\tthis.performanceRegress(),\n\t\t\t\tthis.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\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, makeDefault] = [this.controls(), this.makeDefault()];\n\n\t\t\tif (makeDefault) {\n\t\t\t\tconst oldControls = this.store.snapshot.controls;\n\t\t\t\tthis.store.update({ controls: controls as unknown as EventDispatcher });\n\t\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, output } from '@angular/core';\nimport { injectBeforeRender, injectStore, NgtArgs, NgtCamera, NgtVector3, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Camera, Event } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nexport interface NgtsOrbitControlsOptions {\n\tcamera?: Camera;\n\tdomElement?: HTMLElement;\n\ttarget?: NgtVector3;\n\tmakeDefault: boolean;\n\tregress: boolean;\n\tenableDamping: boolean;\n\tkeyEvents: boolean | HTMLElement;\n}\n\nconst defaultOptions: Partial<OrbitControls> & NgtsOrbitControlsOptions = {\n\tenableDamping: true,\n\tregress: false,\n\tmakeDefault: false,\n\tkeyEvents: false,\n};\n\n@Component({\n\tselector: 'ngts-orbit-controls',\n\tstandalone: true,\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\tparameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement', 'keyEvents', 'enableDamping']);\n\n\tchanged = output<Event>();\n\tstarted = output<Event>();\n\tended = output<Event>();\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate performanceRegress = this.store.select('performance', 'regress');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate glDomElement = this.store.select('gl', 'domElement');\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.defaultCamera()];\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) {\n\t\t\t\t\tcontrols.update();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\t\tthis.connectElement();\n\t\tthis.makeControlsDefault();\n\t\tthis.setEvents();\n\t}\n\n\tprivate connectElement() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [keyEvents, domElement, controls] = [\n\t\t\t\tthis.keyEvents(),\n\t\t\t\tthis.domElement() || this.store.get('events', 'connected') || this.glDomElement(),\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tif (!controls) return;\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\t}\n\n\tprivate makeControlsDefault() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, makeDefault] = [this.controls(), this.makeDefault()];\n\t\t\tif (!controls) return;\n\t\t\tif (makeDefault) {\n\t\t\t\tconst oldControls = this.store.get('controls');\n\t\t\t\tthis.store.update({ controls });\n\t\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setEvents() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, invalidate, performanceRegress, regress] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.performanceRegress(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tif (!controls) return;\n\t\t\tconst changeCallback: (e: 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\t// @ts-expect-error - type error from three-stdlib\n\t\t\tcontrols.addEventListener('change', changeCallback);\n\t\t\t// @ts-expect-error - type error from three-stdlib\n\t\t\tcontrols.addEventListener('start', startCallback);\n\t\t\t// @ts-expect-error - type error from three-stdlib\n\t\t\tcontrols.addEventListener('end', endCallback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\t// @ts-expect-error - type error from three-stdlib\n\t\t\t\tcontrols.removeEventListener('change', changeCallback);\n\t\t\t\t// @ts-expect-error - type error from three-stdlib\n\t\t\t\tcontrols.removeEventListener('start', startCallback);\n\t\t\t\t// @ts-expect-error - type error from three-stdlib\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\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport {\n\tConeGeometry,\n\tCylinderGeometry,\n\tDoubleSide,\n\tGroup,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tQuaternion,\n\tVector3,\n} from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new Vector3();\nconst vec2 = new Vector3();\n\nexport function calculateOffset(clickPoint: Vector3, normal: Vector3, rayStart: Vector3, rayDir: Vector3) {\n\tconst e1 = normal.dot(normal);\n\tconst e2 = normal.dot(clickPoint) - normal.dot(rayStart);\n\tconst e3 = normal.dot(rayDir);\n\n\tif (e3 === 0) {\n\t\treturn -e2 / e1;\n\t}\n\n\tvec1\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e2 / e3)\n\t\t.add(rayStart)\n\t\t.sub(clickPoint);\n\n\treturn -vec1.dot(vec2) / vec1.dot(vec1);\n}\n\nconst upV = new Vector3(0, 1, 0);\nconst offsetMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-axis-arrow',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ngt-group\n\t\t\t\t[matrix]=\"matrixL()\"\n\t\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t>\n\t\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t\t<ngts-html [options]=\"{ position: [0, -coneLength(), 0] }\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t#annotation\n\t\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap;\"\n\t\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</ngts-html>\n\t\t\t\t}\n\t\t\t\t<ngt-mesh\n\t\t\t\t\t[visible]=\"false\"\n\t\t\t\t\t[position]=\"[0, (cylinderLength() + coneLength()) / 2.0, 0]\"\n\t\t\t\t\t[userData]=\"pivotControls.userData()\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-cylinder-geometry\n\t\t\t\t\t\t*args=\"[coneWidth() * 1.4, coneWidth() * 1.4, cylinderLength() + coneLength(), 8, 1]\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\n\t\t\t\t<ngts-line\n\t\t\t\t\t[points]=\"[0, 0, 0, 0, cylinderLength(), 0]\"\n\t\t\t\t\t[options]=\"{\n\t\t\t\t\t\traycast: null,\n\t\t\t\t\t\tside: DoubleSide,\n\t\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\t\trenderOrder: 1,\n\t\t\t\t\t\tfog: false,\n\t\t\t\t\t\ttransparent: true,\n\t\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\t\tcolor: color(),\n\t\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\t}\"\n\t\t\t\t/>\n\n\t\t\t\t<ngt-mesh [raycast]=\"null\" [position]=\"[0, cylinderLength() + coneLength() / 2.0, 0]\" [renderOrder]=\"500\">\n\t\t\t\t\t<ngt-cone-geometry *args=\"[coneWidth(), coneLength(), 24, 1]\" />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[opacity]=\"pivotControls.opacity()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t\t[fog]=\"false\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtsLine, NgtsHTML, NgtsHTMLContent],\n})\nexport class NgtsAxisArrow {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdirection = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: Vector3; dir: Vector3 } | null = null;\n\tprivate offset0 = 0;\n\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\n\tconeWidth = computed(() =>\n\t\tthis.pivotControls.fixed()\n\t\t\t? (this.pivotControls.lineWidth() / this.pivotControls.scale()) * 1.6\n\t\t\t: this.pivotControls.scale() / 20,\n\t);\n\tconeLength = computed(() => (this.pivotControls.fixed() ? 0.2 : this.pivotControls.scale() / 5));\n\tcylinderLength = computed(() =>\n\t\tthis.pivotControls.fixed() ? 1 - this.coneLength() : this.pivotControls.scale() - this.coneLength(),\n\t);\n\tmatrixL = computed(() => {\n\t\tconst quaternion = new Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new Matrix4().makeRotationFromQuaternion(quaternion);\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, ConeGeometry, CylinderGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [group, direction, axis, controls, annotation] = [\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.direction(),\n\t\t\tthis.axis(),\n\t\t\tthis.controls(),\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${this.pivotControls.translation[axis].toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\n\t\tconst rotation = new Matrix4().extractRotation(group.matrixWorld);\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst clickPoint = event.point.clone();\n\t\tconst dir = direction.clone().applyMatrix4(rotation).normalize();\n\t\tthis.clickInfo = { clickPoint, dir };\n\t\tthis.offset0 = this.pivotControls.translation[axis];\n\t\tthis.pivotControls.onDragStart({ component: 'Arrow', axis, origin, directions: [dir] });\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\n\t\tif (!this.hovered()) {\n\t\t\tthis.hovered.set(true);\n\t\t}\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, dir } = this.clickInfo;\n\t\t\tconst [translationLimits, annotation, axis] = [\n\t\t\t\tthis.pivotControls.translationLimits(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t\tthis.axis(),\n\t\t\t];\n\n\t\t\tconst [min, max] = translationLimits?.[axis] || [undefined, undefined];\n\n\t\t\tlet offset = calculateOffset(clickPoint, dir, event.ray.origin, event.ray.direction);\n\t\t\tif (min !== undefined) {\n\t\t\t\toffset = Math.max(offset, min - this.offset0);\n\t\t\t}\n\n\t\t\tif (max !== undefined) {\n\t\t\t\toffset = Math.min(offset, max - this.offset0);\n\t\t\t}\n\n\t\t\tthis.pivotControls.translation[axis] = this.offset0 + offset;\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.pivotControls.translation[axis].toFixed(2)}`;\n\t\t\t}\n\n\t\t\toffsetMatrix.makeTranslation(dir.x * offset, dir.y * offset, dir.z * offset);\n\t\t\tthis.pivotControls.onDrag(offsetMatrix);\n\t\t}\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tSignal,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { DoubleSide, Group, Matrix4, Plane, Ray, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst clickDir = new Vector3();\nconst intersectionDir = new Vector3();\n\nfunction toDegrees(radians: number) {\n\treturn (radians * 180) / Math.PI;\n}\n\nfunction toRadians(degrees: number) {\n\treturn (degrees * Math.PI) / 180;\n}\n\nfunction calculateAngle(clickPoint: Vector3, intersectionPoint: Vector3, origin: Vector3, e1: Vector3, e2: Vector3) {\n\tclickDir.copy(clickPoint).sub(origin);\n\tintersectionDir.copy(intersectionPoint).sub(origin);\n\tconst dote1e1 = e1.dot(e1);\n\tconst dote2e2 = e2.dot(e2);\n\tconst uClick = clickDir.dot(e1) / dote1e1;\n\tconst vClick = clickDir.dot(e2) / dote2e2;\n\tconst uIntersection = intersectionDir.dot(e1) / dote1e1;\n\tconst vIntersection = intersectionDir.dot(e2) / dote2e2;\n\tconst angleClick = Math.atan2(vClick, uClick);\n\tconst angleIntersection = Math.atan2(vIntersection, uIntersection);\n\treturn angleIntersection - angleClick;\n}\n\nfunction fmod(num: number, denom: number) {\n\tlet k = Math.floor(num / denom);\n\tk = k < 0 ? k + 1 : k;\n\n\treturn num - k * denom;\n}\n\nfunction minimizeAngle(angle: number) {\n\tlet result = fmod(angle, 2 * Math.PI);\n\n\tif (Math.abs(result) < 1e-6) {\n\t\treturn 0.0;\n\t}\n\n\tif (result < 0.0) {\n\t\tresult += 2 * Math.PI;\n\t}\n\n\treturn result;\n}\n\nconst rotMatrix = new Matrix4();\nconst posNew = new Vector3();\nconst ray = new Ray();\nconst intersection = new Vector3();\n\n@Component({\n\tselector: 'ngts-axis-rotator',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group\n\t\t\t#group\n\t\t\t[matrix]=\"matrixL()\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t>\n\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t<ngts-html [options]=\"{ position: [r(), r(), 0] }\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t#annotation\n\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap\"\n\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t></div>\n\t\t\t\t</ngts-html>\n\t\t\t}\n\n\t\t\t<ngts-line\n\t\t\t\t[points]=\"arc()\"\n\t\t\t\t[options]=\"{ lineWidth: pivotControls.lineWidth() * 4, visible: false, userData: pivotControls.userData() }\"\n\t\t\t/>\n\n\t\t\t<ngts-line\n\t\t\t\t[points]=\"arc()\"\n\t\t\t\t[options]=\"{\n\t\t\t\t\ttransparent: true,\n\t\t\t\t\traycast: null,\n\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\tside: DoubleSide,\n\t\t\t\t\tcolor: hovered() ? pivotControls.hoveredColor() : pivotControls.axisColors()[axis()],\n\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\tfog: false,\n\t\t\t\t}\"\n\t\t\t/>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine, NgtsHTML, NgtsHTMLContent],\n})\nexport class NgtsAxisRotator {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdir1 = input.required<Vector3>();\n\tdir2 = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\thovered = signal(false);\n\tprivate angle = 0;\n\tprivate angle0 = 0;\n\tprivate clickInfo: {\n\t\tclickPoint: Vector3;\n\t\torigin: Vector3;\n\t\te1: Vector3;\n\t\te2: Vector3;\n\t\tnormal: Vector3;\n\t\tplane: Plane;\n\t} | null = null;\n\n\tmatrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\tr = computed(() => (this.pivotControls.fixed() ? 0.65 : this.pivotControls.scale() * 0.65));\n\tarc = computed(() => {\n\t\tconst segments = 32;\n\t\tconst points: Vector3[] = [];\n\t\tfor (let j = 0; j <= segments; j++) {\n\t\t\tconst angle = (j * (Math.PI / 2)) / segments;\n\t\t\tpoints.push(new Vector3(Math.cos(angle) * this.r(), Math.sin(angle) * this.r(), 0));\n\t\t}\n\t\treturn points;\n\t});\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, group, axis, controls] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.axis(),\n\t\t\tthis.controls(),\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${toDegrees(this.angle).toFixed(0)}º`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new Plane().setFromNormalAndCoplanarPoint(normal, origin);\n\t\tthis.clickInfo = { clickPoint, origin, e1, e2, normal, plane };\n\t\tthis.pivotControls.onDragStart({ component: 'Rotator', axis, origin, directions: [e1, e2, normal] });\n\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not a function on PointerEvent\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, origin, e1, e2, normal, plane } = this.clickInfo;\n\t\t\tconst [rotationLimits, axis, annotation] = [\n\t\t\t\tthis.pivotControls.rotationLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tconst [min, max] = rotationLimits?.[axis] || [undefined, undefined];\n\n\t\t\tray.copy(event.ray);\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tray.direction.negate();\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tlet deltaAngle = calculateAngle(clickPoint, intersection, origin, e1, e2);\n\t\t\tlet degrees = toDegrees(deltaAngle);\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tdegrees = Math.round(degrees / 10) * 10;\n\t\t\t\tdeltaAngle = toRadians(degrees);\n\t\t\t}\n\n\t\t\tif (min !== undefined && max !== undefined && max - min < 2 * Math.PI) {\n\t\t\t\tdeltaAngle = minimizeAngle(deltaAngle);\n\t\t\t\tdeltaAngle = deltaAngle > Math.PI ? deltaAngle - 2 * Math.PI : deltaAngle;\n\t\t\t\tdeltaAngle = Math.round(deltaAngle / 10) * 10;\n\t\t\t\tthis.angle = this.angle0 + deltaAngle;\n\t\t\t} else {\n\t\t\t\tthis.angle = minimizeAngle(this.angle0 + deltaAngle);\n\t\t\t\tthis.angle = this.angle > Math.PI ? this.angle - 2 * Math.PI : this.angle;\n\t\t\t}\n\n\t\t\tif (annotation) {\n\t\t\t\tdegrees = toDegrees(this.angle);\n\t\t\t\tannotation.innerText = `${degrees.toFixed(0)}º`;\n\t\t\t}\n\n\t\t\trotMatrix.makeRotationAxis(normal, deltaAngle);\n\t\t\tposNew.copy(origin).applyMatrix4(rotMatrix).sub(origin).negate();\n\t\t\trotMatrix.setPosition(posNew);\n\t\t\tthis.pivotControls.onDrag(rotMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not a function on PointerEvent\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { DoubleSide, Group, Matrix4, Mesh, MeshBasicMaterial, Plane, PlaneGeometry, Ray, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nfunction decomposeIntoBasis(e1: Vector3, e2: Vector3, offset: Vector3) {\n\tconst i1 =\n\t\tMath.abs(e1.x) >= Math.abs(e1.y) && Math.abs(e1.x) >= Math.abs(e1.z)\n\t\t\t? 0\n\t\t\t: Math.abs(e1.y) >= Math.abs(e1.x) && Math.abs(e1.y) >= Math.abs(e1.z)\n\t\t\t\t? 1\n\t\t\t\t: 2;\n\tconst e2DegrowthOrder = [0, 1, 2].sort((a, b) => Math.abs(e2.getComponent(b)) - Math.abs(e2.getComponent(a)));\n\tconst i2 = i1 === e2DegrowthOrder[0] ? e2DegrowthOrder[1] : e2DegrowthOrder[0];\n\tconst a1 = e1.getComponent(i1);\n\tconst a2 = e1.getComponent(i2);\n\tconst b1 = e2.getComponent(i1);\n\tconst b2 = e2.getComponent(i2);\n\tconst c1 = offset.getComponent(i1);\n\tconst c2 = offset.getComponent(i2);\n\n\tconst y = (c2 - c1 * (a2 / a1)) / (b2 - b1 * (a2 / a1));\n\tconst x = (c1 - y * b1) / a1;\n\n\treturn [x, y];\n}\n\nconst ray = new Ray();\nconst intersection = new Vector3();\nconst offsetMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-plane-slider',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group [matrix]=\"matrixL()\" [matrixAutoUpdate]=\"false\">\n\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t<ngts-html [options]=\"{ position: [0, 0, 0] }\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t#annotation\n\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap\"\n\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t></div>\n\t\t\t\t</ngts-html>\n\t\t\t}\n\t\t\t<ngt-group [position]=\"[pos1() * 1.7, pos1() * 1.7, 0]\">\n\t\t\t\t<ngt-mesh\n\t\t\t\t\t[visible]=\"true\"\n\t\t\t\t\t[scale]=\"length()\"\n\t\t\t\t\t[userData]=\"pivotControls.userData()\"\n\t\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t\t\t[fog]=\"false\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t\t<ngts-line\n\t\t\t\t\t[points]=\"points()\"\n\t\t\t\t\t[options]=\"{\n\t\t\t\t\t\tposition: [-length() / 2, -length() / 2, 0],\n\t\t\t\t\t\ttransparent: true,\n\t\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\t\tcolor: color(),\n\t\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\t\tuserData: pivotControls.userData(),\n\t\t\t\t\t\tfog: false,\n\t\t\t\t\t}\"\n\t\t\t\t/>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsHTML, NgtsHTMLContent, NgtsLine],\n})\nexport class NgtsPlaneSlider {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdir1 = input.required<Vector3>();\n\tdir2 = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: Vector3; e1: Vector3; e2: Vector3; plane: Plane } | null = null;\n\tprivate offsetX0 = 0;\n\tprivate offsetY0 = 0;\n\n\tmatrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\n\tpos1 = computed(() => (this.pivotControls.fixed() ? 1 / 7 : this.pivotControls.scale() / 7));\n\tlength = computed(() => (this.pivotControls.fixed() ? 0.225 : this.pivotControls.scale() * 0.225));\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\tpoints = computed(() => {\n\t\tconst length = this.length();\n\t\treturn [\n\t\t\tnew Vector3(0, 0, 0),\n\t\t\tnew Vector3(0, length, 0),\n\t\t\tnew Vector3(length, length, 0),\n\t\t\tnew Vector3(length, 0, 0),\n\t\t\tnew Vector3(0, 0, 0),\n\t\t];\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, PlaneGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, axis, group, controls] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.axis(),\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.controls(),\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${this.pivotControls.translation[(axis + 1) % 3].toFixed(2)}, ${this.pivotControls.translation[(axis + 2) % 3].toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new Plane().setFromNormalAndCoplanarPoint(normal, origin);\n\t\tthis.clickInfo = { clickPoint, e1, e2, plane };\n\t\tthis.offsetX0 = this.pivotControls.translation[(axis + 1) % 3];\n\t\tthis.offsetY0 = this.pivotControls.translation[(axis + 2) % 3];\n\t\tthis.pivotControls.onDragStart({ component: 'Slider', axis, origin, directions: [e1, e2, normal] });\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not defined on ThreeEvent\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, e1, e2, plane } = this.clickInfo;\n\t\t\tconst [translationLimits, axis, annotation] = [\n\t\t\t\tthis.pivotControls.translationLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tconst [minX, maxX] = translationLimits?.[(axis + 1) % 3] || [undefined, undefined];\n\t\t\tconst [minY, maxY] = translationLimits?.[(axis + 2) % 3] || [undefined, undefined];\n\n\t\t\tray.copy(event.ray);\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tray.direction.negate();\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tintersection.sub(clickPoint);\n\t\t\tlet [offsetX, offsetY] = decomposeIntoBasis(e1, e2, intersection);\n\t\t\t/* let offsetY = (intersection.y - (intersection.x * e1.y) / e1.x) / (e2.y - (e2.x * e1.y) / e1.x)\n let offsetX = (intersection.x - offsetY * e2.x) / e1.x */\n\t\t\tif (minX !== undefined) {\n\t\t\t\toffsetX = Math.max(offsetX, minX - this.offsetX0);\n\t\t\t}\n\t\t\tif (maxX !== undefined) {\n\t\t\t\toffsetX = Math.min(offsetX, maxX - this.offsetX0);\n\t\t\t}\n\t\t\tif (minY !== undefined) {\n\t\t\t\toffsetY = Math.max(offsetY, minY - this.offsetY0);\n\t\t\t}\n\t\t\tif (maxY !== undefined) {\n\t\t\t\toffsetY = Math.min(offsetY, maxY - this.offsetY0);\n\t\t\t}\n\t\t\tthis.pivotControls.translation[(axis + 1) % 3] = this.offsetX0 + offsetX;\n\t\t\tthis.pivotControls.translation[(axis + 2) % 3] = this.offsetY0 + offsetY;\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.pivotControls.translation[(axis + 1) % 3].toFixed(2)}, ${this.pivotControls.translation[(axis + 2) % 3].toFixed(2)}`;\n\t\t\t}\n\n\t\t\toffsetMatrix.makeTranslation(\n\t\t\t\toffsetX * e1.x + offsetY * e2.x,\n\t\t\t\toffsetX * e1.y + offsetY * e2.y,\n\t\t\t\toffsetX * e1.z + offsetY * e2.z,\n\t\t\t);\n\t\t\tthis.pivotControls.onDrag(offsetMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not defined on ThreeEvent\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { calculateScaleFactor, NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { Group, Matrix4, Mesh, MeshBasicMaterial, Quaternion, SphereGeometry, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new Vector3();\nconst vec2 = new Vector3();\n\nexport function calculateOffset(clickPoint: Vector3, normal: Vector3, rayStart: Vector3, rayDir: Vector3) {\n\tconst e1 = normal.dot(normal);\n\tconst e2 = normal.dot(clickPoint) - normal.dot(rayStart);\n\tconst e3 = normal.dot(rayDir);\n\n\tif (e3 === 0) {\n\t\treturn -e2 / e1;\n\t}\n\n\tvec1\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e2 / e3)\n\t\t.add(rayStart)\n\t\t.sub(clickPoint);\n\n\treturn -vec1.dot(vec2) / vec1.dot(vec1);\n}\n\nconst upV = new Vector3(0, 1, 0);\nconst scaleV = new Vector3();\nconst scaleMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-scaling-sphere',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ngt-group\n\t\t\t\t[matrix]=\"matrixL()\"\n\t\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t>\n\t\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t\t<ngts-html [options]=\"{ position: [0, position() / 2, 0] }\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t#annotation\n\t\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap;\"\n\t\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</ngts-html>\n\t\t\t\t}\n\t\t\t\t<ngt-mesh #mesh [position]=\"[0, position(), 0]\" [renderOrder]=\"500\" [userData]=\"pivotControls.userData()\">\n\t\t\t\t\t<ngt-sphere-geometry *args=\"[radius(), 12, 12]\" />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[opacity]=\"pivotControls.opacity()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsHTML, NgtsHTMLContent, NgtArgs],\n})\nexport class NgtsScalingSphere {\n\tdirection = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\tprivate size = this.store.select('size');\n\n\tprivate hovered = signal(false);\n\tprivate scale0 = 1;\n\tprivate scaleCurrent = 1;\n\tprivate clickInfo: {\n\t\tclickPoint: Vector3;\n\t\tdir: Vector3;\n\t\tmPLG: Matrix4;\n\t\tmPLGInv: Matrix4;\n\t\toffsetMultiplier: number;\n\t} | null = null;\n\n\tposition = computed(() => (this.pivotControls.fixed() ? 1.2 : 1.2 * this.pivotControls.scale()));\n\tradius = computed(() =>\n\t\tthis.pivotControls.fixed()\n\t\t\t? (this.pivotControls.lineWidth() / this.pivotControls.scale()) * 1.8\n\t\t\t: this.pivotControls.scale() / 22.5,\n\t);\n\tmatrixL = computed(() => {\n\t\tconst quaternion = new Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new Matrix4().makeRotationFromQuaternion(quaternion);\n\t});\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\n\tconstructor() {\n\t\textend({ Group, Mesh, SphereGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls, fixed, scale, direction, axis, size, group] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.controls(),\n\t\t\tthis.pivotControls.fixed(),\n\t\t\tthis.pivotControls.scale(),\n\t\t\tthis.direction(),\n\t\t\tthis.axis(),\n\t\t\tthis.size(),\n\t\t\tthis.groupRef().nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${scale.toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst rotation = new Matrix4().extractRotation(group.matrixWorld);\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst dir = direction.clone().applyMatrix4(rotation).normalize();\n\t\tconst mPLG = group.matrixWorld.clone();\n\t\tconst mPLGInv = mPLG.clone().invert();\n\t\tconst offsetMultiplier = fixed\n\t\t\t? 1 / calculateScaleFactor(group.getWorldPosition(vec1), scale, event.camera, size)\n\t\t\t: 1;\n\t\tthis.clickInfo = { clickPoint, dir, mPLG, mPLGInv, offsetMultiplier };\n\t\tthis.pivotControls.onDragStart({ component: 'Sphere', axis, origin, directions: [dir] });\n\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, dir, mPLG, mPLGInv, offsetMultiplier } = this.clickInfo;\n\t\t\tconst [scaleLimits, axis, position, annotation, fixed, scale, mesh] = [\n\t\t\t\tthis.pivotControls.scaleLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.position(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t\tthis.pivotControls.fixed(),\n\t\t\t\tthis.pivotControls.scale(),\n\t\t\t\tthis.meshRef().nativeElement,\n\t\t\t];\n\n\t\t\tconst [min, max] = scaleLimits?.[axis] || [1e-5, undefined]; // always limit the minimal value, since setting it very low might break the transform\n\t\t\tconst offsetW = calculateOffset(clickPoint, dir, event.ray.origin, event.ray.direction);\n\t\t\tconst offsetL = offsetW * offsetMultiplier;\n\t\t\tconst offsetH = fixed ? offsetL : offsetL / scale;\n\t\t\tlet upscale = Math.pow(2, offsetH * 0.2);\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tupscale = Math.round(upscale * 10) / 10;\n\t\t\t}\n\n\t\t\tupscale = Math.max(upscale, min / this.scale0);\n\n\t\t\tif (max !== undefined) {\n\t\t\t\tupscale = Math.min(upscale, max / this.scale0);\n\t\t\t}\n\n\t\t\tthis.scaleCurrent = this.scale0 * upscale;\n\t\t\tmesh.position.set(0, position + offsetL, 0);\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.scaleCurrent.toFixed(2)}`;\n\t\t\t}\n\n\t\t\tscaleV.set(1, 1, 1);\n\t\t\tscaleV.setComponent(axis, upscale);\n\t\t\tscaleMatrix.makeScale(scaleV.x, scaleV.y, scaleV.z).premultiply(mPLG).multiply(mPLGInv);\n\t\t\tthis.pivotControls.onDrag(scaleMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls, position, mesh] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.controls(),\n\t\t\tthis.position(),\n\t\t\tthis.meshRef().nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tthis.scale0 = this.scaleCurrent;\n\t\tthis.clickInfo = null;\n\t\tmesh.position.set(0, position, 0);\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not in the type definition\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, injectStore, NgtAnyRecord, omit, pick } from 'angular-three';\nimport { calculateScaleFactor } from 'angular-three-soba/misc';\nimport { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Box3, Group, Matrix4, Mesh, Vector3 } from 'three';\nimport { NgtsAxisArrow } from './axis-arrow';\nimport { NgtsAxisRotator } from './axis-rotator';\nimport { NgtsPlaneSlider } from './plane-slider';\nimport { NgtsScalingSphere } from './scaling-sphere';\n\nexport interface OnDragStartParameters {\n\tcomponent: 'Arrow' | 'Slider' | 'Rotator' | 'Sphere';\n\taxis: 0 | 1 | 2;\n\torigin: Vector3;\n\tdirections: Vector3[];\n}\n\nexport interface OnDragParameters {\n\tl: Matrix4;\n\tdeltaL: Matrix4;\n\tw: Matrix4;\n\tdeltaW: Matrix4;\n}\n\nconst mL0 = new Matrix4();\nconst mW0 = new Matrix4();\nconst mP = new Matrix4();\nconst mPInv = new Matrix4();\nconst mW = new Matrix4();\nconst mL = new Matrix4();\nconst mL0Inv = new Matrix4();\nconst mdL = new Matrix4();\nconst mG = new Matrix4();\n\nconst bb = new Box3();\nconst bbObj = new Box3();\nconst vCenter = new Vector3();\nconst vSize = new Vector3();\nconst vAnchorOffset = new Vector3();\nconst vPosition = new Vector3();\nconst vScale = new Vector3();\n\nconst xDir = new Vector3(1, 0, 0);\nconst yDir = new Vector3(0, 1, 0);\nconst zDir = new Vector3(0, 0, 1);\n\nexport interface NgtsPivotControlsOptions {\n\t/** Enables/disables the control, true */\n\tenabled: boolean;\n\t/** Scale of the gizmo, 1 */\n\tscale: number;\n\t/** Width of the gizmo lines, this is a THREE.Line2 prop, 2.5 */\n\tlineWidth: number;\n\t/** If fixed is true is remains constant in size, scale is now in pixels, false */\n\tfixed: boolean;\n\t/** Pivot does not act as a group, it won't shift contents but can offset in position */\n\toffset: [number, number, number];\n\t/** Starting rotation */\n\trotation: [number, number, number];\n\n\t/** Starting matrix */\n\tmatrix?: Matrix4;\n\t/** BBAnchor, each axis can be between -1/0/+1 */\n\tanchor?: [number, number, number];\n\t/** If autoTransform is true, automatically apply the local transform on drag, true */\n\tautoTransform: boolean;\n\t/** Allows you to switch individual axes off */\n\tactiveAxes: [boolean, boolean, boolean];\n\n\t/** Allows you to switch individual transformations off */\n\tdisableAxes: boolean;\n\tdisableSliders: boolean;\n\tdisableRotations: boolean;\n\tdisableScaling: boolean;\n\n\t/** Limits */\n\ttranslationLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\trotationLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\tscaleLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\n\t/** RGB colors */\n\taxisColors: [string | number, string | number, string | number];\n\t/** Color of the hovered item */\n\thoveredColor: string | number;\n\t/** HTML value annotations, default: false */\n\tannotations: boolean;\n\t/** CSS Classname applied to the HTML annotations */\n\tannotationsClass?: string;\n\t/** Set this to false if you want the gizmo to be visible through faces */\n\tdepthTest: boolean;\n\topacity?: number;\n\tvisible: boolean;\n\tuserData?: NgtAnyRecord;\n}\n\nconst defaultOptions: NgtsPivotControlsOptions = {\n\tenabled: true,\n\tautoTransform: true,\n\tdisableAxes: false,\n\tdisableSliders: false,\n\tdisableRotations: false,\n\tdisableScaling: false,\n\tactiveAxes: [true, true, true],\n\toffset: [0, 0, 0],\n\trotation: [0, 0, 0],\n\tscale: 1,\n\tlineWidth: 4,\n\tfixed: false,\n\tdepthTest: true,\n\taxisColors: ['#ff2060', '#20df80', '#2080ff'],\n\thoveredColor: '#ffff40',\n\tannotations: false,\n\topacity: 1,\n\tvisible: true,\n};\n\n@Component({\n\tselector: 'ngts-pivot-controls',\n\tstandalone: true,\n\ttemplate: `\n\t\t<ngt-group #parent>\n\t\t\t<ngt-group #group [matrix]=\"matrix()\" [matrixAutoUpdate]=\"false\" [parameters]=\"parameters()\">\n\t\t\t\t<ngt-group #gizmo [visible]=\"visible()\" [position]=\"offset()\" [rotation]=\"rotation()\">\n\t\t\t\t\t@if (enabled()) {\n\t\t\t\t\t\t@if (!disableAxes() && activeAxes()[0]) {\n\t\t\t\t\t\t\t<ngts-axis-arrow [axis]=\"0\" [direction]=\"xDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableAxes() && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-axis-arrow [axis]=\"1\" [direction]=\"yDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableAxes() && activeAxes()[2]) {\n\t\t\t\t\t\t\t<ngts-axis-arrow [axis]=\"2\" [direction]=\"zDir\" />\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (!disableSliders() && activeAxes()[0] && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-plane-slider [axis]=\"2\" [dir1]=\"xDir\" [dir2]=\"yDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableSliders() && activeAxes()[0] && activeAxes()[2]) {\n\t\t\t\t\t\t\t<ngts-plane-slider [axis]=\"1\" [dir1]=\"zDir\" [dir2]=\"xDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableSliders() && activeAxes()[2] && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-plane-slider [axis]=\"0\" [dir1]=\"yDir\" [dir2]=\"zDir\" />\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (!disableRotations() && activeAxes()[0] && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-axis-rotator [axis]=\"2\" [dir1]=\"xDir\" [dir2]=\"yDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableRotations() && activeAxes()[0] && activeAxes()[2]) {\n\t\t\t\t\t\t\t<ngts-axis-rotator [axis]=\"1\" [dir1]=\"zDir\" [dir2]=\"xDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableRotations() && activeAxes()[2] && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-axis-rotator [axis]=\"0\" [dir1]=\"yDir\" [dir2]=\"zDir\" />\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@if (!disableScaling() && activeAxes()[0]) {\n\t\t\t\t\t\t\t<ngts-scaling-sphere [axis]=\"0\" [direction]=\"xDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableScaling() && activeAxes()[1]) {\n\t\t\t\t\t\t\t<ngts-scaling-sphere [axis]=\"1\" [direction]=\"yDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t\t@if (!disableScaling() && activeAxes()[2]) {\n\t\t\t\t\t\t\t<ngts-scaling-sphere [axis]=\"2\" [direction]=\"zDir\" />\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t</ngt-group>\n\t\t\t\t<ngt-group #children>\n\t\t\t\t\t<ng-content />\n\t\t\t\t</ngt-group>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsAxisArrow, NgtsPlaneSlider, NgtsAxisRotator, NgtsScalingSphere],\n})\nexport class NgtsPivotControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'enabled',\n\t\t'matrix',\n\t\t'autoTransform',\n\t\t'anchor',\n\t\t'disableAxes',\n\t\t'disableSliders',\n\t\t'disableRotations',\n\t\t'disableScaling',\n\t\t'activeAxes',\n\t\t'offset',\n\t\t'rotation',\n\t\t'scale',\n\t\t'lineWidth',\n\t\t'fixed',\n\t\t'translationLimits',\n\t\t'rotationLimits',\n\t\t'scaleLimits',\n\t\t'depthTest',\n\t\t'axisColors',\n\t\t'hoveredColor',\n\t\t'annotations',\n\t\t'annotationsClass',\n\t\t'opacity',\n\t\t'visible',\n\t\t'userData',\n\t]);\n\n\tdragStarted = output<OnDragStartParameters>();\n\tdragEnded = output<void>();\n\tdragged = output<OnDragParameters>();\n\n\tmatrix = pick(this.options, 'matrix');\n\tannotations = pick(this.options, 'annotations');\n\tannotationsClass = pick(this.options, 'annotationsClass');\n\ttranslationLimits = pick(this.options, 'translationLimits');\n\trotationLimits = pick(this.options, 'rotationLimits');\n\tscaleLimits = pick(this.options, 'scaleLimits');\n\tautoTransform = pick(this.options, 'autoTransform');\n\tfixed = pick(this.options, 'fixed');\n\thoveredColor = pick(this.options, 'hoveredColor');\n\taxisColors = pick(this.options, 'axisColors');\n\tlineWidth = pick(this.options, 'lineWidth');\n\tscale = pick(this.options, 'scale');\n\tuserData = pick(this.options, 'userData');\n\topacity = pick(this.options, 'opacity');\n\tdepthTest = pick(this.options, 'depthTest');\n\toffset = pick(this.options, 'offset');\n\trotation = pick(this.options, 'rotation');\n\tvisible = pick(this.options, 'visible');\n\tenabled = pick(this.options, 'enabled');\n\tdisableAxes = pick(this.options, 'disableAxes');\n\tdisableSliders = pick(this.options, 'disableSliders');\n\tdisableRotations = pick(this.options, 'disableRotations');\n\tdisableScaling = pick(this.options, 'disableScaling');\n\tactiveAxes = pick(this.options, 'activeAxes');\n\n\txDir = xDir;\n\tyDir = yDir;\n\tzDir = zDir;\n\n\tparentRef = viewChild.required<ElementRef<Group>>('parent');\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tgizmoRef = viewChild.required<ElementRef<Group>>('gizmo');\n\tchildrenRef = viewChild.required<ElementRef<Group>>('children');\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\n\ttranslation: [number, number, number] = [0, 0, 0];\n\n\tprivate anchor = pick(this.options, 'anchor');\n\tprivate cameraScale = new Vector3(1, 1, 1);\n\tprivate gizmoScale = new Vector3(1, 1, 1);\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst anchor = this.anchor();\n\t\t\t\tif (!anchor) return;\n\n\t\t\t\tconst children = this.childrenRef().nativeElement;\n\t\t\t\tconst localState = getLocalState(children);\n\n\t\t\t\tif (!localState) return;\n\n\t\t\t\tconst [gizmo, offset, invalidate] = [\n\t\t\t\t\tthis.gizmoRef().nativeElement,\n\t\t\t\t\tthis.offset(),\n\t\t\t\t\tthis.invalidate(),\n\t\t\t\t\tthis.options(),\n\t\t\t\t\tlocalState.objects(),\n\t\t\t\t];\n\t\t\t\tchildren.updateWorldMatrix(true, true);\n\n\t\t\t\tmPInv.copy(children.matrixWorld).invert();\n\t\t\t\tbb.makeEmpty();\n\n\t\t\t\tchildren.traverse((obj) => {\n\t\t\t\t\tif (!(obj as Mesh).geometry) return;\n\t\t\t\t\tif (!(obj as Mesh).geometry.boundingBox) (obj as Mesh).geometry.computeBoundingBox();\n\t\t\t\t\tmL.copy(obj.matrixWorld).premultiply(mPInv);\n\t\t\t\t\tconst boundingBox = (obj as Mesh).geometry.boundingBox;\n\t\t\t\t\tif (boundingBox) {\n\t\t\t\t\t\tbbObj.copy(boundingBox);\n\t\t\t\t\t\tbbObj.applyMatrix4(mL);\n\t\t\t\t\t\tbb.union(bbObj);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvCenter.copy(bb.max).add(bb.min).multiplyScalar(0.5);\n\t\t\t\tvSize.copy(bb.max).sub(bb.min).multiplyScalar(0.5);\n\t\t\t\tvAnchorOffset\n\t\t\t\t\t.copy(vSize)\n\t\t\t\t\t.multiply(new Vector3(...anchor))\n\t\t\t\t\t.add(vCenter);\n\t\t\t\tvPosition.set(...offset).add(vAnchorOffset);\n\t\t\t\tgizmo.position.copy(vPosition);\n\t\t\t\tinvalidate();\n\t\t\t});\n\t\t});\n\n\t\tconst vec = new Vector3();\n\t\tinjectBeforeRender(({ camera, size, invalidate }) => {\n\t\t\tconst [{ fixed, scale, matrix }, gizmo, group] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.gizmoRef().nativeElement,\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t];\n\n\t\t\tif (fixed) {\n\t\t\t\tconst sf = calculateScaleFactor(gizmo.getWorldPosition(vec), scale, camera, size);\n\t\t\t\tthis.cameraScale.setScalar(sf);\n\t\t\t}\n\n\t\t\tif (matrix && matrix instanceof Matrix4) {\n\t\t\t\tgroup.matrix = matrix;\n\t\t\t}\n\n\t\t\t// Update gizmo scale in accordance with matrix changes\n\t\t\t// Without this, there might be noticeable turbulence if scaling happens fast enough\n\t\t\tgizmo.updateWorldMatrix(true, true);\n\n\t\t\tmG.makeRotationFromEuler(gizmo.rotation).setPosition(gizmo.position).premultiply(group.matrixWorld);\n\t\t\tthis.gizmoScale.setFromMatrixScale(mG);\n\n\t\t\tvScale.copy(this.cameraScale).divide(this.gizmoScale);\n\n\t\t\tif (\n\t\t\t\tMath.abs(gizmo.scale.x - vScale.x) > 1e-4 ||\n\t\t\t\tMath.abs(gizmo.scale.y - vScale.y) > 1e-4 ||\n\t\t\t\tMath.abs(gizmo.scale.z - vScale.z) > 1e-4\n\t\t\t) {\n\t\t\t\tgizmo.scale.copy(vScale);\n\t\t\t\tinvalidate();\n\t\t\t}\n\t\t});\n\t}\n\n\tonDragStart(parameters: OnDragStartParameters) {\n\t\tconst group = this.groupRef().nativeElement;\n\t\tmL0.copy(group.matrix);\n\t\tmW0.copy(group.matrixWorld);\n\t\tthis.dragStarted.emit(parameters);\n\t\tthis.store.snapshot.invalidate();\n\t}\n\n\tonDrag(mdW: Matrix4) {\n\t\tconst [parent, group, autoTransform] = [\n\t\t\tthis.parentRef().nativeElement,\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.autoTransform(),\n\t\t];\n\n\t\tmP.copy(parent.matrixWorld);\n\t\tmPInv.copy(mP).invert();\n\t\t// After applying the delta\n\t\tmW.copy(mW0).premultiply(mdW);\n\t\tmL.copy(mW).premultiply(mPInv);\n\t\tmL0Inv.copy(mL0).invert();\n\t\tmdL.copy(mL).multiply(mL0Inv);\n\n\t\tif (autoTransform) {\n\t\t\tgroup.matrix.copy(mL);\n\t\t}\n\n\t\tthis.dragged.emit({ l: mL, deltaL: mdL, w: mW, deltaW: mdW });\n\t\tthis.store.snapshot.invalidate();\n\t}\n\n\tonDragEnd() {\n\t\tthis.dragEnded.emit();\n\t\tthis.store.snapshot.invalidate();\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDirective,\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 { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Group } 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\tstandalone: true,\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\tprivate gl = this.store.select('gl');\n\tprivate events = this.store.select('events');\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate size = this.store.select('size');\n\n\tprivate domElement = pick(this.gl, 'domElement');\n\tprivate target = pick(this.domElement, 'parentNode');\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\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\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst target = this.target();\n\t\t\t\tif (!target) return;\n\n\t\t\t\tconst parent = target as HTMLElement;\n\t\t\t\tconst [pages, distance, horizontal, el, fill, fixed, style, prepend, domElement, events] = [\n\t\t\t\t\tthis.pages(),\n\t\t\t\t\tthis.distance(),\n\t\t\t\t\tthis.horizontal(),\n\t\t\t\t\tthis.el,\n\t\t\t\t\tthis.fill,\n\t\t\t\t\tthis.fixed,\n\t\t\t\t\tuntracked(this.style),\n\t\t\t\t\tuntracked(this.prepend),\n\t\t\t\t\tuntracked(this.domElement),\n\t\t\t\t\tuntracked(this.events),\n\t\t\t\t];\n\n\t\t\t\tel.style.position = 'absolute';\n\t\t\t\tel.style.width = '100%';\n\t\t\t\tel.style.height = '100%';\n\t\t\t\tel.style[horizontal ? 'overflowX' : 'overflowY'] = 'auto';\n\t\t\t\tel.style[horizontal ? 'overflowY' : 'overflowX'] = 'hidden';\n\t\t\t\tel.style.top = '0px';\n\t\t\t\tel.style.left = '0px';\n\n\t\t\t\tfor (const key in style) {\n\t\t\t\t\tel.style[key] = (style as CSSStyleDeclaration)[key];\n\t\t\t\t}\n\n\t\t\t\tfixed.style.position = 'sticky';\n\t\t\t\tfixed.style.top = '0px';\n\t\t\t\tfixed.style.left = '0px';\n\t\t\t\tfixed.style.width = '100%';\n\t\t\t\tfixed.style.height = '100%';\n\t\t\t\tfixed.style.overflow = 'hidden';\n\t\t\t\tel.appendChild(fixed);\n\n\t\t\t\tfill.style.height = horizontal ? '100%' : `${pages * distance * 100}%`;\n\t\t\t\tfill.style.width = horizontal ? `${pages * distance * 100}%` : '100%';\n\t\t\t\tfill.style.pointerEvents = 'none';\n\t\t\t\tel.appendChild(fill);\n\n\t\t\t\tif (prepend) parent.prepend(el);\n\t\t\t\telse parent.appendChild(el);\n\n\t\t\t\t// Init scroll one pixel in to allow upward/leftward scroll\n\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;\n\n\t\t\t\tconst oldTarget = (events.connected || domElement) as HTMLElement;\n\t\t\t\trequestAnimationFrame(() => events.connect?.(el));\n\t\t\t\tconst oldCompute = events.compute?.bind(events);\n\n\t\t\t\tthis.store.snapshot.setEvents({\n\t\t\t\t\tcompute(event, store) {\n\t\t\t\t\t\tconst state = store.snapshot;\n\t\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\t\tconst { left, top } = parent.getBoundingClientRect();\n\t\t\t\t\t\tconst offsetX = event.clientX - left;\n\t\t\t\t\t\tconst offsetY = event.clientY - top;\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\n\t\t\t\treturn () => {\n\t\t\t\t\tparent.removeChild(el);\n\t\t\t\t\tthis.store.snapshot.setEvents({ compute: oldCompute });\n\t\t\t\t\tevents.connect?.(oldTarget);\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [el, events, size, infinite, invalidate, horizontal, enabled] = [\n\t\t\t\t\tthis.el,\n\t\t\t\t\tthis.events(),\n\t\t\t\t\tthis.size(),\n\t\t\t\t\tthis.infinite(),\n\t\t\t\t\tthis.invalidate(),\n\t\t\t\t\tthis.horizontal(),\n\t\t\t\t\tthis.enabled(),\n\t\t\t\t];\n\n\t\t\t\tif (events.connected !== el) return;\n\n\t\t\t\tconst containerLength = size[horizontal ? 'width' : 'height'];\n\t\t\t\tconst scrollLength = el[horizontal ? 'scrollWidth' : 'scrollHeight'];\n\t\t\t\tconst scrollThreshold = scrollLength - containerLength;\n\n\t\t\t\tlet current = 0;\n\t\t\t\tlet disableScroll = true;\n\t\t\t\tlet firstRun = true;\n\n\t\t\t\tconst onScroll = () => {\n\t\t\t\t\t// Prevent first scroll because it is indirectly caused by the one pixel offset\n\t\t\t\t\tif (!enabled || firstRun) return;\n\t\t\t\t\tinvalidate();\n\t\t\t\t\tcurrent = el[horizontal ? 'scrollLeft' : 'scrollTop'];\n\t\t\t\t\tthis.scroll = current / scrollThreshold;\n\n\t\t\t\t\tif (infinite) {\n\t\t\t\t\t\tif (!disableScroll) {\n\t\t\t\t\t\t\tif (current >= scrollThreshold) {\n\t\t\t\t\t\t\t\tconst damp = 1 - this.offset;\n\t\t\t\t\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;\n\t\t\t\t\t\t\t\tthis.scroll = this.offset = -damp;\n\t\t\t\t\t\t\t\tdisableScroll = true;\n\t\t\t\t\t\t\t} else if (current <= 0) {\n\t\t\t\t\t\t\t\tconst damp = 1 + this.offset;\n\t\t\t\t\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = scrollLength;\n\t\t\t\t\t\t\t\tthis.scroll = this.offset = damp;\n\t\t\t\t\t\t\t\tdisableScroll = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (disableScroll) setTimeout(() => (disableScroll = false), 40);\n\t\t\t\t\t}\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tthis.progress.set(this.scroll);\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\tel.addEventListener('scroll', onScroll, { passive: true });\n\t\t\t\trequestAnimationFrame(() => (firstRun = false));\n\n\t\t\t\tconst onWheel = (e: WheelEvent) => (el[horizontal ? 'scrollLeft' : 'scrollTop'] += e.deltaY / 2);\n\t\t\t\tif (horizontal) el.addEventListener('wheel', onWheel, { passive: true });\n\n\t\t\t\treturn () => {\n\t\t\t\t\tel.removeEventListener('scroll', onScroll);\n\t\t\t\t\tif (horizontal) el.removeEventListener('wheel', onWheel);\n\t\t\t\t};\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.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[ngtsScrollCanvas]', standalone: true })\nexport class NgtsScrollCanvas {\n\tprivate host = inject<ElementRef<Group>>(ElementRef);\n\tprivate scrollControls = inject(NgtsScrollControls);\n\tprivate store = injectStore();\n\tprivate viewport = this.store.select('viewport');\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.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.viewport().height * (this.scrollControls.pages() - 1) * this.scrollControls.offset;\n\t\t});\n\t}\n}\n\n@Directive({\n\tselector: 'div[ngtsScrollHTML]',\n\tstandalone: true,\n\thost: { style: 'position: absolute; top: 0; left: 0; will-change: transform;' },\n\tproviders: [provideHTMLDomElement([NgtsScrollControls], (scrollControls) => scrollControls.fixed)],\n})\nexport class NgtsScrollHtml extends NgtHTML {\n\tprivate scrollControls = inject(NgtsScrollControls);\n\tprivate size = this.store.select('size');\n\n\tconstructor() {\n\t\tsuper();\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.size().width * (this.scrollControls.pages() - 1) * this.scrollControls.offset\n\t\t\t\t\t\t: 0\n\t\t\t\t}px,${this.scrollControls.horizontal() ? 0 : this.size().height * (this.scrollControls.pages() - 1) * -this.scrollControls.offset}px,0)`;\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","vec1","vec2","calculateOffset","upV","offsetMatrix","ray","intersection"],"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/index.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 { extend, injectBeforeRender, injectStore, NgtArgs, NgtCamera, omit, pick } from 'angular-three';\nimport CameraControls from 'camera-controls';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tBox3,\n\tEventDispatcher,\n\tMathUtils,\n\tMatrix4,\n\tQuaternion,\n\tRaycaster,\n\tSphere,\n\tSpherical,\n\tVector2,\n\tVector3,\n\tVector4,\n} from 'three';\n\nexport interface NgtsCameraControlsOptions {\n\tcamera?: NgtCamera;\n\tdomElement?: HTMLElement;\n\tmakeDefault: boolean;\n\tevents: boolean;\n\tregress: boolean;\n}\n\nconst defaultOptions: Partial<CameraControls> & NgtsCameraControlsOptions = {\n\tmakeDefault: false,\n\tevents: false,\n\tregress: false,\n};\n\n@Component({\n\tselector: 'ngts-camera-controls',\n\tstandalone: true,\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\tparameters = 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\tprivate invalidate = this.store.select('invalidate');\n\tprivate performanceRegress = this.store.select('performance', 'regress');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate glDomElement = this.store.select('gl', 'domElement');\n\tprivate eventsElement = this.store.select('events', 'connected');\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.defaultCamera()];\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,\n\t\t\t\tMathUtils: { clamp: MathUtils.clamp },\n\t\t\t\tMatrix4,\n\t\t\t\tQuaternion,\n\t\t\t\tRaycaster,\n\t\t\t\tSphere,\n\t\t\t\tSpherical,\n\t\t\t\tVector2,\n\t\t\t\tVector3,\n\t\t\t\tVector4,\n\t\t\t},\n\t\t});\n\t\textend({ CameraControls });\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.eventsElement(),\n\t\t\t\tthis.glDomElement(),\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, regress, performanceRegress, invalidate] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.regress(),\n\t\t\t\tthis.performanceRegress(),\n\t\t\t\tthis.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\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, makeDefault] = [this.controls(), this.makeDefault()];\n\n\t\t\tif (makeDefault) {\n\t\t\t\tconst oldControls = this.store.snapshot.controls;\n\t\t\t\tthis.store.update({ controls: controls as unknown as EventDispatcher });\n\t\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Component, computed, CUSTOM_ELEMENTS_SCHEMA, effect, input, output } from '@angular/core';\nimport { injectBeforeRender, injectStore, NgtArgs, NgtCamera, NgtVector3, omit, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Camera, Event } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nexport interface NgtsOrbitControlsOptions {\n\tcamera?: Camera;\n\tdomElement?: HTMLElement;\n\ttarget?: NgtVector3;\n\tmakeDefault: boolean;\n\tregress: boolean;\n\tenableDamping: boolean;\n\tkeyEvents: boolean | HTMLElement;\n}\n\nconst defaultOptions: Partial<OrbitControls> & NgtsOrbitControlsOptions = {\n\tenableDamping: true,\n\tregress: false,\n\tmakeDefault: false,\n\tkeyEvents: false,\n};\n\n@Component({\n\tselector: 'ngts-orbit-controls',\n\tstandalone: true,\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\tparameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement', 'keyEvents', 'enableDamping']);\n\n\tchanged = output<Event>();\n\tstarted = output<Event>();\n\tended = output<Event>();\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate performanceRegress = this.store.select('performance', 'regress');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate glDomElement = this.store.select('gl', 'domElement');\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.defaultCamera()];\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) {\n\t\t\t\t\tcontrols.update();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ priority: -1 },\n\t\t);\n\t\tthis.connectElement();\n\t\tthis.makeControlsDefault();\n\t\tthis.setEvents();\n\t}\n\n\tprivate connectElement() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [keyEvents, domElement, controls] = [\n\t\t\t\tthis.keyEvents(),\n\t\t\t\tthis.domElement() || this.store.get('events', 'connected') || this.glDomElement(),\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tif (!controls) return;\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\t}\n\n\tprivate makeControlsDefault() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, makeDefault] = [this.controls(), this.makeDefault()];\n\t\t\tif (!controls) return;\n\t\t\tif (makeDefault) {\n\t\t\t\tconst oldControls = this.store.get('controls');\n\t\t\t\tthis.store.update({ controls });\n\t\t\t\tonCleanup(() => void this.store.update({ controls: oldControls }));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate setEvents() {\n\t\teffect((onCleanup) => {\n\t\t\tconst [controls, invalidate, performanceRegress, regress] = [\n\t\t\t\tthis.controls(),\n\t\t\t\tthis.invalidate(),\n\t\t\t\tthis.performanceRegress(),\n\t\t\t\tthis.regress(),\n\t\t\t];\n\t\t\tif (!controls) return;\n\t\t\tconst changeCallback: (e: 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\t// @ts-expect-error - type error from three-stdlib\n\t\t\tcontrols.addEventListener('change', changeCallback);\n\t\t\t// @ts-expect-error - type error from three-stdlib\n\t\t\tcontrols.addEventListener('start', startCallback);\n\t\t\t// @ts-expect-error - type error from three-stdlib\n\t\t\tcontrols.addEventListener('end', endCallback);\n\n\t\t\tonCleanup(() => {\n\t\t\t\t// @ts-expect-error - type error from three-stdlib\n\t\t\t\tcontrols.removeEventListener('change', changeCallback);\n\t\t\t\t// @ts-expect-error - type error from three-stdlib\n\t\t\t\tcontrols.removeEventListener('start', startCallback);\n\t\t\t\t// @ts-expect-error - type error from three-stdlib\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\tafterNextRender,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDirective,\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 { injectAutoEffect } from 'ngxtension/auto-effect';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Group } 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\tstandalone: true,\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\tprivate gl = this.store.select('gl');\n\tprivate events = this.store.select('events');\n\tprivate invalidate = this.store.select('invalidate');\n\tprivate size = this.store.select('size');\n\n\tprivate domElement = pick(this.gl, 'domElement');\n\tprivate target = pick(this.domElement, 'parentNode');\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\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\tconst autoEffect = injectAutoEffect();\n\n\t\tafterNextRender(() => {\n\t\t\tautoEffect(() => {\n\t\t\t\tconst target = this.target();\n\t\t\t\tif (!target) return;\n\n\t\t\t\tconst parent = target as HTMLElement;\n\t\t\t\tconst [pages, distance, horizontal, el, fill, fixed, style, prepend, domElement, events] = [\n\t\t\t\t\tthis.pages(),\n\t\t\t\t\tthis.distance(),\n\t\t\t\t\tthis.horizontal(),\n\t\t\t\t\tthis.el,\n\t\t\t\t\tthis.fill,\n\t\t\t\t\tthis.fixed,\n\t\t\t\t\tuntracked(this.style),\n\t\t\t\t\tuntracked(this.prepend),\n\t\t\t\t\tuntracked(this.domElement),\n\t\t\t\t\tuntracked(this.events),\n\t\t\t\t];\n\n\t\t\t\tel.style.position = 'absolute';\n\t\t\t\tel.style.width = '100%';\n\t\t\t\tel.style.height = '100%';\n\t\t\t\tel.style[horizontal ? 'overflowX' : 'overflowY'] = 'auto';\n\t\t\t\tel.style[horizontal ? 'overflowY' : 'overflowX'] = 'hidden';\n\t\t\t\tel.style.top = '0px';\n\t\t\t\tel.style.left = '0px';\n\n\t\t\t\tfor (const key in style) {\n\t\t\t\t\tel.style[key] = (style as CSSStyleDeclaration)[key];\n\t\t\t\t}\n\n\t\t\t\tfixed.style.position = 'sticky';\n\t\t\t\tfixed.style.top = '0px';\n\t\t\t\tfixed.style.left = '0px';\n\t\t\t\tfixed.style.width = '100%';\n\t\t\t\tfixed.style.height = '100%';\n\t\t\t\tfixed.style.overflow = 'hidden';\n\t\t\t\tel.appendChild(fixed);\n\n\t\t\t\tfill.style.height = horizontal ? '100%' : `${pages * distance * 100}%`;\n\t\t\t\tfill.style.width = horizontal ? `${pages * distance * 100}%` : '100%';\n\t\t\t\tfill.style.pointerEvents = 'none';\n\t\t\t\tel.appendChild(fill);\n\n\t\t\t\tif (prepend) parent.prepend(el);\n\t\t\t\telse parent.appendChild(el);\n\n\t\t\t\t// Init scroll one pixel in to allow upward/leftward scroll\n\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;\n\n\t\t\t\tconst oldTarget = (events.connected || domElement) as HTMLElement;\n\t\t\t\trequestAnimationFrame(() => events.connect?.(el));\n\t\t\t\tconst oldCompute = events.compute?.bind(events);\n\n\t\t\t\tthis.store.snapshot.setEvents({\n\t\t\t\t\tcompute(event, store) {\n\t\t\t\t\t\tconst state = store.snapshot;\n\t\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\t\tconst { left, top } = parent.getBoundingClientRect();\n\t\t\t\t\t\tconst offsetX = event.clientX - left;\n\t\t\t\t\t\tconst offsetY = event.clientY - top;\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\n\t\t\t\treturn () => {\n\t\t\t\t\tparent.removeChild(el);\n\t\t\t\t\tthis.store.snapshot.setEvents({ compute: oldCompute });\n\t\t\t\t\tevents.connect?.(oldTarget);\n\t\t\t\t};\n\t\t\t});\n\n\t\t\tautoEffect(() => {\n\t\t\t\tconst [el, events, size, infinite, invalidate, horizontal, enabled] = [\n\t\t\t\t\tthis.el,\n\t\t\t\t\tthis.events(),\n\t\t\t\t\tthis.size(),\n\t\t\t\t\tthis.infinite(),\n\t\t\t\t\tthis.invalidate(),\n\t\t\t\t\tthis.horizontal(),\n\t\t\t\t\tthis.enabled(),\n\t\t\t\t];\n\n\t\t\t\tif (events.connected !== el) return;\n\n\t\t\t\tconst containerLength = size[horizontal ? 'width' : 'height'];\n\t\t\t\tconst scrollLength = el[horizontal ? 'scrollWidth' : 'scrollHeight'];\n\t\t\t\tconst scrollThreshold = scrollLength - containerLength;\n\n\t\t\t\tlet current = 0;\n\t\t\t\tlet disableScroll = true;\n\t\t\t\tlet firstRun = true;\n\n\t\t\t\tconst onScroll = () => {\n\t\t\t\t\t// Prevent first scroll because it is indirectly caused by the one pixel offset\n\t\t\t\t\tif (!enabled || firstRun) return;\n\t\t\t\t\tinvalidate();\n\t\t\t\t\tcurrent = el[horizontal ? 'scrollLeft' : 'scrollTop'];\n\t\t\t\t\tthis.scroll = current / scrollThreshold;\n\n\t\t\t\t\tif (infinite) {\n\t\t\t\t\t\tif (!disableScroll) {\n\t\t\t\t\t\t\tif (current >= scrollThreshold) {\n\t\t\t\t\t\t\t\tconst damp = 1 - this.offset;\n\t\t\t\t\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = 1;\n\t\t\t\t\t\t\t\tthis.scroll = this.offset = -damp;\n\t\t\t\t\t\t\t\tdisableScroll = true;\n\t\t\t\t\t\t\t} else if (current <= 0) {\n\t\t\t\t\t\t\t\tconst damp = 1 + this.offset;\n\t\t\t\t\t\t\t\tel[horizontal ? 'scrollLeft' : 'scrollTop'] = scrollLength;\n\t\t\t\t\t\t\t\tthis.scroll = this.offset = damp;\n\t\t\t\t\t\t\t\tdisableScroll = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (disableScroll) setTimeout(() => (disableScroll = false), 40);\n\t\t\t\t\t}\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tthis.progress.set(this.scroll);\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\tel.addEventListener('scroll', onScroll, { passive: true });\n\t\t\t\trequestAnimationFrame(() => (firstRun = false));\n\n\t\t\t\tconst onWheel = (e: WheelEvent) => (el[horizontal ? 'scrollLeft' : 'scrollTop'] += e.deltaY / 2);\n\t\t\t\tif (horizontal) el.addEventListener('wheel', onWheel, { passive: true });\n\n\t\t\t\treturn () => {\n\t\t\t\t\tel.removeEventListener('scroll', onScroll);\n\t\t\t\t\tif (horizontal) el.removeEventListener('wheel', onWheel);\n\t\t\t\t};\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.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[ngtsScrollCanvas]', standalone: true })\nexport class NgtsScrollCanvas {\n\tprivate host = inject<ElementRef<Group>>(ElementRef);\n\tprivate scrollControls = inject(NgtsScrollControls);\n\tprivate store = injectStore();\n\tprivate viewport = this.store.select('viewport');\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.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.viewport().height * (this.scrollControls.pages() - 1) * this.scrollControls.offset;\n\t\t});\n\t}\n}\n\n@Directive({\n\tselector: 'div[ngtsScrollHTML]',\n\tstandalone: true,\n\thost: { style: 'position: absolute; top: 0; left: 0; will-change: transform;' },\n\tproviders: [provideHTMLDomElement([NgtsScrollControls], (scrollControls) => scrollControls.fixed)],\n})\nexport class NgtsScrollHtml extends NgtHTML {\n\tprivate scrollControls = inject(NgtsScrollControls);\n\tprivate size = this.store.select('size');\n\n\tconstructor() {\n\t\tsuper();\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.size().width * (this.scrollControls.pages() - 1) * this.scrollControls.offset\n\t\t\t\t\t\t: 0\n\t\t\t\t}px,${this.scrollControls.horizontal() ? 0 : this.size().height * (this.scrollControls.pages() - 1) * -this.scrollControls.offset}px,0)`;\n\t\t\t}\n\t\t});\n\t}\n}\n","export * from './lib/camera-controls';\nexport * from './lib/orbit-controls';\nexport * from './lib/scroll-controls';\n\nimport {\n\tNgtsPivotControls as GizmosPivotControls,\n\tNgtsPivotControlsOptions as GizmosPivotControlsOptions,\n} from 'angular-three-soba/gizmos';\n\n/**\n * @deprecated Use `NgtsPivotControls` from `angular-three-soba/gizmos` instead.\n */\nexport const NgtsPivotControls = GizmosPivotControls;\n/**\n * @deprecated Use `NgtsPivotControlsOptions` from `angular-three-soba/gizmos` instead.\n */\nexport type NgtsPivotControlsOptions = GizmosPivotControlsOptions;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","GizmosPivotControls"],"mappings":"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"}
|