diff --git a/page/skooma.html b/page/skooma.html
index a429771..4d40c29 100644
--- a/page/skooma.html
+++ b/page/skooma.html
@@ -297,6 +297,7 @@
Therefore one cannot use tagged template literals with text
as this would return a document fragment which cannot be replaced.
+ If the element is a string, it is turned into a text node before insertion.
diff --git a/skooma.js b/skooma.js
index 9933a4a..d912a2f 100644
--- a/skooma.js
+++ b/skooma.js
@@ -81,9 +81,9 @@ const node = (name, args, options) => {
const custom = getCustom(args)
if ("nameFilter" in options) name = options.nameFilter(name)
if (options.xmlns)
- element = document.createElementNS(options.xmlns, name, {is: custom})
+ element = document.createElementNS(options.xmlns, name, custom ?? {is: custom})
else
- element = document.createElement(name, {is: custom})
+ element = document.createElement(name, custom ?? {is: custom})
parseArgs(element, null, args)
return element
}
@@ -104,9 +104,14 @@ export const bind = transform => {
const update = (...data) => {
const next = transform(...data)
if (next) {
- if (element) element.replaceWith(next)
- element = inject(next)
- return element
+ if (typeof next == "string") {
+ element.innerText = next
+ return element
+ } else {
+ if (element) element.replaceWith(next)
+ element = inject(next)
+ return element
+ }
}
}
return update