@viamrobotics/motion-tools 1.14.0 → 1.15.1

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 (132) 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/buf/common/v1/common_pb.d.ts +45 -0
  5. package/dist/buf/common/v1/common_pb.js +65 -0
  6. package/dist/color.d.ts +1 -1
  7. package/dist/color.js +2 -2
  8. package/dist/components/App.svelte +27 -21
  9. package/dist/components/App.svelte.d.ts +1 -1
  10. package/dist/components/BatchedArrows.svelte +5 -3
  11. package/dist/components/Camera.svelte +1 -0
  12. package/dist/components/CameraControls.svelte +5 -3
  13. package/dist/components/Entities/Arrows/ArrowGroups.svelte +6 -3
  14. package/dist/components/Entities/Arrows/Arrows.svelte +6 -3
  15. package/dist/components/Entities/Entities.svelte +7 -5
  16. package/dist/components/Entities/Frame.svelte +8 -5
  17. package/dist/components/Entities/Frame.svelte.d.ts +2 -2
  18. package/dist/components/Entities/GLTF.svelte +8 -5
  19. package/dist/components/Entities/GLTF.svelte.d.ts +2 -2
  20. package/dist/components/Entities/Geometry.svelte +13 -6
  21. package/dist/components/Entities/Line.svelte +8 -5
  22. package/dist/components/Entities/Line.svelte.d.ts +1 -1
  23. package/dist/components/Entities/LineDots.svelte +1 -1
  24. package/dist/components/Entities/LineGeometry.svelte +1 -1
  25. package/dist/components/Entities/Mesh.svelte +8 -5
  26. package/dist/components/Entities/Points.svelte +9 -6
  27. package/dist/components/Entities/Points.svelte.d.ts +2 -2
  28. package/dist/components/Entities/Pose.svelte +4 -3
  29. package/dist/components/Entities/hooks/useEntityEvents.svelte.d.ts +1 -1
  30. package/dist/components/Entities/hooks/useEntityEvents.svelte.js +2 -2
  31. package/dist/components/FileDrop/FileDrop.svelte +10 -6
  32. package/dist/components/FileDrop/file-dropper.d.ts +1 -1
  33. package/dist/components/FileDrop/pcd-dropper.js +1 -1
  34. package/dist/components/FileDrop/ply-dropper.js +1 -1
  35. package/dist/components/FileDrop/snapshot-dropper.js +1 -1
  36. package/dist/components/Focus.svelte +4 -2
  37. package/dist/components/KeyboardControls.svelte +4 -2
  38. package/dist/components/Lasso/Debug.svelte +5 -2
  39. package/dist/components/Lasso/Lasso.svelte +9 -6
  40. package/dist/components/Lasso/Tool.svelte +10 -7
  41. package/dist/components/MeasureTool/MeasurePoint.svelte +2 -1
  42. package/dist/components/MeasureTool/MeasurePoint.svelte.d.ts +1 -1
  43. package/dist/components/MeasureTool/MeasureTool.svelte +7 -5
  44. package/dist/components/PCD.svelte +4 -3
  45. package/dist/components/PointerMissBox.svelte +3 -2
  46. package/dist/components/Scene.svelte +12 -9
  47. package/dist/components/SceneProviders.svelte +20 -18
  48. package/dist/components/Selected.svelte +6 -20
  49. package/dist/components/Snapshot.svelte +8 -5
  50. package/dist/components/StaticGeometries.svelte +10 -7
  51. package/dist/components/hover/HoveredEntities.svelte +2 -1
  52. package/dist/components/hover/HoveredEntity.svelte +2 -1
  53. package/dist/components/hover/HoveredEntityTooltip.svelte +1 -0
  54. package/dist/components/hover/LinkedHoveredEntity.svelte +7 -5
  55. package/dist/components/overlay/AddFrames.svelte +64 -0
  56. package/dist/components/overlay/AddFrames.svelte.d.ts +3 -0
  57. package/dist/components/overlay/AddRelationship.svelte +4 -2
  58. package/dist/components/overlay/Details.svelte +23 -21
  59. package/dist/components/overlay/FloatingPanel.svelte +47 -5
  60. package/dist/components/overlay/FloatingPanel.svelte.d.ts +1 -0
  61. package/dist/components/overlay/LiveUpdatesBanner.svelte +1 -0
  62. package/dist/components/overlay/Logs.svelte +4 -2
  63. package/dist/components/overlay/Popover.svelte +3 -2
  64. package/dist/components/overlay/RefreshRate.svelte +4 -2
  65. package/dist/components/overlay/dashboard/Button.svelte +2 -1
  66. package/dist/components/overlay/dashboard/Button.svelte.d.ts +1 -1
  67. package/dist/components/overlay/dashboard/Dashboard.svelte +3 -1
  68. package/dist/components/overlay/left-pane/Drawer.svelte +3 -2
  69. package/dist/components/overlay/left-pane/Tree.svelte +27 -38
  70. package/dist/components/overlay/left-pane/TreeContainer.svelte +17 -47
  71. package/dist/components/overlay/left-pane/TreeContainer.svelte.d.ts +1 -1
  72. package/dist/components/overlay/settings/Settings.svelte +37 -10
  73. package/dist/components/overlay/settings/Tabs.svelte +2 -1
  74. package/dist/components/overlay/widgets/ArmPositions.svelte +3 -2
  75. package/dist/components/overlay/widgets/Camera.svelte +6 -5
  76. package/dist/components/weblab/WeblabActive.svelte +2 -1
  77. package/dist/components/xr/ArmTeleop.svelte +7 -6
  78. package/dist/components/xr/BentPlaneGeometry.svelte +3 -2
  79. package/dist/components/xr/CameraFeed.svelte +2 -0
  80. package/dist/components/xr/Controllers.svelte +5 -3
  81. package/dist/components/xr/Draggable.svelte +4 -3
  82. package/dist/components/xr/HandCollider.svelte +2 -1
  83. package/dist/components/xr/JointLimitsWidget.svelte +1 -0
  84. package/dist/components/xr/OriginMarker.svelte +2 -1
  85. package/dist/components/xr/PointDistance.svelte +3 -2
  86. package/dist/components/xr/XR.svelte +8 -6
  87. package/dist/components/xr/XRConfigPanel.svelte +4 -3
  88. package/dist/components/xr/XRControllerSettings.svelte +2 -1
  89. package/dist/components/xr/XRToast.svelte +4 -3
  90. package/dist/ecs/traits.d.ts +1 -1
  91. package/dist/ecs/traits.js +1 -1
  92. package/dist/ecs/useQuery.svelte.js +1 -1
  93. package/dist/frame.js +1 -1
  94. package/dist/hooks/use3DModels.svelte.js +3 -3
  95. package/dist/hooks/useConfigFrames.svelte.js +3 -3
  96. package/dist/hooks/useDrawAPI.svelte.js +9 -9
  97. package/dist/hooks/useFramelessComponents.svelte.js +1 -1
  98. package/dist/hooks/useFrames.svelte.js +7 -7
  99. package/dist/hooks/useGeometries.svelte.js +8 -8
  100. package/dist/hooks/useMouseRaycaster.svelte.d.ts +1 -1
  101. package/dist/hooks/useMouseRaycaster.svelte.js +1 -1
  102. package/dist/hooks/usePartConfig.svelte.d.ts +1 -1
  103. package/dist/hooks/usePartConfig.svelte.js +3 -3
  104. package/dist/hooks/usePointcloudObjects.svelte.js +6 -6
  105. package/dist/hooks/usePointclouds.svelte.js +5 -5
  106. package/dist/hooks/usePose.svelte.js +7 -7
  107. package/dist/hooks/useSelection.svelte.d.ts +1 -1
  108. package/dist/hooks/useWeblabs.svelte.d.ts +1 -0
  109. package/dist/hooks/useWeblabs.svelte.js +15 -3
  110. package/dist/hooks/useWorldState.svelte.js +8 -8
  111. package/dist/plugins/bvh.svelte.js +2 -2
  112. package/dist/snapshot.d.ts +2 -2
  113. package/dist/snapshot.js +4 -4
  114. package/dist/three/BatchedArrow.d.ts +1 -1
  115. package/dist/three/BatchedArrow.js +1 -1
  116. package/dist/three/InstancedArrows/InstancedArrows.d.ts +1 -1
  117. package/dist/three/InstancedArrows/InstancedArrows.js +3 -3
  118. package/dist/three/InstancedArrows/box.js +1 -1
  119. package/dist/three/InstancedArrows/geometry.js +1 -1
  120. package/dist/three/InstancedArrows/raycast.d.ts +1 -1
  121. package/dist/three/InstancedArrows/raycast.js +1 -1
  122. package/dist/three/OBBHelper.d.ts +2 -3
  123. package/dist/three/OBBHelper.js +64 -43
  124. package/dist/three/OrientationVector.js +1 -1
  125. package/dist/transform.js +1 -1
  126. package/package.json +7 -6
  127. package/dist/components/overlay/left-pane/AddFrames.svelte +0 -30
  128. package/dist/components/overlay/left-pane/AddFrames.svelte.d.ts +0 -18
  129. package/dist/hooks/__tests__/fixtures/ResizableTestWrapper.svelte +0 -41
  130. package/dist/hooks/__tests__/fixtures/ResizableTestWrapper.svelte.d.ts +0 -6
  131. package/dist/hooks/useResizable.svelte.d.ts +0 -12
  132. package/dist/hooks/useResizable.svelte.js +0 -46
