@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.
- package/README.md +1 -1
- package/dist/api-docs-href.d.ts +8 -0
- package/dist/api-docs-href.js +17 -0
- package/dist/client-map.d.ts +30 -30
- package/dist/client-map.js +32 -29
- package/dist/components/angle-unit-toggle.svelte +1 -4
- package/dist/components/api-section.svelte +21 -23
- package/dist/components/api-section.svelte.d.ts +2 -0
- package/dist/components/index.d.ts +21 -0
- package/dist/components/index.js +21 -0
- package/dist/components/is-moving.svelte +4 -5
- package/dist/components/is-moving.svelte.d.ts +1 -0
- package/dist/components/mutation-section.svelte +20 -23
- package/dist/components/mutation-section.svelte.d.ts +2 -0
- package/dist/components/section-title.svelte +63 -0
- package/dist/components/section-title.svelte.d.ts +14 -0
- package/dist/components/widgets/arm/arm.svelte +25 -29
- package/dist/components/widgets/arm/get-joint-positions-widget.svelte +36 -0
- package/dist/components/widgets/arm/get-joint-positions-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/arm/is-moving-widget.svelte +20 -0
- package/dist/components/widgets/arm/is-moving-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/arm/joint-position-editor.svelte +89 -0
- package/dist/components/widgets/arm/joint-position-editor.svelte.d.ts +11 -0
- package/dist/components/widgets/arm/joint-position-quick-move.svelte +85 -0
- package/dist/components/widgets/arm/joint-position-quick-move.svelte.d.ts +9 -0
- package/dist/components/widgets/arm/joint-position-slider.svelte +36 -0
- package/dist/components/widgets/arm/joint-position-slider.svelte.d.ts +9 -0
- package/dist/components/widgets/arm/move-to-joint-positions-widget.svelte +9 -5
- package/dist/components/widgets/arm/move-to-joint-positions.svelte +73 -127
- package/dist/components/widgets/arm/move-to-joint-positions.svelte.d.ts +1 -0
- package/dist/components/widgets/arm/move-to-position.svelte +31 -3
- package/dist/components/widgets/audio-input/audio-input.svelte +2 -0
- package/dist/components/widgets/audio-input/get-properties-widget.svelte +43 -0
- package/dist/components/widgets/audio-input/get-properties-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/audio-output/audio-output.svelte +2 -0
- package/dist/components/widgets/audio-output/get-properties-widget.svelte +43 -0
- package/dist/components/widgets/audio-output/get-properties-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/base/base.svelte +9 -1
- package/dist/components/widgets/base/is-moving-widget.svelte +20 -0
- package/dist/components/widgets/base/is-moving-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/base/quick-move.svelte +12 -5
- package/dist/components/widgets/camera/camera.svelte +156 -142
- package/dist/components/widgets/camera/live-or-polling-video.svelte +9 -1
- package/dist/components/widgets/discovery/discovery.svelte +1 -0
- package/dist/components/widgets/encoder/encoder-position-type.d.ts +8 -0
- package/dist/components/widgets/encoder/encoder-position-type.js +20 -0
- package/dist/components/widgets/encoder/encoder.svelte +5 -20
- package/dist/components/widgets/encoder/get-position-widget.svelte +54 -0
- package/dist/components/widgets/encoder/get-position-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/gantry/gantry.svelte +28 -5
- package/dist/components/widgets/gantry/get-position-widget.svelte +43 -0
- package/dist/components/widgets/gantry/get-position-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/gantry/is-moving-widget.svelte +20 -0
- package/dist/components/widgets/gantry/is-moving-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/generic/generic.svelte +8 -1
- package/dist/components/widgets/gripper/gripper.svelte +11 -5
- package/dist/components/widgets/gripper/is-holding-something.svelte +2 -4
- package/dist/components/widgets/gripper/is-moving-widget.svelte +20 -0
- package/dist/components/widgets/gripper/is-moving-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/input-controller/input-controller.svelte +2 -1
- package/dist/components/widgets/motor/is-moving-widget.svelte +20 -0
- package/dist/components/widgets/motor/is-moving-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/motor/motor.svelte +13 -9
- package/dist/components/widgets/movement-sensor/get-accuracy-widget.svelte +38 -0
- package/dist/components/widgets/movement-sensor/get-accuracy-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/movement-sensor/get-compass-heading-widget.svelte +38 -0
- package/dist/components/widgets/movement-sensor/get-compass-heading-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/movement-sensor/get-orientation-widget.svelte +38 -0
- package/dist/components/widgets/movement-sensor/get-orientation-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/movement-sensor/get-position-widget.svelte +38 -0
- package/dist/components/widgets/movement-sensor/get-position-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/movement-sensor/movement-sensor.svelte +53 -26
- package/dist/components/widgets/power-sensor/get-current-widget.svelte +38 -0
- package/dist/components/widgets/power-sensor/get-current-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/power-sensor/get-power-widget.svelte +38 -0
- package/dist/components/widgets/power-sensor/get-power-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/power-sensor/get-voltage-widget.svelte +38 -0
- package/dist/components/widgets/power-sensor/get-voltage-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/power-sensor/power-sensor.svelte +4 -0
- package/dist/components/widgets/sensor/sensor.svelte +1 -0
- package/dist/components/widgets/servo/is-moving-widget.svelte +20 -0
- package/dist/components/widgets/servo/is-moving-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/servo/servo.svelte +10 -2
- package/dist/components/widgets/slam/get-position-widget.svelte +38 -0
- package/dist/components/widgets/slam/get-position-widget.svelte.d.ts +7 -0
- package/dist/components/widgets/slam/move-on-map.svelte +4 -1
- package/dist/components/widgets/slam/slam.svelte +4 -1
- package/dist/components/widgets/vision-service/context.svelte.d.ts +1 -0
- package/dist/components/widgets/vision-service/context.svelte.js +7 -0
- package/dist/components/widgets/vision-service/detection-row.svelte +38 -0
- package/dist/components/widgets/vision-service/detection-row.svelte.d.ts +8 -0
- package/dist/components/widgets/vision-service/detection.svelte +7 -4
- package/dist/components/widgets/vision-service/legend.svelte +14 -11
- package/dist/components/widgets/vision-service/vision-service.svelte +9 -10
- package/dist/index.d.ts +5 -1
- package/dist/index.js +6 -1
- package/dist/pip/context.svelte.d.ts +2 -0
- package/dist/pip/context.svelte.js +48 -20
- package/dist/resource-triplet.d.ts +37 -0
- package/dist/resource-triplet.js +37 -0
- package/dist/resource-widget.js +187 -0
- package/dist/resource.d.ts +0 -9
- package/dist/resource.js +0 -72
- 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));
|
package/dist/resource.d.ts
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|