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:
parent
e201e79cd0
commit
a0ecfed4cd
@ -435,6 +435,25 @@ describe("textWysiwyg", () => {
|
|||||||
);
|
);
|
||||||
expect(h.state.zoom.value).toBe(1);
|
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", () => {
|
describe("Test container-bound text", () => {
|
||||||
@ -916,6 +935,8 @@ describe("textWysiwyg", () => {
|
|||||||
editor.blur();
|
editor.blur();
|
||||||
expect(rectangle.width).toBe(110);
|
expect(rectangle.width).toBe(110);
|
||||||
expect(rectangle.height).toBe(210);
|
expect(rectangle.height).toBe(210);
|
||||||
|
const textElement = h.elements[1] as ExcalidrawTextElement;
|
||||||
|
expect(textElement.text).toBe(wrappedText);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -290,17 +290,14 @@ export const textWysiwyg = ({
|
|||||||
fontSize: app.state.currentItemFontSize,
|
fontSize: app.state.currentItemFontSize,
|
||||||
fontFamily: app.state.currentItemFontFamily,
|
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);
|
const dimensions = measureText(wrappedText, font);
|
||||||
editable.style.height = `${dimensions.height}px`;
|
editable.style.height = `${dimensions.height}px`;
|
||||||
if (data) {
|
|
||||||
onChange(wrappedText);
|
onChange(wrappedText);
|
||||||
}
|
|
||||||
};
|
};
|
||||||
editable.oninput = () => {
|
editable.oninput = () => {
|
||||||
const updatedTextElement = Scene.getScene(element)?.getElement(
|
const updatedTextElement = Scene.getScene(element)?.getElement(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user