diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dumbymap.mjs | 33 |
1 files changed, 3 insertions, 30 deletions
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs index 6f9aa6f..97c13af 100644 --- a/src/dumbymap.mjs +++ b/src/dumbymap.mjs | |||
| @@ -58,7 +58,7 @@ export const markdown2HTML = (container, mdContent) => { | |||
| 58 | 58 | ||
| 59 | /** Custom rule for Blocks in DumbyMap */ | 59 | /** Custom rule for Blocks in DumbyMap */ |
| 60 | // FIXME A better way to generate blocks | 60 | // FIXME A better way to generate blocks |
| 61 | md.renderer.rules.dumby_block_open = () => '<article>' | 61 | md.renderer.rules.dumby_block_open = () => '<article class="dumby-block">' |
| 62 | md.renderer.rules.dumby_block_close = () => '</article>' | 62 | md.renderer.rules.dumby_block_close = () => '</article>' |
| 63 | md.core.ruler.before('block', 'dumby_block', state => { | 63 | md.core.ruler.before('block', 'dumby_block', state => { |
| 64 | state.tokens.push(new state.Token('dumby_block_open', '', 1)) | 64 | state.tokens.push(new state.Token('dumby_block_open', '', 1)) |
| @@ -86,31 +86,6 @@ export const markdown2HTML = (container, mdContent) => { | |||
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | /** | 88 | /** |
| 89 | * defaultBlocks. | ||
| 90 | * @description Default way to get blocks from Semantic HTML | ||
| 91 | * @param {HTMLElement} root | ||
| 92 | */ | ||
| 93 | const defaultBlocks = root => { | ||
| 94 | const articles = Array.from(root.querySelectorAll('article')) | ||
| 95 | if (articles.length > 0) return articles | ||
| 96 | |||
| 97 | const others = Array.from( | ||
| 98 | root.querySelectorAll(':has(>p, >blockquote, >pre, >ul, >ol, >table, >details)'), | ||
| 99 | ) | ||
| 100 | .map(e => { | ||
| 101 | e.classList.add('dumby-block') | ||
| 102 | return e | ||
| 103 | }) | ||
| 104 | .filter(e => { | ||
| 105 | const isContained = e.parentElement.closest('.dumby-block') | ||
| 106 | if (isContained) e.classList.remove('dumby-block') | ||
| 107 | return !isContained | ||
| 108 | }) | ||
| 109 | |||
| 110 | return others | ||
| 111 | } | ||
| 112 | |||
| 113 | /** | ||
| 114 | * updateAttributeByStep. | 89 | * updateAttributeByStep. |
| 115 | * @description Update data attribute by steps of map render | 90 | * @description Update data attribute by steps of map render |
| 116 | * @param {Object} - renderer which is running steps | 91 | * @param {Object} - renderer which is running steps |
| @@ -162,7 +137,6 @@ export const generateMaps = (container, { | |||
| 162 | layouts = [], | 137 | layouts = [], |
| 163 | delay, | 138 | delay, |
| 164 | renderCallback, | 139 | renderCallback, |
| 165 | addBlocks = defaultBlocks, | ||
| 166 | autoMap = false, | 140 | autoMap = false, |
| 167 | render = defaultRender, | 141 | render = defaultRender, |
| 168 | } = {}) => { | 142 | } = {}) => { |
| @@ -176,9 +150,8 @@ export const generateMaps = (container, { | |||
| 176 | Array.from(container.children).sort((a, b) => a.textContent.length < b.textContent.length).at(0) | 150 | Array.from(container.children).sort((a, b) => a.textContent.length < b.textContent.length).at(0) |
| 177 | htmlHolder.classList.add('SemanticHtml') | 151 | htmlHolder.classList.add('SemanticHtml') |
| 178 | 152 | ||
| 179 | const blocks = addBlocks(htmlHolder) | 153 | const blocks = htmlHolder.querySelectorAll('.dumby-block') |
| 180 | blocks.forEach(b => { | 154 | blocks.forEach(b => { |
| 181 | b.classList.add('dumby-block') | ||
| 182 | b.dataset.total = blocks.length | 155 | b.dataset.total = blocks.length |
| 183 | }) | 156 | }) |
| 184 | 157 | ||
| @@ -199,7 +172,7 @@ export const generateMaps = (container, { | |||
| 199 | container, | 172 | container, |
| 200 | htmlHolder, | 173 | htmlHolder, |
| 201 | showcase, | 174 | showcase, |
| 202 | blocks, | 175 | get blocks () { return Array.from(htmlHolder.querySelectorAll('.dumby-block')) }, |
| 203 | modal, | 176 | modal, |
| 204 | modalContent, | 177 | modalContent, |
| 205 | utils: { | 178 | utils: { |