@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,91 @@
1
+ <script lang="ts">
2
+ import type { PointCloudObject } from '@viamrobotics/sdk'
3
+
4
+ import { Canvas } from '@threlte/core'
5
+ import { View } from '@threlte/extras'
6
+
7
+ import GeometryDetails from './geometry-details.svelte'
8
+ import ObjectPointCloudScene from './object-point-cloud-scene.svelte'
9
+
10
+ interface Props {
11
+ objects: PointCloudObject[]
12
+ }
13
+
14
+ const { objects }: Props = $props()
15
+
16
+ const hashPointCloud = (data: Uint8Array): string => {
17
+ const len = data.length
18
+ if (len === 0) return '0'
19
+
20
+ // Sample bytes from start, middle, and end
21
+ const samples = [
22
+ data[0],
23
+ data[Math.floor(len / 4)],
24
+ data[Math.floor(len / 2)],
25
+ data[Math.floor((3 * len) / 4)],
26
+ data[len - 1],
27
+ ]
28
+
29
+ return `${len}-${samples.join('-')}`
30
+ }
31
+
32
+ interface Item {
33
+ id: string
34
+ object: PointCloudObject
35
+ dom: HTMLElement | undefined
36
+ }
37
+
38
+ const items: Item[] = $state([])
39
+
40
+ $effect.pre(() => {
41
+ const itemsToRemove = new Set(items.map((item) => item.id))
42
+ for (const object of objects) {
43
+ const id = hashPointCloud(new Uint8Array(object.pointCloud))
44
+ const existingItem = items.find((item) => item.id === id)
45
+ if (existingItem) {
46
+ existingItem.object = object
47
+ } else {
48
+ items.push({ id, object, dom: undefined })
49
+ }
50
+
51
+ itemsToRemove.delete(id)
52
+ }
53
+
54
+ for (const id of itemsToRemove) {
55
+ const index = items.findIndex((item) => item.id === id)
56
+ if (index !== -1) {
57
+ items.splice(index, 1)
58
+ }
59
+ }
60
+ })
61
+ </script>
62
+
63
+ <div class="relative h-[600px] max-h-[80vh] bg-white">
64
+ <div class="relative z-10 h-full overflow-y-scroll p-4">
65
+ <div class="grid grid-cols-[repeat(auto-fit,320px)] justify-center gap-4">
66
+ {#each items as item (item.id)}
67
+ <div class="w-[320px] shadow-sm">
68
+ <div
69
+ bind:this={item.dom}
70
+ class="h-[320px] w-[320px]"
71
+ ></div>
72
+ <div class="bg-white p-2">
73
+ {#if item.object.geometries}
74
+ <GeometryDetails geometries={item.object.geometries} />
75
+ {/if}
76
+ </div>
77
+ </div>
78
+ {/each}
79
+ </div>
80
+ </div>
81
+
82
+ <div class="absolute inset-0">
83
+ <Canvas>
84
+ {#each items as item (item.id)}
85
+ <View dom={item.dom}>
86
+ <ObjectPointCloudScene object={item.object} />
87
+ </View>
88
+ {/each}
89
+ </Canvas>
90
+ </div>
91
+ </div>
@@ -0,0 +1,7 @@
1
+ import type { PointCloudObject } from '@viamrobotics/sdk';
2
+ interface Props {
3
+ objects: PointCloudObject[];
4
+ }
5
+ declare const ObjectPointClouds: import("svelte").Component<Props, {}, "">;
6
+ type ObjectPointClouds = ReturnType<typeof ObjectPointClouds>;
7
+ export default ObjectPointClouds;
@@ -0,0 +1,50 @@
1
+ <script lang="ts">
2
+ import { T } from '@threlte/core'
3
+ import { interactivity } from '@threlte/extras'
4
+ import { Fullscreen, Image } from 'threlte-uikit'
5
+
6
+ import { useDetections } from './context.svelte'
7
+ import Detection from './detection.svelte'
8
+
9
+ interface Props {
10
+ src: string
11
+ factor?: number
12
+ }
13
+
14
+ const { src, factor = 0 }: Props = $props()
15
+
16
+ const context = useDetections()
17
+
18
+ interactivity()
19
+ </script>
20
+
21
+ <T.OrthographicCamera
22
+ makeDefault
23
+ position={[0, 0, 1]}
24
+ >
25
+ <Fullscreen
26
+ positionType="relative"
27
+ width="100%"
28
+ height="100%"
29
+ >
30
+ <Image
31
+ positionType="absolute"
32
+ width="100%"
33
+ height="100%"
34
+ {src}
35
+ />
36
+ </Fullscreen>
37
+
38
+ <Fullscreen
39
+ positionType="relative"
40
+ width="100%"
41
+ height="100%"
42
+ >
43
+ {#each context.current as detection (detection.id)}
44
+ <Detection
45
+ {detection}
46
+ {factor}
47
+ />
48
+ {/each}
49
+ </Fullscreen>
50
+ </T.OrthographicCamera>
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ src: string;
3
+ factor?: number;
4
+ }
5
+ declare const Scene: import("svelte").Component<Props, {}, "">;
6
+ type Scene = ReturnType<typeof Scene>;
7
+ export default Scene;
@@ -0,0 +1,225 @@
1
+ <script lang="ts">
2
+ import { IconButton, Label, Select, Switch, Tooltip } from '@viamrobotics/prime-core'
3
+ import { VisionClient } from '@viamrobotics/sdk'
4
+ import {
5
+ createResourceClient,
6
+ createResourceQuery,
7
+ useResourceNames,
8
+ } from '@viamrobotics/svelte-sdk'
9
+
10
+ import { useAddImageToDataset } from '../../../add-image-to-dataset'
11
+ import ConnectionStatus from '../../connection-status.svelte'
12
+ import Queries from '../../queries.svelte'
13
+ import RefetchController from '../../refetch-controller.svelte'
14
+ import { createRefetchIntervalStore } from '../../refetch-interval-store.svelte'
15
+
16
+ import Image from './image.svelte'
17
+ import ObjectPointClouds from './object-point-clouds.svelte'
18
+
19
+ const { addImageToDataset } = useAddImageToDataset()
20
+
21
+ interface Props {
22
+ partID: string
23
+ resourceName: string
24
+ }
25
+
26
+ const { partID, resourceName }: Props = $props()
27
+
28
+ const refetchInterval = createRefetchIntervalStore(
29
+ () => partID,
30
+ () => resourceName,
31
+ 'vision-service'
32
+ )
33
+
34
+ // special casing this for performance reasons
35
+ const getObjectPointCloudsRefetchInterval = createRefetchIntervalStore(
36
+ () => partID,
37
+ () => resourceName,
38
+ 'vision-service-get-object-point-clouds',
39
+ // default of manual refresh
40
+ false
41
+ )
42
+
43
+ let initialFetchComplete = $state(false)
44
+ let cameraName = $state('')
45
+ let showObjectPointClouds = $state(false)
46
+ let isRemote = $state(false)
47
+
48
+ const cameras = useResourceNames(() => partID, 'camera')
49
+
50
+ $effect.pre(() => {
51
+ if (cameras.current.length > 0 && !initialFetchComplete) {
52
+ initialFetchComplete = true
53
+ cameraName = cameras.current[0]?.name ?? ''
54
+ }
55
+ })
56
+
57
+ $effect.pre(() => {
58
+ if (isRemote && cameraName.includes(':')) {
59
+ // ignore first segment of remote name
60
+ const [, ...remoteName] = cameraName.split(':')
61
+ cameraName = remoteName.join(':')
62
+ }
63
+ })
64
+
65
+ const client = createResourceClient(
66
+ VisionClient,
67
+ () => partID,
68
+ () => resourceName
69
+ )
70
+
71
+ const propertiesQuery = createResourceQuery(client, 'getProperties', () => ({
72
+ // Lower bound of 1Hz for getProperties, higher frequencies are wasteful.
73
+ refetchInterval:
74
+ refetchInterval.current === false
75
+ ? false
76
+ : (Math.max(refetchInterval.current, 1000) as number | false),
77
+ }))
78
+
79
+ const captureAllQuery = createResourceQuery(
80
+ client,
81
+ 'captureAllFromCamera',
82
+ () =>
83
+ [
84
+ cameraName,
85
+ {
86
+ returnImage: true,
87
+ returnClassifications: Boolean(propertiesQuery.data?.classificationsSupported),
88
+ returnDetections: Boolean(propertiesQuery.data?.detectionsSupported),
89
+ returnObjectPointClouds: false,
90
+ },
91
+ ] as const,
92
+ () => ({
93
+ // Lower bound of 20Hz
94
+ refetchInterval:
95
+ refetchInterval.current === false
96
+ ? false
97
+ : (Math.max(refetchInterval.current, 1000 / 20) as number | false),
98
+ })
99
+ )
100
+
101
+ const getObjectPointCloudsQuery = createResourceQuery(client, 'getObjectPointClouds', () => ({
102
+ // Lower bound of 20Hz
103
+ refetchInterval:
104
+ getObjectPointCloudsRefetchInterval.current === false || !showObjectPointClouds
105
+ ? false
106
+ : (Math.max(getObjectPointCloudsRefetchInterval.current, 1000 / 20) as number | false),
107
+ }))
108
+
109
+ const onCameraSelect = (event: Event) => {
110
+ const { value } = event.target as HTMLSelectElement
111
+ cameraName = value
112
+ }
113
+ </script>
114
+
115
+ <ConnectionStatus {partID}>
116
+ {#snippet connected()}
117
+ <div class="flex flex-col gap-2 px-4 pt-4 pb-3">
118
+ <div class="flex flex-row gap-4">
119
+ <div class="w-50">
120
+ <Label position="top">
121
+ Camera
122
+ <Select
123
+ on:change={onCameraSelect}
124
+ slot="input"
125
+ >
126
+ {#each cameras.current as { name } (name)}
127
+ <option
128
+ selected={cameraName === name}
129
+ value={name}
130
+ >
131
+ {name}
132
+ </option>
133
+ {/each}
134
+ </Select>
135
+ </Label>
136
+ </div>
137
+ <Label position="top">
138
+ Is remote?
139
+ <Switch
140
+ slot="input"
141
+ bind:on={isRemote}
142
+ />
143
+ </Label>
144
+ </div>
145
+
146
+ <h6 class="text-subtle-1 font-semibold">Detections/Classifications</h6>
147
+
148
+ <div class="flex gap-4">
149
+ <RefetchController
150
+ allowLive
151
+ {refetchInterval}
152
+ queries={[propertiesQuery, captureAllQuery]}
153
+ />
154
+
155
+ {#if addImageToDataset}
156
+ <Tooltip let:tooltipID>
157
+ <IconButton
158
+ aria-describedby={tooltipID}
159
+ variant="secondary"
160
+ icon="camera-outline"
161
+ label="add image to dataset"
162
+ on:click={() => {
163
+ const imgData = captureAllQuery.data?.image?.image
164
+
165
+ if (imgData) {
166
+ addImageToDataset({
167
+ binaryData: imgData,
168
+ partID,
169
+ componentType: 'camera',
170
+ componentName: resourceName,
171
+ methodName: 'captureAllFromCamera',
172
+ mimeType: 'image/png',
173
+ dataRequestTimes: [new Date(), new Date()],
174
+ })
175
+ }
176
+ }}
177
+ />
178
+ <p slot="description">Add image to dataset</p>
179
+ </Tooltip>
180
+ {/if}
181
+ </div>
182
+
183
+ <Queries
184
+ queries={[propertiesQuery, captureAllQuery]}
185
+ contentCx="p-4 h-14"
186
+ >
187
+ {#if captureAllQuery.data}
188
+ <Image
189
+ data={captureAllQuery.data}
190
+ detectionsSupported={Boolean(propertiesQuery.data?.detectionsSupported)}
191
+ classificationsSupported={Boolean(propertiesQuery.data?.classificationsSupported)}
192
+ />
193
+ {/if}
194
+ </Queries>
195
+
196
+ <h6 class="text-subtle-1 mt-4 font-semibold">Object point clouds</h6>
197
+ <div class="flex items-center gap-4">
198
+ <div class="w-50">
199
+ <Label position="left">
200
+ Show object point clouds
201
+ <Switch
202
+ slot="input"
203
+ bind:on={showObjectPointClouds}
204
+ />
205
+ </Label>
206
+ </div>
207
+ <RefetchController
208
+ refetchInterval={getObjectPointCloudsRefetchInterval}
209
+ queries={[getObjectPointCloudsQuery]}
210
+ />
211
+ </div>
212
+
213
+ {#if showObjectPointClouds}
214
+ <Queries
215
+ queries={[getObjectPointCloudsQuery]}
216
+ contentCx="p-4 h-14"
217
+ >
218
+ {#if getObjectPointCloudsQuery.data !== undefined}
219
+ <ObjectPointClouds objects={getObjectPointCloudsQuery.data} />
220
+ {/if}
221
+ </Queries>
222
+ {/if}
223
+ </div>
224
+ {/snippet}
225
+ </ConnectionStatus>
@@ -0,0 +1,7 @@
1
+ interface Props {
2
+ partID: string;
3
+ resourceName: string;
4
+ }
5
+ declare const VisionService: import("svelte").Component<Props, {}, "">;
6
+ type VisionService = ReturnType<typeof VisionService>;
7
+ export default VisionService;
@@ -0,0 +1 @@
1
+ export declare const numberValueFromEvent: (event: Event) => number | undefined;
@@ -0,0 +1,5 @@
1
+ export const numberValueFromEvent = (event) => {
2
+ const target = event.target;
3
+ const val = target.valueAsNumber;
4
+ return Number.isFinite(val) ? val : undefined;
5
+ };
@@ -0,0 +1,13 @@
1
+ export declare const formatNumeric: (value?: number, decimals?: number) => string;
2
+ /**
3
+ * Convert degrees to radians
4
+ * @param degrees Angle in degrees
5
+ * @returns Angle in radians
6
+ */
7
+ export declare const degreesToRadians: (degrees: number) => number;
8
+ /**
9
+ * Convert radians to degrees
10
+ * @param radians Angle in radians
11
+ * @returns Angle in degrees
12
+ */
13
+ export declare const radiansToDegrees: (radians: number) => number;
package/dist/format.js ADDED
@@ -0,0 +1,31 @@
1
+ export const formatNumeric = (value, decimals = 2) => {
2
+ if (value === undefined) {
3
+ return '––';
4
+ }
5
+ if (Number.isNaN(value)) {
6
+ return 'NaN';
7
+ }
8
+ if (value === Number.POSITIVE_INFINITY) {
9
+ return '+∞';
10
+ }
11
+ if (value === Number.NEGATIVE_INFINITY) {
12
+ return '-∞';
13
+ }
14
+ return value.toFixed(decimals);
15
+ };
16
+ /**
17
+ * Convert degrees to radians
18
+ * @param degrees Angle in degrees
19
+ * @returns Angle in radians
20
+ */
21
+ export const degreesToRadians = (degrees) => {
22
+ return degrees * (Math.PI / 180);
23
+ };
24
+ /**
25
+ * Convert radians to degrees
26
+ * @param radians Angle in radians
27
+ * @returns Angle in degrees
28
+ */
29
+ export const radiansToDegrees = (radians) => {
30
+ return radians * (180 / Math.PI);
31
+ };
@@ -0,0 +1,4 @@
1
+ export declare const useMeasureFps: (alpha?: number) => {
2
+ readonly current: number;
3
+ measure: (now?: number) => void;
4
+ };
@@ -0,0 +1,22 @@
1
+ export const useMeasureFps = (alpha = 0.04) => {
2
+ let smoothedFps = $state(0);
3
+ let then;
4
+ const measure = (now = performance.now()) => {
5
+ if (then !== undefined) {
6
+ const delta = now - then;
7
+ if (delta > 0) {
8
+ const instantFps = 1000 / delta;
9
+ // Apply exponential moving average
10
+ smoothedFps =
11
+ smoothedFps === 0 ? instantFps : smoothedFps * (1 - alpha) + instantFps * alpha;
12
+ }
13
+ }
14
+ then = now;
15
+ };
16
+ return {
17
+ get current() {
18
+ return smoothedFps;
19
+ },
20
+ measure,
21
+ };
22
+ };
@@ -0,0 +1,2 @@
1
+ export { createAddImageToDatasetContext, type ImageData, useAddImageToDataset, } from './add-image-to-dataset';
2
+ export * from './components';
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { createAddImageToDatasetContext, useAddImageToDataset, } from './add-image-to-dataset';
2
+ export * from './components';
@@ -0,0 +1,26 @@
1
+ import { robotApi } from '@viamrobotics/sdk';
2
+ export const ResourceStatusText = {
3
+ [robotApi.ResourceStatus_State.UNSPECIFIED]: 'unspecified',
4
+ [robotApi.ResourceStatus_State.READY]: 'ready',
5
+ [robotApi.ResourceStatus_State.CONFIGURING]: 'configuring',
6
+ [robotApi.ResourceStatus_State.UNHEALTHY]: 'unhealthy',
7
+ [robotApi.ResourceStatus_State.UNCONFIGURED]: 'unconfigured',
8
+ [robotApi.ResourceStatus_State.REMOVING]: 'removing',
9
+ };
10
+ export const getResourceAPI = ({ namespace, type, subtype }) => `${namespace}:${type}:${subtype}`;
11
+ export const getResourceKey = (name) => `${getResourceAPI(name)}/${name.name}`;
12
+ // sorts resource names by local/remote -> type -> name (alphabetical) to produce a list like
13
+ // component a
14
+ // component z
15
+ // service b
16
+ // component remote:c
17
+ // service remote:b
18
+ export const sortResourceNames = (names) => names.toSorted(({ type, name }, { type: otherType, name: otherName }) => {
19
+ // sort all non-remote resources before remote resources
20
+ if (name.includes(':') !== otherName.includes(':')) {
21
+ return name.includes(':') ? 1 : -1;
22
+ }
23
+ // sort alphabetically within type
24
+ // sort components before services
25
+ return type === otherType ? name.localeCompare(otherName) : type.localeCompare(otherType);
26
+ });
@@ -0,0 +1,2 @@
1
+ import type { Action } from 'svelte/action';
2
+ export declare const scrollIntoView: Action<HTMLElement, ScrollIntoViewOptions | undefined>;
@@ -0,0 +1,17 @@
1
+ export const scrollIntoView = (node, scrollIntoViewOptions) => {
2
+ let id;
3
+ if (globalThis.location.hash === `#${node.id}`) {
4
+ /**
5
+ * Set timeout enqueues the scroll action behind all other queued events.
6
+ * This allows us to wait for other animation transitions to complete before scrolling into view.
7
+ */
8
+ id = window.setTimeout(() => {
9
+ node.scrollIntoView(scrollIntoViewOptions);
10
+ }, 0);
11
+ }
12
+ return {
13
+ destroy() {
14
+ clearTimeout(id);
15
+ },
16
+ };
17
+ };
package/dist/sort.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ export declare const compareAlphaNum: (a: string, b: string) => number;
2
+ type SortObject = Record<string, unknown>;
3
+ /**
4
+ * Sorts the keys of a given object in alphanumeric order.
5
+ *
6
+ * This function takes an object with unordered keys and returns a new object
7
+ * with the same keys sorted in alphanumeric order. If the object contains nested
8
+ * objects or arrays with objects, it recursively sorts their keys as well.
9
+ *
10
+ * Note: The sorting is case-sensitive and treats numbers as part of the strings.
11
+ *
12
+ * @param {T} unorderedObj - The object with unordered keys to be sorted.
13
+ * @param compareFn - A optional custom compare function for sorting, which will override the default alphanumeric sort function.
14
+ *
15
+ * @returns {T} A new object with keys sorted in alphanumeric order.
16
+ *
17
+ *
18
+ * (Originally from ui/src/lib/sort.ts)
19
+ */
20
+ export declare const sortObjectKeys: <T extends SortObject>(unorderedObj: T, compareFn?: (a: string, b: string) => number) => T;
21
+ export {};
package/dist/sort.js ADDED
@@ -0,0 +1,31 @@
1
+ import isPlainObject from 'lodash-es/isPlainObject';
2
+ export const compareAlphaNum = (a, b) => a.localeCompare(b, 'en', { numeric: true });
3
+ /**
4
+ * Sorts the keys of a given object in alphanumeric order.
5
+ *
6
+ * This function takes an object with unordered keys and returns a new object
7
+ * with the same keys sorted in alphanumeric order. If the object contains nested
8
+ * objects or arrays with objects, it recursively sorts their keys as well.
9
+ *
10
+ * Note: The sorting is case-sensitive and treats numbers as part of the strings.
11
+ *
12
+ * @param {T} unorderedObj - The object with unordered keys to be sorted.
13
+ * @param compareFn - A optional custom compare function for sorting, which will override the default alphanumeric sort function.
14
+ *
15
+ * @returns {T} A new object with keys sorted in alphanumeric order.
16
+ *
17
+ *
18
+ * (Originally from ui/src/lib/sort.ts)
19
+ */
20
+ export const sortObjectKeys = (unorderedObj, compareFn) => {
21
+ const sortedObj = {};
22
+ for (const key of Object.keys(unorderedObj).toSorted(compareFn ?? compareAlphaNum)) {
23
+ const value = unorderedObj[key];
24
+ if (Array.isArray(value)) {
25
+ sortedObj[key] = value.map((element) => isPlainObject(element) ? sortObjectKeys(element, compareFn) : element);
26
+ continue;
27
+ }
28
+ sortedObj[key] = isPlainObject(value) ? sortObjectKeys(value, compareFn) : value;
29
+ }
30
+ return sortedObj;
31
+ };