diff --git a/src/components/ElementPopup.vue b/src/components/ElementPopup.vue index b69a429..496f0bf 100644 --- a/src/components/ElementPopup.vue +++ b/src/components/ElementPopup.vue @@ -692,26 +692,6 @@ watch(fontFamily, async (val) => { if (val && val !== 'sans-serif') await loadFont(val); }); -// Sync disabled special groups with TextSettings defaults -watch(() => textDefaults.fontFamily, (val) => { - if (!settingEnabled.font) fontFamily.value = val; -}); -watch(() => textDefaults.fontSize, (val) => { - if (!settingEnabled.fontSize) { - fontSize.value = val.value; - fontSize.unit = val.unit; - } -}, { deep: true }); -watch(() => textDefaults.lineHeight, (val) => { - if (!settingEnabled.lineHeight) { - lineHeight.value = val.value; - lineHeight.unit = val.unit; - } -}, { deep: true }); -watch(() => textDefaults.color, (val) => { - if (!settingEnabled.color) color.value = val; -}); - // Watchers — simple props (with group guard) for (const prop of styleProps) { watch(prop.get, () => { diff --git a/src/composables/usePreviewRenderer.js b/src/composables/usePreviewRenderer.js index 01a8384..1fa6044 100644 --- a/src/composables/usePreviewRenderer.js +++ b/src/composables/usePreviewRenderer.js @@ -138,10 +138,14 @@ export function usePreviewRenderer({ } ); - // Note: no separate watcher on fontFaceCss — the content watcher handles re-render. - // fontFaceCss is read from the store at render time in the srcdoc template. - // loadFont() is awaited before updateStyle() in callers, so fontFaceCss is always - // up to date when the content watcher fires. + // Watch for font-face CSS changes (new font loaded) and re-render + watch( + () => stylesheetStore.fontFaceCss, + () => { + if (!initialized.value) return; + renderPreview(); + } + ); // Re-render when narrative data changes watch(