API reference
Every public class, method, and event in @codexo/exojs. Generated from source.
classHTMLText
Text node that renders arbitrary HTML+CSS into a canvas texture via an SVG `<foreignObject>` pass and displays the result as a textured quad. Full CSS typography and rich markup are supported. External resources (`<img src>`, `background-image: url(...)`) are **blocked** by browsers when loading SVG blob-URIs — inline those as base-64 data URIs. Custom web fonts must be registered with addFont before use; pass the raw font bytes (from BinaryAsset or a plain `fetch`): ```ts const bytes = await loader.load(BinaryAsset, 'roboto.woff2'); htmlText.addFont('Roboto', bytes, 'woff2'); ``` The HTML must be valid XHTML (tags closed, `&` for `&`, etc.) because it is embedded inside an XML document.
import { HTMLText } from '@codexo/exojs' Text node that renders arbitrary HTML+CSS into a canvas texture via an SVG `\<foreignObject>` pass and displays the result as a textured quad.
Full CSS typography and rich markup are supported. External resources (`\<img src>`, `background-image: url(...)`) are **blocked** by browsers when loading SVG blob-URIs — inline those as base-64 data URIs.
Custom web fonts must be registered with addFont before use; pass the raw font bytes (from BinaryAsset or a plain `fetch`):
```ts const bytes = await loader.load(BinaryAsset, 'roboto.woff2'); htmlText.addFont('Roboto', bytes, 'woff2'); ```
The HTML must be valid XHTML (tags closed, `&` for `&`, etc.) because it is embedded inside an XML document.
new(html: string, options: HTMLTextOptions): HTMLText _invalidateBoundsCascade(): void _invalidateChildrenTransform(): void _invalidateSubtreeTransform(): void addChild(children: RenderNode[]): this addChildAt(child: RenderNode, index: number): this addFilter(filter: Filter): this addFont(family: string, data: ArrayBuffer, format: FontFormat): this clearFilters(): this collidesWith(target: Collidable): CollisionResponse | null contains(x: number, y: number): boolean destroy(): void getBounds(): Rectangle getChildAt(index: number): RenderNode getChildIndex(child: RenderNode): number getGlobalTransform(): Matrix getLocalBounds(): Rectangle getNormals(): Vector[] getTransform(): Matrix intersectsWith(target: Collidable): boolean invalidateCache(): this inView(view: View): boolean move(x: number, y: number): this project(axis: Vector, result: Interval): Interval removeChild(child: RenderNode): this removeChildAt(index: number): this removeChildren(begin: number, end: number): this removeFilter(filter: Filter): this removeFont(family: string): this render(backend: RenderBackend): this resize(width: number, height: number): this rotate(degrees: number): this setAnchor(x: number, y: number): this setChildIndex(child: RenderNode, index: number): this setOrigin(x: number, y: number): this setPosition(x: number, y: number): this setRotation(degrees: number): this setScale(x: number, y: number): this setSkew(x: number, y: number): this swapChildren(firstChild: RenderNode, secondChild: RenderNode): this updateBounds(): this updateParentTransform(): this updateTransform(): this setInternalSpriteFactory(factory: object | null): void clip: boolean clipShape: Rectangle | Geometry | null collisionType: CollisionType cursor: string | null draggable: boolean flags: Flags<SceneNodeTransformFlags> preserveDrawOrder: boolean anchor: ObservableVector bottom: number cacheAsBitmap: boolean children: RenderNode[] css: string cullable: boolean filters: readonly Filter[] height: number html: string interactive: boolean isAlignedBox: boolean left: number mask: MaskSource origin: ObservableVector parent: Container | null position: ObservableVector ready: Promise<void> resolution: number right: number rotation: number scale: ObservableVector skewX: number skewY: number top: number visible: boolean width: number x: number y: number zIndex: number onDrag: Signal<[InteractionEvent]> onDragEnd: Signal<[InteractionEvent]> onDragStart: Signal<[InteractionEvent]> onPointerDown: Signal<[InteractionEvent]> onPointerMove: Signal<[InteractionEvent]> onPointerOut: Signal<[InteractionEvent]> onPointerOver: Signal<[InteractionEvent]> onPointerTap: Signal<[InteractionEvent]> onPointerUp: Signal<[InteractionEvent]>