@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
@@ -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;
@@ -1,8 +1,8 @@
1
- import { createFrame } from '../frame';
2
- import { createPoseFromFrame } from '../transform';
3
- import { Struct, Pose } from '@viamrobotics/sdk';
1
+ import { Pose, Struct } from '@viamrobotics/sdk';
4
2
  import { createAppMutation, createAppQuery } from '@viamrobotics/svelte-sdk';
5
3
  import { getContext, setContext } from 'svelte';
4
+ import { createFrame } from '../frame';
5
+ import { createPoseFromFrame } from '../transform';
6
6
  const key = Symbol('part-config-context');
7
7
  export const providePartConfig = (partID, params) => {
8
8
  const props = $derived(params());
@@ -1,15 +1,15 @@
1
1
  import { VisionClient } from '@viamrobotics/sdk';
2
2
  import { createResourceClient, createResourceQuery, useResourceNames, } from '@viamrobotics/svelte-sdk';
3
- import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
4
- import { useLogs } from './useLogs.svelte';
5
- import { parsePcdInWorker } from '../lib';
6
3
  import { getContext, setContext, untrack } from 'svelte';
7
- import { traits, useWorld } from '../ecs';
8
4
  import { createBufferGeometry, updateBufferGeometry } from '../attribute';
9
- import { useEnvironment } from './useEnvironment.svelte';
10
5
  import { RefetchRates } from '../components/overlay/RefreshRate.svelte';
11
- import { createPose } from '../transform';
6
+ import { traits, useWorld } from '../ecs';
12
7
  import { updateGeometryTrait } from '../ecs/traits';
8
+ import { parsePcdInWorker } from '../lib';
9
+ import { createPose } from '../transform';
10
+ import { useEnvironment } from './useEnvironment.svelte';
11
+ import { useLogs } from './useLogs.svelte';
12
+ import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
13
13
  const key = Symbol('pointcloud-object-context');
14
14
  export const providePointcloudObjects = (partID) => {
15
15
  const world = useWorld();
@@ -1,13 +1,13 @@
1
1
  import { CameraClient } from '@viamrobotics/sdk';
2
- import { setContext, getContext, untrack } from 'svelte';
3
2
  import { createResourceClient, createResourceQuery, useResourceNames, } from '@viamrobotics/svelte-sdk';
4
- import { parsePcdInWorker } from '../loaders/pcd';
5
- import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
6
- import { useLogs } from './useLogs.svelte';
3
+ import { getContext, setContext, untrack } from 'svelte';
4
+ import { createBufferGeometry, updateBufferGeometry } from '../attribute';
7
5
  import { RefetchRates } from '../components/overlay/RefreshRate.svelte';
8
6
  import { traits, useWorld } from '../ecs';
7
+ import { parsePcdInWorker } from '../loaders/pcd';
9
8
  import { useEnvironment } from './useEnvironment.svelte';
10
- import { createBufferGeometry, updateBufferGeometry } from '../attribute';
9
+ import { useLogs } from './useLogs.svelte';
10
+ import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
11
11
  const key = Symbol('pointcloud-context');
12
12
  export const providePointclouds = (partID) => {
13
13
  const environment = useEnvironment();
@@ -1,15 +1,15 @@
1
- import { createRobotQuery, useRobotClient } from '@viamrobotics/svelte-sdk';
2
- import { usePartID } from './usePartID.svelte';
3
- import { commonApi, Pose } from '@viamrobotics/sdk';
4
- import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
5
- import { useEnvironment } from './useEnvironment.svelte';
6
1
  import { observe } from '@threlte/core';
2
+ import { commonApi, Pose } from '@viamrobotics/sdk';
3
+ import { createRobotQuery, useRobotClient } from '@viamrobotics/svelte-sdk';
7
4
  import { untrack } from 'svelte';
8
- import { useFrames } from './useFrames.svelte';
9
5
  import { RefetchRates } from '../components/overlay/RefreshRate.svelte';
6
+ import { useEnvironment } from './useEnvironment.svelte';
7
+ import { useFrames } from './useFrames.svelte';
10
8
  import { useLogs } from './useLogs.svelte';
11
- import { useResourceByName } from './useResourceByName.svelte';
9
+ import { RefreshRates, useMachineSettings } from './useMachineSettings.svelte';
10
+ import { usePartID } from './usePartID.svelte';
12
11
  import { useRefetchPoses } from './useRefetchPoses';
12
+ import { useResourceByName } from './useResourceByName.svelte';
13
13
  const originFrameComponentTypes = new Set(['arm', 'gantry', 'gripper', 'base']);
14
14
  export const usePose = (name, parent) => {
15
15
  const environment = useEnvironment();
@@ -1,5 +1,5 @@
1
- import { Object3D } from 'three';
2
1
  import type { Entity } from 'koota';
2
+ import { Object3D } from 'three';
3
3
  interface SelectedEntityContext {
4
4
  readonly current: Entity | undefined;
5
5
  readonly instance: number | undefined;
@@ -3,6 +3,7 @@ export declare const WEBLABS_CONTEXT_KEY: unique symbol;
3
3
  interface Context {
4
4
  load: (experiments: string[]) => void;
5
5
  isActive(experiment: string): boolean;
6
+ toggle(experiment: string): void;
6
7
  }
7
8
  export declare const createWeblabs: () => Context;
8
9
  export declare const provideWeblabs: () => void;
@@ -37,11 +37,22 @@ export const createWeblabs = () => {
37
37
  }
38
38
  }
39
39
  };
40
+ const toggle = (experiment) => {
41
+ const cookieExperiments = new Set(getCookieExperiments());
42
+ if (activeExperiments.has(experiment)) {
43
+ activeExperiments.delete(experiment);
44
+ cookieExperiments.delete(experiment);
45
+ }
46
+ else {
47
+ activeExperiments.add(experiment);
48
+ cookieExperiments.add(experiment);
49
+ }
50
+ addCookie('weblab_experiments', [...cookieExperiments].join(','));
51
+ };
40
52
  return {
41
53
  load,
42
- isActive: (experiment) => {
43
- return activeExperiments.has(experiment);
44
- },
54
+ isActive: (experiment) => activeExperiments.has(experiment),
55
+ toggle,
45
56
  };
46
57
  };
47
58
  export const provideWeblabs = () => {
@@ -58,6 +69,7 @@ export const useWeblabs = () => {
58
69
  return {
59
70
  load: () => { },
60
71
  isActive: () => false,
72
+ toggle: () => { },
61
73
  };
62
74
  }
63
75
  return context;
@@ -1,16 +1,16 @@
1
- import { WorldStateStoreClient, TransformChangeType, } from '@viamrobotics/sdk';
1
+ import { useThrelte } from '@threlte/core';
2
+ import { TransformChangeType, WorldStateStoreClient, } from '@viamrobotics/sdk';
2
3
  import { createResourceClient, createResourceQuery, createResourceStream, useResourceNames, } from '@viamrobotics/svelte-sdk';
3
- import { parseMetadata } from '../metadata';
4
- import { asColor, asOpacity, isPerVertexColors, STRIDE } from '../buffer';
5
4
  import { Color } from 'three';
6
- import { usePartID } from './usePartID.svelte';
5
+ import { createBufferGeometry } from '../attribute';
6
+ import { asColor, asOpacity, isPerVertexColors, STRIDE } from '../buffer';
7
7
  import { traits, useWorld } from '../ecs';
8
- import { createPose } from '../transform';
9
- import { useThrelte } from '@threlte/core';
10
8
  import { createBox, createCapsule, createSphere } from '../geometry';
11
- import { parsePlyInput } from '../ply';
12
9
  import { parsePcdInWorker } from '../loaders/pcd';
13
- import { createBufferGeometry } from '../attribute';
10
+ import { parseMetadata } from '../metadata';
11
+ import { parsePlyInput } from '../ply';
12
+ import { createPose } from '../transform';
13
+ import { usePartID } from './usePartID.svelte';
14
14
  const colorUtil = new Color();
15
15
  export const provideWorldStates = () => {
16
16
  const partID = usePartID();
@@ -1,6 +1,6 @@
1
1
  import { injectPlugin, isInstanceOf } from '@threlte/core';
2
- import { BatchedMesh, Points, Mesh } from 'three';
3
- import { acceleratedRaycast, computeBoundsTree, disposeBoundsTree, computeBatchedBoundsTree, disposeBatchedBoundsTree, PointsBVH, SAH, BVHHelper, } from 'three-mesh-bvh';
2
+ import { BatchedMesh, Mesh, Points } from 'three';
3
+ import { acceleratedRaycast, BVHHelper, computeBatchedBoundsTree, computeBoundsTree, disposeBatchedBoundsTree, disposeBoundsTree, PointsBVH, SAH, } from 'three-mesh-bvh';
4
4
  export const bvh = (raycaster, options) => {
5
5
  const bvhOptions = $derived({
6
6
  strategy: SAH,
@@ -1,7 +1,7 @@
1
- import type { World, Entity } from 'koota';
1
+ import type { Entity, World } from 'koota';
2
2
  import type { Snapshot } from './buf/draw/v1/snapshot_pb';
3
- import { type SceneMetadata } from './buf/draw/v1/scene_pb';
4
3
  import type { Settings } from './hooks/useSettings.svelte';
4
+ import { type SceneMetadata } from './buf/draw/v1/scene_pb';
5
5
  /**
6
6
  * Merges scene-level metadata (grid, camera, point/line settings) into the
7
7
  * current viewer settings. Millimetre values from the proto are converted
package/dist/snapshot.js CHANGED
@@ -1,13 +1,13 @@
1
+ import { Geometry } from '@viamrobotics/sdk';
1
2
  import { Color, Vector3, Vector4 } from 'three';
2
3
  import { NURBSCurve } from 'three/addons/curves/NURBSCurve.js';
3
- import { RenderArmModels } from './buf/draw/v1/scene_pb';
4
4
  import {} from './buf/draw/v1/drawing_pb';
5
+ import { RenderArmModels } from './buf/draw/v1/scene_pb';
5
6
  import { traits } from './ecs';
6
- import { Geometry } from '@viamrobotics/sdk';
7
7
  import { parseMetadata } from './metadata';
8
- import { rgbaToHex } from './color';
9
- import { asColor, asFloat32Array, asOpacity, isPerVertexColors, STRIDE } from './buffer';
10
8
  import { createBufferGeometry } from './attribute';
9
+ import { asColor, asFloat32Array, asOpacity, isPerVertexColors, STRIDE } from './buffer';
10
+ import { rgbaToHex } from './color';
11
11
  const vec3 = new Vector3();
12
12
  const colorUtil = new Color();
13
13
  /**
@@ -1,5 +1,5 @@
1
- import { BatchedMesh, Vector3, Color } from 'three';
2
1
  import type { OBB } from 'three/addons/math/OBB.js';
2
+ import { BatchedMesh, Color, Vector3 } from 'three';
3
3
  export declare class BatchedArrow {
4
4
  mesh: BatchedMesh;
5
5
  _geometryId: number;
@@ -1,4 +1,4 @@
1
- import { BatchedMesh, MeshBasicMaterial, Object3D, Vector3, Color, Box3 } from 'three';
1
+ import { BatchedMesh, Box3, Color, MeshBasicMaterial, Object3D, Vector3 } from 'three';
2
2
  import { createArrowGeometry } from './arrow';
3
3
  const black = new Color('black');
4
4
  const axis = new Vector3();
@@ -1,4 +1,4 @@
1
- import { Group, Mesh, BufferGeometry, InstancedInterleavedBuffer, type ColorRepresentation, Vector3, Box3 } from 'three';
1
+ import { Box3, BufferGeometry, type ColorRepresentation, Group, InstancedInterleavedBuffer, Mesh, Vector3 } from 'three';
2
2
  export declare class InstancedArrows extends Group {
3
3
  isInstancedArrows: boolean;
4
4
  count: number;
@@ -1,8 +1,8 @@
1
- import { RawShaderMaterial, FrontSide, Group, InstancedBufferAttribute, DynamicDrawUsage, Mesh, BufferGeometry, InstancedInterleavedBuffer, InterleavedBufferAttribute, Material, Color, Vector3, Box3, } from 'three';
2
- import vertexShader from './vertex.glsl';
1
+ import { Box3, BufferGeometry, Color, DynamicDrawUsage, FrontSide, Group, InstancedBufferAttribute, InstancedInterleavedBuffer, InterleavedBufferAttribute, Material, Mesh, RawShaderMaterial, Vector3, } from 'three';
2
+ import { computeBoundingBox } from './box';
3
3
  import fragmentShader from './fragment.glsl';
4
4
  import { createHeadGeometry, createShaftGeometry, toInstanced } from './geometry';
5
- import { computeBoundingBox } from './box';
5
+ import vertexShader from './vertex.glsl';
6
6
  const defaults = {
7
7
  LENGTH: 0.1,
8
8
  HEAD_LENGTH: 0.02,
@@ -1,4 +1,4 @@
1
- import { RawShaderMaterial, Box3, BufferGeometry } from 'three';
1
+ import { Box3, BufferGeometry, RawShaderMaterial } from 'three';
2
2
  const bounds = new Box3();
3
3
  export function computeBoundingBox(geometry) {
4
4
  const src = this.poses.array;
@@ -1,4 +1,4 @@
1
- import { BufferGeometry, BufferAttribute, InstancedBufferGeometry } from 'three';
1
+ import { BufferAttribute, BufferGeometry, InstancedBufferGeometry } from 'three';
2
2
  export const createShaftGeometry = () => {
3
3
  // Triangular prism aligned to +Y, base at y=0, top at y=1.
4
4
  // No caps, 6 verts, 6 side triangles.
@@ -1,4 +1,4 @@
1
- import { Raycaster, type Intersection } from 'three';
1
+ import { type Intersection, Raycaster } from 'three';
2
2
  import type { InstancedArrows } from './InstancedArrows';
3
3
  export declare function meshBoundsRaycast(this: InstancedArrows, raycaster: Raycaster, intersects: Intersection[]): void;
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { Ray, Matrix4, Raycaster, Vector3, Box3, RawShaderMaterial } from 'three';
1
+ import { Box3, Matrix4, RawShaderMaterial, Ray, Raycaster, Vector3 } from 'three';
2
2
  const vec3 = new Vector3();
3
3
  const inverseMatrix = new Matrix4();
4
4
  const localRay = new Ray();
@@ -1,4 +1,4 @@
1
- import { Vector3, Object3D } from 'three';
1
+ import { Object3D, Vector3 } from 'three';
2
2
  import { LineSegments2 } from 'three/examples/jsm/lines/LineSegments2.js';
3
3
  export declare class OBBHelper extends LineSegments2 {
4
4
  constructor(color?: number, linewidth?: number);
@@ -9,7 +9,6 @@ export declare class OBBHelper extends LineSegments2 {
9
9
  elements: number[];
10
10
  };
11
11
  }): this;
12
- /** Set from a Mesh/Object3D assuming no shears. Uses geometry's local bbox + world rotation/scale. */
13
- setFromObject(object: Object3D): this;
12
+ setFromObject(root: Object3D): this;
14
13
  dispose(): void;
15
14
  }