mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
Merge branch 'next54'
This commit is contained in:
commit
af16a5856a
@ -46,7 +46,7 @@ import OpenNoteButtonWidget from "../widgets/buttons/open_note_button_widget.js"
|
|||||||
import MermaidWidget from "../widgets/mermaid.js";
|
import MermaidWidget from "../widgets/mermaid.js";
|
||||||
import BookmarkButtons from "../widgets/bookmark_buttons.js";
|
import BookmarkButtons from "../widgets/bookmark_buttons.js";
|
||||||
import NoteWrapperWidget from "../widgets/note_wrapper.js";
|
import NoteWrapperWidget from "../widgets/note_wrapper.js";
|
||||||
import BacklinksWidget from "../widgets/backlinks.js";
|
import BacklinksWidget from "../widgets/floating_buttons/backlinks.js";
|
||||||
import SharedInfoWidget from "../widgets/shared_info.js";
|
import SharedInfoWidget from "../widgets/shared_info.js";
|
||||||
import FindWidget from "../widgets/find.js";
|
import FindWidget from "../widgets/find.js";
|
||||||
import TocWidget from "../widgets/toc.js";
|
import TocWidget from "../widgets/toc.js";
|
||||||
@ -75,6 +75,8 @@ import InfoDialog from "../widgets/dialogs/info.js";
|
|||||||
import ConfirmDialog from "../widgets/dialogs/confirm.js";
|
import ConfirmDialog from "../widgets/dialogs/confirm.js";
|
||||||
import PromptDialog from "../widgets/dialogs/prompt.js";
|
import PromptDialog from "../widgets/dialogs/prompt.js";
|
||||||
import OptionsDialog from "../widgets/dialogs/options.js";
|
import OptionsDialog from "../widgets/dialogs/options.js";
|
||||||
|
import FloatingButtons from "../widgets/floating_buttons/floating_buttons.js";
|
||||||
|
import RelationMapButtons from "../widgets/floating_buttons/relation_map_buttons.js";
|
||||||
|
|
||||||
export default class DesktopLayout {
|
export default class DesktopLayout {
|
||||||
constructor(customWidgets) {
|
constructor(customWidgets) {
|
||||||
@ -177,7 +179,10 @@ export default class DesktopLayout {
|
|||||||
)
|
)
|
||||||
.child(new SharedInfoWidget())
|
.child(new SharedInfoWidget())
|
||||||
.child(new NoteUpdateStatusWidget())
|
.child(new NoteUpdateStatusWidget())
|
||||||
.child(new BacklinksWidget())
|
.child(new FloatingButtons()
|
||||||
|
.child(new BacklinksWidget())
|
||||||
|
.child(new RelationMapButtons())
|
||||||
|
)
|
||||||
.child(new MermaidWidget())
|
.child(new MermaidWidget())
|
||||||
.child(
|
.child(
|
||||||
new ScrollingContainer()
|
new ScrollingContainer()
|
||||||
@ -189,7 +194,10 @@ export default class DesktopLayout {
|
|||||||
.child(new SqlResultWidget())
|
.child(new SqlResultWidget())
|
||||||
)
|
)
|
||||||
.child(new FindWidget())
|
.child(new FindWidget())
|
||||||
.child(...this.customWidgets.get('node-detail-pane'))
|
.child(
|
||||||
|
...this.customWidgets.get('node-detail-pane'), // typo, let's keep it for a while as BC
|
||||||
|
...this.customWidgets.get('note-detail-pane')
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.child(...this.customWidgets.get('center-pane'))
|
.child(...this.customWidgets.get('center-pane'))
|
||||||
|
@ -133,7 +133,7 @@ class BasicWidget extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getNtxId() {
|
getClosestNtxId() {
|
||||||
if (this.$widget) {
|
if (this.$widget) {
|
||||||
return this.$widget.closest("[data-ntx-id]").attr("data-ntx-id");
|
return this.$widget.closest("[data-ntx-id]").attr("data-ntx-id");
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ export default class ClosePaneButton extends ButtonWidget {
|
|||||||
// pane (which is being removed)
|
// pane (which is being removed)
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
|
|
||||||
widget.triggerCommand("closeThisNoteSplit", { ntxId: widget.getNtxId() });
|
widget.triggerCommand("closeThisNoteSplit", { ntxId: widget.getClosestNtxId() });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,6 @@ export default class CreatePaneButton extends ButtonWidget {
|
|||||||
this.icon("bx-dock-right")
|
this.icon("bx-dock-right")
|
||||||
.title("Create new split")
|
.title("Create new split")
|
||||||
.titlePlacement("bottom")
|
.titlePlacement("bottom")
|
||||||
.onClick(widget => widget.triggerCommand("openNewNoteSplit", { ntxId: widget.getNtxId() }));
|
.onClick(widget => widget.triggerCommand("openNewNoteSplit", { ntxId: widget.getClosestNtxId() }));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ export default class Component {
|
|||||||
this.componentId = `comp-` + this.sanitizedClassName + '-' + utils.randomString(8);
|
this.componentId = `comp-` + this.sanitizedClassName + '-' + utils.randomString(8);
|
||||||
/** @type Component[] */
|
/** @type Component[] */
|
||||||
this.children = [];
|
this.children = [];
|
||||||
this.initialized = Promise.resolve();
|
this.initialized = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
get sanitizedClassName() {
|
get sanitizedClassName() {
|
||||||
@ -42,10 +42,16 @@ export default class Component {
|
|||||||
|
|
||||||
/** @returns {Promise} */
|
/** @returns {Promise} */
|
||||||
handleEvent(name, data) {
|
handleEvent(name, data) {
|
||||||
return Promise.all([
|
const callMethodPromise = this.initialized
|
||||||
this.initialized.then(() => this.callMethod(this[name + 'Event'], data)),
|
? this.initialized.then(() => this.callMethod(this[name + 'Event'], data))
|
||||||
this.handleEventInChildren(name, data)
|
: this.callMethod(this[name + 'Event'], data);
|
||||||
]);
|
|
||||||
|
const childrenPromise = this.handleEventInChildren(name, data);
|
||||||
|
|
||||||
|
// don't create promises if not needed (optimization)
|
||||||
|
return callMethodPromise && childrenPromise
|
||||||
|
? Promise.all([callMethodPromise, childrenPromise])
|
||||||
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @returns {Promise} */
|
/** @returns {Promise} */
|
||||||
@ -61,7 +67,8 @@ export default class Component {
|
|||||||
promises.push(child.handleEvent(name, data));
|
promises.push(child.handleEvent(name, data));
|
||||||
}
|
}
|
||||||
|
|
||||||
return Promise.all(promises);
|
// don't create promises if not needed (optimization)
|
||||||
|
return promises.find(p => p) ? Promise.all(promises) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @returns {Promise} */
|
/** @returns {Promise} */
|
||||||
|
@ -186,9 +186,13 @@ export default class RibbonContainer extends NoteContextAwareWidget {
|
|||||||
const activeChild = this.getActiveRibbonWidget();
|
const activeChild = this.getActiveRibbonWidget();
|
||||||
|
|
||||||
if (activeChild && (refreshActiveTab || !wasAlreadyActive)) {
|
if (activeChild && (refreshActiveTab || !wasAlreadyActive)) {
|
||||||
activeChild.handleEvent('noteSwitched', {noteContext: this.noteContext, notePath: this.notePath}).then(() => {
|
const handleEventPromise = activeChild.handleEvent('noteSwitched', {noteContext: this.noteContext, notePath: this.notePath});
|
||||||
|
|
||||||
|
if (handleEventPromise) {
|
||||||
|
handleEventPromise.then(() => activeChild.focus?.());
|
||||||
|
} else {
|
||||||
activeChild.focus?.();
|
activeChild.focus?.();
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
this.lastActiveComponentId = null;
|
this.lastActiveComponentId = null;
|
||||||
|
@ -23,7 +23,12 @@ export default class RightPaneContainer extends FlexContainer {
|
|||||||
// right pane is displayed only if some child widget is active
|
// right pane is displayed only if some child widget is active
|
||||||
// we'll reevaluate the visibility based on events which are probable to cause visibility change
|
// we'll reevaluate the visibility based on events which are probable to cause visibility change
|
||||||
// but these events needs to be finished and only then we check
|
// but these events needs to be finished and only then we check
|
||||||
promise.then(() => this.reevaluateIsEnabledCommand());
|
if (promise) {
|
||||||
|
promise.then(() => this.reevaluateIsEnabledCommand());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.reevaluateIsEnabledCommand();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return promise;
|
return promise;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import NoteContextAwareWidget from "./note_context_aware_widget.js";
|
import NoteContextAwareWidget from "../note_context_aware_widget.js";
|
||||||
import linkService from "../services/link.js";
|
import linkService from "../../services/link.js";
|
||||||
import server from "../services/server.js";
|
import server from "../../services/server.js";
|
||||||
import froca from "../services/froca.js";
|
import froca from "../../services/froca.js";
|
||||||
|
|
||||||
const TPL = `
|
const TPL = `
|
||||||
<div class="backlinks-widget">
|
<div class="backlinks-widget">
|
||||||
@ -11,10 +11,6 @@ const TPL = `
|
|||||||
}
|
}
|
||||||
|
|
||||||
.backlinks-ticker {
|
.backlinks-ticker {
|
||||||
position: absolute;
|
|
||||||
top: 10px;
|
|
||||||
right: 10px;
|
|
||||||
width: 130px;
|
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
border-color: var(--main-border-color);
|
border-color: var(--main-border-color);
|
||||||
background-color: var(--more-accented-background-color);
|
background-color: var(--more-accented-background-color);
|
||||||
@ -29,11 +25,7 @@ const TPL = `
|
|||||||
.backlinks-count {
|
.backlinks-count {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.backlinks-close-ticker {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.backlinks-items {
|
.backlinks-items {
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -58,16 +50,10 @@ const TPL = `
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
background-color: yellow;
|
background-color: yellow;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* relation map has already buttons in that position */
|
|
||||||
.type-relation-map .backlinks-ticker { top: 50px; }
|
|
||||||
.type-relation-map .backlinks-items { top: 100px; }
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="backlinks-ticker">
|
<div class="backlinks-ticker">
|
||||||
<span class="backlinks-count"></span>
|
<span class="backlinks-count"></span>
|
||||||
|
|
||||||
<span class="bx bx-x backlinks-close-ticker"></span>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="backlinks-items" style="display: none;"></div>
|
<div class="backlinks-items" style="display: none;"></div>
|
||||||
@ -90,13 +76,6 @@ export default class BacklinksWidget extends NoteContextAwareWidget {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.$closeTickerButton = this.$widget.find('.backlinks-close-ticker');
|
|
||||||
this.$closeTickerButton.on("click", () => {
|
|
||||||
this.$ticker.hide();
|
|
||||||
|
|
||||||
this.clearItems();
|
|
||||||
});
|
|
||||||
|
|
||||||
this.contentSized();
|
this.contentSized();
|
||||||
}
|
}
|
||||||
|
|
32
src/public/app/widgets/floating_buttons/floating_buttons.js
Normal file
32
src/public/app/widgets/floating_buttons/floating_buttons.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
import Container from "../containers/container.js";
|
||||||
|
|
||||||
|
const TPL = `
|
||||||
|
<div class="floating-buttons">
|
||||||
|
<style>
|
||||||
|
.floating-buttons {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.floating-buttons-children {
|
||||||
|
position: absolute;
|
||||||
|
top: 10px;
|
||||||
|
right: 10px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class="floating-buttons-children"></div>
|
||||||
|
</div>`;
|
||||||
|
|
||||||
|
export default class FloatingButtons extends Container {
|
||||||
|
doRender() {
|
||||||
|
this.$widget = $(TPL);
|
||||||
|
this.$children = this.$widget.find(".floating-buttons-children");
|
||||||
|
|
||||||
|
for (const widget of this.children) {
|
||||||
|
this.$children.append(widget.render());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,51 @@
|
|||||||
|
import NoteContextAwareWidget from "../note_context_aware_widget.js";
|
||||||
|
import dialogService from "../dialog.js";
|
||||||
|
import server from "../../services/server.js";
|
||||||
|
import toastService from "../../services/toast.js";
|
||||||
|
|
||||||
|
const TPL = `
|
||||||
|
<div>
|
||||||
|
<button class="relation-map-create-child-note btn btn-sm floating-button no-print" type="button"
|
||||||
|
title="Create new child note and add it into this relation map">
|
||||||
|
<span class="bx bx-folder-plus"></span>
|
||||||
|
|
||||||
|
Create child note
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button type="button"
|
||||||
|
class="relation-map-reset-pan-zoom btn icon-button floating-button bx bx-crop no-print"
|
||||||
|
title="Reset pan & zoom to initial coordinates and magnification"
|
||||||
|
style="right: 100px;"></button>
|
||||||
|
|
||||||
|
<div class="btn-group floating-button no-print" style="right: 10px;">
|
||||||
|
<button type="button"
|
||||||
|
class="relation-map-zoom-in btn icon-button bx bx-zoom-in"
|
||||||
|
title="Zoom In"></button>
|
||||||
|
|
||||||
|
<button type="button"
|
||||||
|
class="relation-map-zoom-out btn icon-button bx bx-zoom-out"
|
||||||
|
title="Zoom Out"></button>
|
||||||
|
</div>
|
||||||
|
</div>`;
|
||||||
|
|
||||||
|
export default class RelationMapButtons extends NoteContextAwareWidget {
|
||||||
|
isEnabled() {
|
||||||
|
return super.isEnabled() && this.note?.type === 'relation-map';
|
||||||
|
}
|
||||||
|
|
||||||
|
doRender() {
|
||||||
|
super.doRender();
|
||||||
|
|
||||||
|
this.$widget = $(TPL);
|
||||||
|
this.$createChildNote = this.$widget.find(".relation-map-create-child-note");
|
||||||
|
this.$zoomInButton = this.$widget.find(".relation-map-zoom-in");
|
||||||
|
this.$zoomOutButton = this.$widget.find(".relation-map-zoom-out");
|
||||||
|
this.$resetPanZoomButton = this.$widget.find(".relation-map-reset-pan-zoom");
|
||||||
|
|
||||||
|
this.$createChildNote.on('click', () => this.triggerEvent('relationMapCreateChildNote', {ntxId: this.ntxId}));
|
||||||
|
this.$resetPanZoomButton.on('click', () => this.triggerEvent('relationMapResetPanZoom', {ntxId: this.ntxId}));
|
||||||
|
|
||||||
|
this.$zoomInButton.on('click', () => this.triggerEvent('relationMapResetZoomIn', {ntxId: this.ntxId}));
|
||||||
|
this.$zoomOutButton.on('click', () => this.triggerEvent('relationMapResetZoomOut', {ntxId: this.ntxId}));
|
||||||
|
}
|
||||||
|
}
|
@ -20,19 +20,23 @@ export default class NoteContextAwareWidget extends BasicWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get note() {
|
get note() {
|
||||||
return this.noteContext && this.noteContext.note;
|
return this.noteContext?.note;
|
||||||
}
|
}
|
||||||
|
|
||||||
get noteId() {
|
get noteId() {
|
||||||
return this.note && this.note.noteId;
|
return this.note?.noteId;
|
||||||
}
|
}
|
||||||
|
|
||||||
get notePath() {
|
get notePath() {
|
||||||
return this.noteContext && this.noteContext.notePath;
|
return this.noteContext.notePath && this.noteContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
get hoistedNoteId() {
|
get hoistedNoteId() {
|
||||||
return this.noteContext && this.noteContext.hoistedNoteId;
|
return this.noteContext?.hoistedNoteId;
|
||||||
|
}
|
||||||
|
|
||||||
|
get ntxId() {
|
||||||
|
return this.noteContext?.ntxId;
|
||||||
}
|
}
|
||||||
|
|
||||||
isEnabled() {
|
isEnabled() {
|
||||||
|
@ -66,28 +66,6 @@ const linkOverlays = [
|
|||||||
|
|
||||||
const TPL = `
|
const TPL = `
|
||||||
<div class="note-detail-relation-map note-detail-printable">
|
<div class="note-detail-relation-map note-detail-printable">
|
||||||
<button class="relation-map-create-child-note btn btn-sm floating-button no-print" type="button"
|
|
||||||
title="Create new child note and add it into this relation map">
|
|
||||||
<span class="bx bx-folder-plus"></span>
|
|
||||||
|
|
||||||
Create child note
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button type="button"
|
|
||||||
class="relation-map-reset-pan-zoom btn icon-button floating-button bx bx-crop no-print"
|
|
||||||
title="Reset pan & zoom to initial coordinates and magnification"
|
|
||||||
style="right: 100px;"></button>
|
|
||||||
|
|
||||||
<div class="btn-group floating-button no-print" style="right: 10px;">
|
|
||||||
<button type="button"
|
|
||||||
class="relation-map-zoom-in btn icon-button bx bx-zoom-in"
|
|
||||||
title="Zoom In"></button>
|
|
||||||
|
|
||||||
<button type="button"
|
|
||||||
class="relation-map-zoom-out btn icon-button bx bx-zoom-out"
|
|
||||||
title="Zoom Out"></button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="relation-map-wrapper">
|
<div class="relation-map-wrapper">
|
||||||
<div class="relation-map-container"></div>
|
<div class="relation-map-container"></div>
|
||||||
</div>
|
</div>
|
||||||
@ -101,10 +79,6 @@ export default class RelationMapTypeWidget extends TypeWidget {
|
|||||||
doRender() {
|
doRender() {
|
||||||
this.$widget = $(TPL);
|
this.$widget = $(TPL);
|
||||||
this.$relationMapContainer = this.$widget.find(".relation-map-container");
|
this.$relationMapContainer = this.$widget.find(".relation-map-container");
|
||||||
this.$createChildNote = this.$widget.find(".relation-map-create-child-note");
|
|
||||||
this.$zoomInButton = this.$widget.find(".relation-map-zoom-in");
|
|
||||||
this.$zoomOutButton = this.$widget.find(".relation-map-zoom-out");
|
|
||||||
this.$resetPanZoomButton = this.$widget.find(".relation-map-reset-pan-zoom");
|
|
||||||
|
|
||||||
this.mapData = null;
|
this.mapData = null;
|
||||||
this.jsPlumbInstance = null;
|
this.jsPlumbInstance = null;
|
||||||
@ -151,30 +125,6 @@ export default class RelationMapTypeWidget extends TypeWidget {
|
|||||||
|
|
||||||
this.clipboard = null;
|
this.clipboard = null;
|
||||||
|
|
||||||
this.$createChildNote.on('click', async () => {
|
|
||||||
const title = await dialogService.prompt({ message: "Enter title of new note", defaultValue: "new note" });
|
|
||||||
|
|
||||||
if (!title.trim()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const {note} = await server.post(`notes/${this.noteId}/children?target=into`, {
|
|
||||||
title,
|
|
||||||
content: '',
|
|
||||||
type: 'text'
|
|
||||||
});
|
|
||||||
|
|
||||||
toastService.showMessage("Click on canvas to place new note");
|
|
||||||
|
|
||||||
this.clipboard = { noteId: note.noteId, title };
|
|
||||||
});
|
|
||||||
|
|
||||||
this.$resetPanZoomButton.on('click', () => {
|
|
||||||
// reset to initial pan & zoom state
|
|
||||||
this.pzInstance.zoomTo(0, 0, 1 / this.getZoom());
|
|
||||||
this.pzInstance.moveTo(0, 0);
|
|
||||||
});
|
|
||||||
|
|
||||||
this.$widget.on("drop", ev => this.dropNoteOntoRelationMapHandler(ev));
|
this.$widget.on("drop", ev => this.dropNoteOntoRelationMapHandler(ev));
|
||||||
this.$widget.on("dragover", ev => ev.preventDefault());
|
this.$widget.on("dragover", ev => ev.preventDefault());
|
||||||
|
|
||||||
@ -376,9 +326,6 @@ export default class RelationMapTypeWidget extends TypeWidget {
|
|||||||
// set to initial coordinates
|
// set to initial coordinates
|
||||||
this.pzInstance.moveTo(0, 0);
|
this.pzInstance.moveTo(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$zoomInButton.on('click', () => this.pzInstance.zoomTo(0, 0, 1.2));
|
|
||||||
this.$zoomOutButton.on('click', () => this.pzInstance.zoomTo(0, 0, 0.8));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
saveCurrentTransform() {
|
saveCurrentTransform() {
|
||||||
@ -642,4 +589,52 @@ export default class RelationMapTypeWidget extends TypeWidget {
|
|||||||
getContent() {
|
getContent() {
|
||||||
return JSON.stringify(this.mapData);
|
return JSON.stringify(this.mapData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async relationMapCreateChildNoteEvent({ntxId}) {
|
||||||
|
if (!this.isNoteContext(ntxId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const title = await dialogService.prompt({ message: "Enter title of new note", defaultValue: "new note" });
|
||||||
|
|
||||||
|
if (!title.trim()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const {note} = await server.post(`notes/${this.noteId}/children?target=into`, {
|
||||||
|
title,
|
||||||
|
content: '',
|
||||||
|
type: 'text'
|
||||||
|
});
|
||||||
|
|
||||||
|
toastService.showMessage("Click on canvas to place new note");
|
||||||
|
|
||||||
|
this.clipboard = { noteId: note.noteId, title };
|
||||||
|
}
|
||||||
|
|
||||||
|
relationMapResetPanZoomEvent({ntxId}) {
|
||||||
|
if (!this.isNoteContext(ntxId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// reset to initial pan & zoom state
|
||||||
|
this.pzInstance.zoomTo(0, 0, 1 / this.getZoom());
|
||||||
|
this.pzInstance.moveTo(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
relationMapResetZoomInEvent({ntxId}) {
|
||||||
|
if (!this.isNoteContext(ntxId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.pzInstance.zoomTo(0, 0, 1.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
relationMapResetZoomOutEvent({ntxId}) {
|
||||||
|
if (!this.isNoteContext(ntxId)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.pzInstance.zoomTo(0, 0, 0.8);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user