aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/MenuItem.mjs22
-rw-r--r--src/editor.mjs13
2 files changed, 35 insertions, 0 deletions
diff --git a/src/MenuItem.mjs b/src/MenuItem.mjs
index 9218b45..f5dfb5b 100644
--- a/src/MenuItem.mjs
+++ b/src/MenuItem.mjs
@@ -366,3 +366,25 @@ export const restoreCamera = map =>
366 text: 'Restore Camera', 366 text: 'Restore Camera',
367 onclick: () => map.renderer.restoreCamera() 367 onclick: () => map.renderer.restoreCamera()
368 }) 368 })
369
370/**
371 * addRefLink. replace selected text into markdown link by reference style links
372 *
373 * @param {CodeMirror} cm
374 * @param {Object[]} refLinks -- object for { ref, link }
375 */
376export const addRefLink = (cm, refLinks) =>
377 new Folder({
378 text: 'Add Link',
379 items: refLinks.map(refLink => new Item({
380 text: refLink.ref,
381 onclick: () => {
382 const selection = cm.getSelection()
383 if (selection === refLink.ref) {
384 cm.replaceSelection(`[${selection}]`)
385 } else {
386 cm.replaceSelection(`[${selection}][${refLink.ref}]`)
387 }
388 }
389 }))
390 })
diff --git a/src/editor.mjs b/src/editor.mjs
index d75d1ec..c73809f 100644
--- a/src/editor.mjs
+++ b/src/editor.mjs
@@ -991,4 +991,17 @@ const addMapRandomlyByPreset = () => {
991 ) 991 )
992} 992}
993 993
994cm.getWrapperElement().oncontextmenu = e => {
995 if (insideCodeblockForMap(cm.getCursor())) return
996 e.preventDefault()
997
998 if (cm.getSelection() && refLinks.length > 0) {
999 menu.appendChild(menuItem.addRefLink(cm, refLinks))
1000 }
1001
1002 if (menu.children.length > 0) {
1003 menu.style.cssText = `display: block; transform: translate(${e.x}px, ${e.y}px); overflow: visible;`
1004 }
1005}
1006
994// vim: sw=2 ts=2 foldmethod=marker foldmarker={{{,}}} 1007// vim: sw=2 ts=2 foldmethod=marker foldmarker={{{,}}}