perf: 文本框交互优化

点击或移动文本框时,立即同步样式面板文本属性
This commit is contained in:
Weady 2023-12-04 20:30:26 +08:00
parent 1c40f578df
commit 70743c6587
3 changed files with 10 additions and 0 deletions

View File

@ -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
}

View File

@ -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 = [

View File

@ -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)
})
</script>