simulate a db tap on mobile to insert text (#1155)

This commit is contained in:
Faustino Kialungila 2020-04-01 21:44:09 +02:00 committed by GitHub
parent 0e90996715
commit 56034eacb0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -119,6 +119,7 @@ function withBatchedUpdates<
const { history } = createHistory();
let didTapTwice: boolean = false;
let cursorX = 0;
let cursorY = 0;
let isHoldingSpace: boolean = false;
@ -368,6 +369,7 @@ export class App extends React.Component<any, AppState> {
document.addEventListener("copy", this.onCopy);
document.addEventListener("paste", this.pasteFromClipboard);
document.addEventListener("cut", this.onCut);
window.addEventListener("touchstart", this.onTapStart);
document.addEventListener("keydown", this.onKeyDown, false);
document.addEventListener("keyup", this.onKeyUp, { passive: true });
@ -401,6 +403,7 @@ export class App extends React.Component<any, AppState> {
document.removeEventListener("copy", this.onCopy);
document.removeEventListener("paste", this.pasteFromClipboard);
window.removeEventListener("touchstart", this.onTapStart);
document.removeEventListener("cut", this.onCut);
document.removeEventListener("keydown", this.onKeyDown, false);
@ -553,6 +556,27 @@ export class App extends React.Component<any, AppState> {
);
};
private onTapStart = (event: TouchEvent) => {
let timeoutId;
if (!didTapTwice) {
didTapTwice = true;
timeoutId = setTimeout(function () {
didTapTwice = false;
}, 300);
return false;
}
if (didTapTwice) {
const [touch] = event.touches;
// @ts-ignore
this.handleCanvasDoubleClick({
clientX: touch.clientX,
clientY: touch.clientY,
});
clearTimeout(timeoutId);
}
event.preventDefault();
};
private pasteFromClipboard = withBatchedUpdates(
async (event: ClipboardEvent | null) => {
// #686