aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/dumbymap.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'src/dumbymap.mjs')
-rw-r--r--src/dumbymap.mjs33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs
index 4562612..9bc1da7 100644
--- a/src/dumbymap.mjs
+++ b/src/dumbymap.mjs
@@ -540,7 +540,8 @@ export const generateMaps = (container, {
540 const map = e.target.closest('.mapclay') 540 const map = e.target.closest('.mapclay')
541 const block = e.target.closest('.dumby-block') 541 const block = e.target.closest('.dumby-block')
542 const linkWithLine = e.target.closest('.with-leader-line') 542 const linkWithLine = e.target.closest('.with-leader-line')
543 if (!block && !map && !linkWithLine) return 543 const rangeSelected = document.getSelection().type === 'Range'
544 if (!block && !map && !linkWithLine && !rangeSelected) return
544 e.preventDefault() 545 e.preventDefault()
545 546
546 /** Add HTMLElement for menu */ 547 /** Add HTMLElement for menu */
@@ -560,6 +561,12 @@ export const generateMaps = (container, {
560 }).observe(menu, { childList: true }) 561 }).observe(menu, { childList: true })
561 menu.timer = setTimeout(() => menu.remove(), 100) 562 menu.timer = setTimeout(() => menu.remove(), 100)
562 563
564 /** Menu Item for Geocoding */
565 if (rangeSelected) {
566 // TODO check click is inside selection
567 const range = document.getSelection().getRangeAt(0)
568 menu.appendChild(menuItem.addLinkbyNominatim(range))
569 }
563 /** Menu Item for editing map */ 570 /** Menu Item for editing map */
564 const mapEditor = e.target.closest('.edit-map') 571 const mapEditor = e.target.closest('.edit-map')
565 if (mapEditor) { 572 if (mapEditor) {
@@ -584,6 +591,30 @@ export const generateMaps = (container, {
584 ) 591 )
585 }, 592 },
586 })) 593 }))
594 } else if (geoLink.classList.contains('from-geocoding')) {
595 menu.appendChild(menuItem.Item({
596 innerHTML: '<strong style="color: red;">DELETE</strong>',
597 onclick: () => {
598 getMarkersFromMaps(geoLink)
599 .forEach(m => m.remove())
600
601 const sibling = [
602 geoLink.previousElementSibling,
603 geoLink.nextElementSibling,
604 ]
605 .find(a =>
606 a.classList.contains('from-geocoding') && a.textContent === geoLink.textContent,
607 )
608
609 if (sibling) {
610 geoLink.remove()
611 } else {
612 geoLink.replaceWith(
613 document.createTextNode(geoLink.textContent),
614 )
615 }
616 },
617 }))
587 } 618 }
588 menu.appendChild(menuItem.setGeoLinkType(geoLink)) 619 menu.appendChild(menuItem.setGeoLinkType(geoLink))
589 } 620 }