@@ -1,7 +1,7 @@
1
- import type { Entity } from 'koota';
2
1
  import type { Pose } from '@viamrobotics/sdk';
3
- import type { Frame } from './frame';
2
+ import type { Entity } from 'koota';
4
3
  import type { Vector3Like } from 'three';
4
+ import type { Frame } from './frame';
5
5
  type UpdateFrameCallback = {
6
6
  (componentName: string, referenceFrame: string, pose: Pose, geometry?: Frame['geometry']): void;
7
7
  };
@@ -1,5 +1,5 @@
1
- import type { Entity } from 'koota';
2
1
  import type { IntersectionEvent } from '@threlte/extras';
2
+ import type { Entity } from 'koota';
3
3
  export interface HoverInfo {
4
4
  index: number;
5
5
  x: number;
package/dist/attribute.js CHANGED
@@ -1,4 +1,4 @@
1
- import { BufferGeometry, BufferAttribute } from 'three';
1
+ import { BufferAttribute, BufferGeometry } from 'three';
2
2
  import { STRIDE } from './buffer';
3
3
  const colorStride = (colors, positions) => {
4
4
  const numVertices = positions.length / STRIDE.POSITIONS;
@@ -147,6 +147,47 @@ export declare class Orientation extends Message<Orientation> {
147
147
  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Orientation;
148
148
  static equals(a: Orientation | PlainMessage<Orientation> | undefined, b: Orientation | PlainMessage<Orientation> | undefined): boolean;
149
149
  }
150
+ /**
151
+ * @generated from message viam.common.v1.PoseCloud
152
+ */
153
+ export declare class PoseCloud extends Message<PoseCloud> {
154
+ /**
155
+ * @generated from field: double x = 1;
156
+ */
157
+ x: number;
158
+ /**
159
+ * @generated from field: double y = 2;
160
+ */
161
+ y: number;
162
+ /**
163
+ * @generated from field: double z = 3;
164
+ */
165
+ z: number;
166
+ /**
167
+ * @generated from field: double o_x = 4;
168
+ */
169
+ oX: number;
170
+ /**
171
+ * @generated from field: double o_y = 5;
172
+ */
173
+ oY: number;
174
+ /**
175
+ * @generated from field: double o_z = 6;
176
+ */
177
+ oZ: number;
178
+ /**
179
+ * @generated from field: double theta = 7;
180
+ */
181
+ theta: number;
182
+ constructor(data?: PartialMessage<PoseCloud>);
183
+ static readonly runtime: typeof proto3;
184
+ static readonly typeName = "viam.common.v1.PoseCloud";
185
+ static readonly fields: FieldList;
186
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): PoseCloud;
187
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): PoseCloud;
188
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): PoseCloud;
189
+ static equals(a: PoseCloud | PlainMessage<PoseCloud> | undefined, b: PoseCloud | PlainMessage<PoseCloud> | undefined): boolean;
190
+ }
150
191
  /**
151
192
  * PoseInFrame contains a pose and the reference frame in which it was observed
152
193
  *
@@ -161,6 +202,10 @@ export declare class PoseInFrame extends Message<PoseInFrame> {
161
202
  * @generated from field: viam.common.v1.Pose pose = 2;
162
203
  */
