|
@@ -1,3 +1,4 @@
|
|
|
+import { ROUNDNESS } from "../constants";
|
|
|
import { AppState } from "../types";
|
|
|
import {
|
|
|
ExcalidrawElement,
|
|
@@ -10,6 +11,7 @@ import {
|
|
|
ExcalidrawImageElement,
|
|
|
ExcalidrawTextElementWithContainer,
|
|
|
ExcalidrawTextContainer,
|
|
|
+ RoundnessType,
|
|
|
} from "./types";
|
|
|
|
|
|
export const isGenericElement = (
|
|
@@ -154,3 +156,51 @@ export const isBoundToContainer = (
|
|
|
};
|
|
|
|
|
|
export const isUsingAdaptiveRadius = (type: string) => type === "rectangle";
|
|
|
+
|
|
|
+export const isUsingProportionalRadius = (type: string) =>
|
|
|
+ type === "line" || type === "arrow" || type === "diamond";
|
|
|
+
|
|
|
+export const canApplyRoundnessTypeToElement = (
|
|
|
+ roundnessType: RoundnessType,
|
|
|
+ element: ExcalidrawElement,
|
|
|
+) => {
|
|
|
+ if (
|
|
|
+ (roundnessType === ROUNDNESS.ADAPTIVE_RADIUS ||
|
|
|
+ // if legacy roundness, it can be applied to elements that currently
|
|
|
+ // use adaptive radius
|
|
|
+ roundnessType === ROUNDNESS.LEGACY) &&
|
|
|
+ isUsingAdaptiveRadius(element.type)
|
|
|
+ ) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ if (
|
|
|
+ roundnessType === ROUNDNESS.PROPORTIONAL_RADIUS &&
|
|
|
+ isUsingProportionalRadius(element.type)
|
|
|
+ ) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+};
|
|
|
+
|
|
|
+export const getDefaultRoundnessTypeForElement = (
|
|
|
+ element: ExcalidrawElement,
|
|
|
+) => {
|
|
|
+ if (
|
|
|
+ element.type === "arrow" ||
|
|
|
+ element.type === "line" ||
|
|
|
+ element.type === "diamond"
|
|
|
+ ) {
|
|
|
+ return {
|
|
|
+ type: ROUNDNESS.PROPORTIONAL_RADIUS,
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ if (element.type === "rectangle") {
|
|
|
+ return {
|
|
|
+ type: ROUNDNESS.ADAPTIVE_RADIUS,
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ return null;
|
|
|
+};
|