diff --git a/packages/editor/src/services/BaseService.ts b/packages/editor/src/services/BaseService.ts index e52d0993..8ee7fb45 100644 --- a/packages/editor/src/services/BaseService.ts +++ b/packages/editor/src/services/BaseService.ts @@ -36,18 +36,13 @@ const doAction = async ( let beforeArgs = args; for (const beforeMethod of scope.pluginOptionsList[beforeMethodName]) { - let beforeReturnValue = (await beforeMethod(...beforeArgs)) || []; + beforeArgs = (await beforeMethod(...beforeArgs)) || []; - if (isError(beforeReturnValue)) throw beforeReturnValue; + if (isError(beforeArgs)) throw beforeArgs; - if (!Array.isArray(beforeReturnValue)) { - beforeReturnValue = [beforeReturnValue]; + if (!Array.isArray(beforeArgs)) { + beforeArgs = [beforeArgs]; } - - beforeArgs = beforeArgs.map((v: any, index: number) => { - if (typeof beforeReturnValue[index] === 'undefined') return v; - return beforeReturnValue[index]; - }); } let returnValue: any = await fn(beforeArgs, sourceMethod.bind(scope)); diff --git a/packages/editor/src/services/editor.ts b/packages/editor/src/services/editor.ts index 0273716b..caeeae3d 100644 --- a/packages/editor/src/services/editor.ts +++ b/packages/editor/src/services/editor.ts @@ -303,7 +303,7 @@ class Editor extends BaseService { const stage = this.get('stage'); const root = this.get('root'); - await stage?.add({ config: cloneDeep(newNode), root: cloneDeep(root) }); + await stage?.add({ config: cloneDeep(newNode), parent: cloneDeep(parentNode), root: cloneDeep(root) }); if (layout === Layout.ABSOLUTE) { const fixedLeft = fixNodeLeft(newNode, parentNode, stage?.renderer.contentWindow?.document); diff --git a/packages/editor/src/utils/editor.ts b/packages/editor/src/utils/editor.ts index 8eb8228a..ea2a29b5 100644 --- a/packages/editor/src/utils/editor.ts +++ b/packages/editor/src/utils/editor.ts @@ -223,7 +223,8 @@ export const fixNodeLeft = (config: MNode, parent: MContainer, doc?: Document) = const el = doc.getElementById(`${config.id}`); const parentEl = doc.getElementById(`${parent.id}`); - if (el && parentEl && el.offsetWidth + config.style?.left > parentEl.offsetWidth) { + const left = Number(config.style?.left) || 0; + if (el && parentEl && el.offsetWidth + left > parentEl.offsetWidth) { return parentEl.offsetWidth - el.offsetWidth; }