From 93dcce2217d06a0ae6a3f35848bc638754512159 Mon Sep 17 00:00:00 2001 From: zadam Date: Mon, 27 Nov 2023 10:38:19 +0100 Subject: [PATCH] dragging notes from note tree will automatically insert them as images where appropriate (image, canvas, mermaid) --- src/public/app/services/link.js | 11 +++++++++++ src/public/app/widgets/note_tree.js | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/public/app/services/link.js b/src/public/app/services/link.js index 73ad58704..cee987305 100644 --- a/src/public/app/services/link.js +++ b/src/public/app/services/link.js @@ -42,6 +42,7 @@ async function createLink(notePath, options = {}) { const showNotePath = options.showNotePath === undefined ? false : options.showNotePath; const showNoteIcon = options.showNoteIcon === undefined ? false : options.showNoteIcon; const referenceLink = options.referenceLink === undefined ? false : options.referenceLink; + const autoConvertToImage = options.autoConvertToImage === undefined ? false : options.autoConvertToImage; const { noteId, parentNoteId } = treeService.getNoteIdAndParentIdFromUrl(notePath); const viewScope = options.viewScope || {}; @@ -58,6 +59,16 @@ async function createLink(notePath, options = {}) { } } + const note = await froca.getNote(noteId); + + if (autoConvertToImage && ['image', 'canvas', 'mermaid'].includes(note.type) && viewMode === 'default') { + const encodedTitle = encodeURIComponent(linkTitle); + + return $("") + .attr("src", `api/images/${noteId}/${encodedTitle}?${Math.random()}`) + .attr("alt", linkTitle); + } + const $container = $(""); if (showNoteIcon) { diff --git a/src/public/app/widgets/note_tree.js b/src/public/app/widgets/note_tree.js index ad0d41a87..6f70fc78f 100644 --- a/src/public/app/widgets/note_tree.js +++ b/src/public/app/widgets/note_tree.js @@ -402,11 +402,11 @@ export default class NoteTreeWidget extends NoteContextAwareWidget { })); if (notes.length === 1) { - linkService.createLink(notes[0].noteId, {referenceLink: true}) + linkService.createLink(notes[0].noteId, {referenceLink: true, autoConvertToImage: true}) .then($link => data.dataTransfer.setData("text/html", $link[0].outerHTML)); } else { - Promise.all(notes.map(note => linkService.createLink(note.noteId, {referenceLink: true}))).then(links => { + Promise.all(notes.map(note => linkService.createLink(note.noteId, {referenceLink: true, autoConvertToImage: true}))).then(links => { const $list = $("