Spring Nodes

Interactive mass-spring physics simulation — nodes repel each other (Coulomb) and are held by Hooke springs on defined edges. Click and drag to pin and move nodes. Settles naturally from a stacked initial position.

Surfaces
apps-script-webwebmeet-stage
Fields
FieldType
nodesarray. Array of {id, label} objects. Defaults to 6 labelled nodes.optional
edgesarray. Array of {a, b} index pairs for spring connections.optional
colourstring. Node and edge accent colour. Defaultoptional
bgstring. Background colour. Defaultoptional
heightinteger. Canvas height px. Default 420.optional
rest_lengthinteger. Spring rest length px. Default 110.optional
Example payload
{
  "type": "spring_nodes"
}
ARD catalog entry
{
  "identifier": "urn:air:a2uicatalog.ai:atom:spring_nodes",
  "displayName": "Spring Nodes",
  "type": "application/vnd.a2ui.atom+json",
  "url": "https://a2uicatalog.ai/atoms/spring_nodes",
  "capabilities": [
    "apps-script-web",
    "web",
    "meet-stage"
  ],
  "description": "Interactive mass-spring physics simulation \u2014 nodes repel each other (Coulomb) and are held by Hooke springs on defined edges. Click and drag to pin and move nodes. Settles naturally from a stacked initial position.",
  "representativeQueries": [
    "show a interactive mass-spring physics graph with drag-to-pin nodes",
    "interactive mass-spring physics simulation \u2014 nodes repel each other (coulomb) and are held by hooke",
    "render a spring nodes"
  ]
}
← Full ARD catalog Try it live →
Deploy your own renderer

The renderer is open source. Deploy your own instance in 4 commands — you own the URL, no dependency on the demo endpoint.

git clone https://github.com/a2uicatalog/a2ui
cd apps-script-surface/gas-schema-renderer
clasp push && clasp deploy
Full deploy guide →