Skip to content

Context

@ripl/core

Canvas rendering context and low-level drawing API.

Overview

Classes: ContextPath · ContextText · Context · CanvasPath · CanvasContext

Interfaces: RenderElementIntersectionOptions · RenderElement · ContextEventMap · ContextOptions · ContextElement · BaseState

Type Aliases: Direction · FontKerning · LineCap · LineJoin · TextAlignment · TextBaseline · FillRule · TransformOrigin · Rotation · RenderElementPointerEvents · TextOptions · MeasureTextOptions

Functions: resolveRotation · resolveTransformOrigin · measureText · typeIsContext · createContext

Constants: getRefContext · scaleDPR

ContextPath class

A virtual path element used to record drawing commands; subclassed by Canvas and SVG implementations.

ts
class ContextPath implements ContextElement

Constructor:

Parameters:

NameTypeDescription
id?string

Properties:

PropertyTypeDescription
readonly idstring

Methods:

arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean \| undefined): void

Parameters:

NameTypeDescription
xnumber
ynumber
radiusnumber
startAnglenumber
endAnglenumber
counterclockwiseboolean | undefined

arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void

Parameters:

NameTypeDescription
x1number
y1number
x2number
y2number
radiusnumber

circle(x: number, y: number, radius: number): void

Parameters:

NameTypeDescription
xnumber
ynumber
radiusnumber

bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void

Parameters:

NameTypeDescription
cp1xnumber
cp1ynumber
cp2xnumber
cp2ynumber
xnumber
ynumber

closePath(): void

ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise: boolean \| undefined): void

Parameters:

NameTypeDescription
xnumber
ynumber
radiusXnumber
radiusYnumber
rotationnumber
startAnglenumber
endAnglenumber
counterclockwiseboolean | undefined

lineTo(x: number, y: number): void

Parameters:

NameTypeDescription
xnumber
ynumber

moveTo(x: number, y: number): void

Parameters:

NameTypeDescription
xnumber
ynumber

quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void

Parameters:

NameTypeDescription
cpxnumber
cpynumber
xnumber
ynumber

rect(x: number, y: number, width: number, height: number): void

Parameters:

NameTypeDescription
xnumber
ynumber
widthnumber
heightnumber

roundRect(x: number, y: number, width: number, height: number, radii: BorderRadius \| undefined): void

Parameters:

NameTypeDescription
xnumber
ynumber
widthnumber
heightnumber
radiiBorderRadius | undefined

polyline(points: Point[]): void

Parameters:

NameTypeDescription
pointsPoint[]

addPath(path: ContextPath): void

Parameters:

NameTypeDescription
pathContextPath

ContextText class

A virtual text element capturing position, content, and optional path-based text layout.

ts
class ContextText implements ContextElement

Constructor:

Parameters:

NameTypeDescription
`{
    x,
    y,
    content,
    maxWidth,
    pathData,
    startOffset,
    id = `text-${stringUniqueId()}`,
}` | `TextOptions` |  |

Properties:

PropertyTypeDescription
readonly idstring
xnumber
ynumber
contentstring
maxWidthnumber | undefined
pathDatastring | undefined
startOffsetnumber | undefined

Context class

Abstract rendering context providing a unified API for Canvas and SVG, with state management, coordinate scaling, and interaction handling.

ts
class Context<TElement extends Element = Element> extends EventBus<ContextEventMap> implements BaseState

Constructor:

Parameters:

NameTypeDescription
typestring
targetstring | HTMLElement
elementTElement
options?ContextOptions | undefined

Properties:

