import { TextLayout } from 'mono-layout'; import { Key, Mouse } from 'term-strings/parse'; import { type Node as YogaNode } from 'yoga-layout/load'; import { EventOf, EventSlot } from '../misc/EventSource'; import { Point } from '../misc/Point'; import { Rect } from '../misc/Rect'; import { Ruleset } from '../style/Ruleset'; import { StyleManager } from '../style/StyleManager'; import { TermNode } from './TermNode'; import { ElementFlags } from './flags'; export type ScrollIntoViewOptions = { align?: `auto` | `start` | `end`; alignX?: `auto` | `start` | `end`; alignY?: `auto` | `start` | `end`; force?: boolean; forceX?: boolean; forceY?: boolean; }; export declare class TermElement extends TermNode { private updateInProgress; flags: number; yoga: YogaNode; textLayout: TextLayout | null; styleManager: StyleManager; style: Ruleset; propMap: Map; activeProps: Set; dirtyRects: Array; pendingEvents: Array; nodeList: Array; focusList: Array; renderList: Array; activeElement: TermElement | null; isActive: boolean; elementRect: Rect; contentRect: Rect; scrollRect: Rect; elementWorldRect: Rect; contentWorldRect: Rect; elementClipRect: Rect | null; contentClipRect: Rect | null; elementBoundingRect: Rect | null; onLayout: EventSlot; onFocus: EventSlot; onBlur: EventSlot; onScroll: EventSlot; onCaret: EventSlot; onData: EventSlot; onKeyPress: EventSlot; onMouseMove: EventSlot; onMouseWheel: EventSlot; onMouseDown: EventSlot; onMouseUp: EventSlot; onMouseOver: EventSlot; onMouseOut: EventSlot; onMouseEnter: EventSlot; onMouseLeave: EventSlot; onClick: EventSlot; alwaysScrollToBottom: boolean; constructor({ textLayout }?: { textLayout?: TextLayout | null; }); private debugPaintRectEnabled; get debugPaintRects(): boolean; set debugPaintRects(status: boolean); private currentCaret; get caret(): Point | null; set caret(caret: Point | null); get decorated(): boolean; getDebugInfo(): { name: string; contentRect: Rect; elementRect: Rect; elementWorldRect: Rect; contentWorldRect: Rect; elementClipRect: Rect | null; contentClipRect: Rect | null; }; cleanup(): void; resetAlwaysScrollToBottom(): void; setAlwaysScrollToBottom(value: boolean): void; resetDecorated(): void; setDecorated(value: boolean): void; linkBefore(node: TermElement, referenceNode: TermElement | null): void; removeChild(node: TermElement): void; setDirtyNodeListFlag(): void; clearDirtyNodeListFlag(): void; setDirtyFocusListFlag(): void; clearDirtyFocusListFlag(): void; setDirtyRenderListFlag(): void; clearDirtyRenderListFlag(): void; setDirtyLayoutFlag(): void; clearDirtyLayoutFlag(): void; clearDirtyLayoutChildrenFlag(): void; setDirtyClippingFlag(): void; clearDirtyClippingFlag(): void; clearDirtyClippingChildrenFlag(): void; setDirtyFlag(flag: ElementFlags, parentFlag?: ElementFlags | 0): void; clearDirtyFlag(flag: ElementFlags): void; queueDirtyRect(dirtyRect?: Rect | null, checkIntersectionFrom?: number): void; queueDirtyRects(dirtyRects: Array, checkIntersectionFrom?: number): void; flushDirtyRects(): Rect[]; requestUpdates(): void; triggerUpdates({ maxDepth }?: { maxDepth?: number | undefined; }): void; triggerUpdatesFromHere(): void; generateNodeList(): TermElement[]; generateFocusList(): TermElement[]; generateRenderList(): TermElement[]; cascadeLayout({ dirtyLayoutNodes, force }: { dirtyLayoutNodes: Array; force?: boolean; }): void; cascadeClipping({ dirtyScrollNodes, relativeClipRect, force }: { dirtyScrollNodes: Array; relativeClipRect?: Rect | null; force?: boolean; }): void; getPreferredSize(min: Point, max: Point): Point; getInternalContentWidth(): number; getInternalContentHeight(): number; renderElement(x: number, y: number, l: number): string; renderContent(x: number, y: number, l: number): string; renderBackground(l: number): string; renderText(text: string): string; addShortcutListener(descriptors: string, callback: (e: EventOf) => void, { capture }?: { capture?: boolean | undefined; }): void; get scrollLeft(): number; set scrollLeft(scrollLeft: number); get scrollTop(): number; set scrollTop(scrollTop: number); get scrollWidth(): number; get scrollHeight(): number; get offsetWidth(): number; get offsetHeight(): number; get innerWidth(): number; get innerHeight(): number; getCaretCoordinates(): Point | null; getBoundingClientRect(): Rect; focus(): void; blur({ parentNode }?: { parentNode?: TermElement | null | undefined; }): void; focusRelativeElement(offset: number): void; validateRelativeFocusTargetSelf(source: TermElement): boolean; validateRelativeFocusTarget(target: TermElement): boolean; focusPreviousElement(): void; focusNextElement(): void; scrollIntoView({ align, alignX, alignY, force, forceX, forceY }?: ScrollIntoViewOptions): void; scrollCellIntoView(position: Point, { align, alignX, alignY, force, forceX, forceY }?: ScrollIntoViewOptions): void; scrollColumnIntoView(column: number, { align, force }?: Pick): void; scrollRowIntoView(row: number, { align, force }?: Pick): void; }