@viamrobotics/motion-tools 0.9.5 → 0.10.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 (33) hide show
  1. package/dist/{WorldObject.d.ts → WorldObject.svelte.d.ts} +1 -1
  2. package/dist/{WorldObject.js → WorldObject.svelte.js} +4 -2
  3. package/dist/components/Frame.svelte +1 -1
  4. package/dist/components/Frame.svelte.d.ts +1 -1
  5. package/dist/components/Geometry.svelte +1 -1
  6. package/dist/components/Geometry.svelte.d.ts +1 -1
  7. package/dist/components/Line.svelte +1 -1
  8. package/dist/components/Line.svelte.d.ts +1 -1
  9. package/dist/components/Pointcloud.svelte +1 -1
  10. package/dist/components/Pointcloud.svelte.d.ts +1 -1
  11. package/dist/components/Tree/buildTree.d.ts +1 -1
  12. package/dist/components/WorldObject.svelte +1 -1
  13. package/dist/components/WorldObject.svelte.d.ts +1 -1
  14. package/dist/components/WorldState.svelte +1 -1
  15. package/dist/components/WorldState.svelte.d.ts +1 -1
  16. package/dist/hooks/useDrawAPI.svelte.d.ts +1 -1
  17. package/dist/hooks/useDrawAPI.svelte.js +16 -11
  18. package/dist/hooks/useFrames.svelte.d.ts +1 -1
  19. package/dist/hooks/useFrames.svelte.js +1 -1
  20. package/dist/hooks/useGeometries.svelte.d.ts +1 -1
  21. package/dist/hooks/useGeometries.svelte.js +1 -1
  22. package/dist/hooks/useObjects.svelte.d.ts +1 -1
  23. package/dist/hooks/usePersistentUUIDs.svelte.d.ts +1 -1
  24. package/dist/hooks/usePointclouds.svelte.d.ts +1 -1
  25. package/dist/hooks/usePointclouds.svelte.js +1 -1
  26. package/dist/hooks/useSelection.svelte.d.ts +1 -1
  27. package/dist/hooks/useStaticGeometries.svelte.d.ts +1 -1
  28. package/dist/hooks/useStaticGeometries.svelte.js +1 -1
  29. package/dist/hooks/useWorldState.svelte.d.ts +3 -3
  30. package/dist/hooks/useWorldState.svelte.js +1 -1
  31. package/dist/lib.d.ts +1 -1
  32. package/dist/lib.js +1 -1
  33. package/package.json +1 -1
