From 5854ac3eedd66b132a4095fa69e4ccd90b14b30d Mon Sep 17 00:00:00 2001 From: Ryan Di Date: Thu, 8 Dec 2022 23:48:49 +0800 Subject: [PATCH] feat: better default radius sizes for rectangles (#5553) Co-authored-by: Ryan Co-authored-by: dwelle --- src/actions/actionFlip.ts | 12 +- src/actions/actionProperties.tsx | 107 +- src/actions/actionStyles.ts | 1 + src/actions/types.ts | 2 +- src/appState.ts | 6 +- src/charts.ts | 4 +- src/components/Actions.tsx | 8 +- src/components/App.tsx | 24 +- src/constants.ts | 26 + src/data/restore.ts | 20 +- src/element/bounds.test.ts | 2 + src/element/bounds.ts | 21 +- src/element/collision.ts | 12 +- src/element/linearElementEditor.ts | 16 +- src/element/newElement.test.ts | 6 +- src/element/newElement.ts | 7 +- src/element/typeChecks.ts | 2 + src/element/types.ts | 13 +- src/math.ts | 36 +- src/packages/excalidraw/CHANGELOG.md | 6 + src/packages/excalidraw/example/App.tsx | 7 +- src/packages/utils/README.md | 2 +- src/renderer/renderElement.ts | 56 +- src/scene/comparisons.ts | 2 +- src/scene/index.ts | 2 +- .../__snapshots__/contextmenu.test.tsx.snap | 431 +++-- .../__snapshots__/dragCreate.test.tsx.snap | 20 +- src/tests/__snapshots__/move.test.tsx.snap | 24 +- .../multiPointCreate.test.tsx.snap | 8 +- .../regressionTests.test.tsx.snap | 1651 ++++++++++++----- .../__snapshots__/selection.test.tsx.snap | 20 +- .../data/__snapshots__/restore.test.ts.snap | 36 +- src/tests/data/restore.test.ts | 4 +- src/tests/fixtures/elementFixture.ts | 2 +- src/tests/helpers/api.ts | 33 +- src/tests/linearElementEditor.test.tsx | 41 +- .../packages/__snapshots__/utils.test.ts.snap | 3 +- .../scene/__snapshots__/export.test.ts.snap | 2 +- src/types.ts | 4 +- 39 files changed, 1861 insertions(+), 818 deletions(-) diff --git a/src/actions/actionFlip.ts b/src/actions/actionFlip.ts index 8314d767..31aefdc0 100644 --- a/src/actions/actionFlip.ts +++ b/src/actions/actionFlip.ts @@ -153,11 +153,7 @@ const flipElement = ( let initialPointsCoords; if (isLinearElement(element)) { - initialPointsCoords = getElementPointsCoords( - element, - element.points, - element.strokeSharpness, - ); + initialPointsCoords = getElementPointsCoords(element, element.points); } const initialElementAbsoluteCoords = getElementAbsoluteCoords(element); @@ -215,11 +211,7 @@ const flipElement = ( // Adjusting origin because when a beizer curve path exceeds min/max points it offsets the origin. // There's still room for improvement since when the line roughness is > 1 // we still have a small offset of the origin when fliipping the element. - const finalPointsCoords = getElementPointsCoords( - element, - element.points, - element.strokeSharpness, - ); + const finalPointsCoords = getElementPointsCoords(element, element.points); const topLeftCoordsDiff = initialPointsCoords[0] - finalPointsCoords[0]; const topRightCoordDiff = initialPointsCoords[2] - finalPointsCoords[2]; diff --git a/src/actions/actionProperties.tsx b/src/actions/actionProperties.tsx index ae73d6a9..4e6f0d58 100644 --- a/src/actions/actionProperties.tsx +++ b/src/actions/actionProperties.tsx @@ -42,6 +42,7 @@ import { DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, FONT_FAMILY, + ROUNDNESS, VERTICAL_ALIGN, } from "../constants"; import { @@ -57,7 +58,7 @@ import { import { isBoundToContainer, isLinearElement, - isLinearElementType, + isUsingAdaptiveRadius, } from "../element/typeChecks"; import { Arrowhead, @@ -72,7 +73,7 @@ import { getLanguage, t } from "../i18n"; import { KEYS } from "../keys"; import { randomInteger } from "../random"; import { - canChangeSharpness, + canChangeRoundness, canHaveArrowheads, getCommonAttributeOfSelectedElements, getSelectedElements, @@ -848,69 +849,71 @@ export const actionChangeVerticalAlign = register({ }, }); -export const actionChangeSharpness = register({ - name: "changeSharpness", +export const actionChangeRoundness = register({ + name: "changeRoundness", trackEvent: false, perform: (elements, appState, value) => { - const targetElements = getTargetElements( - getNonDeletedElements(elements), - appState, - ); - const shouldUpdateForNonLinearElements = targetElements.length - ? targetElements.every((el) => !isLinearElement(el)) - : !isLinearElementType(appState.activeTool.type); - const shouldUpdateForLinearElements = targetElements.length - ? targetElements.every(isLinearElement) - : isLinearElementType(appState.activeTool.type); return { elements: changeProperty(elements, appState, (el) => newElementWith(el, { - strokeSharpness: value, + roundness: + value === "round" + ? { + type: isUsingAdaptiveRadius(el.type) + ? ROUNDNESS.ADAPTIVE_RADIUS + : ROUNDNESS.PROPORTIONAL_RADIUS, + } + : null, }), ), appState: { ...appState, - currentItemStrokeSharpness: shouldUpdateForNonLinearElements - ? value - : appState.currentItemStrokeSharpness, - currentItemLinearStrokeSharpness: shouldUpdateForLinearElements - ? value - : appState.currentItemLinearStrokeSharpness, + currentItemRoundness: value, }, commitToHistory: true, }; }, - PanelComponent: ({ elements, appState, updateData }) => ( -
- {t("labels.edges")} - element.strokeSharpness, - (canChangeSharpness(appState.activeTool.type) && - (isLinearElementType(appState.activeTool.type) - ? appState.currentItemLinearStrokeSharpness - : appState.currentItemStrokeSharpness)) || - null, - )} - onChange={(value) => updateData(value)} - /> -
- ), + PanelComponent: ({ elements, appState, updateData }) => { + const targetElements = getTargetElements( + getNonDeletedElements(elements), + appState, + ); + + const hasLegacyRoundness = targetElements.some( + (el) => el.roundness?.type === ROUNDNESS.LEGACY, + ); + + return ( +
+ {t("labels.edges")} + + hasLegacyRoundness ? null : element.roundness ? "round" : "sharp", + (canChangeRoundness(appState.activeTool.type) && + appState.currentItemRoundness) || + null, + )} + onChange={(value) => updateData(value)} + /> +
+ ); + }, }); export const actionChangeArrowhead = register({ diff --git a/src/actions/actionStyles.ts b/src/actions/actionStyles.ts index 6396d5a8..ab2db9a1 100644 --- a/src/actions/actionStyles.ts +++ b/src/actions/actionStyles.ts @@ -77,6 +77,7 @@ export const actionPasteStyles = register({ fillStyle: elementStylesToCopyFrom?.fillStyle, opacity: elementStylesToCopyFrom?.opacity, roughness: elementStylesToCopyFrom?.roughness, + roundness: elementStylesToCopyFrom?.roundness, }); if (isTextElement(newElement)) { diff --git a/src/actions/types.ts b/src/actions/types.ts index b04cbef7..45c22254 100644 --- a/src/actions/types.ts +++ b/src/actions/types.ts @@ -91,7 +91,7 @@ export type ActionName = | "ungroup" | "goToCollaborator" | "addToLibrary" - | "changeSharpness" + | "changeRoundness" | "alignTop" | "alignBottom" | "alignLeft" diff --git a/src/appState.ts b/src/appState.ts index b35cd2a2..49792213 100644 --- a/src/appState.ts +++ b/src/appState.ts @@ -28,12 +28,11 @@ export const getDefaultAppState = (): Omit< currentItemFillStyle: "hachure", currentItemFontFamily: DEFAULT_FONT_FAMILY, currentItemFontSize: DEFAULT_FONT_SIZE, - currentItemLinearStrokeSharpness: "round", currentItemOpacity: 100, currentItemRoughness: 1, currentItemStartArrowhead: null, currentItemStrokeColor: oc.black, - currentItemStrokeSharpness: "sharp", + currentItemRoundness: "round", currentItemStrokeStyle: "solid", currentItemStrokeWidth: 1, currentItemTextAlign: DEFAULT_TEXT_ALIGN, @@ -120,7 +119,7 @@ const APP_STATE_STORAGE_CONF = (< currentItemFillStyle: { browser: true, export: false, server: false }, currentItemFontFamily: { browser: true, export: false, server: false }, currentItemFontSize: { browser: true, export: false, server: false }, - currentItemLinearStrokeSharpness: { + currentItemRoundness: { browser: true, export: false, server: false, @@ -129,7 +128,6 @@ const APP_STATE_STORAGE_CONF = (< currentItemRoughness: { browser: true, export: false, server: false }, currentItemStartArrowhead: { browser: true, export: false, server: false }, currentItemStrokeColor: { browser: true, export: false, server: false }, - currentItemStrokeSharpness: { browser: true, export: false, server: false }, currentItemStrokeStyle: { browser: true, export: false, server: false }, currentItemStrokeWidth: { browser: true, export: false, server: false }, currentItemTextAlign: { browser: true, export: false, server: false }, diff --git a/src/charts.ts b/src/charts.ts index 5f911638..e8980db6 100644 --- a/src/charts.ts +++ b/src/charts.ts @@ -172,7 +172,7 @@ const commonProps = { opacity: 100, roughness: 1, strokeColor: colors.elementStroke[0], - strokeSharpness: "sharp", + roundness: null, strokeStyle: "solid", strokeWidth: 1, verticalAlign: VERTICAL_ALIGN.MIDDLE, @@ -322,7 +322,7 @@ const chartBaseElements = ( text: spreadsheet.title, x: x + chartWidth / 2, y: y - BAR_HEIGHT - BAR_GAP * 2 - DEFAULT_FONT_SIZE, - strokeSharpness: "sharp", + roundness: null, strokeStyle: "solid", textAlign: "center", }) diff --git a/src/components/Actions.tsx b/src/components/Actions.tsx index 5ee6e340..fe017f77 100644 --- a/src/components/Actions.tsx +++ b/src/components/Actions.tsx @@ -5,7 +5,7 @@ import { ExcalidrawElement, PointerType } from "../element/types"; import { t } from "../i18n"; import { useDevice } from "../components/App"; import { - canChangeSharpness, + canChangeRoundness, canHaveArrowheads, getTargetElements, hasBackground, @@ -110,9 +110,9 @@ export const SelectedShapeActions = ({ )} - {(canChangeSharpness(appState.activeTool.type) || - targetElements.some((element) => canChangeSharpness(element.type))) && ( - <>{renderAction("changeSharpness")} + {(canChangeRoundness(appState.activeTool.type) || + targetElements.some((element) => canChangeRoundness(element.type))) && ( + <>{renderAction("changeRoundness")} )} {(hasText(appState.activeTool.type) || diff --git a/src/components/App.tsx b/src/components/App.tsx index ae943128..ea2f3bf9 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -70,6 +70,7 @@ import { MQ_RIGHT_SIDEBAR_MIN_WIDTH, MQ_SM_MAX_WIDTH, POINTER_BUTTON, + ROUNDNESS, SCROLL_TIMEOUT, TAP_TWICE_TIMEOUT, TEXT_TO_CENTER_SNAP_THRESHOLD, @@ -134,6 +135,7 @@ import { isInitializedImageElement, isLinearElement, isLinearElementType, + isUsingAdaptiveRadius, } from "../element/typeChecks"; import { ExcalidrawBindableElement, @@ -1658,9 +1660,9 @@ class App extends React.Component { fillStyle: this.state.currentItemFillStyle, strokeWidth: this.state.currentItemStrokeWidth, strokeStyle: this.state.currentItemStrokeStyle, + roundness: null, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, - strokeSharpness: this.state.currentItemStrokeSharpness, text, fontSize: this.state.currentItemFontSize, fontFamily: this.state.currentItemFontFamily, @@ -2569,7 +2571,7 @@ class App extends React.Component { strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, - strokeSharpness: this.state.currentItemStrokeSharpness, + roundness: null, text: "", fontSize: this.state.currentItemFontSize, fontFamily: this.state.currentItemFontFamily, @@ -4072,7 +4074,7 @@ class App extends React.Component { strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, - strokeSharpness: this.state.currentItemLinearStrokeSharpness, + roundness: null, simulatePressure: event.pressure === 0.5, locked: false, }); @@ -4128,8 +4130,8 @@ class App extends React.Component { strokeWidth: this.state.currentItemStrokeWidth, strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, + roundness: null, opacity: this.state.currentItemOpacity, - strokeSharpness: this.state.currentItemLinearStrokeSharpness, locked: false, }); @@ -4215,7 +4217,10 @@ class App extends React.Component { strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, - strokeSharpness: this.state.currentItemLinearStrokeSharpness, + roundness: + this.state.currentItemRoundness === "round" + ? { type: ROUNDNESS.PROPORTIONAL_RADIUS } + : null, startArrowhead, endArrowhead, locked: false, @@ -4266,7 +4271,14 @@ class App extends React.Component { strokeStyle: this.state.currentItemStrokeStyle, roughness: this.state.currentItemRoughness, opacity: this.state.currentItemOpacity, - strokeSharpness: this.state.currentItemStrokeSharpness, + roundness: + this.state.currentItemRoundness === "round" + ? { + type: isUsingAdaptiveRadius(elementType) + ? ROUNDNESS.ADAPTIVE_RADIUS + : ROUNDNESS.PROPORTIONAL_RADIUS, + } + : null, locked: false, }); diff --git a/src/constants.ts b/src/constants.ts index dab82771..38261a1d 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -216,6 +216,32 @@ export const TEXT_ALIGN = { export const ELEMENT_READY_TO_ERASE_OPACITY = 20; +// Radius represented as 25% of element's largest side (width/height). +// Used for LEGACY and PROPORTIONAL_RADIUS algorithms, or when the element is +// below the cutoff size. +export const DEFAULT_PROPORTIONAL_RADIUS = 0.25; +// Fixed radius for the ADAPTIVE_RADIUS algorithm. In pixels. +export const DEFAULT_ADAPTIVE_RADIUS = 32; +// roundness type (algorithm) +export const ROUNDNESS = { + // Used for legacy rounding (rectangles), which currently works the same + // as PROPORTIONAL_RADIUS, but we need to differentiate for UI purposes and + // forwards-compat. + LEGACY: 1, + + // Used for linear elements & diamonds + PROPORTIONAL_RADIUS: 2, + + // Current default algorithm for rectangles, using fixed pixel radius. + // It's working similarly to a regular border-radius, but attemps to make + // radius visually similar across differnt element sizes, especially + // very large and very small elements. + // + // NOTE right now we don't allow configuration and use a constant radius + // (see DEFAULT_ADAPTIVE_RADIUS constant) + ADAPTIVE_RADIUS: 3, +} as const; + export const COOKIES = { AUTH_STATE_COOKIE: "excplus-auth", } as const; diff --git a/src/data/restore.ts b/src/data/restore.ts index 95efee74..ff870153 100644 --- a/src/data/restore.ts +++ b/src/data/restore.ts @@ -3,6 +3,7 @@ import { ExcalidrawSelectionElement, ExcalidrawTextElement, FontFamilyValues, + StrokeRoundness, } from "../element/types"; import { AppState, @@ -17,7 +18,7 @@ import { isInvisiblySmallElement, refreshTextDimensions, } from "../element"; -import { isLinearElementType, isTextElement } from "../element/typeChecks"; +import { isTextElement, isUsingAdaptiveRadius } from "../element/typeChecks"; import { randomId } from "../random"; import { DEFAULT_FONT_FAMILY, @@ -25,6 +26,7 @@ import { DEFAULT_VERTICAL_ALIGN, PRECEDING_ELEMENT_KEY, FONT_FAMILY, + ROUNDNESS, } from "../constants"; import { getDefaultAppState } from "../appState"; import { LinearElementEditor } from "../element/linearElementEditor"; @@ -74,6 +76,8 @@ const restoreElementWithProperties = < customData?: ExcalidrawElement["customData"]; /** @deprecated */ boundElementIds?: readonly ExcalidrawElement["id"][]; + /** @deprecated */ + strokeSharpness?: StrokeRoundness; /** metadata that may be present in elements during collaboration */ [PRECEDING_ELEMENT_KEY]?: string; }, @@ -112,9 +116,17 @@ const restoreElementWithProperties = < height: element.height || 0, seed: element.seed ?? 1, groupIds: element.groupIds ?? [], - strokeSharpness: - element.strokeSharpness ?? - (isLinearElementType(element.type) ? "round" : "sharp"), + roundness: element.roundness + ? element.roundness + : element.strokeSharpness === "round" + ? { + // for old elements that would now use adaptive radius algo, + // use legacy algo instead + type: isUsingAdaptiveRadius(element.type) + ? ROUNDNESS.LEGACY + : ROUNDNESS.PROPORTIONAL_RADIUS, + } + : null, boundElements: element.boundElementIds ? element.boundElementIds.map((id) => ({ type: "arrow", id })) : element.boundElements ?? [], diff --git a/src/element/bounds.test.ts b/src/element/bounds.test.ts index c352a81e..850c5065 100644 --- a/src/element/bounds.test.ts +++ b/src/element/bounds.test.ts @@ -1,3 +1,4 @@ +import { ROUNDNESS } from "../constants"; import { getElementAbsoluteCoords, getElementBounds } from "./bounds"; import { ExcalidrawElement, ExcalidrawLinearElement } from "./types"; @@ -22,6 +23,7 @@ const _ce = ({ backgroundColor: "#000", fillStyle: "solid", strokeWidth: 1, + roundness: { type: ROUNDNESS.PROPORTIONAL_RADIUS }, roughness: 0, opacity: 1, x, diff --git a/src/element/bounds.ts b/src/element/bounds.ts index 9de28795..2eab1d93 100644 --- a/src/element/bounds.ts +++ b/src/element/bounds.ts @@ -378,7 +378,7 @@ const generateLinearElementShape = ( const options = generateRoughOptions(element); const method = (() => { - if (element.strokeSharpness !== "sharp") { + if (element.roundness) { return "curve"; } if (options.fill) { @@ -561,16 +561,12 @@ export const getResizedElementAbsoluteCoords = ( } else { // Line const gen = rough.generator(); - const curve = - element.strokeSharpness === "sharp" - ? gen.linearPath( - points as [number, number][], - generateRoughOptions(element), - ) - : gen.curve( - points as [number, number][], - generateRoughOptions(element), - ); + const curve = !element.roundness + ? gen.linearPath( + points as [number, number][], + generateRoughOptions(element), + ) + : gen.curve(points as [number, number][], generateRoughOptions(element)); const ops = getCurvePathOps(curve); bounds = getMinMaxXYFromCurvePathOps(ops); @@ -588,12 +584,11 @@ export const getResizedElementAbsoluteCoords = ( export const getElementPointsCoords = ( element: ExcalidrawLinearElement, points: readonly (readonly [number, number])[], - sharpness: ExcalidrawElement["strokeSharpness"], ): [number, number, number, number] => { // This might be computationally heavey const gen = rough.generator(); const curve = - sharpness === "sharp" + element.roundness == null ? gen.linearPath( points as [number, number][], generateRoughOptions(element), diff --git a/src/element/collision.ts b/src/element/collision.ts index e300f821..54540ae5 100644 --- a/src/element/collision.ts +++ b/src/element/collision.ts @@ -25,6 +25,7 @@ import { ExcalidrawFreeDrawElement, ExcalidrawImageElement, ExcalidrawLinearElement, + StrokeRoundness, } from "./types"; import { getElementAbsoluteCoords, getCurvePathOps, Bounds } from "./bounds"; @@ -419,7 +420,12 @@ const hitTestLinear = (args: HitTestArgs): boolean => { if (args.check === isInsideCheck) { const hit = shape.some((subshape) => - hitTestCurveInside(subshape, relX, relY, element.strokeSharpness), + hitTestCurveInside( + subshape, + relX, + relY, + element.roundness ? "round" : "sharp", + ), ); if (hit) { return true; @@ -851,7 +857,7 @@ const hitTestCurveInside = ( drawable: Drawable, x: number, y: number, - sharpness: ExcalidrawElement["strokeSharpness"], + roundness: StrokeRoundness, ) => { const ops = getCurvePathOps(drawable); const points: Mutable[] = []; @@ -875,7 +881,7 @@ const hitTestCurveInside = ( } } if (points.length >= 4) { - if (sharpness === "sharp") { + if (roundness === "sharp") { return isPointInPolygon(points, x, y); } const polygonPoints = pointsOnBezierCurves(points, 10, 5); diff --git a/src/element/linearElementEditor.ts b/src/element/linearElementEditor.ts index 4e53b034..5c478515 100644 --- a/src/element/linearElementEditor.ts +++ b/src/element/linearElementEditor.ts @@ -527,7 +527,7 @@ export class LinearElementEditor { endPoint[0], endPoint[1], ); - if (element.points.length > 2 && element.strokeSharpness === "round") { + if (element.points.length > 2 && element.roundness) { distance = getBezierCurveLength(element, endPoint); } @@ -541,7 +541,7 @@ export class LinearElementEditor { endPointIndex: number, ) { let segmentMidPoint = centerPoint(startPoint, endPoint); - if (element.points.length > 2 && element.strokeSharpness === "round") { + if (element.points.length > 2 && element.roundness) { const controlPoints = getControlPointsForBezierCurve( element, element.points[endPointIndex], @@ -1221,16 +1221,8 @@ export class LinearElementEditor { offsetY: number, otherUpdates?: { startBinding?: PointBinding; endBinding?: PointBinding }, ) { - const nextCoords = getElementPointsCoords( - element, - nextPoints, - element.strokeSharpness || "round", - ); - const prevCoords = getElementPointsCoords( - element, - element.points, - element.strokeSharpness || "round", - ); + const nextCoords = getElementPointsCoords(element, nextPoints); + const prevCoords = getElementPointsCoords(element, element.points); const nextCenterX = (nextCoords[0] + nextCoords[2]) / 2; const nextCenterY = (nextCoords[1] + nextCoords[3]) / 2; const prevCenterX = (prevCoords[0] + prevCoords[2]) / 2; diff --git a/src/element/newElement.test.ts b/src/element/newElement.test.ts index 2fc13ffd..991c034e 100644 --- a/src/element/newElement.test.ts +++ b/src/element/newElement.test.ts @@ -1,7 +1,7 @@ import { duplicateElement } from "./newElement"; import { mutateElement } from "./mutateElement"; import { API } from "../tests/helpers/api"; -import { FONT_FAMILY } from "../constants"; +import { FONT_FAMILY, ROUNDNESS } from "../constants"; import { isPrimitive } from "../utils"; const assertCloneObjects = (source: any, clone: any) => { @@ -25,7 +25,7 @@ it("clones arrow element", () => { fillStyle: "hachure", strokeWidth: 1, strokeStyle: "solid", - strokeSharpness: "round", + roundness: { type: ROUNDNESS.PROPORTIONAL_RADIUS }, roughness: 1, opacity: 100, }); @@ -71,7 +71,7 @@ it("clones text element", () => { fillStyle: "hachure", strokeWidth: 1, strokeStyle: "solid", - strokeSharpness: "round", + roundness: null, roughness: 1, opacity: 100, text: "hello", diff --git a/src/element/newElement.ts b/src/element/newElement.ts index 2c041800..8e7b8ee8 100644 --- a/src/element/newElement.ts +++ b/src/element/newElement.ts @@ -62,14 +62,15 @@ const _newElementBase = ( height = 0, angle = 0, groupIds = [], - strokeSharpness, + roundness = null, boundElements = null, link = null, locked, ...rest }: ElementConstructorOpts & Omit, "type">, ) => { - const element = { + // assign type to guard against excess properties + const element: Merge = { id: rest.id || randomId(), type, x, @@ -85,7 +86,7 @@ const _newElementBase = ( roughness, opacity, groupIds, - strokeSharpness, + roundness, seed: rest.seed ?? randomInteger(), version: rest.version || 1, versionNonce: rest.versionNonce ?? 0, diff --git a/src/element/typeChecks.ts b/src/element/typeChecks.ts index 57c75159..86aa2390 100644 --- a/src/element/typeChecks.ts +++ b/src/element/typeChecks.ts @@ -152,3 +152,5 @@ export const isBoundToContainer = ( isTextElement(element) ); }; + +export const isUsingAdaptiveRadius = (type: string) => type === "rectangle"; diff --git a/src/element/types.ts b/src/element/types.ts index 4aa7720e..01dee1fe 100644 --- a/src/element/types.ts +++ b/src/element/types.ts @@ -1,5 +1,11 @@ import { Point } from "../types"; -import { FONT_FAMILY, TEXT_ALIGN, THEME, VERTICAL_ALIGN } from "../constants"; +import { + FONT_FAMILY, + ROUNDNESS, + TEXT_ALIGN, + THEME, + VERTICAL_ALIGN, +} from "../constants"; export type ChartType = "bar" | "line"; export type FillStyle = "hachure" | "cross-hatch" | "solid"; @@ -9,7 +15,8 @@ export type Theme = typeof THEME[keyof typeof THEME]; export type FontString = string & { _brand: "fontString" }; export type GroupId = string; export type PointerType = "mouse" | "pen" | "touch"; -export type StrokeSharpness = "round" | "sharp"; +export type StrokeRoundness = "round" | "sharp"; +export type RoundnessType = ValueOf; export type StrokeStyle = "solid" | "dashed" | "dotted"; export type TextAlign = typeof TEXT_ALIGN[keyof typeof TEXT_ALIGN]; @@ -25,7 +32,7 @@ type _ExcalidrawElementBase = Readonly<{ fillStyle: FillStyle; strokeWidth: number; strokeStyle: StrokeStyle; - strokeSharpness: StrokeSharpness; + roundness: null | { type: RoundnessType; value?: number }; roughness: number; opacity: number; width: number; diff --git a/src/math.ts b/src/math.ts index dd1a73b5..2deb221b 100644 --- a/src/math.ts +++ b/src/math.ts @@ -1,6 +1,15 @@ import { NormalizedZoomValue, Point, Zoom } from "./types"; -import { LINE_CONFIRM_THRESHOLD } from "./constants"; -import { ExcalidrawLinearElement, NonDeleted } from "./element/types"; +import { + DEFAULT_ADAPTIVE_RADIUS, + LINE_CONFIRM_THRESHOLD, + DEFAULT_PROPORTIONAL_RADIUS, + ROUNDNESS, +} from "./constants"; +import { + ExcalidrawElement, + ExcalidrawLinearElement, + NonDeleted, +} from "./element/types"; import { getShapeForElement } from "./renderer/renderElement"; import { getCurvePathOps } from "./element/bounds"; @@ -266,6 +275,29 @@ export const getGridPoint = ( return [x, y]; }; +export const getCornerRadius = (x: number, element: ExcalidrawElement) => { + if ( + element.roundness?.type === ROUNDNESS.PROPORTIONAL_RADIUS || + element.roundness?.type === ROUNDNESS.LEGACY + ) { + return x * DEFAULT_PROPORTIONAL_RADIUS; + } + + if (element.roundness?.type === ROUNDNESS.ADAPTIVE_RADIUS) { + const fixedRadiusSize = element.roundness?.value ?? DEFAULT_ADAPTIVE_RADIUS; + + const CUTOFF_SIZE = fixedRadiusSize / DEFAULT_PROPORTIONAL_RADIUS; + + if (x <= CUTOFF_SIZE) { + return x * DEFAULT_PROPORTIONAL_RADIUS; + } + + return fixedRadiusSize; + } + + return 0; +}; + export const getControlPointsForBezierCurve = ( element: NonDeleted, endPoint: Point, diff --git a/src/packages/excalidraw/CHANGELOG.md b/src/packages/excalidraw/CHANGELOG.md index 9c8f68a2..a541b8b4 100644 --- a/src/packages/excalidraw/CHANGELOG.md +++ b/src/packages/excalidraw/CHANGELOG.md @@ -11,6 +11,12 @@ The change should be grouped under one of the below section and must contain PR Please add the latest change on the top under the correct section. --> +## Unreleased + +### Excalidraw schema + +- Merged `appState.currentItemStrokeSharpness` and `appState.currentItemLinearStrokeSharpness` into `appState.currentItemRoundness`. Renamed `changeSharpness` action to `changeRoundness`. Excalidraw element's `strokeSharpness` was changed to `roundness`. Check the PR for types and more details [#5553](https://github.com/excalidraw/excalidraw/pull/5553). + ## 0.13.0 (2022-10-27) ### Excalidraw API diff --git a/src/packages/excalidraw/example/App.tsx b/src/packages/excalidraw/example/App.tsx index 2a0ed1b3..61360534 100644 --- a/src/packages/excalidraw/example/App.tsx +++ b/src/packages/excalidraw/example/App.tsx @@ -13,7 +13,7 @@ import { withBatchedUpdates, withBatchedUpdatesThrottled, } from "../../../utils"; -import { EVENT } from "../../../constants"; +import { EVENT, ROUNDNESS } from "../../../constants"; import { distance2d } from "../../../math"; import { fileOpen } from "../../../data/filesystem"; import { loadSceneOrLibraryFromBlob } from "../../utils"; @@ -244,7 +244,10 @@ export default function App() { locked: false, link: null, updated: 1, - strokeSharpness: "round", + roundness: { + type: ROUNDNESS.ADAPTIVE_RADIUS, + value: 32, + }, }, ], null, diff --git a/src/packages/utils/README.md b/src/packages/utils/README.md index e9d53a52..03337854 100644 --- a/src/packages/utils/README.md +++ b/src/packages/utils/README.md @@ -68,7 +68,7 @@ const excalidrawDiagram = { roughness: 1, opacity: 100, groupIds: [], - strokeSharpness: "sharp", + roundness: null, seed: 1041657908, version: 120, versionNonce: 1188004276, diff --git a/src/renderer/renderElement.ts b/src/renderer/renderElement.ts index 60b6f793..0c7882ca 100644 --- a/src/renderer/renderElement.ts +++ b/src/renderer/renderElement.ts @@ -27,7 +27,7 @@ import { RoughGenerator } from "roughjs/bin/generator"; import { RenderConfig } from "../scene/types"; import { distance, getFontString, getFontFamilyString, isRTL } from "../utils"; -import { isPathALoop } from "../math"; +import { getCornerRadius, isPathALoop } from "../math"; import rough from "roughjs/bin/rough"; import { AppState, BinaryFiles, Zoom } from "../types"; import { getDefaultAppState } from "../appState"; @@ -424,10 +424,10 @@ const generateElementShape = ( switch (element.type) { case "rectangle": - if (element.strokeSharpness === "round") { + if (element.roundness) { const w = element.width; const h = element.height; - const r = Math.min(w, h) * 0.25; + const r = getCornerRadius(Math.min(w, h), element); shape = generator.path( `M ${r} 0 L ${w - r} 0 Q ${w} 0, ${w} ${r} L ${w} ${ h - r @@ -451,32 +451,36 @@ const generateElementShape = ( case "diamond": { const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = getDiamondPoints(element); - if (element.strokeSharpness === "round") { + if (element.roundness) { + const verticalRadius = getCornerRadius( + Math.abs(topX - leftX), + element, + ); + + const horizontalRadius = getCornerRadius( + Math.abs(rightY - topY), + element, + ); + shape = generator.path( - `M ${topX + (rightX - topX) * 0.25} ${ - topY + (rightY - topY) * 0.25 - } L ${rightX - (rightX - topX) * 0.25} ${ - rightY - (rightY - topY) * 0.25 - } + `M ${topX + verticalRadius} ${topY + horizontalRadius} L ${ + rightX - verticalRadius + } ${rightY - horizontalRadius} C ${rightX} ${rightY}, ${rightX} ${rightY}, ${ - rightX - (rightX - bottomX) * 0.25 - } ${rightY + (bottomY - rightY) * 0.25} - L ${bottomX + (rightX - bottomX) * 0.25} ${ - bottomY - (bottomY - rightY) * 0.25 - } + rightX - verticalRadius + } ${rightY + horizontalRadius} + L ${bottomX + verticalRadius} ${bottomY - horizontalRadius} C ${bottomX} ${bottomY}, ${bottomX} ${bottomY}, ${ - bottomX - (bottomX - leftX) * 0.25 - } ${bottomY - (bottomY - leftY) * 0.25} - L ${leftX + (bottomX - leftX) * 0.25} ${ - leftY + (bottomY - leftY) * 0.25 + bottomX - verticalRadius + } ${bottomY - horizontalRadius} + L ${leftX + verticalRadius} ${leftY + horizontalRadius} + C ${leftX} ${leftY}, ${leftX} ${leftY}, ${leftX + verticalRadius} ${ + leftY - horizontalRadius } - C ${leftX} ${leftY}, ${leftX} ${leftY}, ${ - leftX + (topX - leftX) * 0.25 - } ${leftY - (leftY - topY) * 0.25} - L ${topX - (topX - leftX) * 0.25} ${topY + (leftY - topY) * 0.25} - C ${topX} ${topY}, ${topX} ${topY}, ${ - topX + (rightX - topX) * 0.25 - } ${topY + (rightY - topY) * 0.25}`, + L ${topX - verticalRadius} ${topY + horizontalRadius} + C ${topX} ${topY}, ${topX} ${topY}, ${topX + verticalRadius} ${ + topY + horizontalRadius + }`, generateRoughOptions(element, true), ); } else { @@ -515,7 +519,7 @@ const generateElementShape = ( // curve is always the first element // this simplifies finding the curve for an element - if (element.strokeSharpness === "sharp") { + if (!element.roundness) { if (options.fill) { shape = [generator.polygon(points as [number, number][], options)]; } else { diff --git a/src/scene/comparisons.ts b/src/scene/comparisons.ts index 7b26ac4f..b88c8b1e 100644 --- a/src/scene/comparisons.ts +++ b/src/scene/comparisons.ts @@ -24,7 +24,7 @@ export const hasStrokeStyle = (type: string) => type === "arrow" || type === "line"; -export const canChangeSharpness = (type: string) => +export const canChangeRoundness = (type: string) => type === "rectangle" || type === "arrow" || type === "line" || diff --git a/src/scene/index.ts b/src/scene/index.ts index 62205077..08568aa4 100644 --- a/src/scene/index.ts +++ b/src/scene/index.ts @@ -12,7 +12,7 @@ export { hasStrokeWidth, hasStrokeStyle, canHaveArrowheads, - canChangeSharpness, + canChangeRoundness, getElementAtPosition, hasText, getElementsAtPosition, diff --git a/src/tests/__snapshots__/contextmenu.test.tsx.snap b/src/tests/__snapshots__/contextmenu.test.tsx.snap index c16a47c3..1c3cccca 100644 --- a/src/tests/__snapshots__/contextmenu.test.tsx.snap +++ b/src/tests/__snapshots__/contextmenu.test.tsx.snap @@ -15,12 +15,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -106,9 +105,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -137,9 +138,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -191,12 +194,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -279,9 +281,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -335,9 +339,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -373,12 +379,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -459,9 +464,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -488,9 +495,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -544,9 +553,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -584,9 +595,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -610,9 +623,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -650,9 +665,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -676,9 +693,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -714,12 +733,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -800,9 +818,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -829,9 +849,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -885,9 +907,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -925,9 +949,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -951,9 +977,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -991,9 +1019,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1017,9 +1047,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1055,12 +1087,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -1143,9 +1174,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1199,9 +1232,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1237,12 +1272,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -1321,9 +1355,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1377,9 +1413,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1415,9 +1453,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1453,12 +1493,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -1539,9 +1578,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1568,9 +1609,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1624,9 +1667,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1664,9 +1709,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1690,9 +1737,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1728,12 +1777,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -1822,9 +1870,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1853,9 +1903,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1909,9 +1961,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1949,9 +2003,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1975,9 +2031,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2021,9 +2079,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2049,9 +2109,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2087,12 +2149,11 @@ Object { "currentItemFillStyle": "cross-hatch", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 60, "currentItemRoughness": 2, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#c92a2a", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "dotted", "currentItemStrokeWidth": 2, "currentItemTextAlign": "left", @@ -2175,9 +2236,11 @@ Object { "locked": false, "opacity": 60, "roughness": 2, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#c92a2a", - "strokeSharpness": "sharp", "strokeStyle": "dotted", "strokeWidth": 2, "type": "rectangle", @@ -2204,9 +2267,11 @@ Object { "locked": false, "opacity": 60, "roughness": 2, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#c92a2a", - "strokeSharpness": "sharp", "strokeStyle": "dotted", "strokeWidth": 2, "type": "rectangle", @@ -2260,9 +2325,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2300,9 +2367,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2326,9 +2395,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2366,9 +2437,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2392,9 +2465,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#c92a2a", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2432,9 +2507,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2458,9 +2535,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#c92a2a", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2498,9 +2577,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2524,9 +2605,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#c92a2a", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2564,9 +2647,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2590,9 +2675,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#c92a2a", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 2, "type": "rectangle", @@ -2630,9 +2717,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2656,9 +2745,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#c92a2a", - "strokeSharpness": "sharp", "strokeStyle": "dotted", "strokeWidth": 2, "type": "rectangle", @@ -2696,9 +2787,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2722,9 +2815,11 @@ Object { "locked": false, "opacity": 100, "roughness": 2, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#c92a2a", - "strokeSharpness": "sharp", "strokeStyle": "dotted", "strokeWidth": 2, "type": "rectangle", @@ -2762,9 +2857,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2788,9 +2885,11 @@ Object { "locked": false, "opacity": 60, "roughness": 2, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#c92a2a", - "strokeSharpness": "sharp", "strokeStyle": "dotted", "strokeWidth": 2, "type": "rectangle", @@ -2828,9 +2927,11 @@ Object { "locked": false, "opacity": 60, "roughness": 2, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#c92a2a", - "strokeSharpness": "sharp", "strokeStyle": "dotted", "strokeWidth": 2, "type": "rectangle", @@ -2854,9 +2955,11 @@ Object { "locked": false, "opacity": 60, "roughness": 2, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#c92a2a", - "strokeSharpness": "sharp", "strokeStyle": "dotted", "strokeWidth": 2, "type": "rectangle", @@ -2892,12 +2995,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -2978,9 +3080,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3007,9 +3111,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3063,9 +3169,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3103,9 +3211,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3129,9 +3239,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3169,9 +3281,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3195,9 +3309,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3233,12 +3349,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -3319,9 +3434,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3348,9 +3465,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3404,9 +3523,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3444,9 +3565,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3470,9 +3593,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3510,9 +3635,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3536,9 +3663,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3574,12 +3703,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -3664,9 +3792,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3693,9 +3823,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3749,9 +3881,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3789,9 +3923,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3815,9 +3951,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3861,9 +3999,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3889,9 +4029,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3931,9 +4073,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3957,9 +4101,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3995,12 +4141,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -4087,9 +4232,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4116,9 +4263,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4172,9 +4321,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4212,9 +4363,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4238,9 +4391,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4276,12 +4431,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -4372,9 +4526,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4403,9 +4559,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4459,9 +4617,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4499,9 +4659,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4525,9 +4687,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4572,9 +4736,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4600,9 +4766,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4638,12 +4806,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -4747,12 +4914,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -4834,12 +5000,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -4920,9 +5085,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4949,9 +5116,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4978,9 +5147,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -5034,9 +5205,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", diff --git a/src/tests/__snapshots__/dragCreate.test.tsx.snap b/src/tests/__snapshots__/dragCreate.test.tsx.snap index ef7b8a68..ffcf57b0 100644 --- a/src/tests/__snapshots__/dragCreate.test.tsx.snap +++ b/src/tests/__snapshots__/dragCreate.test.tsx.snap @@ -29,11 +29,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -62,9 +64,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -93,9 +97,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -135,11 +141,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -168,9 +176,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", diff --git a/src/tests/__snapshots__/move.test.tsx.snap b/src/tests/__snapshots__/move.test.tsx.snap index 68a73383..7c0eed29 100644 --- a/src/tests/__snapshots__/move.test.tsx.snap +++ b/src/tests/__snapshots__/move.test.tsx.snap @@ -14,9 +14,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -43,9 +45,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -72,9 +76,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -106,9 +112,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -140,9 +148,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -186,6 +196,9 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "startArrowhead": null, "startBinding": Object { @@ -194,7 +207,6 @@ Object { "gap": 10, }, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", diff --git a/src/tests/__snapshots__/multiPointCreate.test.tsx.snap b/src/tests/__snapshots__/multiPointCreate.test.tsx.snap index 2289ec86..03ef0d26 100644 --- a/src/tests/__snapshots__/multiPointCreate.test.tsx.snap +++ b/src/tests/__snapshots__/multiPointCreate.test.tsx.snap @@ -34,11 +34,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -85,11 +87,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", diff --git a/src/tests/__snapshots__/regressionTests.test.tsx.snap b/src/tests/__snapshots__/regressionTests.test.tsx.snap index b7de2aa0..ca181ddb 100644 --- a/src/tests/__snapshots__/regressionTests.test.tsx.snap +++ b/src/tests/__snapshots__/regressionTests.test.tsx.snap @@ -15,12 +15,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -112,9 +111,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -143,9 +144,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -174,9 +177,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -230,9 +235,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -270,9 +277,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -296,9 +305,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -336,9 +347,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -362,9 +375,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -388,9 +403,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -433,9 +450,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -461,9 +480,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -489,9 +510,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -527,12 +550,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -631,9 +653,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -662,9 +686,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -693,9 +719,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -749,9 +777,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -789,9 +819,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -815,9 +847,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -855,9 +889,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -881,9 +917,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -907,9 +945,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -951,9 +991,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -979,9 +1021,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1007,9 +1051,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1045,12 +1091,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -1135,9 +1180,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1167,9 +1214,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1198,9 +1247,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1254,9 +1305,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1294,9 +1347,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1320,9 +1375,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1367,9 +1424,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1395,9 +1454,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1438,9 +1499,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1466,9 +1529,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1508,9 +1573,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1536,9 +1603,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1562,9 +1631,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1611,9 +1682,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1640,9 +1713,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1668,9 +1743,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1712,9 +1789,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1741,9 +1820,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1769,9 +1850,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1813,9 +1896,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1842,9 +1927,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1870,9 +1957,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -1908,12 +1997,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -1997,9 +2085,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -2053,9 +2143,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -2094,9 +2186,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -2132,12 +2226,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -2226,9 +2319,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2257,9 +2352,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2288,9 +2385,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2344,9 +2443,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2384,9 +2485,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2410,9 +2513,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2450,9 +2555,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2476,9 +2583,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2502,9 +2611,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2547,9 +2658,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2575,9 +2688,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2603,9 +2718,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2641,12 +2758,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -2730,9 +2846,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2759,9 +2877,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2815,9 +2935,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2856,9 +2978,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2882,9 +3006,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -2920,12 +3046,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -3006,9 +3131,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3062,9 +3189,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3100,12 +3229,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -3189,9 +3317,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3218,9 +3348,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3247,9 +3379,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 2019559783, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -3303,9 +3437,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3343,9 +3479,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3369,9 +3507,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3409,9 +3549,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3435,9 +3577,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3461,9 +3605,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 2019559783, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -3502,9 +3648,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3528,9 +3676,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 453191, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3554,9 +3704,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 2019559783, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -3592,12 +3744,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#5f3dc4", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -3678,9 +3829,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#5f3dc4", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3734,9 +3887,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3774,9 +3929,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3814,9 +3971,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#5f3dc4", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3852,12 +4011,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -3941,9 +4099,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -3997,9 +4157,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4038,9 +4200,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4076,12 +4240,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -4167,9 +4330,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4223,9 +4388,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4264,9 +4431,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4306,9 +4475,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4344,12 +4515,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -4433,9 +4603,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4462,9 +4634,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4518,9 +4692,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4558,9 +4734,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4584,9 +4762,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4622,12 +4802,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -4712,9 +4891,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4741,9 +4922,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4770,9 +4953,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4826,9 +5011,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4866,9 +5053,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4892,9 +5081,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4932,9 +5123,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4958,9 +5151,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -4984,9 +5179,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -5022,12 +5219,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -5045,9 +5241,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 2019559783, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "selection", @@ -5115,9 +5313,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 2019559783, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "selection", @@ -5160,9 +5360,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -5189,9 +5391,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -5245,9 +5449,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -5285,9 +5491,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -5311,9 +5519,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -5349,12 +5559,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -5372,9 +5581,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 2019559783, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "selection", @@ -5462,9 +5673,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -5491,9 +5704,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -5547,9 +5762,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -5587,9 +5804,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -5613,9 +5832,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -5651,12 +5872,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -5674,9 +5894,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "selection", @@ -5742,9 +5964,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "selection", @@ -5787,9 +6011,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -5843,9 +6069,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -5881,12 +6109,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -5969,9 +6196,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -6025,9 +6254,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -6063,12 +6294,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -6151,9 +6381,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6182,9 +6414,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6213,9 +6447,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6269,9 +6505,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6309,9 +6547,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6335,9 +6575,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6375,9 +6617,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6401,9 +6645,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6427,9 +6673,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6473,9 +6721,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6501,9 +6751,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6529,9 +6781,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6567,12 +6821,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -6660,9 +6913,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6689,9 +6944,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -6745,9 +7002,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6785,9 +7044,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6811,9 +7072,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -6854,9 +7117,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -6880,9 +7145,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -6918,12 +7185,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -7004,9 +7270,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -7033,9 +7301,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -7062,9 +7332,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -7104,11 +7376,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1150084233, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -7148,11 +7422,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 238820263, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -7199,11 +7475,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1505387817, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -7250,11 +7528,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 760410951, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -7304,10 +7584,10 @@ Object { 0, ], "roughness": 1, + "roundness": null, "seed": 941653321, "simulatePressure": false, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "freedraw", @@ -7361,9 +7641,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -7401,9 +7683,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -7427,9 +7711,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -7467,9 +7753,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -7493,9 +7781,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -7519,9 +7809,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -7559,9 +7851,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -7585,9 +7879,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -7611,9 +7907,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -7650,11 +7948,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1150084233, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -7692,9 +7992,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -7718,9 +8020,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -7744,9 +8048,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -7783,11 +8089,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1150084233, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -7824,11 +8132,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 238820263, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -7866,9 +8176,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -7892,9 +8204,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -7918,9 +8232,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -7957,11 +8273,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1150084233, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -7998,11 +8316,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 238820263, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -8042,11 +8362,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1505387817, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -8084,9 +8406,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -8110,9 +8434,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -8136,9 +8462,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -8175,11 +8503,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1150084233, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -8216,11 +8546,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 238820263, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -8264,11 +8596,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1505387817, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -8306,9 +8640,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -8332,9 +8668,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -8358,9 +8696,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -8397,11 +8737,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1150084233, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -8438,11 +8780,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 238820263, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -8486,11 +8830,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1505387817, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -8530,11 +8876,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 760410951, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -8572,9 +8920,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -8598,9 +8948,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -8624,9 +8976,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -8663,11 +9017,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1150084233, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -8704,11 +9060,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 238820263, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -8752,11 +9110,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1505387817, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -8800,11 +9160,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 760410951, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -8842,9 +9204,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -8868,9 +9232,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -8894,9 +9260,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -8933,11 +9301,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1150084233, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -8974,11 +9344,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 238820263, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -9022,11 +9394,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1505387817, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -9070,11 +9444,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 760410951, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -9121,10 +9497,10 @@ Object { 0, ], "roughness": 1, + "roundness": null, "seed": 941653321, "simulatePressure": false, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "freedraw", @@ -9160,12 +9536,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -9251,9 +9626,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -9280,9 +9657,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -9309,9 +9688,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -9365,9 +9746,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -9405,9 +9788,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -9431,9 +9816,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -9471,9 +9858,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -9497,9 +9886,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -9523,9 +9914,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -9561,12 +9954,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -9653,9 +10045,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -9682,9 +10076,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -9736,9 +10132,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -9776,9 +10174,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -9802,9 +10202,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -9840,12 +10242,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -9930,9 +10331,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -9959,9 +10362,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -10016,9 +10421,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -10042,9 +10449,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -10080,12 +10489,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -10171,9 +10579,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -10200,9 +10610,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -10257,9 +10669,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -10283,9 +10697,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -10325,9 +10741,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -10351,9 +10769,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1278240551, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -10389,12 +10809,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -10475,9 +10894,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -10531,9 +10952,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -10569,12 +10992,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -10655,9 +11077,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -10711,9 +11135,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -10749,12 +11175,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -10835,9 +11260,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -10891,9 +11318,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -10929,12 +11358,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -11051,11 +11479,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -11122,11 +11552,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -11162,12 +11594,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -11284,11 +11715,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -11355,11 +11788,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -11395,12 +11830,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -11504,10 +11938,10 @@ Object { 0, ], "roughness": 1, + "roundness": null, "seed": 337897, "simulatePressure": false, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "freedraw", @@ -11584,10 +12018,10 @@ Object { 0, ], "roughness": 1, + "roundness": null, "seed": 337897, "simulatePressure": false, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "freedraw", @@ -11623,12 +12057,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -11745,11 +12178,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -11816,11 +12251,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -11856,12 +12293,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -11942,9 +12378,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -11998,9 +12436,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -12036,12 +12476,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -12158,11 +12597,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -12229,11 +12670,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -12269,12 +12712,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -12355,9 +12797,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -12411,9 +12855,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -12449,12 +12895,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -12558,10 +13003,10 @@ Object { 0, ], "roughness": 1, + "roundness": null, "seed": 337897, "simulatePressure": false, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "freedraw", @@ -12638,10 +13083,10 @@ Object { 0, ], "roughness": 1, + "roundness": null, "seed": 337897, "simulatePressure": false, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "freedraw", @@ -12677,12 +13122,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -12763,9 +13207,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -12819,9 +13265,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -12857,12 +13305,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -12956,9 +13403,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 915032327, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -12987,9 +13436,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 747212839, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13018,9 +13469,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 760410951, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13049,9 +13502,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13080,9 +13535,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13111,9 +13568,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13167,9 +13626,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13207,9 +13668,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13233,9 +13696,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13273,9 +13738,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13299,9 +13766,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13325,9 +13794,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13372,9 +13843,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13400,9 +13873,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13428,9 +13903,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13476,9 +13953,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 915032327, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13504,9 +13983,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 747212839, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13532,9 +14013,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 760410951, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13560,9 +14043,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13588,9 +14073,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13616,9 +14103,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13654,12 +14143,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -13744,9 +14232,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13773,9 +14263,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13829,9 +14321,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13869,9 +14363,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13895,9 +14391,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -13933,12 +14431,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -14044,12 +14541,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -14153,12 +14649,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -14242,9 +14737,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14298,9 +14795,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14336,12 +14835,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -14431,9 +14929,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14460,9 +14960,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14516,9 +15018,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14556,9 +15060,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14582,9 +15088,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14626,9 +15134,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14652,9 +15162,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14690,12 +15202,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -14782,9 +15293,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14811,9 +15324,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14840,9 +15355,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14896,9 +15413,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14936,9 +15455,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -14962,9 +15483,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15002,9 +15525,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15028,9 +15553,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15054,9 +15581,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15101,9 +15630,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15129,9 +15660,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15157,9 +15690,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15201,9 +15736,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15227,9 +15764,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15253,9 +15792,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15291,12 +15832,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -15377,9 +15917,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15433,9 +15975,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15473,9 +16017,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15511,12 +16057,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -15611,9 +16156,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15643,9 +16190,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15675,9 +16224,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1014066025, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15707,9 +16258,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15763,9 +16316,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15803,9 +16358,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15829,9 +16386,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15876,9 +16435,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15904,9 +16465,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15946,9 +16509,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -15974,9 +16539,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16000,9 +16567,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1014066025, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16042,9 +16611,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16070,9 +16641,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16096,9 +16669,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1014066025, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16122,9 +16697,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16169,9 +16746,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16197,9 +16776,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16225,9 +16806,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1014066025, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16253,9 +16836,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16301,9 +16886,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16330,9 +16917,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16359,9 +16948,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 1014066025, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16388,9 +16979,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 400692809, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16426,12 +17019,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -16535,12 +17127,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -16625,9 +17216,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16657,9 +17250,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16689,9 +17284,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16745,9 +17342,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16785,9 +17384,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16811,9 +17412,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16851,9 +17454,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16877,9 +17482,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16903,9 +17510,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16949,9 +17558,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -16977,9 +17588,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17005,9 +17618,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17049,9 +17664,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17077,9 +17694,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17105,9 +17724,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17151,9 +17772,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17180,9 +17803,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17209,9 +17834,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17256,9 +17883,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17285,9 +17914,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17314,9 +17945,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17352,12 +17985,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -17375,9 +18007,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1116226695, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "selection", @@ -17447,9 +18081,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 1116226695, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "selection", @@ -17492,9 +18128,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17521,9 +18159,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -17550,9 +18190,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -17606,9 +18248,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17646,9 +18290,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17672,9 +18318,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -17712,9 +18360,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17738,9 +18388,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -17764,9 +18416,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -17802,12 +18456,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -17825,9 +18478,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "selection", @@ -17895,9 +18550,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "selection", @@ -17940,9 +18597,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -17969,9 +18628,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -18025,9 +18686,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -18065,9 +18728,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -18091,9 +18756,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -18129,12 +18796,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -18240,12 +18906,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -18326,9 +18991,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -18355,9 +19022,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -18400,11 +19069,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -18446,9 +19117,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -18472,9 +19145,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -18518,11 +19193,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -18560,9 +19237,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -18586,9 +19265,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -18628,11 +19309,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 401146281, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -18683,9 +19366,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -18723,9 +19408,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -18749,9 +19436,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 449462985, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", @@ -18787,12 +19476,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 3, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", @@ -18896,12 +19584,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", diff --git a/src/tests/__snapshots__/selection.test.tsx.snap b/src/tests/__snapshots__/selection.test.tsx.snap index d3f6ae52..6379fa0a 100644 --- a/src/tests/__snapshots__/selection.test.tsx.snap +++ b/src/tests/__snapshots__/selection.test.tsx.snap @@ -27,11 +27,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -71,11 +73,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "round", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -102,9 +106,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "diamond", @@ -131,9 +137,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "ellipse", @@ -160,9 +168,11 @@ Object { "locked": false, "opacity": 100, "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": 337897, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "rectangle", diff --git a/src/tests/data/__snapshots__/restore.test.ts.snap b/src/tests/data/__snapshots__/restore.test.ts.snap index 34da0673..8af4f83c 100644 --- a/src/tests/data/__snapshots__/restore.test.ts.snap +++ b/src/tests/data/__snapshots__/restore.test.ts.snap @@ -27,11 +27,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": Any, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "arrow", @@ -62,9 +64,11 @@ Object { "locked": false, "opacity": 10, "roughness": 2, + "roundness": Object { + "type": 3, + }, "seed": Any, "strokeColor": "red", - "strokeSharpness": "round", "strokeStyle": "dashed", "strokeWidth": 2, "type": "rectangle", @@ -95,9 +99,11 @@ Object { "locked": false, "opacity": 10, "roughness": 2, + "roundness": Object { + "type": 3, + }, "seed": Any, "strokeColor": "red", - "strokeSharpness": "round", "strokeStyle": "dashed", "strokeWidth": 2, "type": "ellipse", @@ -128,9 +134,11 @@ Object { "locked": false, "opacity": 10, "roughness": 2, + "roundness": Object { + "type": 3, + }, "seed": Any, "strokeColor": "red", - "strokeSharpness": "round", "strokeStyle": "dashed", "strokeWidth": 2, "type": "diamond", @@ -160,10 +168,12 @@ Object { "points": Array [], "pressures": Array [], "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": Any, "simulatePressure": true, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "freedraw", @@ -203,11 +213,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": Any, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -247,11 +259,13 @@ Object { ], ], "roughness": 1, + "roundness": Object { + "type": 2, + }, "seed": Any, "startArrowhead": null, "startBinding": null, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "type": "line", @@ -283,9 +297,11 @@ Object { "opacity": 100, "originalText": "text", "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": Any, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "text": "text", @@ -320,9 +336,11 @@ Object { "opacity": 100, "originalText": "test", "roughness": 1, + "roundness": Object { + "type": 3, + }, "seed": Any, "strokeColor": "#000000", - "strokeSharpness": "sharp", "strokeStyle": "solid", "strokeWidth": 1, "text": "", diff --git a/src/tests/data/restore.test.ts b/src/tests/data/restore.test.ts index 3ce03e58..6e6bf0a3 100644 --- a/src/tests/data/restore.test.ts +++ b/src/tests/data/restore.test.ts @@ -10,7 +10,7 @@ import { API } from "../helpers/api"; import { getDefaultAppState } from "../../appState"; import { ImportedDataState } from "../../data/types"; import { NormalizedZoomValue } from "../../types"; -import { FONT_FAMILY } from "../../constants"; +import { FONT_FAMILY, ROUNDNESS } from "../../constants"; import { newElementWith } from "../../element/mutateElement"; const mockSizeHelper = jest.spyOn(sizeHelpers, "isInvisiblySmallElement"); @@ -255,7 +255,7 @@ describe("restoreElements", () => { width: 100, height: 200, groupIds: ["1", "2", "3"], - strokeSharpness: "round", + roundness: { type: ROUNDNESS.PROPORTIONAL_RADIUS }, }); elements.push(element); diff --git a/src/tests/fixtures/elementFixture.ts b/src/tests/fixtures/elementFixture.ts index ea5980ca..e9db6489 100644 --- a/src/tests/fixtures/elementFixture.ts +++ b/src/tests/fixtures/elementFixture.ts @@ -15,7 +15,7 @@ const elementBase: Omit = { roughness: 1, opacity: 100, groupIds: [], - strokeSharpness: "sharp", + roundness: null, seed: 1041657908, version: 120, versionNonce: 1188004276, diff --git a/src/tests/helpers/api.ts b/src/tests/helpers/api.ts index 3e0de153..7f3e958c 100644 --- a/src/tests/helpers/api.ts +++ b/src/tests/helpers/api.ts @@ -8,7 +8,7 @@ import { FileId, } from "../../element/types"; import { newElement, newTextElement, newLinearElement } from "../../element"; -import { DEFAULT_VERTICAL_ALIGN } from "../../constants"; +import { DEFAULT_VERTICAL_ALIGN, ROUNDNESS } from "../../constants"; import { getDefaultAppState } from "../../appState"; import { GlobalTestState, createEvent, fireEvent } from "../test-utils"; import fs from "fs"; @@ -18,6 +18,7 @@ import { getMimeType } from "../../data/blob"; import { newFreeDrawElement, newImageElement } from "../../element/newElement"; import { Point } from "../../types"; import { getSelectedElements } from "../../scene/selection"; +import { isLinearElementType } from "../../element/typeChecks"; const readFile = util.promisify(fs.readFile); @@ -89,7 +90,7 @@ export class API { fillStyle?: ExcalidrawGenericElement["fillStyle"]; strokeWidth?: ExcalidrawGenericElement["strokeWidth"]; strokeStyle?: ExcalidrawGenericElement["strokeStyle"]; - strokeSharpness?: ExcalidrawGenericElement["strokeSharpness"]; + roundness?: ExcalidrawGenericElement["roundness"]; roughness?: ExcalidrawGenericElement["roughness"]; opacity?: ExcalidrawGenericElement["opacity"]; // text props @@ -125,7 +126,20 @@ export class API { const appState = h?.state || getDefaultAppState(); - const base = { + const base: Omit< + ExcalidrawGenericElement, + | "id" + | "width" + | "height" + | "type" + | "seed" + | "version" + | "versionNonce" + | "isDeleted" + | "groupIds" + | "link" + | "updated" + > = { x, y, angle: rest.angle ?? 0, @@ -135,8 +149,17 @@ export class API { fillStyle: rest.fillStyle ?? appState.currentItemFillStyle, strokeWidth: rest.strokeWidth ?? appState.currentItemStrokeWidth, strokeStyle: rest.strokeStyle ?? appState.currentItemStrokeStyle, - strokeSharpness: - rest.strokeSharpness ?? appState.currentItemStrokeSharpness, + roundness: ( + rest.roundness === undefined + ? appState.currentItemRoundness === "round" + : rest.roundness + ) + ? { + type: isLinearElementType(type) + ? ROUNDNESS.PROPORTIONAL_RADIUS + : ROUNDNESS.ADAPTIVE_RADIUS, + } + : null, roughness: rest.roughness ?? appState.currentItemRoughness, opacity: rest.opacity ?? appState.currentItemOpacity, boundElements: rest.boundElements ?? null, diff --git a/src/tests/linearElementEditor.test.tsx b/src/tests/linearElementEditor.test.tsx index 9e7fa567..c3366406 100644 --- a/src/tests/linearElementEditor.test.tsx +++ b/src/tests/linearElementEditor.test.tsx @@ -20,6 +20,7 @@ import { resize, rotate } from "./utils"; import { getBoundTextElementPosition, wrapText } from "../element/textElement"; import { getMaxContainerWidth } from "../element/newElement"; import * as textElementUtils from "../element/textElement"; +import { ROUNDNESS } from "../constants"; const renderScene = jest.spyOn(Renderer, "renderScene"); @@ -51,7 +52,7 @@ describe("Test Linear Elements", () => { const createTwoPointerLinearElement = ( type: ExcalidrawLinearElement["type"], - strokeSharpness: ExcalidrawLinearElement["strokeSharpness"] = "sharp", + roundness: ExcalidrawElement["roundness"] = null, roughness: ExcalidrawLinearElement["roughness"] = 0, ) => { const line = API.createElement({ @@ -65,7 +66,7 @@ describe("Test Linear Elements", () => { [0, 0], [p2[0] - p1[0], p2[1] - p1[1]], ], - strokeSharpness, + roundness, }); h.elements = [line]; @@ -75,7 +76,7 @@ describe("Test Linear Elements", () => { const createThreePointerLinearElement = ( type: ExcalidrawLinearElement["type"], - strokeSharpness: ExcalidrawLinearElement["strokeSharpness"] = "sharp", + roundness: ExcalidrawElement["roundness"] = null, roughness: ExcalidrawLinearElement["roughness"] = 0, ) => { //dragging line from midpoint @@ -92,7 +93,7 @@ describe("Test Linear Elements", () => { [p3[0], p3[1]], [p2[0] - p1[0], p2[1] - p1[1]], ], - strokeSharpness, + roundness, }); h.elements = [line]; mouse.clickAt(p1[0], p1[1]); @@ -286,7 +287,7 @@ describe("Test Linear Elements", () => { `); }); - it("should update the midpoints when element sharpness changed", async () => { + it("should update the midpoints when element roundness changed", async () => { createThreePointerLinearElement("line"); const line = h.elements[0] as ExcalidrawLinearElement; @@ -299,7 +300,7 @@ describe("Test Linear Elements", () => { h.state, ); - // update sharpness + // update roundness fireEvent.click(screen.getByTitle("Round")); expect(renderScene).toHaveBeenCalledTimes(12); @@ -325,7 +326,9 @@ describe("Test Linear Elements", () => { }); it("should update all the midpoints when element position changed", async () => { - createThreePointerLinearElement("line", "round"); + createThreePointerLinearElement("line", { + type: ROUNDNESS.PROPORTIONAL_RADIUS, + }); const line = h.elements[0] as ExcalidrawLinearElement; expect(line.points.length).toEqual(3); @@ -370,8 +373,8 @@ describe("Test Linear Elements", () => { `); }); - describe("When edges are sharp", () => { - // This is the expected midpoint for line with sharp edge + describe("When edges are round", () => { + // This is the expected midpoint for line with round edge // hence hardcoding it so if later some bug is introduced // this will fail and we can fix it const firstSegmentMidpoint: Point = [55, 45]; @@ -525,7 +528,9 @@ describe("Test Linear Elements", () => { let line: ExcalidrawLinearElement; beforeEach(() => { - line = createThreePointerLinearElement("line", "round"); + line = createThreePointerLinearElement("line", { + type: ROUNDNESS.PROPORTIONAL_RADIUS, + }); expect(line.points.length).toEqual(3); enterLineEditingMode(line); @@ -768,7 +773,9 @@ describe("Test Linear Elements", () => { }); it("should return correct position for arrow with odd points", () => { - createThreePointerLinearElement("arrow", "round"); + createThreePointerLinearElement("arrow", { + type: ROUNDNESS.PROPORTIONAL_RADIUS, + }); const arrow = h.elements[0] as ExcalidrawLinearElement; const { textElement, container } = createBoundTextElement( DEFAULT_TEXT, @@ -788,7 +795,9 @@ describe("Test Linear Elements", () => { }); it("should return correct position for arrow with even points", () => { - createThreePointerLinearElement("arrow", "round"); + createThreePointerLinearElement("arrow", { + type: ROUNDNESS.PROPORTIONAL_RADIUS, + }); const arrow = h.elements[0] as ExcalidrawLinearElement; const { textElement, container } = createBoundTextElement( DEFAULT_TEXT, @@ -903,7 +912,9 @@ describe("Test Linear Elements", () => { }); it("should not rotate the bound text and update position of bound text and bounding box correctly when arrow rotated", () => { - createThreePointerLinearElement("arrow", "round"); + createThreePointerLinearElement("arrow", { + type: ROUNDNESS.PROPORTIONAL_RADIUS, + }); const arrow = h.elements[0] as ExcalidrawLinearElement; @@ -967,7 +978,9 @@ describe("Test Linear Elements", () => { }); it("should resize and position the bound text and bounding box correctly when 3 pointer arrow element resized", () => { - createThreePointerLinearElement("arrow", "round"); + createThreePointerLinearElement("arrow", { + type: ROUNDNESS.PROPORTIONAL_RADIUS, + }); const arrow = h.elements[0] as ExcalidrawLinearElement; diff --git a/src/tests/packages/__snapshots__/utils.test.ts.snap b/src/tests/packages/__snapshots__/utils.test.ts.snap index 75397290..da3d8439 100644 --- a/src/tests/packages/__snapshots__/utils.test.ts.snap +++ b/src/tests/packages/__snapshots__/utils.test.ts.snap @@ -15,12 +15,11 @@ Object { "currentItemFillStyle": "hachure", "currentItemFontFamily": 1, "currentItemFontSize": 20, - "currentItemLinearStrokeSharpness": "round", "currentItemOpacity": 100, "currentItemRoughness": 1, + "currentItemRoundness": "round", "currentItemStartArrowhead": null, "currentItemStrokeColor": "#000000", - "currentItemStrokeSharpness": "sharp", "currentItemStrokeStyle": "solid", "currentItemStrokeWidth": 1, "currentItemTextAlign": "left", diff --git a/src/tests/scene/__snapshots__/export.test.ts.snap b/src/tests/scene/__snapshots__/export.test.ts.snap index 9ad1ce8c..8015ebc4 100644 --- a/src/tests/scene/__snapshots__/export.test.ts.snap +++ b/src/tests/scene/__snapshots__/export.test.ts.snap @@ -95,7 +95,7 @@ exports[`exportToSvg with elements that have a link 1`] = ` exports[`exportToSvg with exportEmbedScene 1`] = ` " - eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1SPW/CMFx1MDAxMN35XHUwMDE1kbtcIpGk4aNstFRVpapcdTAwMWRcdTAwMTiQWnUw8YVYMbaxXHUwMDFkPoT477VccsRtxNpcclx1MDAwZpbu+b278907dKJcYpm9XHUwMDA0NI5cdTAwMTDscswoUXiLulx1MDAwZd+A0lRw+5T6WIta5Z5ZXHUwMDFhI8e9XHUwMDFlXHUwMDEzVlBcbm1OfGCwXHUwMDAybrRlfNk4ilx1MDAwZf62L5Q41Wau1lx1MDAxZpOiopyk63w1fJtOXj691JN2lpMlWVx1MDAxM+9d4fthXHUwMDEzbykxpcWSOG6wXHUwMDEy6LI0LVx1MDAxMPMlc21cdTAwMDZEXHUwMDFiJSp4XHUwMDEyTCjXyF3sTyi9wHm1VKLmJHCSPsaLXCJwXG7K2Mzs2WlcdTAwMDA4L2tcdTAwMDWoVWF+abGFNzot7ICDypZcXJZcdTAwMWO0/qNcdTAwMTFcdTAwMTLn1Oxbv3L9yVfip/vdzl9iJc95kHbBr85cdTAwMDCIT5Ulg/7wIVx1MDAxZTUvYb9JXHUwMDFht9F3wf2uk2Q0iuMsXHUwMDFkXHUwMDBlXHUwMDFhXHUwMDA21VO7auPTXHUwMDE2mGlcYnN0I3xcdTAwMGU24DVjzWMtXHQ+icJXXHUwMDE55VWbZ11VXcl9cSmheCU4QVx1MDAxZT92b0a7XHUwMDE57X+MXHUwMDA2jFGp4Ww0e/thICzlzNj8lnKyXHUwMDFk2lDYPl5ZbOGP03ubusWCa/Zw7Fx1MDAxY39cdTAwMDCLqmbvIn0= + eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1SsW7CMFx1MDAxMN35iihdkUjSQChcdTAwMWItVVWpalx1MDAwN1x1MDAwNqRWXHUwMDFkTHxJrFx1MDAxONvEXHUwMDBlXHUwMDEwIf69tlx1MDAwM3GJXHUwMDE4O9aDpXt+7+58945cdTAwMDPP81UjwJ95Plx1MDAxY1JEXHSu0N5cdTAwMWZcdTAwMWF8XHUwMDA3lSSc6afIxpLXVWqZhVJiNlx1MDAxYVGuXHUwMDA1XHUwMDA1l6rlXHUwMDAzhVxyMCU140vHnne0t34h2Kh2q2r7Mc9KwnC0TTfJ22L+8mmllnTQnDiMu7gxhe+TLt5cdTAwMTOsXG6NhUHQYVx1MDAwNZC8UD1cdTAwMTCxnJo2XHUwMDFkXCJVxUt44pRXppG7wFx1MDAxZVd6jdIyr3jNsOOEY4TWmeNkhNKlamg7XHUwMDAwlFx1MDAxNnVcdTAwMDV+r8Lq0mJcdTAwMGbvdJLrXHUwMDAxO5UumVx1MDAxN1xmpLzScIFSoprer0x/4lx1MDAxNdvpfv/OwPA5XHUwMDAzqyl1hVx1MDAwMbDNXHUwMDEwh5Nx8lx1MDAxMEy7XHUwMDE3t9YwXG766DtndsVhOJ1cdTAwMDZBXHUwMDFjJZOOQeRCb1jZtFx1MDAxOaJcdTAwMTLc+ExcdTAwMTPPbvtXjdRcdTAwMDKjVuR+SFx0K/s8babyRu6LOTFBXHUwMDFizrBv8dPw31///vpTf1x1MDAwMaVESDj7S992XHUwMDA2Plx1MDAxMmKpdH5Nad3m71xi7Fx1MDAxZm/sM7PH6K07zT7BNHs8XHJOP7VXYMUifQ==