PropertyTypeDescription
readonly typestring
readonly rootHTMLElement
readonly elementTElement
bufferboolean
widthnumber
heightnumber
scaleXScale&lt;number, number&gt;
scaleYScale&lt;number, number&gt;
scaleDPRScale&lt;number, number&gt;
renderElementRenderElement | undefined
renderedElementsRenderElement[]
currentRenderElementRenderElement | undefined
fillstring
filterstring
directionDirection
fontstring
fontKerningFontKerning
opacitynumber
globalCompositeOperationunknown
lineCapLineCap
lineDashnumber[]
lineDashOffsetnumber
lineJoinLineJoin
lineWidthnumber
miterLimitnumber
shadowBlurnumber
shadowColorstring
shadowOffsetXnumber
shadowOffsetYnumber
strokestring
textAlignTextAlignment
textBaselineTextBaseline
zIndexnumber
translateXnumber
translateYnumber
transformScaleXnumber
transformScaleYnumber
rotationRotation
transformOriginXTransformOrigin
transformOriginYTransformOrigin
parentEventBus&lt;ContextEventMap&gt; | undefined

Methods:

save(): void

Pushes the current state onto the stack and resets to defaults.

restore(): void

Restores the most recently saved state from the stack.

batch(body: () =&gt; TResult): TResult

Executes a callback within a save/restore pair, returning the callback's result.

Parameters:

NameTypeDescription
body() =&gt; TResult

clear(): void

Clears the entire rendering surface.

reset(): void

Resets the context to its initial state.

invalidateTrackedElements(event: string): void

Clears the cached list of tracked elements for interaction, forcing a rebuild on the next hit test.

Parameters:

NameTypeDescription
eventstring

markRenderStart(): void

Signals the start of a render pass; resets the rendered-elements list at depth 0.

markRenderEnd(): void

Signals the end of a render pass.

rotate(angle: number): void

Applies a rotation transformation.

Parameters:

NameTypeDescription
anglenumber

scale(x: number, y: number): void

Applies a scale transformation.

Parameters:

NameTypeDescription
xnumber
ynumber

translate(x: number, y: number): void

Applies a translation transformation.

Parameters:

NameTypeDescription
xnumber
ynumber

setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void

Parameters:

NameTypeDescription
anumber
bnumber
cnumber
dnumber
enumber
fnumber

transform(a: number, b: number, c: number, d: number, e: number, f: number): void

Parameters:

NameTypeDescription
anumber
bnumber
cnumber
dnumber
enumber
fnumber

measureText(text: string, font: string \| undefined): TextMetrics

Measures text dimensions using the context's current font or an optional override.

Parameters:

NameTypeDescription
textstring
fontstring | undefined

createPath(id: string \| undefined): ContextPath

Creates a new path element, optionally reusing an id for SVG diffing efficiency.

Parameters:

NameTypeDescription
idstring | undefined

createText(options: TextOptions): ContextText

Creates a new text element from the given options.

Parameters:

NameTypeDescription
optionsTextOptions

drawImage(image: CanvasImageSource, x: number, y: number, width: number \| undefined, height: number \| undefined): void

Draws an image onto the rendering surface at the given position and optional size.

Parameters:

NameTypeDescription
imageCanvasImageSource
xnumber
ynumber
widthnumber | undefined
heightnumber | undefined

applyClip(path: ContextPath, fillRule: FillRule \| undefined): void

Clips subsequent drawing operations to the given path.

Parameters:

NameTypeDescription
pathContextPath
fillRuleFillRule | undefined

applyFill(path: ContextElement, fillRule: FillRule \| undefined): void

Fills the given path or text element using the current fill style.

Parameters:

NameTypeDescription
pathContextElement
fillRuleFillRule | undefined

applyStroke(path: ContextElement): void

Strokes the given path or text element using the current stroke style.

Parameters:

NameTypeDescription
pathContextElement

isPointInPath(path: ContextPath, x: number, y: number, fillRule: FillRule \| undefined): boolean

Tests whether a point is inside the filled region of a path.

Parameters:

NameTypeDescription
pathContextPath
xnumber
ynumber
fillRuleFillRule | undefined

isPointInStroke(path: ContextPath, x: number, y: number): boolean

Tests whether a point is on the stroked outline of a path.

