Skip to content

Commit d3351f8

Browse files
committed
add box shadow for scrolling
1 parent ad13c15 commit d3351f8

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

extensions/notebook-renderers/src/index.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,15 @@ export const activate: ActivationFunction<void> = (ctx) => {
236236
overflow-y: scroll;
237237
max-height: 400px;
238238
}
239+
span.output-stream.more-above {
240+
box-shadow: var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset
241+
}
242+
span.output-stream.more-below {
243+
box-shadow: var(--vscode-scrollbar-shadow) 0px -6px 6px -6px inset
244+
}
245+
span.output-stream.more-above.more-below {
246+
box-shadow: var(--vscode-scrollbar-shadow) 0px -6px 6px -6px inset, var(--vscode-scrollbar-shadow) 0 6px 6px -6px inset
247+
}
239248
.output-plaintext .code-bold,
240249
.output-stream .code-bold,
241250
.traceback .code-bold {

extensions/notebook-renderers/src/textHelper.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,22 @@ export function truncatedArrayOfString(id: string, outputs: string[], linesLimit
5252

5353
function scrollableArrayOfString(outputs: string[], container: HTMLElement) {
5454
container.classList.add('scrollable');
55+
56+
container.onscroll = (e) => {
57+
const target = e.target as HTMLElement;
58+
if (target.scrollTop === 0) {
59+
container.classList.remove('more-above');
60+
} else {
61+
container.classList.add('more-above');
62+
}
63+
64+
if (target.scrollTop + target.clientHeight === target.scrollHeight) {
65+
container.classList.remove('more-below');
66+
} else {
67+
container.classList.add('more-below');
68+
}
69+
};
70+
5571
const buffer = outputs.join('\n').split(/\r\n|\r|\n/g);
5672
const spanElement = handleANSIOutput(buffer.slice(0, 5000).join('\n'));
5773
container.appendChild(spanElement);

0 commit comments

Comments
 (0)