From 965b710f8bc73ea6fdef35a3f63a4cdcdda1468a Mon Sep 17 00:00:00 2001 From: Melvin Carvalho Date: Sun, 5 Apr 2026 12:58:22 +0200 Subject: [PATCH] Fix table headers rendering at bottom (foster-parenting) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace zero-width text markers with HTML comment markers. The browser's HTML parser foster-parents text nodes out of , but comments survive — fixing header ordering for all tables. Fixes #4 --- losos/html.js | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/losos/html.js b/losos/html.js index ae2cd1a..cfa5f58 100644 --- a/losos/html.js +++ b/losos/html.js @@ -17,7 +17,7 @@ export function onUnmount(container, fn) { }).observe(parent, { childList: true }) } -var HOLE = '\u200B\u200C\u200B' // zero-width chars — survives innerHTML +var HOLE = '' // comment marker — survives inside
var cache = new WeakMap() export function html(strings) { @@ -79,21 +79,13 @@ export function render(container, template) { } function findParts(node, parts) { - if (node.nodeType === 3) { - // Text node — split on HOLE markers - var text = node.textContent - if (text.indexOf(HOLE) === -1) return - var pieces = text.split(HOLE) + if (node.nodeType === 8 && node.textContent === 'losos') { + // Comment marker — replace with empty text node for content insertion var parent = node.parentNode - for (var i = 0; i < pieces.length; i++) { - if (pieces[i]) parent.insertBefore(document.createTextNode(pieces[i]), node) - if (i < pieces.length - 1) { - var marker = document.createTextNode('') - parent.insertBefore(marker, node) - parts.push({ type: 'text', node: marker }) - } - } + var marker = document.createTextNode('') + parent.insertBefore(marker, node) parent.removeChild(node) + parts.push({ type: 'text', node: marker }) return }