Allows to change the layout of the graph
Stop the engine and release the container observer.
Turn Auto off, leaving the knobs wherever they currently sit.
Turn Auto on and tune immediately. force because this is the Auto button: an
answer inside the deadband would otherwise make the click do nothing visible.
Hand the tree spacing back to the tuner, which re-derives both multipliers from the
node sizes and tree shape and keeps doing so as the graph changes. The counterpart of
setTreeSpacing. No-op under the force layout, where Auto is
enableAutoPhysics.
The active layout type — the Physics flyout greys out physics under non-force layouts.
Current knob values, for seeding the Physics-flyout sliders.
Where the active tree hangs from. Under the force layout there is no tree, so this reports the finder a tree would start with and no pin.
The active tree layout's spacing multipliers; 1× under the force layout.
Is the Auto preset currently driving the knobs?
Is the tree spacing tuning itself? false under the force layout.
Pause the simulation
Re-read the node-dependent force accessors and reheat. d3-force caches per-node radius/strength when a force is initialised, not per tick, so a radius mutated mid-run has no effect until the nodes are re-set. For a custom node that measures itself after the opening layout has cooled. No-op when disabled.
Restart the simulation with a bit of heat
Restart the simulation with rendering on each animation frame.
Pull toward the canvas centre. Knob 0–100 → d3GravityStrengthConnected, with d3GravityStrength (isolated nodes) following as a fixed multiple. Separate components only repel each other, so this is the only thing keeping them in frame.
Node spacing. Knob 4–60 → d3CollideRadiusMultiplier (scales each node's collision radius).
Motion damping. Knob 0–100 → d3VelocityDecay (÷100). Applied live each tick — no reheat.
Preferred edge length. Knob 40–600 (px) → d3LinkDistance.
Push-apart strength. Knob 0–100 → d3ManyBodyStrength.
How long the layout is given to settle, in seconds. Knob 0.5–8 → d3AlphaDecay and cooldownTime together: alpha decay sets how fast the sim cools, cooldown is the wall-clock wall that stops it. Moving either alone does nothing — raise the cooldown and the sim is already cold; slow the decay and the wall truncates it.
Re-hang the tree from another root: { rootId } pins it to that node, { algorithm }
drops the pin and lets the finder choose. No-op under the force layout, which has no
hierarchy to root.
A pinned root is walked ignoring edge direction, so any node — a leaf included — gives a whole tree rather than a stump beside the old one. See TreeLayout.setRoot.
Re-lay-out the tree at new spacing multipliers (TREE_SPACING_RANGE). No-op under the force layout, where spacing is the physics knobs' job.
A redraw and a reheat: the pinned axis moves immediately, so the change shows even with physics paused, while the free axis still settles into its new sibling slots.
Snap a graph-space coordinate to the grid when grid-snapping is enabled (a no-op otherwise). Public so non-simulation draggables (e.g. notes) can snap on the same grid as nodes.
Start the simulation with rendering on each animation frame.
Manually stop the simulation and cancel animation frame.
Returns a promise that resolves when the simulation stops naturally. Useful for performing actions (like fitAndCenter) after stabilization.
Apply a named preset (PHYSICS_PRESETS): sets every knob and reheats once, at CLICK_REHEAT_ALPHA rather than the slider default — a preset describes a whole layout, and reaching it from a settled graph takes a fresh layout's worth of travel.