API reference
Every public class, method, and event in @codexo/exojs. Generated from source.
classTextArea
Multi-line text field. It shares the editing core, the platform transport and the theme roles with TextInput, and differs in what the keys mean and in how much of the value is on screen at once: - `Enter` inserts a line break instead of confirming. - `Up` / `Down` move by line, keeping the column the caret last chose, and `PageUp` / `PageDown` move by as many lines as the field shows. - `Home` / `End` go to the ends of the current line, not of the value. - The content scrolls to keep the caret visible, and is clipped to the field. A scrollbar along the right edge shows and drives the vertical position once the value outgrows the field. A line too long for the field wraps at a word boundary. The lines the caret and `Up` / `Down` move through are the LAID-OUT lines, so a wrapped line behaves like the two lines it looks like. Turn `wrap` off for content whose own line breaks are what matters - log output, code - and the field scrolls horizontally instead.
import { TextArea } from '@codexo/exojs'Multi-line text field. It shares the editing core, the platform transport and the theme roles with TextInput, and differs in what the keys mean and in how much of the value is on screen at once:
- `Enter` inserts a line break instead of confirming. - `Up` / `Down` move by line, keeping the column the caret last chose, and `PageUp` / `PageDown` move by as many lines as the field shows. - `Home` / `End` go to the ends of the current line, not of the value. - The content scrolls to keep the caret visible, and is clipped to the field. A scrollbar along the right edge shows and drives the vertical position once the value outgrows the field.
A line too long for the field wraps at a word boundary. The lines the caret and `Up` / `Down` move through are the LAID-OUT lines, so a wrapped line behaves like the two lines it looks like. Turn `wrap` off for content whose own line breaks are what matters - log output, code - and the field scrolls horizontally instead.
new(options: TextAreaOptionsOptions for TextArea.): TextArea_applyAnchor(containerWidth: number, containerHeight: number): void_cascadeTheme(): void_collectContent(builder: RenderPlanBuilder): void_invalidateLayout(): void_invalidatePaint(): void_onChildListChanged(): void_onChildResized(): void_onEnabledChanged(effectiveEnabled: boolean): void_onFocusChanged(focused: boolean): void_onScrollUpdated(): void_onThemeChanged(): void_relayout(): void_repaint(): void_resolveInheritedTheme(): UIThemeSkins for every role, as resolved for a widget._skin(role: UIThemeRoleA themed surface. Roles are per painted surface, not per widget class: a progress bar draws its track and its fill from two independent roles.): UISkinThe look of one widget surface in one state: what it paints, how its text is styled, and the content box its layout works against._trackFocus(): voidanchorIn(root: UIRootA container that carries a UITheme for the subtree below it. Widgets resolve their skins from the nearest themed ancestor, which is how a theme assigned on a U…, anchor: WidgetAnchorAnchor position of a widget within its container's box., offsetX: number, offsetY: number): thisblur(): thisclearFilters(): thiscollect(builder: RenderPlanBuilder, seq?: number): voidcollidesWith(target: CollidableContract for objects that participate in collision detection. Implemented by all concrete shape classes as well as `SceneNode`.): CollisionResponseResult of a successful Collidable.collidesWith call. Contains the two participating shapes, the penetration depth, containment flags, and the minimum-translati… | nullcontains(x: number, y: number): booleandestroy(): voidfocus(): thisgetBounds(out?: RectangleMutable axis-aligned rectangle defined by a top-left origin `(x, y)` and dimensions `(width, height)`. Implements Collidable with full SAT collision response f…): RectangleMutable axis-aligned rectangle defined by a top-left origin `(x, y)` and dimensions `(width, height)`. Implements Collidable with full SAT collision response f…invalidateCache(): thisinvalidateContent(): thismove(x: number, y: number): thisproject(axis: VectorConcrete mutable 2D vector with full AbstractVector arithmetic and Collidable collision support (treated as a point collider). `Vector.temp` provides a shared…, result: IntervalA closed scalar interval `[min, max]` used by the SAT collision solver to represent the projection of a shape onto a separating axis. `Interval.temp` provides…): IntervalA closed scalar interval `[min, max]` used by the SAT collision solver to represent the projection of a shape onto a separating axis. `Interval.temp` provides…removeChildAt(index: number): thisremoveChildren(begin: number, end: number): thisrender(backend: RenderBackend): thisrotate(degrees: number): thisselectAll(): thissetChildIndex(child: RenderNodeSceneNode that can produce visual output. Adds the rendering pipeline features on top of the structural transform/bounds carried by SceneNode: post-process `fi…, index: number): thissetLocalBounds(x: number, y: number, width: number, height: number): thissetOrigin(x: number, y: number): thissetPosition(x: number, y: number): thissetRotation(degrees: number): thissetScale(x: number, y: number): thissetSize(width: number, height: number): thissetSkew(x: number, y: number): thissetTheme(patch: Partial<Readonly<Record<UIThemeRoleA themed surface. Roles are per painted surface, not per widget class: a progress bar draws its track and its fill from two independent roles., Partial<Readonly<Record<UIWidgetStateVisual state a widget paints in. A widget that tracks no interaction stays on `'normal'`; states a skin set leaves undefined fall back to `'normal'`., Partial<UISkinThe look of one widget surface in one state: what it paints, how its text is styled, and the content box its layout works against.>>>>>>> | null): thisswapChildren(firstChild: RenderNodeSceneNode that can produce visual output. Adds the rendering pipeline features on top of the structural transform/bounds carried by SceneNode: post-process `fi…, secondChild: RenderNodeSceneNode that can produce visual output. Adds the rendering pipeline features on top of the structural transform/bounds carried by SceneNode: post-process `fi…): thisupdateBounds(): thisupdateParentTransform(): thisupdateTransform(): thiscursor: null | stringdraggable: booleanfocusable: booleanmodel: TextEditingModelname: null | stringtabIndex: numberbottom: numbercacheAsTexture: booleancacheResolution: TargetResolutionclip: booleanclipShape: GeometryNon-renderable geometry data object used by advanced rendering paths. Geometry owns only vertex/index data and its layout metadata; it is not a scene node, has… | RectangleMutable axis-aligned rectangle defined by a top-left origin `(x, y)` and dimensions `(width, height)`. Implements Collidable with full SAT collision response f… | nullcontentInsets: { bottom: number; left: number; right: number; top: number }cullable: booleandestroyed: booleanediting: booleaneffectiveEnabled: booleanenabled: booleanfilter: (candidate: string) => boolean | nullfocused: booleanheight: numberinteractive: booleanisAlignedBox: booleanleft: numberlineCount: numbermaxLength: null | numberplaceholder: stringpreserveDrawOrder: booleanreadOnly: booleanrenderedText: stringright: numberrotation: numberscrollOffsetY: numberselectionEnd: numberselectionStart: numberskewX: numberskewY: numberthemeOverrides: Partial<Readonly<Record<UIThemeRoleA themed surface. Roles are per painted surface, not per widget class: a progress bar draws its track and its fill from two independent roles., Partial<Readonly<Record<UIWidgetStateVisual state a widget paints in. A widget that tracks no interaction stays on `'normal'`; states a skin set leaves undefined fall back to `'normal'`., Partial<UISkinThe look of one widget surface in one state: what it paints, how its text is styled, and the content box its layout works against.>>>>>>> | nulltop: numberuiHeight: numberuiWidth: numbervalue: stringvisible: booleanwidth: numberwrap: booleanx: numbery: numberzIndex: numberonBlur: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[RenderNodeSceneNode that can produce visual output. Adds the rendering pipeline features on top of the structural transform/bounds carried by SceneNode: post-process `fi…]>onContextMenu: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[InteractionEventDOM-Event-shaped envelope dispatched by InteractionSystem to interactive scene nodes. Bubbles up the *entire* parent chain - `target` stays pinned to the hit-d…]>onDrag: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[InteractionEventDOM-Event-shaped envelope dispatched by InteractionSystem to interactive scene nodes. Bubbles up the *entire* parent chain - `target` stays pinned to the hit-d…]>onDragEnd: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[InteractionEventDOM-Event-shaped envelope dispatched by InteractionSystem to interactive scene nodes. Bubbles up the *entire* parent chain - `target` stays pinned to the hit-d…]>onDragStart: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[InteractionEventDOM-Event-shaped envelope dispatched by InteractionSystem to interactive scene nodes. Bubbles up the *entire* parent chain - `target` stays pinned to the hit-d…]>onFocus: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[RenderNodeSceneNode that can produce visual output. Adds the rendering pipeline features on top of the structural transform/bounds carried by SceneNode: post-process `fi…]>onKeyDown: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[KeyEventEnvelope dispatched by `app.interaction` to the focused RenderNode for keyboard input, then bubbled up its entire parent chain - same DOM-style shape as Intera…]>onKeyUp: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[KeyEventEnvelope dispatched by `app.interaction` to the focused RenderNode for keyboard input, then bubbled up its entire parent chain - same DOM-style shape as Intera…]>onPointerDown: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[InteractionEventDOM-Event-shaped envelope dispatched by InteractionSystem to interactive scene nodes. Bubbles up the *entire* parent chain - `target` stays pinned to the hit-d…]>onPointerMove: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[InteractionEventDOM-Event-shaped envelope dispatched by InteractionSystem to interactive scene nodes. Bubbles up the *entire* parent chain - `target` stays pinned to the hit-d…]>onPointerOut: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[InteractionEventDOM-Event-shaped envelope dispatched by InteractionSystem to interactive scene nodes. Bubbles up the *entire* parent chain - `target` stays pinned to the hit-d…]>onPointerOver: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[InteractionEventDOM-Event-shaped envelope dispatched by InteractionSystem to interactive scene nodes. Bubbles up the *entire* parent chain - `target` stays pinned to the hit-d…]>onPointerTap: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[InteractionEventDOM-Event-shaped envelope dispatched by InteractionSystem to interactive scene nodes. Bubbles up the *entire* parent chain - `target` stays pinned to the hit-d…]>onPointerUp: SignalLightweight typed event emitter. Each `Signal` represents one named notification channel (e.g. `onResize`, `onFrame`). Listeners are added with Signal.add or S…<[InteractionEventDOM-Event-shaped envelope dispatched by InteractionSystem to interactive scene nodes. Bubbles up the *entire* parent chain - `target` stays pinned to the hit-d…]>