@viamrobotics/test-widgets 0.6.1 → 0.8.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 (104) 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/client-map.d.ts +30 -30
  5. package/dist/client-map.js +32 -29
  6. package/dist/components/angle-unit-toggle.svelte +1 -4
  7. package/dist/components/api-section.svelte +21 -23
  8. package/dist/components/api-section.svelte.d.ts +2 -0
  9. package/dist/components/index.d.ts +21 -0
  10. package/dist/components/index.js +21 -0
  11. package/dist/components/is-moving.svelte +4 -5
  12. package/dist/components/is-moving.svelte.d.ts +1 -0
  13. package/dist/components/mutation-section.svelte +20 -23
  14. package/dist/components/mutation-section.svelte.d.ts +2 -0
  15. package/dist/components/section-title.svelte +63 -0
  16. package/dist/components/section-title.svelte.d.ts +14 -0
  17. package/dist/components/widgets/arm/arm.svelte +25 -29
  18. package/dist/components/widgets/arm/get-joint-positions-widget.svelte +36 -0
  19. package/dist/components/widgets/arm/get-joint-positions-widget.svelte.d.ts +7 -0
  20. package/dist/components/widgets/arm/is-moving-widget.svelte +20 -0
  21. package/dist/components/widgets/arm/is-moving-widget.svelte.d.ts +7 -0
  22. package/dist/components/widgets/arm/joint-position-editor.svelte +89 -0
  23. package/dist/components/widgets/arm/joint-position-editor.svelte.d.ts +11 -0
  24. package/dist/components/widgets/arm/joint-position-quick-move.svelte +85 -0
  25. package/dist/components/widgets/arm/joint-position-quick-move.svelte.d.ts +9 -0
  26. package/dist/components/widgets/arm/joint-position-slider.svelte +36 -0
  27. package/dist/components/widgets/arm/joint-position-slider.svelte.d.ts +9 -0
  28. package/dist/components/widgets/arm/move-to-joint-positions-widget.svelte +9 -5
  29. package/dist/components/widgets/arm/move-to-joint-positions.svelte +73 -127
  30. package/dist/components/widgets/arm/move-to-joint-positions.svelte.d.ts +1 -0
  31. package/dist/components/widgets/arm/move-to-position.svelte +31 -3
  32. package/dist/components/widgets/audio-input/audio-input.svelte +2 -0
  33. package/dist/components/widgets/audio-input/get-properties-widget.svelte +43 -0
  34. package/dist/components/widgets/audio-input/get-properties-widget.svelte.d.ts +7 -0
  35. package/dist/components/widgets/audio-output/audio-output.svelte +2 -0
  36. package/dist/components/widgets/audio-output/get-properties-widget.svelte +43 -0
  37. package/dist/components/widgets/audio-output/get-properties-widget.svelte.d.ts +7 -0
  38. package/dist/components/widgets/base/base.svelte +9 -1
  39. package/dist/components/widgets/base/is-moving-widget.svelte +20 -0
  40. package/dist/components/widgets/base/is-moving-widget.svelte.d.ts +7 -0
  41. package/dist/components/widgets/base/quick-move.svelte +12 -5
  42. package/dist/components/widgets/camera/camera.svelte +156 -142
  43. package/dist/components/widgets/camera/live-or-polling-video.svelte +9 -1
  44. package/dist/components/widgets/discovery/discovery.svelte +1 -0
  45. package/dist/components/widgets/encoder/encoder-position-type.d.ts +8 -0
  46. package/dist/components/widgets/encoder/encoder-position-type.js +20 -0
  47. package/dist/components/widgets/encoder/encoder.svelte +5 -20
  48. package/dist/components/widgets/encoder/get-position-widget.svelte +54 -0
  49. package/dist/components/widgets/encoder/get-position-widget.svelte.d.ts +7 -0
  50. package/dist/components/widgets/gantry/gantry.svelte +28 -5
  51. package/dist/components/widgets/gantry/get-position-widget.svelte +43 -0
  52. package/dist/components/widgets/gantry/get-position-widget.svelte.d.ts +7 -0
  53. package/dist/components/widgets/gantry/is-moving-widget.svelte +20 -0
  54. package/dist/components/widgets/gantry/is-moving-widget.svelte.d.ts +7 -0
  55. package/dist/components/widgets/generic/generic.svelte +8 -1
  56. package/dist/components/widgets/gripper/gripper.svelte +11 -5
  57. package/dist/components/widgets/gripper/is-holding-something.svelte +2 -4
  58. package/dist/components/widgets/gripper/is-moving-widget.svelte +20 -0
  59. package/dist/components/widgets/gripper/is-moving-widget.svelte.d.ts +7 -0
  60. package/dist/components/widgets/input-controller/input-controller.svelte +2 -1
  61. package/dist/components/widgets/motor/is-moving-widget.svelte +20 -0
  62. package/dist/components/widgets/motor/is-moving-widget.svelte.d.ts +7 -0
  63. package/dist/components/widgets/motor/motor.svelte +13 -9
  64. package/dist/components/widgets/movement-sensor/get-accuracy-widget.svelte +38 -0
  65. package/dist/components/widgets/movement-sensor/get-accuracy-widget.svelte.d.ts +7 -0
  66. package/dist/components/widgets/movement-sensor/get-compass-heading-widget.svelte +38 -0
  67. package/dist/components/widgets/movement-sensor/get-compass-heading-widget.svelte.d.ts +7 -0
  68. package/dist/components/widgets/movement-sensor/get-orientation-widget.svelte +38 -0
  69. package/dist/components/widgets/movement-sensor/get-orientation-widget.svelte.d.ts +7 -0
  70. package/dist/components/widgets/movement-sensor/get-position-widget.svelte +38 -0
  71. package/dist/components/widgets/movement-sensor/get-position-widget.svelte.d.ts +7 -0
  72. package/dist/components/widgets/movement-sensor/movement-sensor.svelte +53 -26
  73. package/dist/components/widgets/power-sensor/get-current-widget.svelte +38 -0
  74. package/dist/components/widgets/power-sensor/get-current-widget.svelte.d.ts +7 -0
  75. package/dist/components/widgets/power-sensor/get-power-widget.svelte +38 -0
  76. package/dist/components/widgets/power-sensor/get-power-widget.svelte.d.ts +7 -0
  77. package/dist/components/widgets/power-sensor/get-voltage-widget.svelte +38 -0
  78. package/dist/components/widgets/power-sensor/get-voltage-widget.svelte.d.ts +7 -0
  79. package/dist/components/widgets/power-sensor/power-sensor.svelte +4 -0
  80. package/dist/components/widgets/sensor/sensor.svelte +1 -0
  81. package/dist/components/widgets/servo/is-moving-widget.svelte +20 -0
  82. package/dist/components/widgets/servo/is-moving-widget.svelte.d.ts +7 -0
  83. package/dist/components/widgets/servo/servo.svelte +10 -2
  84. package/dist/components/widgets/slam/get-position-widget.svelte +38 -0
  85. package/dist/components/widgets/slam/get-position-widget.svelte.d.ts +7 -0
  86. package/dist/components/widgets/slam/move-on-map.svelte +4 -1
  87. package/dist/components/widgets/slam/slam.svelte +4 -1
  88. package/dist/components/widgets/vision-service/context.svelte.d.ts +1 -0
  89. package/dist/components/widgets/vision-service/context.svelte.js +7 -0
  90. package/dist/components/widgets/vision-service/detection-row.svelte +38 -0
  91. package/dist/components/widgets/vision-service/detection-row.svelte.d.ts +8 -0
  92. package/dist/components/widgets/vision-service/detection.svelte +7 -4
  93. package/dist/components/widgets/vision-service/legend.svelte +14 -11
  94. package/dist/components/widgets/vision-service/vision-service.svelte +9 -10
  95. package/dist/index.d.ts +5 -1
  96. package/dist/index.js +6 -1
  97. package/dist/pip/context.svelte.d.ts +2 -0
  98. package/dist/pip/context.svelte.js +48 -20
  99. package/dist/resource-triplet.d.ts +37 -0
  100. package/dist/resource-triplet.js +37 -0
  101. package/dist/resource-widget.js +187 -0
  102. package/dist/resource.d.ts +0 -9
  103. package/dist/resource.js +0 -72
  104. package/package.json +7 -4
