From 8ac4a48a2e8e66a9e72bcbc61c114be8db9215fd Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Tue, 15 Sep 2026 15:33:30 -0300 Subject: Separate discontinuous pinned source context with thin borders --- src/web/app.mjs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/web') diff --git a/src/web/app.mjs b/src/web/app.mjs index 8e08c9d4..312627df 100644 --- a/src/web/app.mjs +++ b/src/web/app.mjs @@ -99,7 +99,7 @@ export class DomRenderer { if (!ptr) continue; const view = new DataView(this.wasm.memory.buffer, ptr, rows * cols * CELL_SIZE); const bytes = new Uint8Array(this.wasm.memory.buffer); - const geometry = [bw,bh,tw,th,...Array.from({length:11},(_,field)=>val(field))].join(":"); + const geometry = [bw,bh,tw,th,...Array.from({length:11+contexts},(_,field)=>val(field))].join(":"); const encoded = bytes.subarray(ptr,ptr+rows*cols*CELL_SIZE); const cached = this.layerNodes.get(i); if (cached && cached.geometry===geometry && cached.bytes.length===encoded.length && cached.bytes.every((byte,index)=>byte===encoded[index])) { @@ -130,9 +130,13 @@ export class DomRenderer { } layer.append(line); } - const border = this.root.ownerDocument.createElement("div"); - border.style.cssText = `position:absolute;left:0;right:0;top:${contexts*th}px;height:1px;background:currentColor;opacity:.45`; - layer.append(border); + for (let row = 0; row < contexts; row++) { + if (!val(11 + row)) continue; + const border = this.root.ownerDocument.createElement("div"); + border.dataset.contextBorder = String(row); + border.style.cssText = `position:absolute;left:0;right:0;top:${(row+1)*th}px;height:1px;background:currentColor;opacity:.45`; + layer.append(border); + } this.layerNodes.set(i,{geometry,bytes:encoded.slice(),node:layer}); nodes.push(layer); } -- cgit v1.3