import NoteContextAwareWidget from "../note_context_aware_widget.js"; import NoteMapWidget from "../note_map.js"; import { t } from "../../services/i18n.js"; const TPL = `
`; export default class NoteMapRibbonWidget extends NoteContextAwareWidget { constructor() { super(); this.noteMapWidget = new NoteMapWidget("ribbon"); this.child(this.noteMapWidget); } get name() { return "noteMap"; } get toggleCommand() { return "toggleRibbonTabNoteMap"; } getTitle() { return { show: this.isEnabled(), title: t("note_map.title"), icon: "bx bxs-network-chart" }; } doRender() { this.$widget = $(TPL); this.contentSized(); this.$container = this.$widget.find(".note-map-container"); this.$container.append(this.noteMapWidget.render()); this.openState = "small"; this.$openFullButton = this.$widget.find(".open-full-button"); this.$openFullButton.on("click", () => { this.setFullHeight(); this.$openFullButton.hide(); this.$collapseButton.show(); this.openState = "full"; this.noteMapWidget.setDimensions(); }); this.$collapseButton = this.$widget.find(".collapse-button"); this.$collapseButton.on("click", () => { this.setSmallSize(); this.$openFullButton.show(); this.$collapseButton.hide(); this.openState = "small"; this.noteMapWidget.setDimensions(); }); const handleResize = () => { if (!this.noteMapWidget.graph) { // no graph has been even rendered return; } if (this.openState === "full") { this.setFullHeight(); } else if (this.openState === "small") { this.setSmallSize(); } }; new ResizeObserver(handleResize).observe(this.$widget[0]); } setSmallSize() { const SMALL_SIZE_HEIGHT = 300; const width = this.$widget.width(); this.$widget.find(".note-map-container").height(SMALL_SIZE_HEIGHT).width(width); } setFullHeight() { const { top } = this.$widget[0].getBoundingClientRect(); const height = $(window).height() - top; const width = this.$widget.width(); this.$widget.find(".note-map-container").height(height).width(width); } }