Files
GDevelop/Extensions/TextEntryObject/textentryruntimeobject-pixi-renderer.ts

91 lines
2.6 KiB
TypeScript

namespace gdjs {
class TextEntryRuntimeObjectPixiRenderer {
_object: gdjs.TextEntryRuntimeObject;
_pressHandler: any;
_upHandler: any;
_downHandler: any;
constructor(runtimeObject: gdjs.TextEntryRuntimeObject) {
this._object = runtimeObject;
this._pressHandler = function (evt) {
if (!runtimeObject.isActivated()) {
return;
}
evt = evt || window.event;
const charCode = evt.which || evt.keyCode;
const charTyped = String.fromCharCode(charCode);
if (
charTyped !== undefined &&
//Skip some non displayable characters
charCode !== 8
) {
//On Firefox, backspace is considered as a character
runtimeObject.setString(runtimeObject.getString() + charTyped);
}
if (evt.preventDefault) {
evt.preventDefault();
}
return false;
};
this._upHandler = function (evt) {
if (!runtimeObject.isActivated()) {
return;
}
evt = evt || window.event;
const charCode = evt.which || evt.keyCode;
if (charCode === 8) {
//Backspace
runtimeObject.setString(runtimeObject.getString().slice(0, -1));
}
if (evt.preventDefault) {
evt.preventDefault();
}
return false;
};
// @ts-expect-error ts-migrate(7030) FIXME: Not all code paths return a value.
this._downHandler = function (evt) {
evt = evt || window.event;
const charCode = evt.which || evt.keyCode;
//Prevent backspace from going to the previous page
if (charCode === 8) {
if (evt.preventDefault) {
evt.preventDefault();
}
return false;
}
};
document.addEventListener('keypress', this._pressHandler);
document.addEventListener('keyup', this._upHandler);
document.addEventListener('keydown', this._downHandler);
}
onDestroy() {
document.removeEventListener('keypress', this._pressHandler);
document.removeEventListener('keyup', this._upHandler);
document.removeEventListener('keydown', this._downHandler);
}
updateString(): void {
//Nothing to do.
}
activate(enable) {
//Nothing to do.
}
}
/**
* @category Renderers > Text Entry
* @deprecated
*/
export const TextEntryRuntimeObjectRenderer =
TextEntryRuntimeObjectPixiRenderer;
/**
* @category Renderers > Text Entry
* @deprecated
*/
export type TextEntryRuntimeObjectRenderer =
TextEntryRuntimeObjectPixiRenderer;
}