@joint/react
    Preparing search index...

    Interface PaperProps<ElementItem>

    The props for the Paper component. Extend the dia.Paper.Options interface. For more information, see the JointJS documentation.

    interface PaperProps<ElementItem extends GraphElement = GraphElement> {
        afterRender?: AfterRenderCallback;
        allowLink?: null | ((linkView: LinkView, paper: Paper) => boolean);
        anchorNamespace?: any;
        async?: boolean;
        attributes?: Record<string, any>;
        autoFreeze?: boolean;
        background?: BackgroundOptions;
        beforeRender?: BeforeRenderCallback;
        cellModel?: typeof Cell;
        cellNamespace?: unknown;
        cellViewNamespace?: any;
        children?: ReactNode;
        className?: string;
        clickThreshold?: number;
        collection?: Collection<any>;
        connectionPointNamespace?: any;
        connectionStrategy?: ConnectionStrategy;
        connectorNamespace?: any;
        defaultAnchor?: AnchorJSON | Anchor;
        defaultConnectionPoint?:
            | ConnectionPointJSON
            | ConnectionPoint
            | ((...args: any[]) => ConnectionPoint);
        defaultConnector?: Connector | ConnectorJSON;
        defaultLink?:
            | Link<Attributes, ModelSetOptions>
            | ((cellView: CellView, magnet: SVGElement) => Link);
        defaultLinkAnchor?: AnchorJSON | Anchor;
        defaultRouter?: Router | RouterJSON;
        drawGrid?: boolean | GridOptions | GridOptions[];
        drawGridSize?: null | number;
        el?: unknown;
        elementSelector?: (item: GraphElement) => ElementItem;
        elementView?:
            | typeof ElementView
            | ((element: Element) => typeof ElementView);
        embeddingMode?: boolean;
        events?: _Result<EventsHash>;
        findParentBy?: FindParentByType | FindParentByCallback;
        frontParentOnly?: boolean;
        graph?: Graph<Attributes, ModelSetOptions>;
        gridSize?: number;
        guard?: (evt: Event, view: CellView) => boolean;
        height?: Dimension;
        highlighterNamespace?: any;
        highlighting?: boolean | Record<string, boolean | HighlighterJSON>;
        id?: string;
        initialElements?: (GraphElement | Element<Attributes, ModelSetOptions>)[];
        initialLinks?: (GraphLink<string> | Link<Attributes, ModelSetOptions>)[];
        interactive?:
            | boolean
            | ((cellView: CellView, event: string) => boolean | InteractivityOptions)
            | InteractivityOptions;
        labelsLayer?: string | boolean;
        linkAnchorNamespace?: any;
        linkPinning?: boolean;
        linkView?: typeof LinkView | ((link: Link) => typeof LinkView);
        magnetThreshold?: string | number;
        markAvailable?: boolean;
        measureNode?: MeasureNodeCallback;
        model?: Graph<Attributes, ModelSetOptions>;
        moveThreshold?: number;
        multiLinks?: boolean;
        onBlankContextMenu?: (
            args: { event: Event; paper: Paper; x: number; y: number },
        ) => void;
        onBlankMouseEnter?: (args: { event: Event; paper: Paper }) => void;
        onBlankMouseLeave?: (args: { event: Event; paper: Paper }) => void;
        onBlankMouseOut?: (args: { event: Event; paper: Paper }) => void;
        onBlankMouseOver?: (args: { event: Event; paper: Paper }) => void;
        onBlankMouseWheel?: (
            args: {
                delta: number;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onBlankPointerClick?: (
            args: { event: Event; paper: Paper; x: number; y: number },
        ) => void;
        onBlankPointerDblClick?: (
            args: { event: Event; paper: Paper; x: number; y: number },
        ) => void;
        onBlankPointerDown?: (
            args: { event: Event; paper: Paper; x: number; y: number },
        ) => void;
        onBlankPointerMove?: (
            args: { event: Event; paper: Paper; x: number; y: number },
        ) => void;
        onBlankPointerUp?: (
            args: { event: Event; paper: Paper; x: number; y: number },
        ) => void;
        onCellContextMenu?: (
            args: {
                cellView: CellView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onCellHighlight?: (
            args: {
                cellView: CellView;
                node: SVGElement;
                options: EventHighlightOptions;
                paper: Paper;
            },
        ) => void;
        onCellHighlightInvalid?: (
            args: {
                cellView: CellView;
                highlighter: HighlighterView;
                highlighterId: string;
                paper: Paper;
            },
        ) => void;
        onCellMouseEnter?: (
            args: { cellView: CellView; event: Event; paper: Paper },
        ) => void;
        onCellMouseLeave?: (
            args: { cellView: CellView; event: Event; paper: Paper },
        ) => void;
        onCellMouseOut?: (
            args: { cellView: CellView; event: Event; paper: Paper },
        ) => void;
        onCellMouseOver?: (
            args: { cellView: CellView; event: Event; paper: Paper },
        ) => void;
        onCellMouseWheel?: (
            args: {
                cellView: CellView;
                delta: number;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onCellPointerClick?: (
            args: {
                cellView: CellView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onCellPointerDblClick?: (
            args: {
                cellView: CellView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onCellPointerDown?: (
            args: {
                cellView: CellView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onCellPointerMove?: (
            args: {
                cellView: CellView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onCellPointerUp?: (
            args: {
                cellView: CellView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onCellUnhighlight?: (
            args: {
                cellView: CellView;
                node: SVGElement;
                options: EventHighlightOptions;
                paper: Paper;
            },
        ) => void;
        onCustomEvent?: (
            args: { args: any[]; eventName: string; paper: Paper },
        ) => void;
        onElementContextMenu?: (
            args: {
                elementView: ElementView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onElementMagnetContextMenu?: (
            args: {
                elementView: ElementView;
                event: Event;
                magnetNode: SVGElement;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onElementMagnetPointerClick?: (
            args: {
                elementView: ElementView;
                event: Event;
                magnetNode: SVGElement;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onElementMagnetPointerDblClick?: (
            args: {
                elementView: ElementView;
                event: Event;
                magnetNode: SVGElement;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onElementMouseEnter?: (
            args: { elementView: ElementView; event: Event; paper: Paper },
        ) => void;
        onElementMouseLeave?: (
            args: { elementView: ElementView; event: Event; paper: Paper },
        ) => void;
        onElementMouseOut?: (
            args: { elementView: ElementView; event: Event; paper: Paper },
        ) => void;
        onElementMouseOver?: (
            args: { elementView: ElementView; event: Event; paper: Paper },
        ) => void;
        onElementMouseWheel?: (
            args: {
                delta: number;
                elementView: ElementView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onElementPointerClick?: (
            args: {
                elementView: ElementView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onElementPointerDblClick?: (
            args: {
                elementView: ElementView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onElementPointerDown?: (
            args: {
                elementView: ElementView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onElementPointerMove?: (
            args: {
                elementView: ElementView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onElementPointerUp?: (
            args: {
                elementView: ElementView;
                event: Event;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onElementsSizeChange?: (options: OnLoadOptions) => void;
        onElementsSizeReady?: (options: OnLoadOptions) => void;
        onLinkConnect?: (
            args: {
                arrowhead: LinkEnd;
                event: Event;
                linkView: LinkView;
                newCellView: CellView;
                newCellViewMagnet: SVGElement;
                paper: Paper;
            },
        ) => void;
        onLinkContextMenu?: (
            args: {
                event: Event;
                linkView: LinkView;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onLinkDisconnect?: (
            args: {
                arrowhead: LinkEnd;
                event: Event;
                linkView: LinkView;
                paper: Paper;
                previousCellView: CellView;
                previousCellViewMagnet: SVGElement;
            },
        ) => void;
        onLinkMouseEnter?: (
            args: { event: Event; linkView: LinkView; paper: Paper },
        ) => void;
        onLinkMouseLeave?: (
            args: { event: Event; linkView: LinkView; paper: Paper },
        ) => void;
        onLinkMouseOut?: (
            args: { event: Event; linkView: LinkView; paper: Paper },
        ) => void;
        onLinkMouseOver?: (
            args: { event: Event; linkView: LinkView; paper: Paper },
        ) => void;
        onLinkMouseWheel?: (
            args: {
                delta: number;
                event: Event;
                linkView: LinkView;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onLinkPointerClick?: (
            args: {
                event: Event;
                linkView: LinkView;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onLinkPointerDblClick?: (
            args: {
                event: Event;
                linkView: LinkView;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onLinkPointerDown?: (
            args: {
                event: Event;
                linkView: LinkView;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onLinkPointerMove?: (
            args: {
                event: Event;
                linkView: LinkView;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onLinkPointerUp?: (
            args: {
                event: Event;
                linkView: LinkView;
                paper: Paper;
                x: number;
                y: number;
            },
        ) => void;
        onLinkSnapConnect?: (
            args: {
                arrowhead: LinkEnd;
                event: Event;
                linkView: LinkView;
                newCellView: CellView;
                newCellViewMagnet: SVGElement;
                paper: Paper;
            },
        ) => void;
        onLinkSnapDisconnect?: (
            args: {
                arrowhead: LinkEnd;
                event: Event;
                linkView: LinkView;
                paper: Paper;
                previousCellView: CellView;
                previousCellViewMagnet: SVGElement;
            },
        ) => void;
        onPan?: (
            args: { deltaX: number; deltaY: number; event: Event; paper: Paper },
        ) => void;
        onPaperMouseEnter?: (args: { event: Event; paper: Paper }) => void;
        onPaperMouseLeave?: (args: { event: Event; paper: Paper }) => void;
        onPinch?: (
            args: {
                event: Event;
                paper: Paper;
                scale: number;
                x: number;
                y: number;
            },
        ) => void;
        onRenderDone?: (
            args: { opt: unknown; paper: Paper; stats: UpdateStats },
        ) => void;
        onResize?: (
            args: { data: unknown; height: number; paper: Paper; width: number },
        ) => void;
        onScale?: (
            args: { data: unknown; paper: Paper; sx: number; sy: number },
        ) => void;
        onTransform?: (
            args: { data: unknown; matrix: DOMMatrix; paper: Paper },
        ) => void;
        onTranslate?: (
            args: { data: unknown; paper: Paper; tx: number; ty: number },
        ) => void;
        onViewPostponed?: (
            view: View<any, any>,
            flag: number,
            paper: Paper,
        ) => boolean;
        onViewUpdate?: (
            view: View<any, any>,
            flag: number,
            priority: number,
            opt: { [key: string]: any },
            paper: Paper,
        ) => void;
        overflow?: boolean;
        overwriteDefaultPaperElement?: (
            paperCtx: PaperContext,
        ) => SVGElement | HTMLElement;
        preventContextMenu?: boolean;
        preventDefaultBlankAction?: boolean;
        preventDefaultViewAction?: boolean;
        renderElement?: RenderElement<ElementItem>;
        restrictTranslate?: boolean | PlainRect | RestrictTranslateCallback;
        routerNamespace?: any;
        scale?: number;
        snapLabels?: boolean;
        snapLinks?: boolean | SnapLinksOptions;
        snapLinksSelf?: boolean | { distance: number };
        sorting?: sorting;
        store?: Store;
        style?: CSSProperties;
        tagName?: string;
        theme?: string;
        useHTMLOverlay?: boolean;
        validateConnection?: (
            cellViewS: CellView,
            magnetS: SVGElement,
            cellViewT: CellView,
            magnetT: SVGElement,
            end: LinkEnd,
            linkView: LinkView,
        ) => boolean;
        validateEmbedding?: (
            this: Paper,
            childView: ElementView,
            parentView: ElementView,
        ) => boolean;
        validateMagnet?: (
            cellView: CellView,
            magnet: SVGElement,
            evt: Event,
        ) => boolean;
        validateUnembedding?: (this: Paper, childView: ElementView) => boolean;
        viewport?: null | ViewportCallback;
        width?: Dimension;
    }

    Type Parameters

    Hierarchy (View Summary)

    Index

    Properties

    afterRender? allowLink? anchorNamespace? async? attributes? autoFreeze? background? beforeRender? cellModel? cellNamespace? cellViewNamespace? children? className? clickThreshold? collection? connectionPointNamespace? connectionStrategy? connectorNamespace? defaultAnchor? defaultConnectionPoint? defaultConnector? defaultLink? defaultLinkAnchor? defaultRouter? drawGrid? drawGridSize? el? elementSelector? elementView? embeddingMode? events? findParentBy? frontParentOnly? graph? gridSize? guard? height? highlighterNamespace? highlighting? id? initialElements? initialLinks? interactive? labelsLayer? linkAnchorNamespace? linkPinning? linkView? magnetThreshold? markAvailable? measureNode? model? moveThreshold? multiLinks? onBlankContextMenu? onBlankMouseEnter? onBlankMouseLeave? onBlankMouseOut? onBlankMouseOver? onBlankMouseWheel? onBlankPointerClick? onBlankPointerDblClick? onBlankPointerDown? onBlankPointerMove? onBlankPointerUp? onCellContextMenu? onCellHighlight? onCellHighlightInvalid? onCellMouseEnter? onCellMouseLeave? onCellMouseOut? onCellMouseOver? onCellMouseWheel? onCellPointerClick? onCellPointerDblClick? onCellPointerDown? onCellPointerMove? onCellPointerUp? onCellUnhighlight? onCustomEvent? onElementContextMenu? onElementMagnetContextMenu? onElementMagnetPointerClick? onElementMagnetPointerDblClick? onElementMouseEnter? onElementMouseLeave? onElementMouseOut? onElementMouseOver? onElementMouseWheel? onElementPointerClick? onElementPointerDblClick? onElementPointerDown? onElementPointerMove? onElementPointerUp? onElementsSizeChange? onElementsSizeReady? onLinkConnect? onLinkContextMenu? onLinkDisconnect? onLinkMouseEnter? onLinkMouseLeave? onLinkMouseOut? onLinkMouseOver? onLinkMouseWheel? onLinkPointerClick? onLinkPointerDblClick? onLinkPointerDown? onLinkPointerMove? onLinkPointerUp? onLinkSnapConnect? onLinkSnapDisconnect? onPan? onPaperMouseEnter? onPaperMouseLeave? onPinch? onRenderDone? onResize? onScale? onTransform? onTranslate? onViewPostponed? onViewUpdate? overflow? overwriteDefaultPaperElement? preventContextMenu? preventDefaultBlankAction? preventDefaultViewAction? renderElement? restrictTranslate? routerNamespace? scale? snapLabels? snapLinks? snapLinksSelf? sorting? store? style? tagName? theme? useHTMLOverlay? validateConnection? validateEmbedding? validateMagnet? validateUnembedding? viewport? width?

    Properties

    afterRender?: AfterRenderCallback
    allowLink?: null | ((linkView: LinkView, paper: Paper) => boolean)
    anchorNamespace?: any
    async?: boolean
    attributes?: Record<string, any>
    autoFreeze?: boolean
    background?: BackgroundOptions
    beforeRender?: BeforeRenderCallback
    cellModel?: typeof Cell

    Custom cell model to use. It's loaded just once, so it cannot be used as React state.

    cellNamespace?: unknown

    Namespace for cell models. It's loaded just once, so it cannot be used as React state. When added new shape, it will not remove existing ones, it will just add new ones. So { ...shapes, ReactElement } elements are still available.

    { ...shapes, ReactElement }

    cellViewNamespace?: any
    children?: ReactNode

    Children to render. Paper automatically wrap the children with the PaperContext, if there is no PaperContext in the parent tree.

    className?: string

    Class name of the paper element.

    clickThreshold?: number

    The threshold for click events in pixels. If the mouse moves more than this distance, it will be considered a drag event.

    10
    
    collection?: Collection<any>
    connectionPointNamespace?: any
    connectionStrategy?: ConnectionStrategy
    connectorNamespace?: any
    defaultAnchor?: AnchorJSON | Anchor
    defaultConnectionPoint?:
        | ConnectionPointJSON
        | ConnectionPoint
        | ((...args: any[]) => ConnectionPoint)
    defaultConnector?: Connector | ConnectorJSON
    defaultLink?:
        | Link<Attributes, ModelSetOptions>
        | ((cellView: CellView, magnet: SVGElement) => Link)
    defaultLinkAnchor?: AnchorJSON | Anchor
    defaultRouter?: Router | RouterJSON
    drawGrid?: boolean | GridOptions | GridOptions[]
    drawGridSize?: null | number
    el?: unknown
    elementSelector?: (item: GraphElement) => ElementItem

    A function that selects the elements to be rendered. It defaults to the GraphElement elements because dia.Element is not a valid React element (it do not change reference after update).

    (item: dia.Cell) => BaseElement

    GraphElement

    elementView?: typeof ElementView | ((element: Element) => typeof ElementView)
    embeddingMode?: boolean
    events?: _Result<EventsHash>
    findParentBy?: FindParentByType | FindParentByCallback
    frontParentOnly?: boolean
    graph?: Graph<Attributes, ModelSetOptions>

    Graph instance to use. If not provided, a new graph instance will be created.

    new dia.Graph({}, { cellNamespace: shapes })
    
    gridSize?: number
    guard?: (evt: Event, view: CellView) => boolean
    height?: Dimension
    highlighterNamespace?: any
    highlighting?: boolean | Record<string, boolean | HighlighterJSON>
    id?: string
    initialElements?: (GraphElement | Element<Attributes, ModelSetOptions>)[]

    Initial elements to be added to graph It's loaded just once, so it cannot be used as React state.

    initialLinks?: (GraphLink<string> | Link<Attributes, ModelSetOptions>)[]

    Initial links to be added to graph It's loaded just once, so it cannot be used as React state.

    interactive?:
        | boolean
        | ((cellView: CellView, event: string) => boolean | InteractivityOptions)
        | InteractivityOptions
    labelsLayer?: string | boolean
    linkAnchorNamespace?: any
    linkPinning?: boolean
    linkView?: typeof LinkView | ((link: Link) => typeof LinkView)
    magnetThreshold?: string | number
    markAvailable?: boolean
    measureNode?: MeasureNodeCallback
    model?: Graph<Attributes, ModelSetOptions>
    moveThreshold?: number
    multiLinks?: boolean
    onBlankContextMenu?: (
        args: { event: Event; paper: Paper; x: number; y: number },
    ) => void
    onBlankMouseEnter?: (args: { event: Event; paper: Paper }) => void
    onBlankMouseLeave?: (args: { event: Event; paper: Paper }) => void
    onBlankMouseOut?: (args: { event: Event; paper: Paper }) => void
    onBlankMouseOver?: (args: { event: Event; paper: Paper }) => void
    onBlankMouseWheel?: (
        args: {
            delta: number;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onBlankPointerClick?: (
        args: { event: Event; paper: Paper; x: number; y: number },
    ) => void
    onBlankPointerDblClick?: (
        args: { event: Event; paper: Paper; x: number; y: number },
    ) => void
    onBlankPointerDown?: (
        args: { event: Event; paper: Paper; x: number; y: number },
    ) => void
    onBlankPointerMove?: (
        args: { event: Event; paper: Paper; x: number; y: number },
    ) => void
    onBlankPointerUp?: (
        args: { event: Event; paper: Paper; x: number; y: number },
    ) => void
    onCellContextMenu?: (
        args: {
            cellView: CellView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onCellHighlight?: (
        args: {
            cellView: CellView;
            node: SVGElement;
            options: EventHighlightOptions;
            paper: Paper;
        },
    ) => void
    onCellHighlightInvalid?: (
        args: {
            cellView: CellView;
            highlighter: HighlighterView;
            highlighterId: string;
            paper: Paper;
        },
    ) => void
    onCellMouseEnter?: (
        args: { cellView: CellView; event: Event; paper: Paper },
    ) => void
    onCellMouseLeave?: (
        args: { cellView: CellView; event: Event; paper: Paper },
    ) => void
    onCellMouseOut?: (
        args: { cellView: CellView; event: Event; paper: Paper },
    ) => void
    onCellMouseOver?: (
        args: { cellView: CellView; event: Event; paper: Paper },
    ) => void
    onCellMouseWheel?: (
        args: {
            cellView: CellView;
            delta: number;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onCellPointerClick?: (
        args: {
            cellView: CellView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onCellPointerDblClick?: (
        args: {
            cellView: CellView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onCellPointerDown?: (
        args: {
            cellView: CellView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onCellPointerMove?: (
        args: {
            cellView: CellView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onCellPointerUp?: (
        args: {
            cellView: CellView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onCellUnhighlight?: (
        args: {
            cellView: CellView;
            node: SVGElement;
            options: EventHighlightOptions;
            paper: Paper;
        },
    ) => void
    onCustomEvent?: (args: { args: any[]; eventName: string; paper: Paper }) => void
    onElementContextMenu?: (
        args: {
            elementView: ElementView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onElementMagnetContextMenu?: (
        args: {
            elementView: ElementView;
            event: Event;
            magnetNode: SVGElement;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onElementMagnetPointerClick?: (
        args: {
            elementView: ElementView;
            event: Event;
            magnetNode: SVGElement;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onElementMagnetPointerDblClick?: (
        args: {
            elementView: ElementView;
            event: Event;
            magnetNode: SVGElement;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onElementMouseEnter?: (
        args: { elementView: ElementView; event: Event; paper: Paper },
    ) => void
    onElementMouseLeave?: (
        args: { elementView: ElementView; event: Event; paper: Paper },
    ) => void
    onElementMouseOut?: (
        args: { elementView: ElementView; event: Event; paper: Paper },
    ) => void
    onElementMouseOver?: (
        args: { elementView: ElementView; event: Event; paper: Paper },
    ) => void
    onElementMouseWheel?: (
        args: {
            delta: number;
            elementView: ElementView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onElementPointerClick?: (
        args: {
            elementView: ElementView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onElementPointerDblClick?: (
        args: {
            elementView: ElementView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onElementPointerDown?: (
        args: {
            elementView: ElementView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onElementPointerMove?: (
        args: {
            elementView: ElementView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onElementPointerUp?: (
        args: {
            elementView: ElementView;
            event: Event;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onElementsSizeChange?: (options: OnLoadOptions) => void

    Event called when the paper is resized. It is useful for like onLoad event to do some layout or other operations with graph or paper.

    onElementsSizeReady?: (options: OnLoadOptions) => void

    Event called when all elements are properly measured (has all elements width and height greater than 1 - default). In react, we cannot detect jointjs paper render:done event properly, so we use this special event to check if all elements are measured. It is useful for like onLoad event to do some layout or other operations with graph or paper.

    onLinkConnect?: (
        args: {
            arrowhead: LinkEnd;
            event: Event;
            linkView: LinkView;
            newCellView: CellView;
            newCellViewMagnet: SVGElement;
            paper: Paper;
        },
    ) => void
    onLinkContextMenu?: (
        args: {
            event: Event;
            linkView: LinkView;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onLinkDisconnect?: (
        args: {
            arrowhead: LinkEnd;
            event: Event;
            linkView: LinkView;
            paper: Paper;
            previousCellView: CellView;
            previousCellViewMagnet: SVGElement;
        },
    ) => void
    onLinkMouseEnter?: (
        args: { event: Event; linkView: LinkView; paper: Paper },
    ) => void
    onLinkMouseLeave?: (
        args: { event: Event; linkView: LinkView; paper: Paper },
    ) => void
    onLinkMouseOut?: (
        args: { event: Event; linkView: LinkView; paper: Paper },
    ) => void
    onLinkMouseOver?: (
        args: { event: Event; linkView: LinkView; paper: Paper },
    ) => void
    onLinkMouseWheel?: (
        args: {
            delta: number;
            event: Event;
            linkView: LinkView;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onLinkPointerClick?: (
        args: {
            event: Event;
            linkView: LinkView;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onLinkPointerDblClick?: (
        args: {
            event: Event;
            linkView: LinkView;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onLinkPointerDown?: (
        args: {
            event: Event;
            linkView: LinkView;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onLinkPointerMove?: (
        args: {
            event: Event;
            linkView: LinkView;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onLinkPointerUp?: (
        args: {
            event: Event;
            linkView: LinkView;
            paper: Paper;
            x: number;
            y: number;
        },
    ) => void
    onLinkSnapConnect?: (
        args: {
            arrowhead: LinkEnd;
            event: Event;
            linkView: LinkView;
            newCellView: CellView;
            newCellViewMagnet: SVGElement;
            paper: Paper;
        },
    ) => void
    onLinkSnapDisconnect?: (
        args: {
            arrowhead: LinkEnd;
            event: Event;
            linkView: LinkView;
            paper: Paper;
            previousCellView: CellView;
            previousCellViewMagnet: SVGElement;
        },
    ) => void
    onPan?: (
        args: { deltaX: number; deltaY: number; event: Event; paper: Paper },
    ) => void
    onPaperMouseEnter?: (args: { event: Event; paper: Paper }) => void
    onPaperMouseLeave?: (args: { event: Event; paper: Paper }) => void
    onPinch?: (
        args: {
            event: Event;
            paper: Paper;
            scale: number;
            x: number;
            y: number;
        },
    ) => void
    onRenderDone?: (
        args: { opt: unknown; paper: Paper; stats: UpdateStats },
    ) => void
    onResize?: (
        args: { data: unknown; height: number; paper: Paper; width: number },
    ) => void
    onScale?: (
        args: { data: unknown; paper: Paper; sx: number; sy: number },
    ) => void
    onTransform?: (args: { data: unknown; matrix: DOMMatrix; paper: Paper }) => void
    onTranslate?: (
        args: { data: unknown; paper: Paper; tx: number; ty: number },
    ) => void
    onViewPostponed?: (view: View<any, any>, flag: number, paper: Paper) => boolean
    onViewUpdate?: (
        view: View<any, any>,
        flag: number,
        priority: number,
        opt: { [key: string]: any },
        paper: Paper,
    ) => void
    overflow?: boolean
    overwriteDefaultPaperElement?: (
        paperCtx: PaperContext,
    ) => SVGElement | HTMLElement

    On load custom element. If provided, it must return valid HTML or SVG element and it will be replaced with the default paper element. So it overwrite default paper rendering. It is used internally for example to render PaperScroller from joint plus package.

    Type declaration

      • (paperCtx: PaperContext): SVGElement | HTMLElement
      • Parameters

        Returns SVGElement | HTMLElement

    preventContextMenu?: boolean
    preventDefaultBlankAction?: boolean
    preventDefaultViewAction?: boolean
    renderElement?: RenderElement<ElementItem>

    A function that renders the element.

    Note: Jointjs works by default with SVG's so by default renderElement is append inside the SVGElement node. To use HTML elements, you need to use the HTMLNode component or foreignObject element.

    This is called when the data from elementSelector changes.

    Example with global component:

    type BaseElementWithData = InferElement<typeof initialElements>
    function RenderElement({ label }: BaseElementWithData) {
    return <HTMLElement className="node">{label}</HTMLElement>
    }

    Example with local component:


    type BaseElementWithData = InferElement<typeof initialElements>
    const renderElement: RenderElement<BaseElementWithData> = useCallback(
    (element) => <HTMLElement className="node">{element.label}</HTMLElement>,
    []
    )
    restrictTranslate?: boolean | PlainRect | RestrictTranslateCallback
    routerNamespace?: any
    scale?: number

    The scale of the paper. It's useful to create for example a zoom feature or minimap Paper.

    snapLabels?: boolean
    snapLinks?: boolean | SnapLinksOptions
    snapLinksSelf?: boolean | { distance: number }
    sorting?: sorting
    store?: Store

    Store is build around graph, it handles react updates and states, it can be created separately and passed to the provider via createStore function.

    createStore

    style?: CSSProperties

    The style of the paper element.

    tagName?: string
    theme?: string
    useHTMLOverlay?: boolean

    Enabled if renderElements is render to pure HTML elements. By default, joint/react renderElements to SVG elements, so for using HTML elements without this prop, you need to use foreignObject element.

    false
    
    validateConnection?: (
        cellViewS: CellView,
        magnetS: SVGElement,
        cellViewT: CellView,
        magnetT: SVGElement,
        end: LinkEnd,
        linkView: LinkView,
    ) => boolean
    validateEmbedding?: (
        this: Paper,
        childView: ElementView,
        parentView: ElementView,
    ) => boolean
    validateMagnet?: (cellView: CellView, magnet: SVGElement, evt: Event) => boolean
    validateUnembedding?: (this: Paper, childView: ElementView) => boolean
    viewport?: null | ViewportCallback
    width?: Dimension