import { Color } from '../core/color.js'; import { Hooks } from '../core/hooks.js'; import { Node } from '../core/node.js'; import { Terminal, TerminalType } from '../core/terminal.js'; import { SerializedVector, Vector } from '../core/vector.js'; import { Align, ViewPort } from '../common/enums.js'; import { Renderable } from '../common/interfaces.js'; export declare abstract class UINode extends Hooks implements Renderable { private _disabled; private _visible; node: Node; type: string; renderState: ViewPort; hitColor: Color; abstract style: T; propName: string; input: Terminal; output: Terminal; id: string; draggable: boolean; zoomable: boolean; width: number; height: number; children: UINode[]; get context(): CanvasRenderingContext2D; get offUIContext(): OffscreenCanvasRenderingContext2D | CanvasRenderingContext2D; position: Vector; get disabled(): boolean; set disabled(disabled: boolean); get visible(): boolean; set visible(value: boolean); protected constructor(); static create(type: string, node: Node, options?: UINodeOptions): T; protected createTerminal(type: TerminalType, dataType: string): Terminal; protected createTerminal(type: TerminalType, dataType: string, name: string): Terminal; append(childs: UINode | UINode[]): void; update(): void; updateRenderState(): void; private setHitColor; render(): void; getProp(): unknown; setProp(propValue: any): void; query(query: string): Array; sendEvent(type: string, event: T): void; onWheel(_: UIWheelEvent): void; onEnter(_disabled: UIEvent): void; onExit(_disabled: UIEvent): void; onOver(_: UIEvent): void; onDown(_: UIEvent): void; onUp(_: UIEvent): void; onClick(_: UIEvent): void; onDrag(_: UIEvent): void; onContextMenu(_: UIEvent): void; protected abstract created(options: UINodeOptions): void; protected abstract reflow(): void; protected abstract paint(): void; protected abstract paintLOD1(): void; protected abstract offPaint(): void; protected abstract onPropChange(oldValue: any, newValue: any): void; } export interface UINodeStyle { grow?: number; align?: Align; } export interface UINodeOptions { input?: boolean; output?: boolean; style?: T; id?: string; hitColor?: Color; visible?: boolean; propName?: string; height?: number; position?: Vector; } export interface UINodeRenderParams { position: SerializedVector; width: number; height: number; } export interface UIEvent { screenPos: Vector; realPos: Vector; target: T; } export interface UIWheelEvent extends UIEvent { direction: boolean; }