From 729aeacc47d7879c752ed665a290e6cc9e810d9f Mon Sep 17 00:00:00 2001
From: David Luzar <luzar.david@gmail.com>
Date: Mon, 6 Apr 2020 23:02:17 +0200
Subject: [PATCH] prevent pasting svg copied from excalidraw (#1288)

* prevent pasting svg copied from excalidraw

* remove unnecessary template
---
 src/clipboard.ts    | 7 ++++++-
 src/scene/export.ts | 3 +++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/clipboard.ts b/src/clipboard.ts
index 876f790f..18fad0c6 100644
--- a/src/clipboard.ts
+++ b/src/clipboard.ts
@@ -1,6 +1,7 @@
 import { ExcalidrawElement } from "./element/types";
 import { getSelectedElements } from "./scene";
 import { AppState } from "./types";
+import { SVG_EXPORT_TAG } from "./scene/export";
 
 let CLIPBOARD = "";
 let PREFER_APP_CLIPBOARD = false;
@@ -39,6 +40,10 @@ export async function copyToAppClipboard(
 export function getAppClipboard(): {
   elements?: readonly ExcalidrawElement[];
 } {
+  if (!CLIPBOARD) {
+    return {};
+  }
+
   try {
     const clipboardElements = JSON.parse(CLIPBOARD);
 
@@ -68,7 +73,7 @@ export async function getClipboardContent(
       : probablySupportsClipboardReadText &&
         (await navigator.clipboard.readText());
 
-    if (text && !PREFER_APP_CLIPBOARD) {
+    if (text && !PREFER_APP_CLIPBOARD && !text.includes(SVG_EXPORT_TAG)) {
       return { text };
     }
   } catch (error) {
diff --git a/src/scene/export.ts b/src/scene/export.ts
index 95033dfe..003f7a70 100644
--- a/src/scene/export.ts
+++ b/src/scene/export.ts
@@ -6,6 +6,8 @@ import { distance, SVG_NS } from "../utils";
 import { normalizeScroll } from "./scroll";
 import { AppState } from "../types";
 
+export const SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`;
+
 export function exportToCanvas(
   elements: readonly ExcalidrawElement[],
   appState: AppState,
@@ -86,6 +88,7 @@ export function exportToSvg(
   svgRoot.setAttribute("viewBox", `0 0 ${width} ${height}`);
 
   svgRoot.innerHTML = `
+  ${SVG_EXPORT_TAG}
   <defs>
     <style>
       @font-face {