@viamrobotics/motion-tools 1.14.0 → 1.15.0

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.
Files changed (127) hide show
  1. package/dist/FrameConfigUpdater.svelte.d.ts +2 -2
  2. package/dist/HoverUpdater.svelte.d.ts +1 -1
  3. package/dist/attribute.js +1 -1
  4. package/dist/color.d.ts +1 -1
  5. package/dist/color.js +2 -2
  6. package/dist/components/App.svelte +25 -21
  7. package/dist/components/App.svelte.d.ts +1 -1
  8. package/dist/components/BatchedArrows.svelte +5 -3
  9. package/dist/components/Camera.svelte +1 -0
  10. package/dist/components/CameraControls.svelte +5 -3
  11. package/dist/components/Entities/Arrows/ArrowGroups.svelte +6 -3
  12. package/dist/components/Entities/Arrows/Arrows.svelte +6 -3
  13. package/dist/components/Entities/Entities.svelte +7 -5
  14. package/dist/components/Entities/Frame.svelte +8 -5
  15. package/dist/components/Entities/Frame.svelte.d.ts +2 -2
  16. package/dist/components/Entities/GLTF.svelte +8 -5
  17. package/dist/components/Entities/GLTF.svelte.d.ts +2 -2
  18. package/dist/components/Entities/Geometry.svelte +8 -5
  19. package/dist/components/Entities/Line.svelte +8 -5
  20. package/dist/components/Entities/Line.svelte.d.ts +1 -1
  21. package/dist/components/Entities/LineDots.svelte +1 -1
  22. package/dist/components/Entities/LineGeometry.svelte +1 -1
  23. package/dist/components/Entities/Mesh.svelte +8 -5
  24. package/dist/components/Entities/Points.svelte +9 -6
  25. package/dist/components/Entities/Points.svelte.d.ts +2 -2
  26. package/dist/components/Entities/Pose.svelte +4 -3
  27. package/dist/components/Entities/hooks/useEntityEvents.svelte.d.ts +1 -1
  28. package/dist/components/Entities/hooks/useEntityEvents.svelte.js +2 -2
  29. package/dist/components/FileDrop/FileDrop.svelte +10 -6
  30. package/dist/components/FileDrop/file-dropper.d.ts +1 -1
  31. package/dist/components/FileDrop/pcd-dropper.js +1 -1
  32. package/dist/components/FileDrop/ply-dropper.js +1 -1
  33. package/dist/components/FileDrop/snapshot-dropper.js +1 -1
  34. package/dist/components/Focus.svelte +4 -2
  35. package/dist/components/KeyboardControls.svelte +4 -2
  36. package/dist/components/Lasso/Debug.svelte +5 -2
  37. package/dist/components/Lasso/Lasso.svelte +9 -6
  38. package/dist/components/Lasso/Tool.svelte +10 -7
  39. package/dist/components/MeasureTool/MeasurePoint.svelte +2 -1
  40. package/dist/components/MeasureTool/MeasurePoint.svelte.d.ts +1 -1
  41. package/dist/components/MeasureTool/MeasureTool.svelte +7 -5
  42. package/dist/components/PCD.svelte +4 -3
  43. package/dist/components/PointerMissBox.svelte +3 -2
  44. package/dist/components/Scene.svelte +12 -9
  45. package/dist/components/SceneProviders.svelte +20 -18
  46. package/dist/components/Selected.svelte +5 -3
  47. package/dist/components/Snapshot.svelte +8 -5
  48. package/dist/components/StaticGeometries.svelte +10 -7
  49. package/dist/components/hover/HoveredEntities.svelte +2 -1
  50. package/dist/components/hover/HoveredEntity.svelte +2 -1
  51. package/dist/components/hover/HoveredEntityTooltip.svelte +1 -0
  52. package/dist/components/hover/LinkedHoveredEntity.svelte +7 -5
  53. package/dist/components/overlay/AddRelationship.svelte +4 -2
  54. package/dist/components/overlay/Details.svelte +21 -19
  55. package/dist/components/overlay/FloatingPanel.svelte +40 -3
  56. package/dist/components/overlay/FloatingPanel.svelte.d.ts +1 -0
  57. package/dist/components/overlay/LiveUpdatesBanner.svelte +1 -0
  58. package/dist/components/overlay/Logs.svelte +4 -2
  59. package/dist/components/overlay/Popover.svelte +3 -2
  60. package/dist/components/overlay/RefreshRate.svelte +4 -2
  61. package/dist/components/overlay/dashboard/Button.svelte +2 -1
  62. package/dist/components/overlay/dashboard/Button.svelte.d.ts +1 -1
  63. package/dist/components/overlay/dashboard/Dashboard.svelte +3 -1
  64. package/dist/components/overlay/left-pane/AddFrames.svelte +4 -2
  65. package/dist/components/overlay/left-pane/Drawer.svelte +3 -2
  66. package/dist/components/overlay/left-pane/Tree.svelte +6 -12
  67. package/dist/components/overlay/left-pane/TreeContainer.svelte +33 -50
  68. package/dist/components/overlay/left-pane/TreeContainer.svelte.d.ts +1 -1
  69. package/dist/components/overlay/settings/Settings.svelte +37 -10
  70. package/dist/components/overlay/settings/Tabs.svelte +2 -1
  71. package/dist/components/overlay/widgets/ArmPositions.svelte +3 -2
  72. package/dist/components/overlay/widgets/Camera.svelte +6 -5
  73. package/dist/components/weblab/WeblabActive.svelte +2 -1
  74. package/dist/components/xr/ArmTeleop.svelte +7 -6
  75. package/dist/components/xr/BentPlaneGeometry.svelte +3 -2
  76. package/dist/components/xr/CameraFeed.svelte +2 -0
  77. package/dist/components/xr/Controllers.svelte +5 -3
  78. package/dist/components/xr/Draggable.svelte +4 -3
  79. package/dist/components/xr/HandCollider.svelte +2 -1
  80. package/dist/components/xr/JointLimitsWidget.svelte +1 -0
  81. package/dist/components/xr/OriginMarker.svelte +2 -1
  82. package/dist/components/xr/PointDistance.svelte +3 -2
  83. package/dist/components/xr/XR.svelte +8 -6
  84. package/dist/components/xr/XRConfigPanel.svelte +4 -3
  85. package/dist/components/xr/XRControllerSettings.svelte +2 -1
  86. package/dist/components/xr/XRToast.svelte +4 -3
  87. package/dist/ecs/traits.d.ts +1 -1
  88. package/dist/ecs/traits.js +1 -1
  89. package/dist/ecs/useQuery.svelte.js +1 -1
  90. package/dist/frame.js +1 -1
  91. package/dist/hooks/use3DModels.svelte.js +3 -3
  92. package/dist/hooks/useConfigFrames.svelte.js +3 -3
  93. package/dist/hooks/useDrawAPI.svelte.js +9 -9
  94. package/dist/hooks/useFramelessComponents.svelte.js +1 -1
  95. package/dist/hooks/useFrames.svelte.js +7 -7
  96. package/dist/hooks/useGeometries.svelte.js +8 -8
  97. package/dist/hooks/useMouseRaycaster.svelte.d.ts +1 -1
  98. package/dist/hooks/useMouseRaycaster.svelte.js +1 -1
  99. package/dist/hooks/usePartConfig.svelte.d.ts +1 -1
  100. package/dist/hooks/usePartConfig.svelte.js +3 -3
  101. package/dist/hooks/usePointcloudObjects.svelte.js +6 -6
  102. package/dist/hooks/usePointclouds.svelte.js +5 -5
  103. package/dist/hooks/usePose.svelte.js +7 -7
  104. package/dist/hooks/useSelection.svelte.d.ts +1 -1
  105. package/dist/hooks/useWeblabs.svelte.d.ts +1 -0
  106. package/dist/hooks/useWeblabs.svelte.js +15 -3
  107. package/dist/hooks/useWorldState.svelte.js +8 -8
  108. package/dist/plugins/bvh.svelte.js +2 -2
  109. package/dist/snapshot.d.ts +2 -2
  110. package/dist/snapshot.js +4 -4
  111. package/dist/three/BatchedArrow.d.ts +1 -1
  112. package/dist/three/BatchedArrow.js +1 -1
  113. package/dist/three/InstancedArrows/InstancedArrows.d.ts +1 -1
  114. package/dist/three/InstancedArrows/InstancedArrows.js +3 -3
  115. package/dist/three/InstancedArrows/box.js +1 -1
  116. package/dist/three/InstancedArrows/geometry.js +1 -1
  117. package/dist/three/InstancedArrows/raycast.d.ts +1 -1
  118. package/dist/three/InstancedArrows/raycast.js +1 -1
  119. package/dist/three/OBBHelper.d.ts +1 -1
  120. package/dist/three/OBBHelper.js +1 -1
  121. package/dist/three/OrientationVector.js +1 -1
  122. package/dist/transform.js +1 -1
  123. package/package.json +3 -2
  124. package/dist/hooks/__tests__/fixtures/ResizableTestWrapper.svelte +0 -41
  125. package/dist/hooks/__tests__/fixtures/ResizableTestWrapper.svelte.d.ts +0 -6
  126. package/dist/hooks/useResizable.svelte.d.ts +0 -12
  127. package/dist/hooks/useResizable.svelte.js +0 -46
