fix: Paste clipboard contents into unbound text elements (#5849)

* Fix #5848.

* Add test.

* some tweaks

Co-authored-by: Aakansha Doshi <aakansha1216@gmail.com>
This commit is contained in:
DanielJGeiger 2022-11-09 00:00:22 -06:00 committed by GitHub
parent e201e79cd0
commit a0ecfed4cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 8 deletions

View File

@ -435,6 +435,25 @@ describe("textWysiwyg", () => {
);
expect(h.state.zoom.value).toBe(1);
});
it("should paste text correctly", async () => {
Keyboard.keyPress(KEYS.ENTER);
await new Promise((r) => setTimeout(r, 0));
const text = "A quick brown fox jumps over the lazy dog.";
//@ts-ignore
textarea.onpaste({
preventDefault: () => {},
//@ts-ignore
clipboardData: {
getData: () => text,
},
});
await new Promise((cb) => setTimeout(cb, 0));
textarea.blur();
expect(textElement.text).toBe(text);
});
});
describe("Test container-bound text", () => {
@ -916,6 +935,8 @@ describe("textWysiwyg", () => {
editor.blur();
expect(rectangle.width).toBe(110);
expect(rectangle.height).toBe(210);
const textElement = h.elements[1] as ExcalidrawTextElement;
expect(textElement.text).toBe(wrappedText);
});
});
});

View File

@ -290,17 +290,14 @@ export const textWysiwyg = ({
fontSize: app.state.currentItemFontSize,
fontFamily: app.state.currentItemFontFamily,
});
const wrappedText = container
? wrapText(data, font, getMaxContainerWidth(container))
: data;
const wrappedText = wrapText(
data,
font,
getMaxContainerWidth(container!),
);
const dimensions = measureText(wrappedText, font);
editable.style.height = `${dimensions.height}px`;
if (data) {
onChange(wrappedText);
}
onChange(wrappedText);
};
editable.oninput = () => {
const updatedTextElement = Scene.getScene(element)?.getElement(