aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/dumbymap.mjs33
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 */
93const 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: {