@viamrobotics/test-widgets 0.0.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 (479) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +65 -0
  3. package/dist/add-image-to-dataset.d.ts +18 -0
  4. package/dist/add-image-to-dataset.js +18 -0
  5. package/dist/assert.d.ts +14 -0
  6. package/dist/assert.js +21 -0
  7. package/dist/builtin.js +59 -0
  8. package/dist/components/angle-unit-toggle.svelte +27 -0
  9. package/dist/components/angle-unit-toggle.svelte.d.ts +7 -0
  10. package/dist/components/api-section.svelte +69 -0
  11. package/dist/components/api-section.svelte.d.ts +13 -0
  12. package/dist/components/board/pin-section.svelte +28 -0
  13. package/dist/components/board/pin-section.svelte.d.ts +9 -0
  14. package/dist/components/connection-status.svelte +87 -0
  15. package/dist/components/connection-status.svelte.d.ts +14 -0
  16. package/dist/components/content-rect.svelte +21 -0
  17. package/dist/components/content-rect.svelte.d.ts +9 -0
  18. package/dist/components/copy-button.svelte +37 -0
  19. package/dist/components/copy-button.svelte.d.ts +9 -0
  20. package/dist/components/error.svelte +25 -0
  21. package/dist/components/error.svelte.d.ts +8 -0
  22. package/dist/components/image-annotations/annotation-edit-utils.d.ts +21 -0
  23. package/dist/components/image-annotations/annotation-edit-utils.js +183 -0
  24. package/dist/components/image-annotations/bounding-box-labeler.svelte +521 -0
  25. package/dist/components/image-annotations/bounding-box-labeler.svelte.d.ts +51 -0
  26. package/dist/components/image-annotations/bounding-box-types.d.ts +29 -0
  27. package/dist/components/image-annotations/bounding-box-types.js +17 -0
  28. package/dist/components/image-annotations/bounding-box.svelte +230 -0
  29. package/dist/components/image-annotations/bounding-box.svelte.d.ts +44 -0
  30. package/dist/components/image-annotations/get-image-size.d.ts +7 -0
  31. package/dist/components/image-annotations/get-image-size.js +29 -0
  32. package/dist/components/image-annotations/labeler-constants.d.ts +4 -0
  33. package/dist/components/image-annotations/labeler-constants.js +4 -0
  34. package/dist/components/image-annotations/resize-corner.svelte +47 -0
  35. package/dist/components/image-annotations/resize-corner.svelte.d.ts +9 -0
  36. package/dist/components/image-annotations/resize-edge.svelte +51 -0
  37. package/dist/components/image-annotations/resize-edge.svelte.d.ts +9 -0
  38. package/dist/components/image-annotations/resize-handle-props.d.ts +60 -0
  39. package/dist/components/image-annotations/resize-handle-props.js +66 -0
  40. package/dist/components/image-annotations/resize-handles.svelte +53 -0
  41. package/dist/components/image-annotations/resize-handles.svelte.d.ts +8 -0
  42. package/dist/components/index.d.ts +57 -0
  43. package/dist/components/index.js +56 -0
  44. package/dist/components/is-moving.svelte +66 -0
  45. package/dist/components/is-moving.svelte.d.ts +12 -0
  46. package/dist/components/maplibre/controls/center.svelte +41 -0
  47. package/dist/components/maplibre/controls/center.svelte.d.ts +19 -0
  48. package/dist/components/maplibre/controls/follow.svelte +65 -0
  49. package/dist/components/maplibre/controls/follow.svelte.d.ts +11 -0
  50. package/dist/components/maplibre/controls/navigation.svelte +57 -0
  51. package/dist/components/maplibre/controls/navigation.svelte.d.ts +23 -0
  52. package/dist/components/maplibre/controls/satellite.svelte +31 -0
  53. package/dist/components/maplibre/controls/satellite.svelte.d.ts +19 -0
  54. package/dist/components/maplibre/directional-marker.svelte +34 -0
  55. package/dist/components/maplibre/directional-marker.svelte.d.ts +13 -0
  56. package/dist/components/maplibre/hooks.d.ts +38 -0
  57. package/dist/components/maplibre/hooks.js +45 -0
  58. package/dist/components/maplibre/index.d.ts +13 -0
  59. package/dist/components/maplibre/index.js +13 -0
  60. package/dist/components/maplibre/index.svelte +232 -0
  61. package/dist/components/maplibre/index.svelte.d.ts +75 -0
  62. package/dist/components/maplibre/lnglat-input.svelte +54 -0
  63. package/dist/components/maplibre/lnglat-input.svelte.d.ts +17 -0
  64. package/dist/components/maplibre/marker.svelte +60 -0
  65. package/dist/components/maplibre/marker.svelte.d.ts +29 -0
  66. package/dist/components/maplibre/math.d.ts +12 -0
  67. package/dist/components/maplibre/math.js +18 -0
  68. package/dist/components/maplibre/plugins/google-maps.d.ts +1 -0
  69. package/dist/components/maplibre/plugins/google-maps.js +74 -0
  70. package/dist/components/maplibre/plugins/raycast.d.ts +10 -0
  71. package/dist/components/maplibre/plugins/raycast.js +29 -0
  72. package/dist/components/maplibre/plugins/three.svelte.d.ts +21 -0
  73. package/dist/components/maplibre/plugins/three.svelte.js +73 -0
  74. package/dist/components/maplibre/style.d.ts +4 -0
  75. package/dist/components/maplibre/style.js +88 -0
  76. package/dist/components/maplibre/types.d.ts +14 -0
  77. package/dist/components/maplibre/types.js +19 -0
  78. package/dist/components/maplibre/zoom.d.ts +1 -0
  79. package/dist/components/maplibre/zoom.js +1 -0
  80. package/dist/components/mutation-section.svelte +76 -0
  81. package/dist/components/mutation-section.svelte.d.ts +14 -0
  82. package/dist/components/mutation-view.svelte +29 -0
  83. package/dist/components/mutation-view.svelte.d.ts +10 -0
  84. package/dist/components/navigation-map/components/draw-tool.svelte +139 -0
  85. package/dist/components/navigation-map/components/draw-tool.svelte.d.ts +13 -0
  86. package/dist/components/navigation-map/components/input/geometry.svelte +123 -0
  87. package/dist/components/navigation-map/components/input/geometry.svelte.d.ts +9 -0
  88. package/dist/components/navigation-map/components/input/orientation.svelte +46 -0
  89. package/dist/components/navigation-map/components/input/orientation.svelte.d.ts +10 -0
  90. package/dist/components/navigation-map/components/map.svelte +145 -0
  91. package/dist/components/navigation-map/components/map.svelte.d.ts +20 -0
  92. package/dist/components/navigation-map/components/nav/index.svelte +64 -0
  93. package/dist/components/navigation-map/components/nav/index.svelte.d.ts +12 -0
  94. package/dist/components/navigation-map/components/nav/key.svelte +16 -0
  95. package/dist/components/navigation-map/components/nav/key.svelte.d.ts +8 -0
  96. package/dist/components/navigation-map/components/nav/obstacles-legend.svelte +18 -0
  97. package/dist/components/navigation-map/components/nav/obstacles-legend.svelte.d.ts +26 -0
  98. package/dist/components/navigation-map/components/nav/obstacles.svelte +206 -0
  99. package/dist/components/navigation-map/components/nav/obstacles.svelte.d.ts +7 -0
  100. package/dist/components/navigation-map/components/nav/waypoints.svelte +62 -0
  101. package/dist/components/navigation-map/components/nav/waypoints.svelte.d.ts +8 -0
  102. package/dist/components/navigation-map/components/obstacle.svelte +265 -0
  103. package/dist/components/navigation-map/components/obstacle.svelte.d.ts +10 -0
  104. package/dist/components/navigation-map/components/path.svelte +30 -0
  105. package/dist/components/navigation-map/components/path.svelte.d.ts +9 -0
  106. package/dist/components/navigation-map/components/robot-marker.svelte +18 -0
  107. package/dist/components/navigation-map/components/robot-marker.svelte.d.ts +8 -0
  108. package/dist/components/navigation-map/components/scene-layer.svelte +22 -0
  109. package/dist/components/navigation-map/components/scene-layer.svelte.d.ts +7 -0
  110. package/dist/components/navigation-map/components/scene.svelte +98 -0
  111. package/dist/components/navigation-map/components/scene.svelte.d.ts +7 -0
  112. package/dist/components/navigation-map/components/waypoints.svelte +14 -0
  113. package/dist/components/navigation-map/components/waypoints.svelte.d.ts +18 -0
  114. package/dist/components/navigation-map/index.d.ts +2 -0
  115. package/dist/components/navigation-map/index.js +2 -0
  116. package/dist/components/navigation-map/index.svelte +99 -0
  117. package/dist/components/navigation-map/index.svelte.d.ts +51 -0
  118. package/dist/components/navigation-map/lib/create-geometry.d.ts +2 -0
  119. package/dist/components/navigation-map/lib/create-geometry.js +31 -0
  120. package/dist/components/navigation-map/lib/create-name.d.ts +1 -0
  121. package/dist/components/navigation-map/lib/create-name.js +9 -0
  122. package/dist/components/navigation-map/lib/create-obstacle.d.ts +3 -0
  123. package/dist/components/navigation-map/lib/create-obstacle.js +12 -0
  124. package/dist/components/navigation-map/plugins/compute-bounding.svelte.d.ts +1 -0
  125. package/dist/components/navigation-map/plugins/compute-bounding.svelte.js +33 -0
  126. package/dist/components/navigation-map/plugins/interactivity.d.ts +6 -0
  127. package/dist/components/navigation-map/plugins/interactivity.js +27 -0
  128. package/dist/components/navigation-map/types.d.ts +37 -0
  129. package/dist/components/navigation-map/types.js +5 -0
  130. package/dist/components/navigation-map/use-navigation-map.svelte.d.ts +17 -0
  131. package/dist/components/navigation-map/use-navigation-map.svelte.js +69 -0
  132. package/dist/components/progress.svelte +4 -0
  133. package/dist/components/progress.svelte.d.ts +26 -0
  134. package/dist/components/queries.svelte +73 -0
  135. package/dist/components/queries.svelte.d.ts +12 -0
  136. package/dist/components/query.svelte +21 -0
  137. package/dist/components/query.svelte.d.ts +10 -0
  138. package/dist/components/readings-list.svelte +73 -0
  139. package/dist/components/readings-list.svelte.d.ts +6 -0
  140. package/dist/components/refetch-controller.svelte +122 -0
  141. package/dist/components/refetch-controller.svelte.d.ts +12 -0
  142. package/dist/components/refetch-interval-store.svelte.d.ts +18 -0
  143. package/dist/components/refetch-interval-store.svelte.js +37 -0
  144. package/dist/components/resource-icon.svelte +31 -0
  145. package/dist/components/resource-icon.svelte.d.ts +6 -0
  146. package/dist/components/section-group.svelte +64 -0
  147. package/dist/components/section-group.svelte.d.ts +14 -0
  148. package/dist/components/slam/map2d/base-marker.txt +1 -0
  149. package/dist/components/slam/map2d/color-map.d.ts +2 -0
  150. package/dist/components/slam/map2d/color-map.js +55 -0
  151. package/dist/components/slam/map2d/destination-marker.txt +1 -0
  152. package/dist/components/slam/map2d/helpers.svelte +29 -0
  153. package/dist/components/slam/map2d/helpers.svelte.d.ts +22 -0
  154. package/dist/components/slam/map2d/hooks/use-raycast-click/index.d.ts +9 -0
  155. package/dist/components/slam/map2d/hooks/use-raycast-click/index.js +36 -0
  156. package/dist/components/slam/map2d/hooks/use-raycast-click/normalize-device-coordinates.d.ts +2 -0
  157. package/dist/components/slam/map2d/hooks/use-raycast-click/normalize-device-coordinates.js +9 -0
  158. package/dist/components/slam/map2d/index.svelte +60 -0
  159. package/dist/components/slam/map2d/index.svelte.d.ts +37 -0
  160. package/dist/components/slam/map2d/legend.svelte +67 -0
  161. package/dist/components/slam/map2d/legend.svelte.d.ts +27 -0
  162. package/dist/components/slam/map2d/marker.svelte +41 -0
  163. package/dist/components/slam/map2d/marker.svelte.d.ts +13 -0
  164. package/dist/components/slam/map2d/motion-path.svelte +65 -0
  165. package/dist/components/slam/map2d/motion-path.svelte.d.ts +15 -0
  166. package/dist/components/slam/map2d/points.svelte +60 -0
  167. package/dist/components/slam/map2d/points.svelte.d.ts +23 -0
  168. package/dist/components/slam/map2d/render-order.d.ts +7 -0
  169. package/dist/components/slam/map2d/render-order.js +7 -0
  170. package/dist/components/slam/map2d/scene.svelte +130 -0
  171. package/dist/components/slam/map2d/scene.svelte.d.ts +16 -0
  172. package/dist/components/status-pill.svelte +25 -0
  173. package/dist/components/status-pill.svelte.d.ts +8 -0
  174. package/dist/components/stop-button.svelte +21 -0
  175. package/dist/components/stop-button.svelte.d.ts +7 -0
  176. package/dist/components/stop.svelte +51 -0
  177. package/dist/components/stop.svelte.d.ts +9 -0
  178. package/dist/components/table.svelte +46 -0
  179. package/dist/components/table.svelte.d.ts +7 -0
  180. package/dist/components/three/axes-helper.svelte +79 -0
  181. package/dist/components/three/axes-helper.svelte.d.ts +10 -0
  182. package/dist/components/three/index.d.ts +1 -0
  183. package/dist/components/three/index.js +1 -0
  184. package/dist/components/widgets/arm/arm.svelte +132 -0
  185. package/dist/components/widgets/arm/arm.svelte.d.ts +7 -0
  186. package/dist/components/widgets/arm/get-joint-positions.svelte +53 -0
  187. package/dist/components/widgets/arm/get-joint-positions.svelte.d.ts +6 -0
  188. package/dist/components/widgets/arm/move-to-joint-positions-widget.svelte +45 -0
  189. package/dist/components/widgets/arm/move-to-joint-positions-widget.svelte.d.ts +7 -0
  190. package/dist/components/widgets/arm/move-to-joint-positions.svelte +113 -0
  191. package/dist/components/widgets/arm/move-to-joint-positions.svelte.d.ts +8 -0
  192. package/dist/components/widgets/arm/move-to-position-widget.svelte +43 -0
  193. package/dist/components/widgets/arm/move-to-position-widget.svelte.d.ts +7 -0
  194. package/dist/components/widgets/arm/move-to-position.svelte +143 -0
  195. package/dist/components/widgets/arm/move-to-position.svelte.d.ts +9 -0
  196. package/dist/components/widgets/arm/quick-move-widget.svelte +45 -0
  197. package/dist/components/widgets/arm/quick-move-widget.svelte.d.ts +7 -0
  198. package/dist/components/widgets/arm/quick-move.svelte +62 -0
  199. package/dist/components/widgets/arm/quick-move.svelte.d.ts +8 -0
  200. package/dist/components/widgets/base/base.svelte +130 -0
  201. package/dist/components/widgets/base/base.svelte.d.ts +7 -0
  202. package/dist/components/widgets/base/move-straight-widget.svelte +31 -0
  203. package/dist/components/widgets/base/move-straight-widget.svelte.d.ts +7 -0
  204. package/dist/components/widgets/base/move-straight.svelte +78 -0
  205. package/dist/components/widgets/base/move-straight.svelte.d.ts +6 -0
  206. package/dist/components/widgets/base/quick-move-widget.svelte +49 -0
  207. package/dist/components/widgets/base/quick-move-widget.svelte.d.ts +7 -0
  208. package/dist/components/widgets/base/quick-move.svelte +230 -0
  209. package/dist/components/widgets/base/quick-move.svelte.d.ts +8 -0
  210. package/dist/components/widgets/base/set-power-widget.svelte +31 -0
  211. package/dist/components/widgets/base/set-power-widget.svelte.d.ts +7 -0
  212. package/dist/components/widgets/base/set-power.svelte +43 -0
  213. package/dist/components/widgets/base/set-power.svelte.d.ts +7 -0
  214. package/dist/components/widgets/base/set-velocity-widget.svelte +31 -0
  215. package/dist/components/widgets/base/set-velocity-widget.svelte.d.ts +7 -0
  216. package/dist/components/widgets/base/set-velocity.svelte +41 -0
  217. package/dist/components/widgets/base/set-velocity.svelte.d.ts +7 -0
  218. package/dist/components/widgets/base/spin-widget.svelte +31 -0
  219. package/dist/components/widgets/base/spin-widget.svelte.d.ts +7 -0
  220. package/dist/components/widgets/base/spin.svelte +77 -0
  221. package/dist/components/widgets/base/spin.svelte.d.ts +6 -0
  222. package/dist/components/widgets/base/vec3-builder.svelte +144 -0
  223. package/dist/components/widgets/base/vec3-builder.svelte.d.ts +13 -0
  224. package/dist/components/widgets/board/analog-read-wrapper.svelte +42 -0
  225. package/dist/components/widgets/board/analog-read-wrapper.svelte.d.ts +9 -0
  226. package/dist/components/widgets/board/analog-read.svelte +55 -0
  227. package/dist/components/widgets/board/analog-read.svelte.d.ts +7 -0
  228. package/dist/components/widgets/board/analog-write-wrapper.svelte +33 -0
  229. package/dist/components/widgets/board/analog-write-wrapper.svelte.d.ts +9 -0
  230. package/dist/components/widgets/board/analog-write.svelte +44 -0
  231. package/dist/components/widgets/board/analog-write.svelte.d.ts +6 -0
  232. package/dist/components/widgets/board/board.d.ts +16 -0
  233. package/dist/components/widgets/board/board.js +8 -0
  234. package/dist/components/widgets/board/board.svelte +23 -0
  235. package/dist/components/widgets/board/board.svelte.d.ts +7 -0
  236. package/dist/components/widgets/board/confirming-button.svelte +42 -0
  237. package/dist/components/widgets/board/confirming-button.svelte.d.ts +8 -0
  238. package/dist/components/widgets/board/gpio-read-wrapper.svelte +68 -0
  239. package/dist/components/widgets/board/gpio-read-wrapper.svelte.d.ts +9 -0
  240. package/dist/components/widgets/board/gpio-read.svelte +134 -0
  241. package/dist/components/widgets/board/gpio-read.svelte.d.ts +11 -0
  242. package/dist/components/widgets/board/gpio-write-wrapper.svelte +55 -0
  243. package/dist/components/widgets/board/gpio-write-wrapper.svelte.d.ts +9 -0
  244. package/dist/components/widgets/board/gpio-write.svelte +106 -0
  245. package/dist/components/widgets/board/gpio-write.svelte.d.ts +8 -0
  246. package/dist/components/widgets/board/pin-section.svelte +28 -0
  247. package/dist/components/widgets/board/pin-section.svelte.d.ts +9 -0
  248. package/dist/components/widgets/board/pin-selector.svelte +69 -0
  249. package/dist/components/widgets/board/pin-selector.svelte.d.ts +8 -0
  250. package/dist/components/widgets/board/read-write-pins-widget.svelte +15 -0
  251. package/dist/components/widgets/board/read-write-pins-widget.svelte.d.ts +7 -0
  252. package/dist/components/widgets/board/read-write-pins.svelte +72 -0
  253. package/dist/components/widgets/board/read-write-pins.svelte.d.ts +7 -0
  254. package/dist/components/widgets/button/button.svelte +23 -0
  255. package/dist/components/widgets/button/button.svelte.d.ts +7 -0
  256. package/dist/components/widgets/button/push.svelte +32 -0
  257. package/dist/components/widgets/button/push.svelte.d.ts +7 -0
  258. package/dist/components/widgets/camera/camera.svelte +202 -0
  259. package/dist/components/widgets/camera/camera.svelte.d.ts +7 -0
  260. package/dist/components/widgets/camera/export-screenshot.svelte +68 -0
  261. package/dist/components/widgets/camera/export-screenshot.svelte.d.ts +9 -0
  262. package/dist/components/widgets/camera/live-or-polling-video.svelte +419 -0
  263. package/dist/components/widgets/camera/live-or-polling-video.svelte.d.ts +18 -0
  264. package/dist/components/widgets/camera/picture-in-picture-button.svelte +81 -0
  265. package/dist/components/widgets/camera/picture-in-picture-button.svelte.d.ts +9 -0
  266. package/dist/components/widgets/discovery/component-preview.d.ts +9 -0
  267. package/dist/components/widgets/discovery/component-preview.js +1 -0
  268. package/dist/components/widgets/discovery/discovery.svelte +155 -0
  269. package/dist/components/widgets/discovery/discovery.svelte.d.ts +13 -0
  270. package/dist/components/widgets/discovery/resources-list.svelte +109 -0
  271. package/dist/components/widgets/discovery/resources-list.svelte.d.ts +13 -0
  272. package/dist/components/widgets/discovery/transform-component-config.d.ts +17 -0
  273. package/dist/components/widgets/discovery/transform-component-config.js +32 -0
  274. package/dist/components/widgets/do-command/do-command.svelte +101 -0
  275. package/dist/components/widgets/do-command/do-command.svelte.d.ts +8 -0
  276. package/dist/components/widgets/encoder/encoder.svelte +117 -0
  277. package/dist/components/widgets/encoder/encoder.svelte.d.ts +7 -0
  278. package/dist/components/widgets/encoder/position.svelte +26 -0
  279. package/dist/components/widgets/encoder/position.svelte.d.ts +8 -0
  280. package/dist/components/widgets/gantry/gantry.svelte +135 -0
  281. package/dist/components/widgets/gantry/gantry.svelte.d.ts +7 -0
  282. package/dist/components/widgets/gantry/home.svelte +33 -0
  283. package/dist/components/widgets/gantry/home.svelte.d.ts +7 -0
  284. package/dist/components/widgets/gantry/match-array-length.d.ts +1 -0
  285. package/dist/components/widgets/gantry/match-array-length.js +13 -0
  286. package/dist/components/widgets/gantry/move-to-position-widget.svelte +43 -0
  287. package/dist/components/widgets/gantry/move-to-position-widget.svelte.d.ts +7 -0
  288. package/dist/components/widgets/gantry/move-to-position.svelte +121 -0
  289. package/dist/components/widgets/gantry/move-to-position.svelte.d.ts +8 -0
  290. package/dist/components/widgets/gantry/position-and-lengths.svelte +32 -0
  291. package/dist/components/widgets/gantry/position-and-lengths.svelte.d.ts +7 -0
  292. package/dist/components/widgets/gantry/quick-move-widget.svelte +47 -0
  293. package/dist/components/widgets/gantry/quick-move-widget.svelte.d.ts +7 -0
  294. package/dist/components/widgets/gantry/quick-move.svelte +69 -0
  295. package/dist/components/widgets/gantry/quick-move.svelte.d.ts +8 -0
  296. package/dist/components/widgets/generic/generic.svelte +31 -0
  297. package/dist/components/widgets/generic/generic.svelte.d.ts +8 -0
  298. package/dist/components/widgets/gripper/closed-gripper-svg.svelte +13 -0
  299. package/dist/components/widgets/gripper/closed-gripper-svg.svelte.d.ts +26 -0
  300. package/dist/components/widgets/gripper/grab.svelte +37 -0
  301. package/dist/components/widgets/gripper/grab.svelte.d.ts +7 -0
  302. package/dist/components/widgets/gripper/gripper.svelte +69 -0
  303. package/dist/components/widgets/gripper/gripper.svelte.d.ts +7 -0
  304. package/dist/components/widgets/gripper/open-gripper-svg.svelte +13 -0
  305. package/dist/components/widgets/gripper/open-gripper-svg.svelte.d.ts +26 -0
  306. package/dist/components/widgets/gripper/open.svelte +37 -0
  307. package/dist/components/widgets/gripper/open.svelte.d.ts +7 -0
  308. package/dist/components/widgets/input-controller/input-controller.svelte +74 -0
  309. package/dist/components/widgets/input-controller/input-controller.svelte.d.ts +7 -0
  310. package/dist/components/widgets/input-controller/standard-gamepad-event.d.ts +8 -0
  311. package/dist/components/widgets/input-controller/standard-gamepad-event.js +1 -0
  312. package/dist/components/widgets/input-controller/webgamepad-scene.svelte +22 -0
  313. package/dist/components/widgets/input-controller/webgamepad-scene.svelte.d.ts +8 -0
  314. package/dist/components/widgets/input-controller/webgamepad.svelte +142 -0
  315. package/dist/components/widgets/input-controller/webgamepad.svelte.d.ts +8 -0
  316. package/dist/components/widgets/ml-model-service/ml-model-service.svelte +65 -0
  317. package/dist/components/widgets/ml-model-service/ml-model-service.svelte.d.ts +7 -0
  318. package/dist/components/widgets/ml-model-service/results-table.svelte +49 -0
  319. package/dist/components/widgets/ml-model-service/results-table.svelte.d.ts +7 -0
  320. package/dist/components/widgets/ml-model-service/tensor-row.svelte +33 -0
  321. package/dist/components/widgets/ml-model-service/tensor-row.svelte.d.ts +9 -0
  322. package/dist/components/widgets/motor/go-for-view.svelte +31 -0
  323. package/dist/components/widgets/motor/go-for-view.svelte.d.ts +7 -0
  324. package/dist/components/widgets/motor/go-for.svelte +79 -0
  325. package/dist/components/widgets/motor/go-for.svelte.d.ts +6 -0
  326. package/dist/components/widgets/motor/go-to-view.svelte +31 -0
  327. package/dist/components/widgets/motor/go-to-view.svelte.d.ts +7 -0
  328. package/dist/components/widgets/motor/go-to.svelte +78 -0
  329. package/dist/components/widgets/motor/go-to.svelte.d.ts +6 -0
  330. package/dist/components/widgets/motor/motor.svelte +179 -0
  331. package/dist/components/widgets/motor/motor.svelte.d.ts +7 -0
  332. package/dist/components/widgets/motor/quick-move-widget.svelte +31 -0
  333. package/dist/components/widgets/motor/quick-move-widget.svelte.d.ts +7 -0
  334. package/dist/components/widgets/motor/quick-move.svelte +81 -0
  335. package/dist/components/widgets/motor/quick-move.svelte.d.ts +6 -0
  336. package/dist/components/widgets/motor/set-power-widget.svelte +29 -0
  337. package/dist/components/widgets/motor/set-power-widget.svelte.d.ts +7 -0
  338. package/dist/components/widgets/motor/set-power.svelte +54 -0
  339. package/dist/components/widgets/motor/set-power.svelte.d.ts +6 -0
  340. package/dist/components/widgets/motor/set-rpm-widget.svelte +29 -0
  341. package/dist/components/widgets/motor/set-rpm-widget.svelte.d.ts +7 -0
  342. package/dist/components/widgets/motor/set-rpm.svelte +52 -0
  343. package/dist/components/widgets/motor/set-rpm.svelte.d.ts +6 -0
  344. package/dist/components/widgets/movement-sensor/accuracy.svelte +71 -0
  345. package/dist/components/widgets/movement-sensor/accuracy.svelte.d.ts +7 -0
  346. package/dist/components/widgets/movement-sensor/compass-heading.svelte +44 -0
  347. package/dist/components/widgets/movement-sensor/compass-heading.svelte.d.ts +6 -0
  348. package/dist/components/widgets/movement-sensor/map.svelte +61 -0
  349. package/dist/components/widgets/movement-sensor/map.svelte.d.ts +8 -0
  350. package/dist/components/widgets/movement-sensor/movement-sensor.svelte +255 -0
  351. package/dist/components/widgets/movement-sensor/movement-sensor.svelte.d.ts +7 -0
  352. package/dist/components/widgets/movement-sensor/orientation.svelte +43 -0
  353. package/dist/components/widgets/movement-sensor/orientation.svelte.d.ts +7 -0
  354. package/dist/components/widgets/movement-sensor/position.svelte +32 -0
  355. package/dist/components/widgets/movement-sensor/position.svelte.d.ts +7 -0
  356. package/dist/components/widgets/movement-sensor/safe-read-coordinate.d.ts +1 -0
  357. package/dist/components/widgets/movement-sensor/safe-read-coordinate.js +6 -0
  358. package/dist/components/widgets/movement-sensor/vector3.svelte +36 -0
  359. package/dist/components/widgets/movement-sensor/vector3.svelte.d.ts +7 -0
  360. package/dist/components/widgets/navigation/directional-marker.svelte +26 -0
  361. package/dist/components/widgets/navigation/directional-marker.svelte.d.ts +8 -0
  362. package/dist/components/widgets/navigation/navigation.svelte +236 -0
  363. package/dist/components/widgets/navigation/navigation.svelte.d.ts +7 -0
  364. package/dist/components/widgets/navigation/obstacles/__tests__/__fixtures__/obstacles.d.ts +2 -0
  365. package/dist/components/widgets/navigation/obstacles/__tests__/__fixtures__/obstacles.js +56 -0
  366. package/dist/components/widgets/navigation/obstacles/color.d.ts +1 -0
  367. package/dist/components/widgets/navigation/obstacles/color.js +10 -0
  368. package/dist/components/widgets/navigation/obstacles/legend.svelte +117 -0
  369. package/dist/components/widgets/navigation/obstacles/legend.svelte.d.ts +12 -0
  370. package/dist/components/widgets/navigation/obstacles/meshes.svelte +104 -0
  371. package/dist/components/widgets/navigation/obstacles/meshes.svelte.d.ts +10 -0
  372. package/dist/components/widgets/navigation/obstacles/obstacles.svelte +30 -0
  373. package/dist/components/widgets/navigation/obstacles/obstacles.svelte.d.ts +10 -0
  374. package/dist/components/widgets/navigation/obstacles/scene.svelte +59 -0
  375. package/dist/components/widgets/navigation/obstacles/scene.svelte.d.ts +7 -0
  376. package/dist/components/widgets/navigation/waypoints/__tests__/__fixtures__/waypoints.d.ts +7 -0
  377. package/dist/components/widgets/navigation/waypoints/__tests__/__fixtures__/waypoints.js +23 -0
  378. package/dist/components/widgets/navigation/waypoints/legend.svelte +67 -0
  379. package/dist/components/widgets/navigation/waypoints/legend.svelte.d.ts +13 -0
  380. package/dist/components/widgets/navigation/waypoints/waypoints.svelte +34 -0
  381. package/dist/components/widgets/navigation/waypoints/waypoints.svelte.d.ts +11 -0
  382. package/dist/components/widgets/operations-and-sessions/operations-and-sessions.svelte +115 -0
  383. package/dist/components/widgets/operations-and-sessions/operations-and-sessions.svelte.d.ts +6 -0
  384. package/dist/components/widgets/operations-and-sessions/operations-table.svelte +82 -0
  385. package/dist/components/widgets/operations-and-sessions/operations-table.svelte.d.ts +8 -0
  386. package/dist/components/widgets/operations-and-sessions/rtt-pill.svelte +26 -0
  387. package/dist/components/widgets/operations-and-sessions/rtt-pill.svelte.d.ts +6 -0
  388. package/dist/components/widgets/operations-and-sessions/sessions-table.svelte +78 -0
  389. package/dist/components/widgets/operations-and-sessions/sessions-table.svelte.d.ts +8 -0
  390. package/dist/components/widgets/pcd/__tests__/__fixtures__/pcd.d.ts +1 -0
  391. package/dist/components/widgets/pcd/__tests__/__fixtures__/pcd.js +12 -0
  392. package/dist/components/widgets/pcd/download.svelte +25 -0
  393. package/dist/components/widgets/pcd/download.svelte.d.ts +6 -0
  394. package/dist/components/widgets/pcd/inputs.svelte +70 -0
  395. package/dist/components/widgets/pcd/inputs.svelte.d.ts +11 -0
  396. package/dist/components/widgets/pcd/pcd-widget.svelte +45 -0
  397. package/dist/components/widgets/pcd/pcd-widget.svelte.d.ts +6 -0
  398. package/dist/components/widgets/pcd/point-label.svelte +76 -0
  399. package/dist/components/widgets/pcd/point-label.svelte.d.ts +7 -0
  400. package/dist/components/widgets/pcd/points.svelte +35 -0
  401. package/dist/components/widgets/pcd/points.svelte.d.ts +7 -0
  402. package/dist/components/widgets/pcd/scene.svelte +62 -0
  403. package/dist/components/widgets/pcd/scene.svelte.d.ts +9 -0
  404. package/dist/components/widgets/power-sensor/current-reading.svelte +18 -0
  405. package/dist/components/widgets/power-sensor/current-reading.svelte.d.ts +6 -0
  406. package/dist/components/widgets/power-sensor/power-reading.svelte +14 -0
  407. package/dist/components/widgets/power-sensor/power-reading.svelte.d.ts +6 -0
  408. package/dist/components/widgets/power-sensor/power-sensor.svelte +134 -0
  409. package/dist/components/widgets/power-sensor/power-sensor.svelte.d.ts +7 -0
  410. package/dist/components/widgets/power-sensor/voltage-reading.svelte +18 -0
  411. package/dist/components/widgets/power-sensor/voltage-reading.svelte.d.ts +6 -0
  412. package/dist/components/widgets/sensor/sensor.svelte +59 -0
  413. package/dist/components/widgets/sensor/sensor.svelte.d.ts +7 -0
  414. package/dist/components/widgets/servo/move-widget.svelte +44 -0
  415. package/dist/components/widgets/servo/move-widget.svelte.d.ts +7 -0
  416. package/dist/components/widgets/servo/move.svelte +102 -0
  417. package/dist/components/widgets/servo/move.svelte.d.ts +8 -0
  418. package/dist/components/widgets/servo/quick-move-widget.svelte +44 -0
  419. package/dist/components/widgets/servo/quick-move-widget.svelte.d.ts +7 -0
  420. package/dist/components/widgets/servo/quick-move.svelte +34 -0
  421. package/dist/components/widgets/servo/quick-move.svelte.d.ts +8 -0
  422. package/dist/components/widgets/servo/servo.svelte +111 -0
  423. package/dist/components/widgets/servo/servo.svelte.d.ts +7 -0
  424. package/dist/components/widgets/slam/__fixtures__/position.d.ts +3 -0
  425. package/dist/components/widgets/slam/__fixtures__/position.js +13 -0
  426. package/dist/components/widgets/slam/move-on-map.svelte +101 -0
  427. package/dist/components/widgets/slam/move-on-map.svelte.d.ts +11 -0
  428. package/dist/components/widgets/slam/pose.d.ts +2 -0
  429. package/dist/components/widgets/slam/pose.js +1 -0
  430. package/dist/components/widgets/slam/position.svelte +77 -0
  431. package/dist/components/widgets/slam/position.svelte.d.ts +7 -0
  432. package/dist/components/widgets/slam/slam.svelte +267 -0
  433. package/dist/components/widgets/slam/slam.svelte.d.ts +7 -0
  434. package/dist/components/widgets/switch/position-view.svelte +59 -0
  435. package/dist/components/widgets/switch/position-view.svelte.d.ts +7 -0
  436. package/dist/components/widgets/switch/position.svelte +43 -0
  437. package/dist/components/widgets/switch/position.svelte.d.ts +10 -0
  438. package/dist/components/widgets/switch/switch.svelte +62 -0
  439. package/dist/components/widgets/switch/switch.svelte.d.ts +7 -0
  440. package/dist/components/widgets/vision-service/__tests__/__fixtures__/classifications.d.ts +10 -0
  441. package/dist/components/widgets/vision-service/__tests__/__fixtures__/classifications.js +5 -0
  442. package/dist/components/widgets/vision-service/__tests__/__fixtures__/detections.d.ts +2 -0
  443. package/dist/components/widgets/vision-service/__tests__/__fixtures__/detections.js +9 -0
  444. package/dist/components/widgets/vision-service/color.d.ts +7 -0
  445. package/dist/components/widgets/vision-service/color.js +53 -0
  446. package/dist/components/widgets/vision-service/context.svelte.d.ts +24 -0
  447. package/dist/components/widgets/vision-service/context.svelte.js +50 -0
  448. package/dist/components/widgets/vision-service/detection.svelte +101 -0
  449. package/dist/components/widgets/vision-service/detection.svelte.d.ts +8 -0
  450. package/dist/components/widgets/vision-service/geometry-details.svelte +116 -0
  451. package/dist/components/widgets/vision-service/geometry-details.svelte.d.ts +7 -0
  452. package/dist/components/widgets/vision-service/get-image-size.d.ts +14 -0
  453. package/dist/components/widgets/vision-service/get-image-size.js +28 -0
  454. package/dist/components/widgets/vision-service/image.svelte +133 -0
  455. package/dist/components/widgets/vision-service/image.svelte.d.ts +15 -0
  456. package/dist/components/widgets/vision-service/legend.svelte +135 -0
  457. package/dist/components/widgets/vision-service/legend.svelte.d.ts +9 -0
  458. package/dist/components/widgets/vision-service/object-point-cloud-scene.svelte +74 -0
  459. package/dist/components/widgets/vision-service/object-point-cloud-scene.svelte.d.ts +7 -0
  460. package/dist/components/widgets/vision-service/object-point-clouds.svelte +91 -0
  461. package/dist/components/widgets/vision-service/object-point-clouds.svelte.d.ts +7 -0
  462. package/dist/components/widgets/vision-service/scene.svelte +50 -0
  463. package/dist/components/widgets/vision-service/scene.svelte.d.ts +7 -0
  464. package/dist/components/widgets/vision-service/vision-service.svelte +225 -0
  465. package/dist/components/widgets/vision-service/vision-service.svelte.d.ts +7 -0
  466. package/dist/event-handlers.d.ts +1 -0
  467. package/dist/event-handlers.js +5 -0
  468. package/dist/format.d.ts +13 -0
  469. package/dist/format.js +31 -0
  470. package/dist/fps.svelte.d.ts +4 -0
  471. package/dist/fps.svelte.js +22 -0
  472. package/dist/index.d.ts +2 -0
  473. package/dist/index.js +2 -0
  474. package/dist/resource.js +26 -0
  475. package/dist/scroll-into-view.d.ts +2 -0
  476. package/dist/scroll-into-view.js +17 -0
  477. package/dist/sort.d.ts +21 -0
  478. package/dist/sort.js +31 -0
  479. package/package.json +117 -0
