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 | |
| parent | 447311b0614cd09e29a55e46c38153ea9a1b3247 (diff) | |
fix: apply observer on cached maps
| -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 |