xP: implement buffer line leakage
Rather than on redisplay, these get cleared on reconnect.
This commit is contained in:
		@@ -63,6 +63,9 @@ body {
 | 
			
		||||
	overflow-y: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.leaked {
 | 
			
		||||
	opacity: 50%;
 | 
			
		||||
}
 | 
			
		||||
.date {
 | 
			
		||||
	padding: .3rem;
 | 
			
		||||
	grid-column: span 2;
 | 
			
		||||
 
 | 
			
		||||
@@ -195,10 +195,12 @@ rpc.addEventListener('BufferActivate', event => {
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
rpc.addEventListener('BufferLine', event => {
 | 
			
		||||
	let e = event.detail, b = buffers.get(e.bufferName)
 | 
			
		||||
	if (b === undefined)
 | 
			
		||||
		return
 | 
			
		||||
	b.lines.push({when: e.when, rendition: e.rendition, items: e.items})
 | 
			
		||||
	let e = event.detail, b = buffers.get(e.bufferName),
 | 
			
		||||
		line = {when: e.when, rendition: e.rendition, items: e.items}
 | 
			
		||||
	if (b !== undefined)
 | 
			
		||||
		b.lines.push({...line})
 | 
			
		||||
	if (e.leakToActive && (b = buffers.get(bufferCurrent)) !== undefined)
 | 
			
		||||
		b.lines.push({leaked: true, ...line})
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
rpc.addEventListener('BufferClear', event => {
 | 
			
		||||
@@ -327,7 +329,7 @@ let Content = {
 | 
			
		||||
				classes.add(c)
 | 
			
		||||
		}
 | 
			
		||||
		let fg = -1, bg = -1, inverse = false
 | 
			
		||||
		return m('.content', {}, [mark, line.items.flatMap(item => {
 | 
			
		||||
		return m('.content', vnode.attrs, [mark, line.items.flatMap(item => {
 | 
			
		||||
			switch (item.kind) {
 | 
			
		||||
			case 'Text':
 | 
			
		||||
				return Content.linkify(item.text, {
 | 
			
		||||
@@ -393,8 +395,12 @@ let Buffer = {
 | 
			
		||||
				lastDateMark = dateMark
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			lines.push(m('.time', {}, date.toLocaleTimeString()))
 | 
			
		||||
			lines.push(m(Content, {}, line))
 | 
			
		||||
			let attrs = {}
 | 
			
		||||
			if (line.leaked)
 | 
			
		||||
				attrs.class = 'leaked'
 | 
			
		||||
 | 
			
		||||
			lines.push(m('.time', {...attrs}, date.toLocaleTimeString()))
 | 
			
		||||
			lines.push(m(Content, {...attrs}, line))
 | 
			
		||||
		})
 | 
			
		||||
		return m('.buffer', {}, lines)
 | 
			
		||||
	},
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user