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 {