diff options
Diffstat (limited to 'src/dumbymap.mjs')
-rw-r--r-- | src/dumbymap.mjs | 33 |
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 | } |