diff --git a/packages/designer/src/document/node/modal-nodes-manager.ts b/packages/designer/src/document/node/modal-nodes-manager.ts index e2c459521..7b1471ea9 100644 --- a/packages/designer/src/document/node/modal-nodes-manager.ts +++ b/packages/designer/src/document/node/modal-nodes-manager.ts @@ -32,7 +32,7 @@ export class ModalNodesManager { this.emitter = new EventEmitter(); this.nodeRemoveEvents = {}; this.setNodes(); - this.hideModalNodes(); + // this.hideModalNodes(); this.willDestroy = [ page.onNodeCreate((node) => this.addNode(node)), page.onNodeDestroy((node) => this.removeNode(node)), diff --git a/packages/designer/src/document/node/node.ts b/packages/designer/src/document/node/node.ts index 35618f20a..7c6bb0ab3 100644 --- a/packages/designer/src/document/node/node.ts +++ b/packages/designer/src/document/node/node.ts @@ -166,6 +166,9 @@ export class Node { }); this.settingEntry = this.document.designer.createSettingEntry([this]); } else { + if (this.componentMeta.isModal) { + extras.hidden = true; + } // 这里 props 被初始化两次,一次 new,一次 import,new 的实例需要给 propsReducer 的钩子去使用, // import 是为了使用钩子返回的值,并非完全幂等的操作,部分行为执行两次会有 bug, // 所以在 props 里会对 new / import 做一些区别化的解析 @@ -802,20 +805,13 @@ export class Node { } insertBefore(node: Node, ref?: Node, useMutator = true) { - this.children?.insert(node, ref ? ref.index : null, useMutator); + const nodeInstance = ensureNode(node, this.document); + this.children?.insert(nodeInstance, ref ? ref.index : null, useMutator); } insertAfter(node: any, ref?: Node, useMutator = true) { - if (!isNode(node)) { - if (node.getComponentName) { - node = this.document.createNode({ - componentName: node.getComponentName(), - }); - } else { - node = this.document.createNode(node); - } - } - this.children?.insert(node, ref ? ref.index + 1 : null, useMutator); + const nodeInstance = ensureNode(node, this.document); + this.children?.insert(nodeInstance, ref ? ref.index + 1 : null, useMutator); } getParent() { @@ -1001,6 +997,20 @@ export class Node { } } +function ensureNode(node: any, document: DocumentModel): Node { + let nodeInstance = node; + if (!isNode(node)) { + if (node.getComponentName) { + nodeInstance = document.createNode({ + componentName: node.getComponentName(), + }); + } else { + nodeInstance = document.createNode(node); + } + } + return nodeInstance; +} + export interface ParentalNode extends Node { readonly children: NodeChildren; } diff --git a/packages/ignitor/build.json b/packages/ignitor/build.json index 02cfe5fb3..593dfb184 100644 --- a/packages/ignitor/build.json +++ b/packages/ignitor/build.json @@ -9,7 +9,7 @@ }, "vendor": false, "devServer": { - "useLocalIp": true, + "liveReload": false, "hot": false }, "publicPath": "/", diff --git a/packages/vision-polyfill/src/pages.ts b/packages/vision-polyfill/src/pages.ts index 74b87a3a8..dedd9db2c 100644 --- a/packages/vision-polyfill/src/pages.ts +++ b/packages/vision-polyfill/src/pages.ts @@ -74,10 +74,7 @@ const pages = Object.assign(project, { true, ); - // FIXME: 根本原因应该是 propStash 导致的,这样可以避免页面加载之后就被标记为 isModified - setTimeout(() => { - project.currentDocument?.history.savePoint(); - }, 0); + project.currentDocument?.history.savePoint(); }, addPage(data: OldPageData | RootSchema) { if (isPageDataV1(data)) {