diff --git a/packages/designer/src/document/node/node.ts b/packages/designer/src/document/node/node.ts index 9dd21f6f8..5a0136b65 100644 --- a/packages/designer/src/document/node/node.ts +++ b/packages/designer/src/document/node/node.ts @@ -21,6 +21,7 @@ import { ComponentMeta } from '../../component-meta'; import { ExclusiveGroup, isExclusiveGroup } from './exclusive-group'; import { TransformStage } from './transform-stage'; import { ReactElement } from 'react'; +import { SettingTopEntry } from 'designer/src/designer'; /** * 基础节点 @@ -142,6 +143,8 @@ export class Node { return this.componentMeta.icon; } + readonly settingEntry: SettingTopEntry; + constructor(readonly document: DocumentModel, nodeSchema: Schema) { const { componentName, id, children, props, ...extras } = nodeSchema; this.id = id || `node_${document.nextId()}`; @@ -161,6 +164,7 @@ export class Node { if (this.componentMeta.isModal) { this.getExtraProp('hidden', true)?.setValue(true); } + this.settingEntry = this.document.designer.createSettingEntry([ this ]); } private transformProps(props: any): any { @@ -384,7 +388,7 @@ export class Node { // todo } - replaceWith(schema: Schema, migrate = false) { + replaceWith(schema: Schema, migrate = false): any { // reuse the same id? or replaceSelection schema = Object.assign({}, migrate ? this.export() : {}, schema); return this.parent?.replaceChild(this, schema); @@ -396,7 +400,7 @@ export class Node { * @param {Node} node * @param {object} data */ - replaceChild(node: Node, data: any) { + replaceChild(node: Node, data: any): Node { if (this.children?.has(node)) { const selected = this.document.selection.has(node.id); diff --git a/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts b/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts index d6ebc41a1..bcb0e4548 100644 --- a/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts +++ b/packages/editor-preset-vision/src/bundle/upgrade-metadata.ts @@ -711,8 +711,7 @@ export function upgradeMetadata(oldConfig: OldPrototypeConfig) { experimental.initialChildren = typeof initialChildren === 'function' ? (node: any) => { - const props = designer.createSettingEntry(editor, [ node ]); - return initialChildren.call(node, props); + return initialChildren.call(node, node.settingEntry); } : initialChildren; } diff --git a/packages/editor-preset-vision/src/editor.ts b/packages/editor-preset-vision/src/editor.ts index d6a895983..d9a3b7189 100644 --- a/packages/editor-preset-vision/src/editor.ts +++ b/packages/editor-preset-vision/src/editor.ts @@ -59,7 +59,7 @@ function filterReducer(props: any, node: Node): any { return; } try { - if (item.filter(node.getProp(item.name) as any, props[item.name]) === false) { + if (item.filter(node.settingEntry.getProp(item.name), props[item.name]) === false) { delete newProps[item.name]; } } catch (e) { diff --git a/packages/editor-skeleton/src/components/settings/main.ts b/packages/editor-skeleton/src/components/settings/main.ts index 14901aab5..e18bcc610 100644 --- a/packages/editor-skeleton/src/components/settings/main.ts +++ b/packages/editor-skeleton/src/components/settings/main.ts @@ -67,7 +67,7 @@ export class SettingsMain { this.designer = nodes[0].document.designer; } - this._settings = this.designer.createSettingEntry(this.editor, nodes); + this._settings = this.designer.createSettingEntry(nodes); } purge() {