|  | @@ -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;
 | 
	
		
			
				|  |  |  
 |