Skip to main content

ShapeLibraryImpl

Default ShapeLibrary implementation. Use one of these to manage a set of shapes for rendering into your vertices and/or for rendering as a palette from which the user can drag new objects.

Type Parameters​

T​

T extends ObjectData

Constructors​

Constructor​

new ShapeLibraryImpl<T>(shapeSets, options?): ShapeLibraryImpl<T>

ShapeLibrary constructor.

Parameters​

shapeSets​

One or more shape sets to include in the library.

ShapeSet | ShapeSet[]

options?​

ShapeLibraryOptions

Options for the library.

Returns​

ShapeLibraryImpl<T>

Methods​

getCompiledShape()​

getCompiledShape(type, category?): ShapeGeneratorFunction

Gets a compiled version of the given shape, creating and caching it if it does not already exist.

Parameters​

type​

string

Shape type.

category?​

string

Category to use. Defaults to the ID of the first category provided in the shape list.

Returns​

ShapeGeneratorFunction


getShapeDefinition()​

getShapeDefinition(type, set?): RealisedShapeType

Gets the definition for some combination of type and category. May return null.

Parameters​

type​

string

set?​

string

Returns​

RealisedShapeType

Implementation of​

ShapeLibrary.getShapeDefinition


getShapeTemplate()​

getShapeTemplate(type, set): string

Gets the template for the given shape type in the given set. If no template is resolved then we return DEFAULT_TEMPLATE (and log the issue to the console).

Parameters​

type​

string

Shape type

set​

string

Name of set. If not provided, the value of DEFAULT_SET is used as the set name.

Returns​

string


refresh()​

refresh(el, data, labelAttribute, labelPosition): void

Renders any icons found and applies multiline labels, if necessary.

Parameters​

el​

BrowserElement

data​

ObjectData

labelAttribute​

string

labelPosition​

LabelPosition

Returns​

void

Implementation of​

ShapeLibrary.refresh


renderCompiledShape()​

renderCompiledShape(data, strokeWidth?, typeParameter?, categoryParameter?): HTMLElement | SVGElement

Render the given data with the appropriate template. A fill value is set on the resulting element, and the vector-effect attribute is set to 'non scaling stroke', ie. when the shape is scaled due to the element dimensions differing from the viewbox, the stroke does not change.

Parameters​

data​

ObjectData

strokeWidth?​

number

Stroke width to use. This is passed to the underlying template and is taken into account by the shape template (or at least, it should be, because it has a bearing on the quality of the result)

typeParameter?​

string

Optional key to use to look up an object's type. When not provided, the typeParameter from the class is used.

categoryParameter?​

string

Optional key to use to look up an object's category. When not provided, the categoryParameter from the class is used.

Returns​

HTMLElement | SVGElement

Implementation of​

ShapeLibrary.renderCompiledShape