Skip to content

Chart Elements

@ripl/charts

Specialized rendering elements for charts (Ribbon, SankeyLink).

Overview

Classes: Ribbon · SankeyLinkPath

Interfaces: RibbonState · SankeyLinkState

Functions: createRibbon · elementIsRibbon · createSankeyLink · elementIsSankeyLink

Ribbon class

A chord diagram ribbon connecting two arc segments with quadratic Bézier curves through the center.

ts
class Ribbon extends Shape2D<RibbonState>

Constructor:

Parameters:

NameTypeDescription
optionsShape2DOptions&lt;RibbonState&gt;

Properties:

PropertyTypeDescription
cxnumber
cynumber
radiusnumber
sourceStartnumber
sourceEndnumber
targetStartnumber
targetEndnumber
autoStrokeboolean
autoFillboolean
clipboolean
idstring
readonly typestring
readonly classListSet&lt;string&gt;
abstractboolean
pointerEventsElementPointerEvents
parentGroup&lt;ElementEventMap&gt; | undefined
dataunknown
renderDepthnumber | undefined
directionDirection | undefined
fillstring | undefined
filterstring | undefined
fontstring | undefined
opacitynumber | undefined
globalCompositeOperationunknown
lineCapLineCap | undefined
lineDashnumber[] | undefined
lineDashOffsetnumber | undefined
lineJoinLineJoin | undefined
lineWidthnumber | undefined
miterLimitnumber | undefined
shadowBlurnumber | undefined
shadowColorstring | undefined
shadowOffsetXnumber | undefined
shadowOffsetYnumber | undefined
strokestring | undefined
textAlignTextAlignment | undefined
textBaselineTextBaseline | undefined
zIndexnumber
translateXnumber | undefined
translateYnumber | undefined
transformScaleXnumber | undefined
transformScaleYnumber | undefined
rotationRotation | undefined
transformOriginXTransformOrigin | undefined
transformOriginYTransformOrigin | undefined

Methods:

getBoundingBox(): Box

Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.

render(context: Context&lt;Element&gt;): void

Renders this shape by creating a path, invoking the callback, and automatically applying fill/stroke or clipping.

Parameters:

NameTypeDescription
contextContext&lt;Element&gt;

intersectsWith(x: number, y: number, options: Partial&lt;ElementIntersectionOptions&gt; \| undefined): boolean

Tests whether a point intersects this shape using path-based fill and stroke hit testing.

Parameters:

NameTypeDescription
xnumber
ynumber
optionsPartial&lt;ElementIntersectionOptions&gt; | undefined

