Skip to content

Commit 1f3de95

Browse files
APP-14348: Add measurement tool snapping (#378)
* measurement tool axis snapping * measurement tool axis snapping * changeset
1 parent 3b6c662 commit 1f3de95

10 files changed

Lines changed: 381 additions & 26 deletions

File tree

.changeset/bumpy-stamps-tell.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@viamrobotics/motion-tools': minor
3+
---
4+
5+
Feature: measurement tool axis snapping

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@
6161
"@vitest/coverage-v8": "^3.2.4",
6262
"@zag-js/collapsible": "1.22.1",
6363
"@zag-js/floating-panel": "1.22.1",
64+
"@zag-js/popover": "1.22.1",
6465
"@zag-js/svelte": "1.22.1",
66+
"@zag-js/toggle-group": "1.22.1",
6567
"@zag-js/tree-view": "1.22.1",
6668
"camera-controls": "3.1.0",
6769
"eslint": "9.34.0",
@@ -107,7 +109,9 @@
107109
"@zag-js/collapsible": ">=1",
108110
"@zag-js/dialog": ">=1.31",
109111
"@zag-js/floating-panel": ">=1",
112+
"@zag-js/popover": ">=1",
110113
"@zag-js/svelte": ">=1",
114+
"@zag-js/toggle-group": ">=1",
111115
"@zag-js/tree-view": ">=1",
112116
"camera-controls": ">=3",
113117
"idb-keyval": ">=6",

pnpm-lock.yaml

Lines changed: 44 additions & 22 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<script lang="ts">
2+
import { T, type Props as ThrelteProps } from '@threlte/core'
3+
import type { Vector3Tuple, Group } from 'three'
4+
import { HTML } from '@threlte/extras'
5+
6+
interface Props extends ThrelteProps<typeof Group> {
7+
position: Vector3Tuple
8+
}
9+
10+
let { position, ref = $bindable(), ...rest }: Props = $props()
11+
</script>
12+
13+
<T.Group
14+
bind:ref
15+
{...rest}
16+
{position}
17+
>
18+
<HTML
19+
center
20+
class="h-2.5 w-2.5 rounded-full bg-black/70"
21+
/>
22+
23+
<HTML
24+
class="pointer-events-none mb-2 w-16 -translate-x-1/2 -translate-y-[calc(100%+10px)] border border-black bg-white px-1 py-0.5 text-xs text-wrap"
25+
>
26+
<div class="flex justify-between">
27+
<span class="text-subtle-2">x</span>
28+
<div>
29+
{position[0].toFixed(2)}<span class="text-subtle-2">m</span>
30+
</div>
31+
</div>
32+
33+
<div class="flex justify-between">
34+
<span class="text-subtle-2">y</span>
35+
<div>
36+
{position[1].toFixed(2)}<span class="text-subtle-2">m</span>
37+
</div>
38+
</div>
39+
40+
<div class="flex justify-between">
41+
<span class="text-subtle-2">z</span>
42+
<div>
43+
{position[2].toFixed(2)}<span class="text-subtle-2">m</span>
44+
</div>
45+
</div>
46+
</HTML>
47+
</T.Group>

0 commit comments

Comments
 (0)