From 510f4101bb9f0477f0f94bab6fe1b173d0ce87da Mon Sep 17 00:00:00 2001 From: Faustino Kialungila Date: Mon, 6 Jan 2020 23:20:17 +0100 Subject: [PATCH] save copied styles in memory --- src/index.tsx | 50 +++++++++++++++++--------------------------------- 1 file changed, 17 insertions(+), 33 deletions(-) diff --git a/src/index.tsx b/src/index.tsx index de6646e55..6a217c706 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -55,6 +55,8 @@ const KEYS = { BACKSPACE: "Backspace" }; +let COPIED_STYLES: string = "{}"; + function isArrowKey(keyCode: string) { return ( keyCode === KEYS.ARROW_LEFT || @@ -215,43 +217,25 @@ class App extends React.Component<{}, AppState> { } else if (event.metaKey && event.shiftKey && event.code === "KeyC") { const element = elements.find(el => el.isSelected); if (element) { - if (!navigator.clipboard) return; - navigator.clipboard - .writeText(JSON.stringify(element)) - .catch(err => alert("Failed to copy shape style!")); + COPIED_STYLES = JSON.stringify(element); } // Paste Styles: Cmd-Shift-V } else if (event.metaKey && event.shiftKey && event.code === "KeyV") { - if (!navigator.clipboard) return; - navigator.clipboard - .readText() - .then(stringifiedPastedElement => { - const pastedElement = JSON.parse(stringifiedPastedElement); - if (pastedElement.type) { - const { - strokeColor, - strokeWidth, - backgroundColor, - fillStyle, - opacity - } = pastedElement; - elements.forEach(element => { - if (element.isSelected) { - element.backgroundColor = backgroundColor; - element.strokeWidth = strokeWidth; - element.strokeColor = strokeColor; - element.fillStyle = fillStyle; - element.opacity = opacity; - generateDraw(element); - } - }); + const pastedElement = JSON.parse(COPIED_STYLES); + if (pastedElement.type) { + elements.forEach(element => { + if (element.isSelected) { + element.backgroundColor = pastedElement?.backgroundColor; + element.strokeWidth = pastedElement?.strokeWidth; + element.strokeColor = pastedElement?.strokeColor; + element.fillStyle = pastedElement?.fillStyle; + element.opacity = pastedElement?.opacity; + generateDraw(element); } - }) - .then(() => { - this.forceUpdate(); - event.preventDefault(); - }) - .catch(err => alert("Failed to read shape style!")); + }); + } + this.forceUpdate(); + event.preventDefault(); } };