import Container from "./container.js"; export default class ScrollingContainer extends Container { constructor() { super(); this.class("scrolling-container"); this.css('overflow', 'auto'); this.css('scroll-behavior', 'smooth'); this.css('position', 'relative'); } setNoteContextEvent({noteContext}) { /** @var {NoteContext} */ this.noteContext = noteContext; } async noteSwitchedEvent({noteContext, notePath}) { this.$widget.scrollTop(0); } async noteSwitchedAndActivatedEvent({noteContext, notePath}) { this.noteContext = noteContext; this.$widget.scrollTop(0); } async activeContextChangedEvent({noteContext}) { this.noteContext = noteContext; } handleEventInChildren(name, data) { if (name === 'readOnlyTemporarilyDisabled' && this.noteContext && this.noteContext.ntxId === data.noteContext.ntxId) { const scrollTop = this.$widget.scrollTop(); const promise = super.handleEventInChildren(name, data); // there seems to be some asynchronicity, and we need to wait a bit before scrolling promise.then(() => setTimeout(() => this.$widget.scrollTop(scrollTop), 500)); return promise; } else { return super.handleEventInChildren(name, data); } } scrollContainerToCommand({position}) { this.$widget.scrollTop(position); } }