@viamrobotics/test-widgets 0.6.0 → 0.7.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 (59) hide show
  1. package/README.md +1 -1
  2. package/dist/api-docs-href.d.ts +8 -0
  3. package/dist/api-docs-href.js +17 -0
  4. package/dist/components/angle-unit-toggle.svelte +1 -4
  5. package/dist/components/api-section.svelte +21 -23
  6. package/dist/components/api-section.svelte.d.ts +2 -0
  7. package/dist/components/index.d.ts +1 -0
  8. package/dist/components/index.js +1 -0
  9. package/dist/components/is-moving.svelte +3 -1
  10. package/dist/components/is-moving.svelte.d.ts +1 -0
  11. package/dist/components/mutation-section.svelte +19 -22
  12. package/dist/components/mutation-section.svelte.d.ts +2 -0
  13. package/dist/components/section-title.svelte +63 -0
  14. package/dist/components/section-title.svelte.d.ts +14 -0
  15. package/dist/components/widgets/arm/arm.svelte +17 -24
  16. package/dist/components/widgets/arm/joint-position-editor.svelte +89 -0
  17. package/dist/components/widgets/arm/joint-position-editor.svelte.d.ts +11 -0
  18. package/dist/components/widgets/arm/joint-position-quick-move.svelte +85 -0
  19. package/dist/components/widgets/arm/joint-position-quick-move.svelte.d.ts +9 -0
  20. package/dist/components/widgets/arm/joint-position-slider.svelte +36 -0
  21. package/dist/components/widgets/arm/joint-position-slider.svelte.d.ts +9 -0
  22. package/dist/components/widgets/arm/move-to-joint-positions.svelte +73 -127
  23. package/dist/components/widgets/arm/move-to-joint-positions.svelte.d.ts +1 -0
  24. package/dist/components/widgets/audio-input/audio-input.svelte +2 -0
  25. package/dist/components/widgets/audio-output/audio-output.svelte +2 -0
  26. package/dist/components/widgets/base/base.svelte +9 -1
  27. package/dist/components/widgets/camera/camera.svelte +184 -135
  28. package/dist/components/widgets/camera/get-pano-coverage-from-xmp.d.ts +31 -0
  29. package/dist/components/widgets/camera/get-pano-coverage-from-xmp.js +56 -0
  30. package/dist/components/widgets/camera/live-or-polling-video.svelte +1 -0
  31. package/dist/components/widgets/camera/live-three-sixty-camera-view.svelte +61 -0
  32. package/dist/components/widgets/camera/live-three-sixty-camera-view.svelte.d.ts +9 -0
  33. package/dist/components/widgets/camera/pano-sphere-scene.svelte +54 -0
  34. package/dist/components/widgets/camera/pano-sphere-scene.svelte.d.ts +10 -0
  35. package/dist/components/widgets/camera/three-sixty-camera-view.svelte +33 -43
  36. package/dist/components/widgets/camera/three-sixty-camera-view.svelte.d.ts +5 -3
  37. package/dist/components/widgets/discovery/discovery.svelte +1 -0
  38. package/dist/components/widgets/encoder/encoder.svelte +2 -0
  39. package/dist/components/widgets/gantry/gantry.svelte +28 -5
  40. package/dist/components/widgets/generic/generic.svelte +8 -1
  41. package/dist/components/widgets/gripper/gripper.svelte +11 -5
  42. package/dist/components/widgets/gripper/is-holding-something.svelte +1 -0
  43. package/dist/components/widgets/input-controller/input-controller.svelte +2 -1
  44. package/dist/components/widgets/motor/motor.svelte +11 -1
  45. package/dist/components/widgets/movement-sensor/movement-sensor.svelte +53 -26
  46. package/dist/components/widgets/power-sensor/power-sensor.svelte +4 -0
  47. package/dist/components/widgets/sensor/sensor.svelte +1 -0
  48. package/dist/components/widgets/servo/servo.svelte +10 -2
  49. package/dist/components/widgets/slam/move-on-map.svelte +4 -1
  50. package/dist/components/widgets/slam/slam.svelte +4 -1
  51. package/dist/components/widgets/vision-service/context.svelte.d.ts +1 -0
  52. package/dist/components/widgets/vision-service/context.svelte.js +7 -0
  53. package/dist/components/widgets/vision-service/detection-row.svelte +38 -0
  54. package/dist/components/widgets/vision-service/detection-row.svelte.d.ts +8 -0
  55. package/dist/components/widgets/vision-service/detection.svelte +7 -4
  56. package/dist/components/widgets/vision-service/legend.svelte +14 -11
  57. package/dist/index.d.ts +1 -0
  58. package/dist/index.js +1 -0
  59. package/package.json +5 -2