Parameters:

NameTypeDescription
pathContextPath
xnumber
ynumber

enableInteraction(): void

Enables DOM interaction events (mouse enter, leave, move, click, drag) with element hit testing.

disableInteraction(): void

Disables DOM interaction events and clears the active element set.

destroy(): void

Destroys the context, removing the DOM element and disposing all resources.

has(type: keyof ContextEventMap): boolean

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

Parameters:

NameTypeDescription
typekeyof ContextEventMap

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

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

Parameters:

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

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

Removes a previously registered handler for the given event type.

Parameters:

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

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

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

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ContextEventMap[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

CanvasPath class

Canvas-specific path implementation backed by a native Path2D object.

ts
class CanvasPath extends ContextPath

Constructor:

Parameters:

NameTypeDescription
id?string | undefined

Properties:

PropertyTypeDescription
readonly refPath2D
readonly idstring

Methods:

arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean \| undefined): void

Parameters:

NameTypeDescription
xnumber
ynumber
radiusnumber
startAnglenumber
endAnglenumber
counterclockwiseboolean | undefined

arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void

Parameters:

NameTypeDescription
x1number
y1number
x2number
y2number
radiusnumber

circle(x: number, y: number, radius: number): void

Parameters:

NameTypeDescription
xnumber
ynumber
radiusnumber

bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void

Parameters:

NameTypeDescription
cp1xnumber
cp1ynumber
cp2xnumber
cp2ynumber
xnumber
ynumber

closePath(): void

ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise: boolean \| undefined): void

Parameters:

NameTypeDescription
xnumber
ynumber
radiusXnumber
radiusYnumber
rotationnumber
startAnglenumber
endAnglenumber
counterclockwiseboolean | undefined

lineTo(x: number, y: number): void

Parameters:

NameTypeDescription
xnumber
ynumber

moveTo(x: number, y: number): void

Parameters:

NameTypeDescription
xnumber
ynumber

quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void

Parameters:

NameTypeDescription
cpxnumber
cpynumber
xnumber
ynumber

rect(x: number, y: number, width: number, height: number): void

Parameters:

NameTypeDescription
xnumber
ynumber
widthnumber
heightnumber

roundRect(x: number, y: number, width: number, height: number, radii: BorderRadius \| undefined): void

Parameters:

NameTypeDescription
xnumber
ynumber
widthnumber
heightnumber
radiiBorderRadius | undefined

addPath(path: ContextPath): void

Parameters:

NameTypeDescription
pathContextPath

polyline(points: Point[]): void

Parameters:

NameTypeDescription
pointsPoint[]

CanvasContext class

Canvas 2D rendering context implementation, mapping the unified API to CanvasRenderingContext2D.

ts
class CanvasContext extends Context<HTMLCanvasElement>

Constructor:

Parameters:

NameTypeDescription
targetstring | HTMLElement
options?ContextOptions | undefined

Properties:

PropertyTypeDescription
fillstring
filterstring
directionDirection
fontstring
fontKerningFontKerning
opacitynumber
globalCompositeOperationunknown
lineCapLineCap
lineDashnumber[]
lineDashOffsetnumber
lineJoinLineJoin
lineWidthnumber
miterLimitnumber
shadowBlurnumber
shadowColorstring
shadowOffsetXnumber
shadowOffsetYnumber
strokestring
textAlignTextAlignment
textBaselineTextBaseline
readonly typestring
readonly rootHTMLElement
readonly elementHTMLCanvasElement
bufferboolean
widthnumber
heightnumber
scaleXScale&lt;number, number&gt;
scaleYScale&lt;number, number&gt;
scaleDPRScale&lt;number, number&gt;
renderElementRenderElement | undefined
renderedElementsRenderElement[]
currentRenderElementRenderElement | undefined
zIndexnumber
translateXnumber
translateYnumber
transformScaleXnumber
transformScaleYnumber
rotationRotation
transformOriginXTransformOrigin
transformOriginYTransformOrigin
parentEventBus&lt;ContextEventMap&gt; | undefined

