@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,232 @@
1
+ <!--
2
+ @component
3
+
4
+ Creates a maplibre-gl map that will fill its parent.
5
+
6
+ Children will mount once the map is fully loaded.
7
+
8
+ ```svelte
9
+ <MapLibre mapProvider="open-street">
10
+ <MapLibreMarker lngLat={{ lng: 0, lat: 0 }} />
11
+ </MapLibre>
12
+ ```
13
+
14
+ ```svelte
15
+ <MapLibre mapProvider="google-maps" mapProviderKey="mycoolkey">
16
+ <MapLibreMarker lngLat={{ lng: 0, lat: 0 }} />
17
+ </MapLibre>
18
+ ```
19
+ -->
20
+
21
+ <script lang="ts">
22
+ import 'maplibre-gl/dist/maplibre-gl.css'
23
+
24
+ import type { ClassValue, HTMLAttributes } from 'svelte/elements'
25
+
26
+ import { LngLat, Map, type MapOptions } from 'maplibre-gl'
27
+ import { onMount, type Snippet, tick } from 'svelte'
28
+
29
+ import { provideMapContext } from './hooks'
30
+ import { getStyleSpecification } from './style'
31
+ import { type MapProvider, MapProviders } from './types'
32
+ import { DEFAULT_MAX_ZOOM } from './zoom'
33
+
34
+ interface Props extends HTMLAttributes<HTMLDivElement> {
35
+ /** The minimum camera pitch. */
36
+ minPitch?: number
37
+ /** The maximum camera pitch. */
38
+ maxPitch?: number
39
+ /** The map zoom. */
40
+ zoom?: number
41
+ /** The maximum zoom level of the map (0-24). */
42
+ minZoom?: number
43
+ /** The maximum zoom level of the map (0-24). */
44
+ maxZoom?: number
45
+ /** The class name to apply to the map container. */
46
+ class?: ClassValue
47
+
48
+ /**
49
+ * The map center.
50
+ *
51
+ * @default { lng: -73.984421, lat: 40.7718116 }
52
+ * The Viam Robotics office.
53
+ */
54
+ center?: LngLat
55
+
56
+ /** A binding to the MapLibre Map instance */
57
+ map?: Map
58
+ options?: Partial<MapOptions>
59
+
60
+ /**
61
+ * The map provider to use.
62
+ *
63
+ * @default 'open-street'
64
+ */
65
+ mapProvider?: MapProvider
66
+
67
+ /**
68
+ * The API key for the map provider.
69
+ *
70
+ * @default undefined
71
+ */
72
+ mapProviderKey?: string
73
+
74
+ /**
75
+ * Whether to show the satellite view.
76
+ *
77
+ * @default false
78
+ */
79
+ satellite?: boolean
80
+
81
+ children?: Snippet
82
+ layer?: Snippet
83
+
84
+ /** Fired after the map has been created. */
85
+ onCreate?: (map: Map) => void
86
+ /** Fired when the map camera moves. */
87
+ onMove?: (map: Map) => void
88
+ /** Fired when the map resizes. */
89
+ onResize?: (map: Map) => void
90
+ }
91
+
92
+ let {
93
+ minPitch = 0,
94
+ maxPitch = 60,
95
+ zoom = 9,
96
+ minZoom = 0,
97
+ maxZoom = DEFAULT_MAX_ZOOM,
98
+ class: className,
99
+ center = new LngLat(-73.984_421, 40.771_811_6),
100
+ map = $bindable(),
101
+ options,
102
+ mapProvider = MapProviders.openStreet,
103
+ mapProviderKey,
104
+ satellite = false,
105
+ onCreate,
106
+ onMove,
107
+ onResize,
108
+ children,
109
+ layer,
110
+ ...rest
111
+ }: Props = $props()
112
+
113
+ const context = provideMapContext(center, zoom, maxZoom, mapProvider, mapProviderKey, satellite)
114
+
115
+ let container = $state.raw<HTMLDivElement>()
116
+ let created = $state(false)
117
+
118
+ const setMapSize = () => {
119
+ const canvas = map?.getCanvas()
120
+ context.size.set({
121
+ width: canvas?.clientWidth ?? 0,
122
+ height: canvas?.clientHeight ?? 0,
123
+ })
124
+ }
125
+
126
+ const handleCreate = () => {
127
+ if (map === undefined) {
128
+ return
129
+ }
130
+
131
+ created = true
132
+ onCreate?.(map)
133
+
134
+ // Resize the map after any slots have been rendered.
135
+ void tick().then(() => map?.resize())
136
+ }
137
+
138
+ const handleMove = () => {
139
+ if (map === undefined) {
140
+ return
141
+ }
142
+
143
+ context.center.set(map.getCenter())
144
+ context.zoom.set(map.getZoom())
145
+ onMove?.(map)
146
+ }
147
+
148
+ const handleResize = () => {
149
+ if (map === undefined) {
150
+ return
151
+ }
152
+
153
+ setMapSize()
154
+ context.center.set(map.getCenter())
155
+ context.zoom.set(map.getZoom())
156
+ onResize?.(map)
157
+ }
158
+
159
+ const updateStyle = async (provider: MapProvider, apiKey?: string) => {
160
+ const style = await getStyleSpecification(provider, apiKey)
161
+ map?.setStyle(style)
162
+ }
163
+
164
+ $effect(() => {
165
+ map?.setMinPitch(minPitch)
166
+ })
167
+
168
+ $effect(() => {
169
+ map?.setMaxPitch(maxPitch)
170
+ })
171
+
172
+ $effect(() => {
173
+ map?.setZoom(zoom)
174
+ })
175
+
176
+ $effect(() => {
177
+ map?.setCenter(center)
178
+ })
179
+
180
+ $effect(() => {
181
+ void updateStyle(mapProvider, mapProviderKey)
182
+ })
183
+
184
+ onMount(() => {
185
+ if (container === undefined) {
186
+ return
187
+ }
188
+
189
+ map = new Map({
190
+ container,
191
+ center,
192
+ zoom,
193
+ minPitch,
194
+ maxPitch,
195
+ minZoom,
196
+ maxZoom,
197
+ ...options,
198
+ })
199
+
200
+ context.map.set(map)
201
+
202
+ map.on('move', handleMove)
203
+ map.on('resize', handleResize)
204
+ map.on('style.load', handleCreate)
205
+
206
+ void updateStyle(mapProvider, mapProviderKey)
207
+
208
+ return () => {
209
+ map?.off('move', handleMove)
210
+ map?.off('resize', handleResize)
211
+ map?.off('style.load', handleCreate)
212
+ }
213
+ })
214
+ </script>
215
+
216
+ {#if created}
217
+ {@render children?.()}
218
+ {/if}
219
+
220
+ <div
221
+ class={['h-full', className]}
222
+ {...rest}
223
+ >
224
+ <div
225
+ class="h-full"
226
+ bind:this={container}
227
+ ></div>
228
+
229
+ {#if created}
230
+ {@render layer?.()}
231
+ {/if}
232
+ </div>
@@ -0,0 +1,75 @@
1
+ import 'maplibre-gl/dist/maplibre-gl.css';
2
+ import type { ClassValue, HTMLAttributes } from 'svelte/elements';
3
+ import { LngLat, Map, type MapOptions } from 'maplibre-gl';
4
+ import { type Snippet } from 'svelte';
5
+ import { type MapProvider } from './types';
6
+ interface Props extends HTMLAttributes<HTMLDivElement> {
7
+ /** The minimum camera pitch. */
8
+ minPitch?: number;
9
+ /** The maximum camera pitch. */
10
+ maxPitch?: number;
11
+ /** The map zoom. */
12
+ zoom?: number;
13
+ /** The maximum zoom level of the map (0-24). */
14
+ minZoom?: number;
15
+ /** The maximum zoom level of the map (0-24). */
16
+ maxZoom?: number;
17
+ /** The class name to apply to the map container. */
18
+ class?: ClassValue;
19
+ /**
20
+ * The map center.
21
+ *
22
+ * @default { lng: -73.984421, lat: 40.7718116 }
23
+ * The Viam Robotics office.
24
+ */
25
+ center?: LngLat;
26
+ /** A binding to the MapLibre Map instance */
27
+ map?: Map;
28
+ options?: Partial<MapOptions>;
29
+ /**
30
+ * The map provider to use.
31
+ *
32
+ * @default 'open-street'
33
+ */
34
+ mapProvider?: MapProvider;
35
+ /**
36
+ * The API key for the map provider.
37
+ *
38
+ * @default undefined
39
+ */
40
+ mapProviderKey?: string;
41
+ /**
42
+ * Whether to show the satellite view.
43
+ *
44
+ * @default false
45
+ */
46
+ satellite?: boolean;
47
+ children?: Snippet;
48
+ layer?: Snippet;
49
+ /** Fired after the map has been created. */
50
+ onCreate?: (map: Map) => void;
51
+ /** Fired when the map camera moves. */
52
+ onMove?: (map: Map) => void;
53
+ /** Fired when the map resizes. */
54
+ onResize?: (map: Map) => void;
55
+ }
56
+ /**
57
+ * Creates a maplibre-gl map that will fill its parent.
58
+ *
59
+ * Children will mount once the map is fully loaded.
60
+ *
61
+ * ```svelte
62
+ * <MapLibre mapProvider="open-street">
63
+ * <MapLibreMarker lngLat={{ lng: 0, lat: 0 }} />
64
+ * </MapLibre>
65
+ * ```
66
+ *
67
+ * ```svelte
68
+ * <MapLibre mapProvider="google-maps" mapProviderKey="mycoolkey">
69
+ * <MapLibreMarker lngLat={{ lng: 0, lat: 0 }} />
70
+ * </MapLibre>
71
+ * ```
72
+ */
73
+ declare const Index: import("svelte").Component<Props, {}, "map">;
74
+ type Index = ReturnType<typeof Index>;
75
+ export default Index;
@@ -0,0 +1,54 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte'
3
+
4
+ import { SliderInput } from '@viamrobotics/prime-core'
5
+ import { LngLat } from 'maplibre-gl'
6
+
7
+ interface Props {
8
+ /** The label for the Lat,Lng, pair. Defaults to Latitude, Longitude. */
9
+ label?: string
10
+ /** Whether the inputs are readonly. */
11
+ readonly?: boolean
12
+ /** The longitude value. */
13
+ lng?: number
14
+ /** The latitude value. */
15
+ lat?: number
16
+ children?: Snippet
17
+ oninput: (lngLat: LngLat) => void
18
+ }
19
+
20
+ const { label, readonly = false, lng, lat, oninput, children }: Props = $props()
21
+
22
+ let latInput = $state.raw<HTMLInputElement>()
23
+ let lngInput = $state.raw<HTMLInputElement>()
24
+ </script>
25
+
26
+ <div class="flex items-end gap-1.5">
27
+ <SliderInput
28
+ bind:input={latInput}
29
+ type="number"
30
+ label={label ?? 'Latitude'}
31
+ placeholder="0"
32
+ incrementor={readonly ? undefined : 'slider'}
33
+ value={lat}
34
+ step={1}
35
+ class="grow"
36
+ on:change={() => oninput(new LngLat(lng ?? 0, latInput?.valueAsNumber ?? 0))}
37
+ on:input={() => oninput(new LngLat(lng ?? 0, latInput?.valueAsNumber ?? 0))}
38
+ {readonly}
39
+ />
40
+ <SliderInput
41
+ bind:input={lngInput}
42
+ type="number"
43
+ label={label ? '' : 'Longitude'}
44
+ placeholder="0"
45
+ incrementor={readonly ? undefined : 'slider'}
46
+ value={lng}
47
+ step={1}
48
+ class="grow"
49
+ on:change={() => oninput(new LngLat(lngInput?.valueAsNumber ?? 0, lat ?? 0))}
50
+ on:input={() => oninput(new LngLat(lngInput?.valueAsNumber ?? 0, lat ?? 0))}
51
+ {readonly}
52
+ />
53
+ {@render children?.()}
54
+ </div>
@@ -0,0 +1,17 @@
1
+ import type { Snippet } from 'svelte';
2
+ import { LngLat } from 'maplibre-gl';
3
+ interface Props {
4
+ /** The label for the Lat,Lng, pair. Defaults to Latitude, Longitude. */
5
+ label?: string;
6
+ /** Whether the inputs are readonly. */
7
+ readonly?: boolean;
8
+ /** The longitude value. */
9
+ lng?: number;
10
+ /** The latitude value. */
11
+ lat?: number;
12
+ children?: Snippet;
13
+ oninput: (lngLat: LngLat) => void;
14
+ }
15
+ declare const LnglatInput: import("svelte").Component<Props, {}, "">;
16
+ type LnglatInput = ReturnType<typeof LnglatInput>;
17
+ export default LnglatInput;
@@ -0,0 +1,60 @@
1
+ <!--
2
+ @component
3
+
4
+ Creates a marker on a maplibre map. Must be a child of `<MapLibre>`.
5
+
6
+ ```svelte
7
+ <MapLibreMarker
8
+ lngLat={{ lng: 0, lat: 0 }}
9
+ scale={1}
10
+ color={'blue'}
11
+ />
12
+ ```
13
+ -->
14
+ <script lang="ts">
15
+ import { LngLat, Marker } from 'maplibre-gl'
16
+
17
+ import { useMapLibre } from './hooks'
18
+
19
+ interface Props {
20
+ /** The longitude of the marker. */
21
+ lng?: number
22
+ /** The latitude of the marker. */
23
+ lat?: number
24
+ /** The rotation angle of the marker (clockwise, in degrees) */
25
+ rotation?: number
26
+ /** The relative size of the marker. */
27
+ scale?: number
28
+ /** The marker color. */
29
+ color?: string
30
+ /** The marker icon */
31
+ element?: HTMLElement
32
+ }
33
+
34
+ const { lng = 0, lat = 0, rotation = 0, scale = 1, color = '', element }: Props = $props()
35
+
36
+ const { map } = useMapLibre()
37
+
38
+ const marker = $derived.by(() => {
39
+ const value = new Marker(element ? { element, scale, color } : { scale, color })
40
+ value.setLngLat(new LngLat(0, 0))
41
+ value.getElement().style.zIndex = '1'
42
+ return value
43
+ })
44
+
45
+ $effect.pre(() => {
46
+ const currentMarker = marker
47
+ currentMarker.addTo(map)
48
+ return () => {
49
+ currentMarker.remove()
50
+ }
51
+ })
52
+
53
+ $effect.pre(() => {
54
+ marker?.setLngLat(new LngLat(lng, lat))
55
+ })
56
+
57
+ $effect.pre(() => {
58
+ marker?.setRotation(rotation)
59
+ })
60
+ </script>
@@ -0,0 +1,29 @@
1
+ import { Marker } from 'maplibre-gl';
2
+ interface Props {
3
+ /** The longitude of the marker. */
4
+ lng?: number;
5
+ /** The latitude of the marker. */
6
+ lat?: number;
7
+ /** The rotation angle of the marker (clockwise, in degrees) */
8
+ rotation?: number;
9
+ /** The relative size of the marker. */
10
+ scale?: number;
11
+ /** The marker color. */
12
+ color?: string;
13
+ /** The marker icon */
14
+ element?: HTMLElement;
15
+ }
16
+ /**
17
+ * Creates a marker on a maplibre map. Must be a child of `<MapLibre>`.
18
+ *
19
+ * ```svelte
20
+ * <MapLibreMarker
21
+ * lngLat={{ lng: 0, lat: 0 }}
22
+ * scale={1}
23
+ * color={'blue'}
24
+ * />
25
+ * ```
26
+ */
27
+ declare const Marker: import("svelte").Component<Props, {}, "">;
28
+ type Marker = ReturnType<typeof Marker>;
29
+ export default Marker;
@@ -0,0 +1,12 @@
1
+ import { LngLat, MercatorCoordinate } from 'maplibre-gl';
2
+ export declare const lngLatToMercator: (lngLat: LngLat) => MercatorCoordinate;
3
+ export declare const mercatorToCartesian: (mercator: MercatorCoordinate, scale?: number) => {
4
+ x: number;
5
+ y: number;
6
+ };
7
+ export declare const lngLatToCartesian: (lngLat: LngLat, scale?: number) => {
8
+ x: number;
9
+ y: number;
10
+ };
11
+ export declare const cartesianToMercator: (x: number, y: number, scale: number) => MercatorCoordinate;
12
+ export declare const cartesianToLngLat: (x: number, y: number, scale: number) => LngLat;
@@ -0,0 +1,18 @@
1
+ import { LngLat, MercatorCoordinate } from 'maplibre-gl';
2
+ export const lngLatToMercator = (lngLat) => {
3
+ return MercatorCoordinate.fromLngLat(lngLat, 0);
4
+ };
5
+ export const mercatorToCartesian = (mercator, scale = mercator.meterInMercatorCoordinateUnits()) => {
6
+ return { x: mercator.x / scale, y: mercator.y / scale };
7
+ };
8
+ export const lngLatToCartesian = (lngLat, scale) => {
9
+ const mercator = lngLatToMercator(lngLat);
10
+ return mercatorToCartesian(mercator, scale);
11
+ };
12
+ export const cartesianToMercator = (x, y, scale) => {
13
+ return new MercatorCoordinate(x * scale, y * scale, 0);
14
+ };
15
+ export const cartesianToLngLat = (x, y, scale) => {
16
+ const mercator = cartesianToMercator(x, y, scale);
17
+ return mercator.toLngLat();
18
+ };
@@ -0,0 +1 @@
1
+ export declare const registerGoogleMapsProtocol: (apiKey: string) => Promise<boolean>;
@@ -0,0 +1,74 @@
1
+ import { addProtocol } from 'maplibre-gl';
2
+ const sessions = {};
3
+ let protocolRegistered = false;
4
+ let registerProtocol = undefined;
5
+ const testGoogleMapsAPI = async (apiKey) => {
6
+ try {
7
+ await getSession('roadmap', apiKey);
8
+ return true;
9
+ }
10
+ catch {
11
+ return false;
12
+ }
13
+ };
14
+ export const registerGoogleMapsProtocol = async (apiKey) => {
15
+ if (protocolRegistered) {
16
+ return true;
17
+ }
18
+ registerProtocol = (async () => {
19
+ const passed = await testGoogleMapsAPI(apiKey);
20
+ if (!passed) {
21
+ return false;
22
+ }
23
+ addProtocol('google', googleProtocol);
24
+ protocolRegistered = true;
25
+ return true;
26
+ })();
27
+ return registerProtocol;
28
+ };
29
+ const googleProtocol = async (params) => {
30
+ const url = new URL(params.url.replace('google://', 'https://'));
31
+ const key = url.searchParams.get('key') ?? '';
32
+ const sessionKey = `${url.hostname}?${url.searchParams}`;
33
+ let session;
34
+ if (!sessions[sessionKey]) {
35
+ sessions[sessionKey] = {
36
+ value: undefined,
37
+ promise: getSession(url.hostname, key),
38
+ };
39
+ session = await sessions[sessionKey].promise;
40
+ }
41
+ else if (sessions[sessionKey].value === undefined) {
42
+ session = await sessions[sessionKey].promise;
43
+ }
44
+ else {
45
+ session = sessions[sessionKey].value;
46
+ }
47
+ return getTile(url, session, key);
48
+ };
49
+ const getSession = async (mapType, key) => {
50
+ const sessionRequest = {
51
+ mapType,
52
+ language: 'en-US',
53
+ region: 'US',
54
+ overlay: true,
55
+ };
56
+ const response = await fetch(`https://tile.googleapis.com/v1/createSession?key=${key}`, {
57
+ method: 'POST',
58
+ headers: { 'Content-Type': 'application/json' },
59
+ body: JSON.stringify(sessionRequest),
60
+ });
61
+ if (!response.ok) {
62
+ throw new Error('Failed to create Google Maps session');
63
+ }
64
+ const result = (await response.json());
65
+ return result.session;
66
+ };
67
+ const getTile = async (url, session, key) => {
68
+ const tile = await fetch(`https://tile.googleapis.com/v1/2dtiles${url.pathname}?session=${session}&key=${key}`);
69
+ if (!tile.ok) {
70
+ throw new Error('Failed to get Google Maps tile');
71
+ }
72
+ const data = await tile.arrayBuffer();
73
+ return { data };
74
+ };
@@ -0,0 +1,10 @@
1
+ import { type Camera, type Raycaster, Vector2 } from 'three';
2
+ /**
3
+ * Provides raycasting against THREE objects projected on to a maplibre map.
4
+ */
5
+ export declare const useMapLibreThreeRaycast: (cameraSignal: {
6
+ current: Camera;
7
+ }) => {
8
+ compute: (raycaster: Raycaster) => void;
9
+ pointer: Vector2;
10
+ };
@@ -0,0 +1,29 @@
1
+ import { onMount } from 'svelte';
2
+ import { Matrix4, Vector2, Vector3 } from 'three';
3
+ import { useMapLibre } from '../hooks';
4
+ /**
5
+ * Provides raycasting against THREE objects projected on to a maplibre map.
6
+ */
7
+ export const useMapLibreThreeRaycast = (cameraSignal) => {
8
+ const { map } = useMapLibre();
9
+ const pointer = new Vector2();
10
+ const handleMouseMove = (event) => {
11
+ pointer.set((event.point.x / map.transform.width) * 2 - 1, -(event.point.y / map.transform.height) * 2 + 1);
12
+ };
13
+ onMount(() => {
14
+ map.on('mousemove', handleMouseMove);
15
+ return () => map.off('mousemove', handleMouseMove);
16
+ });
17
+ const cameraPosition = new Vector3();
18
+ const mousePosition = new Vector3();
19
+ const viewDirection = new Vector3();
20
+ const camInverseProjection = new Matrix4();
21
+ const compute = (raycaster) => {
22
+ camInverseProjection.copy(cameraSignal.current.projectionMatrix).invert();
23
+ cameraPosition.set(0, 0, 0).applyMatrix4(camInverseProjection);
24
+ mousePosition.set(pointer.x, pointer.y, 1).applyMatrix4(camInverseProjection);
25
+ viewDirection.copy(mousePosition).sub(cameraPosition).normalize();
26
+ raycaster.set(cameraPosition, viewDirection);
27
+ };
28
+ return { compute, pointer };
29
+ };
@@ -0,0 +1,21 @@
1
+ import { type Camera, type Scene } from 'three';
2
+ /**
3
+ *
4
+ * A plugin to integrate Three.js scenes into a Maplibre map.
5
+ *
6
+ * It syncs the projection matrix of a mapbibre-gl camera to a THREE.Camera in order to render objects
7
+ * from the perspective of the map viewer. The camera is set to look at the current center of the visible map.
8
+ *
9
+ * It also manages the position of any THREE.Object3D that has a `userData.lngLat` property. The position
10
+ * is determined by calculating the difference of the map's center lng,lat and the object's lng,lat and then
11
+ * making an approximate transform to an x,z plane offset in meters.
12
+ *
13
+ * The userData.lngLat property must be a maplibre LngLat object, or in the case of a THREE.Line, a LngLat[].
14
+ *
15
+ * @param scene A THREE.Scene instance.
16
+ * @param cameraSignal This should only be a THREE.Camera instance. Perspective and Orthographic cameras make projection defaults that will not work with Maplibre.
17
+ * @param renderFn A callback that runs on each map draw. Use it to render your scene.
18
+ */
19
+ export declare const useMapLibreThreeRenderer: (scene: Scene, cameraSignal: {
20
+ current: Camera;
21
+ }, renderFn: (scene: Scene, camera: Camera) => void) => void;