From 6d1d37d74d7cd46483684ca99cdf7e7bbf51fcd2 Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Sun, 6 Oct 2024 20:05:50 +0800 Subject: feat: add menu item for adding map anchors --- src/editor.mjs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src') diff --git a/src/editor.mjs b/src/editor.mjs index 1b31535..d7ae7fe 100644 --- a/src/editor.mjs +++ b/src/editor.mjs @@ -237,6 +237,7 @@ if (contentFromHash) { editor.cleanup() editor.value(contentFromHash) } + // }}} // Set up logic about editor content {{{ @@ -411,6 +412,32 @@ const menuForEditor = (event, menu) => { menu.appendChild(switchToEditingMode) } + const map = dumbyContainer.querySelector('#' + menu.dataset.map) + if (map) { + const item = new Item({ + text: 'Add Anchor for GeoLinks', + onclick: () => { + const rect = map.getBoundingClientRect() + const [x, y] = map.renderer + .unproject([event.x - rect.left, event.y - rect.top]) + .map(coord => coord.toFixed(7)) + + let prompt + let anchorName + let link + do { + prompt = prompt ? 'Anchor name exists' : 'Name this anchor' + anchorName = window.prompt(prompt, `${x}, ${y}`) + link = `geo:${y},${x}?xy=${x},${y}&id=${map.id} "${anchorName}"` + } + while (refLinks.find(({ref}) => ref === anchorName)) + + cm.replaceRange(`\n[${anchorName}]: ${link}`, { line: Infinity }) + } + }) + menu.insertBefore(item, menu.firstChild) + } + // Prevent menu appears outside of window menu.style.transform = '' shiftByWindow(menu) -- cgit v1.2.3-70-g09d2