import { ScanMovementActions } from '@3cr/types-ts'; import { watch, WatchSource } from 'vue'; import { scanState } from '@/models/scanState'; import { useViewer3cr } from '@/composables/useViewer3cr'; type WatchScanMovement = { [key in ScanMovementActions]: WatchSource; }; // @ts-ignore const movements: WatchScanMovement = { [ScanMovementActions.sm05]: () => scanState.value.InteractionSettings.PanSensivitity, [ScanMovementActions.sm08]: () => scanState.value.InteractionSettings.ZoomSensitivity, [ScanMovementActions.sm10]: () => scanState.value.InteractionSettings.RotateSensitivity, [ScanMovementActions.sm12]: () => scanState.value.InteractionSettings.CameraRotateSensitivity, }; export function useScanMovement(): void { const viewer3cr = useViewer3cr(); for (const movement of Object.keys( movements, ) as (keyof WatchScanMovement)[]) { watch(movements[movement], async (value: number) => { await viewer3cr.scanMovementHandler(movement, value); }); } }