@viamrobotics/motion-tools 0.5.1 → 0.5.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.
- package/dist/color.js +3 -4
- package/dist/components/CameraControls.svelte +2 -2
- package/dist/components/CameraControls.svelte.d.ts +3 -1
- package/dist/components/Focus.svelte +2 -16
- package/dist/components/Frame.svelte +4 -2
- package/dist/components/KeyboardControls.svelte +102 -0
- package/dist/components/KeyboardControls.svelte.d.ts +7 -0
- package/dist/components/Scene.svelte +5 -1
- package/dist/components/StaticGeometries.svelte +13 -31
- package/dist/components/StaticGeometries.svelte.d.ts +2 -17
- package/dist/components/dashboard/Dashboard.svelte +0 -9
- package/dist/components/xr/XR.svelte +4 -11
- package/dist/components/xr/XR.svelte.d.ts +2 -17
- package/dist/hooks/useObjectEvents.svelte.d.ts +1 -0
- package/dist/hooks/useObjectEvents.svelte.js +8 -1
- package/dist/hooks/useSettings.svelte.d.ts +2 -0
- package/dist/hooks/useSettings.svelte.js +3 -1
- package/package.json +9 -9
- package/dist/keybindings.d.ts +0 -12
- package/dist/keybindings.js +0 -12
package/dist/color.js
CHANGED
|
@@ -46,11 +46,10 @@ const oklchToHex = (raw) => {
|
|
|
46
46
|
* @returns A new THREE.Color instance with the darkened color.
|
|
47
47
|
*/
|
|
48
48
|
export const darkenColor = (value, percent) => {
|
|
49
|
-
const
|
|
50
|
-
const hsl = { h: 0, s: 0, l: 0 };
|
|
51
|
-
color.getHSL(hsl);
|
|
49
|
+
const original = new Color(value);
|
|
50
|
+
const hsl = original.getHSL({ h: 0, s: 0, l: 0 });
|
|
52
51
|
hsl.l = Math.max(0, hsl.l * (1 - percent / 100));
|
|
53
|
-
return
|
|
52
|
+
return new Color().setHSL(hsl.h, hsl.s, hsl.l);
|
|
54
53
|
};
|
|
55
54
|
export const colors = {
|
|
56
55
|
selected: oklchToHex(twColors.red['900']),
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
interface Props {
|
|
43
43
|
ref?: CameraController
|
|
44
44
|
enabled?: boolean
|
|
45
|
-
children?: Snippet
|
|
45
|
+
children?: Snippet<[{ ref: CameraController }]>
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
let { ref = $bindable(), enabled = true, children }: Props = $props()
|
|
@@ -77,5 +77,5 @@
|
|
|
77
77
|
is={controls}
|
|
78
78
|
bind:ref
|
|
79
79
|
>
|
|
80
|
-
{@render children?.()}
|
|
80
|
+
{@render children?.({ ref: controls })}
|
|
81
81
|
</T>
|
|
@@ -3,7 +3,9 @@ import type { Snippet } from 'svelte';
|
|
|
3
3
|
interface Props {
|
|
4
4
|
ref?: CameraController;
|
|
5
5
|
enabled?: boolean;
|
|
6
|
-
children?: Snippet
|
|
6
|
+
children?: Snippet<[{
|
|
7
|
+
ref: CameraController;
|
|
8
|
+
}]>;
|
|
7
9
|
}
|
|
8
10
|
declare const CameraControls: import("svelte").Component<Props, {}, "ref">;
|
|
9
11
|
type CameraControls = ReturnType<typeof CameraControls>;
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import {
|
|
2
|
+
import { T } from '@threlte/core'
|
|
3
3
|
import { TrackballControls, Gizmo } from '@threlte/extras'
|
|
4
|
-
import {
|
|
5
|
-
import { Keybindings } from '../keybindings'
|
|
4
|
+
import { useFocusedObject3d } from '../hooks/useSelection.svelte'
|
|
6
5
|
import { Box3, Vector3 } from 'three'
|
|
7
6
|
import Camera from './Camera.svelte'
|
|
8
7
|
|
|
9
|
-
const focus = useFocused()
|
|
10
8
|
const focusedObject = useFocusedObject3d()
|
|
11
9
|
const object3d = $derived(focusedObject.current)
|
|
12
10
|
|
|
@@ -21,20 +19,8 @@
|
|
|
21
19
|
center = box.getCenter(vec).toArray()
|
|
22
20
|
}
|
|
23
21
|
})
|
|
24
|
-
|
|
25
|
-
const onkeydown = ({ key }: KeyboardEvent) => {
|
|
26
|
-
if (key === Keybindings.ESCAPE) {
|
|
27
|
-
focus.set(undefined)
|
|
28
|
-
} else if (key === Keybindings.UP || key === Keybindings.DOWN) {
|
|
29
|
-
if (object3d && 'material' in object3d && isInstanceOf(object3d.material, 'PointsMaterial')) {
|
|
30
|
-
object3d.material.size += key === Keybindings.UP ? 0.001 : -0.001
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
22
|
</script>
|
|
35
23
|
|
|
36
|
-
<svelte:window {onkeydown} />
|
|
37
|
-
|
|
38
24
|
<Camera position={[2, 0, 0]}>
|
|
39
25
|
<TrackballControls target={center}>
|
|
40
26
|
<Gizmo />
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { useObjectEvents } from '../hooks/useObjectEvents.svelte'
|
|
6
6
|
import Geometry from './Geometry.svelte'
|
|
7
7
|
import { useSelected } from '../hooks/useSelection.svelte'
|
|
8
|
-
import { colors } from '../color'
|
|
8
|
+
import { colors, darkenColor } from '../color'
|
|
9
9
|
|
|
10
10
|
interface Props {
|
|
11
11
|
uuid: string
|
|
@@ -24,7 +24,9 @@
|
|
|
24
24
|
|
|
25
25
|
<Geometry
|
|
26
26
|
{uuid}
|
|
27
|
-
color={selected.current === uuid
|
|
27
|
+
color={selected.current === uuid
|
|
28
|
+
? `#${darkenColor(rest.metadata.color ?? colors.default, 75).getHexString()}`
|
|
29
|
+
: undefined}
|
|
28
30
|
{...events}
|
|
29
31
|
{...rest}
|
|
30
32
|
/>
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { MathUtils } from 'three'
|
|
3
|
+
import { useTask } from '@threlte/core'
|
|
4
|
+
import type CameraController from 'camera-controls'
|
|
5
|
+
import { PressedKeys } from 'runed'
|
|
6
|
+
import { useFocused } from '../hooks/useSelection.svelte'
|
|
7
|
+
import { useSettings } from '../hooks/useSettings.svelte'
|
|
8
|
+
|
|
9
|
+
interface Props {
|
|
10
|
+
cameraControls: CameraController
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
let { cameraControls }: Props = $props()
|
|
14
|
+
|
|
15
|
+
const focus = useFocused()
|
|
16
|
+
const settings = useSettings()
|
|
17
|
+
|
|
18
|
+
const keys = new PressedKeys()
|
|
19
|
+
const w = $derived(keys.has('w'))
|
|
20
|
+
const s = $derived(keys.has('s'))
|
|
21
|
+
const a = $derived(keys.has('a'))
|
|
22
|
+
const d = $derived(keys.has('d'))
|
|
23
|
+
const up = $derived(keys.has('arrowup'))
|
|
24
|
+
const left = $derived(keys.has('arrowleft'))
|
|
25
|
+
const down = $derived(keys.has('arrowdown'))
|
|
26
|
+
const right = $derived(keys.has('arrowright'))
|
|
27
|
+
const any = $derived(w || s || a || d || up || left || down || right)
|
|
28
|
+
|
|
29
|
+
const { start, stop } = useTask(
|
|
30
|
+
(delta) => {
|
|
31
|
+
const dt = delta * 1000
|
|
32
|
+
|
|
33
|
+
if (a) {
|
|
34
|
+
cameraControls.truck(-0.01 * dt, 0, true)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (d) {
|
|
38
|
+
cameraControls.truck(0.01 * dt, 0, true)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (w) {
|
|
42
|
+
cameraControls.forward(0.01 * dt, true)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (s) {
|
|
46
|
+
cameraControls.forward(-0.01 * dt, true)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (left) {
|
|
50
|
+
cameraControls.rotate(-0.1 * MathUtils.DEG2RAD * dt, 0, true)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (right) {
|
|
54
|
+
cameraControls.rotate(0.1 * MathUtils.DEG2RAD * dt, 0, true)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (up) {
|
|
58
|
+
cameraControls.rotate(0, -0.05 * MathUtils.DEG2RAD * dt, true)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (down) {
|
|
62
|
+
cameraControls.rotate(0, 0.05 * MathUtils.DEG2RAD * dt, true)
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
{ autoStart: false, autoInvalidate: false }
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
$effect.pre(() => {
|
|
69
|
+
if (any) {
|
|
70
|
+
start()
|
|
71
|
+
} else {
|
|
72
|
+
stop()
|
|
73
|
+
}
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
keys.onKeys('escape', () => {
|
|
77
|
+
if (keys.has('escape')) {
|
|
78
|
+
focus.set(undefined)
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
keys.onKeys('c', () => {
|
|
83
|
+
settings.current.cameraMode =
|
|
84
|
+
settings.current.cameraMode === 'perspective' ? 'orthographic' : 'perspective'
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
keys.onKeys('1', () => {
|
|
88
|
+
settings.current.transformMode = 'translate'
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
keys.onKeys('2', () => {
|
|
92
|
+
settings.current.transformMode = 'rotate'
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
keys.onKeys('3', () => {
|
|
96
|
+
settings.current.transformMode = 'scale'
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
keys.onKeys(['ctrl', 'x'], () => {
|
|
100
|
+
settings.current.enableXR = !settings.current.enableXR
|
|
101
|
+
})
|
|
102
|
+
</script>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type CameraController from 'camera-controls';
|
|
2
|
+
interface Props {
|
|
3
|
+
cameraControls: CameraController;
|
|
4
|
+
}
|
|
5
|
+
declare const KeyboardControls: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type KeyboardControls = ReturnType<typeof KeyboardControls>;
|
|
7
|
+
export default KeyboardControls;
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import type { Snippet } from 'svelte'
|
|
16
16
|
import { useXR } from '@threlte/xr'
|
|
17
17
|
import { useTransformControls } from '../hooks/useControls.svelte'
|
|
18
|
+
import KeyboardControls from './KeyboardControls.svelte'
|
|
18
19
|
|
|
19
20
|
interface Props {
|
|
20
21
|
children?: Snippet
|
|
@@ -48,7 +49,10 @@
|
|
|
48
49
|
{#if !$isPresenting}
|
|
49
50
|
<Camera position={[3, 3, 3]}>
|
|
50
51
|
<CameraControls enabled={!transformControls.active}>
|
|
51
|
-
|
|
52
|
+
{#snippet children({ ref })}
|
|
53
|
+
<KeyboardControls cameraControls={ref} />
|
|
54
|
+
<Gizmo />
|
|
55
|
+
{/snippet}
|
|
52
56
|
</CameraControls>
|
|
53
57
|
</Camera>
|
|
54
58
|
{/if}
|
|
@@ -3,45 +3,27 @@
|
|
|
3
3
|
import { useSelected } from '../hooks/useSelection.svelte'
|
|
4
4
|
import { useStaticGeometries } from '../hooks/useStaticGeometries.svelte'
|
|
5
5
|
import { useTransformControls } from '../hooks/useControls.svelte'
|
|
6
|
-
import {
|
|
7
|
-
import { PersistedState } from 'runed'
|
|
6
|
+
import { PressedKeys } from 'runed'
|
|
8
7
|
import { quaternionToPose, scaleToDimensions, vector3ToPose } from '../transform'
|
|
9
8
|
import { Quaternion, Vector3 } from 'three'
|
|
10
9
|
import Frame from './Frame.svelte'
|
|
10
|
+
import { useSettings } from '../hooks/useSettings.svelte'
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
const settings = useSettings()
|
|
14
13
|
const transformControls = useTransformControls()
|
|
15
14
|
const geometries = useStaticGeometries()
|
|
16
15
|
const selected = useSelected()
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
const mode = $derived(settings.current.transformMode)
|
|
19
18
|
|
|
20
19
|
const quaternion = new Quaternion()
|
|
21
20
|
const vector3 = new Vector3()
|
|
22
|
-
</script>
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
onkeydown={(event) => {
|
|
26
|
-
if (event.metaKey || event.ctrlKey) {
|
|
27
|
-
return
|
|
28
|
-
}
|
|
22
|
+
const keys = new PressedKeys()
|
|
29
23
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
geometries.add()
|
|
34
|
-
} else if (key === Keybindings.REMOVE_GEOMETRY) {
|
|
35
|
-
geometries.remove(selected.current ?? '')
|
|
36
|
-
} else if (key === Keybindings.TRANSLATE) {
|
|
37
|
-
mode.current = 'translate'
|
|
38
|
-
} else if (key === Keybindings.ROTATE) {
|
|
39
|
-
mode.current = 'rotate'
|
|
40
|
-
} else if (key === Keybindings.SCALE) {
|
|
41
|
-
mode.current = 'scale'
|
|
42
|
-
}
|
|
43
|
-
}}
|
|
44
|
-
/>
|
|
24
|
+
keys.onKeys('=', () => geometries.add())
|
|
25
|
+
keys.onKeys('-', () => geometries.remove(selected.current ?? ''))
|
|
26
|
+
</script>
|
|
45
27
|
|
|
46
28
|
{#each geometries.current as object (object.uuid)}
|
|
47
29
|
<Frame
|
|
@@ -53,20 +35,20 @@
|
|
|
53
35
|
>
|
|
54
36
|
{#snippet children({ ref })}
|
|
55
37
|
{#if selected.current === ref.uuid}
|
|
56
|
-
{#key mode
|
|
38
|
+
{#key mode}
|
|
57
39
|
<TransformControls
|
|
58
40
|
object={ref}
|
|
59
|
-
|
|
41
|
+
{mode}
|
|
60
42
|
onmouseDown={() => transformControls.setActive(true)}
|
|
61
43
|
onmouseUp={() => {
|
|
62
44
|
transformControls.setActive(false)
|
|
63
45
|
|
|
64
|
-
if (mode
|
|
46
|
+
if (mode === 'translate') {
|
|
65
47
|
vector3ToPose(ref.getWorldPosition(vector3), object.pose)
|
|
66
|
-
} else if (mode
|
|
48
|
+
} else if (mode === 'rotate') {
|
|
67
49
|
quaternionToPose(ref.getWorldQuaternion(quaternion), object.pose)
|
|
68
50
|
ref.quaternion.copy(quaternion)
|
|
69
|
-
} else if (mode
|
|
51
|
+
} else if (mode === 'scale' && object.geometry?.case === 'box') {
|
|
70
52
|
scaleToDimensions(ref.scale, object.geometry)
|
|
71
53
|
ref.scale.setScalar(1)
|
|
72
54
|
}
|
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
$$bindings?: Bindings;
|
|
4
|
-
} & Exports;
|
|
5
|
-
(internal: unknown, props: {
|
|
6
|
-
$$events?: Events;
|
|
7
|
-
$$slots?: Slots;
|
|
8
|
-
}): Exports & {
|
|
9
|
-
$set?: any;
|
|
10
|
-
$on?: any;
|
|
11
|
-
};
|
|
12
|
-
z_$$bindings?: Bindings;
|
|
13
|
-
}
|
|
14
|
-
declare const StaticGeometries: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
-
[evt: string]: CustomEvent<any>;
|
|
16
|
-
}, {}, {}, string>;
|
|
17
|
-
type StaticGeometries = InstanceType<typeof StaticGeometries>;
|
|
1
|
+
declare const StaticGeometries: import("svelte").Component<Record<string, never>, {}, "">;
|
|
2
|
+
type StaticGeometries = ReturnType<typeof StaticGeometries>;
|
|
18
3
|
export default StaticGeometries;
|
|
@@ -5,15 +5,6 @@
|
|
|
5
5
|
const settings = useSettings()
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
|
-
<svelte:window
|
|
9
|
-
onkeydown={({ key }) => {
|
|
10
|
-
if (key.toLowerCase() === 'c') {
|
|
11
|
-
settings.current.cameraMode =
|
|
12
|
-
settings.current.cameraMode === 'perspective' ? 'orthographic' : 'perspective'
|
|
13
|
-
}
|
|
14
|
-
}}
|
|
15
|
-
/>
|
|
16
|
-
|
|
17
8
|
<div class="absolute top-2 flex w-full justify-center">
|
|
18
9
|
<!-- transform -->
|
|
19
10
|
<!-- <fieldset>
|
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { PersistedState } from 'runed'
|
|
3
2
|
import { XR, XRButton } from '@threlte/xr'
|
|
4
3
|
import OriginMarker from './OriginMarker.svelte'
|
|
5
4
|
import DomPortal from '../DomPortal.svelte'
|
|
5
|
+
import { useSettings } from '../../hooks/useSettings.svelte'
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const settings = useSettings()
|
|
8
|
+
const enableXR = $derived(settings.current.enableXR)
|
|
8
9
|
</script>
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
onkeydown={(event) => {
|
|
12
|
-
if (event.ctrlKey && event.key.toLowerCase() === 'a') {
|
|
13
|
-
enableXR.current = !enableXR.current
|
|
14
|
-
}
|
|
15
|
-
}}
|
|
16
|
-
/>
|
|
17
|
-
|
|
18
|
-
{#if enableXR.current}
|
|
11
|
+
{#if enableXR}
|
|
19
12
|
<XR>
|
|
20
13
|
<OriginMarker />
|
|
21
14
|
</XR>
|
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
$$bindings?: Bindings;
|
|
4
|
-
} & Exports;
|
|
5
|
-
(internal: unknown, props: {
|
|
6
|
-
$$events?: Events;
|
|
7
|
-
$$slots?: Slots;
|
|
8
|
-
}): Exports & {
|
|
9
|
-
$set?: any;
|
|
10
|
-
$on?: any;
|
|
11
|
-
};
|
|
12
|
-
z_$$bindings?: Bindings;
|
|
13
|
-
}
|
|
14
|
-
declare const Xr: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
-
[evt: string]: CustomEvent<any>;
|
|
16
|
-
}, {}, {}, string>;
|
|
17
|
-
type Xr = InstanceType<typeof Xr>;
|
|
1
|
+
declare const Xr: import("svelte").Component<Record<string, never>, {}, "">;
|
|
2
|
+
type Xr = ReturnType<typeof Xr>;
|
|
18
3
|
export default Xr;
|
|
@@ -4,6 +4,7 @@ export declare const useObjectEvents: (uuid: () => string) => {
|
|
|
4
4
|
onpointerenter: (event: IntersectionEvent<MouseEvent>) => void;
|
|
5
5
|
onpointerleave: (event: IntersectionEvent<MouseEvent>) => void;
|
|
6
6
|
ondblclick: (event: IntersectionEvent<MouseEvent>) => void;
|
|
7
|
+
onpointerdown: (event: IntersectionEvent<MouseEvent>) => void;
|
|
7
8
|
onclick: (event: IntersectionEvent<MouseEvent>) => void;
|
|
8
9
|
onpointermissed: () => void;
|
|
9
10
|
};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { useCursor } from '@threlte/extras';
|
|
2
2
|
import { useFocused, useSelected } from './useSelection.svelte';
|
|
3
3
|
import { useVisibility } from './useVisibility.svelte';
|
|
4
|
+
import { Vector2 } from 'three';
|
|
4
5
|
export const useObjectEvents = (uuid) => {
|
|
5
6
|
const { onPointerEnter, onPointerLeave } = useCursor();
|
|
6
7
|
const selected = useSelected();
|
|
7
8
|
const focused = useFocused();
|
|
8
9
|
const visibility = useVisibility();
|
|
10
|
+
const down = new Vector2();
|
|
9
11
|
return {
|
|
10
12
|
get visible() {
|
|
11
13
|
return visibility.get(uuid());
|
|
@@ -22,9 +24,14 @@ export const useObjectEvents = (uuid) => {
|
|
|
22
24
|
event.stopPropagation();
|
|
23
25
|
focused.set(uuid());
|
|
24
26
|
},
|
|
27
|
+
onpointerdown: (event) => {
|
|
28
|
+
down.copy(event.pointer);
|
|
29
|
+
},
|
|
25
30
|
onclick: (event) => {
|
|
26
31
|
event.stopPropagation();
|
|
27
|
-
|
|
32
|
+
if (down.distanceToSquared(event.pointer) < 0.1) {
|
|
33
|
+
selected.set(uuid());
|
|
34
|
+
}
|
|
28
35
|
},
|
|
29
36
|
onpointermissed: () => selected.set(),
|
|
30
37
|
};
|
|
@@ -3,12 +3,14 @@ import { getContext, setContext } from 'svelte';
|
|
|
3
3
|
const key = Symbol('dashboard-context');
|
|
4
4
|
const defaults = () => ({
|
|
5
5
|
cameraMode: 'perspective',
|
|
6
|
+
transformMode: 'translate',
|
|
7
|
+
enableXR: false,
|
|
6
8
|
});
|
|
7
9
|
export const provideSettings = () => {
|
|
8
10
|
let settings = $state(defaults());
|
|
9
11
|
get('motion-tools-settings').then((response) => {
|
|
10
12
|
if (response) {
|
|
11
|
-
settings = response;
|
|
13
|
+
settings = { ...settings, ...response };
|
|
12
14
|
}
|
|
13
15
|
});
|
|
14
16
|
$effect(() => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@viamrobotics/motion-tools",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.2",
|
|
4
4
|
"description": "Motion visualization with Viam",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"@skeletonlabs/skeleton": "3.1.3",
|
|
17
17
|
"@skeletonlabs/skeleton-svelte": "1.2.3",
|
|
18
18
|
"@sveltejs/adapter-static": "^3.0.8",
|
|
19
|
-
"@sveltejs/kit": "^2.21.
|
|
19
|
+
"@sveltejs/kit": "^2.21.4",
|
|
20
20
|
"@sveltejs/package": "^2.3.11",
|
|
21
21
|
"@sveltejs/vite-plugin-svelte": "^5.1.0",
|
|
22
22
|
"@tailwindcss/forms": "^0.5.10",
|
|
@@ -32,18 +32,18 @@
|
|
|
32
32
|
"@types/bun": "^1.2.15",
|
|
33
33
|
"@types/lodash-es": "^4.17.12",
|
|
34
34
|
"@types/three": "^0.177.0",
|
|
35
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
36
|
-
"@typescript-eslint/parser": "^8.
|
|
35
|
+
"@typescript-eslint/eslint-plugin": "^8.34.0",
|
|
36
|
+
"@typescript-eslint/parser": "^8.34.0",
|
|
37
37
|
"@viamrobotics/prime-core": "^0.1.5",
|
|
38
38
|
"@viamrobotics/sdk": "0.43.0",
|
|
39
39
|
"@viamrobotics/svelte-sdk": "0.3.3",
|
|
40
40
|
"@vitejs/plugin-basic-ssl": "^2.0.0",
|
|
41
|
-
"@zag-js/svelte": "1.15.
|
|
42
|
-
"@zag-js/tree-view": "1.15.
|
|
41
|
+
"@zag-js/svelte": "1.15.1",
|
|
42
|
+
"@zag-js/tree-view": "1.15.1",
|
|
43
43
|
"camera-controls": "^2.10.1",
|
|
44
44
|
"eslint": "^9.28.0",
|
|
45
45
|
"eslint-config-prettier": "^10.1.5",
|
|
46
|
-
"eslint-plugin-svelte": "^3.9.
|
|
46
|
+
"eslint-plugin-svelte": "^3.9.2",
|
|
47
47
|
"globals": "^16.2.0",
|
|
48
48
|
"idb-keyval": "^6.2.2",
|
|
49
49
|
"jsdom": "^26.1.0",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"prettier-plugin-tailwindcss": "^0.6.12",
|
|
55
55
|
"publint": "^0.3.12",
|
|
56
56
|
"runed": "^0.28.0",
|
|
57
|
-
"svelte": "5.33.
|
|
57
|
+
"svelte": "5.33.19",
|
|
58
58
|
"svelte-check": "^4.2.1",
|
|
59
59
|
"svelte-virtuallists": "^1.4.2",
|
|
60
60
|
"tailwindcss": "^4.1.8",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"threlte-uikit": "^1.1.0",
|
|
63
63
|
"tsx": "^4.19.4",
|
|
64
64
|
"typescript": "^5.8.3",
|
|
65
|
-
"typescript-eslint": "^8.
|
|
65
|
+
"typescript-eslint": "^8.34.0",
|
|
66
66
|
"vite": "^6.3.5",
|
|
67
67
|
"vite-plugin-mkcert": "^1.17.8",
|
|
68
68
|
"vitest": "^3.2.3"
|
package/dist/keybindings.d.ts
DELETED