@@ -1,31 +1,24 @@
1
1
  <script lang="ts">
2
- import { draggable } from '@neodrag/svelte'
3
- import Tree from './Tree.svelte'
4
- import { useSelectedEntity } from '../../../hooks/useSelection.svelte'
5
- import { provideTreeExpandedContext } from './useExpanded.svelte'
6
- import AddFrames from './AddFrames.svelte'
2
+ import { type Entity, IsExcluded } from 'koota'
3
+
4
+ import { traits, useQuery, useWorld } from '../../../ecs'
7
5
  import { useEnvironment } from '../../../hooks/useEnvironment.svelte'
8
- import { usePartID } from '../../../hooks/usePartID.svelte'
9
- import { usePartConfig } from '../../../hooks/usePartConfig.svelte'
10
6
  import { useFrames } from '../../../hooks/useFrames.svelte'
11
- import { traits, useQuery, useWorld } from '../../../ecs'
12
- import { IsExcluded, type Entity } from 'koota'
13
- import { buildTreeNodes, type TreeNode } from './buildTree'
14
- import { MIN_DIMENSIONS, useResizable } from '../../../hooks/useResizable.svelte'
7
+ import { usePartConfig } from '../../../hooks/usePartConfig.svelte'
8
+ import { usePartID } from '../../../hooks/usePartID.svelte'
9
+ import { useSelectedEntity } from '../../../hooks/useSelection.svelte'
15
10
 
