Skip to main content
Version: 4.3

DiagramProps

Props for Diagram: all GraphProvider props plus opt-in models. history/clipboard accept true for defaults or a config object.

Extends​

  • GraphProviderProps<Element, Link>

Type Parameters​

Type ParameterDefault type
Element extends ElementJSONInitElementJSONInit
Link extends LinkJSONInitLinkJSONInit

Properties​

autoSizeOrigin?​

readonly optional autoSizeOrigin?: AutoSizeOrigin;

Reference point that stays fixed when an auto-sized element's measured size changes (via useMeasureElement). Mirrors CSS transform-origin semantics.

  • 'top-left' (default): element grows right/down.
  • 'center': element grows symmetrically, its geometric center stays put.

Only affects measurement-driven writes. Manual cell.resize(), interactive resize tools, and direct cell.set('size', ...) calls are unaffected.

Default​

'top-left'

cellModel?​

readonly optional cellModel?: typeof Cell;

Base model class used for every cell the graph constructs from JSON. Maps to the (deprecated) cellModel option of dia.Graph; prefer cellNamespace, which registers shapes by type and supports per-type model classes.

See​

Graph

cellNamespace?​

readonly optional cellNamespace?: unknown;

Cell namespace passed to new dia.Graph. Your entries are merged on top of the built-ins, so JointJS shapes and the @joint/react ElementModel / LinkModel stay available even when you register custom shapes.

Default​

JointJS shapes plus the @joint/react cell models

cells?​

readonly optional cells?: ProviderCells<Element, Link>;

Controlled cells array. Whenever this array changes, the graph is re-synced to match it (and initialCells is ignored); passing the same reference on a re-render does not re-sync. Pair it with onCellsChange to mirror user edits back into your own state.

children?​

readonly optional children?: ReactNode;

React children rendered inside the provider, typically a <Paper />.

clipboard?​

readonly optional clipboard?: boolean | Options;

Turn on the copy/cut/paste clipboard, then read it back with useClipboard. Pass true for defaults or a ClipboardOptions object to configure it.

Default​

false

graph?​

readonly optional graph?: Graph<Attributes, ModelSetOptions>;

Pre-existing JointJS graph instance to use. If omitted, GraphProvider creates a fresh new dia.Graph(...).

See​

Graph

history?​

readonly optional history?: boolean | GraphHistoryOptions;

Turn on the undo/redo command manager, then read it back with useGraphHistory. Pass true for defaults or a GraphHistoryOptions object to tune the undo stack.

A single write can opt out of the stack by passing { skipHistory: true } as the setter's metadata — use it for transient, non-edit changes (a selection-driven z-raise, per-node status written during a run, …) so they never land on undo/redo.

Default​

false

Example​

const { setCell, setCellData } = useGraph();
// Neither write is recorded on the undo stack:
setCell(id, (prev) => ({ ...prev, z: 10 }), { skipHistory: true });
setCellData(id, (prev) => ({ ...prev, status: 'running' }), { skipHistory: true });

initialCells?​

readonly optional initialCells?: readonly CellInput<Element, Link>[];

Cells used to seed the graph once, at mount, for uncontrolled mode. Later changes to this array are not applied. Ignored when cells is provided.

See​

CellInput

interactions?​

readonly optional interactions?: boolean | InteractionsOptions;

Built-in pointer & keyboard interactions (pan, zoom, select, region-select, delete, copy/paste, undo/redo), applied to every <Paper> in the diagram. Enabled by default: omit the prop to get them all. Pass false to disable them entirely, or an object to disable specific parts (each flag defaults to true, e.g. interactions={{ selection: false }}). See InteractionsOptions.

Default​

true

onCellsChange?​

readonly optional onCellsChange?: (newCells) => void;

Fires after each graph change with the full, updated cells array. Use it to keep external React state in sync with the graph; it is notification only and does not itself write anything back into the graph.

Parameters​

ParameterType
newCellsProviderCells<Element, Link>

Returns​

void

onIncrementalCellsChange?​

readonly optional onIncrementalCellsChange?: OnIncrementalCellsChange<Element, Link>;

Fires after each commit with the granular added / changed / removed delta, so you can apply just the change to an external store (Redux, Zustand, etc.). Works in both controlled and uncontrolled mode.

See​

IncrementalCellsChange

spatialIndex?​

readonly optional spatialIndex?: boolean | SpatialIndexOptions;

Back the diagram with a dia.SearchGraph: a graph with a quad-tree spatial index that speeds up findElementsInArea, findElementsAtPoint and findElementsUnderElement queries on large graphs. Pass true for defaults or a SpatialIndexOptions object to tune the quad-tree.

Enabling/disabling is captured at first render and ignored when a custom store is provided; the quad-tree tuning values are reactive.

Default​

false