From 30267cb173fca2cd80a61450b9f2fe2bceac0f06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Fri, 27 May 2022 10:53:50 +0800 Subject: [PATCH 1/7] feat: return unbind function for onChangeDetecting & onChangeSelection --- packages/shell/src/document-model.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/shell/src/document-model.ts b/packages/shell/src/document-model.ts index c5610fcb5..7d9afc16c 100644 --- a/packages/shell/src/document-model.ts +++ b/packages/shell/src/document-model.ts @@ -204,7 +204,7 @@ export default class DocumentModel { * 当前 document 的 hover 变更事件 */ onChangeDetecting(fn: (node: Node) => void) { - this[documentSymbol].designer.detecting.onDetectingChange((node: InnerNode) => { + return this[documentSymbol].designer.detecting.onDetectingChange((node: InnerNode) => { fn(Node.create(node)!); }); } @@ -213,7 +213,7 @@ export default class DocumentModel { * 当前 document 的选中变更事件 */ onChangeSelection(fn: (ids: string[]) => void) { - this[documentSymbol].selection.onSelectionChange((ids: string[]) => { + return this[documentSymbol].selection.onSelectionChange((ids: string[]) => { fn(ids); }); } From 5ea53f706b6571946bcfa56b8655b55717381771 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Fri, 27 May 2022 10:47:40 +0800 Subject: [PATCH 2/7] fix: use the original object if it is not a shell object --- packages/shell/src/document-model.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/shell/src/document-model.ts b/packages/shell/src/document-model.ts index 7d9afc16c..cf9a41eee 100644 --- a/packages/shell/src/document-model.ts +++ b/packages/shell/src/document-model.ts @@ -157,8 +157,8 @@ export default class DocumentModel { copy?: boolean | undefined, ) { const node = this[documentSymbol].insertNode( - parent[nodeSymbol] as any, - thing?.[nodeSymbol], + parent[nodeSymbol] ? parent[nodeSymbol] : parent, + thing?.[nodeSymbol] ? thing[nodeSymbol] : thing, at, copy, ); From d16bbc32877c31ab352a372a19d2a6224b9d7c18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Fri, 27 May 2022 10:25:30 +0800 Subject: [PATCH 3/7] refactor: using a more semver-like prerelease version format --- packages/designer/src/plugin/plugin-manager.ts | 4 +++- packages/engine/build.plugin.js | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/designer/src/plugin/plugin-manager.ts b/packages/designer/src/plugin/plugin-manager.ts index f0b45f2cf..e90b51cfe 100644 --- a/packages/designer/src/plugin/plugin-manager.ts +++ b/packages/designer/src/plugin/plugin-manager.ts @@ -40,7 +40,9 @@ export class LowCodePluginManager implements ILowCodePluginManager { isEngineVersionMatched(versionExp: string): boolean { const engineVersion = engineConfig.get('ENGINE_VERSION'); - return semverSatisfies(engineVersion, versionExp); + // ref: https://github.com/npm/node-semver#functions + // 1.0.1-beta should match '^1.0.0' + return semverSatisfies(engineVersion, versionExp, { includePrerelease: true }); } /** diff --git a/packages/engine/build.plugin.js b/packages/engine/build.plugin.js index 0f7f403ae..4b9ca0458 100644 --- a/packages/engine/build.plugin.js +++ b/packages/engine/build.plugin.js @@ -17,7 +17,7 @@ function getVersion() { const [_, version, beta] = match; - return beta && beta.endsWith('beta') ? `${version}(beta)` : version; + return beta && beta.endsWith('beta') ? `${version}-beta` : version; } const releaseVersion = getVersion(); From 941ae0592586334694c48197aaa6692d49cefbce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Thu, 26 May 2022 14:54:41 +0800 Subject: [PATCH 4/7] feat: add id setter for DocumentModel --- packages/shell/src/document-model.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/shell/src/document-model.ts b/packages/shell/src/document-model.ts index cf9a41eee..100d2c33b 100644 --- a/packages/shell/src/document-model.ts +++ b/packages/shell/src/document-model.ts @@ -68,6 +68,10 @@ export default class DocumentModel { return this[documentSymbol].id; } + set id(id) { + this[documentSymbol].id = id; + } + /** * 获取当前文档所属的 project * @returns From de1f60bbee157267e2c2212df1077cc49ce506f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Wed, 25 May 2022 19:58:36 +0800 Subject: [PATCH 5/7] feat: add availableActions for ComponentMeta --- packages/shell/src/component-meta.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/shell/src/component-meta.ts b/packages/shell/src/component-meta.ts index 8cf9a570e..e7752f685 100644 --- a/packages/shell/src/component-meta.ts +++ b/packages/shell/src/component-meta.ts @@ -84,6 +84,10 @@ export default class ComponentMeta { return this[componentMetaSymbol].prototype; } + get availableActions() { + return this[componentMetaSymbol].availableActions; + } + /** * 设置 npm 信息 * @param npm From 2f8b9545de0210260001a832b52f608238ac4191 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Mon, 23 May 2022 14:12:47 +0800 Subject: [PATCH 6/7] feat: add componentMeta getter for setingPropEntry --- packages/shell/src/setting-prop-entry.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/shell/src/setting-prop-entry.ts b/packages/shell/src/setting-prop-entry.ts index 7449e7bc2..2414b66f5 100644 --- a/packages/shell/src/setting-prop-entry.ts +++ b/packages/shell/src/setting-prop-entry.ts @@ -3,6 +3,7 @@ import { CompositeValue, FieldConfig } from '@alilc/lowcode-types'; import { settingPropEntrySymbol } from './symbols'; import Node from './node'; import SettingTopEntry from './setting-top-entry'; +import ComponentMeta from './component-meta'; export default class SettingPropEntry { private readonly [settingPropEntrySymbol]: SettingField; @@ -89,6 +90,13 @@ export default class SettingPropEntry { return this[settingPropEntrySymbol].isSettingField; } + /** + * componentMeta + */ + get componentMeta(): ComponentMeta | null { + return ComponentMeta.create(this[settingPropEntrySymbol].componentMeta); + } + /** * 设置 key 值 * @param key From d9a44c5de7861e9180567b4afb787e381cefac61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Fri, 20 May 2022 14:19:13 +0800 Subject: [PATCH 7/7] feat: add slotNode for shell prop --- packages/shell/src/prop.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/shell/src/prop.ts b/packages/shell/src/prop.ts index 9d5f42cb5..aba59ca73 100644 --- a/packages/shell/src/prop.ts +++ b/packages/shell/src/prop.ts @@ -43,6 +43,13 @@ export default class Prop { return Node.create(this[propSymbol].getNode()); } + /** + * return the slot node (only if the current prop represents a slot) + */ + get slotNode(): Node | null { + return Node.create(this[propSymbol].slotNode); + } + /** * judge if it is a prop or not */