@@ -29,7 +29,7 @@ export declare class WorldObject<T extends Geometries = Geometries> {
29
29
  uuid: string;
30
30
  name: string;
31
31
  referenceFrame: string;
32
- pose: Pose;
32
+ pose: import("@viamrobotics/sdk").PlainMessage<import("@viamrobotics/sdk/dist/gen/common/v1/common_pb").Pose>;
33
33
  geometry?: T;
34
34
  metadata: Metadata;
35
35
  constructor(name: string, pose?: Pose, parent?: string, geometry?: T, metadata?: Metadata);
@@ -4,16 +4,18 @@ export class WorldObject {
4
4
  uuid;
5
5
  name;
6
6
  referenceFrame;
7
- pose;
7
+ pose = $state.raw(createPose());
8
8
  geometry;
9
9
  metadata;
10
10
  constructor(name, pose, parent = 'world', geometry, metadata) {
11
11
  this.uuid = MathUtils.generateUUID();
12
12
  this.name = name;
13
13
  this.referenceFrame = parent;
14
- this.pose = pose ?? createPose();
15
14
  this.geometry = geometry;
16
15
  this.metadata = metadata ?? {};
16
+ if (pose) {
17
+ this.pose = pose;
18
+ }
17
19
  }
18
20
  }
19
21
  export const fromTransform = (transform) => {
@@ -6,7 +6,7 @@
6
6
 
7
7
  <script lang="ts">
8
8
  import type { Snippet } from 'svelte'
9
- import type { WorldObject } from '../WorldObject'
9
+ import type { WorldObject } from '../WorldObject.svelte'
10
10
  import { useObjectEvents } from '../hooks/useObjectEvents.svelte'
11
11
  import Geometry from './Geometry.svelte'
12
12
  import { useSelected } from '../hooks/useSelection.svelte'
@@ -1,6 +1,6 @@
1
1
  import { type Object3D } from 'three';
2
2
  import type { Snippet } from 'svelte';
3
- import type { WorldObject } from '../WorldObject';
3
+ import type { WorldObject } from '../WorldObject.svelte';
4
4
  interface Props {
5
5
  uuid: string;
6
6
  name: string;
@@ -7,7 +7,7 @@
7
7
  import { poseToObject3d } from '../transform'
8
8
  import { colors, darkenColor } from '../color'
9
9
  import AxesHelper from './AxesHelper.svelte'
10
- import type { WorldObject } from '../WorldObject'
10
+ import type { WorldObject } from '../WorldObject.svelte'
11
11
  import { PLYLoader } from 'three/addons/loaders/PLYLoader.js'
12
12
 
13
13
  const plyLoader = new PLYLoader()
@@ -1,7 +1,7 @@
1
1
  import { type Props as ThrelteProps } from '@threlte/core';
2
2
  import { type Snippet } from 'svelte';
3
3
  import { Object3D } from 'three';
4
- import type { WorldObject } from '../WorldObject';
4
+ import type { WorldObject } from '../WorldObject.svelte';
5
5
  interface Props extends ThrelteProps<Object3D> {
6
6
  uuid: string;
7
7
  name: string;
@@ -2,7 +2,7 @@
2
2
  import { T } from '@threlte/core'
3
3
  import { Instance, InstancedMesh } from '@threlte/extras'
4
4
  import Frame from './Frame.svelte'
5
- import type { WorldObject } from '../WorldObject'
5
+ import type { WorldObject } from '../WorldObject.svelte'
6
6
  import { useSettings } from '../hooks/useSettings.svelte'
7
7
  import type { Snippet } from 'svelte'
8
8
 
@@ -1,4 +1,4 @@
1
- import type { WorldObject } from '../WorldObject';
1
+ import type { WorldObject } from '../WorldObject.svelte';
2
2
  import type { Snippet } from 'svelte';
3
3
  interface Props {
4
4
  object: WorldObject;
@@ -7,7 +7,7 @@
7
7
  OrthographicCamera,
8
8
  } from 'three'
9
9
  import { T, useTask, useThrelte } from '@threlte/core'
10
- import type { WorldObject } from '../WorldObject'
10
+ import type { WorldObject } from '../WorldObject.svelte'
11
11
  import { useObjectEvents } from '../hooks/useObjectEvents.svelte'
12
12
  import { poseToObject3d } from '../transform'
13
13
  import { useSettings } from '../hooks/useSettings.svelte'
@@ -1,4 +1,4 @@
1
- import type { WorldObject } from '../WorldObject';
1
+ import type { WorldObject } from '../WorldObject.svelte';
2
2
  import type { Snippet } from 'svelte';
3
3
  interface Props {
4
4
  object: WorldObject<{
@@ -1,4 +1,4 @@
1
- import type { WorldObject } from '../../WorldObject';
1
+ import type { WorldObject } from '../../WorldObject.svelte';
2
2
  export interface TreeNode {
3
3
  id: string;
4
4
  name: string;
@@ -2,7 +2,7 @@
2
2
  import { T, type Props as ThrelteProps } from '@threlte/core'
3
3
  import type { Snippet } from 'svelte'
4
4
  import type { Object3D } from 'three'
5
- import type { WorldObject } from '../WorldObject'
5
+ import type { WorldObject } from '../WorldObject.svelte'
6
6
  import { useObjectEvents } from '../hooks/useObjectEvents.svelte'
7
7
 
8
8
  interface Props extends ThrelteProps<Object3D> {
@@ -1,7 +1,7 @@
1
1
  import { type Props as ThrelteProps } from '@threlte/core';
2
2
  import type { Snippet } from 'svelte';
3
3
  import type { Object3D } from 'three';
4
- import type { WorldObject } from '../WorldObject';
4
+ import type { WorldObject } from '../WorldObject.svelte';
5
5
  interface Props extends ThrelteProps<Object3D> {
6
6
  object: WorldObject;
7
7
  children?: Snippet;
@@ -3,7 +3,7 @@
3
3
  import Label from './Label.svelte'
4
4
  import Portal from './portal/Portal.svelte'
5
5
  import PortalTarget from './portal/PortalTarget.svelte'
6
- import { WorldObject } from '../WorldObject'
6
+ import { WorldObject } from '../WorldObject.svelte'
7
7
 
8
8
  interface Props {
9
9
  objects: WorldObject[]
@@ -1,4 +1,4 @@
1
- import { WorldObject } from '../WorldObject';
1
+ import { WorldObject } from '../WorldObject.svelte';
2
2
  interface Props {
3
3
  objects: WorldObject[];
4
4
  }
@@ -1,6 +1,6 @@
1
1
  import { Vector3 } from 'three';
2
2
  import { BatchedArrow } from '../three/BatchedArrow';
3
- import { WorldObject, type PointsGeometry } from '../WorldObject';
3
+ import { WorldObject, type PointsGeometry } from '../WorldObject.svelte';
4
4
  type ConnectionStatus = 'connecting' | 'open' | 'closed';
5
5
  interface Context {
6
6
  points: WorldObject<PointsGeometry>[];
@@ -4,7 +4,7 @@ import { NURBSCurve } from 'three/addons/curves/NURBSCurve.js';
4
4
  import { parsePcdInWorker } from '../loaders/pcd';
5
5
  import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
6
6
  import { BatchedArrow } from '../three/BatchedArrow';
7
- import { WorldObject } from '../WorldObject';
7
+ import { WorldObject } from '../WorldObject.svelte';
8
8
  const key = Symbol('draw-api-context-key');
9
9
  const tryParse = (json) => {
10
10
  try {
@@ -59,8 +59,13 @@ export const provideDrawAPI = () => {
59
59
  }, colors ? { colors } : undefined));
60
60
  };
61
61
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
62
- const addGeometry = (data, color, parent) => {
62
+ const drawGeometry = (data, color, parent) => {
63
63
  let geometry;
64
+ const existingMesh = meshes.find((mesh) => mesh.name === data.label);
65
+ if (existingMesh) {
66
+ existingMesh.pose = data.center;
67
+ return;
68
+ }
64
69
  if ('mesh' in data) {
65
70
  geometry = {
66
71
  case: 'mesh',
@@ -214,10 +219,10 @@ export const provideDrawAPI = () => {
214
219
  }));
215
220
  };
216
221
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
217
- const addGeometries = (geometries, colors, parent) => {
222
+ const drawGeometries = (geometries, colors, parent) => {
218
223
  let i = 0;
219
224
  for (const geometry of geometries) {
220
- addGeometry(geometry, colors[i], parent);
225
+ drawGeometry(geometry, colors[i], parent);
221
226
  i += 1;
222
227
  }
223
228
  };
@@ -332,7 +337,13 @@ export const provideDrawAPI = () => {
332
337
  };
333
338
  }
334
339
  if ('geometries' in data) {
335
- return addGeometries(data.geometries, data.colors, data.parent);
340
+ return drawGeometries(data.geometries, data.colors, data.parent);
341
+ }
342
+ if ('geometry' in data) {
343
+ return drawGeometry(data.geometry, data.color);
344
+ }
345
+ if ('Knots' in data) {
346
+ return addNurbs(data, data.Color);
336
347
  }
337
348
  if ('remove' in data) {
338
349
  return remove(data.names);
@@ -340,12 +351,6 @@ export const provideDrawAPI = () => {
340
351
  if ('removeAll' in data) {
341
352
  return removeAll();
342
353
  }
343
- if ('Knots' in data) {
344
- return addNurbs(data, data.Color);
345
- }
346
- if ('geometry' in data) {
347
- addGeometry(data.geometry, data.color);
348
- }
349
354
  };
350
355
  const connect = () => {
351
356
  if (BACKEND_IP && BUN_SERVER_PORT) {
@@ -1,4 +1,4 @@
1
- import { WorldObject } from '../WorldObject';
1
+ import { WorldObject } from '../WorldObject.svelte';
2
2
  interface FramesContext {
3
3
  current: WorldObject[];
4
4
  error?: Error;
@@ -1,6 +1,6 @@
1
1
  import { getContext, setContext, untrack } from 'svelte';
2
2
  import { useRobotClient, createRobotQuery, useMachineStatus, useResourceNames, } from '@viamrobotics/svelte-sdk';
3
- import { WorldObject } from '../WorldObject';
3
+ import { WorldObject } from '../WorldObject.svelte';
4
4
  import { observe } from '@threlte/core';
5
5
  import { useLogs } from './useLogs.svelte';
6
6
  import { resourceColors } from '../color';
@@ -1,4 +1,4 @@
1
- import { WorldObject } from '../WorldObject';
1
+ import { WorldObject } from '../WorldObject.svelte';
2
2
  interface Context {
3
3
  current: WorldObject[];
4
4
  }
@@ -4,7 +4,7 @@ import { createResourceClient, useResourceNames } from '@viamrobotics/svelte-sdk
4
4
  import { setContext, getContext } from 'svelte';
5
5
  import { fromStore, toStore } from 'svelte/store';
6
6
  import { useMachineSettings } from './useMachineSettings.svelte';
7
- import { WorldObject } from '../WorldObject';
7
+ import { WorldObject } from '../WorldObject.svelte';
8
8
  import { usePersistentUUIDs } from './usePersistentUUIDs.svelte';
9
9
  import { useLogs } from './useLogs.svelte';
10
10
  import { resourceColors } from '../color';
@@ -1,4 +1,4 @@
1
- import type { WorldObject } from '../WorldObject';
1
+ import type { WorldObject } from '../WorldObject.svelte';
2
2
  interface Context {
3
3
  current: WorldObject[];
4
4
  }
@@ -1,4 +1,4 @@
1
- import type { WorldObject } from '../WorldObject';
1
+ import type { WorldObject } from '../WorldObject.svelte';
2
2
  export declare const usePersistentUUIDs: () => {
3
3
  uuids: Map<string, string>;
4
4
  updateUUIDs: (objects: WorldObject[]) => void;
@@ -1,4 +1,4 @@
1
- import { WorldObject, type PointsGeometry } from '../WorldObject';
1
+ import { WorldObject, type PointsGeometry } from '../WorldObject.svelte';
2
2
  interface Context {
3
3
  current: WorldObject<PointsGeometry>[];
4
4
  }
@@ -5,7 +5,7 @@ import { fromStore, toStore } from 'svelte/store';
5
5
  import { createResourceClient, useResourceNames } from '@viamrobotics/svelte-sdk';
6
6
  import { parsePcdInWorker } from '../loaders/pcd';
7
7
  import { useMachineSettings } from './useMachineSettings.svelte';
8
- import { WorldObject } from '../WorldObject';
8
+ import { WorldObject } from '../WorldObject.svelte';
9
9
  import { usePersistentUUIDs } from './usePersistentUUIDs.svelte';
10
10
  import { useLogs } from './useLogs.svelte';
11
11
  const key = Symbol('pointcloud-context');
@@ -1,5 +1,5 @@
1
1
  import { Object3D } from 'three';
2
- import type { WorldObject } from '../WorldObject';
2
+ import type { WorldObject } from '../WorldObject.svelte';
3
3
  interface SelectionContext {
4
4
  readonly current: string | undefined;
5
5
  set(value?: string): void;
@@ -1,4 +1,4 @@
1
- import { WorldObject } from '../WorldObject';
1
+ import { WorldObject } from '../WorldObject.svelte';
2
2
  interface Context {
3
3
  current: WorldObject[];
4
4
  add: () => void;
@@ -2,7 +2,7 @@ import { getContext, setContext } from 'svelte';
2
2
  import { get, set } from 'idb-keyval';
3
3
  import { Debounced } from 'runed';
4
4
  import { createGeometry } from '../transform';
5
- import { WorldObject } from '../WorldObject';
5
+ import { WorldObject } from '../WorldObject.svelte';
6
6
  const key = Symbol('static-geometries-context');
7
7
  export const provideStaticGeometries = () => {
8
8
  let geometries = $state([]);
@@ -1,10 +1,10 @@
1
1
  import { type TransformChangeEvent } from '@viamrobotics/sdk';
2
- import { WorldObject } from '../WorldObject';
2
+ import { WorldObject } from '../WorldObject.svelte';
3
3
  export declare const useWorldStates: () => {
4
4
  readonly names: import("@viamrobotics/sdk").PlainMessage<import("@viamrobotics/sdk/dist/gen/common/v1/common_pb").ResourceName>[];
5
5
  readonly current: {
6
6
  readonly name: string;
7
- readonly objects: WorldObject<import("../WorldObject").Geometries>[];
7
+ readonly objects: WorldObject<import("../WorldObject.svelte").Geometries>[];
8
8
  readonly listUUIDs: import("@tanstack/svelte-query").QueryObserverResult<string[]>;
9
9
  readonly getTransforms: import("@tanstack/svelte-query").QueryObserverResult<import("@viamrobotics/sdk").TransformWithUUID>[] | undefined;
10
10
  readonly changeStream: import("@tanstack/svelte-query").DefinedQueryObserverResult<TransformChangeEvent[], Error> | import("@tanstack/svelte-query").QueryObserverLoadingErrorResult<TransformChangeEvent[], Error> | import("@tanstack/svelte-query").QueryObserverLoadingResult<TransformChangeEvent[], Error> | import("@tanstack/svelte-query").QueryObserverPendingResult<TransformChangeEvent[], Error> | import("@tanstack/svelte-query").QueryObserverPlaceholderResult<TransformChangeEvent[], Error>;
@@ -12,7 +12,7 @@ export declare const useWorldStates: () => {
12
12
  };
13
13
  export declare const useWorldState: (partID: () => string, resourceName: () => string) => {
14
14
  readonly name: string;
15
- readonly objects: WorldObject<import("../WorldObject").Geometries>[];
15
+ readonly objects: WorldObject<import("../WorldObject.svelte").Geometries>[];
16
16
  readonly listUUIDs: import("@tanstack/svelte-query").QueryObserverResult<string[]>;
17
17
  readonly getTransforms: import("@tanstack/svelte-query").QueryObserverResult<import("@viamrobotics/sdk").TransformWithUUID>[] | undefined;
18
18
  readonly changeStream: import("@tanstack/svelte-query").DefinedQueryObserverResult<TransformChangeEvent[], Error> | import("@tanstack/svelte-query").QueryObserverLoadingErrorResult<TransformChangeEvent[], Error> | import("@tanstack/svelte-query").QueryObserverLoadingResult<TransformChangeEvent[], Error> | import("@tanstack/svelte-query").QueryObserverPendingResult<TransformChangeEvent[], Error> | import("@tanstack/svelte-query").QueryObserverPlaceholderResult<TransformChangeEvent[], Error>;
@@ -1,7 +1,7 @@
1
1
  import { toPath, getInUnsafe, mutInUnsafe } from '@thi.ng/paths';
2
2
  import { WorldStateStoreClient, TransformChangeType, } from '@viamrobotics/sdk';
3
3
  import { createResourceClient, createResourceQuery, createResourceStream, useResourceNames, } from '@viamrobotics/svelte-sdk';
4
- import { fromTransform, WorldObject } from '../WorldObject';
4
+ import { fromTransform, WorldObject } from '../WorldObject.svelte';
5
5
  import { usePartID } from './usePartID.svelte';
6
6
  export const useWorldStates = () => {
7
7
  const partID = usePartID();
package/dist/lib.d.ts CHANGED
@@ -3,5 +3,5 @@ export { default as AxesHelper } from './components/AxesHelper.svelte';
3
3
  export { BatchedArrow } from './three/BatchedArrow';
4
4
  export { CapsuleGeometry } from './three/CapsuleGeometry';
5
5
  export { OrientationVector } from './three/OrientationVector';
6
- export { WorldObject } from './WorldObject';
6
+ export { WorldObject } from './WorldObject.svelte';
7
7
  export { parsePcdInWorker } from './loaders/pcd';
package/dist/lib.js CHANGED
@@ -5,6 +5,6 @@ export { default as AxesHelper } from './components/AxesHelper.svelte';
5
5
  export { BatchedArrow } from './three/BatchedArrow';
6
6
  export { CapsuleGeometry } from './three/CapsuleGeometry';
7
7
  export { OrientationVector } from './three/OrientationVector';
8
- export { WorldObject } from './WorldObject';
8
+ export { WorldObject } from './WorldObject.svelte';
9
9
  // Functions
10
10
  export { parsePcdInWorker } from './loaders/pcd';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viamrobotics/motion-tools",
3
- "version": "0.9.5",
3
+ "version": "0.10.0",
4
4
  "description": "Motion visualization with Viam",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",