Notes/apps/client/src/widgets/scroll_padding.ts
2025-04-22 22:12:56 +03:00

34 lines
984 B
TypeScript

import NoteContextAwareWidget from "./note_context_aware_widget.js";
const TPL = /*html*/`<div class="scroll-padding-widget"></div>`;
export default class ScrollPaddingWidget extends NoteContextAwareWidget {
private $scrollingContainer!: JQuery<HTMLElement>;
isEnabled() {
return super.isEnabled() && ["text", "code"].includes(this.note?.type ?? "");
}
doRender() {
this.$widget = $(TPL);
this.contentSized();
this.$widget.on("click", () => this.triggerCommand("scrollToEnd", { ntxId: this.ntxId }));
}
initialRenderCompleteEvent() {
this.$scrollingContainer = this.$widget.closest(".scrolling-container");
new ResizeObserver(() => this.refreshHeight()).observe(this.$scrollingContainer[0]);
this.refreshHeight();
}
refreshHeight() {
const containerHeight = this.$scrollingContainer.height();
this.$widget.css("height", Math.round((containerHeight ?? 0) / 2));
}
}