Skip to content

Commit 5dda010

Browse files
authored
Merge pull request #93 from inokawa/fix-whitespace
Fix regression in Svelte/Angular support
2 parents 0ef9645 + 91d301e commit 5dda010

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

e2e/framework.spec.ts

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,28 @@ test("smoke", async ({ page }) => {
3131
const text = "test";
3232
await input(editable, text);
3333

34-
const value1 = await getText(editable);
35-
expect(value1).toEqual(insertAt(initialValue, text, [0, 1]));
34+
const value1 = insertAt(initialValue, text, [0, 1]);
35+
expect(await getText(editable)).toEqual(value1);
3636
const textLength = text.length;
3737
expect(await getSelection(editable)).toEqual(
3838
createSelection({ offset: 1 + textLength })
3939
);
4040

41-
// Press enter
41+
// Split
4242
await page.keyboard.press("Enter");
43-
44-
const value2 = await getText(editable);
45-
expect(value2).toEqual(insertLineBreakAt(value1, [0, 1 + textLength]));
43+
const value2 = insertLineBreakAt(value1, [0, 1 + textLength]);
44+
expect(await getText(editable)).toEqual(value2);
4645
expect(await getSelection(editable)).toEqual(createSelection({ line: 1 }));
46+
47+
// Split again
48+
await page.keyboard.press("Enter");
49+
const value3 = insertLineBreakAt(value2, [1, 0]);
50+
expect(await getText(editable)).toEqual(value3);
51+
expect(await getSelection(editable)).toEqual(createSelection({ line: 2 }));
52+
53+
// Insert empty line
54+
await page.keyboard.press("ArrowUp");
55+
await page.keyboard.press("Enter");
56+
expect(await getText(editable)).toEqual(insertLineBreakAt(value3, [1, 0]));
57+
expect(await getSelection(editable)).toEqual(createSelection({ line: 2 }));
4758
});

src/core/dom/parser.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ export const getNodeSize = (): number => {
125125
};
126126

127127
const isValidSoftBreak = (node: Node): boolean => {
128+
const next = node.nextSibling;
129+
128130
// This function will return false if there are no nodes after soft break.
129131
//
130132
// In contenteditable, Shift+Enter will insert soft break. \n in Chrome, <br/> in Firefox. Safari doesn't insert soft break.
@@ -144,7 +146,11 @@ const isValidSoftBreak = (node: Node): boolean => {
144146
// And these do not include soft breaks:
145147
// <div><br/></div> empty line
146148
// <div>[a]<br/></div> type on empty line in Firefox
147-
return !!node.nextSibling;
149+
return (
150+
!!next &&
151+
// svelte/angular may have comment node
152+
!isCommentNode(next)
153+
);
148154
};
149155

150156
const readNext = (endNode?: Node): NodeType | void => {

0 commit comments

Comments
 (0)