Skip to main content
Version: 4.3

ElementModel

The element class @joint/react registers and uses by default for every element you add to the graph. Its markup carries a dedicated <g> group (the '__portal__' selector) where your RenderElement output is mounted, so React content renders beneath the element's ports and highlighters. Extend it to customize the markup or default attributes, or supply any dia.Element subclass that implements PortalHostCell to host React content yourself.

Example​

import { ElementModel } from '@joint/react';

const element = new ElementModel({
id: '1',
position: { x: 10, y: 20 },
size: { width: 100, height: 50 },
});

Extends​

  • Element<Attributes>

Type Parameters​

Type ParameterDefault type
Attributes extends dia.Element.Attributesdia.Element.Attributes

Implements​

Constructors​

Constructor​

new ElementModel<Attributes>(attributes?, opt?): ElementModel<Attributes>;

Parameters​

ParameterType
attributes?_DeepPartial<_DeepRequired<Attributes>>
opt?ConstructorOptions

Returns​

ElementModel<Attributes>

Methods​

defaults()​

defaults(): Attributes;

Default attributes applied to every ElementModel: the 'element' type, a 0x0 size, and an empty data object.

Returns​

Attributes

The default attributes.

Properties​

markup​

markup: MarkupJSON;

Markup with a single <g> group ('__portal__') that hosts the React portal. JointJS appends ports and highlighters after this group, so they paint on top of your React content.

portalSelector​

portalSelector: string = PORTAL_SELECTOR;

Selector of the node in this cell's view where @joint/react mounts your RenderElement content, the '__portal__' <g> group.