Explorar o código

defined split array

Preet hai 1 ano
pai
achega
c2867c9a93

+ 1 - 0
src/data/restore.ts

@@ -285,6 +285,7 @@ const restoreElement = (
         points,
         x,
         y,
+        segmentSplitIndices: [],
       });
     }
 

+ 22 - 0
src/element/linearElementEditor.ts

@@ -1472,6 +1472,28 @@ export class LinearElementEditor {
 
     return coords;
   };
+
+  static toggleSegmentSplitAtIndex(
+    element: NonDeleted<ExcalidrawLinearElement>,
+    appState: AppState,
+    index: number,
+  ) {
+    let found = false;
+    const splitIndices = (element.segmentSplitIndices || []).filter((idx) => {
+      if (idx === index) {
+        found = true;
+        return false;
+      }
+      return true;
+    });
+    if (!found) {
+      splitIndices.push(index);
+    }
+
+    mutateElement(element, {
+      segmentSplitIndices: splitIndices,
+    });
+  }
 }
 
 const normalizeSelectedPoints = (

+ 1 - 0
src/element/newElement.ts

@@ -374,6 +374,7 @@ export const newLinearElement = (
     endBinding: null,
     startArrowhead: opts.startArrowhead || null,
     endArrowhead: opts.endArrowhead || null,
+    segmentSplitIndices: [],
   };
 };
 

+ 1 - 0
src/element/types.ts

@@ -195,6 +195,7 @@ export type ExcalidrawLinearElement = _ExcalidrawElementBase &
   Readonly<{
     type: "line" | "arrow";
     points: readonly Point[];
+    segmentSplitIndices: readonly number[] | null;
     lastCommittedPoint: Point | null;
     startBinding: PointBinding | null;
     endBinding: PointBinding | null;