# Dumbymap This library generate web maps from Semantic HTML, play around with [demo page](https://outdoorsafetylab.github.io/dumbymap/) ## Getting Started Node.js: ```bash npm install dumbymap ``` ```js import { markdown2HTML, generateMaps } from 'dumbymap' // Create container element const container = document.createElement('div') document.body.append(container) // Convert markdown text into Semantic HTML markdown2HTML(container, '# Heading\n\n```map\nid: foo\nuse: Maplibre\n```\n') // Gernerate maps from code block const dumbymap = generateMaps(container) ``` Browser (CDN): - unpkg: https://unpkg.com/dumbymap@latest/dist/dumbymap.mjs ## Semantic HTML Dumbymap adds several features by Semantic HTML: ### Code Block for map Generated from Element fits CSS Selector `:has(.language-map)` It generates maps by `textContent` in YAML format, done by [`mapclay`](/outdoorsafetylab/mapclay). For example: ~~~markdown ```map use: Maplibre width: 200px ```
use: Maplibre
width: 200px
~~~ ### DocLink Generated from anchor element which: 1. With has link for [document fragment](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#linking_to_an_element_on_the_same_page). 2. With title starts from `=>` 3. The following text in title would be treated as CSS selector of target element It shows leader-line to target element on hover, for example: ```markdown [link](#TEXT "=>.random-class") link ``` Generated from anchor element which: 1. With has link for [document fragment](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#linking_to_an_element_on_the_same_page). 2. With title starts from `=>` 3. The following text of title would be treated as CSS selector of target element Class name `with-leader-line` and `doclink` would be added to element. It shows leader-line to target element on hover, for example: ```markdown [link](#TEXT "=>.random-class") link link ``` ### GeoLink Generated from anchor element with [geo URI scheme](https://en.wikipedia.org/wiki/Geo_URI_scheme). Class name `with-leader-line` and `geolink` would be added to element. It show leader-line to coordinates in target map elements, for example: ```markdown [Taiwan](geo:24,121) Taiwan Taiwan ``` It changes behaviors by query parameters in link: 1. If `xy` is specified, GeoLink would use its value instead of value in geo URI scheme 2. If `id` is specified, GeoLink would only points to map with its value. Can use comma to add multiple id For example: ```html