diff --git a/src/actions/actionProperties.tsx b/src/actions/actionProperties.tsx index 17e11f93..697d5691 100644 --- a/src/actions/actionProperties.tsx +++ b/src/actions/actionProperties.tsx @@ -227,6 +227,41 @@ export const actionChangeSloppiness = register({ ), }); +export const actionChangeStrokeStyle = register({ + name: "changeStrokeStyle", + perform: (elements, appState, value) => { + return { + elements: changeProperty(elements, appState, (el) => + newElementWith(el, { + strokeStyle: value, + }), + ), + appState: { ...appState, currentItemStrokeStyle: value }, + commitToHistory: true, + }; + }, + PanelComponent: ({ elements, appState, updateData }) => ( +
+ {t("labels.strokeStyle")} + element.strokeStyle, + appState.currentItemStrokeStyle, + )} + onChange={(value) => updateData(value)} + /> +
+ ), +}); + export const actionChangeOpacity = register({ name: "changeOpacity", perform: (elements, appState, value) => { diff --git a/src/actions/types.ts b/src/actions/types.ts index 2cb7e247..7d5e9d20 100644 --- a/src/actions/types.ts +++ b/src/actions/types.ts @@ -30,6 +30,7 @@ export type ActionName = | "changeFillStyle" | "changeStrokeWidth" | "changeSloppiness" + | "changeStrokeStyle" | "changeOpacity" | "changeFontSize" | "toggleCanvasMenu" diff --git a/src/appState.ts b/src/appState.ts index f0448159..90189638 100644 --- a/src/appState.ts +++ b/src/appState.ts @@ -22,6 +22,7 @@ export function getDefaultAppState(): AppState { currentItemBackgroundColor: "transparent", currentItemFillStyle: "hachure", currentItemStrokeWidth: 1, + currentItemStrokeStyle: "solid", currentItemRoughness: 1, currentItemOpacity: 100, currentItemFont: DEFAULT_FONT, diff --git a/src/components/Actions.tsx b/src/components/Actions.tsx index b492161f..e3313e67 100644 --- a/src/components/Actions.tsx +++ b/src/components/Actions.tsx @@ -45,7 +45,7 @@ export function SelectedShapeActions({ targetElements.some((element) => hasStroke(element.type))) && ( <> {renderAction("changeStrokeWidth")} - + {renderAction("changeStrokeStyle")} {renderAction("changeSloppiness")} )} diff --git a/src/components/App.tsx b/src/components/App.tsx index bc1aa50d..d9e6cddd 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -729,6 +729,7 @@ class App extends React.Component { backgroundColor: this.state.currentItemBackgroundColor, fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, + strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, text: text, @@ -1357,6 +1358,7 @@ class App extends React.Component { backgroundColor: this.state.currentItemBackgroundColor, fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, + strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, text: "", @@ -2037,6 +2039,7 @@ class App extends React.Component { backgroundColor: this.state.currentItemBackgroundColor, fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, + strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, }); @@ -2067,6 +2070,7 @@ class App extends React.Component { backgroundColor: this.state.currentItemBackgroundColor, fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, + strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, }); diff --git a/src/data/restore.ts b/src/data/restore.ts index 4a85cbfa..1f98c8bc 100644 --- a/src/data/restore.ts +++ b/src/data/restore.ts @@ -76,6 +76,7 @@ export function restore( id: element.id || randomId(), fillStyle: element.fillStyle || "hachure", strokeWidth: element.strokeWidth || 1, + strokeStyle: element.strokeStyle ?? "solid", roughness: element.roughness ?? 1, opacity: element.opacity === null || element.opacity === undefined diff --git a/src/element/newElement.test.ts b/src/element/newElement.test.ts index 8eadeb16..a04497ae 100644 --- a/src/element/newElement.test.ts +++ b/src/element/newElement.test.ts @@ -30,6 +30,7 @@ it("clones arrow element", () => { backgroundColor: "transparent", fillStyle: "hachure", strokeWidth: 1, + strokeStyle: "solid", roughness: 1, opacity: 100, }); @@ -73,6 +74,7 @@ it("clones text element", () => { backgroundColor: "transparent", fillStyle: "hachure", strokeWidth: 1, + strokeStyle: "solid", roughness: 1, opacity: 100, text: "hello", diff --git a/src/element/newElement.ts b/src/element/newElement.ts index 81ec355c..69cf3c0d 100644 --- a/src/element/newElement.ts +++ b/src/element/newElement.ts @@ -17,6 +17,7 @@ type ElementConstructorOpts = { backgroundColor: ExcalidrawGenericElement["backgroundColor"]; fillStyle: ExcalidrawGenericElement["fillStyle"]; strokeWidth: ExcalidrawGenericElement["strokeWidth"]; + strokeStyle: ExcalidrawGenericElement["strokeStyle"]; roughness: ExcalidrawGenericElement["roughness"]; opacity: ExcalidrawGenericElement["opacity"]; width?: ExcalidrawGenericElement["width"]; @@ -33,6 +34,7 @@ function _newElementBase( backgroundColor, fillStyle, strokeWidth, + strokeStyle, roughness, opacity, width = 0, @@ -53,6 +55,7 @@ function _newElementBase( backgroundColor, fillStyle, strokeWidth, + strokeStyle, roughness, opacity, seed: rest.seed ?? randomInteger(), diff --git a/src/element/types.ts b/src/element/types.ts index 75c19975..e4c8383c 100644 --- a/src/element/types.ts +++ b/src/element/types.ts @@ -8,6 +8,7 @@ type _ExcalidrawElementBase = Readonly<{ backgroundColor: string; fillStyle: string; strokeWidth: number; + strokeStyle: "solid" | "dashed" | "dotted"; roughness: number; opacity: number; width: number; diff --git a/src/locales/en.json b/src/locales/en.json index 305d7865..93f1153c 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -16,6 +16,10 @@ "background": "Background", "fill": "Fill", "strokeWidth": "Stroke width", + "strokeStyle": "Stroke style", + "strokeStyle_solid": "Solid", + "strokeStyle_dashed": "Dashed", + "strokeStyle_dotted": "Dotted", "sloppiness": "Sloppiness", "opacity": "Opacity", "textAlign": "Text align", diff --git a/src/renderer/renderElement.ts b/src/renderer/renderElement.ts index ddbc8d9d..cd90fc56 100644 --- a/src/renderer/renderElement.ts +++ b/src/renderer/renderElement.ts @@ -20,6 +20,9 @@ import rough from "roughjs/bin/rough"; const CANVAS_PADDING = 20; +const DASHARRAY_DASHED = [12, 8]; +const DASHARRAY_DOTTED = [3, 6]; + export interface ExcalidrawElementWithCanvas { element: ExcalidrawElement | ExcalidrawTextElement; canvas: HTMLCanvasElement; @@ -90,9 +93,9 @@ function drawElementOnCanvas( case "arrow": case "draw": case "line": { - (getShapeForElement(element) as Drawable[]).forEach((shape) => - rc.draw(shape), - ); + (getShapeForElement(element) as Drawable[]).forEach((shape) => { + rc.draw(shape); + }); break; } default: { @@ -157,16 +160,42 @@ function generateElement( let shape = shapeCache.get(element) || null; if (!shape) { elementWithCanvasCache.delete(element); + + const strokeLineDash = + element.strokeStyle === "dashed" + ? DASHARRAY_DASHED + : element.strokeStyle === "dotted" + ? DASHARRAY_DOTTED + : undefined; + // for non-solid strokes, disable multiStroke because it tends to make + // dashes/dots overlay each other + const disableMultiStroke = element.strokeStyle !== "solid"; + // for non-solid strokes, increase the width a bit to make it visually + // similar to solid strokes, because we're also disabling multiStroke + const strokeWidth = + element.strokeStyle !== "solid" + ? element.strokeWidth + 0.5 + : element.strokeWidth; + // when increasing strokeWidth, we must explicitly set fillWeight and + // hachureGap because if not specified, roughjs uses strokeWidth to + // calculate them (and we don't want the fills to be modified) + const fillWeight = element.strokeWidth / 2; + const hachureGap = element.strokeWidth * 4; + switch (element.type) { case "rectangle": shape = generator.rectangle(0, 0, element.width, element.height, { + strokeWidth, + fillWeight, + hachureGap, + strokeLineDash, + disableMultiStroke, stroke: element.strokeColor, fill: element.backgroundColor === "transparent" ? undefined : element.backgroundColor, fillStyle: element.fillStyle, - strokeWidth: element.strokeWidth, roughness: element.roughness, seed: element.seed, }); @@ -191,13 +220,17 @@ function generateElement( [leftX, leftY], ], { + strokeWidth, + fillWeight, + hachureGap, + strokeLineDash, + disableMultiStroke, stroke: element.strokeColor, fill: element.backgroundColor === "transparent" ? undefined : element.backgroundColor, fillStyle: element.fillStyle, - strokeWidth: element.strokeWidth, roughness: element.roughness, seed: element.seed, }, @@ -211,13 +244,17 @@ function generateElement( element.width, element.height, { + strokeWidth, + fillWeight, + hachureGap, + strokeLineDash, + disableMultiStroke, stroke: element.strokeColor, fill: element.backgroundColor === "transparent" ? undefined : element.backgroundColor, fillStyle: element.fillStyle, - strokeWidth: element.strokeWidth, roughness: element.roughness, seed: element.seed, curveFitting: 1, @@ -228,10 +265,14 @@ function generateElement( case "draw": case "arrow": { const options: Options = { + strokeWidth, + fillWeight, + hachureGap, + strokeLineDash, + disableMultiStroke, stroke: element.strokeColor, - strokeWidth: element.strokeWidth, - roughness: element.roughness, seed: element.seed, + roughness: element.roughness, }; // points array can be empty in the beginning, so it is important to add @@ -257,6 +298,13 @@ function generateElement( // add lines only in arrow if (element.type === "arrow") { const [x2, y2, x3, y3, x4, y4] = getArrowPoints(element, shape); + // for dotted arrows caps, reduce gap to make it more legible + if (element.strokeStyle === "dotted") { + options.strokeLineDash = [3, 4]; + // for solid/dashed, keep solid arrow cap + } else { + delete options.strokeLineDash; + } shape.push( ...[ generator.line(x3, y3, x2, y2, options), diff --git a/src/scene/export.ts b/src/scene/export.ts index 31c81db9..33ad8bc6 100644 --- a/src/scene/export.ts +++ b/src/scene/export.ts @@ -165,6 +165,7 @@ function getWatermarkElement(maxX: number, maxY: number) { backgroundColor: "transparent", fillStyle: "hachure", strokeWidth: 1, + strokeStyle: "solid", roughness: 1, opacity: 100, }); diff --git a/src/tests/__snapshots__/dragCreate.test.tsx.snap b/src/tests/__snapshots__/dragCreate.test.tsx.snap index 4532d739..13ae41e2 100644 --- a/src/tests/__snapshots__/dragCreate.test.tsx.snap +++ b/src/tests/__snapshots__/dragCreate.test.tsx.snap @@ -25,6 +25,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 3, @@ -49,6 +50,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", "version": 2, @@ -73,6 +75,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", "version": 2, @@ -106,6 +109,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "line", "version": 3, @@ -130,6 +134,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 2, diff --git a/src/tests/__snapshots__/move.test.tsx.snap b/src/tests/__snapshots__/move.test.tsx.snap index 1b2f319b..9c7119c0 100644 --- a/src/tests/__snapshots__/move.test.tsx.snap +++ b/src/tests/__snapshots__/move.test.tsx.snap @@ -12,6 +12,7 @@ Object { "roughness": 1, "seed": 2019559783, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -34,6 +35,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -56,6 +58,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, diff --git a/src/tests/__snapshots__/multiPointCreate.test.tsx.snap b/src/tests/__snapshots__/multiPointCreate.test.tsx.snap index 8cbd48a9..ec26e50c 100644 --- a/src/tests/__snapshots__/multiPointCreate.test.tsx.snap +++ b/src/tests/__snapshots__/multiPointCreate.test.tsx.snap @@ -30,6 +30,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 7, @@ -70,6 +71,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "line", "version": 7, diff --git a/src/tests/__snapshots__/regressionTests.test.tsx.snap b/src/tests/__snapshots__/regressionTests.test.tsx.snap index 9a46189c..dafbad6c 100644 --- a/src/tests/__snapshots__/regressionTests.test.tsx.snap +++ b/src/tests/__snapshots__/regressionTests.test.tsx.snap @@ -9,6 +9,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -59,6 +60,7 @@ Object { "roughness": 1, "seed": 2019559783, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -81,6 +83,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -126,6 +129,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -167,6 +171,7 @@ Object { "roughness": 1, "seed": 2019559783, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -186,6 +191,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -213,6 +219,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -262,6 +269,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -307,6 +315,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -334,6 +343,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#5f3dc4", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -383,6 +393,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#5f3dc4", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -428,6 +439,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -468,6 +480,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -508,6 +521,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -548,6 +562,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -588,6 +603,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#5f3dc4", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -615,6 +631,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -665,6 +682,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -710,6 +728,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -751,6 +770,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -778,6 +798,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -829,6 +850,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -874,6 +896,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -915,6 +938,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -957,6 +981,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -984,6 +1009,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -1034,6 +1060,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 2, @@ -1056,6 +1083,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 2, @@ -1101,6 +1129,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1141,6 +1170,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1160,6 +1190,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1201,6 +1232,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1220,6 +1252,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1247,6 +1280,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -1298,6 +1332,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 2, @@ -1320,6 +1355,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 2, @@ -1342,6 +1378,7 @@ Object { "roughness": 1, "seed": 1116226695, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 2, @@ -1387,6 +1424,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1427,6 +1465,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1446,6 +1485,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1486,6 +1526,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1505,6 +1546,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1524,6 +1566,7 @@ Object { "roughness": 1, "seed": 1116226695, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1566,6 +1609,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1585,6 +1629,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1604,6 +1649,7 @@ Object { "roughness": 1, "seed": 1116226695, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1631,6 +1677,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "down", @@ -1680,6 +1727,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 2, @@ -1702,6 +1750,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", "version": 2, @@ -1724,6 +1773,7 @@ Object { "roughness": 1, "seed": 1116226695, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", "version": 2, @@ -1757,6 +1807,7 @@ Object { "roughness": 1, "seed": 1505387817, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 3, @@ -1790,6 +1841,7 @@ Object { "roughness": 1, "seed": 760410951, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "line", "version": 3, @@ -1886,6 +1938,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1926,6 +1979,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -1945,6 +1999,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", "version": 3, @@ -1985,6 +2040,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -2004,6 +2060,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", "version": 3, @@ -2023,6 +2080,7 @@ Object { "roughness": 1, "seed": 1116226695, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", "version": 3, @@ -2063,6 +2121,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -2082,6 +2141,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", "version": 3, @@ -2101,6 +2161,7 @@ Object { "roughness": 1, "seed": 1116226695, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", "version": 3, @@ -2131,6 +2192,7 @@ Object { "roughness": 1, "seed": 1505387817, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 4, @@ -2171,6 +2233,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -2190,6 +2253,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", "version": 3, @@ -2209,6 +2273,7 @@ Object { "roughness": 1, "seed": 1116226695, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", "version": 3, @@ -2239,6 +2304,7 @@ Object { "roughness": 1, "seed": 1505387817, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 4, @@ -2269,6 +2335,7 @@ Object { "roughness": 1, "seed": 760410951, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "line", "version": 4, @@ -2464,6 +2531,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -2513,6 +2581,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 2, @@ -2558,6 +2627,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -2585,6 +2655,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -2634,6 +2705,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", "version": 2, @@ -2679,6 +2751,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", "version": 3, @@ -2706,6 +2779,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -2755,6 +2829,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", "version": 2, @@ -2800,6 +2875,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", "version": 3, @@ -2827,6 +2903,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -2887,6 +2964,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 3, @@ -2943,6 +3021,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 4, @@ -2970,6 +3049,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -3030,6 +3110,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "line", "version": 3, @@ -3086,6 +3167,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "line", "version": 4, @@ -3256,6 +3338,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -3316,6 +3399,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 3, @@ -3372,6 +3456,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 4, @@ -3399,6 +3484,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -3448,6 +3534,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", "version": 2, @@ -3493,6 +3580,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", "version": 3, @@ -3520,6 +3608,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -3569,6 +3658,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", "version": 2, @@ -3614,6 +3704,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", "version": 3, @@ -3641,6 +3732,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -3701,6 +3793,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "line", "version": 3, @@ -3757,6 +3850,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "line", "version": 4, @@ -3784,6 +3878,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -3833,6 +3928,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 2, @@ -3878,6 +3974,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -4048,6 +4145,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "down", @@ -4106,6 +4204,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -4171,6 +4270,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 18, @@ -4216,6 +4316,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -4257,6 +4358,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -4299,6 +4401,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -4342,6 +4445,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -4386,6 +4490,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -4431,6 +4536,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -4477,6 +4583,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -4524,6 +4631,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 10, @@ -4572,6 +4680,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 11, @@ -4621,6 +4730,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 12, @@ -4671,6 +4781,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 13, @@ -4722,6 +4833,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 14, @@ -4774,6 +4886,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 15, @@ -4827,6 +4940,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 16, @@ -4881,6 +4995,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 17, @@ -4936,6 +5051,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 18, @@ -4992,6 +5108,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 19, @@ -5019,6 +5136,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -5075,6 +5193,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -5120,6 +5239,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -5161,6 +5281,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -5203,6 +5324,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -5246,6 +5368,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -5290,6 +5413,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -5335,6 +5459,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -5381,6 +5506,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -5428,6 +5554,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 10, @@ -5455,6 +5582,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -5509,6 +5637,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -5554,6 +5683,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -5595,6 +5725,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -5637,6 +5768,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -5680,6 +5812,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -5724,6 +5857,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -5769,6 +5903,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -5796,6 +5931,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -5848,6 +5984,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -5893,6 +6030,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -5934,6 +6072,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -5976,6 +6115,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -6019,6 +6159,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -6046,6 +6187,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -6096,6 +6238,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -6141,6 +6284,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -6182,6 +6326,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -6209,6 +6354,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -6273,6 +6419,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 17, @@ -6318,6 +6465,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -6359,6 +6507,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -6401,6 +6550,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -6444,6 +6594,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -6488,6 +6639,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -6533,6 +6685,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -6579,6 +6732,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -6626,6 +6780,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 10, @@ -6674,6 +6829,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 11, @@ -6723,6 +6879,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 12, @@ -6773,6 +6930,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 13, @@ -6824,6 +6982,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 14, @@ -6876,6 +7035,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 15, @@ -6929,6 +7089,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 16, @@ -6983,6 +7144,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 17, @@ -7038,6 +7200,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 18, @@ -7065,6 +7228,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -7127,6 +7291,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 15, @@ -7172,6 +7337,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -7213,6 +7379,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -7255,6 +7422,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -7298,6 +7466,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -7342,6 +7511,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -7387,6 +7557,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -7433,6 +7604,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -7480,6 +7652,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 10, @@ -7528,6 +7701,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 11, @@ -7577,6 +7751,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 12, @@ -7627,6 +7802,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 13, @@ -7678,6 +7854,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 14, @@ -7730,6 +7907,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 15, @@ -7783,6 +7961,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 16, @@ -7810,6 +7989,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -7870,6 +8050,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 13, @@ -7915,6 +8096,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -7956,6 +8138,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -7998,6 +8181,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -8041,6 +8225,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -8085,6 +8270,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -8130,6 +8316,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -8176,6 +8363,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -8223,6 +8411,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 10, @@ -8271,6 +8460,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 11, @@ -8320,6 +8510,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 12, @@ -8370,6 +8561,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 13, @@ -8421,6 +8613,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 14, @@ -8448,6 +8641,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -8506,6 +8700,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 11, @@ -8551,6 +8746,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -8592,6 +8788,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -8634,6 +8831,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -8677,6 +8875,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -8721,6 +8920,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -8766,6 +8966,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -8812,6 +9013,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -8859,6 +9061,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 10, @@ -8907,6 +9110,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 11, @@ -8956,6 +9160,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 12, @@ -8983,6 +9188,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -9040,6 +9246,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 10, @@ -9085,6 +9292,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -9126,6 +9334,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -9168,6 +9377,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -9211,6 +9421,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -9255,6 +9466,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -9300,6 +9512,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -9346,6 +9559,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -9393,6 +9607,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 10, @@ -9441,6 +9656,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 11, @@ -9468,6 +9684,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -9523,6 +9740,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -9568,6 +9786,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -9609,6 +9828,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -9651,6 +9871,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -9694,6 +9915,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -9738,6 +9960,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -9783,6 +10006,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -9829,6 +10053,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -9856,6 +10081,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -9909,6 +10135,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -9954,6 +10181,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -9995,6 +10223,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -10037,6 +10266,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -10080,6 +10310,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -10124,6 +10355,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -10151,6 +10383,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -10202,6 +10435,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -10247,6 +10481,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -10288,6 +10523,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -10330,6 +10566,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -10357,6 +10594,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -10422,6 +10660,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 18, @@ -10467,6 +10706,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -10508,6 +10748,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -10550,6 +10791,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -10593,6 +10835,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -10637,6 +10880,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -10682,6 +10926,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -10728,6 +10973,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -10775,6 +11021,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 10, @@ -10823,6 +11070,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 11, @@ -10872,6 +11120,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 12, @@ -10922,6 +11171,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 13, @@ -10973,6 +11223,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 14, @@ -11025,6 +11276,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 15, @@ -11078,6 +11330,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 16, @@ -11132,6 +11385,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 17, @@ -11187,6 +11441,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 18, @@ -11243,6 +11498,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 19, @@ -11270,6 +11526,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -11333,6 +11590,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 16, @@ -11378,6 +11636,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -11419,6 +11678,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -11461,6 +11721,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -11504,6 +11765,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -11548,6 +11810,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -11593,6 +11856,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -11639,6 +11903,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -11686,6 +11951,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 10, @@ -11734,6 +12000,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 11, @@ -11783,6 +12050,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 12, @@ -11833,6 +12101,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 13, @@ -11884,6 +12153,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 14, @@ -11936,6 +12206,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 15, @@ -11989,6 +12260,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 16, @@ -12043,6 +12315,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 17, @@ -12070,6 +12343,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -12131,6 +12405,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 14, @@ -12176,6 +12451,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -12217,6 +12493,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -12259,6 +12536,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -12302,6 +12580,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -12346,6 +12625,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -12391,6 +12671,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -12437,6 +12718,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -12484,6 +12766,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 10, @@ -12532,6 +12815,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 11, @@ -12581,6 +12865,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 12, @@ -12631,6 +12916,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 13, @@ -12682,6 +12968,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 14, @@ -12734,6 +13021,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 15, @@ -12761,6 +13049,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -12820,6 +13109,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 12, @@ -12865,6 +13155,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -12906,6 +13197,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -12948,6 +13240,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 5, @@ -12991,6 +13284,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 6, @@ -13035,6 +13329,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 7, @@ -13080,6 +13375,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 8, @@ -13126,6 +13422,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 9, @@ -13173,6 +13470,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 10, @@ -13221,6 +13519,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 11, @@ -13270,6 +13569,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 12, @@ -13320,6 +13620,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 13, @@ -13347,6 +13648,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -13400,6 +13702,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -13422,6 +13725,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -13467,6 +13771,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -13507,6 +13812,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -13526,6 +13832,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -13567,6 +13874,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -13586,6 +13894,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -13629,6 +13938,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -13648,6 +13958,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -13692,6 +14003,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -13711,6 +14023,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 4, @@ -13738,6 +14051,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -13794,6 +14108,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "down", @@ -13852,6 +14167,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", @@ -13901,6 +14217,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -13923,6 +14240,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -13959,6 +14277,7 @@ Object { "roughness": 1, "seed": 1116226695, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 9, @@ -14003,6 +14322,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -14022,6 +14342,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -14059,6 +14380,7 @@ Object { "roughness": 1, "seed": 1116226695, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 8, @@ -14099,6 +14421,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -14118,6 +14441,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -14151,6 +14475,7 @@ Object { "roughness": 1, "seed": 1116226695, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 6, @@ -14193,6 +14518,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -14233,6 +14559,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -14252,6 +14579,7 @@ Object { "roughness": 1, "seed": 453191, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -14279,6 +14607,7 @@ Object { "currentItemOpacity": 100, "currentItemRoughness": 1, "currentItemStrokeColor": "#000000", + "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", "cursorButton": "up", diff --git a/src/tests/__snapshots__/resize.test.tsx.snap b/src/tests/__snapshots__/resize.test.tsx.snap index ed987aa2..e8cdcb6c 100644 --- a/src/tests/__snapshots__/resize.test.tsx.snap +++ b/src/tests/__snapshots__/resize.test.tsx.snap @@ -12,6 +12,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, @@ -34,6 +35,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 3, diff --git a/src/tests/__snapshots__/selection.test.tsx.snap b/src/tests/__snapshots__/selection.test.tsx.snap index 0ee3f156..1e173f1f 100644 --- a/src/tests/__snapshots__/selection.test.tsx.snap +++ b/src/tests/__snapshots__/selection.test.tsx.snap @@ -23,6 +23,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", "version": 3, @@ -56,6 +57,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "line", "version": 3, @@ -78,6 +80,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", "version": 2, @@ -100,6 +103,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", "version": 2, @@ -122,6 +126,7 @@ Object { "roughness": 1, "seed": 337897, "strokeColor": "#000000", + "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", "version": 2, diff --git a/src/tests/zindex.test.tsx b/src/tests/zindex.test.tsx index 1457457a..18e95255 100644 --- a/src/tests/zindex.test.tsx +++ b/src/tests/zindex.test.tsx @@ -36,6 +36,7 @@ function populateElements( backgroundColor: h.state.currentItemBackgroundColor, fillStyle: h.state.currentItemFillStyle, strokeWidth: h.state.currentItemStrokeWidth, + strokeStyle: h.state.currentItemStrokeStyle, roughness: h.state.currentItemRoughness, opacity: h.state.currentItemOpacity, }); diff --git a/src/types.ts b/src/types.ts index 3ca31c82..b5259cc1 100644 --- a/src/types.ts +++ b/src/types.ts @@ -4,6 +4,7 @@ import { NonDeletedExcalidrawElement, NonDeleted, TextAlign, + ExcalidrawElement, } from "./element/types"; import { SHAPES } from "./shapes"; import { Point as RoughPoint } from "roughjs/bin/geometry"; @@ -30,6 +31,7 @@ export type AppState = { currentItemBackgroundColor: string; currentItemFillStyle: string; currentItemStrokeWidth: number; + currentItemStrokeStyle: ExcalidrawElement["strokeStyle"]; currentItemRoughness: number; currentItemOpacity: number; currentItemFont: string;