@@ -0,0 +1,109 @@
1
+ <script lang="ts">
2
+ import type { appRobotApi } from '@viamrobotics/sdk'
3
+
4
+ import { Button, IconButton, Tooltip } from '@viamrobotics/prime-core'
5
+
6
+ import { sortObjectKeys } from '../../../sort'
7
+
8
+ import type { ComponentPreviews, ComponentPreviewSnippet } from './component-preview'
9
+
10
+ import { parseComponentConfig, transformComponentConfig } from './transform-component-config'
11
+
12
+ interface Props {
13
+ data: appRobotApi.ComponentConfig[]
14
+ /** A map of generated component preview IDs to component previews. */
15
+ previews: ComponentPreviews
16
+ /** A snippet for creating component previews. Requires a `preview` DoCommand to be implemented. */
17
+ componentPreview?: ComponentPreviewSnippet | undefined
18
+ onAddComponent?: ((component: appRobotApi.ComponentConfig) => void) | undefined
19
+ }
20
+
21
+ const {
22
+ data,
23
+ previews,
24
+ onAddComponent = undefined,
25
+ componentPreview = undefined,
26
+ }: Props = $props()
27
+
28
+ const sortedData = $derived(
29
+ data
30
+ .toSorted(({ name: nameA }, { name: nameB }) => nameA.localeCompare(nameB))
31
+ .map((value) => sortObjectKeys(transformComponentConfig(value)))
32
+ )
33
+
34
+ const copyToClipboard = async () => {
35
+ try {
36
+ const resourcesStr = JSON.stringify(data, null, 2)
37
+ await globalThis.navigator.clipboard.writeText(resourcesStr)
38
+ } catch (error) {
39
+ console.error('failed to copy resources to clipboard', error)
40
+ }
41
+ }
42
+
43
+ const copyAttributes = async (value: Record<string, unknown>) => {
44
+ try {
45
+ const attributesStr = JSON.stringify(value.attributes ?? {}, null, 2)
46
+ await globalThis.navigator.clipboard.writeText(attributesStr)
47
+ } catch (error) {
48
+ console.error('failed to copy attributes to clipboard', error)
49
+ }
50
+ }
51
+ </script>
52
+
53
+ {#if sortedData.length === 0}
54
+ <p class="text-subtle-2 text-xs">No resources discovered</p>
55
+ {:else}
56
+ <div class="text-xs">
57
+ <div class="text-gray-6 absolute top-1.5 right-1.5">
58
+ <Tooltip let:tooltipID>
59
+ <IconButton
60
+ aria-describedby={tooltipID}
61
+ icon="content-copy"
62
+ label="Copy all configs"
63
+ on:click={copyToClipboard}
64
+ />
65
+
66
+ <div slot="description">Copy JSON</div>
67
+ </Tooltip>
68
+ </div>
69
+ <dl class="font-roboto-mono flex flex-col gap-y-4">
70
+ {#each sortedData as value (value)}
71
+ {@const valueString = JSON.stringify(value, null, 2)}
72
+ {@const preview = previews[value.name]}
73
+ <div class="flex flex-col gap-y-2">
74
+ <div class="flex flex-row">
75
+ <dt class="text-default flex w-50 min-w-50 flex-col gap-2 pr-2 font-medium">
76
+ <span class="truncate">{value.name}</span>
77
+ {#if onAddComponent}
78
+ <Button
79
+ class="w-fit"
80
+ icon="plus"
81
+ onclick={() => onAddComponent(parseComponentConfig(value))}
82
+ >
83
+ Add component
84
+ </Button>
85
+ {/if}
86
+ <Button
87
+ class="w-fit"
88
+ icon="content-copy"
89
+ onclick={async () => copyAttributes(value)}
90
+ >
91
+ Copy attributes
92
+ </Button>
93
+ </dt>
94
+ <dd class="text-subtle-1 min-w-50">
95
+ <div class="border-light bg-extralight relative min-w-50 border px-3 py-2">
96
+ <pre class="whitespace-pre-wrap"><code>{valueString}</code></pre>
97
+ </div>
98
+ </dd>
99
+ </div>
100
+ {#if preview}
101
+ <div class="flex w-full pl-50">
102
+ {@render componentPreview?.(preview)}
103
+ </div>
104
+ {/if}
105
+ </div>
106
+ {/each}
107
+ </dl>
108
+ </div>
109
+ {/if}
@@ -0,0 +1,13 @@
1
+ import type { appRobotApi } from '@viamrobotics/sdk';
2
+ import type { ComponentPreviews, ComponentPreviewSnippet } from './component-preview';
3
+ interface Props {
4
+ data: appRobotApi.ComponentConfig[];
5
+ /** A map of generated component preview IDs to component previews. */
6
+ previews: ComponentPreviews;
7
+ /** A snippet for creating component previews. Requires a `preview` DoCommand to be implemented. */
8
+ componentPreview?: ComponentPreviewSnippet | undefined;
9
+ onAddComponent?: ((component: appRobotApi.ComponentConfig) => void) | undefined;
10
+ }
11
+ declare const ResourcesList: import("svelte").Component<Props, {}, "">;
12
+ type ResourcesList = ReturnType<typeof ResourcesList>;
13
+ export default ResourcesList;
@@ -0,0 +1,17 @@
1
+ import { appRobotApi } from '@viamrobotics/sdk';
2
+ /** An app-safe version of the resource config without deprecated fields. */
3
+ export type SafeResourceConfig = Omit<appRobotApi.ComponentConfig, 'namespace' | 'type'>;
4
+ type SortableComponentConfig = appRobotApi.ComponentConfig & Record<string, unknown>;
5
+ /**
6
+ * Transforms the provided component config to ensure it is safe to add the machine part's config
7
+ *
8
+ * @param resource The resource config to validate
9
+ */
10
+ export declare const transformComponentConfig: (resource: appRobotApi.ComponentConfig) => SortableComponentConfig;
11
+ /**
12
+ * Parses the provided component config json to add to a part's config
13
+ *
14
+ * @param resource The resource json to parse
15
+ */
16
+ export declare const parseComponentConfig: (resource: Record<string, unknown>) => appRobotApi.ComponentConfig;
17
+ export {};
@@ -0,0 +1,32 @@
1
+ import { appRobotApi } from '@viamrobotics/sdk';
2
+ import { omit } from 'lodash-es';
3
+ // The below code was copied from `ui/src/lib/resource-type.ts`
4
+ const TRIPLET_SEPARATOR = ':';
5
+ /** Check if a string is a valid API or model triplet. */
6
+ const isResourceTriplet = (value) => {
7
+ const parts = value?.split(TRIPLET_SEPARATOR);
8
+ return parts?.length === 3 && Boolean(parts[0] && parts[1] && parts[2]);
9
+ };
10
+ /**
11
+ * Transforms the provided component config to ensure it is safe to add the machine part's config
12
+ *
13
+ * @param resource The resource config to validate
14
+ */
15
+ export const transformComponentConfig = (resource) => {
16
+ const hasQualifiedAPI = isResourceTriplet(resource.api);
17
+ const hasQualifiedModel = isResourceTriplet(resource.model);
18
+ let next = resource.clone();
19
+ if (hasQualifiedAPI && hasQualifiedModel) {
20
+ next = omit(next, 'namespace');
21
+ next = omit(next, 'type');
22
+ }
23
+ return new appRobotApi.ComponentConfig(next).toJson();
24
+ };
25
+ /**
26
+ * Parses the provided component config json to add to a part's config
27
+ *
28
+ * @param resource The resource json to parse
29
+ */
30
+ export const parseComponentConfig = (resource) => {
31
+ return appRobotApi.ComponentConfig.fromJson(resource);
32
+ };
@@ -0,0 +1,101 @@
1
+ <script lang="ts">
2
+ import { Button } from '@viamrobotics/prime-core'
3
+ import { JsonEditor } from '@viamrobotics/prime-editor'
4
+ import { MLModelClient, ResourceName, Struct } from '@viamrobotics/sdk'
5
+ import { createResourceClient, createResourceMutation } from '@viamrobotics/svelte-sdk'
6
+ import { PersistedState } from 'runed'
7
+
8
+ import { clientForBuiltinResource } from '../../../builtin'
9
+ import { getResourceAPI, getResourceKey } from '../../../resource'
10
+
11
+ import ErrorDisplay from '../../error.svelte'
12
+
13
+ interface Props {
14
+ partID: string
15
+ resource: ResourceName
16
+ }
17
+
18
+ const { partID, resource }: Props = $props()
19
+
20
+ type DoCommandable = Extract<ReturnType<typeof clientForBuiltinResource>, MLModelClient>
21
+
22
+ const resourceClientType = $derived(clientForBuiltinResource(resource)) as DoCommandable
23
+
24
+ const client = $derived(
25
+ createResourceClient(
26
+ resourceClientType,
27
+ () => partID,
28
+ () => resource.name
29
+ )
30
+ )
31
+
32
+ const doCommandMutation = $derived(createResourceMutation(client, 'doCommand'))
33
+
34
+ let lastErr = $state<Error>()
35
+
36
+ const uid = $props.id()
37
+
38
+ const input = $derived(new PersistedState(`${partID}/${getResourceKey(resource)}`, '{\n}'))
39
+
40
+ let output = $state('')
41
+
42
+ const execute = async () => {
43
+ try {
44
+ const parsedInput = Struct.fromJsonString(input.current ?? '{}')
45
+ const data = await doCommandMutation.mutateAsync([parsedInput])
46
+ output = JSON.stringify(data, null, 2)
47
+ lastErr = undefined
48
+ } catch (error) {
49
+ lastErr = error as Error
50
+ }
51
+ }
52
+ </script>
53
+
54
+ {#if doCommandMutation}
55
+ <div class="flex flex-row items-center justify-between">
56
+ <div class="flex w-[45%] flex-col gap-2 border-r py-2">
57
+ <span class="text-gray-9 px-4 text-sm font-medium">Input</span>
58
+ <JsonEditor
59
+ label="input"
60
+ initialValue={input.current ?? '{}'}
61
+ onChange={(nextInput: string) => {
62
+ input.current = nextInput
63
+ }}
64
+ cx="h-56 overflow-y-auto"
65
+ errorMessageID={lastErr ? uid : undefined}
66
+ />
67
+ </div>
68
+
69
+ <Button
70
+ class="m-auto"
71
+ onclick={execute}>Execute</Button
72
+ >
73
+
74
+ <div class="flex w-[45%] flex-col gap-2 border-l py-2">
75
+ <span class="text-gray-9 px-4 text-sm font-medium">Output</span>
76
+ {#if !lastErr}
77
+ <JsonEditor
78
+ label="output"
79
+ initialValue={output}
80
+ readonly
81
+ cx="h-56 overflow-y-auto"
82
+ />
83
+ {:else}
84
+ <ErrorDisplay
85
+ id={uid}
86
+ class="h-56 px-4"
87
+ lastError={lastErr}
88
+ />
89
+ {/if}
90
+ </div>
91
+ </div>
92
+ {:else}
93
+ <ErrorDisplay
94
+ class="p-4"
95
+ lastError={new Error(
96
+ `DoCommand for ${getResourceAPI(
97
+ resource
98
+ )} is not supported in the UI. Consider using one of our SDKs.`
99
+ )}
100
+ />
101
+ {/if}
@@ -0,0 +1,8 @@
1
+ import { ResourceName } from '@viamrobotics/sdk';
2
+ interface Props {
3
+ partID: string;
4
+ resource: ResourceName;
5
+ }
6
+ declare const DoCommand: import("svelte").Component<Props, {}, "">;
7
+ type DoCommand = ReturnType<typeof DoCommand>;
8
+ export default DoCommand;
@@ -0,0 +1,117 @@
1
+ <script lang="ts">
2
+ import { Button } from '@viamrobotics/prime-core'
3
+ import { EncoderClient, EncoderPositionType, type EncoderProperties } from '@viamrobotics/sdk'
4
+ import {
5
+ createResourceClient,
6
+ createResourceMutation,
7
+ createResourceQuery,
8
+ } from '@viamrobotics/svelte-sdk'
9
+
10
+ import ApiSection from '../../api-section.svelte'
11
+ import ConnectionStatus from '../../connection-status.svelte'
12
+ import ErrorDisplay from '../../error.svelte'
13
+ import Queries from '../../queries.svelte'
14
+ import RefetchController from '../../refetch-controller.svelte'
15
+ import { createRefetchIntervalStore } from '../../refetch-interval-store.svelte'
16
+
17
+ import Position from './position.svelte'
18
+
19
+ interface Props {
20
+ partID: string
21
+ resourceName: string
22
+ }
23
+
24
+ const { partID, resourceName }: Props = $props()
25
+
26
+ const client = createResourceClient(
27
+ EncoderClient,
28
+ () => partID,
29
+ () => resourceName
30
+ )
31
+
32
+ const refetchInterval = createRefetchIntervalStore(
33
+ () => partID,
34
+ () => resourceName,
35
+ 'encoder-view'
36
+ )
37
+
38
+ const getPositionArgs = (properties: EncoderProperties | undefined): [EncoderPositionType] => {
39
+ if (!properties) {
40
+ return [EncoderPositionType.UNSPECIFIED]
41
+ }
42
+
43
+ const { angleDegreesSupported, ticksCountSupported } = properties
44
+
45
+ if (angleDegreesSupported) {
46
+ return [EncoderPositionType.ANGLE_DEGREES]
47
+ }
48
+
49
+ if (ticksCountSupported) {
50
+ return [EncoderPositionType.TICKS_COUNT]
51
+ }
52
+
53
+ return [EncoderPositionType.UNSPECIFIED]
54
+ }
55
+
56
+ const propertiesQuery = createResourceQuery(client, 'getProperties', () => ({
57
+ refetchInterval: refetchInterval.current,
58
+ }))
59
+
60
+ const positionQuery = createResourceQuery(
61
+ client,
62
+ 'getPosition',
63
+ () => getPositionArgs(propertiesQuery.data),
64
+ () => ({
65
+ enabled: propertiesQuery.data !== undefined,
66
+ refetchInterval: refetchInterval.current,
67
+ })
68
+ )
69
+ const resetMutation = createResourceMutation(client, 'resetPosition')
70
+ </script>
71
+
72
+ <ConnectionStatus {partID}>
73
+ {#snippet connected()}
74
+ <div class="p-4 pb-3">
75
+ <RefetchController
76
+ {refetchInterval}
77
+ queries={[propertiesQuery, positionQuery]}
78
+ />
79
+ </div>
80
+
81
+ <div class="grid w-full grid-cols-2 divide-x">
82
+ <ApiSection
83
+ title="GetPosition"
84
+ tooltip="Relative encoders return ticks since last zeroing. Absolute encoders return degrees."
85
+ class="gap-3"
86
+ >
87
+ <Queries queries={[propertiesQuery, positionQuery]}>
88
+ {#if positionQuery.data !== undefined}
89
+ {@const [position, encoderPositionType] = positionQuery.data}
90
+ <div class="font-roboto-mono flex flex-col gap-2 text-sm">
91
+ <Position
92
+ {position}
93
+ {encoderPositionType}
94
+ />
95
+ </div>
96
+ {/if}
97
+ </Queries>
98
+ </ApiSection>
99
+
100
+ <ApiSection
101
+ title="ResetPosition"
102
+ description="Set the current position as the new zero position"
103
+ >
104
+ <Button
105
+ icon="play-circle-outline"
106
+ class="w-fit"
107
+ onclick={() => {
108
+ resetMutation.mutate([], {})
109
+ }}
110
+ >
111
+ Execute
112
+ </Button>
113
+ <ErrorDisplay lastError={resetMutation.error} />
114
+ </ApiSection>
115
+ </div>
116
+ {/snippet}
117
+ </ConnectionStatus>
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ partID: string;
3
+ resourceName: string;
4
+ }
5
+ declare const Encoder: import("svelte").Component<Props, {}, "">;
6
+ type Encoder = ReturnType<typeof Encoder>;
7
+ export default Encoder;
@@ -0,0 +1,26 @@
1
+ <script lang="ts">
2
+ import { EncoderPositionType } from '@viamrobotics/sdk'
3
+
4
+ import { formatNumeric } from '../../../format'
5
+
6
+ interface Props {
7
+ position: number
8
+ encoderPositionType: EncoderPositionType
9
+ }
10
+
11
+ const { position, encoderPositionType }: Props = $props()
12
+ </script>
13
+
14
+ {#if encoderPositionType === EncoderPositionType.ANGLE_DEGREES}
15
+ <span class=" flex flex-row gap-0.5">
16
+ {formatNumeric(position, 1)}
17
+ <abbr class="text-subtle-2">º</abbr>
18
+ </span>
19
+ {:else if encoderPositionType === EncoderPositionType.TICKS_COUNT}
20
+ <span class=" flex flex-row gap-1">
21
+ {formatNumeric(position, 2)}
22
+ <abbr class="text-subtle-2">ticks</abbr>
23
+ </span>
24
+ {:else}
25
+ {formatNumeric(position, 2)}
26
+ {/if}
@@ -0,0 +1,8 @@
1
+ import { EncoderPositionType } from '@viamrobotics/sdk';
2
+ interface Props {
3
+ position: number;
4
+ encoderPositionType: EncoderPositionType;
5
+ }
6
+ declare const Position: import("svelte").Component<Props, {}, "">;
7
+ type Position = ReturnType<typeof Position>;
8
+ export default Position;
@@ -0,0 +1,135 @@
1
+ <script lang="ts">
2
+ import { GantryClient } from '@viamrobotics/sdk'
3
+ import {
4
+ createResourceClient,
5
+ createResourceMutation,
6
+ createResourceQuery,
7
+ } from '@viamrobotics/svelte-sdk'
8
+
9
+ import ApiSection from '../../api-section.svelte'
10
+ import ConnectionStatus from '../../connection-status.svelte'
11
+ import IsMoving from '../../is-moving.svelte'
12
+ import Queries from '../../queries.svelte'
13
+ import Query from '../../query.svelte'
14
+ import StopButton from '../../stop-button.svelte'
15
+
16
+ import Home from './home.svelte'
17
+ import MoveToPosition from './move-to-position.svelte'
18
+ import PositionAndLengths from './position-and-lengths.svelte'
19
+ import QuickMove from './quick-move.svelte'
20
+
21
+ interface Props {
22
+ partID: string
23
+ resourceName: string
24
+ }
25
+
26
+ const { partID, resourceName }: Props = $props()
27
+
28
+ const client = createResourceClient(
29
+ GantryClient,
30
+ () => partID,
31
+ () => resourceName
32
+ )
33
+
34
+ const options = { refetchInterval: 500 }
35
+ const positionQuery = createResourceQuery(client, 'getPosition', options)
36
+ const lengthsQuery = createResourceQuery(client, 'getLengths', options)
37
+
38
+ const moveMutation = createResourceMutation(client, 'moveToPosition')
39
+ const quickMoveMutation = createResourceMutation(client, 'moveToPosition')
40
+ const stopMutation = createResourceMutation(client, 'stop')
41
+
42
+ const positionHeadingID = $props.id()
43
+ </script>
44
+
45
+ <ConnectionStatus {partID}>
46
+ {#snippet connected()}
47
+ <div class="flex flex-row divide-x">
48
+ <div class="flex grow flex-row divide-x">
49
+ <ApiSection
50
+ bottomText="Updates automatically"
51
+ aria-labelledby={positionHeadingID}
52
+ >
53
+ <h3
54
+ class="flex flex-row items-center gap-1 text-sm"
55
+ id={positionHeadingID}
56
+ >
57
+ <span class="font-semibold"> GetPosition </span>
58
+ and
59
+ <span class="font-semibold"> GetLengths </span>
60
+ </h3>
61
+ <Queries queries={[positionQuery, lengthsQuery]}>
62
+ {@const positions = positionQuery.data}
63
+ {@const lengths = lengthsQuery.data ?? []}
64
+ {#if positions !== undefined}
65
+ <PositionAndLengths
66
+ {positions}
67
+ {lengths}
68
+ />
69
+ {/if}
70
+ </Queries>
71
+ </ApiSection>
72
+ <ApiSection title="MoveToPosition">
73
+ <Query query={positionQuery}>
74
+ {@const positions = positionQuery.data}
75
+ {#if positions !== undefined}
76
+ <MoveToPosition
77
+ {positions}
78
+ lastError={moveMutation.error}
79
+ moveTo={(newPos: number[], speeds: number[]) => {
80
+ moveMutation.mutate([newPos, speeds], {})
81
+ }}
82
+ />
83
+ {/if}
84
+ </Query>
85
+ </ApiSection>
86
+ <div class="flex grow flex-col divide-y">
87
+ <ApiSection
88
+ title="Quick move"
89
+ bottomText="Press a button to execute"
90
+ >
91
+ <Query
92
+ query={positionQuery}
93
+ contentCx="h-6"
94
+ >
95
+ {@const positions = positionQuery.data}
96
+ {#if positions !== undefined}
97
+ <QuickMove
98
+ {positions}
99
+ lastError={quickMoveMutation.error}
100
+ moveTo={(newPos: number[], speeds: number[]) => {
101
+ quickMoveMutation.mutate([newPos, speeds], {})
102
+ }}
103
+ />
104
+ {/if}
105
+ </Query>
106
+ </ApiSection>
107
+ <ApiSection
108
+ title="Home"
109
+ description="Run the homing sequence"
110
+ >
111
+ <Home
112
+ {partID}
113
+ {resourceName}
114
+ />
115
+ </ApiSection>
116
+ </div>
117
+ </div>
118
+ <div class="ml-auto flex w-full max-w-40 flex-col divide-y">
119
+ <ApiSection title="Stop">
120
+ <StopButton
121
+ error={stopMutation.error}
122
+ onStop={() => {
123
+ stopMutation.mutate([])
124
+ }}
125
+ />
126
+ </ApiSection>
127
+ <IsMoving
128
+ client={GantryClient}
129
+ {partID}
130
+ {resourceName}
131
+ />
132
+ </div>
133
+ </div>
134
+ {/snippet}
135
+ </ConnectionStatus>
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ partID: string;
3
+ resourceName: string;
4
+ }
5
+ declare const Gantry: import("svelte").Component<Props, {}, "">;
6
+ type Gantry = ReturnType<typeof Gantry>;
7
+ export default Gantry;
@@ -0,0 +1,33 @@
1
+ <script lang="ts">
2
+ import { Button } from '@viamrobotics/prime-core'
3
+ import { GantryClient } from '@viamrobotics/sdk'
4
+ import { createResourceClient, createResourceMutation } from '@viamrobotics/svelte-sdk'
5
+
6
+ import ErrorDisplay from '../../error.svelte'
7
+
8
+ interface Props {
9
+ partID: string
10
+ resourceName: string
11
+ }
12
+
13
+ const { partID, resourceName }: Props = $props()
14
+
15
+ const client = createResourceClient(
16
+ GantryClient,
17
+ () => partID,
18
+ () => resourceName
19
+ )
20
+
21
+ const homeMutation = createResourceMutation(client, 'home')
22
+ </script>
23
+
24
+ <Button
25
+ class="w-fit"
26
+ icon="play-circle-outline"
27
+ onclick={() => {
28
+ homeMutation.mutate([], {})
29
+ }}
30
+ >
31
+ Execute
32
+ </Button>
33
+ <ErrorDisplay lastError={homeMutation.error} />
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ partID: string;
3
+ resourceName: string;
4
+ }
5
+ declare const Home: import("svelte").Component<Props, {}, "">;
6
+ type Home = ReturnType<typeof Home>;
7
+ export default Home;
@@ -0,0 +1 @@
1
+ export declare const matchArrayLength: (source: number[], target: number[], padValue: number) => number[];
@@ -0,0 +1,13 @@
1
+ export const matchArrayLength = (source, target, padValue) => {
2
+ const sourceLength = source.length;
3
+ const targetLength = target.length;
4
+ // If the source array is longer, truncate it to the size of the target array
5
+ if (sourceLength > targetLength) {
6
+ return source.slice(0, targetLength);
7
+ }
8
+ // If the source array is shorter, calculate the number of elements to pad
9
+ const paddingLength = targetLength - sourceLength;
10
+ const paddingArray = Array.from({ length: paddingLength }).fill(padValue);
11
+ // Concatenate the original array with the padding array
12
+ return [...source, ...paddingArray];
13
+ };