9f4b0c99da
* Fixing up "Manage Project" & "New Project" Dialogs * Dialog Updates * Updates from tickets * Remove sidepanel * Remove max-height prop from Dialog component * Updates to Profile Dialog * Props for Buttons in Dialog. Attachment Dialog * Remove margin to show issue with dialogs * Update to stories * Responsive updates * Fix overflow on MoveTo * Use Dialog header prop * Dialog updates * Responsive Changes * Responsive fixes * Small responsive change * Fixes * Type based declaration * Last fixes * Small darkmode fixes * Updated type * Update * Updates from PR comments * Fix storybook issues * Updates from PR * Updates from PR * Changes from Agi * Turntable mode Toggle * Fix dialog shadows on scroll * Fix invite autocomplete * Changes from PR Comments * Small styling updates * Responsive views * Adjust Danger zones * Fix typo * New Webhook Icon. Swap icon prop to slot. * Adjust Icon weights * FE2-TASK-27 * FE2-TASK-26 * FE2-TASK-28
54 lines
1.4 KiB
Vue
54 lines
1.4 KiB
Vue
<template>
|
|
<ViewerControlsButtonToggle
|
|
v-tippy="'Free Orbit'"
|
|
flat
|
|
:active="!localViewerSettings.turntableMode"
|
|
secondary
|
|
@click="toggleTurntableMode()"
|
|
>
|
|
<IconFreeOrbit class="h-5 w-5" />
|
|
</ViewerControlsButtonToggle>
|
|
</template>
|
|
<script setup lang="ts">
|
|
import { useSynchronizedCookie } from '~~/lib/common/composables/reactiveCookie'
|
|
import { useInjectedViewer } from '~~/lib/viewer/composables/setup'
|
|
type ViewerUserSettings = {
|
|
turntableMode: boolean
|
|
}
|
|
|
|
const localViewerSettings = useSynchronizedCookie<ViewerUserSettings>(
|
|
`localViewerSettings`,
|
|
{
|
|
default: () => {
|
|
return { turntableMode: false }
|
|
}
|
|
}
|
|
)
|
|
|
|
const { instance } = useInjectedViewer()
|
|
|
|
const setViewerCameraHandlerControlsMaxPolarAngle = (angle: number) => {
|
|
instance.cameraHandler.controls.maxPolarAngle = angle
|
|
}
|
|
|
|
const toggleTurntableMode = () => {
|
|
localViewerSettings.value = {
|
|
...localViewerSettings.value,
|
|
turntableMode: !localViewerSettings.value.turntableMode
|
|
}
|
|
if (localViewerSettings.value.turntableMode) {
|
|
setViewerCameraHandlerControlsMaxPolarAngle(Math.PI / 2)
|
|
} else {
|
|
setViewerCameraHandlerControlsMaxPolarAngle(Math.PI)
|
|
}
|
|
}
|
|
|
|
onMounted(() => {
|
|
if (localViewerSettings.value.turntableMode) {
|
|
setViewerCameraHandlerControlsMaxPolarAngle(Math.PI / 2)
|
|
} else {
|
|
setViewerCameraHandlerControlsMaxPolarAngle(Math.PI)
|
|
}
|
|
})
|
|
</script>
|