|
|
|
@ -24,6 +24,7 @@ import {
|
|
|
|
|
import * as textElementUtils from "../element/textElement";
|
|
|
|
|
import { ROUNDNESS, VERTICAL_ALIGN } from "../constants";
|
|
|
|
|
import { vi } from "vitest";
|
|
|
|
|
import { arrayToMap } from "../utils";
|
|
|
|
|
|
|
|
|
|
const renderInteractiveScene = vi.spyOn(Renderer, "renderInteractiveScene");
|
|
|
|
|
const renderStaticScene = vi.spyOn(Renderer, "renderStaticScene");
|
|
|
|
@ -307,6 +308,7 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
const midPointsWithSharpEdge = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
@ -320,6 +322,7 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
const midPointsWithRoundEdge = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
h.elements[0] as ExcalidrawLinearElement,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
expect(midPointsWithRoundEdge[0]).not.toEqual(midPointsWithSharpEdge[0]);
|
|
|
|
@ -351,7 +354,11 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
const points = LinearElementEditor.getPointsGlobalCoordinates(line);
|
|
|
|
|
expect([line.x, line.y]).toEqual(points[0]);
|
|
|
|
|
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(line, h.state);
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const startPoint = centerPoint(points[0], midPoints[0] as Point);
|
|
|
|
|
const deltaX = 50;
|
|
|
|
@ -373,6 +380,7 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
const newMidPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
expect(midPoints[0]).not.toEqual(newMidPoints[0]);
|
|
|
|
@ -458,7 +466,11 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
it("should update only the first segment midpoint when its point is dragged", async () => {
|
|
|
|
|
const points = LinearElementEditor.getPointsGlobalCoordinates(line);
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(line, h.state);
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const hitCoords: Point = [points[0][0], points[0][1]];
|
|
|
|
|
|
|
|
|
@ -478,6 +490,7 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
const newMidPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
@ -487,7 +500,11 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
it("should hide midpoints in the segment when points moved close", async () => {
|
|
|
|
|
const points = LinearElementEditor.getPointsGlobalCoordinates(line);
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(line, h.state);
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const hitCoords: Point = [points[0][0], points[0][1]];
|
|
|
|
|
|
|
|
|
@ -507,6 +524,7 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
const newMidPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
// This midpoint is hidden since the points are too close
|
|
|
|
@ -526,7 +544,11 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
]);
|
|
|
|
|
expect(line.points.length).toEqual(4);
|
|
|
|
|
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(line, h.state);
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
// delete 3rd point
|
|
|
|
|
deletePoint(points[2]);
|
|
|
|
@ -538,6 +560,7 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
const newMidPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
expect(newMidPoints.length).toEqual(2);
|
|
|
|
@ -615,7 +638,11 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
it("should update all the midpoints when its point is dragged", async () => {
|
|
|
|
|
const points = LinearElementEditor.getPointsGlobalCoordinates(line);
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(line, h.state);
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const hitCoords: Point = [points[0][0], points[0][1]];
|
|
|
|
|
|
|
|
|
@ -630,6 +657,7 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
const newMidPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
@ -651,7 +679,11 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
it("should hide midpoints in the segment when points moved close", async () => {
|
|
|
|
|
const points = LinearElementEditor.getPointsGlobalCoordinates(line);
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(line, h.state);
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const hitCoords: Point = [points[0][0], points[0][1]];
|
|
|
|
|
|
|
|
|
@ -671,6 +703,7 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
const newMidPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
// This mid point is hidden due to point being too close
|
|
|
|
@ -685,7 +718,11 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
]);
|
|
|
|
|
expect(line.points.length).toEqual(4);
|
|
|
|
|
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(line, h.state);
|
|
|
|
|
const midPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
const points = LinearElementEditor.getPointsGlobalCoordinates(line);
|
|
|
|
|
|
|
|
|
|
// delete 3rd point
|
|
|
|
@ -694,6 +731,7 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
|
|
|
|
|
const newMidPoints = LinearElementEditor.getEditorMidPoints(
|
|
|
|
|
line,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
h.state,
|
|
|
|
|
);
|
|
|
|
|
expect(newMidPoints.length).toEqual(2);
|
|
|
|
@ -762,7 +800,7 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
type: "text",
|
|
|
|
|
x: 0,
|
|
|
|
|
y: 0,
|
|
|
|
|
text: wrapText(text, font, getBoundTextMaxWidth(container)),
|
|
|
|
|
text: wrapText(text, font, getBoundTextMaxWidth(container, null)),
|
|
|
|
|
containerId: container.id,
|
|
|
|
|
width: 30,
|
|
|
|
|
height: 20,
|
|
|
|
@ -986,8 +1024,13 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
collaboration made
|
|
|
|
|
easy"
|
|
|
|
|
`);
|
|
|
|
|
expect(LinearElementEditor.getElementAbsoluteCoords(container, true))
|
|
|
|
|
.toMatchInlineSnapshot(`
|
|
|
|
|
expect(
|
|
|
|
|
LinearElementEditor.getElementAbsoluteCoords(
|
|
|
|
|
container,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
true,
|
|
|
|
|
),
|
|
|
|
|
).toMatchInlineSnapshot(`
|
|
|
|
|
[
|
|
|
|
|
20,
|
|
|
|
|
20,
|
|
|
|
@ -1020,8 +1063,13 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
"Online whiteboard
|
|
|
|
|
collaboration made easy"
|
|
|
|
|
`);
|
|
|
|
|
expect(LinearElementEditor.getElementAbsoluteCoords(container, true))
|
|
|
|
|
.toMatchInlineSnapshot(`
|
|
|
|
|
expect(
|
|
|
|
|
LinearElementEditor.getElementAbsoluteCoords(
|
|
|
|
|
container,
|
|
|
|
|
h.app.scene.getNonDeletedElementsMap(),
|
|
|
|
|
true,
|
|
|
|
|
),
|
|
|
|
|
).toMatchInlineSnapshot(`
|
|
|
|
|
[
|
|
|
|
|
20,
|
|
|
|
|
35,
|
|
|
|
@ -1121,7 +1169,11 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
expect(rect.x).toBe(400);
|
|
|
|
|
expect(rect.y).toBe(0);
|
|
|
|
|
expect(
|
|
|
|
|
wrapText(textElement.originalText, font, getBoundTextMaxWidth(arrow)),
|
|
|
|
|
wrapText(
|
|
|
|
|
textElement.originalText,
|
|
|
|
|
font,
|
|
|
|
|
getBoundTextMaxWidth(arrow, null),
|
|
|
|
|
),
|
|
|
|
|
).toMatchInlineSnapshot(`
|
|
|
|
|
"Online whiteboard
|
|
|
|
|
collaboration made easy"
|
|
|
|
@ -1140,11 +1192,17 @@ describe("Test Linear Elements", () => {
|
|
|
|
|
expect(rect.x).toBe(200);
|
|
|
|
|
expect(rect.y).toBe(0);
|
|
|
|
|
expect(handleBindTextResizeSpy).toHaveBeenCalledWith(
|
|
|
|
|
h.elements[1],
|
|
|
|
|
h.elements[0],
|
|
|
|
|
arrayToMap(h.elements),
|
|
|
|
|
"nw",
|
|
|
|
|
false,
|
|
|
|
|
);
|
|
|
|
|
expect(
|
|
|
|
|
wrapText(textElement.originalText, font, getBoundTextMaxWidth(arrow)),
|
|
|
|
|
wrapText(
|
|
|
|
|
textElement.originalText,
|
|
|
|
|
font,
|
|
|
|
|
getBoundTextMaxWidth(arrow, null),
|
|
|
|
|
),
|
|
|
|
|
).toMatchInlineSnapshot(`
|
|
|
|
|
"Online whiteboard
|
|
|
|
|
collaboration made
|
|
|
|
|