aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/dumbymap.mjs
diff options
context:
space:
mode:
authorHsieh Chin Fan <pham@topo.tw>2024-10-07 16:04:32 +0800
committerHsieh Chin Fan <pham@topo.tw>2024-10-07 16:15:56 +0800
commitd407f526ab63eb631d14c5fe74c36db5a0cf202e (patch)
treeb81489c7e29cbe713cd44a8a57001824c73b9730 /src/dumbymap.mjs
parent447311b0614cd09e29a55e46c38153ea9a1b3247 (diff)
fix: apply observer on cached maps
Diffstat (limited to 'src/dumbymap.mjs')
-rw-r--r--src/dumbymap.mjs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs
index a38b37c..383eedf 100644
--- a/src/dumbymap.mjs
+++ b/src/dumbymap.mjs
@@ -289,14 +289,14 @@ export const generateMaps = (container, { delay } = {}) => {
289 mapElement.renderer = renderer 289 mapElement.renderer = renderer
290 mapElement.setAttribute('tabindex', '-1') 290 mapElement.setAttribute('tabindex', '-1')
291 if (mapElement.getAttribute('data-render') === 'fulfilled') { 291 if (mapElement.getAttribute('data-render') === 'fulfilled') {
292 mapCache[mapElement.id] = renderer 292 mapCache[mapElement.id] ??= renderer
293 } else { 293 } else {
294 return 294 return
295 } 295 }
296 296
297 // Work with Mutation Observer 297 // Work with Mutation Observer
298 const observer = mapFocusObserver() 298 const observer = mapFocusObserver()
299 mapFocusObserver().observe(mapElement, { 299 observer.observe(mapElement, {
300 attributes: true, 300 attributes: true,
301 attributeFilter: ['class'], 301 attributeFilter: ['class'],
302 attributeOldValue: true 302 attributeOldValue: true
@@ -386,11 +386,11 @@ export const generateMaps = (container, { delay } = {}) => {
386 // If map in cache has the same ID, just put it into target 386 // If map in cache has the same ID, just put it into target
387 // So user won't feel anything changes when editing markdown 387 // So user won't feel anything changes when editing markdown
388 configList.forEach(config => { 388 configList.forEach(config => {
389 const cache = mapCache[config.id] 389 const cachedRenderer = mapCache[config.id]
390 if (!cache) return 390 if (!cachedRenderer) return
391 391
392 target.appendChild(cache.target) 392 target.appendChild(cachedRenderer.target)
393 config.target = cache.target 393 config.target = cachedRenderer.target
394 }) 394 })
395 395
396 // trivial: if map cache is applied, do not show yaml text 396 // trivial: if map cache is applied, do not show yaml text
@@ -411,6 +411,9 @@ export const generateMaps = (container, { delay } = {}) => {
411 Array.from(target.children).forEach(e => { 411 Array.from(target.children).forEach(e => {
412 e.style.order = order 412 e.style.order = order
413 order++ 413 order++
414 if (e.dataset.render === 'fulfilled') {
415 afterMapRendered(e.renderer)
416 }
414 }) 417 })
415 }, 418 },
416 delay ?? 1000 419 delay ?? 1000