From d407f526ab63eb631d14c5fe74c36db5a0cf202e Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Mon, 7 Oct 2024 16:04:32 +0800 Subject: fix: apply observer on cached maps --- src/dumbymap.mjs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src') 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 } = {}) => { mapElement.renderer = renderer mapElement.setAttribute('tabindex', '-1') if (mapElement.getAttribute('data-render') === 'fulfilled') { - mapCache[mapElement.id] = renderer + mapCache[mapElement.id] ??= renderer } else { return } // Work with Mutation Observer const observer = mapFocusObserver() - mapFocusObserver().observe(mapElement, { + observer.observe(mapElement, { attributes: true, attributeFilter: ['class'], attributeOldValue: true @@ -386,11 +386,11 @@ export const generateMaps = (container, { delay } = {}) => { // If map in cache has the same ID, just put it into target // So user won't feel anything changes when editing markdown configList.forEach(config => { - const cache = mapCache[config.id] - if (!cache) return + const cachedRenderer = mapCache[config.id] + if (!cachedRenderer) return - target.appendChild(cache.target) - config.target = cache.target + target.appendChild(cachedRenderer.target) + config.target = cachedRenderer.target }) // trivial: if map cache is applied, do not show yaml text @@ -411,6 +411,9 @@ export const generateMaps = (container, { delay } = {}) => { Array.from(target.children).forEach(e => { e.style.order = order order++ + if (e.dataset.render === 'fulfilled') { + afterMapRendered(e.renderer) + } }) }, delay ?? 1000 -- cgit v1.2.3-70-g09d2