Skip to content

Commit b4b8215

Browse files
authored
fix(compiler-core): should not condense whitespace in RCDATA text mode (#3482)
fix #3479
1 parent 6e88156 commit b4b8215

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

packages/compiler-core/__tests__/parse.spec.ts

+10
Original file line numberDiff line numberDiff line change
@@ -1812,6 +1812,16 @@ foo
18121812
`\n foo bar `
18131813
)
18141814
})
1815+
1816+
it('should NOT condense whitespaces in RCDATA text mode', () => {
1817+
const ast = baseParse(`<textarea>Text:\n foo</textarea>`, {
1818+
getTextMode: ({ tag }) =>
1819+
tag === 'textarea' ? TextModes.RCDATA : TextModes.DATA
1820+
})
1821+
const preElement = ast.children[0] as ElementNode
1822+
expect(preElement.children).toHaveLength(1)
1823+
expect((preElement.children[0] as TextNode).content).toBe(`Text:\n foo`)
1824+
})
18151825
})
18161826

18171827
describe('Errors', () => {

packages/compiler-core/src/parse.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ function parseChildren(
205205
// Whitespace management for more efficient output
206206
// (same as v2 whitespace: 'condense')
207207
let removedWhitespace = false
208-
if (mode !== TextModes.RAWTEXT) {
208+
if (mode !== TextModes.RAWTEXT && mode !== TextModes.RCDATA) {
209209
for (let i = 0; i < nodes.length; i++) {
210210
const node = nodes[i]
211211
if (!context.inPre && node.type === NodeTypes.TEXT) {

0 commit comments

Comments
 (0)