@@ -0,0 +1,37 @@
1
+ /** The canonical set of Viam resource API triplets. */
2
+ export const ResourceTriplets = {
3
+ // components
4
+ Arm: 'rdk:component:arm',
5
+ AudioInput: 'rdk:component:audio_in',
6
+ AudioOutput: 'rdk:component:audio_out',
7
+ Base: 'rdk:component:base',
8
+ Board: 'rdk:component:board',
9
+ Button: 'rdk:component:button',
10
+ Camera: 'rdk:component:camera',
11
+ Encoder: 'rdk:component:encoder',
12
+ Gantry: 'rdk:component:gantry',
13
+ GenericComponent: 'rdk:component:generic',
14
+ Gripper: 'rdk:component:gripper',
15
+ InputController: 'rdk:component:input_controller',
16
+ Motor: 'rdk:component:motor',
17
+ MovementSensor: 'rdk:component:movement_sensor',
18
+ PoseTracker: 'rdk:component:pose_tracker',
19
+ PowerSensor: 'rdk:component:power_sensor',
20
+ Sensor: 'rdk:component:sensor',
21
+ Servo: 'rdk:component:servo',
22
+ Switch: 'rdk:component:switch',
23
+ // services
24
+ BaseRemoteControl: 'rdk:service:base_remote_control',
25
+ DataManager: 'rdk:service:data_manager',
26
+ Discovery: 'rdk:service:discovery',
27
+ GenericService: 'rdk:service:generic',
28
+ MLModel: 'rdk:service:mlmodel',
29
+ Motion: 'rdk:service:motion',
30
+ Navigation: 'rdk:service:navigation',
31
+ Slam: 'rdk:service:slam',
32
+ Sensors: 'rdk:service:sensors',
33
+ Shell: 'rdk:service:shell',
34
+ Video: 'rdk:service:video',
35
+ Vision: 'rdk:service:vision',
36
+ WorldStateStore: 'rdk:service:world_state_store',
37
+ };
@@ -0,0 +1,187 @@
1
+ import { ArmGetJointPositionsWidget, ArmIsMovingWidget, ArmMoveToJointPositionsWidget, ArmMoveToPositionWidget, ArmQuickMoveWidget, ArmWidget, AudioInputGetPropertiesWidget, AudioInputWidget, AudioOutputGetPropertiesWidget, AudioOutputWidget, BaseIsMovingWidget, BaseMoveStraightWidget, BaseQuickMoveWidget, BaseSetPowerWidget, BaseSetVelocityWidget, BaseSpinWidget, BaseWidget, BoardWidget, ButtonWidget, CameraWidget, DiscoveryWidget, EncoderGetPositionWidget, EncoderWidget, GantryGetPositionWidget, GantryHomeWidget, GantryIsMovingWidget, GantryMoveToPositionWidget, GantryQuickMoveWidget, GantryWidget, GripperGrabWidget, GripperIsHoldingSomethingWidget, GripperIsMovingWidget, GripperOpenWidget, GripperWidget, InputControllerWidget, MLModelServiceWidget, MotorGoForWidget, MotorGoToWidget, MotorIsMovingWidget, MotorQuickMoveWidget, MotorSetPowerWidget, MotorSetRPMWidget, MotorWidget, MovementSensorGetAccuracyWidget, MovementSensorGetCompassHeadingWidget, MovementSensorGetOrientationWidget, MovementSensorGetPositionWidget, MovementSensorWidget, NavigationServiceWidget, PowerSensorGetCurrentWidget, PowerSensorGetPowerWidget, PowerSensorGetVoltageWidget, PowerSensorWidget, SensorWidget, ServoIsMovingWidget, ServoMoveWidget, ServoQuickMoveWidget, ServoWidget, SlamGetPositionWidget, SlamWidget, SwitchWidget, VisionServiceWidget, } from "./components/index.js";
2
+ import { getResourceAPI } from "./get-resource-api.js";
3
+ import { ResourceTriplets } from "./resource-triplet.js";
4
+ const resourceWidgetRegistry = {
5
+ // components
6
+ [ResourceTriplets.Arm]: {
7
+ widget: ArmWidget,
8
+ apis: [
9
+ {
10
+ id: 'move-to-joint-positions',
11
+ label: 'MoveToJointPositions',
12
+ widgets: [ArmMoveToJointPositionsWidget],
13
+ },
14
+ { id: 'move-to-position', label: 'MoveToPosition', widgets: [ArmMoveToPositionWidget] },
15
+ { id: 'quick-move', label: 'Quick move', widgets: [ArmQuickMoveWidget] },
16
+ {
17
+ id: 'get-joint-positions',
18
+ label: 'GetJointPositions',
19
+ widgets: [ArmGetJointPositionsWidget],
20
+ },
21
+ { id: 'is-moving', label: 'IsMoving', widgets: [ArmIsMovingWidget] },
22
+ ],
23
+ },
24
+ [ResourceTriplets.AudioInput]: {
25
+ widget: AudioInputWidget,
26
+ apis: [
27
+ { id: 'get-properties', label: 'GetProperties', widgets: [AudioInputGetPropertiesWidget] },
28
+ ],
29
+ },
30
+ [ResourceTriplets.AudioOutput]: {
31
+ widget: AudioOutputWidget,
32
+ apis: [
33
+ {
34
+ id: 'get-properties',
35
+ label: 'GetProperties',
36
+ widgets: [AudioOutputGetPropertiesWidget],
37
+ },
38
+ ],
39
+ },
40
+ [ResourceTriplets.Base]: {
41
+ widget: BaseWidget,
42
+ apis: [
43
+ { id: 'quick-move', label: 'Quick move', widgets: [BaseQuickMoveWidget] },
44
+ { id: 'move-straight', label: 'MoveStraight', widgets: [BaseMoveStraightWidget] },
45
+ { id: 'spin', label: 'Spin', widgets: [BaseSpinWidget] },
46
+ { id: 'set-power', label: 'SetPower', widgets: [BaseSetPowerWidget] },
47
+ { id: 'set-velocity', label: 'SetVelocity', widgets: [BaseSetVelocityWidget] },
48
+ { id: 'is-moving', label: 'IsMoving', widgets: [BaseIsMovingWidget] },
49
+ ],
50
+ },
51
+ [ResourceTriplets.Board]: { widget: BoardWidget, apis: [] },
52
+ [ResourceTriplets.Button]: { widget: ButtonWidget, apis: [] },
53
+ [ResourceTriplets.Camera]: { widget: CameraWidget, apis: [] },
54
+ [ResourceTriplets.Encoder]: {
55
+ widget: EncoderWidget,
56
+ apis: [{ id: 'get-position', label: 'GetPosition', widgets: [EncoderGetPositionWidget] }],
57
+ },
58
+ [ResourceTriplets.Gantry]: {
59
+ widget: GantryWidget,
60
+ apis: [
61
+ { id: 'home', label: 'Home', widgets: [GantryHomeWidget] },
62
+ { id: 'move-to-position', label: 'MoveToPosition', widgets: [GantryMoveToPositionWidget] },
63
+ { id: 'quick-move', label: 'Quick move', widgets: [GantryQuickMoveWidget] },
64
+ { id: 'get-position', label: 'GetPosition', widgets: [GantryGetPositionWidget] },
65
+ { id: 'is-moving', label: 'IsMoving', widgets: [GantryIsMovingWidget] },
66
+ ],
67
+ },
68
+ [ResourceTriplets.Gripper]: {
69
+ widget: GripperWidget,
70
+ apis: [
71
+ { id: 'open-grab', label: 'Open / Grab', widgets: [GripperOpenWidget, GripperGrabWidget] },
72
+ {
73
+ id: 'is-holding-something',
74
+ label: 'IsHoldingSomething',
75
+ widgets: [GripperIsHoldingSomethingWidget],
76
+ },
77
+ { id: 'is-moving', label: 'IsMoving', widgets: [GripperIsMovingWidget] },
78
+ ],
79
+ },
80
+ [ResourceTriplets.InputController]: { widget: InputControllerWidget, apis: [] },
81
+ [ResourceTriplets.Motor]: {
82
+ widget: MotorWidget,
83
+ apis: [
84
+ { id: 'quick-move', label: 'Quick move', widgets: [MotorQuickMoveWidget] },
85
+ { id: 'set-power', label: 'SetPower', widgets: [MotorSetPowerWidget] },
86
+ { id: 'set-rpm', label: 'SetRPM', widgets: [MotorSetRPMWidget] },
87
+ { id: 'go-for', label: 'GoFor', widgets: [MotorGoForWidget] },
88
+ { id: 'go-to', label: 'GoTo', widgets: [MotorGoToWidget] },
89
+ { id: 'is-moving', label: 'IsMoving', widgets: [MotorIsMovingWidget] },
90
+ ],
91
+ },
92
+ [ResourceTriplets.MovementSensor]: {
93
+ widget: MovementSensorWidget,
94
+ apis: [
95
+ { id: 'get-position', label: 'GetPosition', widgets: [MovementSensorGetPositionWidget] },
96
+ {
97
+ id: 'get-orientation',
98
+ label: 'GetOrientation',
99
+ widgets: [MovementSensorGetOrientationWidget],
100
+ },
101
+ {
102
+ id: 'get-compass-heading',
103
+ label: 'GetCompassHeading',
104
+ widgets: [MovementSensorGetCompassHeadingWidget],
105
+ },
106
+ { id: 'get-accuracy', label: 'GetAccuracy', widgets: [MovementSensorGetAccuracyWidget] },
107
+ ],
108
+ },
109
+ [ResourceTriplets.PowerSensor]: {
110
+ widget: PowerSensorWidget,
111
+ apis: [
112
+ { id: 'get-voltage', label: 'GetVoltage', widgets: [PowerSensorGetVoltageWidget] },
113
+ { id: 'get-current', label: 'GetCurrent', widgets: [PowerSensorGetCurrentWidget] },
114
+ { id: 'get-power', label: 'GetPower', widgets: [PowerSensorGetPowerWidget] },
115
+ ],
116
+ },
117
+ [ResourceTriplets.Sensor]: { widget: SensorWidget, apis: [] },
118
+ [ResourceTriplets.Servo]: {
119
+ widget: ServoWidget,
120
+ apis: [
121
+ { id: 'move', label: 'Move', widgets: [ServoMoveWidget] },
122
+ { id: 'quick-move', label: 'Quick move', widgets: [ServoQuickMoveWidget] },
123
+ { id: 'is-moving', label: 'IsMoving', widgets: [ServoIsMovingWidget] },
124
+ ],
125
+ },
126
+ [ResourceTriplets.Switch]: { widget: SwitchWidget, apis: [] },
127
+ // services
128
+ [ResourceTriplets.Discovery]: { widget: DiscoveryWidget, apis: [] },
129
+ [ResourceTriplets.MLModel]: { widget: MLModelServiceWidget, apis: [] },
130
+ [ResourceTriplets.Navigation]: { widget: NavigationServiceWidget, apis: [] },
131
+ [ResourceTriplets.Slam]: {
132
+ widget: SlamWidget,
133
+ apis: [{ id: 'get-position', label: 'GetPosition', widgets: [SlamGetPositionWidget] }],
134
+ },
135
+ [ResourceTriplets.Vision]: { widget: VisionServiceWidget, apis: [] },
136
+ };
137
+ /**
138
+ * Returns a resource's individual API widgets. Each entry carries a stable `id`, a
139
+ * display `label`, and the `widgets` to render with `{ partID, resourceName }`.
140
+ *
141
+ * Returns `[]` for a resource with a card but no standalone API widgets, and for
142
+ * unrecognized resources.
143
+ *
144
+ * @example
145
+ * apiWidgetsForResource(gripperResourceName)
146
+ * // [{ id: 'open-grab', label: 'Open / Grab', widgets: [GripperOpenWidget, GripperGrabWidget] }, ...]
147
+ */
148
+ export const apiWidgetsForResource = (resource) => {
149
+ const api = getResourceAPI(resource);
150
+ return api in resourceWidgetRegistry
151
+ ? resourceWidgetRegistry[api].apis
152
+ : [];
153
+ };
154
+ /**
155
+ * Returns every resource triplet that has a test card, mapped to its API widgets.
156
+ * Use this to enumerate the full catalog, e.g. a menu spanning every resource type;
157
+ * for a single resource, prefer `apiWidgetsForResource`.
158
+ *
159
+ * @example
160
+ * availableAPIWidgets()[ResourceTriplets.Gripper]
161
+ * // [{ id: 'open-grab', label: 'Open / Grab', widgets: [GripperOpenWidget, GripperGrabWidget] }, ...]
162
+ */
163
+ export const availableAPIWidgets = () => {
164
+ const result = {};
165
+ for (const triplet of Object.keys(resourceWidgetRegistry)) {
166
+ result[triplet] = resourceWidgetRegistry[triplet].apis;
167
+ }
168
+ return result;
169
+ };
170
+ /** Returns the full composite test card for a resource, or `undefined` if none exists. */
171
+ export const widgetForResource = (resource) => {
172
+ const api = getResourceAPI(resource);
173
+ return api in resourceWidgetRegistry
174
+ ? resourceWidgetRegistry[api].widget
175
+ : undefined;
176
+ };
177
+ const knownResources = new Set(Object.values(ResourceTriplets));
178
+ /** Whether a resource's API is a recognized Viam resource triplet. */
179
+ export const isKnownResource = (resource) => knownResources.has(getResourceAPI(resource));
180
+ const hiddenResources = new Set([
181
+ ResourceTriplets.DataManager,
182
+ ResourceTriplets.Motion,
183
+ ResourceTriplets.Sensors,
184
+ ResourceTriplets.Shell,
185
+ ]);
186
+ /** Whether the control view should surface a card for this resource. */
187
+ export const showResourceWidget = (resource) => resource.namespace !== 'rdk-internal' && !hiddenResources.has(getResourceAPI(resource));
@@ -1,13 +1,8 @@
1
1
  import type { ResourceStatus } from '@viamrobotics/svelte-sdk';