Methods:

save(): void

Pushes the current state onto the stack and resets to defaults.

restore(): void

Restores the most recently saved state from the stack.

clear(): void

Clears the entire rendering surface.

reset(): void

Resets the context to its initial state.

rotate(angle: number): void

Applies a rotation transformation.

Parameters:

NameTypeDescription
anglenumber

scale(x: number, y: number): void

Applies a scale transformation.

Parameters:

NameTypeDescription
xnumber
ynumber

translate(x: number, y: number): void

Applies a translation transformation.

Parameters:

NameTypeDescription
xnumber
ynumber

setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void

Parameters:

NameTypeDescription
anumber
bnumber
cnumber
dnumber
enumber
fnumber

transform(a: number, b: number, c: number, d: number, e: number, f: number): void

Parameters:

NameTypeDescription
anumber
bnumber
cnumber
dnumber
enumber
fnumber

measureText(text: string, font: string \| undefined): TextMetrics

Measures text dimensions using the context's current font or an optional override.

Parameters:

NameTypeDescription
textstring
fontstring | undefined

createPath(id: string \| undefined): CanvasPath

Creates a new path element, optionally reusing an id for SVG diffing efficiency.

Parameters:

NameTypeDescription
idstring | undefined

applyClip(path: CanvasPath, fillRule: FillRule \| undefined): void

Clips subsequent drawing operations to the given path.

Parameters:

NameTypeDescription
pathCanvasPath
fillRuleFillRule | undefined

drawImage(image: CanvasImageSource, x: number, y: number, width: number \| undefined, height: number \| undefined): void

Draws an image onto the rendering surface at the given position and optional size.

Parameters:

NameTypeDescription
imageCanvasImageSource
xnumber
ynumber
widthnumber | undefined
heightnumber | undefined

applyFill(element: ContextText \| CanvasPath, fillRule: FillRule \| undefined): void

Fills the given path or text element using the current fill style.

Parameters:

NameTypeDescription
elementContextText | CanvasPath
fillRuleFillRule | undefined

applyStroke(element: ContextText \| CanvasPath): void

Strokes the given path or text element using the current stroke style.

Parameters:

NameTypeDescription
elementContextText | CanvasPath

isPointInPath(path: CanvasPath, x: number, y: number, fillRule: FillRule \| undefined): boolean

Tests whether a point is inside the filled region of a path.

Parameters:

NameTypeDescription
pathCanvasPath
xnumber
ynumber
fillRuleFillRule | undefined

isPointInStroke(path: CanvasPath, x: number, y: number): boolean

Tests whether a point is on the stroked outline of a path.

Parameters:

NameTypeDescription
pathCanvasPath
xnumber
ynumber

batch(body: () =&gt; TResult): TResult

Executes a callback within a save/restore pair, returning the callback's result.

Parameters:

NameTypeDescription
body() =&gt; TResult

invalidateTrackedElements(event: string): void

Clears the cached list of tracked elements for interaction, forcing a rebuild on the next hit test.

Parameters:

NameTypeDescription
eventstring

markRenderStart(): void

Signals the start of a render pass; resets the rendered-elements list at depth 0.

markRenderEnd(): void

Signals the end of a render pass.

createText(options: TextOptions): ContextText

Creates a new text element from the given options.

Parameters:

NameTypeDescription
optionsTextOptions

enableInteraction(): void

Enables DOM interaction events (mouse enter, leave, move, click, drag) with element hit testing.

disableInteraction(): void

Disables DOM interaction events and clears the active element set.

destroy(): void

Destroys the context, removing the DOM element and disposing all resources.

has(type: keyof ContextEventMap): boolean

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

Parameters:

NameTypeDescription
typekeyof ContextEventMap

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

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

Parameters:

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

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

Removes a previously registered handler for the given event type.

