Преглед изворни кода

fix style pasting (#832)

* fix style pasting

* Update src/actions/actionStyles.ts
Faustino Kialungila пре 5 година
родитељ
комит
2ad0716f3d
3 измењених фајлова са 20 додато и 2 уклоњено
  1. 8 1
      src/actions/actionStyles.ts
  2. 1 1
      src/element/index.ts
  3. 11 0
      src/element/typeChecks.ts

+ 8 - 1
src/actions/actionStyles.ts

@@ -1,5 +1,9 @@
 import { Action } from "./types";
-import { isTextElement, redrawTextBoundingBox } from "../element";
+import {
+  isTextElement,
+  isExcalidrawElement,
+  redrawTextBoundingBox,
+} from "../element";
 import { KEYS } from "../keys";
 
 let copiedStyles: string = "{}";
@@ -22,6 +26,9 @@ export const actionPasteStyles: Action = {
   name: "pasteStyles",
   perform: elements => {
     const pastedElement = JSON.parse(copiedStyles);
+    if (!isExcalidrawElement(pastedElement)) {
+      return { elements };
+    }
     return {
       elements: elements.map(element => {
         if (element.isSelected) {

+ 1 - 1
src/element/index.ts

@@ -14,7 +14,7 @@ export {
   getCursorForResizingElement,
   normalizeResizeHandle,
 } from "./resizeTest";
-export { isTextElement } from "./typeChecks";
+export { isTextElement, isExcalidrawElement } from "./typeChecks";
 export { textWysiwyg } from "./textWysiwyg";
 export { redrawTextBoundingBox } from "./textElement";
 export {

+ 11 - 0
src/element/typeChecks.ts

@@ -5,3 +5,14 @@ export function isTextElement(
 ): element is ExcalidrawTextElement {
   return element.type === "text";
 }
+
+export function isExcalidrawElement(element: any): boolean {
+  return (
+    element?.type === "text" ||
+    element?.type === "diamond" ||
+    element?.type === "rectangle" ||
+    element?.type === "ellipse" ||
+    element?.type === "arrow" ||
+    element?.type === "line"
+  );
+}