16
- const { ...rest } = $props()
11
+ import FloatingPanel from '../FloatingPanel.svelte'
12
+ import AddFrames from './AddFrames.svelte'
13
+ import { buildTreeNodes, type TreeNode } from './buildTree'
14
+ import Tree from './Tree.svelte'
15
+ import { provideTreeExpandedContext } from './useExpanded.svelte'
17
16
 
18
17
  provideTreeExpandedContext()
19
18
 
20
- let container = $state.raw<HTMLDivElement>()
21
- let dragElement = $state.raw<HTMLElement>()
22
-
23
19
  const partID = usePartID()
24
20
  const selectedEntity = useSelectedEntity()
25
- const resizable = useResizable(
26
- () => 'treeview',
27
- () => ({ width: 240, height: window.innerHeight - 20 })
28
- )
21
+
29
22
  const environment = useEnvironment()
30
23
  const partConfig = usePartConfig()
31
24
  const frames = useFrames()
@@ -46,39 +39,29 @@
46
39
  entity: worldEntity,
47
40
  children: rootNodes,
48
41
  })
49
-
50
- $effect(() => {
51
- if (container) {
52
- resizable.observe(container)
53
- }
54
- })
55
42
  </script>
56
43
 
57
- <div
58
- bind:this={container}
59
- class="bg-extralight border-medium absolute top-0 left-0 z-4 m-2 resize overflow-y-auto border text-xs"
60
- style:min-width="{MIN_DIMENSIONS.width}px"
61
- style:min-height="{MIN_DIMENSIONS.height}px"
62
- style:width={resizable.current ? `${resizable.current.width}px` : undefined}
63
- style:height={resizable.current ? `${resizable.current.height}px` : undefined}
64
- use:draggable={{
65
- bounds: 'body',
66
- handle: dragElement,
67
- }}
68
- {...rest}
44
+ <FloatingPanel
45
+ isOpen
46
+ defaultPosition={{ x: 10, y: 10 }}
47
+ defaultSize={{ width: 240, height: 400 }}
48
+ title="World"
49
+ exitable={false}
50
+ resizable
69
51
  >
70
- <Tree
71
- {rootNode}
72
- {nodeMap}
73
- bind:dragElement
74
- onSelectionChange={(event) => {
75
- const value = event.selectedValue[0]
52
+ <div class="text-xs">
53
+ <Tree
54
+ {rootNode}
55
+ {nodeMap}
56
+ onSelectionChange={(event) => {
57
+ const value = event.selectedValue[0]
76
58
 
77
- selectedEntity.set(value ? (Number(value) as Entity) : undefined)
78
- }}
79
- />
59
+ selectedEntity.set(value ? (Number(value) as Entity) : undefined)
60
+ }}
61
+ />
80
62
 
