From 56034eacb049c3b157728f82cd1124f9de1a2c59 Mon Sep 17 00:00:00 2001 From: Faustino Kialungila Date: Wed, 1 Apr 2020 21:44:09 +0200 Subject: [PATCH] simulate a db tap on mobile to insert text (#1155) --- src/components/App.tsx | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/components/App.tsx b/src/components/App.tsx index 82cb3d32..3a52ec86 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -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 { 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 { 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 { ); }; + 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