libs/elements/src/lib/utils/render/render-edit.ts
import { IElementConfig, IElementData } from '@aiao/elements-cdk'; import { ELEMENTS_EDIT_ITEM, ElementsEditOptions } from './render.interface'; Function `elementEditDataOptions` has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
Function `elementEditDataOptions` has 26 lines of code (exceeds 25 allowed). Consider refactoring.const elementEditDataOptions = (configs: IElementConfig[], data: IElementData, options?: ElementsEditOptions) => { const { tag, class: cls, attributes: attrs, events } = data; // tag 必须的 if (!tag) { return null; } // 从配置里算出内容 const config = configs.find(conf => conf.tag === tag); if (!config) { return data; } const { innerText: allowInnerText, innerHTML: allowInnerHTML, editTag } = config; const newCls = { ...cls }; const newAttrs = { ...attrs }; const newEvents = { ...events }; const newTag = editTag || tag; switch (options?.editMode) { case 'edit': // 编辑模式下绑定 editor 标识符 newCls[ELEMENTS_EDIT_ITEM] = true; // 可编辑 if (allowInnerHTML || allowInnerText) { newAttrs.contentEditable = true; } // 侦听基础事件 newEvents.onInput = (e: any) => { const value = allowInnerHTML ? e.target.innerHTML : e.target.innerText; console.log('input', value); }; break; } return { ...data, tag: newTag, class: newCls, attributes: newAttrs, events: newEvents };}; /** * 针对不同配置切换多个编辑数据 * @param configs elements 配置 * @param data 原始数据 * @param options 编辑器配置 */export const elementsPreviewHtmlData = ( configs: IElementConfig[], data: IElementData[], options?: ElementsEditOptions) => { return data.map(d => elementEditDataOptions(configs, d, options)).filter(d => d !== null) as IElementData[];};