Plugin dependencies
Every plugin mounts independently inside <Visualizer />, and none requires another plugin to function. A few, though, rely on optional npm packages, a live machine connection, or coordinate with a sibling plugin at runtime. This page audits those relationships so you know what to install and mount together.
External packages
Section titled “External packages”Most plugins need nothing beyond @viamrobotics/motion-tools. Three use optional peer dependencies — install them only when you use the plugin:
| Plugin | Install |
|---|---|
<SelectionTool /> | earcut |
<DrawService /> | @connectrpc/connect @connectrpc/connect-web |
<Debug /> | @tanstack/svelte-query-devtools |
Two more build on packages that ship as required peers of @viamrobotics/motion-tools — already installed with it, and listed here only for completeness:
| Plugin | Required peers |
|---|---|
<ControlWidgets /> | @viamrobotics/test-widgets, @viamrobotics/svelte-sdk |
<XR /> | @threlte/xr, @viamrobotics/svelte-sdk |
Plugin-to-plugin
Section titled “Plugin-to-plugin”No plugin imports another as a hard requirement, but two pairs coordinate at runtime. Each is soft: the dependent plugin still works alone, just with reduced behavior.
| Plugin | Coordinates with | What happens |
|---|---|---|
<ControlWidgets /> | <XR /> | Registry widget panels are hidden while an immersive XR session is active. |
<DrawService /> | <Logs /> | Connection status and errors are written to the Logs panel. Without Logs, they’re dropped silently. |
The <ControlWidgets /> ──► <XR /> link only observes XR’s session state through @threlte/xr, not the other plugin’s internals. Which cameras appear in a headset is chosen independently in the <XR /> plugin’s own AR settings panel.
Runtime requirements
Section titled “Runtime requirements”Some plugins need more than a mounted <Visualizer />:
| Plugin | Also needs |
|---|---|
<ControlWidgets />, <XR /> | a live machine connection (resources resolved per part) |
<XR /> | a WebXR-capable device to enter a session |
<Focus /> | an active selection — click an entity first |
<DrawService /> | a running draw server (see its page) |
<TopDownLock /> | orbit-style camera controls (the default); no effect under trackball controls |