@mai3/phaser-sdk
Version:
A UI component library based on the Phaser game engine
74 lines • 2.63 kB
TypeScript
import Phaser from 'phaser';
import { TextBoxConfig } from '../types';
import { Container } from './Container';
import { BaseScene } from "../game";
import { Label } from './Label';
/**
* A text input box component that supports text selection, cursor movement, and IME input
*/
export declare class TextBox<T extends TextBoxConfig = TextBoxConfig> extends Container<T> {
protected _config?: T;
label: Label;
selection: Phaser.GameObjects.Rectangle;
cursor: Phaser.GameObjects.Text;
timerEvent?: Phaser.Time.TimerEvent;
hiddenInput?: HTMLInputElement;
private static measureCanvas;
private static measureContext;
private static activeTextBox;
protected isFocus: boolean;
protected charWidths: number[];
protected selectionStart?: number;
protected selectionEnd?: number;
protected isSelecting: boolean;
protected maxWidth: number;
protected isComposing: boolean;
protected compositionText: string;
protected placeholder: string;
protected previousValue: string;
constructor(scene: BaseScene, config: T);
reDraw(config?: T): void;
private clearPreviousElements;
private initializeState;
private createLabel;
private updatePlaceholder;
private createCursor;
private createSelection;
private setupEventHandlers;
private setupKeyboardEvents;
handleKeydown(event: KeyboardEvent): void;
handleKeyup(event: KeyboardEvent): void;
getCursorPosition(): number;
private updateCharWidths;
createHiddenInput(): void;
private setupHiddenInputStyles;
private setupHiddenInputEvents;
handleInput(): void;
handleCompositionEnd(): void;
getTextWidth(text: string): number;
private getOrCreateMeasureContext;
updateSelectionAfterInput(): void;
handleOver(): void;
handleOut(): void;
handlePointerDown(pointer: Phaser.Input.Pointer): void;
private deactivateTextBox;
private resetSelection;
handlePointerMove(pointer: Phaser.Input.Pointer): void;
handlePointerUp(): void;
updateCursorPosition(): void;
private resetCursorBlink;
updateSelection(): void;
private updateSelectionVisuals;
handleMoveCursor(): void;
setDomCursorPosition(): void;
setNativeCursorPosition(): void;
getCharacterIndexAtPosition(x: number): number;
getCharacterWidths(): number[];
getCharacterXPosition(index: number): number;
addTimerEvent(): void;
getLabelWorldPoint(): Phaser.Math.Vector2;
destroy(fromScene?: boolean): void;
private removeEventListeners;
private destroyComponents;
}
//# sourceMappingURL=TextBox.d.ts.map