Skip to content

Commit 46e72e9

Browse files
committed
shrink void element handling
1 parent 9a4136b commit 46e72e9

File tree

1 file changed

+5
-21
lines changed

1 file changed

+5
-21
lines changed

src/index.js

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,7 @@ const UNNAMED = [];
77

88
const EMPTY = {};
99

10-
const VOID_ELEMENTS = [
11-
'area',
12-
'base',
13-
'br',
14-
'col',
15-
'embed',
16-
'hr',
17-
'img',
18-
'input',
19-
'link',
20-
'meta',
21-
'param',
22-
'source',
23-
'track',
24-
'wbr'
25-
];
10+
const VOID_ELEMENTS = /^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;
2611

2712

2813
/** Render Preact JSX + Components to an HTML string.
@@ -159,11 +144,10 @@ export default function renderToString(vnode, context, opts, inner, isSvgMode) {
159144
else if (pretty && ~s.indexOf('\n')) s += '\n';
160145

161146
s = `<${nodeName}${s}>`;
162-
if (String(nodeName).match(/[\s\n\/='"\0<>]/)) throw s;
147+
if (nodeName.match(/[\s\n\/='"\0<>]/)) throw s;
163148

164-
if (VOID_ELEMENTS.indexOf(nodeName)>-1) {
165-
s = s.replace(/>$/, ' />');
166-
}
149+
let isVoid = nodeName.match(VOID_ELEMENTS);
150+
if (isVoid) s = s.replace(/>$/, ' />');
167151

168152
if (html) {
169153
// if multiline, indent.
@@ -198,7 +182,7 @@ export default function renderToString(vnode, context, opts, inner, isSvgMode) {
198182
}
199183
}
200184

201-
if (VOID_ELEMENTS.indexOf(nodeName)===-1) {
185+
if (!isVoid) {
202186
if (pretty && ~s.indexOf('\n')) s += '\n';
203187
s += `</${nodeName}>`;
204188
}

0 commit comments

Comments
 (0)