summaryrefslogtreecommitdiff
path: root/src/frontend/render/utils.ts
diff options
context:
space:
mode:
authorGravatar Nate Moore <natemoo-re@users.noreply.github.com> 2021-04-28 14:43:50 -0500
committerGravatar GitHub <noreply@github.com> 2021-04-28 14:43:50 -0500
commit633bb46dc4b83ec39004260ff44ddafa1963cf79 (patch)
tree9524eea0a84858bd353e8e39c633ac9d4829b148 /src/frontend/render/utils.ts
parent6bc51facce11e97392d4830e0f745ea7482c38d4 (diff)
downloadastro-633bb46dc4b83ec39004260ff44ddafa1963cf79.tar.gz
astro-633bb46dc4b83ec39004260ff44ddafa1963cf79.tar.zst
astro-633bb46dc4b83ec39004260ff44ddafa1963cf79.zip
Fix: plain string children bug (#138)
* fix: string children bug * test: add string children test * test: add other child test scenarios
Diffstat (limited to 'src/frontend/render/utils.ts')
-rw-r--r--src/frontend/render/utils.ts13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/frontend/render/utils.ts b/src/frontend/render/utils.ts
index 2a1cc9ecf..9d55626fe 100644
--- a/src/frontend/render/utils.ts
+++ b/src/frontend/render/utils.ts
@@ -16,7 +16,10 @@ function childrenToTree(children: string[]) {
*/
export const childrenToVnodes = moize.deep(function childrenToVnodes(h: any, children: string[]) {
const tree = childrenToTree(children);
- const vnodes = tree.map((subtree) => toH(h, subtree));
+ const vnodes = tree.map((subtree) => {
+ if (subtree.type === 'text') return subtree.value;
+ return toH(h, subtree);
+ });
return vnodes;
});
@@ -37,11 +40,13 @@ export const childrenToH = moize.deep(function childrenToH(renderer: ComponentRe
return { ...vnode, __SERIALIZED };
};
const serializeChild = (child: unknown) => {
- if (typeof child === 'string') return `\`${child}\``;
- if (typeof child === 'number' || typeof child === 'boolean') return `${child}`;
+ if (['string', 'number', 'boolean'].includes(typeof child)) return JSON.stringify(child);
if (child === null) return `null`;
if ((child as any).__SERIALIZED) return (child as any).__SERIALIZED;
return innerH(child).__SERIALIZED;
};
- return tree.map((subtree) => toH(innerH, subtree).__SERIALIZED);
+ return tree.map((subtree) => {
+ if (subtree.type === 'text') return JSON.stringify(subtree.value);
+ return toH(innerH, subtree).__SERIALIZED
+ });
});