toggle scrollable outputs by cell

This commit is contained in:
aamunger
2023-04-04 15:05:17 -07:00
parent ff9454aaf7
commit 8d55402690
4 changed files with 70 additions and 24 deletions

View File

@@ -145,7 +145,7 @@ function renderError(
if (err.stack) {
outputElement.classList.add('traceback');
const outputScrolling = ctx.settings.outputScrolling;
const outputScrolling = scrollingEnabled(outputInfo, ctx.settings);
const content = createOutputContent(outputInfo.id, [err.stack ?? ''], ctx.settings.lineLimit, outputScrolling, true);
const contentParent = document.createElement('div');
contentParent.classList.toggle('word-wrap', ctx.settings.outputWordWrap);
@@ -153,10 +153,6 @@ function renderError(
contentParent.classList.toggle('word-wrap', e.outputWordWrap);
}));
contentParent.classList.toggle('scrollable', outputScrolling);
outputElement.classList.toggle('hide-refresh', !outputScrolling);
disposableStore.push(ctx.onDidChangeSettings(e => {
outputElement.classList.toggle('hide-refresh', !e.outputScrolling);
}));
outputElement.classList.toggle('remove-padding', outputScrolling);
contentParent.appendChild(content);
@@ -221,9 +217,13 @@ function findScrolledHeight(scrollableElement: HTMLElement): number | undefined
return undefined;
}
function scrollingEnabled(output: OutputItem, options: RenderOptions) {
return output.metadata?.scrollable !== undefined ? output.metadata?.scrollable : options.outputScrolling;
}
function renderStream(outputInfo: OutputItem, outputElement: HTMLElement, error: boolean, ctx: IRichRenderContext): IDisposable {
const disposableStore = createDisposableStore();
const outputScrolling = ctx.settings.outputScrolling;
const outputScrolling = scrollingEnabled(outputInfo, ctx.settings);
outputElement.classList.add('output-stream');
outputElement.classList.toggle('remove-padding', outputScrolling);
@@ -252,11 +252,6 @@ function renderStream(outputInfo: OutputItem, outputElement: HTMLElement, error:
const contentParent = document.createElement('div');
contentParent.appendChild(content);
contentParent.classList.toggle('scrollable', outputScrolling);
outputElement.classList.toggle('hide-refresh', !outputScrolling);
disposableStore.push(ctx.onDidChangeSettings(e => {
outputElement.classList.toggle('hide-refresh', !e.outputScrolling);
}));
contentParent.classList.toggle('word-wrap', ctx.settings.outputWordWrap);
disposableStore.push(ctx.onDidChangeSettings(e => {
contentParent.classList.toggle('word-wrap', e.outputWordWrap);
@@ -278,18 +273,14 @@ function renderText(outputInfo: OutputItem, outputElement: HTMLElement, ctx: IRi
clearContainer(outputElement);
const text = outputInfo.text();
const outputScrolling = scrollingEnabled(outputInfo, ctx.settings);
const content = createOutputContent(outputInfo.id, [text], ctx.settings.lineLimit, ctx.settings.outputScrolling, false);
content.classList.add('output-plaintext');
if (ctx.settings.outputWordWrap) {
content.classList.add('word-wrap');
}
const outputScrolling = ctx.settings.outputScrolling;
content.classList.toggle('scrollable', outputScrolling);
outputElement.classList.toggle('hide-refresh', !outputScrolling);
disposableStore.push(ctx.onDidChangeSettings(e => {
outputElement.classList.toggle('hide-refresh', !e.outputScrolling);
}));
outputElement.classList.toggle('remove-padding', outputScrolling);
outputElement.appendChild(content);
initializeScroll(content, disposableStore);
@@ -352,9 +343,6 @@ export const activate: ActivationFunction<void> = (ctx) => {
#container div.output .scrollable.scrollbar-visible {
border-color: var(--vscode-editorWidget-border);
}
#container div.output.hide-refresh .scroll-refresh {
display: none;
}
.output-plaintext .code-bold,
.output-stream .code-bold,
.traceback .code-bold {

View File

@@ -30,7 +30,7 @@ function generateViewMoreElement(outputId: string) {
const refreshSpan = document.createElement('span');
refreshSpan.classList.add('scroll-refresh');
const fifth = document.createElement('span');
fifth.textContent = '. Refresh to view ';
fifth.textContent = ', or view in a ';
const sixth = document.createElement('a');
sixth.textContent = 'scrollable element';