diff --git a/src/utils/emitter.ts b/src/utils/emitter.ts index a00bbb8b..b858d9ef 100644 --- a/src/utils/emitter.ts +++ b/src/utils/emitter.ts @@ -2,6 +2,7 @@ import mitt, { type Emitter } from 'mitt' export const enum EmitterEvents { RICH_TEXT_COMMAND = 'RICH_TEXT_COMMAND', + SYNC_RICH_TEXT_ATTRS_TO_STORE = 'SYNC_RICH_TEXT_ATTRS_TO_STORE', OPEN_CHART_DATA_EDITOR = 'OPEN_CHART_DATA_EDITOR', OPEN_LATEX_EDITOR = 'OPEN_LATEX_EDITOR', } @@ -18,6 +19,7 @@ export interface RichTextCommand { type Events = { [EmitterEvents.RICH_TEXT_COMMAND]: RichTextCommand + [EmitterEvents.SYNC_RICH_TEXT_ATTRS_TO_STORE]: void [EmitterEvents.OPEN_CHART_DATA_EDITOR]: void [EmitterEvents.OPEN_LATEX_EDITOR]: void } diff --git a/src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue b/src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue index a07725a5..fc5284ba 100644 --- a/src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue +++ b/src/views/Editor/Toolbar/ElementStylePanel/TextStylePanel.vue @@ -457,6 +457,7 @@ watch(handleElement, () => { lineHeight.value = handleElement.value.lineHeight || 1.5 wordSpace.value = handleElement.value.wordSpace || 0 paragraphSpace.value = handleElement.value.paragraphSpace === undefined ? 5 : handleElement.value.paragraphSpace + emitter.emit(EmitterEvents.SYNC_RICH_TEXT_ATTRS_TO_STORE) }, { deep: true, immediate: true }) const fontSizeOptions = [ diff --git a/src/views/components/element/ProsemirrorEditor.vue b/src/views/components/element/ProsemirrorEditor.vue index ee2adbc5..182f0fd2 100644 --- a/src/views/components/element/ProsemirrorEditor.vue +++ b/src/views/components/element/ProsemirrorEditor.vue @@ -262,9 +262,16 @@ onUnmounted(() => { editorView && editorView.destroy() }) +const syncAttrsToStore = () => { + if (handleElementId.value !== props.elementId) return + handleClick() +} + emitter.on(EmitterEvents.RICH_TEXT_COMMAND, execCommand) +emitter.on(EmitterEvents.SYNC_RICH_TEXT_ATTRS_TO_STORE, syncAttrsToStore) onUnmounted(() => { emitter.off(EmitterEvents.RICH_TEXT_COMMAND, execCommand) + emitter.off(EmitterEvents.SYNC_RICH_TEXT_ATTRS_TO_STORE, syncAttrsToStore) })