cd514d72d6
Introduces constant width freedraw mode, keeping the original variable mode as default. --------- Signed-off-by: Mark Tolmacs <mark@lazycat.hu> Co-authored-by: dwelle <5153846+dwelle@users.noreply.github.com>
58 lines
1.9 KiB
TypeScript
58 lines
1.9 KiB
TypeScript
import type { ExcalidrawFreeDrawElement } from "@excalidraw/element/types";
|
|
|
|
import { Excalidraw } from "../index";
|
|
|
|
import { API } from "./helpers/api";
|
|
import { UI } from "./helpers/ui";
|
|
import { act, fireEvent, render, screen } from "./test-utils";
|
|
|
|
const { h } = window;
|
|
|
|
describe("freedraw mode action", () => {
|
|
beforeEach(async () => {
|
|
await render(<Excalidraw handleKeyboardGlobally={true} />);
|
|
});
|
|
|
|
afterEach(async () => {
|
|
// https://github.com/floating-ui/floating-ui/issues/1908#issuecomment-1301553793
|
|
await act(async () => {});
|
|
});
|
|
|
|
it("applies currentItemStrokeVariability to newly drawn freedraw elements", () => {
|
|
// default app state draws constant-width strokes
|
|
expect(h.state.currentItemStrokeVariability).toBe("constant");
|
|
|
|
UI.createElement("freedraw", { x: 0, y: 0 });
|
|
|
|
expect(
|
|
(h.elements[0] as ExcalidrawFreeDrawElement).strokeOptions?.variability,
|
|
).toBe("constant");
|
|
expect(
|
|
(h.elements[0] as ExcalidrawFreeDrawElement).strokeOptions?.streamline,
|
|
).toBe(0.5);
|
|
});
|
|
|
|
it("toggling the radio updates both the selected element and the default", () => {
|
|
const element = UI.createElement("freedraw", { x: 0, y: 0 });
|
|
API.setSelectedElements([element.get()]);
|
|
|
|
fireEvent.click(screen.getByTitle("Variable"));
|
|
expect(
|
|
(h.elements[0] as ExcalidrawFreeDrawElement).strokeOptions?.variability,
|
|
).toBe("variable");
|
|
expect(
|
|
(h.elements[0] as ExcalidrawFreeDrawElement).strokeOptions?.streamline,
|
|
).toBe(0.5);
|
|
expect(h.state.currentItemStrokeVariability).toBe("variable");
|
|
|
|
fireEvent.click(screen.getByTitle("Constant"));
|
|
expect(
|
|
(h.elements[0] as ExcalidrawFreeDrawElement).strokeOptions?.variability,
|
|
).toBe("constant");
|
|
expect(
|
|
(h.elements[0] as ExcalidrawFreeDrawElement).strokeOptions?.streamline,
|
|
).toBe(0.5);
|
|
expect(h.state.currentItemStrokeVariability).toBe("constant");
|
|
});
|
|
});
|