@@ -0,0 +1,38 @@
1
+ <script lang="ts">
2
+ import type { Detection } from './context.svelte.js'
3
+
4
+ import { useDetections } from './context.svelte.js'
5
+
6
+ interface Props {
7
+ detection: Detection
8
+ label: string
9
+ }
10
+
11
+ let { detection, label }: Props = $props()
12
+
13
+ const context = useDetections()
14
+
15
+ let node: HTMLElement | undefined
16
+
17
+ $effect(() => {
18
+ if (context.selected === detection.id && node) {
19
+ node.scrollIntoView({ block: 'nearest' })
20
+ }
21
+ })
22
+ </script>
23
+
24
+ <button
25
+ bind:this={node}
26
+ class={[
27
+ 'hover:bg-light w-full py-1 pl-11 text-left',
28
+ (context.hovered.has(detection.id) || context.selected === detection.id) && 'bg-light',
29
+ ]}
30
+ onpointerenter={() => context.hovered.add(detection.id)}
31
+ onpointerleave={() => context.hovered.delete(detection.id)}
32
+ onclick={() => {
33
+ context.selected = context.selected === detection.id ? null : detection.id
34
+ }}
35
+ >
36
+ {label}
37
+ <span class="text-subtle-2 pl-1">{detection.confidence}%</span>
38
+ </button>
@@ -0,0 +1,8 @@
1
+ import type { Detection } from './context.svelte.ts';
2
+ interface Props {
3
+ detection: Detection;
4
+ label: string;
5
+ }
6
+ declare const DetectionRow: import("svelte").Component<Props, {}, "">;
7
+ type DetectionRow = ReturnType<typeof DetectionRow>;
8
+ export default DetectionRow;
@@ -23,6 +23,9 @@
23
23
 
24
24
  let hovering = $state(false)
25
25
 
26
+ const isSelected = $derived(context.selected === detection.id)
27
+ const isActive = $derived(isSelected || context.hovered.has(detection.id))
28
+
26
29
  // These are ballparking, but seem good enough for nearly all cases
27
30
  const isDetectionNearTop = $derived(factoredyMin < 30)
28
31
  const isDetectionNearRight = $derived(factoredxMin > $size.width * 0.66)
@@ -32,10 +35,7 @@
32
35
  positionType="absolute"
33
36
  positionLeft={factoredxMin}
34
37
  positionTop={factoredyMin}
35
- borderColor="#aaa"
36
- hover={{
37
- borderColor: detection.color,
38
- }}
38
+ borderColor={isActive ? detection.color : '#aaa'}
39
39
  borderWidth={2}
40
40
  width={factoredxMax - factoredxMin}
41
41
  height={factoredyMax - factoredyMin}
@@ -47,6 +47,9 @@
47
47
  context.hovered.delete(detection.id)
48
48
  hovering = false
49
49
  }}
50
+ onclick={() => {
51
+ context.selected = context.selected === detection.id ? null : detection.id
52
+ }}
50
53
  >
51
54
  {#if hovering}
52
55
  <Text
@@ -5,6 +5,7 @@
5
5
  import { SvelteSet } from 'svelte/reactivity'
6
6
 
7
7
  import { useDetections } from './context.svelte'
8
+ import DetectionRow from './detection-row.svelte'
8
9
 
9
10
  interface Props {
10
11
  classifications?: Classification[]
@@ -46,6 +47,16 @@
46
47
  }
47
48
  })
48
49
 
50
+ $effect.pre(() => {
51
+ if (context.selected === undefined) return
52
+ for (const [label, { detections }] of Object.entries(context.byLabel)) {
53
+ if (detections.some((d) => d.id === context.selected)) {
54
+ expandedLabels.add(label)
55
+ break
56
+ }
57
+ }
58
+ })
59
+
49
60
  const compareConfidence = (a: Classification, b: Classification) => {
50
61
  return b.confidence - a.confidence
51
62
  }
@@ -113,18 +124,10 @@
113
124
  <ul>
114
125
  {#each detections as detection (detection.id)}
115
126
  <li>
116
- <button
117
- class="hover:bg-light w-full py-1 pl-11 text-left {context.hovered.has(
118
- detection.id
119
- )
120
- ? 'bg-light'
121
- : ''}"
122
- onpointerenter={() => context.hovered.add(detection.id)}
123
- onpointerleave={() => context.hovered.delete(detection.id)}
124
- >
127
+ <DetectionRow
128
+ {detection}
125
129
  {label}
126
- <span class="text-subtle-2 pl-1">{detection.confidence}%</span>
127
- </button>
130
+ />
128
131
  </li>
129
132
  {/each}
130
133
  </ul>
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { createAddImageToDatasetContext, type ImageData, useAddImageToDataset, } from './add-image-to-dataset';
2
+ export { apiDocsHref } from './api-docs-href';
2
3
  export { clientForResource } from './client-map';
3
4
  export * from './components';
4
5
  export { getResourceAPI } from './get-resource-api';
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { createAddImageToDatasetContext, useAddImageToDataset, } from './add-image-to-dataset';
2
+ export { apiDocsHref } from './api-docs-href';
2
3
  export { clientForResource } from './client-map';
3
4
  export * from './components';
4
5
  export { getResourceAPI } from './get-resource-api';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viamrobotics/test-widgets",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -90,7 +90,7 @@
90
90
  "prettier-plugin-tailwindcss": "^0.7.4",
91
91
  "publint": "^0.3.18",
92
92
  "runed": "^0.37.1",
93
- "svelte": "^5.55.7",
93
+ "svelte": "^5.56.3",
94
94
  "svelte-check": "^4.4.6",
95
95
  "svelte-splitpanes": "^8.0.12",
96
96
  "tailwind-merge": "^3.5.0",
@@ -109,6 +109,9 @@
109
109
  "engines": {
110
110
  "node": ">=22.12.0"
111
111
  },
112
+ "dependencies": {
113
+ "svelte-tweakpane-ui": "^1.5.17"
114
+ },
112
115
  "scripts": {
113
116
  "dev": "vite dev",
114
117
  "build": "vite build && pnpm prepack",