angular-three-soba 4.0.0-next.96 → 4.0.0-next.97
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 +55 -55
- package/abstractions/lib/edges.d.ts +55 -55
- package/abstractions/lib/line.d.ts +1 -1
- package/cameras/lib/orthographic-camera.d.ts +1 -1
- package/fesm2022/angular-three-soba-abstractions.mjs +2 -6
- package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
- package/fesm2022/angular-three-soba-cameras.mjs +8 -8
- package/fesm2022/angular-three-soba-cameras.mjs.map +1 -1
- package/fesm2022/angular-three-soba-gizmos.mjs +87 -117
- package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
- package/fesm2022/angular-three-soba-misc.mjs +2 -4
- package/fesm2022/angular-three-soba-misc.mjs.map +1 -1
- package/fesm2022/angular-three-soba-staging.mjs +44 -38
- package/fesm2022/angular-three-soba-staging.mjs.map +1 -1
- package/gizmos/lib/gizmo-helper/gizmo-viewcube.d.ts +4 -2
- package/gizmos/lib/gizmo-helper/gizmo-viewport.d.ts +4 -3
- package/gizmos/lib/pivot-controls/axis-arrow.d.ts +2 -1
- package/gizmos/lib/pivot-controls/axis-rotator.d.ts +1 -1
- package/gizmos/lib/pivot-controls/pivot-controls.d.ts +1 -1
- package/gizmos/lib/pivot-controls/plane-slider.d.ts +2 -1
- package/gizmos/lib/pivot-controls/scaling-sphere.d.ts +2 -1
- package/misc/lib/decal.d.ts +1 -1
- package/package.json +1 -1
- package/staging/lib/accumulative-shadows.d.ts +3 -3
- 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 +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 +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-soba-gizmos.mjs","sources":["../../../../libs/soba/gizmos/src/lib/gizmo-helper/gizmo-helper.ts","../../../../libs/soba/gizmos/src/lib/gizmo-helper/gizmo-viewcube.ts","../../../../libs/soba/gizmos/src/lib/gizmo-helper/gizmo-viewport.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/axis-arrow.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/axis-rotator.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/plane-slider.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/scaling-sphere.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/pivot-controls.ts","../../../../libs/soba/gizmos/src/lib/transform-controls.ts","../../../../libs/soba/gizmos/src/angular-three-soba-gizmos.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDirective,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\toutput,\n\tTemplateRef,\n\tviewChild,\n} from '@angular/core';\nimport {\n\textend,\n\thasListener,\n\tinjectBeforeRender,\n\tinjectStore,\n\tNgtPortal,\n\tNgtPortalAutoRender,\n\tpick,\n} from 'angular-three';\nimport { NgtsOrthographicCamera } from 'angular-three-soba/cameras';\nimport CameraControls from 'camera-controls';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nconst turnRate = 2 * Math.PI; // turn rate in angles per second\nconst dummy = new THREE.Object3D();\nconst matrix = new THREE.Matrix4();\nconst [q1, q2] = [new THREE.Quaternion(), new THREE.Quaternion()];\nconst target = new THREE.Vector3();\nconst targetPosition = new THREE.Vector3();\n\n@Directive({ selector: 'ng-template[gizmoHelperContent]' })\nexport class NgtsGizmoHelperContent {\n\tstatic ngTemplateContextGuard(\n\t\t_: NgtsGizmoHelperContent,\n\t\tctx: unknown,\n\t): ctx is { container: THREE.Object3D; injector: Injector } {\n\t\treturn true;\n\t}\n}\n\ntype ControlsProto = { update(delta?: number): void; target: THREE.Vector3 };\n\nexport interface NgtsGizmoHelperOptions {\n\talignment:\n\t\t| 'top-left'\n\t\t| 'top-right'\n\t\t| 'bottom-right'\n\t\t| 'bottom-left'\n\t\t| 'bottom-center'\n\t\t| 'center-right'\n\t\t| 'center-left'\n\t\t| 'center-center'\n\t\t| 'top-center';\n\tmargin: [number, number];\n\trenderPriority: number;\n\tautoClear?: boolean;\n}\n\nconst defaultOptions: NgtsGizmoHelperOptions = {\n\talignment: 'bottom-right',\n\tmargin: [80, 80],\n\trenderPriority: 1,\n};\n\n@Component({\n\tselector: 'ngts-gizmo-helper',\n\ttemplate: `\n\t\t@let _renderPriority = renderPriority();\n\n\t\t<ngt-portal\n\t\t\t[container]=\"scene\"\n\t\t\t[autoRender]=\"_renderPriority\"\n\t\t\t[state]=\"{ events: { priority: _renderPriority + 1 } }\"\n\t\t>\n\t\t\t<ng-template portalContent let-injector=\"injector\">\n\t\t\t\t<ngts-orthographic-camera [options]=\"{ makeDefault: true, position: [0, 0, 200] }\" />\n\t\t\t\t<ngt-group #gizmo [position]=\"[x(), y(), 0]\">\n\t\t\t\t\t<ng-container\n\t\t\t\t\t\t[ngTemplateOutlet]=\"content()\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ container: scene, injector }\"\n\t\t\t\t\t\t[ngTemplateOutletInjector]=\"injector\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-group>\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtPortal, NgtPortalAutoRender, NgtsOrthographicCamera, NgTemplateOutlet],\n})\nexport class NgtsGizmoHelperImpl {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tupdate = output<void>();\n\n\tprotected renderPriority = pick(this.options, 'renderPriority');\n\tprotected margin = pick(this.options, 'margin');\n\tprotected alignment = pick(this.options, 'alignment');\n\n\tprotected scene = new THREE.Scene();\n\n\tprotected content = contentChild.required(NgtsGizmoHelperContent, { read: TemplateRef });\n\n\tprivate gizmoRef = viewChild<ElementRef<THREE.Group>>('gizmo');\n\tprivate virtualCameraRef = viewChild(NgtsOrthographicCamera);\n\n\tprivate store = injectStore();\n\n\tprotected x = computed(() => {\n\t\tconst alignment = this.alignment();\n\t\tif (alignment.endsWith('-center')) return 0;\n\n\t\tconst [width, [marginX]] = [this.store.size.width(), this.margin()];\n\t\treturn alignment.endsWith('-left') ? -width / 2 + marginX : width / 2 - marginX;\n\t});\n\tprotected y = computed(() => {\n\t\tconst alignment = this.alignment();\n\t\tif (alignment.startsWith('center-')) return 0;\n\n\t\tconst [height, [marginY]] = [this.store.size.height(), this.margin()];\n\t\treturn alignment.startsWith('top-') ? height / 2 - marginY : -height / 2 + marginY;\n\t});\n\n\tprivate animating = false;\n\tprivate radius = 0;\n\tprivate focusPoint = new THREE.Vector3(0, 0, 0);\n\tprivate defaultUp = new THREE.Vector3(0, 0, 0);\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\teffect(() => {\n\t\t\tthis.updateDefaultUpEffect();\n\t\t});\n\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tconst [virtualCamera, gizmo] = [\n\t\t\t\tthis.virtualCameraRef()?.cameraRef()?.nativeElement,\n\t\t\t\tthis.gizmoRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tif (!virtualCamera || !gizmo) return;\n\n\t\t\tconst [defaultControls, mainCamera, invalidate] = [\n\t\t\t\tthis.store.snapshot.controls as unknown as ControlsProto,\n\t\t\t\tthis.store.snapshot.camera,\n\t\t\t\tthis.store.snapshot.invalidate,\n\t\t\t];\n\n\t\t\t// Animate step\n\t\t\tif (this.animating) {\n\t\t\t\tif (q1.angleTo(q2) < 0.01) {\n\t\t\t\t\tthis.animating = false;\n\t\t\t\t\t// Orbit controls uses UP vector as the orbit axes,\n\t\t\t\t\t// so we need to reset it after the animation is done\n\t\t\t\t\t// moving it around for the controls to work correctly\n\t\t\t\t\tif (this.isOrbitControls(defaultControls)) {\n\t\t\t\t\t\tmainCamera.up.copy(this.defaultUp);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst step = delta * turnRate;\n\t\t\t\t\t// animate position by doing a slerp and then scaling the position on the unit sphere\n\t\t\t\t\tq1.rotateTowards(q2, step);\n\t\t\t\t\t// animate orientation\n\t\t\t\t\tmainCamera.position\n\t\t\t\t\t\t.set(0, 0, 1)\n\t\t\t\t\t\t.applyQuaternion(q1)\n\t\t\t\t\t\t.multiplyScalar(this.radius)\n\t\t\t\t\t\t.add(this.focusPoint);\n\t\t\t\t\tmainCamera.up.set(0, 1, 0).applyQuaternion(q1).normalize();\n\t\t\t\t\tmainCamera.quaternion.copy(q1);\n\n\t\t\t\t\tif (this.isCameraControls(defaultControls)) {\n\t\t\t\t\t\tvoid defaultControls.setPosition(\n\t\t\t\t\t\t\tmainCamera.position.x,\n\t\t\t\t\t\t\tmainCamera.position.y,\n\t\t\t\t\t\t\tmainCamera.position.z,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (hasListener(this.update)) this.update.emit();\n\t\t\t\t\telse if (defaultControls) defaultControls.update(delta);\n\n\t\t\t\t\tinvalidate();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Sync Gizmo with main camera orientation\n\t\t\tmatrix.copy(mainCamera.matrix).invert();\n\t\t\tgizmo.quaternion.setFromRotationMatrix(matrix);\n\t\t});\n\t}\n\n\ttweenCamera(direction: THREE.Vector3) {\n\t\tconst [defaultControls, invalidate, mainCamera] = [\n\t\t\tthis.store.snapshot.controls as unknown as ControlsProto,\n\t\t\tthis.store.snapshot.invalidate,\n\t\t\tthis.store.snapshot.camera,\n\t\t];\n\n\t\tthis.animating = true;\n\t\tif (defaultControls) {\n\t\t\tthis.focusPoint = this.isCameraControls(defaultControls)\n\t\t\t\t? defaultControls.getTarget(this.focusPoint)\n\t\t\t\t: defaultControls.target;\n\t\t}\n\t\tthis.radius = mainCamera.position.distanceTo(target);\n\n\t\t// Rotate from current camera orientation\n\t\tq1.copy(mainCamera.quaternion);\n\n\t\t// To new current camera orientation\n\t\ttargetPosition.copy(direction).multiplyScalar(this.radius).add(target);\n\t\tdummy.lookAt(targetPosition);\n\t\tq2.copy(dummy.quaternion);\n\n\t\tinvalidate();\n\t}\n\n\tprivate updateDefaultUpEffect() {\n\t\tconst mainCamera = this.store.camera();\n\t\tthis.defaultUp.copy(mainCamera.up);\n\t\tdummy.up.copy(mainCamera.up);\n\t}\n\n\tprivate isOrbitControls(controls: ControlsProto): controls is OrbitControls {\n\t\treturn 'minPolarAngle' in (controls as OrbitControls);\n\t}\n\n\tprivate isCameraControls(controls: CameraControls | ControlsProto): controls is CameraControls {\n\t\treturn 'getTarget' in (controls as CameraControls);\n\t}\n}\n\nexport const NgtsGizmoHelper = [NgtsGizmoHelperImpl, NgtsGizmoHelperContent] as const;\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport {\n\textend,\n\tgetEmitter,\n\thasListener,\n\tinjectStore,\n\tNgtArgs,\n\tNgtEventHandlers,\n\tNgtThreeEvent,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { BoxGeometry, Group, Mesh, MeshBasicMaterial } from 'three';\nimport { NgtsGizmoHelperImpl } from './gizmo-helper';\n\ntype XYZ = [number, number, number];\n\nconst colors = { bg: '#f0f0f0', hover: '#999', text: 'black', stroke: 'black' };\nconst defaultFaces = ['Right', 'Left', 'Top', 'Bottom', 'Front', 'Back'];\n\nexport interface NgtsViewcubeCommonOptions {\n\tfont: string;\n\topacity: number;\n\tcolor: string;\n\thoverColor: string;\n\ttextColor: string;\n\tstrokeColor: string;\n\tfaces: string[];\n}\n\nconst defaultFaceMaterialOptions: NgtsViewcubeCommonOptions = {\n\tfont: '20px Inter var, Arial, sans-serif',\n\tfaces: defaultFaces,\n\tcolor: colors.bg,\n\thoverColor: colors.hover,\n\ttextColor: colors.text,\n\tstrokeColor: colors.stroke,\n\topacity: 1,\n};\n\n@Component({\n\tselector: 'viewcube-face-material',\n\ttemplate: `\n\t\t<ngt-mesh-basic-material\n\t\t\t[attach]=\"['material', index()]\"\n\t\t\t[map]=\"texture()\"\n\t\t\t[color]=\"materialColor()\"\n\t\t\ttransparent\n\t\t\t[opacity]=\"opacity()\"\n\t\t/>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FaceMaterial {\n\thover = input.required<boolean>();\n\tindex = input.required<number>();\n\toptions = input(defaultFaceMaterialOptions, { transform: mergeInputs(defaultFaceMaterialOptions) });\n\n\tprivate faces = pick(this.options, 'faces');\n\tprivate font = pick(this.options, 'font');\n\tprivate color = pick(this.options, 'color');\n\tprivate textColor = pick(this.options, 'textColor');\n\tprivate strokeColor = pick(this.options, 'strokeColor');\n\tprivate hoverColor = pick(this.options, 'hoverColor');\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\n\tprotected opacity = pick(this.options, 'opacity');\n\tprotected materialColor = computed(() => (this.hover() ? this.hoverColor() : 'white'));\n\tprotected texture = computed(() => {\n\t\tconst [index, faces, font, color, textColor, strokeColor, gl] = [\n\t\t\tthis.index(),\n\t\t\tthis.faces(),\n\t\t\tthis.font(),\n\t\t\tthis.color(),\n\t\t\tthis.textColor(),\n\t\t\tthis.strokeColor(),\n\t\t\tthis.store.gl(),\n\t\t];\n\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tcanvas.width = 128;\n\t\tcanvas.height = 128;\n\n\t\tconst context = canvas.getContext('2d')!;\n\t\tcontext.fillStyle = color;\n\t\tcontext.fillRect(0, 0, canvas.width, canvas.height);\n\t\tcontext.strokeStyle = strokeColor;\n\t\tcontext.strokeRect(0, 0, canvas.width, canvas.height);\n\t\tcontext.font = font;\n\t\tcontext.textAlign = 'center';\n\t\tcontext.fillStyle = textColor;\n\t\tcontext.fillText(faces[index].toUpperCase(), 64, 76);\n\n\t\tconst texture = new THREE.CanvasTexture(canvas);\n\t\ttexture.anisotropy = gl.capabilities.getMaxAnisotropy() || 1;\n\n\t\treturn texture;\n\t});\n\n\tconstructor() {\n\t\textend({ MeshBasicMaterial });\n\t}\n}\n\n@Component({\n\tselector: 'viewcube-face-cube',\n\ttemplate: `\n\t\t<ngt-mesh\n\t\t\t(pointerout)=\"$any($event).stopPropagation(); hover.set(-1)\"\n\t\t\t(pointermove)=\"$any($event).stopPropagation(); hover.set(Math.floor($any($event).faceIndex / 2))\"\n\t\t\t(click)=\"internalOnClick($any($event))\"\n\t\t>\n\t\t\t<ngt-box-geometry />\n\t\t\t@for (face of count; track $index) {\n\t\t\t\t<viewcube-face-material [index]=\"$index\" [hover]=\"hover() === $index\" [options]=\"options()\" />\n\t\t\t}\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [FaceMaterial],\n})\nexport class FaceCube {\n\toptions = input({} as Partial<NgtsViewcubeCommonOptions>);\n\tonClick = input<NgtEventHandlers['click']>();\n\n\tprivate gizmoHelper = inject(NgtsGizmoHelperImpl);\n\n\tprotected hover = signal(-1);\n\tprotected count = Array.from({ length: 6 });\n\n\tconstructor() {\n\t\textend({ Mesh, BoxGeometry });\n\t}\n\n\tinternalOnClick(event: NgtThreeEvent<MouseEvent>) {\n\t\tconst onClick = this.onClick();\n\t\tif (onClick) onClick(event);\n\t\telse {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.gizmoHelper.tweenCamera(event.face!.normal);\n\t\t}\n\t}\n\n\tprotected readonly Math = Math;\n}\n\n@Component({\n\tselector: 'viewcube-edge-cube',\n\ttemplate: `\n\t\t<ngt-mesh\n\t\t\t[scale]=\"1.01\"\n\t\t\t[position]=\"position()\"\n\t\t\t(pointerout)=\"$any($event).stopPropagation(); hover.set(false)\"\n\t\t\t(pointerover)=\"$any($event).stopPropagation(); hover.set(true)\"\n\t\t\t(click)=\"internalOnClick($any($event))\"\n\t\t>\n\t\t\t<ngt-mesh-basic-material transparent [opacity]=\"0.6\" [color]=\"color()\" [visible]=\"hover()\" />\n\t\t\t<ngt-box-geometry *args=\"dimensions()\" />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class EdgeCube {\n\tdimensions = input.required<XYZ>();\n\tposition = input.required<THREE.Vector3>();\n\thoverColor = input(colors.hover, {\n\t\ttransform: (value: string | undefined) => {\n\t\t\tif (value === undefined) return colors.hover;\n\t\t\treturn value;\n\t\t},\n\t});\n\tonClick = input<NgtEventHandlers['click']>();\n\n\tprivate gizmoHelper = inject(NgtsGizmoHelperImpl);\n\n\tprotected hover = signal(false);\n\tprotected color = computed(() => (this.hover() ? this.hoverColor() : 'white'));\n\n\tconstructor() {\n\t\textend({ Mesh, BoxGeometry, MeshBasicMaterial });\n\t}\n\n\tinternalOnClick(event: NgtThreeEvent<MouseEvent>) {\n\t\tconst onClick = this.onClick();\n\t\tif (onClick) onClick(event);\n\t\telse {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.gizmoHelper.tweenCamera(this.position());\n\t\t}\n\t}\n}\n\nexport type NgtsGizmoViewcubeOptions = Partial<NgtsViewcubeCommonOptions>;\n\n@Component({\n\tselector: 'ngts-gizmo-viewcube',\n\ttemplate: `\n\t\t<ngt-group [scale]=\"60\">\n\t\t\t<viewcube-face-cube [options]=\"options()\" [onClick]=\"onClick\" />\n\t\t\t@for (edge of edges; track $index) {\n\t\t\t\t<viewcube-edge-cube\n\t\t\t\t\t[position]=\"edge\"\n\t\t\t\t\t[dimensions]=\"edgeDimensions[$index]\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t[hoverColor]=\"hoverColor()\"\n\t\t\t\t/>\n\t\t\t}\n\t\t\t@for (corner of corners; track $index) {\n\t\t\t\t<viewcube-edge-cube\n\t\t\t\t\t[position]=\"corner\"\n\t\t\t\t\t[dimensions]=\"cornerDimensions\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t[hoverColor]=\"hoverColor()\"\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: [FaceCube, EdgeCube],\n})\nexport class NgtsGizmoViewcube {\n\toptions = input({} as Partial<NgtsGizmoViewcubeOptions>);\n\tclick = output<NgtThreeEvent<MouseEvent>>();\n\n\tprotected hoverColor = pick(this.options, 'hoverColor');\n\n\tprotected corners: THREE.Vector3[] = [\n\t\t[1, 1, 1],\n\t\t[1, 1, -1],\n\t\t[1, -1, 1],\n\t\t[1, -1, -1],\n\t\t[-1, 1, 1],\n\t\t[-1, 1, -1],\n\t\t[-1, -1, 1],\n\t\t[-1, -1, -1],\n\t].map(this.makePositionVector);\n\tprotected cornerDimensions: XYZ = [0.25, 0.25, 0.25];\n\tprotected edges: THREE.Vector3[] = [\n\t\t[1, 1, 0],\n\t\t[1, 0, 1],\n\t\t[1, 0, -1],\n\t\t[1, -1, 0],\n\t\t[0, 1, 1],\n\t\t[0, 1, -1],\n\t\t[0, -1, 1],\n\t\t[0, -1, -1],\n\t\t[-1, 1, 0],\n\t\t[-1, 0, 1],\n\t\t[-1, 0, -1],\n\t\t[-1, -1, 0],\n\t].map(this.makePositionVector);\n\tprotected edgeDimensions = this.edges.map(\n\t\t(edge) => edge.toArray().map((axis: number): number => (axis == 0 ? 0.5 : 0.25)) as XYZ,\n\t);\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tprotected get onClick() {\n\t\tif (hasListener(this.click)) return getEmitter(this.click);\n\t\treturn undefined;\n\t}\n\n\tprivate makePositionVector(xyz: number[]) {\n\t\treturn new THREE.Vector3(...xyz).multiplyScalar(0.38);\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n} from '@angular/core';\nimport {\n\textend,\n\tgetEmitter,\n\thasListener,\n\tinjectStore,\n\tNgtArgs,\n\tNgtEuler,\n\tNgtEventHandlers,\n\tNgtThreeElements,\n\tNgtThreeEvent,\n\tNgtVector3,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { BoxGeometry, Group, Mesh, MeshBasicMaterial, Sprite, SpriteMaterial } from 'three';\nimport { NgtsGizmoHelperImpl } from './gizmo-helper';\n\n@Component({\n\tselector: 'viewport-axis',\n\ttemplate: `\n\t\t<ngt-group [rotation]=\"rotation()\">\n\t\t\t<ngt-mesh [position]=\"[0.4, 0, 0]\">\n\t\t\t\t<ngt-box-geometry *args=\"scale()\" />\n\t\t\t\t<ngt-mesh-basic-material [color]=\"color()\" [toneMapped]=\"false\" />\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class Axis {\n\tscale = input([0.8, 0.05, 0.05], {\n\t\ttransform: (value: [number, number, number] | undefined) => {\n\t\t\tif (value === undefined) return [0.8, 0.05, 0.05];\n\t\t\treturn value;\n\t\t},\n\t});\n\tcolor = input<THREE.ColorRepresentation>();\n\trotation = input<NgtEuler>([0, 0, 0]);\n\n\tconstructor() {\n\t\textend({ Group, Mesh, BoxGeometry, MeshBasicMaterial });\n\t}\n}\n\n@Component({\n\tselector: 'viewport-axis-head',\n\ttemplate: `\n\t\t<ngt-sprite\n\t\t\t[scale]=\"scale()\"\n\t\t\t[position]=\"position()\"\n\t\t\t(pointerover)=\"onPointerOver($any($event))\"\n\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t>\n\t\t\t<ngt-sprite-material\n\t\t\t\t[map]=\"texture()\"\n\t\t\t\t[alphaTest]=\"0.3\"\n\t\t\t\t[opacity]=\"label() ? 1 : 0.75\"\n\t\t\t\t[toneMapped]=\"false\"\n\t\t\t/>\n\t\t</ngt-sprite>\n\t`,\n\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AxisHead {\n\tarcStyle = input.required<string>();\n\tposition = input.required<NgtVector3>();\n\tlabel = input<string>();\n\tlabelColor = input('#000');\n\taxisHeadScale = input(1);\n\tdisabled = input(false);\n\tfont = input('18px Inter var, Arial, sans-serif');\n\tonClick = input<NgtEventHandlers['click']>();\n\n\tprivate document = inject(DOCUMENT);\n\tprivate gizmoHelper = inject(NgtsGizmoHelperImpl);\n\tprivate store = injectStore();\n\n\tprotected texture = computed(() => {\n\t\tconst [arcStyle, label, labelColor, font, gl] = [\n\t\t\tthis.arcStyle(),\n\t\t\tthis.label(),\n\t\t\tthis.labelColor(),\n\t\t\tthis.font(),\n\t\t\tthis.store.gl(),\n\t\t];\n\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tcanvas.width = 64;\n\t\tcanvas.height = 64;\n\n\t\tconst context = canvas.getContext('2d')!;\n\t\tcontext.beginPath();\n\t\tcontext.arc(32, 32, 16, 0, 2 * Math.PI);\n\t\tcontext.closePath();\n\t\tcontext.fillStyle = arcStyle;\n\t\tcontext.fill();\n\n\t\tif (label) {\n\t\t\tcontext.font = font;\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.fillStyle = labelColor;\n\t\t\tcontext.fillText(label, 32, 41);\n\t\t}\n\n\t\tconst texture = new THREE.CanvasTexture(canvas);\n\t\ttexture.anisotropy = gl.capabilities.getMaxAnisotropy() || 1;\n\t\treturn texture;\n\t});\n\n\tprotected active = signal(false);\n\tprotected scale = computed(() => (this.label() ? 1 : 0.75) * (this.active() ? 1.2 : 1) * this.axisHeadScale());\n\n\tconstructor() {\n\t\textend({ Sprite, SpriteMaterial });\n\t}\n\n\tonPointerOver(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (this.disabled()) return;\n\n\t\tevent.stopPropagation();\n\t\tthis.active.set(true);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (this.disabled()) return;\n\n\t\tconst onClick = this.onClick();\n\t\tif (onClick) onClick(event);\n\t\telse {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.active.set(false);\n\t\t}\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (this.disabled()) return;\n\t\tevent.stopPropagation();\n\t\tthis.gizmoHelper.tweenCamera(event.object.position);\n\t}\n}\n\nexport interface NgtsGizmoViewportOptions extends Partial<NgtThreeElements['ngt-group']> {\n\taxisColors: [string, string, string];\n\taxisScale?: [number, number, number];\n\tlabels: [string, string, string];\n\taxisHeadScale: number;\n\tlabelColor: string;\n\thideNegativeAxes: boolean;\n\thideAxisHeads: boolean;\n\tdisabled: boolean;\n\tfont: string;\n}\n\nconst defaultOptions: NgtsGizmoViewportOptions = {\n\taxisColors: ['#ff2060', '#20df80', '#2080ff'],\n\tlabels: ['X', 'Y', 'Z'],\n\taxisHeadScale: 1,\n\tlabelColor: '#000',\n\thideNegativeAxes: false,\n\thideAxisHeads: false,\n\tdisabled: false,\n\tfont: '18px Inter var, Arial, sans-serif',\n};\n\n@Component({\n\tselector: 'ngts-gizmo-viewport',\n\ttemplate: `\n\t\t@let _axisScale = axisScale();\n\t\t@let _axisHeadScale = axisHeadScale();\n\t\t@let _labels = labels();\n\t\t@let _labelColor = labelColor();\n\t\t@let _axisColors = axisColors();\n\t\t@let _font = font();\n\t\t@let _disabled = disabled();\n\n\t\t<ngt-group [scale]=\"40\" [parameters]=\"parameters()\">\n\t\t\t<viewport-axis [color]=\"_axisColors[0]\" [rotation]=\"[0, 0, 0]\" [scale]=\"_axisScale\" />\n\t\t\t<viewport-axis [color]=\"_axisColors[1]\" [rotation]=\"[0, 0, Math.PI / 2]\" [scale]=\"_axisScale\" />\n\t\t\t<viewport-axis [color]=\"_axisColors[2]\" [rotation]=\"[0, -Math.PI / 2, 0]\" [scale]=\"_axisScale\" />\n\n\t\t\t@if (!hideAxisHeads()) {\n\t\t\t\t<viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"_axisColors[0]\"\n\t\t\t\t\t[position]=\"[1, 0, 0]\"\n\t\t\t\t\t[label]=\"_labels[0]\"\n\t\t\t\t\t[labelColor]=\"_labelColor\"\n\t\t\t\t\t[axisHeadScale]=\"_axisHeadScale\"\n\t\t\t\t\t[disabled]=\"_disabled\"\n\t\t\t\t\t[font]=\"_font\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t/>\n\t\t\t\t<viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"_axisColors[1]\"\n\t\t\t\t\t[position]=\"[0, 1, 0]\"\n\t\t\t\t\t[label]=\"_labels[1]\"\n\t\t\t\t\t[labelColor]=\"_labelColor\"\n\t\t\t\t\t[axisHeadScale]=\"_axisHeadScale\"\n\t\t\t\t\t[disabled]=\"_disabled\"\n\t\t\t\t\t[font]=\"_font\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t/>\n\t\t\t\t<viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"_axisColors[2]\"\n\t\t\t\t\t[position]=\"[0, 0, 1]\"\n\t\t\t\t\t[label]=\"_labels[2]\"\n\t\t\t\t\t[labelColor]=\"_labelColor\"\n\t\t\t\t\t[axisHeadScale]=\"_axisHeadScale\"\n\t\t\t\t\t[disabled]=\"_disabled\"\n\t\t\t\t\t[font]=\"_font\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t/>\n\n\t\t\t\t@if (!hideNegativeAxes()) {\n\t\t\t\t\t<viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"_axisColors[0]\"\n\t\t\t\t\t\t[position]=\"[-1, 0, 0]\"\n\t\t\t\t\t\t[axisHeadScale]=\"_axisHeadScale\"\n\t\t\t\t\t\t[disabled]=\"_disabled\"\n\t\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t/>\n\t\t\t\t\t<viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"_axisColors[1]\"\n\t\t\t\t\t\t[position]=\"[0, -1, 0]\"\n\t\t\t\t\t\t[axisHeadScale]=\"_axisHeadScale\"\n\t\t\t\t\t\t[disabled]=\"_disabled\"\n\t\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t/>\n\t\t\t\t\t<viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"_axisColors[2]\"\n\t\t\t\t\t\t[position]=\"[0, 0, -1]\"\n\t\t\t\t\t\t[axisHeadScale]=\"_axisHeadScale\"\n\t\t\t\t\t\t[disabled]=\"_disabled\"\n\t\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t/>\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: [Axis, AxisHead],\n})\nexport class NgtsGizmoViewport {\n\tprotected readonly Math = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'axisColors',\n\t\t'axisScale',\n\t\t'labels',\n\t\t'axisHeadScale',\n\t\t'labelColor',\n\t\t'hideNegativeAxes',\n\t\t'hideAxisHeads',\n\t\t'disabled',\n\t\t'font',\n\t]);\n\tclick = output<NgtThreeEvent<MouseEvent>>();\n\n\tprotected axisColors = pick(this.options, 'axisColors');\n\tprotected axisScale = pick(this.options, 'axisScale');\n\tprotected hideAxisHeads = pick(this.options, 'hideAxisHeads');\n\tprotected hideNegativeAxes = pick(this.options, 'hideNegativeAxes');\n\tprotected labels = pick(this.options, 'labels');\n\tprotected axisHeadScale = pick(this.options, 'axisHeadScale');\n\tprotected labelColor = pick(this.options, 'labelColor');\n\tprotected disabled = pick(this.options, 'disabled');\n\tprotected font = pick(this.options, 'font');\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tprotected get onClick() {\n\t\tif (hasListener(this.click)) return getEmitter(this.click);\n\t\treturn undefined;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\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 } from 'angular-three-soba/misc';\nimport * as THREE from 'three';\nimport { ConeGeometry, CylinderGeometry, Group, Mesh, MeshBasicMaterial } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new THREE.Vector3();\nconst vec2 = new THREE.Vector3();\n\nexport function calculateOffset(\n\tclickPoint: THREE.Vector3,\n\tnormal: THREE.Vector3,\n\trayStart: THREE.Vector3,\n\trayDir: THREE.Vector3,\n) {\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.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2.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 THREE.Vector3(0, 1, 0);\nconst offsetMatrix = new THREE.Matrix4();\n\n@Component({\n\tselector: 'ngts-axis-arrow',\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\thtmlContent\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\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\n\t\t\t\t\t[raycast]=\"null\"\n\t\t\t\t\t[position]=\"[0, cylinderLength() + coneLength() / 2.0, 0]\"\n\t\t\t\t\t[renderOrder]=\"500\"\n\t\t\t\t>\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\ttransparent\n\t\t\t\t\t\tpolygonOffset\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[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],\n})\nexport class NgtsAxisArrow {\n\tprotected readonly DoubleSide = THREE.DoubleSide;\n\n\tdirection = input.required<THREE.Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tprivate groupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tprivate annotationRef = viewChild<'string', ElementRef<HTMLElement>>('annotation', { read: ElementRef });\n\n\tprotected pivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: THREE.Vector3; dir: THREE.Vector3 } | null = null;\n\tprivate offset0 = 0;\n\n\tprotected color = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\n\tprotected coneWidth = 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\tprotected coneLength = computed(() => (this.pivotControls.fixed() ? 0.2 : this.pivotControls.scale() / 5));\n\tprotected cylinderLength = computed(() =>\n\t\tthis.pivotControls.fixed() ? 1 - this.coneLength() : this.pivotControls.scale() - this.coneLength(),\n\t);\n\tprotected matrixL = computed(() => {\n\t\tconst quaternion = new THREE.Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new THREE.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.store.controls() as unknown as { enabled: boolean },\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 THREE.Matrix4().extractRotation(group.matrixWorld);\n\t\tconst origin = new THREE.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\n\t\tif (controls) controls.enabled = false;\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] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.store.controls() as unknown as { enabled: boolean },\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.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\n\t\tif (controls) controls.enabled = true;\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\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML } from 'angular-three-soba/misc';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst clickDir = new THREE.Vector3();\nconst intersectionDir = new THREE.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(\n\tclickPoint: THREE.Vector3,\n\tintersectionPoint: THREE.Vector3,\n\torigin: THREE.Vector3,\n\te1: THREE.Vector3,\n\te2: THREE.Vector3,\n) {\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 THREE.Matrix4();\nconst posNew = new THREE.Vector3();\nconst ray = new THREE.Ray();\nconst intersection = new THREE.Vector3();\n\n@Component({\n\tselector: 'ngts-axis-rotator',\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\thtmlContent\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]=\"{\n\t\t\t\t\tlineWidth: pivotControls.lineWidth() * 4,\n\t\t\t\t\tvisible: false,\n\t\t\t\t\tuserData: pivotControls.userData(),\n\t\t\t\t}\"\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],\n})\nexport class NgtsAxisRotator {\n\tprotected readonly DoubleSide = THREE.DoubleSide;\n\n\tdir1 = input.required<THREE.Vector3>();\n\tdir2 = input.required<THREE.Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tannotationRef = viewChild<string, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tprotected pivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\n\tprotected hovered = signal(false);\n\tprivate angle = 0;\n\tprivate angle0 = 0;\n\tprivate clickInfo: {\n\t\tclickPoint: THREE.Vector3;\n\t\torigin: THREE.Vector3;\n\t\te1: THREE.Vector3;\n\t\te2: THREE.Vector3;\n\t\tnormal: THREE.Vector3;\n\t\tplane: THREE.Plane;\n\t} | null = null;\n\n\tprotected matrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new THREE.Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\tprotected r = computed(() => (this.pivotControls.fixed() ? 0.65 : this.pivotControls.scale() * 0.65));\n\tprotected arc = computed(() => {\n\t\tconst segments = 32;\n\t\tconst points: THREE.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 THREE.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.store.controls() as unknown as { enabled: boolean },\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 THREE.Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new THREE.Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new THREE.Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new THREE.Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new THREE.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) controls.enabled = false;\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] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.store.controls() as unknown as { enabled: boolean },\n\t\t];\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\n\t\tif (controls) controls.enabled = true;\n\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\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML } from 'angular-three-soba/misc';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nfunction decomposeIntoBasis(e1: THREE.Vector3, e2: THREE.Vector3, offset: THREE.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 THREE.Ray();\nconst intersection = new THREE.Vector3();\nconst offsetMatrix = new THREE.Matrix4();\n\n@Component({\n\tselector: 'ngts-plane-slider',\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\thtmlContent\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\tvisible\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\ttransparent\n\t\t\t\t\t\tpolygonOffset\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[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, NgtsLine],\n})\nexport class NgtsPlaneSlider {\n\tprotected readonly DoubleSide = THREE.DoubleSide;\n\n\tdir1 = input.required<THREE.Vector3>();\n\tdir2 = input.required<THREE.Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tannotationRef = viewChild<string, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tprotected pivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: THREE.Vector3; e1: THREE.Vector3; e2: THREE.Vector3; plane: THREE.Plane } | null =\n\t\tnull;\n\tprivate offsetX0 = 0;\n\tprivate offsetY0 = 0;\n\n\tprotected matrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new THREE.Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\n\tprotected pos1 = computed(() => (this.pivotControls.fixed() ? 1 / 7 : this.pivotControls.scale() / 7));\n\tprotected length = computed(() => (this.pivotControls.fixed() ? 0.225 : this.pivotControls.scale() * 0.225));\n\tprotected color = 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 THREE.Vector3(0, 0, 0),\n\t\t\tnew THREE.Vector3(0, length, 0),\n\t\t\tnew THREE.Vector3(length, length, 0),\n\t\t\tnew THREE.Vector3(length, 0, 0),\n\t\t\tnew THREE.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.store.controls() as unknown as { enabled: boolean },\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 THREE.Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new THREE.Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new THREE.Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new THREE.Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new THREE.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\n\t\tif (controls) controls.enabled = false;\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] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.store.controls() as unknown as { enabled: boolean },\n\t\t];\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\n\t\tif (controls) controls.enabled = true;\n\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\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { calculateScaleFactor, NgtsHTML } from 'angular-three-soba/misc';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, SphereGeometry } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new THREE.Vector3();\nconst vec2 = new THREE.Vector3();\n\nexport function calculateOffset(\n\tclickPoint: THREE.Vector3,\n\tnormal: THREE.Vector3,\n\trayStart: THREE.Vector3,\n\trayDir: THREE.Vector3,\n) {\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.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2.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 THREE.Vector3(0, 1, 0);\nconst scaleV = new THREE.Vector3();\nconst scaleMatrix = new THREE.Matrix4();\n\n@Component({\n\tselector: 'ngts-scaling-sphere',\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\thtmlContent\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#mesh\n\t\t\t\t\t[position]=\"[0, position(), 0]\"\n\t\t\t\t\t[renderOrder]=\"500\"\n\t\t\t\t\t[userData]=\"pivotControls.userData()\"\n\t\t\t\t>\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\ttransparent\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\tpolygonOffset\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, NgtArgs],\n})\nexport class NgtsScalingSphere {\n\tdirection = input.required<THREE.Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tannotationRef = viewChild<string, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprotected pivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\n\tprivate hovered = signal(false);\n\tprivate scale0 = 1;\n\tprivate scaleCurrent = 1;\n\tprivate clickInfo: {\n\t\tclickPoint: THREE.Vector3;\n\t\tdir: THREE.Vector3;\n\t\tmPLG: THREE.Matrix4;\n\t\tmPLGInv: THREE.Matrix4;\n\t\toffsetMultiplier: number;\n\t} | null = null;\n\n\tprotected position = computed(() => (this.pivotControls.fixed() ? 1.2 : 1.2 * this.pivotControls.scale()));\n\tprotected radius = 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 THREE.Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new THREE.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.store.controls() as unknown as { enabled: boolean },\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.store.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 THREE.Matrix4().extractRotation(group.matrixWorld);\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new THREE.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) controls.enabled = false;\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\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.store.controls() as unknown as { enabled: boolean },\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\n\t\tif (controls) controls.enabled = true;\n\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\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getInstanceState, injectBeforeRender, injectStore, is, NgtAnyRecord, omit, pick } from 'angular-three';\nimport { calculateScaleFactor } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } 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: THREE.Vector3;\n\tdirections: THREE.Vector3[];\n}\n\nexport interface OnDragParameters {\n\tl: THREE.Matrix4;\n\tdeltaL: THREE.Matrix4;\n\tw: THREE.Matrix4;\n\tdeltaW: THREE.Matrix4;\n}\n\nconst mL0 = new THREE.Matrix4();\nconst mW0 = new THREE.Matrix4();\nconst mP = new THREE.Matrix4();\nconst mPInv = new THREE.Matrix4();\nconst mW = new THREE.Matrix4();\nconst mL = new THREE.Matrix4();\nconst mL0Inv = new THREE.Matrix4();\nconst mdL = new THREE.Matrix4();\nconst mG = new THREE.Matrix4();\n\nconst bb = new THREE.Box3();\nconst bbObj = new THREE.Box3();\nconst vCenter = new THREE.Vector3();\nconst vSize = new THREE.Vector3();\nconst vAnchorOffset = new THREE.Vector3();\nconst vPosition = new THREE.Vector3();\nconst vScale = new THREE.Vector3();\n\nconst xDir = new THREE.Vector3(1, 0, 0);\nconst yDir = new THREE.Vector3(0, 1, 0);\nconst zDir = new THREE.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?: THREE.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\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@let _disableAxes = disableAxes();\n\t\t\t\t\t\t@let _disableSliders = disableSliders();\n\t\t\t\t\t\t@let _disableRotations = disableRotations();\n\t\t\t\t\t\t@let _disableScaling = disableScaling();\n\t\t\t\t\t\t@let _activeAxes = activeAxes();\n\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\tprotected parameters = 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\tprivate autoTransform = pick(this.options, 'autoTransform');\n\tprotected matrix = pick(this.options, 'matrix');\n\tprotected offset = pick(this.options, 'offset');\n\tprotected rotation = pick(this.options, 'rotation');\n\tprotected visible = pick(this.options, 'visible');\n\tprotected enabled = pick(this.options, 'enabled');\n\tprotected disableAxes = pick(this.options, 'disableAxes');\n\tprotected disableSliders = pick(this.options, 'disableSliders');\n\tprotected disableRotations = pick(this.options, 'disableRotations');\n\tprotected disableScaling = pick(this.options, 'disableScaling');\n\tprotected activeAxes = pick(this.options, 'activeAxes');\n\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\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\n\tprotected xDir = xDir;\n\tprotected yDir = yDir;\n\tprotected zDir = zDir;\n\n\tparentRef = viewChild.required<ElementRef<THREE.Group>>('parent');\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tgizmoRef = viewChild.required<ElementRef<THREE.Group>>('gizmo');\n\tchildrenRef = viewChild.required<ElementRef<THREE.Group>>('children');\n\n\tprivate store = injectStore();\n\n\ttranslation: [number, number, number] = [0, 0, 0];\n\n\tprivate anchor = pick(this.options, 'anchor');\n\tprivate cameraScale = new THREE.Vector3(1, 1, 1);\n\tprivate gizmoScale = new THREE.Vector3(1, 1, 1);\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\teffect(() => {\n\t\t\tconst anchor = this.anchor();\n\t\t\tif (!anchor) return;\n\n\t\t\tconst childrenContainer = this.childrenRef().nativeElement;\n\t\t\tconst instanceState = getInstanceState(childrenContainer);\n\t\t\tif (!instanceState) return;\n\n\t\t\tconst [gizmo, offset, invalidate] = [\n\t\t\t\tthis.gizmoRef().nativeElement,\n\t\t\t\tthis.offset(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.options(),\n\t\t\t\t[instanceState.objects(), instanceState.nonObjects()],\n\t\t\t];\n\t\t\tchildrenContainer.updateWorldMatrix(true, true);\n\n\t\t\tmPInv.copy(childrenContainer.matrixWorld).invert();\n\t\t\tbb.makeEmpty();\n\n\t\t\tchildrenContainer.traverse((obj) => {\n\t\t\t\tif (!(obj as THREE.Mesh).geometry) return;\n\t\t\t\tif (!(obj as THREE.Mesh).geometry.boundingBox) (obj as THREE.Mesh).geometry.computeBoundingBox();\n\t\t\t\tmL.copy(obj.matrixWorld).premultiply(mPInv);\n\t\t\t\tconst boundingBox = (obj as THREE.Mesh).geometry.boundingBox;\n\t\t\t\tif (boundingBox) {\n\t\t\t\t\tbbObj.copy(boundingBox);\n\t\t\t\t\tbbObj.applyMatrix4(mL);\n\t\t\t\t\tbb.union(bbObj);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvCenter.copy(bb.max).add(bb.min).multiplyScalar(0.5);\n\t\t\tvSize.copy(bb.max).sub(bb.min).multiplyScalar(0.5);\n\t\t\tvAnchorOffset\n\t\t\t\t.copy(vSize)\n\t\t\t\t.multiply(new THREE.Vector3(...anchor))\n\t\t\t\t.add(vCenter);\n\t\t\tvPosition.set(...offset).add(vAnchorOffset);\n\t\t\tgizmo.position.copy(vPosition);\n\t\t\tinvalidate();\n\t\t});\n\n\t\tconst vec = new THREE.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 (is.three<THREE.Matrix4>(matrix, 'isMatrix4')) {\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: THREE.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 {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport {\n\textend,\n\tgetInstanceState,\n\tinjectStore,\n\tNgtArgs,\n\tNgtThreeElement,\n\tNgtThreeElements,\n\tomit,\n\tpick,\n\tresolveRef,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { TransformControls } from 'three-stdlib';\n\ninterface ControlsProto {\n\tenabled: boolean;\n}\n\nexport type NgtsTransformControlsObject = NgtThreeElement<typeof TransformControls>;\n\nexport type NgtsTransformControlsOptions = Partial<NgtsTransformControlsObject> &\n\tPartial<NgtThreeElements['ngt-group']> & {\n\t\tenabled?: boolean;\n\t\taxis?: string | null;\n\t\tdomElement?: HTMLElement;\n\t\tmode?: 'translate' | 'rotate' | 'scale';\n\t\ttranslationSnap?: number | null;\n\t\trotationSnap?: number | null;\n\t\tscaleSnap?: number | null;\n\t\tspace?: 'world' | 'local';\n\t\tsize?: number;\n\t\tshowX?: boolean;\n\t\tshowY?: boolean;\n\t\tshowZ?: boolean;\n\t\tcamera?: THREE.Camera;\n\t\tmakeDefault?: boolean;\n\t};\n\n@Component({\n\tselector: 'ngts-transform-controls',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"controlsOptions()\" />\n\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsTransformControls {\n\tobject = input<THREE.Object3D | ElementRef<THREE.Object3D> | undefined | null>(null);\n\toptions = input({} as Partial<NgtsTransformControlsOptions>);\n\tprotected parameters = omit(this.options, [\n\t\t'enabled',\n\t\t'axis',\n\t\t'mode',\n\t\t'translationSnap',\n\t\t'rotationSnap',\n\t\t'scaleSnap',\n\t\t'space',\n\t\t'size',\n\t\t'showX',\n\t\t'showY',\n\t\t'showZ',\n\t\t'domElement',\n\t\t'makeDefault',\n\t\t'camera',\n\t]);\n\n\tprotected controlsOptions = pick(this.options, [\n\t\t'enabled',\n\t\t'axis',\n\t\t'mode',\n\t\t'translationSnap',\n\t\t'rotationSnap',\n\t\t'scaleSnap',\n\t\t'space',\n\t\t'size',\n\t\t'showX',\n\t\t'showY',\n\t\t'showZ',\n\t]);\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tchange = output<THREE.Event>();\n\tmouseDown = output<THREE.Event>();\n\tmouseUp = output<THREE.Event>();\n\tobjectChange = output<THREE.Event>();\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate store = injectStore();\n\n\tcontrols = computed(() => {\n\t\tlet camera = this.camera();\n\t\tif (!camera) {\n\t\t\tcamera = this.store.camera();\n\t\t}\n\n\t\tlet domElement = this.domElement();\n\t\tif (!domElement) {\n\t\t\tdomElement = this.store.events().connected || this.store.gl.domElement();\n\t\t}\n\n\t\treturn new TransformControls(camera, domElement);\n\t});\n\n\tconstructor() {\n\t\textend({ Group });\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.attachControlsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.disableDefaultControlsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.setupControlsEventsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.updateDefaultControlsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t}\n\n\tprivate attachControlsEffect() {\n\t\tconst group = this.groupRef().nativeElement;\n\t\tif (!group) return;\n\n\t\tconst instanceState = getInstanceState(group);\n\t\tif (!instanceState) return;\n\n\t\tconst [object, controls] = [resolveRef(this.object()), this.controls(), instanceState.objects()];\n\t\tif (object) {\n\t\t\tcontrols.attach(object);\n\t\t} else {\n\t\t\tcontrols.attach(group);\n\t\t}\n\n\t\treturn () => controls.detach();\n\t}\n\n\tprivate disableDefaultControlsEffect() {\n\t\tconst defaultControls = this.store.controls() as unknown as ControlsProto;\n\t\tif (!defaultControls) return;\n\n\t\tconst controls = this.controls();\n\t\tconst callback = (event: any) => {\n\t\t\tdefaultControls.enabled = !event.value;\n\t\t};\n\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('dragging-changed', callback);\n\t\treturn () => {\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('dragging-changed', callback);\n\t\t};\n\t}\n\n\tprivate setupControlsEventsEffect() {\n\t\tconst [controls, invalidate] = [this.controls(), this.store.invalidate()];\n\t\tconst onChange = (event: THREE.Event) => {\n\t\t\tinvalidate();\n\t\t\tif (!this.change['destroyed']) {\n\t\t\t\tthis.change.emit(event);\n\t\t\t}\n\t\t};\n\t\tconst onMouseDown = this.mouseDown.emit.bind(this.mouseDown);\n\t\tconst onMouseUp = this.mouseUp.emit.bind(this.mouseUp);\n\t\tconst onObjectChange = this.objectChange.emit.bind(this.objectChange);\n\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('change', onChange);\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('mouseDown', onMouseDown);\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('mouseUp', onMouseUp);\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('objectChange', onObjectChange);\n\n\t\treturn () => {\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('change', onChange);\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('mouseDown', onMouseDown);\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('mouseUp', onMouseUp);\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('objectChange', onObjectChange);\n\t\t};\n\t}\n\n\tprivate updateDefaultControlsEffect() {\n\t\tconst [controls, makeDefault] = [this.controls(), this.makeDefault()];\n\t\tif (!makeDefault) return;\n\n\t\tconst oldControls = this.store.snapshot.controls;\n\t\tthis.store.update({ controls });\n\t\treturn () => this.store.update(() => ({ controls: oldControls }));\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","vec1","vec2","calculateOffset","upV","offsetMatrix","i1","ray","intersection","i1_1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-soba-gizmos.mjs","sources":["../../../../libs/soba/gizmos/src/lib/gizmo-helper/gizmo-helper.ts","../../../../libs/soba/gizmos/src/lib/gizmo-helper/gizmo-viewcube.ts","../../../../libs/soba/gizmos/src/lib/gizmo-helper/gizmo-viewport.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/axis-arrow.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/axis-rotator.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/plane-slider.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/scaling-sphere.ts","../../../../libs/soba/gizmos/src/lib/pivot-controls/pivot-controls.ts","../../../../libs/soba/gizmos/src/lib/transform-controls.ts","../../../../libs/soba/gizmos/src/angular-three-soba-gizmos.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tDirective,\n\teffect,\n\tElementRef,\n\tInjector,\n\tinput,\n\toutput,\n\tTemplateRef,\n\tviewChild,\n} from '@angular/core';\nimport {\n\textend,\n\thasListener,\n\tinjectBeforeRender,\n\tinjectStore,\n\tNgtPortal,\n\tNgtPortalAutoRender,\n\tpick,\n} from 'angular-three';\nimport { NgtsOrthographicCamera } from 'angular-three-soba/cameras';\nimport CameraControls from 'camera-controls';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nconst turnRate = 2 * Math.PI; // turn rate in angles per second\nconst dummy = new THREE.Object3D();\nconst matrix = new THREE.Matrix4();\nconst [q1, q2] = [new THREE.Quaternion(), new THREE.Quaternion()];\nconst target = new THREE.Vector3();\nconst targetPosition = new THREE.Vector3();\n\n@Directive({ selector: 'ng-template[gizmoHelperContent]' })\nexport class NgtsGizmoHelperContent {\n\tstatic ngTemplateContextGuard(\n\t\t_: NgtsGizmoHelperContent,\n\t\tctx: unknown,\n\t): ctx is { container: THREE.Object3D; injector: Injector } {\n\t\treturn true;\n\t}\n}\n\ntype ControlsProto = { update(delta?: number): void; target: THREE.Vector3 };\n\nexport interface NgtsGizmoHelperOptions {\n\talignment:\n\t\t| 'top-left'\n\t\t| 'top-right'\n\t\t| 'bottom-right'\n\t\t| 'bottom-left'\n\t\t| 'bottom-center'\n\t\t| 'center-right'\n\t\t| 'center-left'\n\t\t| 'center-center'\n\t\t| 'top-center';\n\tmargin: [number, number];\n\trenderPriority: number;\n\tautoClear?: boolean;\n}\n\nconst defaultOptions: NgtsGizmoHelperOptions = {\n\talignment: 'bottom-right',\n\tmargin: [80, 80],\n\trenderPriority: 1,\n};\n\n@Component({\n\tselector: 'ngts-gizmo-helper',\n\ttemplate: `\n\t\t@let _renderPriority = renderPriority();\n\n\t\t<ngt-portal\n\t\t\t[container]=\"scene\"\n\t\t\t[autoRender]=\"_renderPriority\"\n\t\t\t[state]=\"{ events: { priority: _renderPriority + 1 } }\"\n\t\t>\n\t\t\t<ng-template portalContent let-injector=\"injector\">\n\t\t\t\t<ngts-orthographic-camera [options]=\"{ makeDefault: true, position: [0, 0, 200] }\" />\n\t\t\t\t<ngt-group #gizmo [position]=\"[x(), y(), 0]\">\n\t\t\t\t\t<ng-container\n\t\t\t\t\t\t[ngTemplateOutlet]=\"content()\"\n\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ container: scene, injector }\"\n\t\t\t\t\t\t[ngTemplateOutletInjector]=\"injector\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-group>\n\t\t\t</ng-template>\n\t\t</ngt-portal>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtPortal, NgtPortalAutoRender, NgtsOrthographicCamera, NgTemplateOutlet],\n})\nexport class NgtsGizmoHelperImpl {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tupdate = output<void>();\n\n\tprotected renderPriority = pick(this.options, 'renderPriority');\n\tprotected margin = pick(this.options, 'margin');\n\tprotected alignment = pick(this.options, 'alignment');\n\n\tprotected scene = new THREE.Scene();\n\n\tprotected content = contentChild.required(NgtsGizmoHelperContent, { read: TemplateRef });\n\n\tprivate gizmoRef = viewChild<ElementRef<THREE.Group>>('gizmo');\n\tprivate virtualCameraRef = viewChild(NgtsOrthographicCamera);\n\n\tprivate store = injectStore();\n\n\tprotected x = computed(() => {\n\t\tconst alignment = this.alignment();\n\t\tif (alignment.endsWith('-center')) return 0;\n\n\t\tconst [width, [marginX]] = [this.store.size.width(), this.margin()];\n\t\treturn alignment.endsWith('-left') ? -width / 2 + marginX : width / 2 - marginX;\n\t});\n\tprotected y = computed(() => {\n\t\tconst alignment = this.alignment();\n\t\tif (alignment.startsWith('center-')) return 0;\n\n\t\tconst [height, [marginY]] = [this.store.size.height(), this.margin()];\n\t\treturn alignment.startsWith('top-') ? height / 2 - marginY : -height / 2 + marginY;\n\t});\n\n\tprivate animating = false;\n\tprivate radius = 0;\n\tprivate focusPoint = new THREE.Vector3(0, 0, 0);\n\tprivate defaultUp = new THREE.Vector3(0, 0, 0);\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\teffect(() => {\n\t\t\tthis.updateDefaultUpEffect();\n\t\t});\n\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tconst [virtualCamera, gizmo] = [\n\t\t\t\tthis.virtualCameraRef()?.cameraRef()?.nativeElement,\n\t\t\t\tthis.gizmoRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tif (!virtualCamera || !gizmo) return;\n\n\t\t\tconst [defaultControls, mainCamera, invalidate] = [\n\t\t\t\tthis.store.snapshot.controls as unknown as ControlsProto,\n\t\t\t\tthis.store.snapshot.camera,\n\t\t\t\tthis.store.snapshot.invalidate,\n\t\t\t];\n\n\t\t\t// Animate step\n\t\t\tif (this.animating) {\n\t\t\t\tif (q1.angleTo(q2) < 0.01) {\n\t\t\t\t\tthis.animating = false;\n\t\t\t\t\t// Orbit controls uses UP vector as the orbit axes,\n\t\t\t\t\t// so we need to reset it after the animation is done\n\t\t\t\t\t// moving it around for the controls to work correctly\n\t\t\t\t\tif (this.isOrbitControls(defaultControls)) {\n\t\t\t\t\t\tmainCamera.up.copy(this.defaultUp);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst step = delta * turnRate;\n\t\t\t\t\t// animate position by doing a slerp and then scaling the position on the unit sphere\n\t\t\t\t\tq1.rotateTowards(q2, step);\n\t\t\t\t\t// animate orientation\n\t\t\t\t\tmainCamera.position\n\t\t\t\t\t\t.set(0, 0, 1)\n\t\t\t\t\t\t.applyQuaternion(q1)\n\t\t\t\t\t\t.multiplyScalar(this.radius)\n\t\t\t\t\t\t.add(this.focusPoint);\n\t\t\t\t\tmainCamera.up.set(0, 1, 0).applyQuaternion(q1).normalize();\n\t\t\t\t\tmainCamera.quaternion.copy(q1);\n\n\t\t\t\t\tif (this.isCameraControls(defaultControls)) {\n\t\t\t\t\t\tvoid defaultControls.setPosition(\n\t\t\t\t\t\t\tmainCamera.position.x,\n\t\t\t\t\t\t\tmainCamera.position.y,\n\t\t\t\t\t\t\tmainCamera.position.z,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (hasListener(this.update)) this.update.emit();\n\t\t\t\t\telse if (defaultControls) defaultControls.update(delta);\n\n\t\t\t\t\tinvalidate();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Sync Gizmo with main camera orientation\n\t\t\tmatrix.copy(mainCamera.matrix).invert();\n\t\t\tgizmo.quaternion.setFromRotationMatrix(matrix);\n\t\t});\n\t}\n\n\ttweenCamera(direction: THREE.Vector3) {\n\t\tconst [defaultControls, invalidate, mainCamera] = [\n\t\t\tthis.store.snapshot.controls as unknown as ControlsProto,\n\t\t\tthis.store.snapshot.invalidate,\n\t\t\tthis.store.snapshot.camera,\n\t\t];\n\n\t\tthis.animating = true;\n\t\tif (defaultControls) {\n\t\t\tthis.focusPoint = this.isCameraControls(defaultControls)\n\t\t\t\t? defaultControls.getTarget(this.focusPoint)\n\t\t\t\t: defaultControls.target;\n\t\t}\n\t\tthis.radius = mainCamera.position.distanceTo(target);\n\n\t\t// Rotate from current camera orientation\n\t\tq1.copy(mainCamera.quaternion);\n\n\t\t// To new current camera orientation\n\t\ttargetPosition.copy(direction).multiplyScalar(this.radius).add(target);\n\t\tdummy.lookAt(targetPosition);\n\t\tq2.copy(dummy.quaternion);\n\n\t\tinvalidate();\n\t}\n\n\tprivate updateDefaultUpEffect() {\n\t\tconst mainCamera = this.store.camera();\n\t\tthis.defaultUp.copy(mainCamera.up);\n\t\tdummy.up.copy(mainCamera.up);\n\t}\n\n\tprivate isOrbitControls(controls: ControlsProto): controls is OrbitControls {\n\t\treturn 'minPolarAngle' in (controls as OrbitControls);\n\t}\n\n\tprivate isCameraControls(controls: CameraControls | ControlsProto): controls is CameraControls {\n\t\treturn 'getTarget' in (controls as CameraControls);\n\t}\n}\n\nexport const NgtsGizmoHelper = [NgtsGizmoHelperImpl, NgtsGizmoHelperContent] as const;\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport {\n\textend,\n\tgetEmitter,\n\thasListener,\n\tinjectObjectEvents,\n\tinjectStore,\n\tNgtArgs,\n\tNgtEventHandlers,\n\tNgtThreeEvent,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { BoxGeometry, Group, Mesh, MeshBasicMaterial } from 'three';\nimport { NgtsGizmoHelperImpl } from './gizmo-helper';\n\ntype XYZ = [number, number, number];\n\nconst colors = { bg: '#f0f0f0', hover: '#999', text: 'black', stroke: 'black' };\nconst defaultFaces = ['Right', 'Left', 'Top', 'Bottom', 'Front', 'Back'];\n\nexport interface NgtsViewcubeCommonOptions {\n\tfont: string;\n\topacity: number;\n\tcolor: string;\n\thoverColor: string;\n\ttextColor: string;\n\tstrokeColor: string;\n\tfaces: string[];\n}\n\nconst defaultFaceMaterialOptions: NgtsViewcubeCommonOptions = {\n\tfont: '20px Inter var, Arial, sans-serif',\n\tfaces: defaultFaces,\n\tcolor: colors.bg,\n\thoverColor: colors.hover,\n\ttextColor: colors.text,\n\tstrokeColor: colors.stroke,\n\topacity: 1,\n};\n\n@Component({\n\tselector: 'viewcube-face-material',\n\ttemplate: `\n\t\t<ngt-mesh-basic-material\n\t\t\t[attach]=\"['material', index()]\"\n\t\t\t[map]=\"texture()\"\n\t\t\t[color]=\"materialColor()\"\n\t\t\ttransparent\n\t\t\t[opacity]=\"opacity()\"\n\t\t/>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FaceMaterial {\n\thover = input.required<boolean>();\n\tindex = input.required<number>();\n\toptions = input(defaultFaceMaterialOptions, { transform: mergeInputs(defaultFaceMaterialOptions) });\n\n\tprivate faces = pick(this.options, 'faces');\n\tprivate font = pick(this.options, 'font');\n\tprivate color = pick(this.options, 'color');\n\tprivate textColor = pick(this.options, 'textColor');\n\tprivate strokeColor = pick(this.options, 'strokeColor');\n\tprivate hoverColor = pick(this.options, 'hoverColor');\n\n\tprivate document = inject(DOCUMENT);\n\tprivate store = injectStore();\n\n\tprotected opacity = pick(this.options, 'opacity');\n\tprotected materialColor = computed(() => (this.hover() ? this.hoverColor() : 'white'));\n\tprotected texture = computed(() => {\n\t\tconst [index, faces, font, color, textColor, strokeColor, gl] = [\n\t\t\tthis.index(),\n\t\t\tthis.faces(),\n\t\t\tthis.font(),\n\t\t\tthis.color(),\n\t\t\tthis.textColor(),\n\t\t\tthis.strokeColor(),\n\t\t\tthis.store.gl(),\n\t\t];\n\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tcanvas.width = 128;\n\t\tcanvas.height = 128;\n\n\t\tconst context = canvas.getContext('2d')!;\n\t\tcontext.fillStyle = color;\n\t\tcontext.fillRect(0, 0, canvas.width, canvas.height);\n\t\tcontext.strokeStyle = strokeColor;\n\t\tcontext.strokeRect(0, 0, canvas.width, canvas.height);\n\t\tcontext.font = font;\n\t\tcontext.textAlign = 'center';\n\t\tcontext.fillStyle = textColor;\n\t\tcontext.fillText(faces[index].toUpperCase(), 64, 76);\n\n\t\tconst texture = new THREE.CanvasTexture(canvas);\n\t\ttexture.anisotropy = gl.capabilities.getMaxAnisotropy() || 1;\n\n\t\treturn texture;\n\t});\n\n\tconstructor() {\n\t\textend({ MeshBasicMaterial });\n\t}\n}\n\n@Component({\n\tselector: 'viewcube-face-cube',\n\ttemplate: `\n\t\t<ngt-mesh #mesh (click)=\"internalOnClick($any($event))\">\n\t\t\t<ngt-box-geometry />\n\t\t\t@for (face of count; track $index) {\n\t\t\t\t<viewcube-face-material [index]=\"$index\" [hover]=\"hover() === $index\" [options]=\"options()\" />\n\t\t\t}\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [FaceMaterial],\n})\nexport class FaceCube {\n\toptions = input({} as Partial<NgtsViewcubeCommonOptions>);\n\tonClick = input<NgtEventHandlers['click']>();\n\n\tprivate meshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprivate gizmoHelper = inject(NgtsGizmoHelperImpl);\n\n\tprotected hover = signal(-1);\n\tprotected count = Array.from({ length: 6 });\n\n\tconstructor() {\n\t\textend({ Mesh, BoxGeometry });\n\n\t\t// TODO: (chau) remove this when event binding syntax no longer trigger cdr\n\t\tinjectObjectEvents(this.meshRef, {\n\t\t\tpointerout: (ev) => {\n\t\t\t\tev.stopPropagation();\n\t\t\t\tthis.hover.set(-1);\n\t\t\t},\n\t\t\tpointermove: (ev) => {\n\t\t\t\tev.stopPropagation();\n\t\t\t\tev.faceIndex != null && this.hover.set(Math.floor(ev.faceIndex / 2));\n\t\t\t},\n\t\t});\n\t}\n\n\tprotected internalOnClick(event: NgtThreeEvent<MouseEvent>) {\n\t\tconst onClick = this.onClick();\n\t\tif (onClick) onClick(event);\n\t\telse {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.gizmoHelper.tweenCamera(event.face!.normal);\n\t\t}\n\t}\n\n\tprotected readonly Math = Math;\n}\n\n@Component({\n\tselector: 'viewcube-edge-cube',\n\ttemplate: `\n\t\t<ngt-mesh #mesh [scale]=\"1.01\" [position]=\"position()\" (click)=\"internalOnClick($any($event))\">\n\t\t\t<ngt-mesh-basic-material transparent [opacity]=\"0.6\" [color]=\"color()\" [visible]=\"hover()\" />\n\t\t\t<ngt-box-geometry *args=\"dimensions()\" />\n\t\t</ngt-mesh>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class EdgeCube {\n\tdimensions = input.required<XYZ>();\n\tposition = input.required<THREE.Vector3>();\n\thoverColor = input(colors.hover, {\n\t\ttransform: (value: string | undefined) => {\n\t\t\tif (value === undefined) return colors.hover;\n\t\t\treturn value;\n\t\t},\n\t});\n\tonClick = input<NgtEventHandlers['click']>();\n\n\tprivate meshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprivate gizmoHelper = inject(NgtsGizmoHelperImpl);\n\n\tprotected hover = signal(false);\n\tprotected color = computed(() => (this.hover() ? this.hoverColor() : 'white'));\n\n\tconstructor() {\n\t\textend({ Mesh, BoxGeometry, MeshBasicMaterial });\n\n\t\t// TODO: (chau) remove this when event binding syntax no longer trigger cdr\n\t\tinjectObjectEvents(this.meshRef, {\n\t\t\tpointerout: (ev) => {\n\t\t\t\tev.stopPropagation();\n\t\t\t\tthis.hover.set(false);\n\t\t\t},\n\t\t\tpointerover: (ev) => {\n\t\t\t\tev.stopPropagation();\n\t\t\t\tthis.hover.set(true);\n\t\t\t},\n\t\t});\n\t}\n\n\tprotected internalOnClick(event: NgtThreeEvent<MouseEvent>) {\n\t\tconst onClick = this.onClick();\n\t\tif (onClick) onClick(event);\n\t\telse {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.gizmoHelper.tweenCamera(this.position());\n\t\t}\n\t}\n}\n\nexport type NgtsGizmoViewcubeOptions = Partial<NgtsViewcubeCommonOptions>;\n\n@Component({\n\tselector: 'ngts-gizmo-viewcube',\n\ttemplate: `\n\t\t<ngt-group [scale]=\"60\">\n\t\t\t<viewcube-face-cube [options]=\"options()\" [onClick]=\"onClick\" />\n\t\t\t@for (edge of edges; track $index) {\n\t\t\t\t<viewcube-edge-cube\n\t\t\t\t\t[position]=\"edge\"\n\t\t\t\t\t[dimensions]=\"edgeDimensions[$index]\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t[hoverColor]=\"hoverColor()\"\n\t\t\t\t/>\n\t\t\t}\n\t\t\t@for (corner of corners; track $index) {\n\t\t\t\t<viewcube-edge-cube\n\t\t\t\t\t[position]=\"corner\"\n\t\t\t\t\t[dimensions]=\"cornerDimensions\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t[hoverColor]=\"hoverColor()\"\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: [FaceCube, EdgeCube],\n})\nexport class NgtsGizmoViewcube {\n\toptions = input({} as Partial<NgtsGizmoViewcubeOptions>);\n\tclick = output<NgtThreeEvent<MouseEvent>>();\n\n\tprotected hoverColor = pick(this.options, 'hoverColor');\n\n\tprotected corners: THREE.Vector3[] = [\n\t\t[1, 1, 1],\n\t\t[1, 1, -1],\n\t\t[1, -1, 1],\n\t\t[1, -1, -1],\n\t\t[-1, 1, 1],\n\t\t[-1, 1, -1],\n\t\t[-1, -1, 1],\n\t\t[-1, -1, -1],\n\t].map(this.makePositionVector);\n\tprotected cornerDimensions: XYZ = [0.25, 0.25, 0.25];\n\tprotected edges: THREE.Vector3[] = [\n\t\t[1, 1, 0],\n\t\t[1, 0, 1],\n\t\t[1, 0, -1],\n\t\t[1, -1, 0],\n\t\t[0, 1, 1],\n\t\t[0, 1, -1],\n\t\t[0, -1, 1],\n\t\t[0, -1, -1],\n\t\t[-1, 1, 0],\n\t\t[-1, 0, 1],\n\t\t[-1, 0, -1],\n\t\t[-1, -1, 0],\n\t].map(this.makePositionVector);\n\tprotected edgeDimensions = this.edges.map(\n\t\t(edge) => edge.toArray().map((axis: number): number => (axis == 0 ? 0.5 : 0.25)) as XYZ,\n\t);\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tprotected get onClick() {\n\t\tif (hasListener(this.click)) return getEmitter(this.click);\n\t\treturn undefined;\n\t}\n\n\tprivate makePositionVector(xyz: number[]) {\n\t\treturn new THREE.Vector3(...xyz).multiplyScalar(0.38);\n\t}\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport {\n\textend,\n\tgetEmitter,\n\thasListener,\n\tinjectObjectEvents,\n\tinjectStore,\n\tNgtArgs,\n\tNgtEuler,\n\tNgtEventHandlers,\n\tNgtThreeElements,\n\tNgtThreeEvent,\n\tNgtVector3,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { BoxGeometry, Group, Mesh, MeshBasicMaterial, Sprite, SpriteMaterial } from 'three';\nimport { NgtsGizmoHelperImpl } from './gizmo-helper';\n\n@Component({\n\tselector: 'viewport-axis',\n\ttemplate: `\n\t\t<ngt-group [rotation]=\"rotation()\">\n\t\t\t<ngt-mesh [position]=\"[0.4, 0, 0]\">\n\t\t\t\t<ngt-box-geometry *args=\"scale()\" />\n\t\t\t\t<ngt-mesh-basic-material [color]=\"color()\" [toneMapped]=\"false\" />\n\t\t\t</ngt-mesh>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class Axis {\n\tscale = input([0.8, 0.05, 0.05], {\n\t\ttransform: (value: [number, number, number] | undefined) => {\n\t\t\tif (value === undefined) return [0.8, 0.05, 0.05];\n\t\t\treturn value;\n\t\t},\n\t});\n\tcolor = input<THREE.ColorRepresentation>();\n\trotation = input<NgtEuler>([0, 0, 0]);\n\n\tconstructor() {\n\t\textend({ Group, Mesh, BoxGeometry, MeshBasicMaterial });\n\t}\n}\n\n@Component({\n\tselector: 'viewport-axis-head',\n\ttemplate: `\n\t\t<ngt-sprite #sprite [scale]=\"scale()\" [position]=\"position()\">\n\t\t\t<ngt-sprite-material\n\t\t\t\t[map]=\"texture()\"\n\t\t\t\t[alphaTest]=\"0.3\"\n\t\t\t\t[opacity]=\"label() ? 1 : 0.75\"\n\t\t\t\t[toneMapped]=\"false\"\n\t\t\t/>\n\t\t</ngt-sprite>\n\t`,\n\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AxisHead {\n\tarcStyle = input.required<string>();\n\tposition = input.required<NgtVector3>();\n\tlabel = input<string>();\n\tlabelColor = input('#000');\n\taxisHeadScale = input(1);\n\tdisabled = input(false);\n\tfont = input('18px Inter var, Arial, sans-serif');\n\tonClick = input<NgtEventHandlers['click']>();\n\n\tprivate spriteRef = viewChild.required<ElementRef<THREE.Sprite>>('sprite');\n\n\tprivate document = inject(DOCUMENT);\n\tprivate gizmoHelper = inject(NgtsGizmoHelperImpl);\n\tprivate store = injectStore();\n\n\tprotected texture = computed(() => {\n\t\tconst [arcStyle, label, labelColor, font, gl] = [\n\t\t\tthis.arcStyle(),\n\t\t\tthis.label(),\n\t\t\tthis.labelColor(),\n\t\t\tthis.font(),\n\t\t\tthis.store.gl(),\n\t\t];\n\n\t\tconst canvas = this.document.createElement('canvas');\n\t\tcanvas.width = 64;\n\t\tcanvas.height = 64;\n\n\t\tconst context = canvas.getContext('2d')!;\n\t\tcontext.beginPath();\n\t\tcontext.arc(32, 32, 16, 0, 2 * Math.PI);\n\t\tcontext.closePath();\n\t\tcontext.fillStyle = arcStyle;\n\t\tcontext.fill();\n\n\t\tif (label) {\n\t\t\tcontext.font = font;\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.fillStyle = labelColor;\n\t\t\tcontext.fillText(label, 32, 41);\n\t\t}\n\n\t\tconst texture = new THREE.CanvasTexture(canvas);\n\t\ttexture.anisotropy = gl.capabilities.getMaxAnisotropy() || 1;\n\t\treturn texture;\n\t});\n\n\tprotected active = signal(false);\n\tprotected scale = computed(() => (this.label() ? 1 : 0.75) * (this.active() ? 1.2 : 1) * this.axisHeadScale());\n\n\tconstructor() {\n\t\textend({ Sprite, SpriteMaterial });\n\n\t\t// TODO: (chau) remove this when event binding syntax no longer trigger cdr\n\t\tinjectObjectEvents(this.spriteRef, {\n\t\t\tpointerover: this.onPointerOver.bind(this),\n\t\t\tpointerout: this.onPointerOut.bind(this),\n\t\t\tpointerdown: this.onPointerDown.bind(this),\n\t\t});\n\t}\n\n\tprotected onPointerOver(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (this.disabled()) return;\n\n\t\tevent.stopPropagation();\n\t\tthis.active.set(true);\n\t}\n\n\tprotected onPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (this.disabled()) return;\n\n\t\tconst onClick = this.onClick();\n\t\tif (onClick) onClick(event);\n\t\telse {\n\t\t\tevent.stopPropagation();\n\t\t\tthis.active.set(false);\n\t\t}\n\t}\n\n\tprotected onPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tif (this.disabled()) return;\n\t\tevent.stopPropagation();\n\t\tthis.gizmoHelper.tweenCamera(event.object.position);\n\t}\n}\n\nexport interface NgtsGizmoViewportOptions extends Partial<NgtThreeElements['ngt-group']> {\n\taxisColors: [string, string, string];\n\taxisScale?: [number, number, number];\n\tlabels: [string, string, string];\n\taxisHeadScale: number;\n\tlabelColor: string;\n\thideNegativeAxes: boolean;\n\thideAxisHeads: boolean;\n\tdisabled: boolean;\n\tfont: string;\n}\n\nconst defaultOptions: NgtsGizmoViewportOptions = {\n\taxisColors: ['#ff2060', '#20df80', '#2080ff'],\n\tlabels: ['X', 'Y', 'Z'],\n\taxisHeadScale: 1,\n\tlabelColor: '#000',\n\thideNegativeAxes: false,\n\thideAxisHeads: false,\n\tdisabled: false,\n\tfont: '18px Inter var, Arial, sans-serif',\n};\n\n@Component({\n\tselector: 'ngts-gizmo-viewport',\n\ttemplate: `\n\t\t@let _axisScale = axisScale();\n\t\t@let _axisHeadScale = axisHeadScale();\n\t\t@let _labels = labels();\n\t\t@let _labelColor = labelColor();\n\t\t@let _axisColors = axisColors();\n\t\t@let _font = font();\n\t\t@let _disabled = disabled();\n\n\t\t<ngt-group [scale]=\"40\" [parameters]=\"parameters()\">\n\t\t\t<viewport-axis [color]=\"_axisColors[0]\" [rotation]=\"[0, 0, 0]\" [scale]=\"_axisScale\" />\n\t\t\t<viewport-axis [color]=\"_axisColors[1]\" [rotation]=\"[0, 0, Math.PI / 2]\" [scale]=\"_axisScale\" />\n\t\t\t<viewport-axis [color]=\"_axisColors[2]\" [rotation]=\"[0, -Math.PI / 2, 0]\" [scale]=\"_axisScale\" />\n\n\t\t\t@if (!hideAxisHeads()) {\n\t\t\t\t<viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"_axisColors[0]\"\n\t\t\t\t\t[position]=\"[1, 0, 0]\"\n\t\t\t\t\t[label]=\"_labels[0]\"\n\t\t\t\t\t[labelColor]=\"_labelColor\"\n\t\t\t\t\t[axisHeadScale]=\"_axisHeadScale\"\n\t\t\t\t\t[disabled]=\"_disabled\"\n\t\t\t\t\t[font]=\"_font\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t/>\n\t\t\t\t<viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"_axisColors[1]\"\n\t\t\t\t\t[position]=\"[0, 1, 0]\"\n\t\t\t\t\t[label]=\"_labels[1]\"\n\t\t\t\t\t[labelColor]=\"_labelColor\"\n\t\t\t\t\t[axisHeadScale]=\"_axisHeadScale\"\n\t\t\t\t\t[disabled]=\"_disabled\"\n\t\t\t\t\t[font]=\"_font\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t/>\n\t\t\t\t<viewport-axis-head\n\t\t\t\t\t[arcStyle]=\"_axisColors[2]\"\n\t\t\t\t\t[position]=\"[0, 0, 1]\"\n\t\t\t\t\t[label]=\"_labels[2]\"\n\t\t\t\t\t[labelColor]=\"_labelColor\"\n\t\t\t\t\t[axisHeadScale]=\"_axisHeadScale\"\n\t\t\t\t\t[disabled]=\"_disabled\"\n\t\t\t\t\t[font]=\"_font\"\n\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t/>\n\n\t\t\t\t@if (!hideNegativeAxes()) {\n\t\t\t\t\t<viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"_axisColors[0]\"\n\t\t\t\t\t\t[position]=\"[-1, 0, 0]\"\n\t\t\t\t\t\t[axisHeadScale]=\"_axisHeadScale\"\n\t\t\t\t\t\t[disabled]=\"_disabled\"\n\t\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t/>\n\t\t\t\t\t<viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"_axisColors[1]\"\n\t\t\t\t\t\t[position]=\"[0, -1, 0]\"\n\t\t\t\t\t\t[axisHeadScale]=\"_axisHeadScale\"\n\t\t\t\t\t\t[disabled]=\"_disabled\"\n\t\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t/>\n\t\t\t\t\t<viewport-axis-head\n\t\t\t\t\t\t[arcStyle]=\"_axisColors[2]\"\n\t\t\t\t\t\t[position]=\"[0, 0, -1]\"\n\t\t\t\t\t\t[axisHeadScale]=\"_axisHeadScale\"\n\t\t\t\t\t\t[disabled]=\"_disabled\"\n\t\t\t\t\t\t[onClick]=\"onClick\"\n\t\t\t\t\t/>\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: [Axis, AxisHead],\n})\nexport class NgtsGizmoViewport {\n\tprotected readonly Math = Math;\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tprotected parameters = omit(this.options, [\n\t\t'axisColors',\n\t\t'axisScale',\n\t\t'labels',\n\t\t'axisHeadScale',\n\t\t'labelColor',\n\t\t'hideNegativeAxes',\n\t\t'hideAxisHeads',\n\t\t'disabled',\n\t\t'font',\n\t]);\n\tclick = output<NgtThreeEvent<MouseEvent>>();\n\n\tprotected axisColors = pick(this.options, 'axisColors');\n\tprotected axisScale = pick(this.options, 'axisScale');\n\tprotected hideAxisHeads = pick(this.options, 'hideAxisHeads');\n\tprotected hideNegativeAxes = pick(this.options, 'hideNegativeAxes');\n\tprotected labels = pick(this.options, 'labels');\n\tprotected axisHeadScale = pick(this.options, 'axisHeadScale');\n\tprotected labelColor = pick(this.options, 'labelColor');\n\tprotected disabled = pick(this.options, 'disabled');\n\tprotected font = pick(this.options, 'font');\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tprotected get onClick() {\n\t\tif (hasListener(this.click)) return getEmitter(this.click);\n\t\treturn undefined;\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectObjectEvents, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML } from 'angular-three-soba/misc';\nimport * as THREE from 'three';\nimport { ConeGeometry, CylinderGeometry, Group, Mesh, MeshBasicMaterial } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new THREE.Vector3();\nconst vec2 = new THREE.Vector3();\n\nexport function calculateOffset(\n\tclickPoint: THREE.Vector3,\n\tnormal: THREE.Vector3,\n\trayStart: THREE.Vector3,\n\trayDir: THREE.Vector3,\n) {\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.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2.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 THREE.Vector3(0, 1, 0);\nconst offsetMatrix = new THREE.Matrix4();\n\n@Component({\n\tselector: 'ngts-axis-arrow',\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ngt-group #innerGroup [matrix]=\"matrixL()\" [matrixAutoUpdate]=\"false\">\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\thtmlContent\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\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\n\t\t\t\t\t[raycast]=\"null\"\n\t\t\t\t\t[position]=\"[0, cylinderLength() + coneLength() / 2.0, 0]\"\n\t\t\t\t\t[renderOrder]=\"500\"\n\t\t\t\t>\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\ttransparent\n\t\t\t\t\t\tpolygonOffset\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[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],\n})\nexport class NgtsAxisArrow {\n\tprotected readonly DoubleSide = THREE.DoubleSide;\n\n\tdirection = input.required<THREE.Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tprivate groupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tprivate innerGroupRef = viewChild.required<ElementRef<THREE.Group>>('innerGroup');\n\tprivate annotationRef = viewChild<'string', ElementRef<HTMLElement>>('annotation', { read: ElementRef });\n\n\tprotected pivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: THREE.Vector3; dir: THREE.Vector3 } | null = null;\n\tprivate offset0 = 0;\n\n\tprotected color = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\n\tprotected coneWidth = 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\tprotected coneLength = computed(() => (this.pivotControls.fixed() ? 0.2 : this.pivotControls.scale() / 5));\n\tprotected cylinderLength = computed(() =>\n\t\tthis.pivotControls.fixed() ? 1 - this.coneLength() : this.pivotControls.scale() - this.coneLength(),\n\t);\n\tprotected matrixL = computed(() => {\n\t\tconst quaternion = new THREE.Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new THREE.Matrix4().makeRotationFromQuaternion(quaternion);\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, ConeGeometry, CylinderGeometry, MeshBasicMaterial });\n\n\t\t// TODO: (chau) remove this when event binding syntax no longer trigger cdr\n\t\tinjectObjectEvents(this.innerGroupRef, {\n\t\t\tpointerdown: this.onPointerDown.bind(this),\n\t\t\tpointermove: this.onPointerMove.bind(this),\n\t\t\tpointerup: this.onPointerUp.bind(this),\n\t\t\tpointerout: this.onPointerOut.bind(this),\n\t\t});\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.store.controls() as unknown as { enabled: boolean },\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 THREE.Matrix4().extractRotation(group.matrixWorld);\n\t\tconst origin = new THREE.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\n\t\tif (controls) controls.enabled = false;\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] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.store.controls() as unknown as { enabled: boolean },\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.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\n\t\tif (controls) controls.enabled = true;\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\tviewChild,\n} from '@angular/core';\nimport { extend, injectObjectEvents, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML } from 'angular-three-soba/misc';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst clickDir = new THREE.Vector3();\nconst intersectionDir = new THREE.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(\n\tclickPoint: THREE.Vector3,\n\tintersectionPoint: THREE.Vector3,\n\torigin: THREE.Vector3,\n\te1: THREE.Vector3,\n\te2: THREE.Vector3,\n) {\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 THREE.Matrix4();\nconst posNew = new THREE.Vector3();\nconst ray = new THREE.Ray();\nconst intersection = new THREE.Vector3();\n\n@Component({\n\tselector: 'ngts-axis-rotator',\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: [r(), r(), 0] }\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t#annotation\n\t\t\t\t\t\thtmlContent\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]=\"{\n\t\t\t\t\tlineWidth: pivotControls.lineWidth() * 4,\n\t\t\t\t\tvisible: false,\n\t\t\t\t\tuserData: pivotControls.userData(),\n\t\t\t\t}\"\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],\n})\nexport class NgtsAxisRotator {\n\tprotected readonly DoubleSide = THREE.DoubleSide;\n\n\tdir1 = input.required<THREE.Vector3>();\n\tdir2 = input.required<THREE.Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tannotationRef = viewChild<string, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tprotected pivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\n\tprotected hovered = signal(false);\n\tprivate angle = 0;\n\tprivate angle0 = 0;\n\tprivate clickInfo: {\n\t\tclickPoint: THREE.Vector3;\n\t\torigin: THREE.Vector3;\n\t\te1: THREE.Vector3;\n\t\te2: THREE.Vector3;\n\t\tnormal: THREE.Vector3;\n\t\tplane: THREE.Plane;\n\t} | null = null;\n\n\tprotected matrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new THREE.Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\tprotected r = computed(() => (this.pivotControls.fixed() ? 0.65 : this.pivotControls.scale() * 0.65));\n\tprotected arc = computed(() => {\n\t\tconst segments = 32;\n\t\tconst points: THREE.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 THREE.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\n\t\t// TODO: (chau) remove this when event binding syntax no longer trigger cdr\n\t\tinjectObjectEvents(this.groupRef, {\n\t\t\tpointerdown: this.onPointerDown.bind(this),\n\t\t\tpointermove: this.onPointerMove.bind(this),\n\t\t\tpointerup: this.onPointerUp.bind(this),\n\t\t\tpointerout: this.onPointerOut.bind(this),\n\t\t});\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.store.controls() as unknown as { enabled: boolean },\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 THREE.Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new THREE.Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new THREE.Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new THREE.Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new THREE.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) controls.enabled = false;\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] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.store.controls() as unknown as { enabled: boolean },\n\t\t];\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\n\t\tif (controls) controls.enabled = true;\n\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\tviewChild,\n} from '@angular/core';\nimport { extend, injectObjectEvents, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML } from 'angular-three-soba/misc';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nfunction decomposeIntoBasis(e1: THREE.Vector3, e2: THREE.Vector3, offset: THREE.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 THREE.Ray();\nconst intersection = new THREE.Vector3();\nconst offsetMatrix = new THREE.Matrix4();\n\n@Component({\n\tselector: 'ngts-plane-slider',\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\thtmlContent\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 #mesh visible [scale]=\"length()\" [userData]=\"pivotControls.userData()\">\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\ttransparent\n\t\t\t\t\t\tpolygonOffset\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[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, NgtsLine],\n})\nexport class NgtsPlaneSlider {\n\tprotected readonly DoubleSide = THREE.DoubleSide;\n\n\tdir1 = input.required<THREE.Vector3>();\n\tdir2 = input.required<THREE.Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tprivate meshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\tannotationRef = viewChild<string, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tprotected pivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: THREE.Vector3; e1: THREE.Vector3; e2: THREE.Vector3; plane: THREE.Plane } | null =\n\t\tnull;\n\tprivate offsetX0 = 0;\n\tprivate offsetY0 = 0;\n\n\tprotected matrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new THREE.Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\n\tprotected pos1 = computed(() => (this.pivotControls.fixed() ? 1 / 7 : this.pivotControls.scale() / 7));\n\tprotected length = computed(() => (this.pivotControls.fixed() ? 0.225 : this.pivotControls.scale() * 0.225));\n\tprotected color = 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 THREE.Vector3(0, 0, 0),\n\t\t\tnew THREE.Vector3(0, length, 0),\n\t\t\tnew THREE.Vector3(length, length, 0),\n\t\t\tnew THREE.Vector3(length, 0, 0),\n\t\t\tnew THREE.Vector3(0, 0, 0),\n\t\t];\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, PlaneGeometry, MeshBasicMaterial });\n\n\t\t// TODO: (chau) remove this when event binding syntax no longer trigger cdr\n\t\tinjectObjectEvents(this.meshRef, {\n\t\t\tpointerdown: this.onPointerDown.bind(this),\n\t\t\tpointermove: this.onPointerMove.bind(this),\n\t\t\tpointerup: this.onPointerUp.bind(this),\n\t\t\tpointerout: this.onPointerOut.bind(this),\n\t\t});\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.store.controls() as unknown as { enabled: boolean },\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 THREE.Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new THREE.Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new THREE.Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new THREE.Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new THREE.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\n\t\tif (controls) controls.enabled = false;\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] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.store.controls() as unknown as { enabled: boolean },\n\t\t];\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\n\t\tif (controls) controls.enabled = true;\n\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\tviewChild,\n} from '@angular/core';\nimport { extend, injectObjectEvents, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { calculateScaleFactor, NgtsHTML } from 'angular-three-soba/misc';\nimport * as THREE from 'three';\nimport { Group, Mesh, MeshBasicMaterial, SphereGeometry } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new THREE.Vector3();\nconst vec2 = new THREE.Vector3();\n\nexport function calculateOffset(\n\tclickPoint: THREE.Vector3,\n\tnormal: THREE.Vector3,\n\trayStart: THREE.Vector3,\n\trayDir: THREE.Vector3,\n) {\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.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2.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 THREE.Vector3(0, 1, 0);\nconst scaleV = new THREE.Vector3();\nconst scaleMatrix = new THREE.Matrix4();\n\n@Component({\n\tselector: 'ngts-scaling-sphere',\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ngt-group #innerGroup [matrix]=\"matrixL()\" [matrixAutoUpdate]=\"false\">\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\thtmlContent\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#mesh\n\t\t\t\t\t[position]=\"[0, position(), 0]\"\n\t\t\t\t\t[renderOrder]=\"500\"\n\t\t\t\t\t[userData]=\"pivotControls.userData()\"\n\t\t\t\t>\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\ttransparent\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\tpolygonOffset\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, NgtArgs],\n})\nexport class NgtsScalingSphere {\n\tdirection = input.required<THREE.Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tprivate innerGroupRef = viewChild.required<ElementRef<THREE.Group>>('innerGroup');\n\tannotationRef = viewChild<string, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\tmeshRef = viewChild.required<ElementRef<THREE.Mesh>>('mesh');\n\n\tprotected pivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\n\tprivate hovered = signal(false);\n\tprivate scale0 = 1;\n\tprivate scaleCurrent = 1;\n\tprivate clickInfo: {\n\t\tclickPoint: THREE.Vector3;\n\t\tdir: THREE.Vector3;\n\t\tmPLG: THREE.Matrix4;\n\t\tmPLGInv: THREE.Matrix4;\n\t\toffsetMultiplier: number;\n\t} | null = null;\n\n\tprotected position = computed(() => (this.pivotControls.fixed() ? 1.2 : 1.2 * this.pivotControls.scale()));\n\tprotected radius = 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 THREE.Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new THREE.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\n\t\t// TODO: (chau) remove this when event binding syntax no longer trigger cdr\n\t\tinjectObjectEvents(this.innerGroupRef, {\n\t\t\tpointerdown: this.onPointerDown.bind(this),\n\t\t\tpointermove: this.onPointerMove.bind(this),\n\t\t\tpointerup: this.onPointerUp.bind(this),\n\t\t\tpointerout: this.onPointerOut.bind(this),\n\t\t});\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.store.controls() as unknown as { enabled: boolean },\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.store.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 THREE.Matrix4().extractRotation(group.matrixWorld);\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new THREE.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) controls.enabled = false;\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\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.store.controls() as unknown as { enabled: boolean },\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\n\t\tif (controls) controls.enabled = true;\n\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\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getInstanceState, injectBeforeRender, injectStore, is, NgtAnyRecord, omit, pick } from 'angular-three';\nimport { calculateScaleFactor } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport { Group } 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: THREE.Vector3;\n\tdirections: THREE.Vector3[];\n}\n\nexport interface OnDragParameters {\n\tl: THREE.Matrix4;\n\tdeltaL: THREE.Matrix4;\n\tw: THREE.Matrix4;\n\tdeltaW: THREE.Matrix4;\n}\n\nconst mL0 = new THREE.Matrix4();\nconst mW0 = new THREE.Matrix4();\nconst mP = new THREE.Matrix4();\nconst mPInv = new THREE.Matrix4();\nconst mW = new THREE.Matrix4();\nconst mL = new THREE.Matrix4();\nconst mL0Inv = new THREE.Matrix4();\nconst mdL = new THREE.Matrix4();\nconst mG = new THREE.Matrix4();\n\nconst bb = new THREE.Box3();\nconst bbObj = new THREE.Box3();\nconst vCenter = new THREE.Vector3();\nconst vSize = new THREE.Vector3();\nconst vAnchorOffset = new THREE.Vector3();\nconst vPosition = new THREE.Vector3();\nconst vScale = new THREE.Vector3();\n\nconst xDir = new THREE.Vector3(1, 0, 0);\nconst yDir = new THREE.Vector3(0, 1, 0);\nconst zDir = new THREE.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?: THREE.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\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@let _disableAxes = disableAxes();\n\t\t\t\t\t\t@let _disableSliders = disableSliders();\n\t\t\t\t\t\t@let _disableRotations = disableRotations();\n\t\t\t\t\t\t@let _disableScaling = disableScaling();\n\t\t\t\t\t\t@let _activeAxes = activeAxes();\n\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\tprotected parameters = 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\tprivate autoTransform = pick(this.options, 'autoTransform');\n\tprotected matrix = pick(this.options, 'matrix');\n\tprotected offset = pick(this.options, 'offset');\n\tprotected rotation = pick(this.options, 'rotation');\n\tprotected visible = pick(this.options, 'visible');\n\tprotected enabled = pick(this.options, 'enabled');\n\tprotected disableAxes = pick(this.options, 'disableAxes');\n\tprotected disableSliders = pick(this.options, 'disableSliders');\n\tprotected disableRotations = pick(this.options, 'disableRotations');\n\tprotected disableScaling = pick(this.options, 'disableScaling');\n\tprotected activeAxes = pick(this.options, 'activeAxes');\n\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\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\n\tprotected xDir = xDir;\n\tprotected yDir = yDir;\n\tprotected zDir = zDir;\n\n\tparentRef = viewChild.required<ElementRef<THREE.Group>>('parent');\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\tgizmoRef = viewChild.required<ElementRef<THREE.Group>>('gizmo');\n\tchildrenRef = viewChild.required<ElementRef<THREE.Group>>('children');\n\n\tprivate store = injectStore();\n\n\ttranslation: [number, number, number] = [0, 0, 0];\n\n\tprivate anchor = pick(this.options, 'anchor');\n\tprivate cameraScale = new THREE.Vector3(1, 1, 1);\n\tprivate gizmoScale = new THREE.Vector3(1, 1, 1);\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\teffect(() => {\n\t\t\tconst anchor = this.anchor();\n\t\t\tif (!anchor) return;\n\n\t\t\tconst childrenContainer = this.childrenRef().nativeElement;\n\t\t\tconst instanceState = getInstanceState(childrenContainer);\n\t\t\tif (!instanceState) return;\n\n\t\t\tconst [gizmo, offset, invalidate] = [\n\t\t\t\tthis.gizmoRef().nativeElement,\n\t\t\t\tthis.offset(),\n\t\t\t\tthis.store.invalidate(),\n\t\t\t\tthis.options(),\n\t\t\t\t[instanceState.objects(), instanceState.nonObjects()],\n\t\t\t];\n\t\t\tchildrenContainer.updateWorldMatrix(true, true);\n\n\t\t\tmPInv.copy(childrenContainer.matrixWorld).invert();\n\t\t\tbb.makeEmpty();\n\n\t\t\tchildrenContainer.traverse((obj) => {\n\t\t\t\tif (!(obj as THREE.Mesh).geometry) return;\n\t\t\t\tif (!(obj as THREE.Mesh).geometry.boundingBox) (obj as THREE.Mesh).geometry.computeBoundingBox();\n\t\t\t\tmL.copy(obj.matrixWorld).premultiply(mPInv);\n\t\t\t\tconst boundingBox = (obj as THREE.Mesh).geometry.boundingBox;\n\t\t\t\tif (boundingBox) {\n\t\t\t\t\tbbObj.copy(boundingBox);\n\t\t\t\t\tbbObj.applyMatrix4(mL);\n\t\t\t\t\tbb.union(bbObj);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvCenter.copy(bb.max).add(bb.min).multiplyScalar(0.5);\n\t\t\tvSize.copy(bb.max).sub(bb.min).multiplyScalar(0.5);\n\t\t\tvAnchorOffset\n\t\t\t\t.copy(vSize)\n\t\t\t\t.multiply(new THREE.Vector3(...anchor))\n\t\t\t\t.add(vCenter);\n\t\t\tvPosition.set(...offset).add(vAnchorOffset);\n\t\t\tgizmo.position.copy(vPosition);\n\t\t\tinvalidate();\n\t\t});\n\n\t\tconst vec = new THREE.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 (is.three<THREE.Matrix4>(matrix, 'isMatrix4')) {\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: THREE.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 {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport {\n\textend,\n\tgetInstanceState,\n\tinjectStore,\n\tNgtArgs,\n\tNgtThreeElement,\n\tNgtThreeElements,\n\tomit,\n\tpick,\n\tresolveRef,\n} from 'angular-three';\nimport * as THREE from 'three';\nimport { Group } from 'three';\nimport { TransformControls } from 'three-stdlib';\n\ninterface ControlsProto {\n\tenabled: boolean;\n}\n\nexport type NgtsTransformControlsObject = NgtThreeElement<typeof TransformControls>;\n\nexport type NgtsTransformControlsOptions = Partial<NgtsTransformControlsObject> &\n\tPartial<NgtThreeElements['ngt-group']> & {\n\t\tenabled?: boolean;\n\t\taxis?: string | null;\n\t\tdomElement?: HTMLElement;\n\t\tmode?: 'translate' | 'rotate' | 'scale';\n\t\ttranslationSnap?: number | null;\n\t\trotationSnap?: number | null;\n\t\tscaleSnap?: number | null;\n\t\tspace?: 'world' | 'local';\n\t\tsize?: number;\n\t\tshowX?: boolean;\n\t\tshowY?: boolean;\n\t\tshowZ?: boolean;\n\t\tcamera?: THREE.Camera;\n\t\tmakeDefault?: boolean;\n\t};\n\n@Component({\n\tselector: 'ngts-transform-controls',\n\ttemplate: `\n\t\t<ngt-primitive *args=\"[controls()]\" [parameters]=\"controlsOptions()\" />\n\n\t\t<ngt-group #group [parameters]=\"parameters()\">\n\t\t\t<ng-content />\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs],\n})\nexport class NgtsTransformControls {\n\tobject = input<THREE.Object3D | ElementRef<THREE.Object3D> | undefined | null>(null);\n\toptions = input({} as Partial<NgtsTransformControlsOptions>);\n\tprotected parameters = omit(this.options, [\n\t\t'enabled',\n\t\t'axis',\n\t\t'mode',\n\t\t'translationSnap',\n\t\t'rotationSnap',\n\t\t'scaleSnap',\n\t\t'space',\n\t\t'size',\n\t\t'showX',\n\t\t'showY',\n\t\t'showZ',\n\t\t'domElement',\n\t\t'makeDefault',\n\t\t'camera',\n\t]);\n\n\tprotected controlsOptions = pick(this.options, [\n\t\t'enabled',\n\t\t'axis',\n\t\t'mode',\n\t\t'translationSnap',\n\t\t'rotationSnap',\n\t\t'scaleSnap',\n\t\t'space',\n\t\t'size',\n\t\t'showX',\n\t\t'showY',\n\t\t'showZ',\n\t]);\n\n\tprivate camera = pick(this.options, 'camera');\n\tprivate domElement = pick(this.options, 'domElement');\n\tprivate makeDefault = pick(this.options, 'makeDefault');\n\n\tchange = output<THREE.Event>();\n\tmouseDown = output<THREE.Event>();\n\tmouseUp = output<THREE.Event>();\n\tobjectChange = output<THREE.Event>();\n\n\tgroupRef = viewChild.required<ElementRef<THREE.Group>>('group');\n\n\tprivate store = injectStore();\n\n\tcontrols = computed(() => {\n\t\tlet camera = this.camera();\n\t\tif (!camera) {\n\t\t\tcamera = this.store.camera();\n\t\t}\n\n\t\tlet domElement = this.domElement();\n\t\tif (!domElement) {\n\t\t\tdomElement = this.store.events().connected || this.store.gl.domElement();\n\t\t}\n\n\t\treturn new TransformControls(camera, domElement);\n\t});\n\n\tconstructor() {\n\t\textend({ Group });\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.updateDefaultControlsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.attachControlsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.disableDefaultControlsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t\teffect((onCleanup) => {\n\t\t\tconst cleanup = this.setupControlsEventsEffect();\n\t\t\tonCleanup(() => cleanup?.());\n\t\t});\n\t}\n\n\tprivate attachControlsEffect() {\n\t\tconst group = this.groupRef().nativeElement;\n\t\tif (!group) return;\n\n\t\tconst instanceState = getInstanceState(group);\n\t\tif (!instanceState) return;\n\n\t\tconst [object, controls] = [resolveRef(this.object()), this.controls(), instanceState.objects()];\n\t\tif (object) {\n\t\t\tcontrols.attach(object);\n\t\t} else {\n\t\t\tcontrols.attach(group);\n\t\t}\n\n\t\treturn () => controls.detach();\n\t}\n\n\tprivate disableDefaultControlsEffect() {\n\t\tconst defaultControls = this.store.controls() as unknown as ControlsProto;\n\t\tif (!defaultControls) return;\n\n\t\tconst controls = this.controls();\n\t\tconst callback = (event: any) => {\n\t\t\tdefaultControls.enabled = !event.value;\n\t\t};\n\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('dragging-changed', callback);\n\t\treturn () => {\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('dragging-changed', callback);\n\t\t};\n\t}\n\n\tprivate setupControlsEventsEffect() {\n\t\tconst [controls, invalidate] = [this.controls(), this.store.invalidate()];\n\t\tconst onChange = (event: THREE.Event) => {\n\t\t\tinvalidate();\n\t\t\tif (!this.change['destroyed']) {\n\t\t\t\tthis.change.emit(event);\n\t\t\t}\n\t\t};\n\t\tconst onMouseDown = this.mouseDown.emit.bind(this.mouseDown);\n\t\tconst onMouseUp = this.mouseUp.emit.bind(this.mouseUp);\n\t\tconst onObjectChange = this.objectChange.emit.bind(this.objectChange);\n\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('change', onChange);\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('mouseDown', onMouseDown);\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('mouseUp', onMouseUp);\n\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\tcontrols.addEventListener('objectChange', onObjectChange);\n\n\t\treturn () => {\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('change', onChange);\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('mouseDown', onMouseDown);\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('mouseUp', onMouseUp);\n\t\t\t// @ts-expect-error - three-stdlib types are not up-to-date\n\t\t\tcontrols.removeEventListener('objectChange', onObjectChange);\n\t\t};\n\t}\n\n\tprivate updateDefaultControlsEffect() {\n\t\tconst [controls, makeDefault] = [this.controls(), this.makeDefault()];\n\t\tif (!makeDefault) return;\n\n\t\tconst oldControls = this.store.snapshot.controls;\n\t\tthis.store.update({ controls });\n\t\treturn () => this.store.update(() => ({ controls: oldControls }));\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["defaultOptions","vec1","vec2","calculateOffset","upV","offsetMatrix","i1","ray","intersection","i1_1"],"mappings":"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"}
|