on(event: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler to the given event type and returns a disposable for cleanup.

Parameters:

NameTypeDescription
eventTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

clone(): Element&lt;RibbonState, ElementEventMap&gt;

Creates a shallow clone of this element with the same id, classes, and state.

interpolate(newState: Partial&lt;ElementInterpolationState&lt;RibbonState&gt;&gt;, interpolators: Partial&lt;ElementInterpolators&lt;RibbonState&gt;&gt;): Interpolator&lt;void&gt;

Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.

Parameters:

NameTypeDescription
newStatePartial&lt;ElementInterpolationState&lt;RibbonState&gt;&gt;
interpolatorsPartial&lt;ElementInterpolators&lt;RibbonState&gt;&gt;

destroy(): void

Emits a destroyed event, clears all listeners, and disposes retained resources.

has(type: keyof ElementEventMap): boolean

Returns whether there are any listeners registered for the given event type.

Parameters:

NameTypeDescription
typekeyof ElementEventMap

off(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;): void

Removes a previously registered handler for the given event type.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;

once(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler that is automatically removed after it fires once.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

emit(event: TEvent): TEvent

Emits an event, invoking all matching handlers and bubbling to the parent if applicable.

Parameters:

NameTypeDescription
eventTEvent

SankeyLinkPath class

A curved Sankey link shape rendered as a cubic Bézier curve between source and target points.

ts
class SankeyLinkPath extends Shape2D<SankeyLinkState>

Constructor:

Parameters:

NameTypeDescription
optionsShape2DOptions&lt;SankeyLinkState&gt;

Properties:

PropertyTypeDescription
sxnumber
synumber
txnumber
tynumber
autoStrokeboolean
autoFillboolean
clipboolean
idstring
readonly typestring
readonly classListSet&lt;string&gt;
abstractboolean
pointerEventsElementPointerEvents
parentGroup&lt;ElementEventMap&gt; | undefined
dataunknown
renderDepthnumber | undefined
directionDirection | undefined
fillstring | undefined
filterstring | undefined
fontstring | undefined
opacitynumber | undefined
globalCompositeOperationunknown
lineCapLineCap | undefined
lineDashnumber[] | undefined
lineDashOffsetnumber | undefined
lineJoinLineJoin | undefined
lineWidthnumber | undefined
miterLimitnumber | undefined
shadowBlurnumber | undefined
shadowColorstring | undefined
shadowOffsetXnumber | undefined
shadowOffsetYnumber | undefined
strokestring | undefined
textAlignTextAlignment | undefined
textBaselineTextBaseline | undefined
zIndexnumber
translateXnumber | undefined
translateYnumber | undefined
transformScaleXnumber | undefined
transformScaleYnumber | undefined
rotationRotation | undefined
transformOriginXTransformOrigin | undefined
transformOriginYTransformOrigin | undefined

Methods:

getBoundingBox(): Box

Returns the axis-aligned bounding box for this element. Override in subclasses for accurate geometry.

render(context: Context&lt;Element&gt;): void

Renders this shape by creating a path, invoking the callback, and automatically applying fill/stroke or clipping.

Parameters:

NameTypeDescription
contextContext&lt;Element&gt;

intersectsWith(x: number, y: number, options: Partial&lt;ElementIntersectionOptions&gt; \| undefined): boolean

Tests whether a point intersects this shape using path-based fill and stroke hit testing.

Parameters:

NameTypeDescription
xnumber
ynumber
optionsPartial&lt;ElementIntersectionOptions&gt; | undefined

on(event: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler to the given event type and returns a disposable for cleanup.

Parameters:

NameTypeDescription
eventTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

clone(): Element&lt;SankeyLinkState, ElementEventMap&gt;

Creates a shallow clone of this element with the same id, classes, and state.

interpolate(newState: Partial&lt;ElementInterpolationState&lt;SankeyLinkState&gt;&gt;, interpolators: Partial&lt;ElementInterpolators&lt;SankeyLinkState&gt;&gt;): Interpolator&lt;void&gt;

Creates an interpolator that transitions from the current state towards the target state, supporting keyframes and custom interpolator overrides.

Parameters:

NameTypeDescription
newStatePartial&lt;ElementInterpolationState&lt;SankeyLinkState&gt;&gt;
interpolatorsPartial&lt;ElementInterpolators&lt;SankeyLinkState&gt;&gt;

destroy(): void

Emits a destroyed event, clears all listeners, and disposes retained resources.

has(type: keyof ElementEventMap): boolean

Returns whether there are any listeners registered for the given event type.

Parameters:

NameTypeDescription
typekeyof ElementEventMap

off(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;): void

Removes a previously registered handler for the given event type.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;

once(type: TEvent, handler: EventHandler&lt;ElementEventMap[TEvent]&gt;, options: EventSubscriptionOptions \| undefined): Disposable

Subscribes a handler that is automatically removed after it fires once.

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ElementEventMap[TEvent]&gt;
optionsEventSubscriptionOptions | undefined

emit(event: TEvent): TEvent

Emits an event, invoking all matching handlers and bubbling to the parent if applicable.

Parameters:

NameTypeDescription
eventTEvent

RibbonState interface

State interface for a ribbon shape connecting two arc segments via quadratic curves.

ts
interface RibbonState extends BaseElementState {
    cx: number;
    cy: number;
    radius: number;
    sourceStart: number;
    sourceEnd: number;
    targetStart: number;
    targetEnd: number;
}

Properties:

PropertyTypeDescription
cxnumber
cynumber
radiusnumber
sourceStartnumber
sourceEndnumber
targetStartnumber
targetEndnumber
fill?string | undefined
filter?string | undefined
direction?Direction | undefined
font?string | undefined
fontKerning?FontKerning | undefined
opacity?number | undefined
globalCompositeOperation?unknown
lineCap?LineCap | undefined
lineDash?number[] | undefined
lineDashOffset?number | undefined
lineJoin?LineJoin | undefined
lineWidth?number | undefined
miterLimit?number | undefined
shadowBlur?number | undefined
shadowColor?string | undefined
shadowOffsetX?number | undefined
shadowOffsetY?number | undefined
stroke?string | undefined
textAlign?TextAlignment | undefined
textBaseline?TextBaseline | undefined
zIndex?number | undefined
translateX?number | undefined
translateY?number | undefined
transformScaleX?number | undefined
transformScaleY?number | undefined
rotation?Rotation | undefined
transformOriginX?TransformOrigin | undefined
transformOriginY?TransformOrigin | undefined

SankeyLinkState interface

State interface for a Sankey link, defining source and target endpoint coordinates.

ts
interface SankeyLinkState extends BaseElementState {
    sx: number;
    sy: number;
    tx: number;
    ty: number;
}

Properties:

PropertyTypeDescription
sxnumber
synumber
txnumber
tynumber
fill?string | undefined
filter?string | undefined
direction?Direction | undefined
font?string | undefined
fontKerning?FontKerning | undefined
opacity?number | undefined
globalCompositeOperation?unknown
lineCap?LineCap | undefined
lineDash?number[] | undefined
lineDashOffset?number | undefined
lineJoin?LineJoin | undefined
lineWidth?number | undefined
miterLimit?number | undefined
shadowBlur?number | undefined
shadowColor?string | undefined
shadowOffsetX?number | undefined
shadowOffsetY?number | undefined
stroke?string | undefined
textAlign?TextAlignment | undefined
textBaseline?TextBaseline | undefined
zIndex?number | undefined
translateX?number | undefined
translateY?number | undefined
transformScaleX?number | undefined
transformScaleY?number | undefined
rotation?Rotation | undefined
transformOriginX?TransformOrigin | undefined
transformOriginY?TransformOrigin | undefined

createRibbon function

Factory function that creates a new Ribbon instance.

ts
function createRibbon(...options: ConstructorParameters<typeof Ribbon>)

Parameters:

NameTypeDescription
options[options: Shape2DOptions&lt;RibbonState&gt;]

Returns: Ribbon


elementIsRibbon function

Type guard that checks whether a value is a Ribbon instance.

ts
function elementIsRibbon(value: unknown): value is Ribbon

Parameters:

NameTypeDescription
valueunknown

Returns: boolean


Factory function that creates a new SankeyLinkPath instance.

ts
function createSankeyLink(...options: ConstructorParameters<typeof SankeyLinkPath>)

Parameters:

NameTypeDescription
options[options: Shape2DOptions&lt;SankeyLinkState&gt;]

Returns: SankeyLinkPath


Type guard that checks whether a value is a SankeyLinkPath instance.

ts
function elementIsSankeyLink(value: unknown): value is SankeyLinkPath

Parameters:

NameTypeDescription
valueunknown

Returns: boolean