Parameters:

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

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

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

Parameters:

NameTypeDescription
typeTEvent
handlerEventHandler&lt;ContextEventMap[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

RenderElementIntersectionOptions interface

Options for render element intersection testing.

ts
interface RenderElementIntersectionOptions {
    isPointer: boolean;
}

Properties:

PropertyTypeDescription
isPointerboolean

RenderElement interface

Minimal interface for any element that can be rendered and hit-tested by a context.

ts
interface RenderElement {
    readonly id: string;
    parent?: RenderElement;
    abstract: boolean;
    pointerEvents: RenderElementPointerEvents;
    renderDepth?: number;
    zIndex: number;
    getBoundingBox?(): Box;
    has(event: string): boolean;
    intersectsWith(x: number, y: number, options?: Partial<RenderElementIntersectionOptions>): boolean;
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    emit(type: string, data: any): void;
}

Properties:

PropertyTypeDescription
idstring
parent?RenderElement | undefined
abstractboolean
pointerEventsRenderElementPointerEvents
renderDepth?number | undefined
zIndexnumber
getBoundingBox?(() =&gt; Box) | undefined
has(event: string) =&gt; boolean
intersectsWith(x: number, y: number, options?: Partial&lt;RenderElementIntersectionOptions&gt;) =&gt; boolean
emit(type: string, data: any) =&gt; void

ContextEventMap interface

Event map for a rendering context, including resize and pointer events.

ts
interface ContextEventMap extends EventMap {
    resize: null;
    mouseenter: null;
    mouseleave: null;
    mousemove: {
        x: number;
        y: number;
    };
    click: {
        x: number;
        y: number;
    };
    dragstart: {
        x: number;
        y: number;
    };
    drag: {
        x: number;
        y: number;
        startX: number;
        startY: number;
        deltaX: number;
        deltaY: number;
    };
    dragend: {
        x: number;
        y: number;
        startX: number;
        startY: number;
        deltaX: number;
        deltaY: number;
    };
}

Properties:

PropertyTypeDescription
resizenull
mouseenternull
mouseleavenull
mousemove{ x: number; y: number; }
click{ x: number; y: number; }
dragstart{ x: number; y: number; }
drag{ x: number; y: number; startX: number; startY: number; deltaX: number; deltaY: number; }
dragend{ x: number; y: number; startX: number; startY: number; deltaX: number; deltaY: number; }
destroyednull

ContextOptions interface

Options for constructing a rendering context.

ts
interface ContextOptions {
    interactive?: boolean;
    dragThreshold?: number;
}

Properties:

PropertyTypeDescription
interactive?boolean | undefined
dragThreshold?number | undefined

ContextElement interface

Minimal interface for context-level elements (paths, text) identified by a unique id.

ts
interface ContextElement {
    readonly id: string;
}

Properties:

PropertyTypeDescription
idstring

BaseState interface

The full set of visual state properties inherited by every renderable element.

ts
interface BaseState {
    fill: string;
    filter: string;
    direction: Direction;
    font: string;
    fontKerning: FontKerning;
    opacity: number;
    globalCompositeOperation: unknown;
    lineCap: LineCap;
    lineDash: number[];
    lineDashOffset: number;
    lineJoin: LineJoin;
    lineWidth: number;
    miterLimit: number;
    shadowBlur: number;
    shadowColor: string;
    shadowOffsetX: number;
    shadowOffsetY: number;
    stroke: string;
    textAlign: TextAlignment;
    textBaseline: TextBaseline;
    zIndex: number;
    translateX: number;
    translateY: number;
    transformScaleX: number;
    transformScaleY: number;
    rotation: Rotation;
    transformOriginX: TransformOrigin;
    transformOriginY: TransformOrigin;
}

Properties:

PropertyTypeDescription
fillstring
filterstring
directionDirection
fontstring
fontKerningFontKerning
opacitynumber
globalCompositeOperationunknown
lineCapLineCap
lineDashnumber[]
lineDashOffsetnumber
lineJoinLineJoin
lineWidthnumber
miterLimitnumber
shadowBlurnumber
shadowColorstring
shadowOffsetXnumber
shadowOffsetYnumber
strokestring
textAlignTextAlignment
textBaselineTextBaseline
zIndexnumber
translateXnumber
translateYnumber
transformScaleXnumber
transformScaleYnumber
rotationRotation
transformOriginXTransformOrigin
transformOriginYTransformOrigin

Direction type

Text direction for the rendering context.

ts
type Direction = 'inherit' | 'ltr' | 'rtl';

FontKerning type

Font kerning mode for the rendering context.

ts
type FontKerning = 'auto' | 'none' | 'normal';

LineCap type

Line cap style for stroke endpoints.

ts
type LineCap = 'butt' | 'round' | 'square';

LineJoin type

Line join style for stroke corners.

ts
type LineJoin = 'bevel' | 'miter' | 'round';

TextAlignment type

Horizontal text alignment relative to the drawing position.

ts
type TextAlignment = 'center' | 'end' | 'left' | 'right' | 'start';

TextBaseline type

Vertical text baseline used when rendering text.

ts
type TextBaseline = 'alphabetic' | 'bottom' | 'hanging' | 'ideographic' | 'middle' | 'top';

FillRule type

Fill rule algorithm used to determine if a point is inside a path.

ts
type FillRule = 'evenodd' | 'nonzero';

TransformOrigin type

Transform origin value — a numeric pixel offset or a percentage string.

ts
type TransformOrigin = number | string;

Rotation type

Rotation value — a numeric radian value or a string with deg/rad suffix.

ts
type Rotation = number | string;

RenderElementPointerEvents type

Controls which pointer events a render element responds to during hit testing.

ts
type RenderElementPointerEvents = 'none' | 'all' | 'stroke' | 'fill';

TextOptions type

Options for creating a text element within the context.

ts
type TextOptions = {
    id?: string;
    x: number;
    y: number;
    content: string;
    maxWidth?: number;
    pathData?: string;
    startOffset?: number;
};

MeasureTextOptions type

Options for measuring text dimensions.

ts
type MeasureTextOptions = {
    context?: CanvasRenderingContext2D;
    font?: CanvasRenderingContext2D['font'];
};

resolveRotation function

Resolves a rotation value (number, degrees string, or radians string) to radians.

ts
function resolveRotation(value: Rotation): number

Parameters:

NameTypeDescription
valueRotation

Returns: number


resolveTransformOrigin function

Resolves a transform-origin value (number or percentage string) to a pixel offset relative to the given dimension.

ts
function resolveTransformOrigin(value: TransformOrigin, dimension: number): number

Parameters:

NameTypeDescription
valueTransformOrigin
dimensionnumber

Returns: number


measureText function

Measures the dimensions of a text string using an optional font and context override.

ts
function measureText(value: string, options?: MeasureTextOptions): TextMetrics

Parameters:

NameTypeDescription
valuestring
optionsMeasureTextOptions | undefined

Returns: TextMetrics


typeIsContext function

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

ts
function typeIsContext(value: unknown): value is Context

Parameters:

NameTypeDescription
valueunknown

Returns: boolean


createContext function

Creates a Canvas 2D rendering context attached to the given DOM target.

ts
function createContext(target: string | HTMLElement, options?: ContextOptions): Context

Parameters:

NameTypeDescription
targetstring | HTMLElement
optionsContextOptions | undefined

Returns: Context&lt;Element&gt;


getRefContext const

Returns a shared offscreen CanvasRenderingContext2D used for text measurement and default state retrieval.

ts
const getRefContext: CachedFunction<() => CanvasRenderingContext2D>

scaleDPR const

A scale that maps logical pixels to physical device pixels using devicePixelRatio.

ts
const scaleDPR: Scale<number, number>