diff options
author | Hsieh Chin Fan <pham@topo.tw> | 2024-10-07 16:04:32 +0800 |
---|---|---|
committer | Hsieh Chin Fan <pham@topo.tw> | 2024-10-07 16:15:56 +0800 |
commit | d407f526ab63eb631d14c5fe74c36db5a0cf202e (patch) | |
tree | b81489c7e29cbe713cd44a8a57001824c73b9730 /src/dumbymap.mjs | |
parent | 447311b0614cd09e29a55e46c38153ea9a1b3247 (diff) |
fix: apply observer on cached maps
Diffstat (limited to 'src/dumbymap.mjs')
-rw-r--r-- | src/dumbymap.mjs | 15 |
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 |