diff options
author | Hsieh Chin Fan <pham@topo.tw> | 2024-10-17 10:28:32 +0800 |
---|---|---|
committer | Hsieh Chin Fan <pham@topo.tw> | 2024-10-17 10:28:32 +0800 |
commit | 337a562ee8c9e2531a1a6799acaa66567ad7ef12 (patch) | |
tree | 818b4daf06bc35191074f650fc2d28ffc5e8ba52 | |
parent | e4f01ea8f7817fa738ea9012fa217a2b9eca88aa (diff) |
feat: option "autoMap" in case no valid render target in Semantic HTML
-rw-r--r-- | addon/index.mjs | 1 | ||||
-rw-r--r-- | src/dumbymap.mjs | 14 |
2 files changed, 9 insertions, 6 deletions
diff --git a/addon/index.mjs b/addon/index.mjs index 092adc4..b5d71ba 100644 --- a/addon/index.mjs +++ b/addon/index.mjs | |||
@@ -38,4 +38,5 @@ window.generateMaps(document.querySelector('main') ?? document.body, { | |||
38 | addBlocks, | 38 | addBlocks, |
39 | initialLayout: '', | 39 | initialLayout: '', |
40 | render: simpleRender, | 40 | render: simpleRender, |
41 | autoMap: true, | ||
41 | }) | 42 | }) |
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs index 94fcc1d..706e874 100644 --- a/src/dumbymap.mjs +++ b/src/dumbymap.mjs | |||
@@ -14,7 +14,7 @@ import { register, fromEPSGCode } from 'ol/proj/proj4' | |||
14 | import LeaderLine from 'leader-line' | 14 | import LeaderLine from 'leader-line' |
15 | 15 | ||
16 | /** CSS Selector for main components */ | 16 | /** CSS Selector for main components */ |
17 | const mapBlockSelector = 'pre:has(.language-map)' | 17 | const mapBlockSelector = 'pre:has(.language-map), .mapclay-container' |
18 | const docLinkSelector = 'a[href^="#"][title^="=>"]' | 18 | const docLinkSelector = 'a[href^="#"][title^="=>"]' |
19 | const geoLinkSelector = 'a[href^="geo:"]' | 19 | const geoLinkSelector = 'a[href^="geo:"]' |
20 | 20 | ||
@@ -163,6 +163,7 @@ export const generateMaps = (container, { | |||
163 | delay, | 163 | delay, |
164 | renderCallback, | 164 | renderCallback, |
165 | addBlocks = defaultBlocks, | 165 | addBlocks = defaultBlocks, |
166 | autoMap = false, | ||
166 | render = defaultRender, | 167 | render = defaultRender, |
167 | } = {}) => { | 168 | } = {}) => { |
168 | /** Prepare Contaner */ | 169 | /** Prepare Contaner */ |
@@ -457,11 +458,12 @@ export const generateMaps = (container, { | |||
457 | const elementsWithMapConfig = Array.from( | 458 | const elementsWithMapConfig = Array.from( |
458 | container.querySelectorAll(mapBlockSelector) ?? [], | 459 | container.querySelectorAll(mapBlockSelector) ?? [], |
459 | ) | 460 | ) |
460 | if (elementsWithMapConfig.length === 0) { | 461 | if (autoMap && elementsWithMapConfig.length === 0) { |
461 | const map = document.createElement('pre') | 462 | const mapContainer = document.createElement('pre') |
462 | map.textContent = '#Created by DumbyMap' | 463 | mapContainer.className = 'mapclay-container' |
463 | htmlHolder.insertBefore(map, htmlHolder.firstElementChild) | 464 | mapContainer.textContent = '#Created by DumbyMap' |
464 | elementsWithMapConfig.push(map) | 465 | htmlHolder.insertBefore(mapContainer, htmlHolder.firstElementChild) |
466 | elementsWithMapConfig.push(mapContainer) | ||
465 | } | 467 | } |
466 | 468 | ||
467 | /** Render each taget element for maps */ | 469 | /** Render each taget element for maps */ |