From cf5dd356869ac272dd8d3a1948ff5f4c6536b23d Mon Sep 17 00:00:00 2001 From: Hufe921 Date: Mon, 31 Jul 2023 20:30:04 +0800 Subject: [PATCH] fix: control value style not affected by prefix #227 --- src/editor/core/draw/control/select/SelectControl.ts | 9 +++++++-- src/editor/core/draw/control/text/TextControl.ts | 8 +++++++- src/editor/utils/index.ts | 10 ++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/editor/core/draw/control/select/SelectControl.ts b/src/editor/core/draw/control/select/SelectControl.ts index 2f2967a..6285489 100644 --- a/src/editor/core/draw/control/select/SelectControl.ts +++ b/src/editor/core/draw/control/select/SelectControl.ts @@ -2,12 +2,13 @@ import { EDITOR_COMPONENT, EDITOR_PREFIX } from '../../../../dataset/constant/Editor' +import { EDITOR_ELEMENT_STYLE_ATTR } from '../../../../dataset/constant/Element' import { ControlComponent } from '../../../../dataset/enum/Control' import { EditorComponent } from '../../../../dataset/enum/Editor' import { KeyMap } from '../../../../dataset/enum/KeyMap' import { IControlInstance } from '../../../../interface/Control' import { IElement } from '../../../../interface/Element' -import { splitText } from '../../../../utils' +import { omitObject, splitText } from '../../../../utils' import { formatElementContext } from '../../../../utils/element' import { Control } from '../Control' @@ -189,12 +190,16 @@ export class SelectControl implements IControlInstance { // 插入 const elementList = this.control.getElementList() const startElement = elementList[startIndex] + const anchorElement = + startElement.controlComponent === ControlComponent.PREFIX + ? omitObject(startElement, EDITOR_ELEMENT_STYLE_ATTR) + : startElement const start = startIndex + 1 const data = splitText(valueSet.value) const draw = this.control.getDraw() for (let i = 0; i < data.length; i++) { const newElement: IElement = { - ...startElement, + ...anchorElement, value: data[i], controlComponent: ControlComponent.VALUE } diff --git a/src/editor/core/draw/control/text/TextControl.ts b/src/editor/core/draw/control/text/TextControl.ts index 4dfe330..dbec717 100644 --- a/src/editor/core/draw/control/text/TextControl.ts +++ b/src/editor/core/draw/control/text/TextControl.ts @@ -1,7 +1,9 @@ +import { EDITOR_ELEMENT_STYLE_ATTR } from '../../../../dataset/constant/Element' import { ControlComponent } from '../../../../dataset/enum/Control' import { KeyMap } from '../../../../dataset/enum/KeyMap' import { IControlInstance } from '../../../../interface/Control' import { IElement } from '../../../../interface/Element' +import { omitObject } from '../../../../utils' import { formatElementContext } from '../../../../utils/element' import { Control } from '../Control' @@ -72,10 +74,14 @@ export class TextControl implements IControlInstance { } // 插入 const startElement = elementList[startIndex] + const anchorElement = + startElement.controlComponent === ControlComponent.PREFIX + ? omitObject(startElement, EDITOR_ELEMENT_STYLE_ATTR) + : startElement const start = range.startIndex + 1 for (let i = 0; i < data.length; i++) { const newElement: IElement = { - ...startElement, + ...anchorElement, ...data[i], controlComponent: ControlComponent.VALUE } diff --git a/src/editor/utils/index.ts b/src/editor/utils/index.ts index 5babafe..f005afd 100644 --- a/src/editor/utils/index.ts +++ b/src/editor/utils/index.ts @@ -202,6 +202,16 @@ export function cloneProperty( } } +export function omitObject(object: T, keys: (keyof T)[]): T { + const cloneObject = deepClone(object) + for (const key in object) { + if (keys.includes(key)) { + delete cloneObject[key] + } + } + return cloneObject +} + export function convertStringToBase64(input: string) { const encoder = new TextEncoder() const data = encoder.encode(input)