feat(fe): zoom to fit on double click of tree item

This commit is contained in:
andrewwallacespeckle
2025-08-12 15:54:17 +01:00
parent ba8a62dd2a
commit b525aa2505
@@ -5,6 +5,7 @@
class="group flex items-center w-full p-1 pr-2 cursor-pointer text-left justify-between"
:class="[getItemBackgroundClass(), getItemOpacityClass()]"
@click="handleItemClick($event)"
@dblclick="handleItemDoubleClick()"
@mouseenter="handleItemMouseEnter()"
@mouseleave="handleItemMouseLeave()"
@focusin="handleItemMouseEnter()"
@@ -65,7 +66,8 @@ import {
import {
useSelectionUtilities,
useFilterUtilities,
useHighlightedObjectsUtilities
useHighlightedObjectsUtilities,
useCameraUtilities
} from '~~/lib/viewer/composables/ui'
import { useInjectedViewerState } from '~~/lib/viewer/composables/setup'
import type { UnifiedVirtualItem } from '~~/lib/viewer/composables/tree'
@@ -83,6 +85,7 @@ const { objects: selectedObjects } = useSelectionUtilities()
const { hideObjects, showObjects, isolateObjects, unIsolateObjects } =
useFilterUtilities()
const { highlightObjects, unhighlightObjects } = useHighlightedObjectsUtilities()
const { zoom } = useCameraUtilities()
const {
viewer: {
@@ -146,6 +149,11 @@ const handleItemClick = (event: MouseEvent | KeyboardEvent) => {
emit('item-click', props.item, event)
}
const handleItemDoubleClick = () => {
if (!rawSpeckleData.value?.id) return
zoom([rawSpeckleData.value.id])
}
const handleItemMouseEnter = () => {
if (!rawSpeckleData.value) return
highlightObjects(getTargetObjectIds(rawSpeckleData.value))