mirror of
https://github.com/excalidraw/excalidraw.git
synced 2025-04-14 16:40:58 -04:00
use a better cloning algorithm
This commit is contained in:
parent
1ec3946ed6
commit
7279262129
3 changed files with 8 additions and 9 deletions
5
package-lock.json
generated
5
package-lock.json
generated
|
@ -8296,6 +8296,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
|
||||||
"integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="
|
"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": {
|
"last-call-webpack-plugin": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"browser-nativefs": "0.2.0",
|
"browser-nativefs": "0.2.0",
|
||||||
"i18next-browser-languagedetector": "4.0.1",
|
"i18next-browser-languagedetector": "4.0.1",
|
||||||
|
"klona": "1.1.1",
|
||||||
"nanoid": "2.1.11",
|
"nanoid": "2.1.11",
|
||||||
"react": "16.12.0",
|
"react": "16.12.0",
|
||||||
"react-dom": "16.12.0",
|
"react-dom": "16.12.0",
|
||||||
|
|
|
@ -5,6 +5,7 @@ import { Point } from "roughjs/bin/geometry";
|
||||||
|
|
||||||
import { ExcalidrawElement, ExcalidrawTextElement } from "../element/types";
|
import { ExcalidrawElement, ExcalidrawTextElement } from "../element/types";
|
||||||
import { measureText } from "../utils";
|
import { measureText } from "../utils";
|
||||||
|
import klona from "klona";
|
||||||
|
|
||||||
export function newElement(
|
export function newElement(
|
||||||
type: string,
|
type: string,
|
||||||
|
@ -63,15 +64,7 @@ export function newTextElement(
|
||||||
}
|
}
|
||||||
|
|
||||||
export function duplicateElement(element: ReturnType<typeof newElement>) {
|
export function duplicateElement(element: ReturnType<typeof newElement>) {
|
||||||
const copy = {
|
const copy = klona(element);
|
||||||
...element,
|
|
||||||
};
|
|
||||||
if ("points" in copy) {
|
|
||||||
copy.points = Array.isArray(element.points)
|
|
||||||
? JSON.parse(JSON.stringify(element.points))
|
|
||||||
: element.points;
|
|
||||||
}
|
|
||||||
|
|
||||||
delete copy.shape;
|
delete copy.shape;
|
||||||
copy.id = nanoid();
|
copy.id = nanoid();
|
||||||
copy.seed = randomSeed();
|
copy.seed = randomSeed();
|
||||||
|
|
Loading…
Add table
Reference in a new issue