163
204
  pose?: Pose;
205
+ /**
206
+ * @generated from field: optional viam.common.v1.PoseCloud goal_cloud = 3;
207
+ */
208
+ goalCloud?: PoseCloud;
164
209
  constructor(data?: PartialMessage<PoseInFrame>);
165
210
  static readonly runtime: typeof proto3;
166
211
  static readonly typeName = "viam.common.v1.PoseInFrame";
@@ -205,6 +205,66 @@ export class Orientation extends Message {
205
205
  return proto3.util.equals(Orientation, a, b);
206
206
  }
207
207
  }
208
+ /**
209
+ * @generated from message viam.common.v1.PoseCloud
210
+ */
211
+ export class PoseCloud extends Message {
212
+ /**
213
+ * @generated from field: double x = 1;
214
+ */
215
+ x = 0;
216
+ /**
217
+ * @generated from field: double y = 2;
218
+ */
219
+ y = 0;
220
+ /**
221
+ * @generated from field: double z = 3;
222
+ */
223
+ z = 0;
224
+ /**
225
+ * @generated from field: double o_x = 4;
226
+ */
227
+ oX = 0;
228
+ /**
229
+ * @generated from field: double o_y = 5;
230
+ */
231
+ oY = 0;
232
+ /**
233
+ * @generated from field: double o_z = 6;
234
+ */
235
+ oZ = 0;
236
+ /**
237
+ * @generated from field: double theta = 7;
238
+ */
239
+ theta = 0;
240
+ constructor(data) {
241
+ super();
242
+ proto3.util.initPartial(data, this);
243
+ }
244
+ static runtime = proto3;
245
+ static typeName = "viam.common.v1.PoseCloud";
246
+ static fields = proto3.util.newFieldList(() => [
247
+ { no: 1, name: "x", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
248
+ { no: 2, name: "y", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
249
+ { no: 3, name: "z", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
250
+ { no: 4, name: "o_x", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
251
+ { no: 5, name: "o_y", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
252
+ { no: 6, name: "o_z", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
253
+ { no: 7, name: "theta", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ },
254
+ ]);
255
+ static fromBinary(bytes, options) {
256
+ return new PoseCloud().fromBinary(bytes, options);
257
+ }
258
+ static fromJson(jsonValue, options) {
259
+ return new PoseCloud().fromJson(jsonValue, options);
260
+ }
261
+ static fromJsonString(jsonString, options) {
262
+ return new PoseCloud().fromJsonString(jsonString, options);
263
+ }
264
+ static equals(a, b) {
265
+ return proto3.util.equals(PoseCloud, a, b);
266
+ }
267
+ }
208
268
  /**
209
269
  * PoseInFrame contains a pose and the reference frame in which it was observed
210
270
  *
@@ -219,6 +279,10 @@ export class PoseInFrame extends Message {
219
279
  * @generated from field: viam.common.v1.Pose pose = 2;
220
280
  */
221
281
  pose;
282
+ /**
283
+ * @generated from field: optional viam.common.v1.PoseCloud goal_cloud = 3;
284
+ */
285
+ goalCloud;
222
286
  constructor(data) {
223
287
  super();
224
288
  proto3.util.initPartial(data, this);
@@ -228,6 +292,7 @@ export class PoseInFrame extends Message {
228
292
  static fields = proto3.util.newFieldList(() => [
229
293
  { no: 1, name: "reference_frame", kind: "scalar", T: 9 /* ScalarType.STRING */ },
230
294
  { no: 2, name: "pose", kind: "message", T: Pose },
295
+ { no: 3, name: "goal_cloud", kind: "message", T: PoseCloud, opt: true },
231
296
  ]);
232
297
  static fromBinary(bytes, options) {
233
298
  return new PoseInFrame().fromBinary(bytes, options);
package/dist/color.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { Color, type ColorRepresentation, type RGB } from 'three';
2
1
  import { ResourceName } from '@viamrobotics/sdk';
2
+ import { Color, type ColorRepresentation, type RGB } from 'three';
3
3
  /**
4
4
  * Darkens a THREE.Color by a given percentage while preserving hue.
5
5
  * @param color The original THREE.Color instance.
package/dist/color.js CHANGED
@@ -1,6 +1,6 @@
1
- import { Color } from 'three';
2
- import twColors from 'tailwindcss/colors';
3
1
  import { ResourceName } from '@viamrobotics/sdk';
2
+ import twColors from 'tailwindcss/colors';
3
+ import { Color } from 'three';
4
4
  // Step 3: linear sRGB → sRGB
5
5
  const linearToSrgb = (x) => {
6
6
  return x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055;
@@ -1,36 +1,41 @@
1
1
  <script lang="ts">
2
+ import type { Struct } from '@viamrobotics/sdk'
2
3
  import type { Snippet } from 'svelte'
4
+
5
+ import { SvelteQueryDevtools } from '@tanstack/svelte-query-devtools'
3
6
  import { Canvas } from '@threlte/core'
4
7
  import { PortalTarget } from '@threlte/extras'
5
- import { SvelteQueryDevtools } from '@tanstack/svelte-query-devtools'
8
+ import { useXR } from '@threlte/xr'
6
9
  import { provideToast, ToastContainer } from '@viamrobotics/prime-core'
7
- import type { Struct } from '@viamrobotics/sdk'
8
- import Scene from './Scene.svelte'
9
- import TreeContainer from './overlay/left-pane/TreeContainer.svelte'
10
+
11
+ import type { CameraPose } from '../hooks/useControls.svelte'
12
+
13
+ import Dashboard from './overlay/dashboard/Dashboard.svelte'
10
14
  import Details from './overlay/Details.svelte'
11
- import SceneProviders from './SceneProviders.svelte'
15
+ import TreeContainer from './overlay/left-pane/TreeContainer.svelte'
16
+ import Settings from './overlay/settings/Settings.svelte'
12
17
  import XR from './xr/XR.svelte'
13
- import { createPartIDContext } from '../hooks/usePartID.svelte'
14
- import Dashboard from './overlay/dashboard/Dashboard.svelte'
15
- import { domPortal } from '../portal'
16
- import { provideSettings } from '../hooks/useSettings.svelte'
17
- import FileDrop from './FileDrop/FileDrop.svelte'
18
- import { provideWeblabs } from '../hooks/useWeblabs.svelte'
19
- import { providePartConfig } from '../hooks/usePartConfig.svelte'
20
- import LiveUpdatesBanner from './overlay/LiveUpdatesBanner.svelte'
21
- import ArmPositions from './overlay/widgets/ArmPositions.svelte'
22
- import { provideEnvironment } from '../hooks/useEnvironment.svelte'
23
- import type { CameraPose } from '../hooks/useControls.svelte'
24
18
  import { provideWorld } from '../ecs'
25
19
  import {
26
- provideDrawConnectionConfig,
27
20
  type DrawConnectionConfig,
21
+ provideDrawConnectionConfig,
28
22
  } from '../hooks/useDrawConnectionConfig.svelte'
29
- import Camera from './overlay/widgets/Camera.svelte'
23
+ import { provideEnvironment } from '../hooks/useEnvironment.svelte'
24
+ import { providePartConfig } from '../hooks/usePartConfig.svelte'
25
+ import { createPartIDContext } from '../hooks/usePartID.svelte'
26
+ import { provideSettings } from '../hooks/useSettings.svelte'
27
+ import { provideWeblabs } from '../hooks/useWeblabs.svelte'
28
+ import { domPortal } from '../portal'
29
+
30
+ import FileDrop from './FileDrop/FileDrop.svelte'
30
31
  import HoveredEntities from './hover/HoveredEntities.svelte'
31
- import Settings from './overlay/settings/Settings.svelte'
32
- import { useXR } from '@threlte/xr'
32
+ import AddFrames from './overlay/AddFrames.svelte'
33
+ import LiveUpdatesBanner from './overlay/LiveUpdatesBanner.svelte'
33
34
  import Logs from './overlay/Logs.svelte'
35
+ import ArmPositions from './overlay/widgets/ArmPositions.svelte'
36
+ import Camera from './overlay/widgets/Camera.svelte'
37
+ import Scene from './Scene.svelte'
38
+ import SceneProviders from './SceneProviders.svelte'
34
39
 
35
40
  interface LocalConfigProps {
36
41
  current: Struct
@@ -96,7 +101,7 @@
96
101
  {/if}
97
102
 
98
103
  <div
99
- class="relative h-full w-full overflow-hidden"
104
+ class="relative h-full w-full overflow-hidden dark:bg-white"
100
105
  bind:this={root}
101
106
  >
102
107
  <Canvas renderMode="on-demand">
@@ -140,6 +145,7 @@
140
145
 
141
146
  <Settings />
142
147
  <Logs />
148
+ <AddFrames />
143
149
  </div>
144
150
  {/snippet}
145
151
  </SceneProviders>
@@ -1,5 +1,5 @@
1
- import type { Snippet } from 'svelte';
2
1
  import type { Struct } from '@viamrobotics/sdk';
2
+ import type { Snippet } from 'svelte';
3
3
  import type { CameraPose } from '../hooks/useControls.svelte';
4
4
  import { type DrawConnectionConfig } from '../hooks/useDrawConnectionConfig.svelte';
5
5
  interface LocalConfigProps {
@@ -1,11 +1,13 @@
1
1
  <script lang="ts">
2
+ import type { Entity } from 'koota'
3
+
2
4
  import { T } from '@threlte/core'
3
5
  import { Portal } from '@threlte/extras'
4
- import { BatchedArrow } from '../three/BatchedArrow'
5
- import { traits, useWorld } from '../ecs'
6
- import type { Entity } from 'koota'
7
6
  import { Color, Vector3 } from 'three'
8
7
 
8
+ import { traits, useWorld } from '../ecs'
9
+ import { BatchedArrow } from '../three/BatchedArrow'
10
+
9
11
  const arrowBatchMap = $state<Record<string, BatchedArrow>>({
10
12
  world: new BatchedArrow(),
11
13
  })
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { T } from '@threlte/core'
3
+
3
4
  import { useSettings } from '../hooks/useSettings.svelte'
4
5
 
5
6
  let { children, ...rest } = $props()
@@ -1,11 +1,13 @@
1
1
  <script lang="ts">
2
- import { MathUtils } from 'three'
3
2
  import { CameraControls, type CameraControlsRef, Gizmo, Portal } from '@threlte/extras'
4
- import { useCameraControls, useTransformControls } from '../hooks/useControls.svelte'
5
- import KeyboardControls from './KeyboardControls.svelte'
3
+ import { MathUtils } from 'three'
4
+
6
5
  import Button from './overlay/dashboard/Button.svelte'
6
+ import { useCameraControls, useTransformControls } from '../hooks/useControls.svelte'
7
7
  import { useSettings } from '../hooks/useSettings.svelte'
8
8
 
9
+ import KeyboardControls from './KeyboardControls.svelte'
10
+
9
11
  const cameraControls = useCameraControls()
10
12
  const settings = useSettings()
11
13
  const transformControls = useTransformControls()
@@ -1,10 +1,13 @@
1
1
  <script lang="ts">
2
- import { InstancedArrows } from '../../../three/InstancedArrows/InstancedArrows'
3
- import { traits, useWorld } from '../../../ecs'
4
2
  import type { Entity } from 'koota'
5
- import { STRIDE } from '../../../buffer'
3
+
6
4
  import { SvelteMap } from 'svelte/reactivity'
7
5
  import { Color } from 'three'
6
+
7
+ import { STRIDE } from '../../../buffer'
8
+ import { traits, useWorld } from '../../../ecs'
9
+ import { InstancedArrows } from '../../../three/InstancedArrows/InstancedArrows'
10
+
8
11
  import Arrows from './Arrows.svelte'
9
12
 
10
13
  const world = useWorld()
@@ -1,10 +1,13 @@
1
1
  <script lang="ts">
2
+ import type { Entity } from 'koota'
3
+
2
4
  import { T } from '@threlte/core'
3
5
  import { Portal } from '@threlte/extras'
4
- import type { Entity } from 'koota'
5
- import { traits } from '../../../ecs'
6
- import { useEntityEvents } from '../hooks/useEntityEvents.svelte'
6
+
7
7
  import type { InstancedArrows } from '../../../three/InstancedArrows/InstancedArrows'
8
+
9
+ import { useEntityEvents } from '../hooks/useEntityEvents.svelte'
10
+ import { traits } from '../../../ecs'
8
11
  import { useFocusedEntity, useSelectedEntity } from '../../../hooks/useSelection.svelte'
9
12
  import { meshBoundsRaycast, raycast } from '../../../three/InstancedArrows/raycast'
10
13
 
@@ -1,14 +1,16 @@
1
1
  <script lang="ts">
2
- import Pose from './Pose.svelte'
2
+ import { Not, Or } from 'koota'
3
+
4
+ import { traits, useQuery } from '../../ecs'
5
+
6
+ import Arrows from './Arrows/ArrowGroups.svelte'
3
7
  import Frame from './Frame.svelte'
8
+ import Geometry from './Geometry.svelte'
4
9
  import GLTF from './GLTF.svelte'
5
10
  import Label from './Label.svelte'
6
11
  import Line from './Line.svelte'
7
12
  import Points from './Points.svelte'
8
- import Arrows from './Arrows/ArrowGroups.svelte'
9
- import { traits, useQuery } from '../../ecs'
10
- import { Not, Or } from 'koota'
11
- import Geometry from './Geometry.svelte'
13
+ import Pose from './Pose.svelte'
12
14
 
13
15
  /**
14
16
  * Frames from a live machine are bucketed into their own query
@@ -10,19 +10,22 @@ Renders a Viam Frame object
10
10
  </script>
11
11
 
12
12
  <script lang="ts">
13
+ import type { Pose } from '@viamrobotics/sdk'
14
+ import type { Entity } from 'koota'
13
15
  import type { Snippet } from 'svelte'
14
- import { Group, type Object3D } from 'three'
16
+
15
17
  import { T, useThrelte } from '@threlte/core'
16
18
  import { Portal, PortalTarget } from '@threlte/extras'
17
- import { useEntityEvents } from './hooks/useEntityEvents.svelte'
18
- import Mesh from './Mesh.svelte'
19
+ import { Group, type Object3D } from 'three'
20
+
19
21
  import { colors, resourceColors } from '../../color'
20
- import type { Entity } from 'koota'
21
22
  import { traits, useTrait } from '../../ecs'
22
- import type { Pose } from '@viamrobotics/sdk'
23
23
  import { useResourceByName } from '../../hooks/useResourceByName.svelte'
24
24
  import { poseToObject3d } from '../../transform'
25
25
 
26
+ import { useEntityEvents } from './hooks/useEntityEvents.svelte'
27
+ import Mesh from './Mesh.svelte'
28
+
26
29
  interface Props {
27
30
  entity: Entity
28
31
  pose?: Pose
@@ -1,7 +1,7 @@
1
+ import type { Pose } from '@viamrobotics/sdk';
2
+ import type { Entity } from 'koota';
1
3
  import type { Snippet } from 'svelte';
2
4
  import { type Object3D } from 'three';
3
- import type { Entity } from 'koota';
4
- import type { Pose } from '@viamrobotics/sdk';
5
5
  interface Props {
6
6
  entity: Entity;
7
7
  pose?: Pose;
@@ -2,7 +2,7 @@
2
2
  module
3
3
  lang="ts"
4
4
  >
5
- import { GLTFLoader, DRACOLoader } from 'three/examples/jsm/Addons.js'
5
+ import { DRACOLoader, GLTFLoader } from 'three/examples/jsm/Addons.js'
6
6
 
7
7
  const dracoLoader = new DRACOLoader()
8
8
  const gltfLoader = new GLTFLoader()
@@ -12,15 +12,18 @@
12
12
  </script>
13
13
 
14
14
  <script lang="ts">
15
- import { T, type Props as ThrelteProps } from '@threlte/core'
16
- import { Portal, PortalTarget, useGltfAnimations, type ThrelteGltf } from '@threlte/extras'
15
+ import type { Entity } from 'koota'
17
16
  import type { Snippet } from 'svelte'
17
+
18
+ import { T, type Props as ThrelteProps } from '@threlte/core'
19
+ import { Portal, PortalTarget, type ThrelteGltf, useGltfAnimations } from '@threlte/extras'
18
20
  import { Group, type Object3D } from 'three'
19
- import { useEntityEvents } from './hooks/useEntityEvents.svelte'
20
- import type { Entity } from 'koota'
21
+
21
22
  import { traits, useTrait } from '../../ecs'
22
23
  import { poseToObject3d } from '../../transform'
23
24
 
25
+ import { useEntityEvents } from './hooks/useEntityEvents.svelte'
26
+
24
27
  interface Props extends ThrelteProps<Object3D> {
25
28
  entity: Entity
26
29
  children?: Snippet
@@ -1,7 +1,7 @@
1
- import { type Props as ThrelteProps } from '@threlte/core';
1
+ import type { Entity } from 'koota';
2
2
  import type { Snippet } from 'svelte';
3
+ import { type Props as ThrelteProps } from '@threlte/core';
3
4
  import { type Object3D } from 'three';
4
- import type { Entity } from 'koota';
5
5
  interface Props extends ThrelteProps<Object3D> {
6
6
  entity: Entity;
7
7
  children?: Snippet;
@@ -4,16 +4,19 @@
4
4
  Renders a Viam Geometry object
5
5
  -->
6
6
  <script lang="ts">
7
+ import type { Entity } from 'koota'
8
+ import type { Snippet } from 'svelte'
9
+
7
10
  import { T, useThrelte } from '@threlte/core'
11
+ import { Portal } from '@threlte/extras'
12
+
8
13
  import { traits, useTrait } from '../../ecs'
9
14
  import { use3DModels } from '../../hooks/use3DModels.svelte'
10
- import { Portal } from '@threlte/extras'
11
- import { poseToObject3d } from '../../transform'
12
15
  import { useSettings } from '../../hooks/useSettings.svelte'
13
- import Mesh from './Mesh.svelte'
16
+ import { poseToObject3d } from '../../transform'
17
+
14
18
  import { useEntityEvents } from './hooks/useEntityEvents.svelte'
15
- import type { Entity } from 'koota'
16
- import type { Snippet } from 'svelte'
19
+ import Mesh from './Mesh.svelte'
17
20
 
18
21
  interface Props {
19
22
  entity: Entity
@@ -60,7 +63,11 @@ Renders a Viam Geometry object
60
63
 
61
64
  <Portal id={parent.current}>
62
65
  {#if model}
63
- <T is={model} />
66
+ <T
67
+ is={model}
68
+ name={entity}
69
+ {...events}
70
+ />
64
71
  {/if}
65
72
 
66
73
  {#if settings.current.renderArmModels.includes('colliders') || !model}
@@ -5,17 +5,20 @@
5
5
  </script>
6
6
 
7
7
  <script lang="ts">
8
+ import type { Entity } from 'koota'
8
9
  import type { Snippet } from 'svelte'
10
+
9
11
  import { T, useThrelte } from '@threlte/core'
10
12
  import { meshBounds, Portal, PortalTarget } from '@threlte/extras'
11
- import type { Entity } from 'koota'
12
- import { traits, useTrait } from '../../ecs'
13
- import LineDots from './LineDots.svelte'
13
+ import { Line2, LineMaterial } from 'three/examples/jsm/Addons.js'
14
+
14
15
  import { darkenColor } from '../../color'
16
+ import { traits, useTrait } from '../../ecs'
17
+ import { poseToObject3d } from '../../transform'
18
+
15
19
  import { useEntityEvents } from './hooks/useEntityEvents.svelte'
16
- import { Line2, LineMaterial } from 'three/examples/jsm/Addons.js'
20
+ import LineDots from './LineDots.svelte'
17
21
  import LineGeometry from './LineGeometry.svelte'
18
- import { poseToObject3d } from '../../transform'
19
22
 
20
23
  interface Props {
21
24
  entity: Entity
@@ -1,5 +1,5 @@
1
- import type { Snippet } from 'svelte';
2
1
  import type { Entity } from 'koota';
2
+ import type { Snippet } from 'svelte';
3
3
  interface Props {
4
4
  entity: Entity;
5
5
  children?: Snippet;
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { T } from '@threlte/core'
3
- import { BatchedMesh, Matrix4, SphereGeometry, Vector3, type ColorRepresentation } from 'three'
3
+ import { BatchedMesh, type ColorRepresentation, Matrix4, SphereGeometry, Vector3 } from 'three'
4
4
 
5
5
  interface Props {
6
6
  color: ColorRepresentation
@@ -1,7 +1,7 @@
1
1
  <script>
2
- import { LineGeometry } from 'three/examples/jsm/Addons.js'
3
2
  import { T } from '@threlte/core'
4
3
  import { untrack } from 'svelte'
4
+ import { LineGeometry } from 'three/examples/jsm/Addons.js'
5
5
 
6
6
  let { positions } = $props()
7
7
 
@@ -1,14 +1,17 @@
1
1
  <script lang="ts">
2
- import { T, useThrelte, type Props as ThrelteProps } from '@threlte/core'
2
+ import type { Pose } from '@viamrobotics/sdk'
3
+ import type { Entity } from 'koota'
4
+
5
+ import { T, type Props as ThrelteProps, useThrelte } from '@threlte/core'
3
6
  import { type Snippet } from 'svelte'
4
7
  import { BufferGeometry, Color, DoubleSide, FrontSide, Mesh } from 'three'
5
- import { CapsuleGeometry } from '../../three/CapsuleGeometry'
8
+
6
9
  import { colors, darkenColor } from '../../color'
7
- import AxesHelper from '../AxesHelper.svelte'
8
- import type { Entity } from 'koota'
9
10
  import { traits, useTrait } from '../../ecs'
11
+ import { CapsuleGeometry } from '../../three/CapsuleGeometry'
10
12
  import { poseToObject3d } from '../../transform'
11
- import type { Pose } from '@viamrobotics/sdk'
13
+
14
+ import AxesHelper from '../AxesHelper.svelte'
12
15
 
13
16
  interface Props extends ThrelteProps<Mesh> {
14
17
  entity: Entity
@@ -1,13 +1,16 @@
1
1
  <script lang="ts">
2
- import { Points, PointsMaterial, OrthographicCamera } from 'three'
2
+ import type { Entity } from 'koota'
3
+ import type { Snippet } from 'svelte'
4
+
3
5
  import { T, useTask, useThrelte } from '@threlte/core'
4
6
  import { Portal } from '@threlte/extras'
5
- import { useEntityEvents } from './hooks/useEntityEvents.svelte'
6
- import { poseToObject3d } from '../../transform'
7
- import { useSettings } from '../../hooks/useSettings.svelte'
8
- import type { Snippet } from 'svelte'
9
- import type { Entity } from 'koota'
7
+ import { OrthographicCamera, Points, PointsMaterial } from 'three'
8
+
10
9
  import { traits, useTrait } from '../../ecs'
10
+ import { useSettings } from '../../hooks/useSettings.svelte'
11
+ import { poseToObject3d } from '../../transform'
12
+
13
+ import { useEntityEvents } from './hooks/useEntityEvents.svelte'
11
14
 
12
15
  interface Props {
13
16
  entity: Entity
@@ -1,6 +1,6 @@
1
- import { Points } from 'three';
2
- import type { Snippet } from 'svelte';
3
1
  import type { Entity } from 'koota';
2
+ import type { Snippet } from 'svelte';
3
+ import { Points } from 'three';
4
4
  interface Props {
5
5
  entity: Entity;
6
6
  children?: Snippet;
@@ -1,11 +1,12 @@
1
1
  <script lang="ts">
2
- import { traits, useTrait } from '../../ecs'
3
- import { usePose } from '../../hooks/usePose.svelte'
4
- import { matrixToPose, poseToMatrix } from '../../transform'
5
2
  import type { Pose } from '@viamrobotics/sdk'
6
3
  import type { Entity } from 'koota'
7
4
  import type { Snippet } from 'svelte'
8
5
 
6
+ import { traits, useTrait } from '../../ecs'
7
+ import { usePose } from '../../hooks/usePose.svelte'
8
+ import { matrixToPose, poseToMatrix } from '../../transform'
9
+
9
10
  interface Props {
10
11
  entity: Entity
11
12
  children: Snippet<[{ pose: Pose | undefined }]>
@@ -1,5 +1,5 @@
1
- import { type IntersectionEvent } from '@threlte/extras';
2
1
  import type { Entity } from 'koota';
2
+ import { type IntersectionEvent } from '@threlte/extras';
3
3
  export declare const useEntityEvents: (entity: () => Entity | undefined) => {
4
4
  readonly visible: boolean;
5
5
  onpointerenter: (event: IntersectionEvent<MouseEvent>) => void;
@@ -1,8 +1,8 @@
1
1
  import { useCursor } from '@threlte/extras';
2
- import { useFocusedEntity, useSelectedEntity } from '../../../hooks/useSelection.svelte';
3
- import { useVisibility } from '../../../hooks/useVisibility.svelte';
4
2
  import { Vector2 } from 'three';
5
3
  import { traits } from '../../../ecs';
4
+ import { useFocusedEntity, useSelectedEntity } from '../../../hooks/useSelection.svelte';
5
+ import { useVisibility } from '../../../hooks/useVisibility.svelte';
6
6
  import { updateHoverInfo } from '../../../HoverUpdater.svelte';
7
7
  import { createPose, matrixToPose, poseToMatrix } from '../../../transform';
8
8
  export const useEntityEvents = (entity) => {