angular-three-soba 3.2.0 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/abstractions/lib/catmull-rom-line.d.ts +13 -13
  2. package/abstractions/lib/edges.d.ts +14 -14
  3. package/abstractions/lib/grid.d.ts +3 -3
  4. package/abstractions/lib/line.d.ts +2 -2
  5. package/abstractions/lib/prism-geometry.d.ts +2 -2
  6. package/abstractions/lib/quadratic-bezier-line.d.ts +1 -1
  7. package/abstractions/lib/rounded-box.d.ts +1 -1
  8. package/abstractions/lib/text-3d.d.ts +5 -5
  9. package/controls/lib/camera-controls.d.ts +1 -1
  10. package/controls/lib/orbit-controls.d.ts +1 -1
  11. package/fesm2022/angular-three-soba-abstractions.mjs.map +1 -1
  12. package/fesm2022/angular-three-soba-gizmos.mjs +3 -14
  13. package/fesm2022/angular-three-soba-gizmos.mjs.map +1 -1
  14. package/materials/lib/custom-shader-material.d.ts +2 -2
  15. package/materials/lib/mesh-portal-material.d.ts +25 -25
  16. package/materials/lib/mesh-refraction-material.d.ts +2 -2
  17. package/materials/lib/mesh-transmission-material.d.ts +1 -1
  18. package/misc/lib/computed-attribute.d.ts +4 -4
  19. package/misc/lib/decal.d.ts +1 -1
  20. package/misc/lib/html/html.d.ts +1 -1
  21. package/misc/lib/sampler.d.ts +1 -1
  22. package/package.json +8 -8
  23. package/performances/lib/instances/instances.d.ts +1 -1
  24. package/performances/lib/points/points.d.ts +1 -1
  25. package/staging/lib/accumulative-shadows.d.ts +1 -1
  26. package/staging/lib/caustics.d.ts +1 -1
  27. package/staging/lib/center.d.ts +2 -2
  28. package/staging/lib/contact-shadows.d.ts +1 -1
  29. package/staging/lib/lightformer.d.ts +1 -1
  30. package/staging/lib/mask.d.ts +1 -1
  31. package/staging/lib/spot-light.d.ts +1 -1
  32. 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\tinput,\n\toutput,\n\tSignal,\n\tTemplateRef,\n\tviewChild,\n} from '@angular/core';\nimport { extend, hasListener, injectBeforeRender, injectStore, NgtPortal, NgtPortalContent, pick } from 'angular-three';\nimport { NgtsOrthographicCamera } from 'angular-three-soba/cameras';\nimport CameraControls from 'camera-controls';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Group, Matrix4, Object3D, Quaternion, Scene, Vector3 } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nconst turnRate = 2 * Math.PI; // turn rate in angles per second\nconst dummy = new Object3D();\nconst matrix = new Matrix4();\nconst [q1, q2] = [new Quaternion(), new Quaternion()];\nconst target = new Vector3();\nconst targetPosition = new Vector3();\n\n@Directive({ selector: 'ng-template[gizmoHelperContent]' })\nexport class NgtsGizmoHelperContent {\n\tstatic ngTemplateContextGuard(_: NgtsGizmoHelperContent, ctx: unknown): ctx is { container: Object3D } {\n\t\treturn true;\n\t}\n}\n\ntype ControlsProto = { update(delta?: number): void; target: 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]=\"true\"\n\t\t\t[autoRenderPriority]=\"_renderPriority\"\n\t\t\t[state]=\"{ events: { priority: _renderPriority + 1 } }\"\n\t\t>\n\t\t\t<ng-template portalContent let-injector=\"injector\" let-container=\"container\">\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, 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, NgtPortalContent, NgtsOrthographicCamera, NgTemplateOutlet],\n})\nexport class NgtsGizmoHelper {\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 Scene();\n\n\tprotected content = contentChild.required(NgtsGizmoHelperContent, { read: TemplateRef });\n\n\tprivate gizmoRef = viewChild<ElementRef<Group>>('gizmo');\n\tprivate virtualCameraRef = viewChild(NgtsOrthographicCamera);\n\n\tprivate store = injectStore();\n\tprivate size = this.store.select('size');\n\tprivate mainCamera = this.store.select('camera');\n\tprivate defaultControls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\tprivate invalidate = this.store.select('invalidate');\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.size(), 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.size(), 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 Vector3(0, 0, 0);\n\tprivate defaultUp = new Vector3(0, 0, 0);\n\n\tconstructor() {\n\t\textend({ Group });\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] = [this.defaultControls(), this.mainCamera(), this.invalidate()];\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.set(0, 0, 1).applyQuaternion(q1).multiplyScalar(this.radius).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(mainCamera.position.x, mainCamera.position.y, mainCamera.position.z);\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: Vector3) {\n\t\tconst [defaultControls, invalidate, mainCamera] = [this.defaultControls(), this.invalidate(), this.mainCamera()];\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.mainCamera();\n\t\tthis.defaultUp.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","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 { BoxGeometry, CanvasTexture, Group, Mesh, MeshBasicMaterial, Vector3 } from 'three';\nimport { NgtsGizmoHelper } 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\t[transparent]=\"true\"\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\tprivate gl = this.store.select('gl');\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.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 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(NgtsGizmoHelper);\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]=\"true\" [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<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(NgtsGizmoHelper);\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: 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: 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 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\tNgtEventHandlers,\n\tNgtGroup,\n\tNgtThreeEvent,\n\tNgtVector3,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tBoxGeometry,\n\tCanvasTexture,\n\tColorRepresentation,\n\tGroup,\n\tMesh,\n\tMeshBasicMaterial,\n\tSprite,\n\tSpriteMaterial,\n} from 'three';\nimport { NgtsGizmoHelper } 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<ColorRepresentation>();\n\trotation = input<NgtVector3>([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 [map]=\"texture()\" [alphaTest]=\"0.3\" [opacity]=\"label() ? 1 : 0.75\" [toneMapped]=\"false\" />\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(NgtsGizmoHelper);\n\tprivate store = injectStore();\n\tprivate gl = this.store.select('gl');\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.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 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<NgtGroup> {\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\tparameters = 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\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport {\n\tConeGeometry,\n\tCylinderGeometry,\n\tDoubleSide,\n\tGroup,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tQuaternion,\n\tVector3,\n} from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new Vector3();\nconst vec2 = new Vector3();\n\nexport function calculateOffset(clickPoint: Vector3, normal: Vector3, rayStart: Vector3, rayDir: Vector3) {\n\tconst e1 = normal.dot(normal);\n\tconst e2 = normal.dot(clickPoint) - normal.dot(rayStart);\n\tconst e3 = normal.dot(rayDir);\n\n\tif (e3 === 0) {\n\t\treturn -e2 / e1;\n\t}\n\n\tvec1\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e2 / e3)\n\t\t.add(rayStart)\n\t\t.sub(clickPoint);\n\n\treturn -vec1.dot(vec2) / vec1.dot(vec1);\n}\n\nconst upV = new Vector3(0, 1, 0);\nconst offsetMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-axis-arrow',\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ngt-group\n\t\t\t\t[matrix]=\"matrixL()\"\n\t\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t>\n\t\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t\t<ngts-html [options]=\"{ position: [0, -coneLength(), 0] }\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t#annotation\n\t\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap;\"\n\t\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</ngts-html>\n\t\t\t\t}\n\n\t\t\t\t<ngt-mesh\n\t\t\t\t\t[visible]=\"false\"\n\t\t\t\t\t[position]=\"[0, (cylinderLength() + coneLength()) / 2.0, 0]\"\n\t\t\t\t\t[userData]=\"pivotControls.userData()\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-cylinder-geometry\n\t\t\t\t\t\t*args=\"[coneWidth() * 1.4, coneWidth() * 1.4, cylinderLength() + coneLength(), 8, 1]\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\n\t\t\t\t<ngts-line\n\t\t\t\t\t[points]=\"[0, 0, 0, 0, cylinderLength(), 0]\"\n\t\t\t\t\t[options]=\"{\n\t\t\t\t\t\traycast: null,\n\t\t\t\t\t\tside: DoubleSide,\n\t\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\t\trenderOrder: 1,\n\t\t\t\t\t\tfog: false,\n\t\t\t\t\t\ttransparent: true,\n\t\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\t\tcolor: color(),\n\t\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\t}\"\n\t\t\t\t/>\n\n\t\t\t\t<ngt-mesh [raycast]=\"null\" [position]=\"[0, cylinderLength() + coneLength() / 2.0, 0]\" [renderOrder]=\"500\">\n\t\t\t\t\t<ngt-cone-geometry *args=\"[coneWidth(), coneLength(), 24, 1]\" />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[opacity]=\"pivotControls.opacity()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t\t[fog]=\"false\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtsLine, NgtsHTML, NgtsHTMLContent],\n})\nexport class NgtsAxisArrow {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdirection = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: Vector3; dir: Vector3 } | null = null;\n\tprivate offset0 = 0;\n\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\n\tconeWidth = computed(() =>\n\t\tthis.pivotControls.fixed()\n\t\t\t? (this.pivotControls.lineWidth() / this.pivotControls.scale()) * 1.6\n\t\t\t: this.pivotControls.scale() / 20,\n\t);\n\tconeLength = computed(() => (this.pivotControls.fixed() ? 0.2 : this.pivotControls.scale() / 5));\n\tcylinderLength = computed(() =>\n\t\tthis.pivotControls.fixed() ? 1 - this.coneLength() : this.pivotControls.scale() - this.coneLength(),\n\t);\n\tmatrixL = computed(() => {\n\t\tconst quaternion = new Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new Matrix4().makeRotationFromQuaternion(quaternion);\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, ConeGeometry, CylinderGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [group, direction, axis, controls, annotation] = [\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.direction(),\n\t\t\tthis.axis(),\n\t\t\tthis.controls(),\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${this.pivotControls.translation[axis].toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\n\t\tconst rotation = new Matrix4().extractRotation(group.matrixWorld);\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst clickPoint = event.point.clone();\n\t\tconst dir = direction.clone().applyMatrix4(rotation).normalize();\n\t\tthis.clickInfo = { clickPoint, dir };\n\t\tthis.offset0 = this.pivotControls.translation[axis];\n\t\tthis.pivotControls.onDragStart({ component: 'Arrow', axis, origin, directions: [dir] });\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\n\t\tif (!this.hovered()) {\n\t\t\tthis.hovered.set(true);\n\t\t}\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, dir } = this.clickInfo;\n\t\t\tconst [translationLimits, annotation, axis] = [\n\t\t\t\tthis.pivotControls.translationLimits(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t\tthis.axis(),\n\t\t\t];\n\n\t\t\tconst [min, max] = translationLimits?.[axis] || [undefined, undefined];\n\n\t\t\tlet offset = calculateOffset(clickPoint, dir, event.ray.origin, event.ray.direction);\n\t\t\tif (min !== undefined) {\n\t\t\t\toffset = Math.max(offset, min - this.offset0);\n\t\t\t}\n\n\t\t\tif (max !== undefined) {\n\t\t\t\toffset = Math.min(offset, max - this.offset0);\n\t\t\t}\n\n\t\t\tthis.pivotControls.translation[axis] = this.offset0 + offset;\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.pivotControls.translation[axis].toFixed(2)}`;\n\t\t\t}\n\n\t\t\toffsetMatrix.makeTranslation(dir.x * offset, dir.y * offset, dir.z * offset);\n\t\t\tthis.pivotControls.onDrag(offsetMatrix);\n\t\t}\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tSignal,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { DoubleSide, Group, Matrix4, Plane, Ray, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst clickDir = new Vector3();\nconst intersectionDir = new Vector3();\n\nfunction toDegrees(radians: number) {\n\treturn (radians * 180) / Math.PI;\n}\n\nfunction toRadians(degrees: number) {\n\treturn (degrees * Math.PI) / 180;\n}\n\nfunction calculateAngle(clickPoint: Vector3, intersectionPoint: Vector3, origin: Vector3, e1: Vector3, e2: Vector3) {\n\tclickDir.copy(clickPoint).sub(origin);\n\tintersectionDir.copy(intersectionPoint).sub(origin);\n\tconst dote1e1 = e1.dot(e1);\n\tconst dote2e2 = e2.dot(e2);\n\tconst uClick = clickDir.dot(e1) / dote1e1;\n\tconst vClick = clickDir.dot(e2) / dote2e2;\n\tconst uIntersection = intersectionDir.dot(e1) / dote1e1;\n\tconst vIntersection = intersectionDir.dot(e2) / dote2e2;\n\tconst angleClick = Math.atan2(vClick, uClick);\n\tconst angleIntersection = Math.atan2(vIntersection, uIntersection);\n\treturn angleIntersection - angleClick;\n}\n\nfunction fmod(num: number, denom: number) {\n\tlet k = Math.floor(num / denom);\n\tk = k < 0 ? k + 1 : k;\n\n\treturn num - k * denom;\n}\n\nfunction minimizeAngle(angle: number) {\n\tlet result = fmod(angle, 2 * Math.PI);\n\n\tif (Math.abs(result) < 1e-6) {\n\t\treturn 0.0;\n\t}\n\n\tif (result < 0.0) {\n\t\tresult += 2 * Math.PI;\n\t}\n\n\treturn result;\n}\n\nconst rotMatrix = new Matrix4();\nconst posNew = new Vector3();\nconst ray = new Ray();\nconst intersection = new Vector3();\n\n@Component({\n\tselector: 'ngts-axis-rotator',\n\ttemplate: `\n\t\t<ngt-group\n\t\t\t#group\n\t\t\t[matrix]=\"matrixL()\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t>\n\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t<ngts-html [options]=\"{ position: [r(), r(), 0] }\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t#annotation\n\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap\"\n\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t></div>\n\t\t\t\t</ngts-html>\n\t\t\t}\n\n\t\t\t<ngts-line\n\t\t\t\t[points]=\"arc()\"\n\t\t\t\t[options]=\"{ lineWidth: pivotControls.lineWidth() * 4, visible: false, userData: pivotControls.userData() }\"\n\t\t\t/>\n\n\t\t\t<ngts-line\n\t\t\t\t[points]=\"arc()\"\n\t\t\t\t[options]=\"{\n\t\t\t\t\ttransparent: true,\n\t\t\t\t\traycast: null,\n\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\tside: DoubleSide,\n\t\t\t\t\tcolor: hovered() ? pivotControls.hoveredColor() : pivotControls.axisColors()[axis()],\n\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\tfog: false,\n\t\t\t\t}\"\n\t\t\t/>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine, NgtsHTML, NgtsHTMLContent],\n})\nexport class NgtsAxisRotator {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdir1 = input.required<Vector3>();\n\tdir2 = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\thovered = signal(false);\n\tprivate angle = 0;\n\tprivate angle0 = 0;\n\tprivate clickInfo: {\n\t\tclickPoint: Vector3;\n\t\torigin: Vector3;\n\t\te1: Vector3;\n\t\te2: Vector3;\n\t\tnormal: Vector3;\n\t\tplane: Plane;\n\t} | null = null;\n\n\tmatrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\tr = computed(() => (this.pivotControls.fixed() ? 0.65 : this.pivotControls.scale() * 0.65));\n\tarc = computed(() => {\n\t\tconst segments = 32;\n\t\tconst points: Vector3[] = [];\n\t\tfor (let j = 0; j <= segments; j++) {\n\t\t\tconst angle = (j * (Math.PI / 2)) / segments;\n\t\t\tpoints.push(new Vector3(Math.cos(angle) * this.r(), Math.sin(angle) * this.r(), 0));\n\t\t}\n\t\treturn points;\n\t});\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, group, axis, controls] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.axis(),\n\t\t\tthis.controls(),\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${toDegrees(this.angle).toFixed(0)}º`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new Plane().setFromNormalAndCoplanarPoint(normal, origin);\n\t\tthis.clickInfo = { clickPoint, origin, e1, e2, normal, plane };\n\t\tthis.pivotControls.onDragStart({ component: 'Rotator', axis, origin, directions: [e1, e2, normal] });\n\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not a function on PointerEvent\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, origin, e1, e2, normal, plane } = this.clickInfo;\n\t\t\tconst [rotationLimits, axis, annotation] = [\n\t\t\t\tthis.pivotControls.rotationLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tconst [min, max] = rotationLimits?.[axis] || [undefined, undefined];\n\n\t\t\tray.copy(event.ray);\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tray.direction.negate();\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tlet deltaAngle = calculateAngle(clickPoint, intersection, origin, e1, e2);\n\t\t\tlet degrees = toDegrees(deltaAngle);\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tdegrees = Math.round(degrees / 10) * 10;\n\t\t\t\tdeltaAngle = toRadians(degrees);\n\t\t\t}\n\n\t\t\tif (min !== undefined && max !== undefined && max - min < 2 * Math.PI) {\n\t\t\t\tdeltaAngle = minimizeAngle(deltaAngle);\n\t\t\t\tdeltaAngle = deltaAngle > Math.PI ? deltaAngle - 2 * Math.PI : deltaAngle;\n\t\t\t\tdeltaAngle = Math.round(deltaAngle / 10) * 10;\n\t\t\t\tthis.angle = this.angle0 + deltaAngle;\n\t\t\t} else {\n\t\t\t\tthis.angle = minimizeAngle(this.angle0 + deltaAngle);\n\t\t\t\tthis.angle = this.angle > Math.PI ? this.angle - 2 * Math.PI : this.angle;\n\t\t\t}\n\n\t\t\tif (annotation) {\n\t\t\t\tdegrees = toDegrees(this.angle);\n\t\t\t\tannotation.innerText = `${degrees.toFixed(0)}º`;\n\t\t\t}\n\n\t\t\trotMatrix.makeRotationAxis(normal, deltaAngle);\n\t\t\tposNew.copy(origin).applyMatrix4(rotMatrix).sub(origin).negate();\n\t\t\trotMatrix.setPosition(posNew);\n\t\t\tthis.pivotControls.onDrag(rotMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not a function on PointerEvent\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { DoubleSide, Group, Matrix4, Mesh, MeshBasicMaterial, Plane, PlaneGeometry, Ray, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nfunction decomposeIntoBasis(e1: Vector3, e2: Vector3, offset: Vector3) {\n\tconst i1 =\n\t\tMath.abs(e1.x) >= Math.abs(e1.y) && Math.abs(e1.x) >= Math.abs(e1.z)\n\t\t\t? 0\n\t\t\t: Math.abs(e1.y) >= Math.abs(e1.x) && Math.abs(e1.y) >= Math.abs(e1.z)\n\t\t\t\t? 1\n\t\t\t\t: 2;\n\tconst e2DegrowthOrder = [0, 1, 2].sort((a, b) => Math.abs(e2.getComponent(b)) - Math.abs(e2.getComponent(a)));\n\tconst i2 = i1 === e2DegrowthOrder[0] ? e2DegrowthOrder[1] : e2DegrowthOrder[0];\n\tconst a1 = e1.getComponent(i1);\n\tconst a2 = e1.getComponent(i2);\n\tconst b1 = e2.getComponent(i1);\n\tconst b2 = e2.getComponent(i2);\n\tconst c1 = offset.getComponent(i1);\n\tconst c2 = offset.getComponent(i2);\n\n\tconst y = (c2 - c1 * (a2 / a1)) / (b2 - b1 * (a2 / a1));\n\tconst x = (c1 - y * b1) / a1;\n\n\treturn [x, y];\n}\n\nconst ray = new Ray();\nconst intersection = new Vector3();\nconst offsetMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-plane-slider',\n\ttemplate: `\n\t\t<ngt-group #group [matrix]=\"matrixL()\" [matrixAutoUpdate]=\"false\">\n\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t<ngts-html [options]=\"{ position: [0, 0, 0] }\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t#annotation\n\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap\"\n\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t></div>\n\t\t\t\t</ngts-html>\n\t\t\t}\n\t\t\t<ngt-group [position]=\"[pos1() * 1.7, pos1() * 1.7, 0]\">\n\t\t\t\t<ngt-mesh\n\t\t\t\t\t[visible]=\"true\"\n\t\t\t\t\t[scale]=\"length()\"\n\t\t\t\t\t[userData]=\"pivotControls.userData()\"\n\t\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t\t\t[fog]=\"false\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t\t<ngts-line\n\t\t\t\t\t[points]=\"points()\"\n\t\t\t\t\t[options]=\"{\n\t\t\t\t\t\tposition: [-length() / 2, -length() / 2, 0],\n\t\t\t\t\t\ttransparent: true,\n\t\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\t\tcolor: color(),\n\t\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\t\tuserData: pivotControls.userData(),\n\t\t\t\t\t\tfog: false,\n\t\t\t\t\t}\"\n\t\t\t\t/>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsHTML, NgtsHTMLContent, NgtsLine],\n})\nexport class NgtsPlaneSlider {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdir1 = input.required<Vector3>();\n\tdir2 = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: Vector3; e1: Vector3; e2: Vector3; plane: Plane } | null = null;\n\tprivate offsetX0 = 0;\n\tprivate offsetY0 = 0;\n\n\tmatrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\n\tpos1 = computed(() => (this.pivotControls.fixed() ? 1 / 7 : this.pivotControls.scale() / 7));\n\tlength = computed(() => (this.pivotControls.fixed() ? 0.225 : this.pivotControls.scale() * 0.225));\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\tpoints = computed(() => {\n\t\tconst length = this.length();\n\t\treturn [\n\t\t\tnew Vector3(0, 0, 0),\n\t\t\tnew Vector3(0, length, 0),\n\t\t\tnew Vector3(length, length, 0),\n\t\t\tnew Vector3(length, 0, 0),\n\t\t\tnew Vector3(0, 0, 0),\n\t\t];\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, PlaneGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, axis, group, controls] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.axis(),\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.controls(),\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${this.pivotControls.translation[(axis + 1) % 3].toFixed(2)}, ${this.pivotControls.translation[(axis + 2) % 3].toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new Plane().setFromNormalAndCoplanarPoint(normal, origin);\n\t\tthis.clickInfo = { clickPoint, e1, e2, plane };\n\t\tthis.offsetX0 = this.pivotControls.translation[(axis + 1) % 3];\n\t\tthis.offsetY0 = this.pivotControls.translation[(axis + 2) % 3];\n\t\tthis.pivotControls.onDragStart({ component: 'Slider', axis, origin, directions: [e1, e2, normal] });\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not defined on ThreeEvent\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, e1, e2, plane } = this.clickInfo;\n\t\t\tconst [translationLimits, axis, annotation] = [\n\t\t\t\tthis.pivotControls.translationLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tconst [minX, maxX] = translationLimits?.[(axis + 1) % 3] || [undefined, undefined];\n\t\t\tconst [minY, maxY] = translationLimits?.[(axis + 2) % 3] || [undefined, undefined];\n\n\t\t\tray.copy(event.ray);\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tray.direction.negate();\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tintersection.sub(clickPoint);\n\t\t\tlet [offsetX, offsetY] = decomposeIntoBasis(e1, e2, intersection);\n\t\t\t/* let offsetY = (intersection.y - (intersection.x * e1.y) / e1.x) / (e2.y - (e2.x * e1.y) / e1.x)\n let offsetX = (intersection.x - offsetY * e2.x) / e1.x */\n\t\t\tif (minX !== undefined) {\n\t\t\t\toffsetX = Math.max(offsetX, minX - this.offsetX0);\n\t\t\t}\n\t\t\tif (maxX !== undefined) {\n\t\t\t\toffsetX = Math.min(offsetX, maxX - this.offsetX0);\n\t\t\t}\n\t\t\tif (minY !== undefined) {\n\t\t\t\toffsetY = Math.max(offsetY, minY - this.offsetY0);\n\t\t\t}\n\t\t\tif (maxY !== undefined) {\n\t\t\t\toffsetY = Math.min(offsetY, maxY - this.offsetY0);\n\t\t\t}\n\t\t\tthis.pivotControls.translation[(axis + 1) % 3] = this.offsetX0 + offsetX;\n\t\t\tthis.pivotControls.translation[(axis + 2) % 3] = this.offsetY0 + offsetY;\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.pivotControls.translation[(axis + 1) % 3].toFixed(2)}, ${this.pivotControls.translation[(axis + 2) % 3].toFixed(2)}`;\n\t\t\t}\n\n\t\t\toffsetMatrix.makeTranslation(\n\t\t\t\toffsetX * e1.x + offsetY * e2.x,\n\t\t\t\toffsetX * e1.y + offsetY * e2.y,\n\t\t\t\toffsetX * e1.z + offsetY * e2.z,\n\t\t\t);\n\t\t\tthis.pivotControls.onDrag(offsetMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not defined on ThreeEvent\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { calculateScaleFactor, NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { Group, Matrix4, Mesh, MeshBasicMaterial, Quaternion, SphereGeometry, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new Vector3();\nconst vec2 = new Vector3();\n\nexport function calculateOffset(clickPoint: Vector3, normal: Vector3, rayStart: Vector3, rayDir: Vector3) {\n\tconst e1 = normal.dot(normal);\n\tconst e2 = normal.dot(clickPoint) - normal.dot(rayStart);\n\tconst e3 = normal.dot(rayDir);\n\n\tif (e3 === 0) {\n\t\treturn -e2 / e1;\n\t}\n\n\tvec1\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e2 / e3)\n\t\t.add(rayStart)\n\t\t.sub(clickPoint);\n\n\treturn -vec1.dot(vec2) / vec1.dot(vec1);\n}\n\nconst upV = new Vector3(0, 1, 0);\nconst scaleV = new Vector3();\nconst scaleMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-scaling-sphere',\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ngt-group\n\t\t\t\t[matrix]=\"matrixL()\"\n\t\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t>\n\t\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t\t<ngts-html [options]=\"{ position: [0, position() / 2, 0] }\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t#annotation\n\t\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap;\"\n\t\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</ngts-html>\n\t\t\t\t}\n\t\t\t\t<ngt-mesh #mesh [position]=\"[0, position(), 0]\" [renderOrder]=\"500\" [userData]=\"pivotControls.userData()\">\n\t\t\t\t\t<ngt-sphere-geometry *args=\"[radius(), 12, 12]\" />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[opacity]=\"pivotControls.opacity()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsHTML, NgtsHTMLContent, NgtArgs],\n})\nexport class NgtsScalingSphere {\n\tdirection = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\tprivate size = this.store.select('size');\n\n\tprivate hovered = signal(false);\n\tprivate scale0 = 1;\n\tprivate scaleCurrent = 1;\n\tprivate clickInfo: {\n\t\tclickPoint: Vector3;\n\t\tdir: Vector3;\n\t\tmPLG: Matrix4;\n\t\tmPLGInv: Matrix4;\n\t\toffsetMultiplier: number;\n\t} | null = null;\n\n\tposition = computed(() => (this.pivotControls.fixed() ? 1.2 : 1.2 * this.pivotControls.scale()));\n\tradius = computed(() =>\n\t\tthis.pivotControls.fixed()\n\t\t\t? (this.pivotControls.lineWidth() / this.pivotControls.scale()) * 1.8\n\t\t\t: this.pivotControls.scale() / 22.5,\n\t);\n\tmatrixL = computed(() => {\n\t\tconst quaternion = new Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new Matrix4().makeRotationFromQuaternion(quaternion);\n\t});\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\n\tconstructor() {\n\t\textend({ Group, Mesh, SphereGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls, fixed, scale, direction, axis, size, group] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.controls(),\n\t\t\tthis.pivotControls.fixed(),\n\t\t\tthis.pivotControls.scale(),\n\t\t\tthis.direction(),\n\t\t\tthis.axis(),\n\t\t\tthis.size(),\n\t\t\tthis.groupRef().nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${scale.toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst rotation = new Matrix4().extractRotation(group.matrixWorld);\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst dir = direction.clone().applyMatrix4(rotation).normalize();\n\t\tconst mPLG = group.matrixWorld.clone();\n\t\tconst mPLGInv = mPLG.clone().invert();\n\t\tconst offsetMultiplier = fixed\n\t\t\t? 1 / calculateScaleFactor(group.getWorldPosition(vec1), scale, event.camera, size)\n\t\t\t: 1;\n\t\tthis.clickInfo = { clickPoint, dir, mPLG, mPLGInv, offsetMultiplier };\n\t\tthis.pivotControls.onDragStart({ component: 'Sphere', axis, origin, directions: [dir] });\n\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, dir, mPLG, mPLGInv, offsetMultiplier } = this.clickInfo;\n\t\t\tconst [scaleLimits, axis, position, annotation, fixed, scale, mesh] = [\n\t\t\t\tthis.pivotControls.scaleLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.position(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t\tthis.pivotControls.fixed(),\n\t\t\t\tthis.pivotControls.scale(),\n\t\t\t\tthis.meshRef().nativeElement,\n\t\t\t];\n\n\t\t\tconst [min, max] = scaleLimits?.[axis] || [1e-5, undefined]; // always limit the minimal value, since setting it very low might break the transform\n\t\t\tconst offsetW = calculateOffset(clickPoint, dir, event.ray.origin, event.ray.direction);\n\t\t\tconst offsetL = offsetW * offsetMultiplier;\n\t\t\tconst offsetH = fixed ? offsetL : offsetL / scale;\n\t\t\tlet upscale = Math.pow(2, offsetH * 0.2);\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tupscale = Math.round(upscale * 10) / 10;\n\t\t\t}\n\n\t\t\tupscale = Math.max(upscale, min / this.scale0);\n\n\t\t\tif (max !== undefined) {\n\t\t\t\tupscale = Math.min(upscale, max / this.scale0);\n\t\t\t}\n\n\t\t\tthis.scaleCurrent = this.scale0 * upscale;\n\t\t\tmesh.position.set(0, position + offsetL, 0);\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.scaleCurrent.toFixed(2)}`;\n\t\t\t}\n\n\t\t\tscaleV.set(1, 1, 1);\n\t\t\tscaleV.setComponent(axis, upscale);\n\t\t\tscaleMatrix.makeScale(scaleV.x, scaleV.y, scaleV.z).premultiply(mPLG).multiply(mPLGInv);\n\t\t\tthis.pivotControls.onDrag(scaleMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls, position, mesh] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.controls(),\n\t\t\tthis.position(),\n\t\t\tthis.meshRef().nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tthis.scale0 = this.scaleCurrent;\n\t\tthis.clickInfo = null;\n\t\tmesh.position.set(0, position, 0);\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not in the type definition\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport {\n\tapplyProps,\n\textend,\n\tgetLocalState,\n\tinjectBeforeRender,\n\tinjectStore,\n\tNgtAnyRecord,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { calculateScaleFactor } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Box3, Group, Matrix4, Mesh, Vector3 } from 'three';\nimport { NgtsAxisArrow } from './axis-arrow';\nimport { NgtsAxisRotator } from './axis-rotator';\nimport { NgtsPlaneSlider } from './plane-slider';\nimport { NgtsScalingSphere } from './scaling-sphere';\n\nexport interface OnDragStartParameters {\n\tcomponent: 'Arrow' | 'Slider' | 'Rotator' | 'Sphere';\n\taxis: 0 | 1 | 2;\n\torigin: Vector3;\n\tdirections: Vector3[];\n}\n\nexport interface OnDragParameters {\n\tl: Matrix4;\n\tdeltaL: Matrix4;\n\tw: Matrix4;\n\tdeltaW: Matrix4;\n}\n\nconst mL0 = new Matrix4();\nconst mW0 = new Matrix4();\nconst mP = new Matrix4();\nconst mPInv = new Matrix4();\nconst mW = new Matrix4();\nconst mL = new Matrix4();\nconst mL0Inv = new Matrix4();\nconst mdL = new Matrix4();\nconst mG = new Matrix4();\n\nconst bb = new Box3();\nconst bbObj = new Box3();\nconst vCenter = new Vector3();\nconst vSize = new Vector3();\nconst vAnchorOffset = new Vector3();\nconst vPosition = new Vector3();\nconst vScale = new Vector3();\n\nconst xDir = new Vector3(1, 0, 0);\nconst yDir = new Vector3(0, 1, 0);\nconst zDir = new Vector3(0, 0, 1);\n\nexport interface NgtsPivotControlsOptions {\n\t/** Enables/disables the control, true */\n\tenabled: boolean;\n\t/** Scale of the gizmo, 1 */\n\tscale: number;\n\t/** Width of the gizmo lines, this is a THREE.Line2 prop, 2.5 */\n\tlineWidth: number;\n\t/** If fixed is true is remains constant in size, scale is now in pixels, false */\n\tfixed: boolean;\n\t/** Pivot does not act as a group, it won't shift contents but can offset in position */\n\toffset: [number, number, number];\n\t/** Starting rotation */\n\trotation: [number, number, number];\n\n\t/** Starting matrix */\n\tmatrix?: Matrix4;\n\t/** BBAnchor, each axis can be between -1/0/+1 */\n\tanchor?: [number, number, number];\n\t/** If autoTransform is true, automatically apply the local transform on drag, true */\n\tautoTransform: boolean;\n\t/** Allows you to switch individual axes off */\n\tactiveAxes: [boolean, boolean, boolean];\n\n\t/** Allows you to switch individual transformations off */\n\tdisableAxes: boolean;\n\tdisableSliders: boolean;\n\tdisableRotations: boolean;\n\tdisableScaling: boolean;\n\n\t/** Limits */\n\ttranslationLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\trotationLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\tscaleLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\n\t/** RGB colors */\n\taxisColors: [string | number, string | number, string | number];\n\t/** Color of the hovered item */\n\thoveredColor: string | number;\n\t/** HTML value annotations, default: false */\n\tannotations: boolean;\n\t/** CSS Classname applied to the HTML annotations */\n\tannotationsClass?: string;\n\t/** Set this to false if you want the gizmo to be visible through faces */\n\tdepthTest: boolean;\n\topacity?: number;\n\tvisible: boolean;\n\tuserData?: NgtAnyRecord;\n}\n\nconst defaultOptions: NgtsPivotControlsOptions = {\n\tenabled: true,\n\tautoTransform: true,\n\tdisableAxes: false,\n\tdisableSliders: false,\n\tdisableRotations: false,\n\tdisableScaling: false,\n\tactiveAxes: [true, true, true],\n\toffset: [0, 0, 0],\n\trotation: [0, 0, 0],\n\tscale: 1,\n\tlineWidth: 4,\n\tfixed: false,\n\tdepthTest: true,\n\taxisColors: ['#ff2060', '#20df80', '#2080ff'],\n\thoveredColor: '#ffff40',\n\tannotations: false,\n\topacity: 1,\n\tvisible: true,\n};\n\n@Component({\n\tselector: 'ngts-pivot-controls',\n\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()\" [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})\n// TODO: PivotControls is not working properly with control flow\nexport class NgtsPivotControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'enabled',\n\t\t'matrix',\n\t\t'autoTransform',\n\t\t'anchor',\n\t\t'disableAxes',\n\t\t'disableSliders',\n\t\t'disableRotations',\n\t\t'disableScaling',\n\t\t'activeAxes',\n\t\t'offset',\n\t\t'rotation',\n\t\t'scale',\n\t\t'lineWidth',\n\t\t'fixed',\n\t\t'translationLimits',\n\t\t'rotationLimits',\n\t\t'scaleLimits',\n\t\t'depthTest',\n\t\t'axisColors',\n\t\t'hoveredColor',\n\t\t'annotations',\n\t\t'annotationsClass',\n\t\t'opacity',\n\t\t'visible',\n\t\t'userData',\n\t]);\n\n\tdragStarted = output<OnDragStartParameters>();\n\tdragEnded = output<void>();\n\tdragged = output<OnDragParameters>();\n\n\tmatrix = pick(this.options, 'matrix');\n\tannotations = pick(this.options, 'annotations');\n\tannotationsClass = pick(this.options, 'annotationsClass');\n\ttranslationLimits = pick(this.options, 'translationLimits');\n\trotationLimits = pick(this.options, 'rotationLimits');\n\tscaleLimits = pick(this.options, 'scaleLimits');\n\tautoTransform = pick(this.options, 'autoTransform');\n\tfixed = pick(this.options, 'fixed');\n\thoveredColor = pick(this.options, 'hoveredColor');\n\taxisColors = pick(this.options, 'axisColors');\n\tlineWidth = pick(this.options, 'lineWidth');\n\tscale = pick(this.options, 'scale');\n\tuserData = pick(this.options, 'userData');\n\topacity = pick(this.options, 'opacity');\n\tdepthTest = pick(this.options, 'depthTest');\n\toffset = pick(this.options, 'offset');\n\trotation = pick(this.options, 'rotation');\n\tvisible = pick(this.options, 'visible');\n\tenabled = pick(this.options, 'enabled');\n\tdisableAxes = pick(this.options, 'disableAxes');\n\tdisableSliders = pick(this.options, 'disableSliders');\n\tdisableRotations = pick(this.options, 'disableRotations');\n\tdisableScaling = pick(this.options, 'disableScaling');\n\tactiveAxes = pick(this.options, 'activeAxes');\n\n\txDir = xDir;\n\tyDir = yDir;\n\tzDir = zDir;\n\n\tparentRef = viewChild.required<ElementRef<Group>>('parent');\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tgizmoRef = viewChild.required<ElementRef<Group>>('gizmo');\n\tchildrenRef = viewChild.required<ElementRef<Group>>('children');\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\n\ttranslation: [number, number, number] = [0, 0, 0];\n\n\tprivate anchor = pick(this.options, 'anchor');\n\tprivate cameraScale = new Vector3(1, 1, 1);\n\tprivate gizmoScale = new Vector3(1, 1, 1);\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\teffect(() => {\n\t\t\tconst [anchor, offset] = [this.anchor(), this.offset()];\n\t\t\t// if there is anchor, then the below effect will handle the position\n\t\t\tif (anchor) return;\n\t\t\t// if not, then we'll use the offset to set the position for gizmo\n\t\t\tconst gizmo = this.gizmoRef().nativeElement;\n\t\t\tif (!gizmo) return;\n\n\t\t\tapplyProps(gizmo, { position: offset });\n\t\t});\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 localState = getLocalState(childrenContainer);\n\t\t\tif (!localState) 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.invalidate(),\n\t\t\t\tthis.options(),\n\t\t\t\t[localState.objects(), localState.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 Mesh).geometry) return;\n\t\t\t\tif (!(obj as Mesh).geometry.boundingBox) (obj as Mesh).geometry.computeBoundingBox();\n\t\t\t\tmL.copy(obj.matrixWorld).premultiply(mPInv);\n\t\t\t\tconst boundingBox = (obj as 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 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 Vector3();\n\t\tinjectBeforeRender(({ camera, size, invalidate }) => {\n\t\t\tconst [{ fixed, scale, matrix }, gizmo, group] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.gizmoRef().nativeElement,\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t];\n\n\t\t\tif (fixed) {\n\t\t\t\tconst sf = calculateScaleFactor(gizmo.getWorldPosition(vec), scale, camera, size);\n\t\t\t\tthis.cameraScale.setScalar(sf);\n\t\t\t}\n\n\t\t\tif (matrix && matrix instanceof Matrix4) {\n\t\t\t\tgroup.matrix = matrix;\n\t\t\t}\n\n\t\t\t// Update gizmo scale in accordance with matrix changes\n\t\t\t// Without this, there might be noticeable turbulence if scaling happens fast enough\n\t\t\tgizmo.updateWorldMatrix(true, true);\n\n\t\t\tmG.makeRotationFromEuler(gizmo.rotation).setPosition(gizmo.position).premultiply(group.matrixWorld);\n\t\t\tthis.gizmoScale.setFromMatrixScale(mG);\n\n\t\t\tvScale.copy(this.cameraScale).divide(this.gizmoScale);\n\n\t\t\tif (\n\t\t\t\tMath.abs(gizmo.scale.x - vScale.x) > 1e-4 ||\n\t\t\t\tMath.abs(gizmo.scale.y - vScale.y) > 1e-4 ||\n\t\t\t\tMath.abs(gizmo.scale.z - vScale.z) > 1e-4\n\t\t\t) {\n\t\t\t\tgizmo.scale.copy(vScale);\n\t\t\t\tinvalidate();\n\t\t\t}\n\t\t});\n\t}\n\n\tonDragStart(parameters: OnDragStartParameters) {\n\t\tconst group = this.groupRef().nativeElement;\n\t\tmL0.copy(group.matrix);\n\t\tmW0.copy(group.matrixWorld);\n\t\tthis.dragStarted.emit(parameters);\n\t\tthis.store.snapshot.invalidate();\n\t}\n\n\tonDrag(mdW: Matrix4) {\n\t\tconst [parent, group, autoTransform] = [\n\t\t\tthis.parentRef().nativeElement,\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.autoTransform(),\n\t\t];\n\n\t\tmP.copy(parent.matrixWorld);\n\t\tmPInv.copy(mP).invert();\n\t\t// After applying the delta\n\t\tmW.copy(mW0).premultiply(mdW);\n\t\tmL.copy(mW).premultiply(mPInv);\n\t\tmL0Inv.copy(mL0).invert();\n\t\tmdL.copy(mL).multiply(mL0Inv);\n\n\t\tif (autoTransform) {\n\t\t\tgroup.matrix.copy(mL);\n\t\t}\n\n\t\tthis.dragged.emit({ l: mL, deltaL: mdL, w: mW, deltaW: mdW });\n\t\tthis.store.snapshot.invalidate();\n\t}\n\n\tonDragEnd() {\n\t\tthis.dragEnded.emit();\n\t\tthis.store.snapshot.invalidate();\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport {\n\textend,\n\tgetLocalState,\n\tinjectStore,\n\tNgtArgs,\n\tNgtGroup,\n\tNgtObject3DNode,\n\tomit,\n\tpick,\n\tresolveRef,\n} from 'angular-three';\nimport { Camera, Group, Object3D, Event as ThreeEvent } from 'three';\nimport { TransformControls } from 'three-stdlib';\n\ninterface ControlsProto {\n\tenabled: boolean;\n}\n\nexport type NgtsTransformControlsObject = NgtObject3DNode<TransformControls, typeof TransformControls>;\n\nexport type NgtsTransformControlsOptions = Partial<NgtsTransformControlsObject> &\n\tPartial<NgtGroup> & {\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?: 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<Object3D | ElementRef<Object3D> | undefined | null>(null);\n\toptions = input({} as Partial<NgtsTransformControlsOptions>);\n\tparameters = 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<ThreeEvent>();\n\tmouseDown = output<ThreeEvent>();\n\tmouseUp = output<ThreeEvent>();\n\tobjectChange = output<ThreeEvent>();\n\n\tprivate groupRef = viewChild.required<ElementRef<Group>>('group');\n\n\tprivate store = injectStore();\n\tprivate glDomElement = this.store.select('gl', 'domElement');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate events = this.store.select('events');\n\tprivate defaultControls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\tprivate invalidate = this.store.select('invalidate');\n\n\tcontrols = computed(() => {\n\t\tlet camera = this.camera();\n\t\tif (!camera) {\n\t\t\tcamera = this.defaultCamera();\n\t\t}\n\n\t\tlet domElement = this.domElement();\n\t\tif (!domElement) {\n\t\t\tdomElement = this.events().connected || this.glDomElement();\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 localState = getLocalState(group);\n\t\tif (!localState) return;\n\n\t\tconst [object, controls] = [resolveRef(this.object()), this.controls(), localState.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.defaultControls();\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.invalidate()];\n\t\tconst onChange = (event: ThreeEvent) => {\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","ray","intersection"],"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\tinput,\n\toutput,\n\tSignal,\n\tTemplateRef,\n\tviewChild,\n} from '@angular/core';\nimport { extend, hasListener, injectBeforeRender, injectStore, NgtPortal, NgtPortalContent, pick } from 'angular-three';\nimport { NgtsOrthographicCamera } from 'angular-three-soba/cameras';\nimport CameraControls from 'camera-controls';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Group, Matrix4, Object3D, Quaternion, Scene, Vector3 } from 'three';\nimport { OrbitControls } from 'three-stdlib';\n\nconst turnRate = 2 * Math.PI; // turn rate in angles per second\nconst dummy = new Object3D();\nconst matrix = new Matrix4();\nconst [q1, q2] = [new Quaternion(), new Quaternion()];\nconst target = new Vector3();\nconst targetPosition = new Vector3();\n\n@Directive({ selector: 'ng-template[gizmoHelperContent]' })\nexport class NgtsGizmoHelperContent {\n\tstatic ngTemplateContextGuard(_: NgtsGizmoHelperContent, ctx: unknown): ctx is { container: Object3D } {\n\t\treturn true;\n\t}\n}\n\ntype ControlsProto = { update(delta?: number): void; target: 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]=\"true\"\n\t\t\t[autoRenderPriority]=\"_renderPriority\"\n\t\t\t[state]=\"{ events: { priority: _renderPriority + 1 } }\"\n\t\t>\n\t\t\t<ng-template portalContent let-injector=\"injector\" let-container=\"container\">\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, 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, NgtPortalContent, NgtsOrthographicCamera, NgTemplateOutlet],\n})\nexport class NgtsGizmoHelper {\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 Scene();\n\n\tprotected content = contentChild.required(NgtsGizmoHelperContent, { read: TemplateRef });\n\n\tprivate gizmoRef = viewChild<ElementRef<Group>>('gizmo');\n\tprivate virtualCameraRef = viewChild(NgtsOrthographicCamera);\n\n\tprivate store = injectStore();\n\tprivate size = this.store.select('size');\n\tprivate mainCamera = this.store.select('camera');\n\tprivate defaultControls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\tprivate invalidate = this.store.select('invalidate');\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.size(), 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.size(), 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 Vector3(0, 0, 0);\n\tprivate defaultUp = new Vector3(0, 0, 0);\n\n\tconstructor() {\n\t\textend({ Group });\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] = [this.defaultControls(), this.mainCamera(), this.invalidate()];\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.set(0, 0, 1).applyQuaternion(q1).multiplyScalar(this.radius).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(mainCamera.position.x, mainCamera.position.y, mainCamera.position.z);\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: Vector3) {\n\t\tconst [defaultControls, invalidate, mainCamera] = [this.defaultControls(), this.invalidate(), this.mainCamera()];\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.mainCamera();\n\t\tthis.defaultUp.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","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 { BoxGeometry, CanvasTexture, Group, Mesh, MeshBasicMaterial, Vector3 } from 'three';\nimport { NgtsGizmoHelper } 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\t[transparent]=\"true\"\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\tprivate gl = this.store.select('gl');\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.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 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(NgtsGizmoHelper);\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]=\"true\" [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<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(NgtsGizmoHelper);\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: 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: 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 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\tNgtEventHandlers,\n\tNgtGroup,\n\tNgtThreeEvent,\n\tNgtVector3,\n\tomit,\n\tpick,\n} from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport {\n\tBoxGeometry,\n\tCanvasTexture,\n\tColorRepresentation,\n\tGroup,\n\tMesh,\n\tMeshBasicMaterial,\n\tSprite,\n\tSpriteMaterial,\n} from 'three';\nimport { NgtsGizmoHelper } 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<ColorRepresentation>();\n\trotation = input<NgtVector3>([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 [map]=\"texture()\" [alphaTest]=\"0.3\" [opacity]=\"label() ? 1 : 0.75\" [toneMapped]=\"false\" />\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(NgtsGizmoHelper);\n\tprivate store = injectStore();\n\tprivate gl = this.store.select('gl');\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.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 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<NgtGroup> {\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\tparameters = 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\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport {\n\tConeGeometry,\n\tCylinderGeometry,\n\tDoubleSide,\n\tGroup,\n\tMatrix4,\n\tMesh,\n\tMeshBasicMaterial,\n\tQuaternion,\n\tVector3,\n} from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new Vector3();\nconst vec2 = new Vector3();\n\nexport function calculateOffset(clickPoint: Vector3, normal: Vector3, rayStart: Vector3, rayDir: Vector3) {\n\tconst e1 = normal.dot(normal);\n\tconst e2 = normal.dot(clickPoint) - normal.dot(rayStart);\n\tconst e3 = normal.dot(rayDir);\n\n\tif (e3 === 0) {\n\t\treturn -e2 / e1;\n\t}\n\n\tvec1\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e2 / e3)\n\t\t.add(rayStart)\n\t\t.sub(clickPoint);\n\n\treturn -vec1.dot(vec2) / vec1.dot(vec1);\n}\n\nconst upV = new Vector3(0, 1, 0);\nconst offsetMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-axis-arrow',\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ngt-group\n\t\t\t\t[matrix]=\"matrixL()\"\n\t\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t>\n\t\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t\t<ngts-html [options]=\"{ position: [0, -coneLength(), 0] }\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t#annotation\n\t\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap;\"\n\t\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</ngts-html>\n\t\t\t\t}\n\n\t\t\t\t<ngt-mesh\n\t\t\t\t\t[visible]=\"false\"\n\t\t\t\t\t[position]=\"[0, (cylinderLength() + coneLength()) / 2.0, 0]\"\n\t\t\t\t\t[userData]=\"pivotControls.userData()\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-cylinder-geometry\n\t\t\t\t\t\t*args=\"[coneWidth() * 1.4, coneWidth() * 1.4, cylinderLength() + coneLength(), 8, 1]\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\n\t\t\t\t<ngts-line\n\t\t\t\t\t[points]=\"[0, 0, 0, 0, cylinderLength(), 0]\"\n\t\t\t\t\t[options]=\"{\n\t\t\t\t\t\traycast: null,\n\t\t\t\t\t\tside: DoubleSide,\n\t\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\t\trenderOrder: 1,\n\t\t\t\t\t\tfog: false,\n\t\t\t\t\t\ttransparent: true,\n\t\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\t\tcolor: color(),\n\t\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\t}\"\n\t\t\t\t/>\n\n\t\t\t\t<ngt-mesh [raycast]=\"null\" [position]=\"[0, cylinderLength() + coneLength() / 2.0, 0]\" [renderOrder]=\"500\">\n\t\t\t\t\t<ngt-cone-geometry *args=\"[coneWidth(), coneLength(), 24, 1]\" />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[opacity]=\"pivotControls.opacity()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t\t[fog]=\"false\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtArgs, NgtsLine, NgtsHTML, NgtsHTMLContent],\n})\nexport class NgtsAxisArrow {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdirection = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: Vector3; dir: Vector3 } | null = null;\n\tprivate offset0 = 0;\n\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\n\tconeWidth = computed(() =>\n\t\tthis.pivotControls.fixed()\n\t\t\t? (this.pivotControls.lineWidth() / this.pivotControls.scale()) * 1.6\n\t\t\t: this.pivotControls.scale() / 20,\n\t);\n\tconeLength = computed(() => (this.pivotControls.fixed() ? 0.2 : this.pivotControls.scale() / 5));\n\tcylinderLength = computed(() =>\n\t\tthis.pivotControls.fixed() ? 1 - this.coneLength() : this.pivotControls.scale() - this.coneLength(),\n\t);\n\tmatrixL = computed(() => {\n\t\tconst quaternion = new Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new Matrix4().makeRotationFromQuaternion(quaternion);\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, ConeGeometry, CylinderGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [group, direction, axis, controls, annotation] = [\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.direction(),\n\t\t\tthis.axis(),\n\t\t\tthis.controls(),\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${this.pivotControls.translation[axis].toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\n\t\tconst rotation = new Matrix4().extractRotation(group.matrixWorld);\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst clickPoint = event.point.clone();\n\t\tconst dir = direction.clone().applyMatrix4(rotation).normalize();\n\t\tthis.clickInfo = { clickPoint, dir };\n\t\tthis.offset0 = this.pivotControls.translation[axis];\n\t\tthis.pivotControls.onDragStart({ component: 'Arrow', axis, origin, directions: [dir] });\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\n\t\tif (!this.hovered()) {\n\t\t\tthis.hovered.set(true);\n\t\t}\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, dir } = this.clickInfo;\n\t\t\tconst [translationLimits, annotation, axis] = [\n\t\t\t\tthis.pivotControls.translationLimits(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t\tthis.axis(),\n\t\t\t];\n\n\t\t\tconst [min, max] = translationLimits?.[axis] || [undefined, undefined];\n\n\t\t\tlet offset = calculateOffset(clickPoint, dir, event.ray.origin, event.ray.direction);\n\t\t\tif (min !== undefined) {\n\t\t\t\toffset = Math.max(offset, min - this.offset0);\n\t\t\t}\n\n\t\t\tif (max !== undefined) {\n\t\t\t\toffset = Math.min(offset, max - this.offset0);\n\t\t\t}\n\n\t\t\tthis.pivotControls.translation[axis] = this.offset0 + offset;\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.pivotControls.translation[axis].toFixed(2)}`;\n\t\t\t}\n\n\t\t\toffsetMatrix.makeTranslation(dir.x * offset, dir.y * offset, dir.z * offset);\n\t\t\tthis.pivotControls.onDrag(offsetMatrix);\n\t\t}\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tSignal,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { DoubleSide, Group, Matrix4, Plane, Ray, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst clickDir = new Vector3();\nconst intersectionDir = new Vector3();\n\nfunction toDegrees(radians: number) {\n\treturn (radians * 180) / Math.PI;\n}\n\nfunction toRadians(degrees: number) {\n\treturn (degrees * Math.PI) / 180;\n}\n\nfunction calculateAngle(clickPoint: Vector3, intersectionPoint: Vector3, origin: Vector3, e1: Vector3, e2: Vector3) {\n\tclickDir.copy(clickPoint).sub(origin);\n\tintersectionDir.copy(intersectionPoint).sub(origin);\n\tconst dote1e1 = e1.dot(e1);\n\tconst dote2e2 = e2.dot(e2);\n\tconst uClick = clickDir.dot(e1) / dote1e1;\n\tconst vClick = clickDir.dot(e2) / dote2e2;\n\tconst uIntersection = intersectionDir.dot(e1) / dote1e1;\n\tconst vIntersection = intersectionDir.dot(e2) / dote2e2;\n\tconst angleClick = Math.atan2(vClick, uClick);\n\tconst angleIntersection = Math.atan2(vIntersection, uIntersection);\n\treturn angleIntersection - angleClick;\n}\n\nfunction fmod(num: number, denom: number) {\n\tlet k = Math.floor(num / denom);\n\tk = k < 0 ? k + 1 : k;\n\n\treturn num - k * denom;\n}\n\nfunction minimizeAngle(angle: number) {\n\tlet result = fmod(angle, 2 * Math.PI);\n\n\tif (Math.abs(result) < 1e-6) {\n\t\treturn 0.0;\n\t}\n\n\tif (result < 0.0) {\n\t\tresult += 2 * Math.PI;\n\t}\n\n\treturn result;\n}\n\nconst rotMatrix = new Matrix4();\nconst posNew = new Vector3();\nconst ray = new Ray();\nconst intersection = new Vector3();\n\n@Component({\n\tselector: 'ngts-axis-rotator',\n\ttemplate: `\n\t\t<ngt-group\n\t\t\t#group\n\t\t\t[matrix]=\"matrixL()\"\n\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t>\n\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t<ngts-html [options]=\"{ position: [r(), r(), 0] }\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t#annotation\n\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap\"\n\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t></div>\n\t\t\t\t</ngts-html>\n\t\t\t}\n\n\t\t\t<ngts-line\n\t\t\t\t[points]=\"arc()\"\n\t\t\t\t[options]=\"{ lineWidth: pivotControls.lineWidth() * 4, visible: false, userData: pivotControls.userData() }\"\n\t\t\t/>\n\n\t\t\t<ngts-line\n\t\t\t\t[points]=\"arc()\"\n\t\t\t\t[options]=\"{\n\t\t\t\t\ttransparent: true,\n\t\t\t\t\traycast: null,\n\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\tside: DoubleSide,\n\t\t\t\t\tcolor: hovered() ? pivotControls.hoveredColor() : pivotControls.axisColors()[axis()],\n\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\tfog: false,\n\t\t\t\t}\"\n\t\t\t/>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsLine, NgtsHTML, NgtsHTMLContent],\n})\nexport class NgtsAxisRotator {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdir1 = input.required<Vector3>();\n\tdir2 = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\thovered = signal(false);\n\tprivate angle = 0;\n\tprivate angle0 = 0;\n\tprivate clickInfo: {\n\t\tclickPoint: Vector3;\n\t\torigin: Vector3;\n\t\te1: Vector3;\n\t\te2: Vector3;\n\t\tnormal: Vector3;\n\t\tplane: Plane;\n\t} | null = null;\n\n\tmatrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\tr = computed(() => (this.pivotControls.fixed() ? 0.65 : this.pivotControls.scale() * 0.65));\n\tarc = computed(() => {\n\t\tconst segments = 32;\n\t\tconst points: Vector3[] = [];\n\t\tfor (let j = 0; j <= segments; j++) {\n\t\t\tconst angle = (j * (Math.PI / 2)) / segments;\n\t\t\tpoints.push(new Vector3(Math.cos(angle) * this.r(), Math.sin(angle) * this.r(), 0));\n\t\t}\n\t\treturn points;\n\t});\n\n\tconstructor() {\n\t\textend({ Group });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, group, axis, controls] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.axis(),\n\t\t\tthis.controls(),\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${toDegrees(this.angle).toFixed(0)}º`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new Plane().setFromNormalAndCoplanarPoint(normal, origin);\n\t\tthis.clickInfo = { clickPoint, origin, e1, e2, normal, plane };\n\t\tthis.pivotControls.onDragStart({ component: 'Rotator', axis, origin, directions: [e1, e2, normal] });\n\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not a function on PointerEvent\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, origin, e1, e2, normal, plane } = this.clickInfo;\n\t\t\tconst [rotationLimits, axis, annotation] = [\n\t\t\t\tthis.pivotControls.rotationLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tconst [min, max] = rotationLimits?.[axis] || [undefined, undefined];\n\n\t\t\tray.copy(event.ray);\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tray.direction.negate();\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tlet deltaAngle = calculateAngle(clickPoint, intersection, origin, e1, e2);\n\t\t\tlet degrees = toDegrees(deltaAngle);\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tdegrees = Math.round(degrees / 10) * 10;\n\t\t\t\tdeltaAngle = toRadians(degrees);\n\t\t\t}\n\n\t\t\tif (min !== undefined && max !== undefined && max - min < 2 * Math.PI) {\n\t\t\t\tdeltaAngle = minimizeAngle(deltaAngle);\n\t\t\t\tdeltaAngle = deltaAngle > Math.PI ? deltaAngle - 2 * Math.PI : deltaAngle;\n\t\t\t\tdeltaAngle = Math.round(deltaAngle / 10) * 10;\n\t\t\t\tthis.angle = this.angle0 + deltaAngle;\n\t\t\t} else {\n\t\t\t\tthis.angle = minimizeAngle(this.angle0 + deltaAngle);\n\t\t\t\tthis.angle = this.angle > Math.PI ? this.angle - 2 * Math.PI : this.angle;\n\t\t\t}\n\n\t\t\tif (annotation) {\n\t\t\t\tdegrees = toDegrees(this.angle);\n\t\t\t\tannotation.innerText = `${degrees.toFixed(0)}º`;\n\t\t\t}\n\n\t\t\trotMatrix.makeRotationAxis(normal, deltaAngle);\n\t\t\tposNew.copy(origin).applyMatrix4(rotMatrix).sub(origin).negate();\n\t\t\trotMatrix.setPosition(posNew);\n\t\t\tthis.pivotControls.onDrag(rotMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not a function on PointerEvent\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtThreeEvent } from 'angular-three';\nimport { NgtsLine } from 'angular-three-soba/abstractions';\nimport { NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { DoubleSide, Group, Matrix4, Mesh, MeshBasicMaterial, Plane, PlaneGeometry, Ray, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nfunction decomposeIntoBasis(e1: Vector3, e2: Vector3, offset: Vector3) {\n\tconst i1 =\n\t\tMath.abs(e1.x) >= Math.abs(e1.y) && Math.abs(e1.x) >= Math.abs(e1.z)\n\t\t\t? 0\n\t\t\t: Math.abs(e1.y) >= Math.abs(e1.x) && Math.abs(e1.y) >= Math.abs(e1.z)\n\t\t\t\t? 1\n\t\t\t\t: 2;\n\tconst e2DegrowthOrder = [0, 1, 2].sort((a, b) => Math.abs(e2.getComponent(b)) - Math.abs(e2.getComponent(a)));\n\tconst i2 = i1 === e2DegrowthOrder[0] ? e2DegrowthOrder[1] : e2DegrowthOrder[0];\n\tconst a1 = e1.getComponent(i1);\n\tconst a2 = e1.getComponent(i2);\n\tconst b1 = e2.getComponent(i1);\n\tconst b2 = e2.getComponent(i2);\n\tconst c1 = offset.getComponent(i1);\n\tconst c2 = offset.getComponent(i2);\n\n\tconst y = (c2 - c1 * (a2 / a1)) / (b2 - b1 * (a2 / a1));\n\tconst x = (c1 - y * b1) / a1;\n\n\treturn [x, y];\n}\n\nconst ray = new Ray();\nconst intersection = new Vector3();\nconst offsetMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-plane-slider',\n\ttemplate: `\n\t\t<ngt-group #group [matrix]=\"matrixL()\" [matrixAutoUpdate]=\"false\">\n\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t<ngts-html [options]=\"{ position: [0, 0, 0] }\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t#annotation\n\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap\"\n\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t></div>\n\t\t\t\t</ngts-html>\n\t\t\t}\n\t\t\t<ngt-group [position]=\"[pos1() * 1.7, pos1() * 1.7, 0]\">\n\t\t\t\t<ngt-mesh\n\t\t\t\t\t[visible]=\"true\"\n\t\t\t\t\t[scale]=\"length()\"\n\t\t\t\t\t[userData]=\"pivotControls.userData()\"\n\t\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t\t>\n\t\t\t\t\t<ngt-plane-geometry />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t\t[side]=\"DoubleSide\"\n\t\t\t\t\t\t[fog]=\"false\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t\t<ngts-line\n\t\t\t\t\t[points]=\"points()\"\n\t\t\t\t\t[options]=\"{\n\t\t\t\t\t\tposition: [-length() / 2, -length() / 2, 0],\n\t\t\t\t\t\ttransparent: true,\n\t\t\t\t\t\tdepthTest: pivotControls.depthTest(),\n\t\t\t\t\t\tlineWidth: pivotControls.lineWidth(),\n\t\t\t\t\t\tcolor: color(),\n\t\t\t\t\t\topacity: pivotControls.opacity(),\n\t\t\t\t\t\tpolygonOffset: true,\n\t\t\t\t\t\tpolygonOffsetFactor: -10,\n\t\t\t\t\t\tuserData: pivotControls.userData(),\n\t\t\t\t\t\tfog: false,\n\t\t\t\t\t}\"\n\t\t\t\t/>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsHTML, NgtsHTMLContent, NgtsLine],\n})\nexport class NgtsPlaneSlider {\n\tprotected readonly DoubleSide = DoubleSide;\n\n\tdir1 = input.required<Vector3>();\n\tdir2 = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\n\tprivate hovered = signal(false);\n\tprivate clickInfo: { clickPoint: Vector3; e1: Vector3; e2: Vector3; plane: Plane } | null = null;\n\tprivate offsetX0 = 0;\n\tprivate offsetY0 = 0;\n\n\tmatrixL = computed(() => {\n\t\tconst dir1N = this.dir1().clone().normalize();\n\t\tconst dir2N = this.dir2().clone().normalize();\n\t\treturn new Matrix4().makeBasis(dir1N, dir2N, dir1N.clone().cross(dir2N));\n\t});\n\n\tpos1 = computed(() => (this.pivotControls.fixed() ? 1 / 7 : this.pivotControls.scale() / 7));\n\tlength = computed(() => (this.pivotControls.fixed() ? 0.225 : this.pivotControls.scale() * 0.225));\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\tpoints = computed(() => {\n\t\tconst length = this.length();\n\t\treturn [\n\t\t\tnew Vector3(0, 0, 0),\n\t\t\tnew Vector3(0, length, 0),\n\t\t\tnew Vector3(length, length, 0),\n\t\t\tnew Vector3(length, 0, 0),\n\t\t\tnew Vector3(0, 0, 0),\n\t\t];\n\t});\n\n\tconstructor() {\n\t\textend({ Group, Mesh, PlaneGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, axis, group, controls] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.axis(),\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.controls(),\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${this.pivotControls.translation[(axis + 1) % 3].toFixed(2)}, ${this.pivotControls.translation[(axis + 2) % 3].toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst e1 = new Vector3().setFromMatrixColumn(group.matrixWorld, 0).normalize();\n\t\tconst e2 = new Vector3().setFromMatrixColumn(group.matrixWorld, 1).normalize();\n\t\tconst normal = new Vector3().setFromMatrixColumn(group.matrixWorld, 2).normalize();\n\t\tconst plane = new Plane().setFromNormalAndCoplanarPoint(normal, origin);\n\t\tthis.clickInfo = { clickPoint, e1, e2, plane };\n\t\tthis.offsetX0 = this.pivotControls.translation[(axis + 1) % 3];\n\t\tthis.offsetY0 = this.pivotControls.translation[(axis + 2) % 3];\n\t\tthis.pivotControls.onDragStart({ component: 'Slider', axis, origin, directions: [e1, e2, normal] });\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\n\t\t// @ts-expect-error - setPointerCapture is not defined on ThreeEvent\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, e1, e2, plane } = this.clickInfo;\n\t\t\tconst [translationLimits, axis, annotation] = [\n\t\t\t\tthis.pivotControls.translationLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t];\n\n\t\t\tconst [minX, maxX] = translationLimits?.[(axis + 1) % 3] || [undefined, undefined];\n\t\t\tconst [minY, maxY] = translationLimits?.[(axis + 2) % 3] || [undefined, undefined];\n\n\t\t\tray.copy(event.ray);\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tray.direction.negate();\n\t\t\tray.intersectPlane(plane, intersection);\n\t\t\tintersection.sub(clickPoint);\n\t\t\tlet [offsetX, offsetY] = decomposeIntoBasis(e1, e2, intersection);\n\t\t\t/* let offsetY = (intersection.y - (intersection.x * e1.y) / e1.x) / (e2.y - (e2.x * e1.y) / e1.x)\n let offsetX = (intersection.x - offsetY * e2.x) / e1.x */\n\t\t\tif (minX !== undefined) {\n\t\t\t\toffsetX = Math.max(offsetX, minX - this.offsetX0);\n\t\t\t}\n\t\t\tif (maxX !== undefined) {\n\t\t\t\toffsetX = Math.min(offsetX, maxX - this.offsetX0);\n\t\t\t}\n\t\t\tif (minY !== undefined) {\n\t\t\t\toffsetY = Math.max(offsetY, minY - this.offsetY0);\n\t\t\t}\n\t\t\tif (maxY !== undefined) {\n\t\t\t\toffsetY = Math.min(offsetY, maxY - this.offsetY0);\n\t\t\t}\n\t\t\tthis.pivotControls.translation[(axis + 1) % 3] = this.offsetX0 + offsetX;\n\t\t\tthis.pivotControls.translation[(axis + 2) % 3] = this.offsetY0 + offsetY;\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.pivotControls.translation[(axis + 1) % 3].toFixed(2)}, ${this.pivotControls.translation[(axis + 2) % 3].toFixed(2)}`;\n\t\t\t}\n\n\t\t\toffsetMatrix.makeTranslation(\n\t\t\t\toffsetX * e1.x + offsetY * e2.x,\n\t\t\t\toffsetX * e1.y + offsetY * e2.y,\n\t\t\t\toffsetX * e1.z + offsetY * e2.z,\n\t\t\t);\n\t\t\tthis.pivotControls.onDrag(offsetMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls] = [this.annotationRef()?.nativeElement, this.controls()];\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\t\tevent.stopPropagation();\n\t\tthis.clickInfo = null;\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not defined on ThreeEvent\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\tElementRef,\n\tinject,\n\tinput,\n\tsignal,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport { extend, injectStore, NgtArgs, NgtThreeEvent } from 'angular-three';\nimport { calculateScaleFactor, NgtsHTML, NgtsHTMLContent } from 'angular-three-soba/misc';\nimport { Group, Matrix4, Mesh, MeshBasicMaterial, Quaternion, SphereGeometry, Vector3 } from 'three';\nimport { NgtsPivotControls } from './pivot-controls';\n\nconst vec1 = new Vector3();\nconst vec2 = new Vector3();\n\nexport function calculateOffset(clickPoint: Vector3, normal: Vector3, rayStart: Vector3, rayDir: Vector3) {\n\tconst e1 = normal.dot(normal);\n\tconst e2 = normal.dot(clickPoint) - normal.dot(rayStart);\n\tconst e3 = normal.dot(rayDir);\n\n\tif (e3 === 0) {\n\t\treturn -e2 / e1;\n\t}\n\n\tvec1\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e1 / e3)\n\t\t.sub(normal);\n\tvec2\n\t\t.copy(rayDir)\n\t\t.multiplyScalar(e2 / e3)\n\t\t.add(rayStart)\n\t\t.sub(clickPoint);\n\n\treturn -vec1.dot(vec2) / vec1.dot(vec1);\n}\n\nconst upV = new Vector3(0, 1, 0);\nconst scaleV = new Vector3();\nconst scaleMatrix = new Matrix4();\n\n@Component({\n\tselector: 'ngts-scaling-sphere',\n\ttemplate: `\n\t\t<ngt-group #group>\n\t\t\t<ngt-group\n\t\t\t\t[matrix]=\"matrixL()\"\n\t\t\t\t[matrixAutoUpdate]=\"false\"\n\t\t\t\t(pointerdown)=\"onPointerDown($any($event))\"\n\t\t\t\t(pointermove)=\"onPointerMove($any($event))\"\n\t\t\t\t(pointerup)=\"onPointerUp($any($event))\"\n\t\t\t\t(pointerout)=\"onPointerOut($any($event))\"\n\t\t\t>\n\t\t\t\t@if (pivotControls.annotations()) {\n\t\t\t\t\t<ngts-html [options]=\"{ position: [0, position() / 2, 0] }\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t#annotation\n\t\t\t\t\t\t\tngtsHTMLContent\n\t\t\t\t\t\t\tstyle=\"display: none; background: #151520; color: white; padding: 6px 8px; border-radius: 7px; white-space: nowrap;\"\n\t\t\t\t\t\t\t[class]=\"pivotControls.annotationsClass()\"\n\t\t\t\t\t\t></div>\n\t\t\t\t\t</ngts-html>\n\t\t\t\t}\n\t\t\t\t<ngt-mesh #mesh [position]=\"[0, position(), 0]\" [renderOrder]=\"500\" [userData]=\"pivotControls.userData()\">\n\t\t\t\t\t<ngt-sphere-geometry *args=\"[radius(), 12, 12]\" />\n\t\t\t\t\t<ngt-mesh-basic-material\n\t\t\t\t\t\t[transparent]=\"true\"\n\t\t\t\t\t\t[depthTest]=\"pivotControls.depthTest()\"\n\t\t\t\t\t\t[color]=\"color()\"\n\t\t\t\t\t\t[opacity]=\"pivotControls.opacity()\"\n\t\t\t\t\t\t[polygonOffset]=\"true\"\n\t\t\t\t\t\t[polygonOffsetFactor]=\"-10\"\n\t\t\t\t\t/>\n\t\t\t\t</ngt-mesh>\n\t\t\t</ngt-group>\n\t\t</ngt-group>\n\t`,\n\tschemas: [CUSTOM_ELEMENTS_SCHEMA],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [NgtsHTML, NgtsHTMLContent, NgtArgs],\n})\nexport class NgtsScalingSphere {\n\tdirection = input.required<Vector3>();\n\taxis = input.required<0 | 1 | 2>();\n\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tannotationRef = viewChild<unknown, ElementRef<HTMLDivElement>>('annotation', { read: ElementRef });\n\tmeshRef = viewChild.required<ElementRef<Mesh>>('mesh');\n\n\tpivotControls = inject(NgtsPivotControls);\n\tprivate store = injectStore();\n\tprivate controls = this.store.select('controls') as unknown as Signal<{ enabled: boolean }>;\n\tprivate size = this.store.select('size');\n\n\tprivate hovered = signal(false);\n\tprivate scale0 = 1;\n\tprivate scaleCurrent = 1;\n\tprivate clickInfo: {\n\t\tclickPoint: Vector3;\n\t\tdir: Vector3;\n\t\tmPLG: Matrix4;\n\t\tmPLGInv: Matrix4;\n\t\toffsetMultiplier: number;\n\t} | null = null;\n\n\tposition = computed(() => (this.pivotControls.fixed() ? 1.2 : 1.2 * this.pivotControls.scale()));\n\tradius = computed(() =>\n\t\tthis.pivotControls.fixed()\n\t\t\t? (this.pivotControls.lineWidth() / this.pivotControls.scale()) * 1.8\n\t\t\t: this.pivotControls.scale() / 22.5,\n\t);\n\tmatrixL = computed(() => {\n\t\tconst quaternion = new Quaternion().setFromUnitVectors(upV, this.direction().clone().normalize());\n\t\treturn new Matrix4().makeRotationFromQuaternion(quaternion);\n\t});\n\tcolor = computed(() =>\n\t\tthis.hovered() ? this.pivotControls.hoveredColor() : this.pivotControls.axisColors()[this.axis()],\n\t);\n\n\tconstructor() {\n\t\textend({ Group, Mesh, SphereGeometry, MeshBasicMaterial });\n\t}\n\n\tonPointerDown(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls, fixed, scale, direction, axis, size, group] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.controls(),\n\t\t\tthis.pivotControls.fixed(),\n\t\t\tthis.pivotControls.scale(),\n\t\t\tthis.direction(),\n\t\t\tthis.axis(),\n\t\t\tthis.size(),\n\t\t\tthis.groupRef().nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.innerText = `${scale.toFixed(2)}`;\n\t\t\tannotation.style.display = 'block';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tconst rotation = new Matrix4().extractRotation(group.matrixWorld);\n\t\tconst clickPoint = event.point.clone();\n\t\tconst origin = new Vector3().setFromMatrixPosition(group.matrixWorld);\n\t\tconst dir = direction.clone().applyMatrix4(rotation).normalize();\n\t\tconst mPLG = group.matrixWorld.clone();\n\t\tconst mPLGInv = mPLG.clone().invert();\n\t\tconst offsetMultiplier = fixed\n\t\t\t? 1 / calculateScaleFactor(group.getWorldPosition(vec1), scale, event.camera, size)\n\t\t\t: 1;\n\t\tthis.clickInfo = { clickPoint, dir, mPLG, mPLGInv, offsetMultiplier };\n\t\tthis.pivotControls.onDragStart({ component: 'Sphere', axis, origin, directions: [dir] });\n\n\t\tif (controls) {\n\t\t\tcontrols.enabled = false;\n\t\t}\n\t\t// @ts-expect-error - setPointerCapture is not in the type definition\n\t\tevent.target.setPointerCapture(event.pointerId);\n\t}\n\n\tonPointerMove(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tif (!this.hovered()) this.hovered.set(true);\n\n\t\tif (this.clickInfo) {\n\t\t\tconst { clickPoint, dir, mPLG, mPLGInv, offsetMultiplier } = this.clickInfo;\n\t\t\tconst [scaleLimits, axis, position, annotation, fixed, scale, mesh] = [\n\t\t\t\tthis.pivotControls.scaleLimits(),\n\t\t\t\tthis.axis(),\n\t\t\t\tthis.position(),\n\t\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\t\tthis.pivotControls.fixed(),\n\t\t\t\tthis.pivotControls.scale(),\n\t\t\t\tthis.meshRef().nativeElement,\n\t\t\t];\n\n\t\t\tconst [min, max] = scaleLimits?.[axis] || [1e-5, undefined]; // always limit the minimal value, since setting it very low might break the transform\n\t\t\tconst offsetW = calculateOffset(clickPoint, dir, event.ray.origin, event.ray.direction);\n\t\t\tconst offsetL = offsetW * offsetMultiplier;\n\t\t\tconst offsetH = fixed ? offsetL : offsetL / scale;\n\t\t\tlet upscale = Math.pow(2, offsetH * 0.2);\n\n\t\t\tif (event.shiftKey) {\n\t\t\t\tupscale = Math.round(upscale * 10) / 10;\n\t\t\t}\n\n\t\t\tupscale = Math.max(upscale, min / this.scale0);\n\n\t\t\tif (max !== undefined) {\n\t\t\t\tupscale = Math.min(upscale, max / this.scale0);\n\t\t\t}\n\n\t\t\tthis.scaleCurrent = this.scale0 * upscale;\n\t\t\tmesh.position.set(0, position + offsetL, 0);\n\n\t\t\tif (annotation) {\n\t\t\t\tannotation.innerText = `${this.scaleCurrent.toFixed(2)}`;\n\t\t\t}\n\n\t\t\tscaleV.set(1, 1, 1);\n\t\t\tscaleV.setComponent(axis, upscale);\n\t\t\tscaleMatrix.makeScale(scaleV.x, scaleV.y, scaleV.z).premultiply(mPLG).multiply(mPLGInv);\n\t\t\tthis.pivotControls.onDrag(scaleMatrix);\n\t\t}\n\t}\n\n\tonPointerUp(event: NgtThreeEvent<PointerEvent>) {\n\t\tconst [annotation, controls, position, mesh] = [\n\t\t\tthis.annotationRef()?.nativeElement,\n\t\t\tthis.controls(),\n\t\t\tthis.position(),\n\t\t\tthis.meshRef().nativeElement,\n\t\t];\n\n\t\tif (annotation) {\n\t\t\tannotation.style.display = 'none';\n\t\t}\n\n\t\tevent.stopPropagation();\n\t\tthis.scale0 = this.scaleCurrent;\n\t\tthis.clickInfo = null;\n\t\tmesh.position.set(0, position, 0);\n\t\tthis.pivotControls.onDragEnd();\n\t\tif (controls) {\n\t\t\tcontrols.enabled = true;\n\t\t}\n\t\t// @ts-expect-error - releasePointerCapture is not in the type definition\n\t\tevent.target.releasePointerCapture(event.pointerId);\n\t}\n\n\tonPointerOut(event: NgtThreeEvent<PointerEvent>) {\n\t\tevent.stopPropagation();\n\t\tthis.hovered.set(false);\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { extend, getLocalState, injectBeforeRender, injectStore, NgtAnyRecord, omit, pick } from 'angular-three';\nimport { calculateScaleFactor } from 'angular-three-soba/misc';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport { Box3, Group, Matrix4, Mesh, Vector3 } from 'three';\nimport { NgtsAxisArrow } from './axis-arrow';\nimport { NgtsAxisRotator } from './axis-rotator';\nimport { NgtsPlaneSlider } from './plane-slider';\nimport { NgtsScalingSphere } from './scaling-sphere';\n\nexport interface OnDragStartParameters {\n\tcomponent: 'Arrow' | 'Slider' | 'Rotator' | 'Sphere';\n\taxis: 0 | 1 | 2;\n\torigin: Vector3;\n\tdirections: Vector3[];\n}\n\nexport interface OnDragParameters {\n\tl: Matrix4;\n\tdeltaL: Matrix4;\n\tw: Matrix4;\n\tdeltaW: Matrix4;\n}\n\nconst mL0 = new Matrix4();\nconst mW0 = new Matrix4();\nconst mP = new Matrix4();\nconst mPInv = new Matrix4();\nconst mW = new Matrix4();\nconst mL = new Matrix4();\nconst mL0Inv = new Matrix4();\nconst mdL = new Matrix4();\nconst mG = new Matrix4();\n\nconst bb = new Box3();\nconst bbObj = new Box3();\nconst vCenter = new Vector3();\nconst vSize = new Vector3();\nconst vAnchorOffset = new Vector3();\nconst vPosition = new Vector3();\nconst vScale = new Vector3();\n\nconst xDir = new Vector3(1, 0, 0);\nconst yDir = new Vector3(0, 1, 0);\nconst zDir = new Vector3(0, 0, 1);\n\nexport interface NgtsPivotControlsOptions {\n\t/** Enables/disables the control, true */\n\tenabled: boolean;\n\t/** Scale of the gizmo, 1 */\n\tscale: number;\n\t/** Width of the gizmo lines, this is a THREE.Line2 prop, 2.5 */\n\tlineWidth: number;\n\t/** If fixed is true is remains constant in size, scale is now in pixels, false */\n\tfixed: boolean;\n\t/** Pivot does not act as a group, it won't shift contents but can offset in position */\n\toffset: [number, number, number];\n\t/** Starting rotation */\n\trotation: [number, number, number];\n\n\t/** Starting matrix */\n\tmatrix?: Matrix4;\n\t/** BBAnchor, each axis can be between -1/0/+1 */\n\tanchor?: [number, number, number];\n\t/** If autoTransform is true, automatically apply the local transform on drag, true */\n\tautoTransform: boolean;\n\t/** Allows you to switch individual axes off */\n\tactiveAxes: [boolean, boolean, boolean];\n\n\t/** Allows you to switch individual transformations off */\n\tdisableAxes: boolean;\n\tdisableSliders: boolean;\n\tdisableRotations: boolean;\n\tdisableScaling: boolean;\n\n\t/** Limits */\n\ttranslationLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\trotationLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\tscaleLimits?: [[number, number] | undefined, [number, number] | undefined, [number, number] | undefined];\n\n\t/** RGB colors */\n\taxisColors: [string | number, string | number, string | number];\n\t/** Color of the hovered item */\n\thoveredColor: string | number;\n\t/** HTML value annotations, default: false */\n\tannotations: boolean;\n\t/** CSS Classname applied to the HTML annotations */\n\tannotationsClass?: string;\n\t/** Set this to false if you want the gizmo to be visible through faces */\n\tdepthTest: boolean;\n\topacity?: number;\n\tvisible: boolean;\n\tuserData?: NgtAnyRecord;\n}\n\nconst defaultOptions: NgtsPivotControlsOptions = {\n\tenabled: true,\n\tautoTransform: true,\n\tdisableAxes: false,\n\tdisableSliders: false,\n\tdisableRotations: false,\n\tdisableScaling: false,\n\tactiveAxes: [true, true, true],\n\toffset: [0, 0, 0],\n\trotation: [0, 0, 0],\n\tscale: 1,\n\tlineWidth: 4,\n\tfixed: false,\n\tdepthTest: true,\n\taxisColors: ['#ff2060', '#20df80', '#2080ff'],\n\thoveredColor: '#ffff40',\n\tannotations: false,\n\topacity: 1,\n\tvisible: true,\n};\n\n@Component({\n\tselector: 'ngts-pivot-controls',\n\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})\n// TODO: PivotControls is not working properly with control flow\nexport class NgtsPivotControls {\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\tparameters = omit(this.options, [\n\t\t'enabled',\n\t\t'matrix',\n\t\t'autoTransform',\n\t\t'anchor',\n\t\t'disableAxes',\n\t\t'disableSliders',\n\t\t'disableRotations',\n\t\t'disableScaling',\n\t\t'activeAxes',\n\t\t'offset',\n\t\t'rotation',\n\t\t'scale',\n\t\t'lineWidth',\n\t\t'fixed',\n\t\t'translationLimits',\n\t\t'rotationLimits',\n\t\t'scaleLimits',\n\t\t'depthTest',\n\t\t'axisColors',\n\t\t'hoveredColor',\n\t\t'annotations',\n\t\t'annotationsClass',\n\t\t'opacity',\n\t\t'visible',\n\t\t'userData',\n\t]);\n\n\tdragStarted = output<OnDragStartParameters>();\n\tdragEnded = output<void>();\n\tdragged = output<OnDragParameters>();\n\n\tmatrix = pick(this.options, 'matrix');\n\tannotations = pick(this.options, 'annotations');\n\tannotationsClass = pick(this.options, 'annotationsClass');\n\ttranslationLimits = pick(this.options, 'translationLimits');\n\trotationLimits = pick(this.options, 'rotationLimits');\n\tscaleLimits = pick(this.options, 'scaleLimits');\n\tautoTransform = pick(this.options, 'autoTransform');\n\tfixed = pick(this.options, 'fixed');\n\thoveredColor = pick(this.options, 'hoveredColor');\n\taxisColors = pick(this.options, 'axisColors');\n\tlineWidth = pick(this.options, 'lineWidth');\n\tscale = pick(this.options, 'scale');\n\tuserData = pick(this.options, 'userData');\n\topacity = pick(this.options, 'opacity');\n\tdepthTest = pick(this.options, 'depthTest');\n\toffset = pick(this.options, 'offset');\n\trotation = pick(this.options, 'rotation');\n\tvisible = pick(this.options, 'visible');\n\tenabled = pick(this.options, 'enabled');\n\tdisableAxes = pick(this.options, 'disableAxes');\n\tdisableSliders = pick(this.options, 'disableSliders');\n\tdisableRotations = pick(this.options, 'disableRotations');\n\tdisableScaling = pick(this.options, 'disableScaling');\n\tactiveAxes = pick(this.options, 'activeAxes');\n\n\txDir = xDir;\n\tyDir = yDir;\n\tzDir = zDir;\n\n\tparentRef = viewChild.required<ElementRef<Group>>('parent');\n\tgroupRef = viewChild.required<ElementRef<Group>>('group');\n\tgizmoRef = viewChild.required<ElementRef<Group>>('gizmo');\n\tchildrenRef = viewChild.required<ElementRef<Group>>('children');\n\n\tprivate store = injectStore();\n\tprivate invalidate = this.store.select('invalidate');\n\n\ttranslation: [number, number, number] = [0, 0, 0];\n\n\tprivate anchor = pick(this.options, 'anchor');\n\tprivate cameraScale = new Vector3(1, 1, 1);\n\tprivate gizmoScale = new Vector3(1, 1, 1);\n\n\tconstructor() {\n\t\textend({ Group });\n\n\t\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 localState = getLocalState(childrenContainer);\n\t\t\tif (!localState) 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.invalidate(),\n\t\t\t\tthis.options(),\n\t\t\t\t[localState.objects(), localState.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 Mesh).geometry) return;\n\t\t\t\tif (!(obj as Mesh).geometry.boundingBox) (obj as Mesh).geometry.computeBoundingBox();\n\t\t\t\tmL.copy(obj.matrixWorld).premultiply(mPInv);\n\t\t\t\tconst boundingBox = (obj as 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 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 Vector3();\n\t\tinjectBeforeRender(({ camera, size, invalidate }) => {\n\t\t\tconst [{ fixed, scale, matrix }, gizmo, group] = [\n\t\t\t\tthis.options(),\n\t\t\t\tthis.gizmoRef().nativeElement,\n\t\t\t\tthis.groupRef().nativeElement,\n\t\t\t];\n\n\t\t\tif (fixed) {\n\t\t\t\tconst sf = calculateScaleFactor(gizmo.getWorldPosition(vec), scale, camera, size);\n\t\t\t\tthis.cameraScale.setScalar(sf);\n\t\t\t}\n\n\t\t\tif (matrix && matrix instanceof Matrix4) {\n\t\t\t\tgroup.matrix = matrix;\n\t\t\t}\n\n\t\t\t// Update gizmo scale in accordance with matrix changes\n\t\t\t// Without this, there might be noticeable turbulence if scaling happens fast enough\n\t\t\tgizmo.updateWorldMatrix(true, true);\n\n\t\t\tmG.makeRotationFromEuler(gizmo.rotation).setPosition(gizmo.position).premultiply(group.matrixWorld);\n\t\t\tthis.gizmoScale.setFromMatrixScale(mG);\n\n\t\t\tvScale.copy(this.cameraScale).divide(this.gizmoScale);\n\n\t\t\tif (\n\t\t\t\tMath.abs(gizmo.scale.x - vScale.x) > 1e-4 ||\n\t\t\t\tMath.abs(gizmo.scale.y - vScale.y) > 1e-4 ||\n\t\t\t\tMath.abs(gizmo.scale.z - vScale.z) > 1e-4\n\t\t\t) {\n\t\t\t\tgizmo.scale.copy(vScale);\n\t\t\t\tinvalidate();\n\t\t\t}\n\t\t});\n\t}\n\n\tonDragStart(parameters: OnDragStartParameters) {\n\t\tconst group = this.groupRef().nativeElement;\n\t\tmL0.copy(group.matrix);\n\t\tmW0.copy(group.matrixWorld);\n\t\tthis.dragStarted.emit(parameters);\n\t\tthis.store.snapshot.invalidate();\n\t}\n\n\tonDrag(mdW: Matrix4) {\n\t\tconst [parent, group, autoTransform] = [\n\t\t\tthis.parentRef().nativeElement,\n\t\t\tthis.groupRef().nativeElement,\n\t\t\tthis.autoTransform(),\n\t\t];\n\n\t\tmP.copy(parent.matrixWorld);\n\t\tmPInv.copy(mP).invert();\n\t\t// After applying the delta\n\t\tmW.copy(mW0).premultiply(mdW);\n\t\tmL.copy(mW).premultiply(mPInv);\n\t\tmL0Inv.copy(mL0).invert();\n\t\tmdL.copy(mL).multiply(mL0Inv);\n\n\t\tif (autoTransform) {\n\t\t\tgroup.matrix.copy(mL);\n\t\t}\n\n\t\tthis.dragged.emit({ l: mL, deltaL: mdL, w: mW, deltaW: mdW });\n\t\tthis.store.snapshot.invalidate();\n\t}\n\n\tonDragEnd() {\n\t\tthis.dragEnded.emit();\n\t\tthis.store.snapshot.invalidate();\n\t}\n}\n","import {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tCUSTOM_ELEMENTS_SCHEMA,\n\teffect,\n\tElementRef,\n\tinput,\n\toutput,\n\tSignal,\n\tviewChild,\n} from '@angular/core';\nimport {\n\textend,\n\tgetLocalState,\n\tinjectStore,\n\tNgtArgs,\n\tNgtGroup,\n\tNgtObject3DNode,\n\tomit,\n\tpick,\n\tresolveRef,\n} from 'angular-three';\nimport { Camera, Group, Object3D, Event as ThreeEvent } from 'three';\nimport { TransformControls } from 'three-stdlib';\n\ninterface ControlsProto {\n\tenabled: boolean;\n}\n\nexport type NgtsTransformControlsObject = NgtObject3DNode<TransformControls, typeof TransformControls>;\n\nexport type NgtsTransformControlsOptions = Partial<NgtsTransformControlsObject> &\n\tPartial<NgtGroup> & {\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?: 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<Object3D | ElementRef<Object3D> | undefined | null>(null);\n\toptions = input({} as Partial<NgtsTransformControlsOptions>);\n\tparameters = 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<ThreeEvent>();\n\tmouseDown = output<ThreeEvent>();\n\tmouseUp = output<ThreeEvent>();\n\tobjectChange = output<ThreeEvent>();\n\n\tprivate groupRef = viewChild.required<ElementRef<Group>>('group');\n\n\tprivate store = injectStore();\n\tprivate glDomElement = this.store.select('gl', 'domElement');\n\tprivate defaultCamera = this.store.select('camera');\n\tprivate events = this.store.select('events');\n\tprivate defaultControls = this.store.select('controls') as unknown as Signal<ControlsProto>;\n\tprivate invalidate = this.store.select('invalidate');\n\n\tcontrols = computed(() => {\n\t\tlet camera = this.camera();\n\t\tif (!camera) {\n\t\t\tcamera = this.defaultCamera();\n\t\t}\n\n\t\tlet domElement = this.domElement();\n\t\tif (!domElement) {\n\t\t\tdomElement = this.events().connected || this.glDomElement();\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 localState = getLocalState(group);\n\t\tif (!localState) return;\n\n\t\tconst [object, controls] = [resolveRef(this.object()), this.controls(), localState.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.defaultControls();\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.invalidate()];\n\t\tconst onChange = (event: ThreeEvent) => {\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","ray","intersection"],"mappings":"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"}