From 7279262129d665ffa92f016802155c1db7c35b7f Mon Sep 17 00:00:00 2001 From: dwelle Date: Mon, 10 Feb 2020 13:31:39 +0100 Subject: [PATCH] use a better cloning algorithm --- package-lock.json | 5 +++++ package.json | 1 + src/element/newElement.ts | 11 ++--------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 454641090c..7405d02a8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8296,6 +8296,11 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" }, + "klona": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/klona/-/klona-1.1.1.tgz", + "integrity": "sha512-o/QDZouW8bt6cejtMQhw3qyqi4aTlrB7sbqzQ8+PdI/qJ3WMbmSOA//4ClIevCQp0DPUU9l1pxGRcGMkkxb8TA==" + }, "last-call-webpack-plugin": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", diff --git a/package.json b/package.json index 211a225893..cdc866ecf8 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "dependencies": { "browser-nativefs": "0.2.0", "i18next-browser-languagedetector": "4.0.1", + "klona": "1.1.1", "nanoid": "2.1.11", "react": "16.12.0", "react-dom": "16.12.0", diff --git a/src/element/newElement.ts b/src/element/newElement.ts index 13e37f5d2e..3e5fa35f78 100644 --- a/src/element/newElement.ts +++ b/src/element/newElement.ts @@ -5,6 +5,7 @@ import { Point } from "roughjs/bin/geometry"; import { ExcalidrawElement, ExcalidrawTextElement } from "../element/types"; import { measureText } from "../utils"; +import klona from "klona"; export function newElement( type: string, @@ -63,15 +64,7 @@ export function newTextElement( } export function duplicateElement(element: ReturnType) { - const copy = { - ...element, - }; - if ("points" in copy) { - copy.points = Array.isArray(element.points) - ? JSON.parse(JSON.stringify(element.points)) - : element.points; - } - + const copy = klona(element); delete copy.shape; copy.id = nanoid(); copy.seed = randomSeed();