aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/dumbymap.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'src/dumbymap.mjs')
-rw-r--r--src/dumbymap.mjs25
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';
9import { Layout, SideBySide, Overlay } from './Layout'; 9import { Layout, SideBySide, Overlay } from './Layout';
10import * as utils from './dumbyUtils'; 10import * as utils from './dumbyUtils';
11import * as menuItem from './MenuItem'; 11import * as menuItem from './MenuItem';
12import { default as PlainModal } from 'plain-modal';
12 13
13const docLinkSelector = 'a[href^="#"][title^="=>"]'; 14const docLinkSelector = 'a[href^="#"][title^="=>"]';
14const geoLinkSelector = 'a[href^="geo:"]'; 15const 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));