diff options
Diffstat (limited to 'src/dumbymap.mjs')
-rw-r--r-- | src/dumbymap.mjs | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs index d365712..b9b9fa2 100644 --- a/src/dumbymap.mjs +++ b/src/dumbymap.mjs | |||
@@ -9,6 +9,7 @@ import { onRemove, animateRectTransition, throttle } from './utils'; | |||
9 | import { Layout, SideBySide, Overlay } from './Layout'; | 9 | import { Layout, SideBySide, Overlay } from './Layout'; |
10 | import * as utils from './dumbyUtils'; | 10 | import * as utils from './dumbyUtils'; |
11 | import * as menuItem from './MenuItem'; | 11 | import * as menuItem from './MenuItem'; |
12 | import { default as PlainModal } from 'plain-modal'; | ||
12 | 13 | ||
13 | const docLinkSelector = 'a[href^="#"][title^="=>"]'; | 14 | const docLinkSelector = 'a[href^="#"][title^="=>"]'; |
14 | const geoLinkSelector = 'a[href^="geo:"]'; | 15 | const geoLinkSelector = 'a[href^="geo:"]'; |
@@ -155,6 +156,9 @@ export const generateMaps = (container, { delay, mapCallback }) => { | |||
155 | container.appendChild(showcase); | 156 | container.appendChild(showcase); |
156 | showcase.classList.add('Showcase'); | 157 | showcase.classList.add('Showcase'); |
157 | const renderPromises = []; | 158 | const renderPromises = []; |
159 | const modalContent = document.createElement('div'); | ||
160 | container.appendChild(modalContent); | ||
161 | const modal = new PlainModal(modalContent); | ||
158 | 162 | ||
159 | const dumbymap = { | 163 | const dumbymap = { |
160 | layouts, | 164 | layouts, |
@@ -162,15 +166,15 @@ export const generateMaps = (container, { delay, mapCallback }) => { | |||
162 | htmlHolder, | 166 | htmlHolder, |
163 | showcase, | 167 | showcase, |
164 | blocks, | 168 | blocks, |
169 | modal, | ||
165 | utils: { | 170 | utils: { |
171 | ...utils, | ||
166 | renderedMaps: () => | 172 | renderedMaps: () => |
167 | Array.from( | 173 | Array.from( |
168 | container.querySelectorAll('.mapclay[data-render=fulfilled]'), | 174 | container.querySelectorAll('.mapclay[data-render=fulfilled]'), |
169 | ), | 175 | ), |
170 | focusNextMap: throttle(utils.focusNextMap, utils.focusDelay), | 176 | focusNextMap: throttle(utils.focusNextMap, utils.focusDelay), |
171 | switchToNextLayout: throttle(utils.switchToNextLayout, 300), | 177 | switchToNextLayout: throttle(utils.switchToNextLayout, 300), |
172 | focusNextBlock: utils.focusNextBlock, | ||
173 | removeBlockFocus: utils.removeBlockFocus, | ||
174 | }, | 178 | }, |
175 | }; | 179 | }; |
176 | Object.entries(dumbymap.utils).forEach(([util, func]) => { | 180 | Object.entries(dumbymap.utils).forEach(([util, func]) => { |
@@ -540,16 +544,25 @@ export const generateMaps = (container, { delay, mapCallback }) => { | |||
540 | 544 | ||
541 | // Menu Items | 545 | // Menu Items |
542 | container.oncontextmenu = e => { | 546 | container.oncontextmenu = e => { |
547 | e.preventDefault(); | ||
548 | |||
549 | // GeoLinks | ||
543 | const selection = document.getSelection(); | 550 | const selection = document.getSelection(); |
544 | const range = selection.getRangeAt(0); | 551 | if (selection.type === 'Range') { |
545 | if (selection) { | 552 | const range = selection.getRangeAt(0); |
546 | e.preventDefault(); | ||
547 | menu.innerHTML = ''; | 553 | menu.innerHTML = ''; |
548 | const addGeoLink = new menuItem.GeoLink({ range }); | 554 | const addGeoLink = new menuItem.GeoLink({ range }); |
549 | menu.appendChild(addGeoLink.createElement()); | 555 | menu.appendChild(addGeoLink.createElement()); |
550 | } | 556 | } |
551 | menu.style.cssText = `overflow: visible; display: block; left: ${e.clientX + 10}px; top: ${e.clientY + 5}px;`; | 557 | menu.style.cssText = `overflow: visible; display: block; left: ${e.clientX + 10}px; top: ${e.clientY + 5}px;`; |
552 | menu.appendChild(menuItem.modal); | 558 | |
559 | // Print Map Results | ||
560 | const map = e.target.closest('.mapclay'); | ||
561 | if (map) { | ||
562 | menu.appendChild(menuItem.renderResults(dumbymap, map)); | ||
563 | } | ||
564 | |||
565 | // Dumby Utils | ||
553 | menu.appendChild(menuItem.pickMapItem(dumbymap)); | 566 | menu.appendChild(menuItem.pickMapItem(dumbymap)); |
554 | menu.appendChild(menuItem.pickBlockItem(dumbymap)); | 567 | menu.appendChild(menuItem.pickBlockItem(dumbymap)); |
555 | menu.appendChild(menuItem.pickLayoutItem(dumbymap)); | 568 | menu.appendChild(menuItem.pickLayoutItem(dumbymap)); |