diff --git a/src/index.tsx b/src/index.tsx index 7e4f72b7f9..1b9c76b47a 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -842,25 +842,19 @@ function generateDraw(element: ExcalidrawElement) { }; } else if (element.type === "arrow") { const [x1, y1, x2, y2, x3, y3, x4, y4] = getArrowPoints(element); + const options = { + stroke: element.strokeColor, + strokeWidth: element.strokeWidth, + roughness: element.roughness + }; + const shapes = withCustomMathRandom(element.seed, () => [ // \ - generator.line(x3, y3, x2, y2, { - stroke: element.strokeColor, - strokeWidth: element.strokeWidth, - roughness: element.roughness - }), + generator.line(x3, y3, x2, y2, options), // ----- - generator.line(x1, y1, x2, y2, { - stroke: element.strokeColor, - strokeWidth: element.strokeWidth, - roughness: element.roughness - }), + generator.line(x1, y1, x2, y2, options), // / - generator.line(x4, y4, x2, y2, { - stroke: element.strokeColor, - strokeWidth: element.strokeWidth, - roughness: element.roughness - }) + generator.line(x4, y4, x2, y2, options) ]); element.draw = (rc, context, { scrollX, scrollY }) => { @@ -971,7 +965,17 @@ function restore( ? JSON.parse(savedElements) : savedElements) ); - elements.forEach((element: ExcalidrawElement) => generateDraw(element)); + elements.forEach((element: ExcalidrawElement) => { + element.fillStyle = element.fillStyle || "hachure"; + element.strokeWidth = element.strokeWidth || 1; + element.roughness = element.roughness || 1; + element.opacity = + element.opacity === null || element.opacity === undefined + ? 100 + : element.opacity; + + generateDraw(element); + }); } return savedState ? JSON.parse(savedState) : null; @@ -1106,7 +1110,7 @@ function getSelectedIndices() { const someElementIsSelected = () => elements.some(element => element.isSelected); -const someElementIsSelectedIsRectangleOrEllipseOrDiamond = () => +const hasBackground = () => elements.some( element => element.isSelected && @@ -1115,7 +1119,7 @@ const someElementIsSelectedIsRectangleOrEllipseOrDiamond = () => element.type === "diamond") ); -const someElementIsSelectedIsRectangleOrEllipseOrDiamondOrArrow = () => +const hasStroke = () => elements.some( element => element.isSelected && @@ -1514,125 +1518,76 @@ class App extends React.Component<{}, AppState> { - - )} -

Canvas

-
-
Canvas Background Color
-
-
- -
-

Export

-
-
Name
- {this.state.name && ( - this.updateProjectName(name)} - /> - )} -
Image
- - -
Scene
- - -
- {someElementIsSelected() && ( - <> - <> -

Colors

+ + + {hasBackground() && (
-
Shape Stroke Color
+
Shape Background Color
+ )} - {someElementIsSelectedIsRectangleOrEllipseOrDiamond() && ( -
-
Shape Background Color
-
-
- )} - - - {someElementIsSelectedIsRectangleOrEllipseOrDiamond() && ( + {hasBackground() && ( <>

Fill

- {/* */}
)} - {someElementIsSelectedIsRectangleOrEllipseOrDiamondOrArrow() && ( + {hasStroke() && ( <>

Stroke width

@@ -1833,6 +1727,98 @@ class App extends React.Component<{}, AppState> { /> )} +

Canvas

+
+
Canvas Background Color
+
+ +
+

Export

+
+
Name
+ {this.state.name && ( + this.updateProjectName(name)} + /> + )} +
Image
+ + +
Scene
+ + +