Compare commits
No commits in common. "414859d309df7282fbb044c5303f8ce7a32461c8" and "b8061b665dacefc1a4ced296c0566a9ec0218f03" have entirely different histories.
414859d309
...
b8061b665d
@ -53,31 +53,8 @@ body {
|
|||||||
bottom: -1px;
|
bottom: -1px;
|
||||||
background: #ccc;
|
background: #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toolbar {
|
|
||||||
display: flex;
|
|
||||||
align-items: baseline;
|
|
||||||
gap: .3em;
|
|
||||||
}
|
|
||||||
button {
|
button {
|
||||||
font: inherit;
|
font: inherit;
|
||||||
background: transparent;
|
|
||||||
border: 1px solid transparent;
|
|
||||||
}
|
|
||||||
button:focus {
|
|
||||||
border: 1px dashed #000;
|
|
||||||
}
|
|
||||||
button:hover {
|
|
||||||
border-left: 1px solid #fff;
|
|
||||||
border-top: 1px solid #fff;
|
|
||||||
border-right: 1px solid #888;
|
|
||||||
border-bottom: 1px solid #888;
|
|
||||||
}
|
|
||||||
button:hover:active {
|
|
||||||
border-left: 1px solid #888;
|
|
||||||
border-top: 1px solid #888;
|
|
||||||
border-right: 1px solid #fff;
|
|
||||||
border-bottom: 1px solid #fff;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.middle {
|
.middle {
|
||||||
|
@ -199,7 +199,6 @@ function bufferToggleUnimportant(name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function bufferToggleLog() {
|
function bufferToggleLog() {
|
||||||
// TODO: Try to restore the previous scroll offset.
|
|
||||||
if (bufferLog) {
|
if (bufferLog) {
|
||||||
setTimeout(() =>
|
setTimeout(() =>
|
||||||
document.getElementById('input')?.focus())
|
document.getElementById('input')?.focus())
|
||||||
@ -348,7 +347,6 @@ rpcEventHandlers.set(Relay.Event.BufferLine, e => {
|
|||||||
|
|
||||||
let visible = document.visibilityState !== 'hidden' &&
|
let visible = document.visibilityState !== 'hidden' &&
|
||||||
bufferLog === undefined &&
|
bufferLog === undefined &&
|
||||||
bufferAutoscroll &&
|
|
||||||
(e.bufferName == bufferCurrent || e.leakToActive)
|
(e.bufferName == bufferCurrent || e.leakToActive)
|
||||||
b.lines.push({...line})
|
b.lines.push({...line})
|
||||||
if (!(visible || e.leakToActive) ||
|
if (!(visible || e.leakToActive) ||
|
||||||
@ -429,6 +427,21 @@ let linkRE = [
|
|||||||
/[^\[\](){}<>"'\s,.:]/,
|
/[^\[\](){}<>"'\s,.:]/,
|
||||||
].map(r => r.source).join('')
|
].map(r => r.source).join('')
|
||||||
|
|
||||||
|
let Toolbar = {
|
||||||
|
toggleAutoscroll: () => {
|
||||||
|
bufferAutoscroll = !bufferAutoscroll
|
||||||
|
},
|
||||||
|
|
||||||
|
view: vnode => {
|
||||||
|
return m('.toolbar', {}, [
|
||||||
|
m('button', {onclick: Toolbar.toggleAutoscroll},
|
||||||
|
bufferAutoscroll ? 'Scroll lock' : 'Scroll unlock'),
|
||||||
|
m('button', {onclick: event => bufferToggleLog()},
|
||||||
|
bufferLog === undefined ? 'Show log' : 'Hide log'),
|
||||||
|
])
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
let BufferList = {
|
let BufferList = {
|
||||||
view: vnode => {
|
view: vnode => {
|
||||||
let highlighted = false
|
let highlighted = false
|
||||||
@ -465,7 +478,7 @@ let Content = {
|
|||||||
style.color = palette[fg]
|
style.color = palette[fg]
|
||||||
if (bg >= 0)
|
if (bg >= 0)
|
||||||
style.backgroundColor = palette[bg]
|
style.backgroundColor = palette[bg]
|
||||||
for (const _ in style)
|
if (style)
|
||||||
return style
|
return style
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -611,11 +624,7 @@ let Buffer = {
|
|||||||
let dateMark = new Date().toLocaleDateString()
|
let dateMark = new Date().toLocaleDateString()
|
||||||
if (dateMark !== lastDateMark && lastDateMark !== undefined)
|
if (dateMark !== lastDateMark && lastDateMark !== undefined)
|
||||||
lines.push(m('.date', {}, dateMark))
|
lines.push(m('.date', {}, dateMark))
|
||||||
return m('.buffer', {onscroll: event => {
|
return m('.buffer', {}, lines)
|
||||||
const dom = event.target
|
|
||||||
bufferAutoscroll =
|
|
||||||
dom.scrollTop + dom.clientHeight + 0.5 >= dom.scrollHeight
|
|
||||||
}}, lines)
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -669,16 +678,6 @@ let BufferContainer = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
let Toolbar = {
|
|
||||||
view: vnode => {
|
|
||||||
return m('.toolbar', {}, [
|
|
||||||
bufferLog === undefined && !bufferAutoscroll ? '⇩' : undefined,
|
|
||||||
m('button', {onclick: event => bufferToggleLog()},
|
|
||||||
bufferLog === undefined ? 'Log' : 'Hide log'),
|
|
||||||
])
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
let Status = {
|
let Status = {
|
||||||
view: vnode => {
|
view: vnode => {
|
||||||
let b = buffers.get(bufferCurrent)
|
let b = buffers.get(bufferCurrent)
|
||||||
@ -688,7 +687,7 @@ let Status = {
|
|||||||
let status = `${bufferCurrent}`
|
let status = `${bufferCurrent}`
|
||||||
if (b.hideUnimportant)
|
if (b.hideUnimportant)
|
||||||
status += `<H>`
|
status += `<H>`
|
||||||
return m('.status', {}, [status, m(Toolbar)])
|
return m('.status', {}, status)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -945,7 +944,7 @@ let Main = {
|
|||||||
|
|
||||||
return m('.xP', {}, [
|
return m('.xP', {}, [
|
||||||
overlay,
|
overlay,
|
||||||
m('.title', {}, `xP`),
|
m('.title', {}, [`xP`, m(Toolbar)]),
|
||||||
m('.middle', {}, [m(BufferList), m(BufferContainer)]),
|
m('.middle', {}, [m(BufferList), m(BufferContainer)]),
|
||||||
m(Status),
|
m(Status),
|
||||||
m('.input', {}, [m(Prompt), m(Input)]),
|
m('.input', {}, [m(Prompt), m(Input)]),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user