2
- import type { Component } from 'svelte';
3
2
  import { type ResourceName } from '@viamrobotics/sdk';
4
3
  export type NamedResourceStatus = ResourceStatus & {
5
4
  name: ResourceName;
6
5
  };
7
- interface ResourceWidget {
8
- partID: string;
9
- resourceName: string;
10
- }
11
6
  export declare const ResourceStatusText: {
12
7
  0: string;
13
8
  3: string;
@@ -17,7 +12,3 @@ export declare const ResourceStatusText: {
17
12
  4: string;
18
13
  };
19
14
  export declare const sortResourceNames: (names: ResourceName[]) => ResourceName[];
20
- export declare const hasWidget: (resource: ResourceName) => boolean;
21
- export declare const widgetForResource: (resource: ResourceName) => Component<ResourceWidget> | undefined;
22
- export declare const showResourceWidget: (resource: ResourceName) => boolean;
23
- export {};
package/dist/resource.js CHANGED
@@ -1,7 +1,4 @@
1
1
  import { robotApi } from '@viamrobotics/sdk';
2
- import { clientMap } from "./client-map.js";
3
- import { ArmWidget, AudioInputWidget, AudioOutputWidget, BaseWidget, BoardWidget, ButtonWidget, CameraWidget, DiscoveryWidget, EncoderWidget, GantryWidget, GripperWidget, InputControllerWidget, MLModelServiceWidget, MotorWidget, MovementSensorWidget, NavigationServiceWidget, PowerSensorWidget, SensorWidget, ServoWidget, SlamWidget, SwitchWidget, VisionServiceWidget, } from './components';
4
- import { getResourceAPI } from "./get-resource-api.js";
5
2
  export const ResourceStatusText = {
6
3
  [robotApi.ResourceStatus_State.UNSPECIFIED]: 'unspecified',
7
4
  [robotApi.ResourceStatus_State.READY]: 'ready',
@@ -10,60 +7,6 @@ export const ResourceStatusText = {
10
7
  [robotApi.ResourceStatus_State.UNCONFIGURED]: 'unconfigured',
11
8
  [robotApi.ResourceStatus_State.REMOVING]: 'removing',
12
9
  };
13
- // The types are nicer to work with as arrays (as opposed to a record of objects) because TS will infer the types.
14
- // try not to expose this map so that we can easily refactor it.
15
- const resourceMap =
16
- // api: [client, testView, showResourceInControlView]
17
- // list created via `cat rdkbuiltins/viam-server-stable.json | rg "api" | sort | uniq`
18
- {
19
- 'rdk:component:arm': [clientMap['rdk:component:arm'], ArmWidget, true],
20
- 'rdk:component:audio_in': [clientMap['rdk:component:audio_in'], AudioInputWidget, true],
21
- 'rdk:component:audio_out': [clientMap['rdk:component:audio_out'], AudioOutputWidget, true],
22
- 'rdk:component:base': [clientMap['rdk:component:base'], BaseWidget, true],
23
- 'rdk:component:board': [clientMap['rdk:component:board'], BoardWidget, true],
24
- 'rdk:component:button': [clientMap['rdk:component:button'], ButtonWidget, true],
25
- 'rdk:component:camera': [clientMap['rdk:component:camera'], CameraWidget, true],
26
- 'rdk:component:encoder': [clientMap['rdk:component:encoder'], EncoderWidget, true],
27
- 'rdk:component:gantry': [clientMap['rdk:component:gantry'], GantryWidget, true],
28
- 'rdk:component:generic': [clientMap['rdk:component:generic'], undefined, true],
29
- 'rdk:component:gripper': [clientMap['rdk:component:gripper'], GripperWidget, true],
30
- 'rdk:component:input_controller': [
31
- clientMap['rdk:component:input_controller'],
32
- InputControllerWidget,
33
- true,
34
- ],
35
- 'rdk:component:motor': [clientMap['rdk:component:motor'], MotorWidget, true],
36
- 'rdk:component:movement_sensor': [
37
- clientMap['rdk:component:movement_sensor'],
38
- MovementSensorWidget,
39
- true,
40
- ],
41
- 'rdk:component:pose_tracker': [clientMap['rdk:component:pose_tracker'], undefined, true],
42
- 'rdk:component:power_sensor': [
43
- clientMap['rdk:component:power_sensor'],
44
- PowerSensorWidget,
45
- true,
46
- ],
47
- 'rdk:component:sensor': [clientMap['rdk:component:sensor'], SensorWidget, true],
48
- 'rdk:component:servo': [clientMap['rdk:component:servo'], ServoWidget, true],
49
- 'rdk:component:switch': [clientMap['rdk:component:switch'], SwitchWidget, true],
50
- 'rdk:service:base_remote_control': [undefined, undefined, true],
51
- // dont show -- confusing to users
52
- 'rdk:service:data_manager': [clientMap['rdk:service:data_manager'], undefined, false],
53
- 'rdk:service:discovery': [clientMap['rdk:service:discovery'], DiscoveryWidget, true],
54
- 'rdk:service:generic': [clientMap['rdk:service:generic'], undefined, true],
55
- 'rdk:service:mlmodel': [clientMap['rdk:service:mlmodel'], MLModelServiceWidget, true],
56
- // dont show -- confusing to users
57
- 'rdk:service:motion': [clientMap['rdk:service:motion'], undefined, false],
58
- 'rdk:service:navigation': [clientMap['rdk:service:navigation'], NavigationServiceWidget, true],
59
- // dont show -- confusing to users
60
- 'rdk:service:sensors': [undefined, undefined, false],
61
- 'rdk:service:shell': [undefined, undefined, false],
62
- 'rdk:service:slam': [clientMap['rdk:service:slam'], SlamWidget, true],
63
- 'rdk:service:vision': [clientMap['rdk:service:vision'], VisionServiceWidget, true],
64
- 'rdk:service:world_state_store': [clientMap['rdk:service:world_state_store'], undefined, true],
65
- 'rdk:service:video': [clientMap['rdk:service:video'], undefined, true],
66
- };
67
10
  // sorts resource names by local/remote -> type -> name (alphabetical) to produce a list like
68
11
  // component a
69
12
  // component z
@@ -79,18 +22,3 @@ export const sortResourceNames = (names) => names.toSorted(({ type, name }, { ty
79
22
  // sort components before services
80
23
  return type === otherType ? name.localeCompare(otherName) : type.localeCompare(otherType);
81
24
  });
82
- export const hasWidget = (resource) => getResourceAPI(resource) in resourceMap;
83
- export const widgetForResource = (resource) => {
84
- const resAPI = getResourceAPI(resource);
85
- return resAPI in resourceMap
86
- ? resourceMap[resAPI][1]
87
- : undefined;
88
- };
89
- export const showResourceWidget = (resource) => {
90
- if (resource.namespace === 'rdk-internal') {
91
- return false;
92
- }
93
- const resAPI = getResourceAPI(resource);
94
- // unknown apis should still get cards & show up in the sidebar
95
- return resAPI in resourceMap ? resourceMap[resAPI][2] : true;
96
- };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viamrobotics/test-widgets",
3
- "version": "0.6.1",
3
+ "version": "0.8.0",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "files": [
@@ -72,7 +72,7 @@
72
72
  "@viamrobotics/svelte-sdk": "^1.2.1",
73
73
  "@viamrobotics/tailwind-config": "^1.0.0",
74
74
  "@viamrobotics/three": "^0.0.9",
75
- "@vitest/browser": "^4.1.6",
75
+ "@vitest/browser": "^4.1.8",
76
76
  "@vitest/browser-playwright": "^4.1.5",
77
77
  "@vitest/coverage-v8": "^4.1.5",
78
78
  "eslint": "^10.2.1",
@@ -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",
@@ -100,7 +100,7 @@
100
100
  "type-fest": "^5.6.0",
101
101
  "typescript": "^6.0.3",
102
102
  "typescript-eslint": "^8.59.1",
103
- "vite": "^8.0.10",
103
+ "vite": "^8.0.16",
104
104
  "vite-plugin-devtools-json": "^1.0.0",
105
105
  "vite-plugin-glsl": "^1.6.0",
106
106
  "vitest": "^4.1.5",
@@ -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",