81
- {#if environment.current.isStandalone && partID.current && partConfig.hasEditPermissions}
82
- <AddFrames />
83
- {/if}
84
- </div>
63
+ {#if environment.current.isStandalone && partID.current && partConfig.hasEditPermissions}
64
+ <AddFrames />
65
+ {/if}
66
+ </div>
67
+ </FloatingPanel>
@@ -1,3 +1,3 @@
1
- declare const TreeContainer: import("svelte").Component<Record<string, any>, {}, "">;
1
+ declare const TreeContainer: import("svelte").Component<Record<string, never>, {}, "">;
2
2
  type TreeContainer = ReturnType<typeof TreeContainer>;
3
3
  export default TreeContainer;
@@ -1,21 +1,25 @@
1
1
  <script lang="ts">
2
- import { Switch, Input } from '@viamrobotics/prime-core'
2
+ import { useThrelte } from '@threlte/core'
3
3
  import { Portal } from '@threlte/extras'
4
- import RefreshRate from '../RefreshRate.svelte'
5
- import { useSettings } from '../../../hooks/useSettings.svelte'
4
+ import { Input, Switch } from '@viamrobotics/prime-core'
6
5
  import { useResourceNames } from '@viamrobotics/svelte-sdk'
7
- import { usePartID } from '../../../hooks/usePartID.svelte'
8
- import { RefreshRates, useMachineSettings } from '../../../hooks/useMachineSettings.svelte'
6
+ import { PersistedState } from 'runed'
7
+ import { onMount } from 'svelte'
8
+
9
+ import DashboardButton from '../dashboard/Button.svelte'
10
+ import XRControllerSettings from '../../xr/XRControllerSettings.svelte'
9
11
  import { useGeometries } from '../../../hooks/useGeometries.svelte'
12
+ import { RefreshRates, useMachineSettings } from '../../../hooks/useMachineSettings.svelte'
13
+ import { usePartID } from '../../../hooks/usePartID.svelte'
10
14
  import { usePointClouds } from '../../../hooks/usePointclouds.svelte'
11
- import { useThrelte } from '@threlte/core'
12
15
  import { useRefetchPoses } from '../../../hooks/useRefetchPoses'
16
+ import { useSettings } from '../../../hooks/useSettings.svelte'
17
+ import { useWeblabs, WEBLABS_EXPERIMENTS } from '../../../hooks/useWeblabs.svelte'
18
+
13
19
  import FloatingPanel from '../FloatingPanel.svelte'
14
- import DashboardButton from '../dashboard/Button.svelte'
15
- import Tabs from './Tabs.svelte'
16
- import { PersistedState } from 'runed'
20
+ import RefreshRate from '../RefreshRate.svelte'
17
21
  import ToggleGroup from '../ToggleGroup.svelte'
18
- import XRControllerSettings from '../../xr/XRControllerSettings.svelte'
22
+ import Tabs from './Tabs.svelte'
19
23
 
20
24
  const { invalidate } = useThrelte()
21
25
  const partID = usePartID()
@@ -26,6 +30,12 @@
26
30
  const geometries = useGeometries()
27
31
  const pointclouds = usePointClouds()
28
32
  const { refetchPoses } = useRefetchPoses()
33
+ const weblabs = useWeblabs()
34
+ const knownWeblabs = Object.keys(WEBLABS_EXPERIMENTS)
35
+
36
+ onMount(() => {
37
+ weblabs.load(knownWeblabs)
38
+ })
29
39
 
30
40
  // Invalidate the renderer for any settings change
31
41
  $effect(() => {
@@ -269,6 +279,22 @@
269
279
  </div>
270
280
  {/snippet}
271
281
 
282
+ {#snippet Weblabs()}
283
+ <div class="flex flex-col gap-1 text-xs">
284
+ {#each knownWeblabs as experiment (experiment)}
285
+ <label class="flex items-center justify-between gap-2 py-0.5">
286
+ {experiment}
287
+ <Switch
288
+ on={weblabs.isActive(experiment)}
289
+ on:change={() => weblabs.toggle(experiment)}
290
+ />
291
+ </label>
292
+ {:else}
293
+ No weblabs defined
294
+ {/each}
295
+ </div>
296
+ {/snippet}
297
+
272
298
  {#snippet Widgets()}
273
299
  <div class="text-gray-9 flex flex-col gap-1 text-xs">
274
300
  <label class="flex items-center justify-between gap-2 py-1">
@@ -319,6 +345,7 @@
319
345
  { label: 'Vision', content: Vision },
320
346
  { label: 'Widgets', content: Widgets },
321
347
  { label: 'Stats', content: Stats },
348
+ { label: 'Weblabs', content: Weblabs },
322
349
  ...('xr' in navigator ? [{ label: 'VR / AR', content: XR }] : []),
323
350
  ]}
324
351
  onValueChange={(value) => {
@@ -1,7 +1,8 @@
1
1
  <script lang="ts">
2
2
  import type { Snippet } from 'svelte'
3
+
4
+ import { normalizeProps, useMachine } from '@zag-js/svelte'
3
5
  import * as tabs from '@zag-js/tabs'
4
- import { useMachine, normalizeProps } from '@zag-js/svelte'
5
6
 
6
7
  interface Props {
7
8
  defaultTab?: string
@@ -1,9 +1,10 @@
1
1
  <script lang="ts">
2
2
  import { draggable } from '@neodrag/svelte'
3
- import { formatNumeric } from '../../../format'
3
+ import { Icon, Label, Select } from '@viamrobotics/prime-core'
4
+
4
5
  import Table from '../Table.svelte'
6
+ import { formatNumeric } from '../../../format'
5
7
  import { useArmClient } from '../../../hooks/useArmClient.svelte'
6
- import { Icon, Label, Select } from '@viamrobotics/prime-core'
7
8
 
8
9
  const { ...rest } = $props()
9
10
 
@@ -1,11 +1,12 @@
1
1
  <script lang="ts">
2
2
  import { draggable } from '@neodrag/svelte'
3
3
  import { Icon, Select } from '@viamrobotics/prime-core'
4
- import { CameraStream, useRobotClient, useConnectionStatus } from '@viamrobotics/svelte-sdk'
5
- import { StreamClient, MachineConnectionEvent } from '@viamrobotics/sdk'
6
- import { useSettings } from '../../../hooks/useSettings.svelte'
7
- import { usePartID } from '../../../hooks/usePartID.svelte'
4
+ import { MachineConnectionEvent, StreamClient } from '@viamrobotics/sdk'
5
+ import { CameraStream, useConnectionStatus, useRobotClient } from '@viamrobotics/svelte-sdk'
6
+
8
7
  import { useEnvironment } from '../../../hooks/useEnvironment.svelte'
8
+ import { usePartID } from '../../../hooks/usePartID.svelte'
9
+ import { useSettings } from '../../../hooks/useSettings.svelte'
9
10
 
10
11
  interface Resolution {
11
12
  width: number
@@ -115,7 +116,7 @@
115
116
  </script>
116
117
 
117
118
  <div
118
- class="bg-extralight border-medium absolute top-0 left-0 z-4 m-2 flex resize-x flex-col overflow-hidden border text-xs"
119
+ class="bg-extralight border-medium absolute top-0 left-0 z-4 m-2 flex resize-x flex-col overflow-hidden border text-xs dark:text-black"
119
120
  style:width="320px"
120
121
  style:height="auto !important"
121
122
  use:draggable={{
@@ -1,7 +1,8 @@
1
1
  <script lang="ts">
2
- import { useWeblabs } from '../../hooks/useWeblabs.svelte'
3
2
  import type { Snippet } from 'svelte'
4
3
 
4
+ import { useWeblabs } from '../../hooks/useWeblabs.svelte'
5
+
5
6
  interface Props {
6
7
  experiment: string
7
8
  renderIfActive?: boolean
@@ -1,17 +1,18 @@
1
1
  <script lang="ts">
2
- import { useTask, T } from '@threlte/core'
2
+ import { T, useTask } from '@threlte/core'
3
3
  import { useController, useXR, type XRController } from '@threlte/xr'
4
- import { Vector3, Quaternion } from 'three'
5
- import { createResourceClient } from '@viamrobotics/svelte-sdk'
6
4
  import { ArmClient, GripperClient } from '@viamrobotics/sdk'
7
5
  import * as VIAM from '@viamrobotics/sdk'
8
- import { usePartID } from '../../hooks/usePartID.svelte'
6
+ import { createResourceClient } from '@viamrobotics/svelte-sdk'
7
+ import { Quaternion, Vector3 } from 'three'
8
+
9
9
  import {
10
- getFrameTransformationQuaternion,
11
10
  calculatePositionTarget,
11
+ getFrameTransformationQuaternion,
12
12
  } from './math'
13
- import { OrientationVector } from '../../three/OrientationVector'
14
13
  import { xrToast } from './toasts.svelte'
14
+ import { usePartID } from '../../hooks/usePartID.svelte'
15
+ import { OrientationVector } from '../../three/OrientationVector'
15
16
 
16
17
  interface Props {
17
18
  armName: string
@@ -1,8 +1,9 @@
1
1
  <script lang="ts">
2
- import { Vector2, PlaneGeometry } from 'three'
3
- import { T } from '@threlte/core'
4
2
  import type { BufferAttribute } from 'three'
5
3
 
4
+ import { T } from '@threlte/core'
5
+ import { PlaneGeometry, Vector2 } from 'three'
6
+
6
7
  export let args: [
7
8
  radius: number,
8
9
  width?: number | undefined,
@@ -2,7 +2,9 @@
2
2
  import { T, useTask } from '@threlte/core'
3
3
  import { createStreamClient } from '@viamrobotics/svelte-sdk'
4
4
  import { VideoTexture } from 'three'
5
+
5
6
  import { usePartID } from '../../hooks/usePartID.svelte'
7
+
6
8
  import BentPlaneGeometry from './BentPlaneGeometry.svelte'
7
9
 
8
10
  interface CameraFeedProps {
@@ -1,10 +1,12 @@
1
1
  <script lang="ts">
2
- import { Controller } from '@threlte/xr'
3
2
  import { RigidBody } from '@threlte/rapier'
4
- import HandCollider from './HandCollider.svelte'
5
- import ArmTeleop from './ArmTeleop.svelte'
3
+ import { Controller } from '@threlte/xr'
4
+
6
5
  import { useSettings } from '../../hooks/useSettings.svelte'
7
6
 
7
+ import ArmTeleop from './ArmTeleop.svelte'
8
+ import HandCollider from './HandCollider.svelte'
9
+
8
10
  const settings = useSettings()
9
11
 
10
12
  // Get controller config from settings
@@ -1,11 +1,12 @@
1
1
  <script lang="ts">
2
+ import type { Snippet } from 'svelte'
3
+
4
+ import { RigidBody as RigidBodyType } from '@dimforge/rapier3d-compat'
2
5
  import { T, useTask } from '@threlte/core'
3
6
  import { useGamepad } from '@threlte/extras'
7
+ import { AutoColliders, RigidBody } from '@threlte/rapier'
4
8
  import { useController } from '@threlte/xr'
5
- import { RigidBody as RigidBodyType } from '@dimforge/rapier3d-compat'
6
- import type { Snippet } from 'svelte'
7
9
  import { Group, Vector3 } from 'three'
8
- import { AutoColliders, RigidBody } from '@threlte/rapier'
9
10
 
10
11
  interface Props {
11
12
  children: Snippet
@@ -1,7 +1,8 @@
1
1
  <script lang="ts">
2
+ import type { Group } from 'three'
3
+
2
4
  import { useParent, useTask } from '@threlte/core'
3
5
  import { Collider, useRigidBody } from '@threlte/rapier'
4
- import type { Group } from 'three'
5
6
 
6
7
  const parent = useParent()
7
8
  const rb = useRigidBody()
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { T } from '@threlte/core'
3
3
  import { CanvasTexture, PlaneGeometry } from 'three'
4
+
4
5
  import { useArmClient } from '../../hooks/useArmClient.svelte'
5
6
  import { useArmKinematics } from '../../hooks/useArmKinematics.svelte'
6
7
 
@@ -1,10 +1,11 @@
1
1
  <script lang="ts">
2
+ import { RigidBody as RigidBodyType } from '@dimforge/rapier3d-compat'
2
3
  import { T, useTask } from '@threlte/core'
3
4
  import { Grid, useGamepad } from '@threlte/extras'
4
5
  import { Collider, RigidBody } from '@threlte/rapier'
5
- import { RigidBody as RigidBodyType } from '@dimforge/rapier3d-compat'
6
6
  import { useController } from '@threlte/xr'
7
7
  import { Euler, Group, Quaternion, Vector3 } from 'three'
8
+
8
9
  import { useOrigin } from './useOrigin.svelte'
9
10
 
10
11
  const origin = useOrigin()
@@ -1,8 +1,9 @@
1
1
  <script lang="ts">
2
2
  import { T, useTask } from '@threlte/core'
3
- import Draggable from './Draggable.svelte'
3
+ import { Billboard, Text } from '@threlte/extras'
4
4
  import { Mesh, Vector3 } from 'three'
5
- import { Text, Billboard } from '@threlte/extras'
5
+
6
+ import Draggable from './Draggable.svelte'
6
7
 
7
8
  const mesh1 = new Mesh()
8
9
  const mesh2 = new Mesh()
@@ -1,16 +1,18 @@
1
1
  <script lang="ts">
2
2
  import { T } from '@threlte/core'
3
- import { useXR, XR, XRButton } from '@threlte/xr'
4
3
  import { World } from '@threlte/rapier'
5
- import OriginMarker from './OriginMarker.svelte'
4
+ import { useXR, XR, XRButton } from '@threlte/xr'
5
+ import { SvelteMap } from 'svelte/reactivity'
6
+
7
+ import { usePartID } from '../../hooks/usePartID.svelte'
6
8
  import { useSettings } from '../../hooks/useSettings.svelte'
7
- import Controllers from './Controllers.svelte'
9
+
8
10
  import CameraFeed from './CameraFeed.svelte'
11
+ import Controllers from './Controllers.svelte'
9
12
  import JointLimitsWidget from './JointLimitsWidget.svelte'
10
- import { usePartID } from '../../hooks/usePartID.svelte'
11
- import XRToast from './XRToast.svelte'
13
+ import OriginMarker from './OriginMarker.svelte'
12
14
  import { useOrigin } from './useOrigin.svelte'
13
- import { SvelteMap } from 'svelte/reactivity'
15
+ import XRToast from './XRToast.svelte'
14
16
 
15
17
  const { ...rest } = $props()
16
18
 
@@ -1,11 +1,12 @@
1
1
  <script lang="ts">
2
2
  import { T, useTask } from '@threlte/core'
3
- import { CanvasTexture, PlaneGeometry, Mesh, Raycaster } from 'three'
3
+ import { useController, type XRController } from '@threlte/xr'
4
+ import { useResourceNames } from '@viamrobotics/svelte-sdk'
5
+ import { CanvasTexture, Mesh, PlaneGeometry, Raycaster } from 'three'
6
+
4
7
  import { useArmClient } from '../../hooks/useArmClient.svelte'
5
8
  import { usePartID } from '../../hooks/usePartID.svelte'
6
- import { useResourceNames } from '@viamrobotics/svelte-sdk'
7
9
  import { useSettings } from '../../hooks/useSettings.svelte'
8
- import { useController, type XRController } from '@threlte/xr'
9
10
 
10
11
  interface XRConfigPanelProps {
11
12
  offset?: { x?: number; y?: number; z?: number }
@@ -1,8 +1,9 @@
1
1
  <script lang="ts">
2
2
  import { Select, Switch } from '@viamrobotics/prime-core'
3
+ import { useResourceNames } from '@viamrobotics/svelte-sdk'
4
+
3
5
  import { useArmClient } from '../../hooks/useArmClient.svelte'
4
6
  import { usePartID } from '../../hooks/usePartID.svelte'
5
- import { useResourceNames } from '@viamrobotics/svelte-sdk'
6
7
  import { useSettings } from '../../hooks/useSettings.svelte'
7
8
 
8
9
  const settings = useSettings()
@@ -1,9 +1,10 @@
1
1
  <script lang="ts">
2
- import { untrack } from 'svelte'
3
2
  import { T } from '@threlte/core'
4
- import { CanvasTexture, PlaneGeometry } from 'three'
5
- import { xrToast, type XRToastItem, type ToastVariant } from './toasts.svelte'
6
3
  import { Headset } from '@threlte/xr'
4
+ import { untrack } from 'svelte'
5
+ import { CanvasTexture, PlaneGeometry } from 'three'
6
+
7
+ import { type ToastVariant, xrToast, type XRToastItem } from './toasts.svelte'
7
8
 
8
9
  const CANVAS_WIDTH = 700
9
10
  const TOAST_HEIGHT = 80
@@ -1,7 +1,7 @@
1
1
  import type { GLTF as ThreeGltf } from 'three/examples/jsm/loaders/GLTFLoader.js';
2
+ import { Geometry as ViamGeometry } from '@viamrobotics/sdk';
2
3
  import { type Entity } from 'koota';
3
4
  import { BufferGeometry as ThreeBufferGeometry } from 'three';
4
- import { Geometry as ViamGeometry } from '@viamrobotics/sdk';
5
5
  export declare const Name: import("koota").Trait<() => string>;
6
6
  export declare const Parent: import("koota").Trait<() => string>;
7
7
  export declare const Pose: import("koota").Trait<{
@@ -1,6 +1,6 @@
1
+ import { Geometry as ViamGeometry } from '@viamrobotics/sdk';
1
2
  import { trait } from 'koota';
2
3
  import { BufferGeometry as ThreeBufferGeometry } from 'three';
3
- import { Geometry as ViamGeometry } from '@viamrobotics/sdk';
4
4
  import { createBox, createCapsule, createSphere } from '../geometry';
5
5
  import { parsePlyInput } from '../ply';
6
6
  export const Name = trait(() => '');
@@ -1,5 +1,5 @@
1
+ import { createQuery, $internal as internal } from 'koota';
1
2
  import { untrack } from 'svelte';
2
- import { $internal as internal, createQuery } from 'koota';
3
3
  import { useWorld } from './useWorld';
4
4
  export function useQuery(...parameters) {
5
5
  const world = useWorld();
package/dist/frame.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // TODO: replace with types exported from the sdk when created
2
2
  import { UuidTool } from 'uuid-tool';
3
- import { createPoseFromFrame } from './transform';
4
3
  import { createGeometryFromFrame } from './geometry';
4
+ import { createPoseFromFrame } from './transform';
5
5
  export const createFrame = (geometry) => {
6
6
  return {
7
7
  parent: 'world',
@@ -1,10 +1,10 @@
1
+ import { isInstanceOf } from '@threlte/core';
1
2
  import { ArmClient } from '@viamrobotics/sdk';
2
3
  import { createResourceClient, useResourceNames } from '@viamrobotics/svelte-sdk';
3
4
  import { getContext, setContext } from 'svelte';
4
- import { useSettings } from './useSettings.svelte';
5
- import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
6
5
  import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
7
- import { isInstanceOf } from '@threlte/core';
6
+ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
7
+ import { useSettings } from './useSettings.svelte';
8
8
  const gltfLoader = new GLTFLoader();
9
9
  const dracoLoader = new DRACOLoader();
10
10
  dracoLoader.setDecoderPath('https://www.gstatic.com/draco/versioned/decoders/1.5.6/');
@@ -1,8 +1,8 @@
1
- import { useEnvironment } from './useEnvironment.svelte';
2
- import { usePartConfig } from './usePartConfig.svelte';
3
- import { createTransformFromFrame } from '../frame';
4
1
  import { Transform } from '@viamrobotics/sdk';
5
2
  import { getContext, setContext } from 'svelte';
3
+ import { createTransformFromFrame } from '../frame';
4
+ import { useEnvironment } from './useEnvironment.svelte';
5
+ import { usePartConfig } from './usePartConfig.svelte';
6
6
  const key = Symbol('config-frames-context');
7
7
  export const provideConfigFrames = () => {
8
8
  const environment = useEnvironment();
@@ -1,19 +1,19 @@
1
+ import { useThrelte } from '@threlte/core';
2
+ import {} from 'koota';
1
3
  import { getContext, setContext } from 'svelte';
2
4
  import { Color, Vector3, Vector4 } from 'three';
3
5
  import { NURBSCurve } from 'three/addons/curves/NURBSCurve.js';
4
- import { UuidTool } from 'uuid-tool';
5
6
  import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
7
+ import { UuidTool } from 'uuid-tool';
8
+ import { createBufferGeometry, updateBufferGeometry } from '../attribute';
9
+ import { STRIDE } from '../buffer';
10
+ import { traits, useWorld } from '../ecs';
11
+ import { createBox, createCapsule, createSphere } from '../geometry';
12
+ import { parsePlyInput } from '../ply';
6
13
  import { createPose, createPoseFromFrame } from '../transform';
7
14
  import { useCameraControls } from './useControls.svelte';
8
- import { useWorld, traits } from '../ecs';
9
- import { useThrelte } from '@threlte/core';
10
- import {} from 'koota';
11
- import { parsePlyInput } from '../ply';
12
- import { useLogs } from './useLogs.svelte';
13
- import { createBox, createCapsule, createSphere } from '../geometry';
14
15
  import { useDrawConnectionConfig } from './useDrawConnectionConfig.svelte';
15
- import { createBufferGeometry, updateBufferGeometry } from '../attribute';
16
- import { STRIDE } from '../buffer';
16
+ import { useLogs } from './useLogs.svelte';
17
17
  const colorUtil = new Color();
18
18
  const bufferTypes = {
19
19
  DRAW_POINTS: 0,
@@ -1,6 +1,6 @@
1
1
  import { getContext, setContext } from 'svelte';
2
- import { usePartConfig } from './usePartConfig.svelte';
3
2
  import { useFrames } from './useFrames.svelte';
3
+ import { usePartConfig } from './usePartConfig.svelte';
4
4
  const key = Symbol('frameless-components-context');
5
5
  export const provideFramelessComponents = () => {
6
6
  const partConfig = usePartConfig();
@@ -1,15 +1,15 @@
1
- import { getContext, setContext, untrack } from 'svelte';
2
1
  import { MachineConnectionEvent, Transform } from '@viamrobotics/sdk';
3
- import { useRobotClient, createRobotQuery, useMachineStatus, useConnectionStatus, } from '@viamrobotics/svelte-sdk';
2
+ import { createRobotQuery, useConnectionStatus, useMachineStatus, useRobotClient, } from '@viamrobotics/svelte-sdk';
4
3
  import {} from 'koota';
5
- import { useLogs } from './useLogs.svelte';
4
+ import { getContext, setContext, untrack } from 'svelte';
6
5
  import { resourceNameToColor } from '../color';
7
- import { useEnvironment } from './useEnvironment.svelte';
8
- import { createPose } from '../transform';
9
- import { useResourceByName } from './useResourceByName.svelte';
10
6
  import { traits, useWorld } from '../ecs';
11
- import { useConfigFrames } from './useConfigFrames.svelte';
12
7
  import { updateGeometryTrait } from '../ecs/traits';
8
+ import { createPose } from '../transform';
9
+ import { useConfigFrames } from './useConfigFrames.svelte';
10
+ import { useEnvironment } from './useEnvironment.svelte';
11
+ import { useLogs } from './useLogs.svelte';
12
+ import { useResourceByName } from './useResourceByName.svelte';
13
13
  const key = Symbol('frames-context');
14
14
  export const provideFrames = (partID) => {
15
15
  const configFrames = useConfigFrames();
@@ -1,17 +1,17 @@
1
1
  import { ArmClient, CameraClient, GantryClient, GripperClient } from '@viamrobotics/sdk';
2
- import { untrack, setContext, getContext } from 'svelte';
3
- import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
4
2
  import { createResourceClient, createResourceQuery, useResourceNames, } from '@viamrobotics/svelte-sdk';
5
- import { useLogs } from './useLogs.svelte';
6
- import { resourceColors } from '../color';
3
+ import {} from 'koota';
4
+ import { getContext, setContext, untrack } from 'svelte';
7
5
  import { Color } from 'three';
8
- import { useResourceByName } from './useResourceByName.svelte';
6
+ import { resourceColors } from '../color';
7
+ import { RefetchRates } from '../components/overlay/RefreshRate.svelte';
9
8
  import { traits, useWorld } from '../ecs';
10
- import {} from 'koota';
9
+ import { updateGeometryTrait } from '../ecs/traits';
11
10
  import { createPose } from '../transform';
12
- import { RefetchRates } from '../components/overlay/RefreshRate.svelte';
13
11
  import { useEnvironment } from './useEnvironment.svelte';
14
- import { updateGeometryTrait } from '../ecs/traits';
12
+ import { useLogs } from './useLogs.svelte';
13
+ import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
14
+ import { useResourceByName } from './useResourceByName.svelte';
15
15
  const key = Symbol('geometries-context');
16
16
  const colorUtil = new Color();
17
17
  export const provideGeometries = (partID) => {
@@ -1,4 +1,4 @@
1
- import { Raycaster, type Intersection } from 'three';
1
+ import { type Intersection, Raycaster } from 'three';
2
2
  type EventNames = 'click' | 'move' | 'pointerenter' | 'pointerleave';
3
3
  interface RaycastEvent<T extends EventNames> {
4
4
  type: T;
@@ -1,5 +1,5 @@
1
- import { Vector2, Raycaster, EventDispatcher } from 'three';
2
1
  import { useThrelte } from '@threlte/core';
2
+ import { EventDispatcher, Raycaster, Vector2 } from 'three';
3
3
  const pointerDown = new Vector2();
4
4
  const pointerUp = new Vector2();
5
5
  const pointerMove = new Vector2();
@@ -1,5 +1,5 @@
1
+ import { Pose, Struct } from '@viamrobotics/sdk';
1
2
  import { type Frame } from '../frame';
2
- import { Struct, Pose } from '@viamrobotics/sdk';
3
3
  export interface PartConfig {
4
4
  components: {
5
5
  name: string;