a post-component library for building user-interfaces on the web.

use document attached node creation methods

tombl.dev b4ab6b18 8e8f2cd8

verified
+6 -6
+1 -1
src/client/compiler.ts
··· 61 61 // also reverse it because that's the correct order for splitting. 62 62 const nodes = [...node.data.matchAll(DYNAMIC_GLOBAL)].reverse().map(match => { 63 63 node.splitText(match.index + match[0].length) 64 - const dyn = new Comment() 64 + const dyn = document.createComment('') 65 65 node.splitText(match.index).replaceWith(dyn) 66 66 return [dyn, parseInt(match[1])] as const 67 67 })
+1 -1
src/client/parts.ts
··· 178 178 span._start.data = '' + value 179 179 } else { 180 180 delete_contents(span) 181 - if (value !== null) insert_node(span, value instanceof Node ? value : new Text('' + value)) 181 + if (value !== null) insert_node(span, value instanceof Node ? value : document.createTextNode('' + value)) 182 182 } 183 183 } 184 184
+2 -2
src/client/root.ts
··· 15 15 } 16 16 17 17 export function create_root_into(parent: Node): Root { 18 - const marker = new Text() 18 + const marker = document.createTextNode('') 19 19 parent.appendChild(marker) 20 20 return create_root(create_span(marker)) 21 21 } 22 22 23 23 export function create_root_after(node: Node): Root { 24 24 assert(node.parentNode, 'expected a parent node') 25 - const marker = new Text() 25 + const marker = document.createTextNode('') 26 26 node.parentNode.insertBefore(marker, node.nextSibling) 27 27 return create_root(create_span(marker)) 28 28 }
+2 -2
src/client/span.ts
··· 45 45 } 46 46 47 47 export function extract_contents(span: Span): DocumentFragment { 48 - span._marker = new Text() 48 + span._marker = document.createTextNode('') 49 49 span._parent.insertBefore(span._marker, span._start) 50 50 51 51 const fragment = document.createDocumentFragment() ··· 56 56 } 57 57 58 58 export function delete_contents(span: Span): void { 59 - span._marker = new Text() 59 + span._marker = document.createTextNode('') 60 60 span._parent.insertBefore(span._marker, span._start) 61 61 62 62 for (const node of nodes(span)) span._parent.removeChild(node)