phaser3-rex-plugins
Version:
648 lines (598 loc) • 16.1 kB
TypeScript
import DynamicText from '../dynamictext/DynamicText';
import HiddenTextEdit from './textedit/HiddenTextEdit';
export default CanvasInput;
declare namespace CanvasInput {
/**
* Callback fired when a character is added.
* @param child - Added character bob.
* @param index - Character index.
* @param canvasInput - Canvas input instance.
*/
type AddCharCallbackType = (
child: DynamicText.CharBob,
index: number,
canvasInput: CanvasInput
) => void;
/**
* Callback fired when cursor moves.
* @param currCursorIndex - Current cursor index.
* @param prevCursorIndex - Previous cursor index.
* @param canvasInput - Canvas input instance.
*/
type MoveCursorCallbackType = (
currCursorIndex: number,
prevCursorIndex: number,
canvasInput: CanvasInput
) => void;
/**
* Callback to parse input text.
* @param text - Raw input text.
* @returns Parsed value.
*/
type ParseTextCallbackType = (
text: string
) => unknown;
interface IConfigBackground extends DynamicText.IConfigBackground {
/**
* Focus background color.
*/
'focus.color'?: string | number | null,
/**
* Focus background secondary color.
*/
'focus.color2'?: string | number | null,
/**
* True for horizontal focus gradient.
*/
'focus.horizontalGradient'?: boolean,
/**
* Focus stroke color.
*/
'focus.stroke'?: string | number | null,
/**
* Focus stroke thickness.
*/
'focus.strokeThickness'?: number,
/**
* Focus corner radius.
*/
'focus.cornerRadius'?: DynamicText.RadiusType | DynamicText.IRadiusConfig,
/**
* Focus corner iteration.
*/
'focus.cornerIteration'?: number
}
interface IConfigTextStyle extends DynamicText.IConfigTextStyle {
/**
* Cursor bold state.
*/
'cursor.bold'?: boolean,
/**
* Cursor italic state.
*/
'cursor.italic'?: boolean,
/**
* Cursor font size.
*/
'cursor.fontSize'?: string | number,
/**
* Cursor font family.
*/
'cursor.fontFamily'?: string,
/**
* Cursor color.
*/
'cursor.color'?: string | number | null,
/**
* Cursor stroke color.
*/
'cursor.stroke'?: string | number | null,
/**
* Cursor stroke thickness.
*/
'cursor.strokeThickness'?: number,
/**
* Cursor shadow color.
*/
'cursor.shadowColor'?: string | number | null,
/**
* Cursor shadow offset x.
*/
'cursor.shadowOffsetX'?: number,
/**
* Cursor shadow offset y.
*/
'cursor.shadowOffsetY'?: number,
/**
* Cursor shadow blur.
*/
'cursor.shadowBlur'?: number,
/**
* Cursor background color.
*/
'cursor.backgroundColor'?: string | number | null,
/**
* Cursor background height.
*/
'cursor.backgroundHeight'?: number,
/**
* Cursor background bottom y.
*/
'cursor.backgroundBottomY'?: number,
/**
* Cursor background left x.
*/
'cursor.backgroundLeftX'?: number,
/**
* Cursor background right x.
*/
'cursor.backgroundRightX'?: number,
/**
* Cursor offset x.
*/
'cursor.offsetX'?: number,
/**
* Cursor offset y.
*/
'cursor.offsetY'?: number,
/**
* Cursor left spacing.
*/
'cursor.leftSpace'?: number,
/**
* Cursor right spacing.
*/
'cursor.rightSpace'?: number,
/**
* Range bold state.
*/
'range.bold'?: boolean,
/**
* Range italic state.
*/
'range.italic'?: boolean,
/**
* Range font size.
*/
'range.fontSize'?: string | number,
/**
* Range font family.
*/
'range.fontFamily'?: string,
/**
* Range color.
*/
'range.color'?: string | number | null,
/**
* Range stroke color.
*/
'range.stroke'?: string | number | null,
/**
* Range stroke thickness.
*/
'range.strokeThickness'?: number,
/**
* Range shadow color.
*/
'range.shadowColor'?: string | number | null,
/**
* Range shadow offset x.
*/
'range.shadowOffsetX'?: number,
/**
* Range shadow offset y.
*/
'range.shadowOffsetY'?: number,
/**
* Range shadow blur.
*/
'range.shadowBlur'?: number,
/**
* Range background color.
*/
'range.backgroundColor'?: string | number | null,
/**
* Range background height.
*/
'range.backgroundHeight'?: number,
/**
* Range background bottom y.
*/
'range.backgroundBottomY'?: number,
/**
* Range background left x.
*/
'range.backgroundLeftX'?: number,
/**
* Range background right x.
*/
'range.backgroundRightX'?: number,
/**
* Range offset x.
*/
'range.offsetX'?: number,
/**
* Range offset y.
*/
'range.offsetY'?: number,
/**
* Range left spacing.
*/
'range.leftSpace'?: number,
/**
* Range right spacing.
*/
'range.rightSpace'?: number,
}
interface IConfig extends DynamicText.IConfig {
/**
* Initial raw text value.
* When set, display text and input text are treated as separated values.
* Use this for cases like password masking, where the canvas displays formatted text
* while the input keeps the original string.
*/
rawText?: string;
/**
* True to enable text area behavior.
*/
textArea?: boolean;
/**
* Hidden text edit config.
*/
edit?: HiddenTextEdit.IConfig;
/**
* Background config overrides.
*/
background?: IConfigBackground,
/**
* Focus background style.
*/
focusStyle?: DynamicText.IConfigBackground;
/**
* Text style config overrides.
*/
style?: IConfigTextStyle
/**
* Cursor style overrides.
*/
cursorStyle?: DynamicText.IConfigTextStyle;
/**
* Range selection style overrides.
*/
rangeStyle?: DynamicText.IConfigTextStyle;
/**
* Open callback.
*/
onOpen?: HiddenTextEdit.OnOpenCallbackType;
/**
* Focus callback.
*/
onFocus?: HiddenTextEdit.OnOpenCallbackType;
/**
* Close callback.
*/
onClose?: HiddenTextEdit.OnCloseCallbackType;
/**
* Blur callback.
*/
onBlur?: HiddenTextEdit.OnCloseCallbackType;
/**
* Update callback.
*/
onUpdate?: HiddenTextEdit.OnUpdateCallbackType;
/**
* Callback when a char is added.
*/
onAddChar?: AddCharCallbackType;
/**
* Callback when cursor moves.
*/
onMoveCursor?: MoveCursorCallbackType;
/**
* Parse text callback.
*/
parseTextCallback?: ParseTextCallbackType;
/**
* True to make input read-only.
*/
readOnly?: boolean,
/**
* Maximum input length.
*/
maxLength?: number,
/**
* Minimum input length.
*/
minLength?: number,
/**
* True to select all on focus.
*/
selectAll?: boolean,
/**
* Click outside target.
*/
clickOutSideTarget?: boolean | Phaser.GameObjects.GameObject,
}
}
/**
* Canvas-based text input with cursor and selection rendering.
*/
declare class CanvasInput extends DynamicText {
/**
* Create a canvas input.
* @param scene - The Scene to which this object belongs.
* @param x - The x position.
* @param y - The y position.
* @param fixedWidth - Fixed width.
* @param fixedHeight - Fixed height.
* @param config - Configuration options.
*/
constructor(
scene: Phaser.Scene,
x?: number, y?: number,
fixedWidth?: number, fixedHeight?: number,
config?: CanvasInput.IConfig
);
/**
* Create a canvas input.
* @param scene - The Scene to which this object belongs.
* @param x - The x position.
* @param y - The y position.
* @param config - Configuration options.
*/
constructor(
scene: Phaser.Scene,
x?: number, y?: number,
config?: CanvasInput.IConfig
);
/**
* Create a canvas input from config.
* @param scene - The Scene to which this object belongs.
* @param config - Configuration options.
*/
constructor(
scene: Phaser.Scene,
config?: CanvasInput.IConfig
);
/**
* Set input text.
* @param text - Text content.
* @returns This instance.
*/
setText(text: string): this;
/**
* Append input text.
* @param text - Text content.
* @returns This instance.
*/
appendText(text: string): this;
/**
* Current display text.
*/
displayText: string;
/**
* Set display text.
* @param value - Display text.
* @returns This instance.
*/
setDisplayText(value: string): this;
/**
* Current input text.
*/
inputText: string;
/**
* Set input text.
* @param value - Input text.
* @returns This instance.
*/
setInputText(value: string): this;
/**
* Set raw text and enable display/raw text separation mode.
* In this mode, `displayText` may differ from the input value.
* If the editor is already opened, the input text will be updated immediately.
* Pass `null` or `undefined` to clear raw text and restore normal mode.
* @param value - Raw text value.
* @returns This instance.
*/
setRawText(value?: string | null): this;
/**
* Clear raw text and disable display/raw text separation mode.
* If the editor is already opened, the hidden input text will be restored from display text.
* @returns This instance.
*/
clearRawText(): this;
/**
* Current raw text.
* Returns the saved raw text in separation mode; otherwise returns current display text.
*/
readonly rawText: string;
/**
* Set parse text callback.
* @param callback - Parse callback.
* @returns This instance.
*/
setParseTextCallback(callback?: CanvasInput.ParseTextCallbackType): this;
/**
* Get parsed value.
* @returns Parsed value.
*/
getValue(): unknown;
/**
* Set parsed value.
* @param value - Parsed value.
* @returns This instance.
*/
setValue(value: unknown): this;
/**
* Current parsed value.
*/
value: unknown;
/**
* Enable or disable read-only mode.
* @param enable - True to enable.
* @returns This instance.
*/
setReadOnly(enable?: boolean): this;
/**
* Read-only flag.
*/
readOnly: boolean;
/**
* Open the input.
* @param onCloseCallback - Optional close callback.
* @returns This instance.
*/
open(onCloseCallback?: Function): this;
/**
* Close the input.
* @returns This instance.
*/
close(): this;
/**
* True if input is opened.
*/
readonly isOpened: boolean;
/**
* Set focus background style.
* @param style - Background style.
* @returns This instance.
*/
setFocusStyle(
style: DynamicText.IConfigBackground
): this;
/**
* Set cursor text style.
* @param style - Text style.
* @returns This instance.
*/
setCursorStyle(
style: DynamicText.IConfigTextStyle
): this;
/**
* Set range selection style.
* @param style - Text style.
* @returns This instance.
*/
setRangeStyle(
style: DynamicText.IConfigTextStyle
): this;
/**
* Configure as number input.
* @returns This instance.
*/
setNumberInput(): this;
/**
* Set maximum length.
* @param value - Max length.
* @returns This instance.
*/
setMaxLength(value: number): this;
/**
* Maximum length.
*/
maxLength: number;
/**
* Set minimum length.
* @param value - Min length.
* @returns This instance.
*/
setMinLength(value: number): this;
/**
* Minimum length.
*/
minLength: number;
/**
* Set cursor position.
* @param value - Cursor index.
* @returns This instance.
*/
setCursorPosition(value: number): this;
/**
* Cursor position.
*/
cursorPosition: number;
/**
* Content width.
*/
readonly contentWidth: number;
/**
* Content height.
*/
readonly contentHeight: number;
/**
* Line count.
*/
readonly linesCount: number;
/**
* Top text offset Y.
*/
readonly topTextOY: number;
/**
* Bottom text offset Y.
*/
readonly bottomTextOY: number;
/**
* Left text offset X.
*/
readonly leftTextOX: number;
/**
* Right text offset X.
*/
readonly rightTextOX: number;
/**
* Set text offset Y by percentage.
* @param t - Percentage value.
* @returns This instance.
*/
setTextOYByPercentage(t: number): this;
/**
* Get text offset Y percentage.
* @returns Percentage value.
*/
getTextOYPercentage(): number;
/**
* Current text offset Y percentage.
*/
t: number;
/**
* Set text offset X by percentage.
* @param s - Percentage value.
* @returns This instance.
*/
setTextOXByPercentage(s: number): this;
/**
* Get text offset X percentage.
* @returns Percentage value.
*/
getTextOXPercentage(): number;
/**
* Current text offset X percentage.
*/
s: number;
/**
* Move cursor left.
* @returns This instance.
*/
cursorMoveLeft(): this;
/**
* Move cursor right.
* @returns This instance.
*/
cursorMoveRight(): this;
/**
* Move cursor up.
* @returns This instance.
*/
cursorMoveUp(): this;
/**
* Move cursor down.
* @returns This instance.
*/
cursorMoveDown(): this;
/**
* Refresh the display from current `rawText`, with `onUpdate` callback,
* then update cursor/selection rendering.
* @returns This instance.
*/
updateFromEditor(): this;
}