From 11b8cc2caaff99dca899e0ff9a5be91e6273afcf Mon Sep 17 00:00:00 2001 From: David Luzar Date: Mon, 10 May 2021 11:01:10 +0200 Subject: [PATCH] fix: remove `draw` element from codebase (#3559) --- src/data/restore.ts | 23 +++++++++++++++++++++-- src/element/collision.ts | 1 - src/element/types.ts | 2 +- src/renderer/renderElement.ts | 5 ----- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/data/restore.ts b/src/data/restore.ts index fab3fe65..f41e75cc 100644 --- a/src/data/restore.ts +++ b/src/data/restore.ts @@ -21,6 +21,20 @@ type RestoredAppState = Omit< "offsetTop" | "offsetLeft" | "width" | "height" >; +export const AllowedExcalidrawElementTypes: Record< + ExcalidrawElement["type"], + true +> = { + selection: true, + text: true, + rectangle: true, + diamond: true, + ellipse: true, + line: true, + arrow: true, + freedraw: true, +}; + export type RestoredDataState = { elements: ExcalidrawElement[]; appState: RestoredAppState; @@ -107,7 +121,6 @@ const restoreElement = ( pressures: element.pressures, }); } - case "draw": case "line": case "arrow": { const { @@ -116,7 +129,10 @@ const restoreElement = ( } = element; return restoreElementWithProperties(element, { - type: element.type === "draw" ? "line" : element.type, + type: + (element.type as ExcalidrawElement["type"] | "draw") === "draw" + ? "line" + : element.type, startBinding: element.startBinding, endBinding: element.endBinding, points: @@ -187,6 +203,9 @@ export const restoreAppState = ( return { ...nextAppState, + elementType: AllowedExcalidrawElementTypes[nextAppState.elementType] + ? nextAppState.elementType + : "selection", // Migrates from previous version where appState.zoom was a number zoom: typeof appState.zoom === "number" diff --git a/src/element/collision.ts b/src/element/collision.ts index 101968ca..ecf4092d 100644 --- a/src/element/collision.ts +++ b/src/element/collision.ts @@ -180,7 +180,6 @@ const hitTestPointAgainstElement = (args: HitTestArgs): boolean => { } case "arrow": case "line": - case "draw": return hitTestLinear(args); case "selection": console.warn( diff --git a/src/element/types.ts b/src/element/types.ts index f50e6af9..ef94a759 100644 --- a/src/element/types.ts +++ b/src/element/types.ts @@ -114,7 +114,7 @@ export type Arrowhead = "arrow" | "bar" | "dot"; export type ExcalidrawLinearElement = _ExcalidrawElementBase & Readonly<{ - type: "line" | "draw" | "arrow"; + type: "line" | "arrow"; points: readonly Point[]; lastCommittedPoint: Point | null; startBinding: PointBinding | null; diff --git a/src/renderer/renderElement.ts b/src/renderer/renderElement.ts index cfcae09b..d491d96e 100644 --- a/src/renderer/renderElement.ts +++ b/src/renderer/renderElement.ts @@ -142,7 +142,6 @@ const drawElementOnCanvas = ( break; } case "arrow": - case "draw": case "line": { context.lineJoin = "round"; context.lineCap = "round"; @@ -270,7 +269,6 @@ export const generateRoughOptions = (element: ExcalidrawElement): Options => { } return options; } - case "draw": case "line": { if (isPathALoop(element.points)) { options.fillStyle = element.fillStyle; @@ -359,7 +357,6 @@ const generateElementShape = ( generateRoughOptions(element), ); break; - case "draw": case "line": case "arrow": { const options = generateRoughOptions(element); @@ -589,7 +586,6 @@ export const renderElement = ( case "rectangle": case "diamond": case "ellipse": - case "draw": case "line": case "arrow": case "text": { @@ -661,7 +657,6 @@ export const renderElementToSvg = ( svgRoot.appendChild(node); break; } - case "draw": case "line": case "arrow": { generateElementShape(element, generator);