diff --git a/docs/docs/api/setters.md b/docs/docs/api/setters.md
index 9b3c9d705d..4e1eac744f 100644
--- a/docs/docs/api/setters.md
+++ b/docs/docs/api/setters.md
@@ -73,7 +73,7 @@ registerSetter(
```typescript
import { setters, skeleton } from '@felce/lowcode-engine';
-import { setterMap, pluginMap } from '@alilc/lowcode-engine-ext';
+import { setterMap, pluginMap } from '@felce/lowcode-engine-ext';
import { IPublicModelPluginContext } from '@felce/lowcode-types';
const SetterRegistry = (ctx: IPublicModelPluginContext) => {
diff --git a/docs/docs/guide/create/useEditor.md b/docs/docs/guide/create/useEditor.md
index 151e6cd5af..91b6c6538a 100644
--- a/docs/docs/guide/create/useEditor.md
+++ b/docs/docs/guide/create/useEditor.md
@@ -13,9 +13,11 @@ sidebar_position: 0
1. 确保本地安装了 Node.js 和 npm,如果没有,[您可以通过 nvm 进行快捷的安装](https://github.com/nvm-sh/nvm)
2. 确保为 npm [设置了可以访问的 npm 源,保证安装过程无网络问题](https://npmmirror.com/)
3. 安装官方命令行工具
+
```bash
npm install -g @alilc/create-element@latest
```
+
4. 通过命令行工具创建
```bash
@@ -31,17 +33,23 @@ sidebar_position: 0
> 注 @alilc/create-element 版本需 >= 1.0.4,若看不到`编辑器`选项,请重新执行步骤 3
5. 进入创建后的目录
+
```bash
cd editor-project-name
```
+
6. 安装依赖
+
```bash
npm install
```
+
7. 安装依赖成功后,启动项目 (注意观察上一步的输出,如有 error 等失败信息,请先进行排查)
+
```bash
npm start
```
+
执行后如果看到这个界面,说明项目启动成功。您可以继续看后续章节了。本章节后续内容均为高级配置方式。

@@ -60,7 +68,7 @@ sidebar_position: 0
@@ -72,7 +80,7 @@ sidebar_position: 0
@@ -91,18 +99,18 @@ sidebar_position: 0
```
-> 注:如果 unpkg 的服务比较缓慢,您可以使用官方 CDN 来获得确定版本的低代码引擎,如对于引擎的 1.0.18 版本,可用以下官方 CDN 替代
+> 注:如果 unpkg 的服务比较缓慢,您可以使用官方 cnpm CDN 来获得确定版本的低代码引擎,如对于引擎的 1.4.0 版本,可用以下cnpm CDN 替代
>
-> - [https://uipaas-assets.com/prod/npm/@felce/lowcode-engine/1.0.18/dist/js/engine-core.js](https://uipaas-assets.com/prod/npm/@felce/lowcode-engine/1.0.18/dist/js/engine-core.js)
+> - [https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0/files/dist/js/engine-core.js](https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0/files/dist/js/engine-core.js)
### 配置打包
@@ -116,7 +124,7 @@ sidebar_position: 0
"prop-types": "var window.PropTypes",
"@alifd/next": "var window.Next",
"@felce/lowcode-engine": "var window.AliLowCodeEngine",
- "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt",
+ "@felce/lowcode-engine-ext": "var window.AliLowCodeEngineExt",
"moment": "var window.moment",
"lodash": "var window._"
}
diff --git a/docs/docs/guide/design/setter.md b/docs/docs/guide/design/setter.md
index 62b795d9b7..5bd6c33ad4 100644
--- a/docs/docs/guide/design/setter.md
+++ b/docs/docs/guide/design/setter.md
@@ -18,7 +18,7 @@ sidebar_position: 6
## npm 包与仓库信息
-- npm 包:@alilc/lowcode-engine-ext
+- npm 包:@felce/lowcode-engine-ext
- 仓库:[https://github.com/fe-lce/lowcode-engine-ext](https://github.com/fe-lce/lowcode-engine-ext)
## 设置器模块原理
diff --git a/docs/docs/participate/index.md b/docs/docs/participate/index.md
index 1a602a73bf..f468bad42a 100644
--- a/docs/docs/participate/index.md
+++ b/docs/docs/participate/index.md
@@ -34,19 +34,19 @@ npm install && npm run setup
{
"proxy": [
[
- "https://uipaas-assets.com/prod/npm/@felce/lowcode-engine/(.*)/dist/js/engine-core.js",
+ "https://registry.npmmirror.com/@felce/lowcode-engine/(.*)/dist/js/engine-core.js",
"http://localhost:5555/js/AliLowCodeEngine.js"
],
[
- "https://uipaas-assets.com/prod/npm/@felce/lowcode-engine/(.*)/dist/css/engine-core.css",
+ "https://registry.npmmirror.com/@felce/lowcode-engine/(.*)/dist/css/engine-core.css",
"http://localhost:5555/css/AliLowCodeEngine.css"
],
[
- "https?://uipaas-assets.com/prod/npm/@felce/lowcode-engine/(.*)/dist/js/react-simulator-renderer.js",
+ "https://registry.npmmirror.com/@felce/lowcode-engine/(.*)/dist/js/react-simulator-renderer.js",
"http://localhost:5555/js/ReactSimulatorRenderer.js"
],
[
- "https?://uipaas-assets.com/prod/npm/@felce/lowcode-engine/(.*)/dist/css/react-simulator-renderer.css",
+ "https://registry.npmmirror.com/@felce/lowcode-engine/(.*)/dist/css/react-simulator-renderer.css",
"http://localhost:5555/css/ReactSimulatorRenderer.css"
]
]
diff --git a/lerna.json b/lerna.json
index d0d5e9aea2..4ba0590f28 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,6 +1,6 @@
{
"lerna": "4.0.0",
- "version": "1.4.0",
+ "version": "1.4.1",
"npmClient": "yarn",
"useWorkspaces": true,
"packages": [
diff --git a/packages/designer/package.json b/packages/designer/package.json
index 563e3d2979..10608a3504 100644
--- a/packages/designer/package.json
+++ b/packages/designer/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-designer",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "Designer for Ali LowCode Engine",
"main": "lib/index.js",
"module": "es/index.js",
@@ -15,9 +15,9 @@
},
"license": "MIT",
"dependencies": {
- "@felce/lowcode-editor-core": "1.4.0",
- "@felce/lowcode-types": "1.4.0",
- "@felce/lowcode-utils": "1.4.0",
+ "@felce/lowcode-editor-core": "1.4.1",
+ "@felce/lowcode-types": "1.4.1",
+ "@felce/lowcode-utils": "1.4.1",
"classnames": "^2.2.6",
"react": "^16",
"react-dom": "^16.7.0",
diff --git a/packages/designer/src/context-menu-actions.ts b/packages/designer/src/context-menu-actions.ts
index 4bb052aa3a..17a277dd22 100644
--- a/packages/designer/src/context-menu-actions.ts
+++ b/packages/designer/src/context-menu-actions.ts
@@ -19,7 +19,7 @@ import './context-menu-actions.scss';
export interface IContextMenuActions {
actions: IPublicTypeContextMenuAction[];
- adjustMenuLayoutFn: (actions: IPublicTypeContextMenuItem[]) => IPublicTypeContextMenuItem[];
+ // adjustMenuLayoutFn: (actions: IPublicTypeContextMenuItem[]) => IPublicTypeContextMenuItem[];
addMenuAction: IPublicApiMaterial['addContextMenuOption'];
@@ -57,7 +57,11 @@ export class GlobalContextMenuActions {
event.preventDefault();
const actions: IPublicTypeContextMenuAction[] = [];
- let contextMenu: ContextMenuActions = this.contextMenuActionsMap.values().next().value;
+ let contextMenu: ContextMenuActions | undefined = this.contextMenuActionsMap
+ .values()
+ .next().value;
+ if (!contextMenu) return;
+
this.contextMenuActionsMap.forEach((contextMenu) => {
actions.push(...contextMenu.actions);
});
@@ -90,12 +94,17 @@ export class GlobalContextMenuActions {
pluginContext,
});
- const target = event.target;
+ const target = event.target as HTMLElement;
+
+ if (!target) {
+ console.warn('context menu target is null');
+ return;
+ }
- const { top, left } = target?.getBoundingClientRect();
+ const { top, left } = target.getBoundingClientRect();
const menuInstance = Menu.create({
- target: event.target,
+ target: target,
offset: [event.clientX - left, event.clientY - top],
children: menuNode,
className: 'engine-context-menu',
@@ -177,7 +186,7 @@ export class ContextMenuActions implements IContextMenuActions {
) as IPublicModelPluginContext;
const menus: IPublicTypeContextMenuItem[] = parseContextMenuProperties(actions, {
- nodes: nodes.map((d) => designer.shellModelFactory.createNode(d)!),
+ nodes: nodes.map((d) => designer.shellModelFactory!.createNode(d)!),
destroy,
event,
pluginContext,
@@ -191,7 +200,7 @@ export class ContextMenuActions implements IContextMenuActions {
const menuNode = parseContextMenuAsReactNode(layoutMenu, {
destroy,
- nodes: nodes.map((d) => designer.shellModelFactory.createNode(d)!),
+ nodes: nodes.map((d) => designer.shellModelFactory!.createNode(d)!),
pluginContext,
});
@@ -210,10 +219,10 @@ export class ContextMenuActions implements IContextMenuActions {
originalEvent.stopPropagation();
originalEvent.preventDefault();
// 如果右键的节点不在 当前选中的节点中,选中该节点
- if (!designer.currentSelection.has(node.id)) {
- designer.currentSelection.select(node.id);
+ if (!designer.currentSelection!.has(node.id)) {
+ designer.currentSelection!.select(node.id);
}
- const nodes = designer.currentSelection.getNodes();
+ const nodes = designer.currentSelection!.getNodes();
this.handleContextMenu(nodes, originalEvent);
},
),
diff --git a/packages/designer/src/designer/active-tracker.ts b/packages/designer/src/designer/active-tracker.ts
index 69ce1122b9..2b08dc380c 100644
--- a/packages/designer/src/designer/active-tracker.ts
+++ b/packages/designer/src/designer/active-tracker.ts
@@ -3,9 +3,8 @@ import { obx, IEventBus, createModuleEventBus } from '@felce/lowcode-editor-core
import { IPublicTypeActiveTarget, IPublicModelActiveTracker } from '@felce/lowcode-types';
import { isNode } from '@felce/lowcode-utils';
-export interface IActiveTracker extends Omit {
- _target: ActiveTarget | INode;
-
+export interface IActiveTracker
+ extends Omit {
track(originalTarget: ActiveTarget | INode): void;
onChange(fn: (target: ActiveTarget) => void): () => void;
@@ -16,7 +15,7 @@ export interface ActiveTarget extends Omit {
}
export class ActiveTracker implements IActiveTracker {
- @obx.ref private _target?: ActiveTarget | INode;
+ @obx.ref private _target: ActiveTarget | INode;
private emitter: IEventBus = createModuleEventBus('ActiveTracker');
diff --git a/packages/designer/src/designer/designer.ts b/packages/designer/src/designer/designer.ts
index 70ceaa4442..b01bc873c8 100644
--- a/packages/designer/src/designer/designer.ts
+++ b/packages/designer/src/designer/designer.ts
@@ -1,3 +1,4 @@
+import { BuiltinSimulatorProps } from './../builtin-simulator/host';
import { ComponentType } from 'react';
import {
obx,
@@ -55,13 +56,13 @@ const logger = new Logger({ level: 'warn', bizName: 'designer' });
export interface DesignerProps {
[key: string]: any;
editor: IPublicModelEditor;
- shellModelFactory: IShellModelFactory;
+ shellModelFactory?: IShellModelFactory;
className?: string;
style?: object;
defaultSchema?: IPublicTypeProjectSchema;
hotkeys?: object;
viewName?: string;
- simulatorProps?: Record | ((document: DocumentModel) => object);
+ simulatorProps?: ((project: Project) => BuiltinSimulatorProps) | BuiltinSimulatorProps;
simulatorComponent?: ComponentType;
dragGhostComponent?: ComponentType;
suspensed?: boolean;
@@ -71,13 +72,13 @@ export interface DesignerProps {
onDragstart?: (e: IPublicModelLocateEvent) => void;
onDrag?: (e: IPublicModelLocateEvent) => void;
onDragend?: (
- e: { dragObject: IPublicModelDragObject; copy: boolean },
+ e: { dragObject: IPublicModelDragObject; copy?: boolean },
loc?: DropLocation,
) => void;
}
export interface IDesigner {
- readonly shellModelFactory: IShellModelFactory;
+ readonly shellModelFactory?: IShellModelFactory;
viewName: string | undefined;
@@ -89,7 +90,7 @@ export interface IDesigner {
get componentActions(): ComponentActions;
- get contextMenuActions(): ContextMenuActions;
+ get contextMenuActions(): IContextMenuActions;
get editor(): IPublicModelEditor;
@@ -97,7 +98,7 @@ export interface IDesigner {
get simulatorComponent(): ComponentType | undefined;
- get currentSelection(): ISelection;
+ get currentSelection(): ISelection | undefined;
createScroller(scrollable: IPublicTypeScrollable): IPublicModelScroller;
@@ -162,7 +163,7 @@ export class Designer implements IDesigner {
readonly bemToolsManager = new BemToolsManager(this);
- readonly shellModelFactory: IShellModelFactory;
+ readonly shellModelFactory?: IShellModelFactory;
private _dropLocation?: DropLocation;
@@ -448,9 +449,10 @@ export class Designer implements IDesigner {
this._simulatorComponent = props.simulatorComponent;
}
if (props.simulatorProps !== this.props.simulatorProps) {
+ const oldDesignMode = this.simulatorProps?.designMode;
this._simulatorProps = props.simulatorProps;
// 重新 setupSelection
- if (props.simulatorProps?.designMode !== this.props.simulatorProps?.designMode) {
+ if (this.simulatorProps?.designMode !== oldDesignMode) {
this.setupSelection();
}
}
diff --git a/packages/designer/src/designer/drag-ghost/index.tsx b/packages/designer/src/designer/drag-ghost/index.tsx
index 8fd4d6e9fe..d1d12d52c6 100644
--- a/packages/designer/src/designer/drag-ghost/index.tsx
+++ b/packages/designer/src/designer/drag-ghost/index.tsx
@@ -1,7 +1,6 @@
import { Component, ReactElement } from 'react';
import { observer, obx, Title, makeObservable } from '@felce/lowcode-editor-core';
import { Designer } from '../designer';
-import { isDragNodeObject } from '../dragon';
import { isSimulatorHost } from '../../simulator';
import './ghost.less';
import {
@@ -9,6 +8,7 @@ import {
IPublicTypeNodeSchema,
IPublicModelDragObject,
} from '@felce/lowcode-types';
+import { isDragNodeObject } from '@felce/lowcode-utils';
type offBinding = () => any;
@@ -16,7 +16,7 @@ type offBinding = () => any;
export default class DragGhost extends Component<{ designer: Designer }> {
private dispose: offBinding[] = [];
- @obx.ref private titles: (string | IPublicTypeI18nData | ReactElement)[] | null = null;
+ @obx.ref private titles: (string | IPublicTypeI18nData | ReactElement | null)[] | null = null;
@obx.ref private x = 0;
@@ -58,17 +58,19 @@ export default class DragGhost extends Component<{ designer: Designer }> {
];
}
- getTitles(dragObject: IPublicModelDragObject) {
+ getTitles(dragObject: IPublicModelDragObject | null) {
+ if (!dragObject) return null;
+
if (isDragNodeObject(dragObject)) {
- return dragObject.nodes.map((node) => node.title);
+ return dragObject.nodes.map((node) => node?.title || null);
}
const dataList = Array.isArray(dragObject.data) ? dragObject.data : [dragObject.data];
- return dataList.map(
- (item: IPublicTypeNodeSchema, i) =>
- this.props.designer.getComponentMeta(item.componentName).title,
- );
+ return dataList.map((item: IPublicTypeNodeSchema | null) => {
+ if (!item) return null;
+ return this.props.designer.getComponentMeta(item.componentName).title;
+ });
}
componentWillUnmount() {
diff --git a/packages/designer/src/designer/dragon.ts b/packages/designer/src/designer/dragon.ts
index a34273a904..27c3d93be3 100644
--- a/packages/designer/src/designer/dragon.ts
+++ b/packages/designer/src/designer/dragon.ts
@@ -1,20 +1,16 @@
-import { obx, makeObservable, IEventBus, createModuleEventBus } from '@felce/lowcode-editor-core';
+import { IEventBus, createModuleEventBus, makeObservable, obx } from '@felce/lowcode-editor-core';
import {
- IPublicTypeDragNodeObject,
- IPublicTypeDragAnyObject,
- IPublicEnumDragObjectType,
- IPublicTypeDragNodeDataObject,
IPublicModelDragObject,
- IPublicModelNode,
IPublicModelDragon,
IPublicModelLocateEvent,
+ IPublicModelNode,
IPublicModelSensor,
} from '@felce/lowcode-types';
-import { setNativeSelection, cursor } from '@felce/lowcode-utils';
+import { cursor, isDragNodeObject, setNativeSelection } from '@felce/lowcode-utils';
import { INode, Node } from '../document';
import { ISimulatorHost, isSimulatorHost } from '../simulator';
-import { IDesigner } from './designer';
import { makeEventsHandler } from '../utils/misc';
+import { IDesigner } from './designer';
export interface ILocateEvent extends IPublicModelLocateEvent {
readonly type: 'LocateEvent';
@@ -25,31 +21,6 @@ export interface ILocateEvent extends IPublicModelLocateEvent {
sensor?: IPublicModelSensor;
}
-/**
- * @deprecated use same function in @felce/lowcode-utils
- */
-export function isDragNodeObject(obj: any): obj is IPublicTypeDragNodeObject {
- return obj && obj.type === IPublicEnumDragObjectType.Node;
-}
-
-/**
- * @deprecated use same function in @felce/lowcode-utils
- */
-export function isDragNodeDataObject(obj: any): obj is IPublicTypeDragNodeDataObject {
- return obj && obj.type === IPublicEnumDragObjectType.NodeData;
-}
-
-/**
- * @deprecated use same function in @felce/lowcode-utils
- */
-export function isDragAnyObject(obj: any): obj is IPublicTypeDragAnyObject {
- return (
- obj &&
- obj.type !== IPublicEnumDragObjectType.NodeData &&
- obj.type !== IPublicEnumDragObjectType.Node
- );
-}
-
export function isLocateEvent(e: any): e is ILocateEvent {
return e && e.type === 'LocateEvent';
}
@@ -88,7 +59,7 @@ export function setShaken(e: any) {
e.shaken = true;
}
-function getSourceSensor(dragObject: IPublicModelDragObject): ISimulatorHost | null {
+function getSourceSensor(dragObject: IPublicModelDragObject): ISimulatorHost | null {
if (!isDragNodeObject(dragObject)) {
return null;
}
@@ -144,7 +115,7 @@ export class Dragon implements IDragon {
* @param shell container element
* @param boost boost got a drag object
*/
- from(shell: Element, boost: (e: MouseEvent) => IPublicModelDragObject | null) {
+ from(shell: Element, boost: (e: MouseEvent) => IPublicModelDragObject | null) {
const mousedown = (e: MouseEvent) => {
// ESC or RightClick
if (e.which === 3 || e.button === 2) {
@@ -172,7 +143,7 @@ export class Dragon implements IDragon {
* @param boostEvent 拖拽初始时事件
*/
boost(
- dragObject: IPublicModelDragObject,
+ dragObject: IPublicModelDragObject,
boostEvent: MouseEvent | DragEvent,
fromRglNode?: INode | IPublicModelNode,
) {
@@ -257,7 +228,7 @@ export class Dragon implements IDragon {
/* istanbul ignore next */
if (isRGL) {
// 禁止被拖拽元素的阻断
- const nodeInst = dragObject.nodes[0].getDOMNode();
+ const nodeInst = dragObject.nodes?.[0]?.getDOMNode();
if (nodeInst && nodeInst.style) {
this.nodeInstPointerEvents = true;
nodeInst.style.pointerEvents = 'none';
@@ -275,7 +246,7 @@ export class Dragon implements IDragon {
this.emitter.emit('rgl.add.placeholder', {
rglNode,
fromRglNode,
- node: locateEvent.dragObject?.nodes[0],
+ node: locateEvent.dragObject?.nodes?.[0],
event: e,
});
designer.clearLocation();
@@ -349,7 +320,7 @@ export class Dragon implements IDragon {
const over = (e?: any) => {
// 禁止被拖拽元素的阻断
if (this.nodeInstPointerEvents) {
- const nodeInst = dragObject.nodes[0].getDOMNode();
+ const nodeInst = dragObject.nodes?.[0]?.getDOMNode();
if (nodeInst && nodeInst.style) {
nodeInst.style.pointerEvents = '';
}
@@ -361,7 +332,7 @@ export class Dragon implements IDragon {
const { isRGL, rglNode } = getRGL(e);
/* istanbul ignore next */
if (isRGL && this._canDrop && this._dragging) {
- const tarNode = dragObject.nodes[0];
+ const tarNode = dragObject.nodes?.[0];
if (rglNode.id !== tarNode.id) {
// 避免死循环
this.emitter.emit('rgl.drop', {
@@ -489,6 +460,7 @@ export class Dragon implements IDragon {
} else if (e.sensor) {
sensor = e.sensor;
} else if (sourceSensor) {
+ // FIXME: 这里为什么会把simulator拿过来?
sensor = sourceSensor;
}
}
@@ -640,7 +612,7 @@ export class Dragon implements IDragon {
};
}
- onDragend(func: (x: { dragObject: IPublicModelDragObject; copy: boolean }) => any) {
+ onDragend(func: (x: { dragObject: IPublicModelDragObject; copy: boolean }) => any) {
this.emitter.on('dragend', func);
return () => {
this.emitter.removeListener('dragend', func);
diff --git a/packages/designer/src/document/document-view.tsx b/packages/designer/src/document/document-view.tsx
index 1c42ce6a63..9a14d1b66a 100644
--- a/packages/designer/src/document/document-view.tsx
+++ b/packages/designer/src/document/document-view.tsx
@@ -1,9 +1,12 @@
-import { Component } from 'react';
-import classNames from 'classnames';
import { observer } from '@felce/lowcode-editor-core';
-import { DocumentModel, IDocumentModel } from './document-model';
+import classNames from 'classnames';
+import { Component } from 'react';
import { BuiltinSimulatorHostView } from '../builtin-simulator';
+import { IDocumentModel } from './document-model';
+/**
+ * @deprecated 暂时没用到
+ */
@observer
export class DocumentView extends Component<{ document: IDocumentModel }> {
render() {
diff --git a/packages/designer/tests/designer/dragon.test.ts b/packages/designer/tests/designer/dragon.test.ts
index a7bd35655b..b2e88fa023 100644
--- a/packages/designer/tests/designer/dragon.test.ts
+++ b/packages/designer/tests/designer/dragon.test.ts
@@ -5,9 +5,6 @@ import { DocumentModel } from '../../src/document/document-model';
import { Designer } from '../../src/designer/designer';
import {
Dragon,
- isDragNodeObject,
- isDragNodeDataObject,
- isDragAnyObject,
isLocateEvent,
isShaken,
setShaken,
@@ -18,6 +15,7 @@ import { IPublicEnumDragObjectType } from '@felce/lowcode-types';
import formSchema from '../fixtures/schema/form';
import { fireEvent } from '@testing-library/react';
import { shellModelFactory } from '../../../engine/src/modules/shell-model-factory';
+import { isDragAnyObject, isDragNodeDataObject, isDragNodeObject } from '@felce/lowcode-utils';
describe('Dragon 测试', () => {
let editor: Editor;
diff --git a/packages/editor-core/package.json b/packages/editor-core/package.json
index 4775509fb9..242d2def51 100644
--- a/packages/editor-core/package.json
+++ b/packages/editor-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-editor-core",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "Core Api for Ali lowCode engine",
"license": "MIT",
"main": "lib/index.js",
@@ -16,8 +16,8 @@
},
"dependencies": {
"@alifd/next": "^1.26.0",
- "@felce/lowcode-types": "1.4.0",
- "@felce/lowcode-utils": "1.4.0",
+ "@felce/lowcode-types": "1.4.1",
+ "@felce/lowcode-utils": "1.4.1",
"classnames": "^2.2.6",
"debug": "^4.1.1",
"intl-messageformat": "^9.3.1",
diff --git a/packages/editor-core/src/config.ts b/packages/editor-core/src/config.ts
index dc6dbdbeb0..1c747fd299 100644
--- a/packages/editor-core/src/config.ts
+++ b/packages/editor-core/src/config.ts
@@ -270,7 +270,7 @@ export class EngineConfig implements IEngineConfig {
*
* @param {IPublicTypeEngineOptions} engineOptions
*/
- setEngineOptions(engineOptions: IPublicTypeEngineOptions) {
+ setEngineOptions(engineOptions?: IPublicTypeEngineOptions) {
if (!engineOptions || !isPlainObject(engineOptions)) {
return;
}
diff --git a/packages/editor-skeleton/package.json b/packages/editor-skeleton/package.json
index 7840e73ba7..9dde413572 100644
--- a/packages/editor-skeleton/package.json
+++ b/packages/editor-skeleton/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-editor-skeleton",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "alibaba lowcode editor skeleton",
"main": "lib/index.js",
"module": "es/index.js",
@@ -19,10 +19,10 @@
],
"dependencies": {
"@alifd/next": "^1.26.0",
- "@felce/lowcode-designer": "1.4.0",
- "@felce/lowcode-editor-core": "1.4.0",
- "@felce/lowcode-types": "1.4.0",
- "@felce/lowcode-utils": "1.4.0",
+ "@felce/lowcode-designer": "1.4.1",
+ "@felce/lowcode-editor-core": "1.4.1",
+ "@felce/lowcode-types": "1.4.1",
+ "@felce/lowcode-utils": "1.4.1",
"classnames": "^2.2.6",
"react": "^16.8.1",
"react-dom": "^16.8.1"
diff --git a/packages/editor-skeleton/src/area.ts b/packages/editor-skeleton/src/area.ts
index c0ad92c894..6c3b45c72c 100644
--- a/packages/editor-skeleton/src/area.ts
+++ b/packages/editor-skeleton/src/area.ts
@@ -1,23 +1,22 @@
/* eslint-disable max-len */
import { obx, computed, makeObservable } from '@felce/lowcode-editor-core';
import { Logger } from '@felce/lowcode-utils';
-import { IPublicTypeWidgetBaseConfig } from '@felce/lowcode-types';
+import {
+ IPublicTypeWidgetBaseConfig,
+ IPublicModelArea,
+ IPublicModelWidget,
+} from '@felce/lowcode-types';
import { WidgetContainer } from './widget/widget-container';
import { ISkeleton } from './skeleton';
-import { IWidget } from './widget/widget';
const logger = new Logger({ level: 'warn', bizName: 'skeleton:area' });
-export interface IArea {
- isEmpty(): boolean;
- add(config: T | C): T;
- remove(config: T | string): number;
- setVisible(flag: boolean): void;
- hide(): void;
- show(): void;
-}
-export class Area
- implements IArea
+export interface IArea extends IPublicModelArea {}
+
+export class Area<
+ C extends IPublicTypeWidgetBaseConfig = any,
+ T extends IPublicModelWidget = IPublicModelWidget,
+> implements IArea
{
@obx private _visible = true;
diff --git a/packages/editor-skeleton/src/skeleton.ts b/packages/editor-skeleton/src/skeleton.ts
index 8b7d46f4cc..45639ee202 100644
--- a/packages/editor-skeleton/src/skeleton.ts
+++ b/packages/editor-skeleton/src/skeleton.ts
@@ -68,6 +68,9 @@ export interface ISkeleton
| 'remove'
| 'hideArea'
| 'add'
+ | 'getAreaItems'
+ | 'onDisableWidget'
+ | 'onEnableWidget'
> {
editor: IEditor;
@@ -456,14 +459,14 @@ export class Skeleton implements ISkeleton {
const { content, ...restConfig } = config;
if (content) {
if (isPlainObject(content) && !isValidElement(content)) {
- Object.keys(content).forEach((key) => {
+ Object.keys(content).forEach((key: any) => {
if (/props$/i.test(key) && restConfig[key]) {
restConfig[key] = {
...restConfig[key],
- ...content[key],
+ ...(content as unknown as IPublicTypePanelConfig)[key],
};
} else {
- restConfig[key] = content[key];
+ restConfig[key] = (content as unknown as IPublicTypePanelConfig)[key];
}
});
} else {
diff --git a/packages/editor-skeleton/src/widget/widget.ts b/packages/editor-skeleton/src/widget/widget.ts
index 04c074e5b5..a05860cff8 100644
--- a/packages/editor-skeleton/src/widget/widget.ts
+++ b/packages/editor-skeleton/src/widget/widget.ts
@@ -5,27 +5,9 @@ import { getEvent } from '@felce/lowcode-shell';
import { WidgetConfig } from '../types';
import { ISkeleton } from '../skeleton';
import { WidgetView } from '../components/widget-views';
-import { IPublicTypeTitleContent, IPublicTypeWidgetBaseConfig } from '@felce/lowcode-types';
+import { IPublicModelWidget, IPublicTypeTitleContent } from '@felce/lowcode-types';
-export interface IWidget {
- readonly name: string;
- readonly content: ReactNode;
- readonly align?: string;
- readonly isWidget: true;
- readonly visible: boolean;
- readonly disabled?: boolean;
- readonly body: ReactNode;
- readonly skeleton: ISkeleton;
- readonly config: IPublicTypeWidgetBaseConfig;
-
- getName(): string;
- getContent(): any;
- show(): void;
- hide(): void;
- toggle(): void;
- enable?(): void;
- disable?(): void;
-}
+export interface IWidget extends IPublicModelWidget {}
export class Widget implements IWidget {
readonly isWidget = true;
@@ -138,6 +120,6 @@ export class Widget implements IWidget {
}
}
-export function isWidget(obj: any): obj is IWidget {
+export function isWidget(obj: any): obj is IPublicModelWidget {
return obj && obj.isWidget;
}
diff --git a/packages/engine/README-en_US.md b/packages/engine/README-en_US.md
index 6f889e5e5b..c08b1e64f7 100644
--- a/packages/engine/README-en_US.md
+++ b/packages/engine/README-en_US.md
@@ -101,7 +101,7 @@ init(document.getElementById('lce'));
{
"externals": {
"@felce/lowcode-engine": "var window.AliLowCodeEngine",
- "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt"
+ "@felce/lowcode-engine-ext": "var window.AliLowCodeEngineExt"
}
}
```
@@ -111,22 +111,22 @@ init(document.getElementById('lce'));
#### unpkg
```html
-https://unpkg.com/@felce/lowcode-engine@1.4.0-beta.0/dist/js/engine-core.js
-https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.0-beta.0/dist/js/react-simulator-renderer.js
+https://unpkg.com/@felce/lowcode-engine@1.4.0/dist/js/engine-core.js
+https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.0/dist/js/react-simulator-renderer.js
```
#### npmmirror
```html
-https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0-beta.0/files/dist/js/engine-core.js
-https://registry.npmmirror.com/@felce/lowcode-react-simulator-renderer/1.4.0-beta.0/files/dist/js/react-simulator-renderer.js
+https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0/files/dist/js/engine-core.js
+https://registry.npmmirror.com/@felce/lowcode-react-simulator-renderer/1.4.0/files/dist/js/react-simulator-renderer.js
```
#### jsdelivr
```html
-https://cdn.jsdelivr.net/npm/@felce/lowcode-engine@1.4.0-beta.0/dist/js/engine-core.js
-https://cdn.jsdelivr.net/npm/@felce/lowcode-react-simulator-renderer@1.4.0-beta.0/dist/js/react-simulator-renderer.js
+https://cdn.jsdelivr.net/npm/@felce/lowcode-engine@1.4.0/dist/js/engine-core.js
+https://cdn.jsdelivr.net/npm/@felce/lowcode-react-simulator-renderer@1.4.0/dist/js/react-simulator-renderer.js
```
#### Method 5: Use your own cdn
diff --git a/packages/engine/README.md b/packages/engine/README.md
index e4a896ff98..ee9b288a1e 100644
--- a/packages/engine/README.md
+++ b/packages/engine/README.md
@@ -112,7 +112,7 @@ init(document.getElementById('lce'));
{
"externals": {
"@felce/lowcode-engine": "var window.AliLowCodeEngine",
- "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt"
+ "@felce/lowcode-engine-ext": "var window.AliLowCodeEngineExt"
}
}
```
@@ -122,22 +122,22 @@ init(document.getElementById('lce'));
#### unpkg
```html
-https://unpkg.com/@felce/lowcode-engine@1.4.0-beta.0/dist/js/engine-core.js
-https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.0-beta.0/dist/js/react-simulator-renderer.js
+https://unpkg.com/@felce/lowcode-engine@1.4.0/dist/js/engine-core.js
+https://unpkg.com/@felce/lowcode-react-simulator-renderer@1.4.0/dist/js/react-simulator-renderer.js
```
#### npmmirror
```html
-https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0-beta.0/files/dist/js/engine-core.js
-https://registry.npmmirror.com/@felce/lowcode-react-simulator-renderer/1.4.0-beta.0/files/dist/js/react-simulator-renderer.js
+https://registry.npmmirror.com/@felce/lowcode-engine/1.4.0/files/dist/js/engine-core.js
+https://registry.npmmirror.com/@felce/lowcode-react-simulator-renderer/1.4.0/files/dist/js/react-simulator-renderer.js
```
#### jsdelivr
```html
-https://cdn.jsdelivr.net/npm/@felce/lowcode-engine@1.4.0-beta.0/dist/js/engine-core.js
-https://cdn.jsdelivr.net/npm/@felce/lowcode-react-simulator-renderer@1.4.0-beta.0/dist/js/react-simulator-renderer.js
+https://cdn.jsdelivr.net/npm/@felce/lowcode-engine@1.4.0/dist/js/engine-core.js
+https://cdn.jsdelivr.net/npm/@felce/lowcode-react-simulator-renderer@1.4.0/dist/js/react-simulator-renderer.js
```
#### 使用自有 cdn
diff --git a/packages/engine/build.umd.json b/packages/engine/build.umd.json
index 92d5a1bfd3..32d150b215 100644
--- a/packages/engine/build.umd.json
+++ b/packages/engine/build.umd.json
@@ -15,7 +15,7 @@
"monaco-editor/esm/vs/editor/editor.api": "var window.monaco",
"monaco-editor/esm/vs/editor/editor.main.js": "var window.monaco",
"@alifd/next": "var Next",
- "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt",
+ "@felce/lowcode-engine-ext": "var window.AliLowCodeEngineExt",
"moment": "var moment",
"lodash": "var _"
},
diff --git a/packages/engine/package.json b/packages/engine/package.json
index b6e167d96e..8aaee62691 100644
--- a/packages/engine/package.json
+++ b/packages/engine/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-engine",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "An enterprise-class low-code technology stack with scale-out design / 一套面向扩展设计的企业级低代码技术体系",
"main": "lib/engine-core.js",
"module": "es/engine-core.js",
@@ -19,16 +19,16 @@
"license": "MIT",
"dependencies": {
"@alifd/next": "^1.26.0",
- "@alilc/lowcode-engine-ext": "^1.0.0",
- "@felce/lowcode-designer": "1.4.0",
- "@felce/lowcode-editor-core": "1.4.0",
- "@felce/lowcode-editor-skeleton": "1.4.0",
- "@felce/lowcode-plugin-command": "1.4.0",
- "@felce/lowcode-plugin-designer": "1.4.0",
- "@felce/lowcode-plugin-outline-pane": "1.4.0",
- "@felce/lowcode-shell": "1.4.0",
- "@felce/lowcode-utils": "1.4.0",
- "@felce/lowcode-workspace": "1.4.0",
+ "@felce/lowcode-designer": "1.4.1",
+ "@felce/lowcode-editor-core": "1.4.1",
+ "@felce/lowcode-editor-skeleton": "1.4.1",
+ "@felce/lowcode-engine-ext": "^1.1.0",
+ "@felce/lowcode-plugin-command": "1.4.1",
+ "@felce/lowcode-plugin-designer": "1.4.1",
+ "@felce/lowcode-plugin-outline-pane": "1.4.1",
+ "@felce/lowcode-shell": "1.4.1",
+ "@felce/lowcode-utils": "1.4.1",
+ "@felce/lowcode-workspace": "1.4.1",
"react": "^16.8.1",
"react-dom": "^16.8.1"
},
diff --git a/packages/engine/src/engine-core.ts b/packages/engine/src/engine-core.ts
index 3b4f3edaab..28182c96ac 100644
--- a/packages/engine/src/engine-core.ts
+++ b/packages/engine/src/engine-core.ts
@@ -30,7 +30,11 @@ import {
PluginPreference,
IDesigner,
} from '@felce/lowcode-designer';
-import { Skeleton as InnerSkeleton, registerDefaults } from '@felce/lowcode-editor-skeleton';
+import {
+ Skeleton as InnerSkeleton,
+ registerDefaults,
+ ISkeleton,
+} from '@felce/lowcode-editor-skeleton';
import {
Workspace as InnerWorkspace,
Workbench as WorkSpaceWorkbench,
@@ -108,10 +112,10 @@ globalContext.register(innerWorkspace, 'workspace');
const engineContext: Partial = {};
-const innerSkeleton = new InnerSkeleton(editor);
+const innerSkeleton: ISkeleton = new InnerSkeleton(editor);
editor.set('skeleton' as any, innerSkeleton);
-const designer = new Designer({ editor, shellModelFactory });
+const designer: IDesigner = new Designer({ editor, shellModelFactory });
editor.set('designer' as any, designer);
const { project: innerProject } = designer;
@@ -228,27 +232,28 @@ export async function init(
await destroy();
let engineOptions = null;
if (isPlainObject(container)) {
- engineOptions = container;
+ engineOptions = container as IPublicTypeEngineOptions;
engineContainer = document.createElement('div');
engineContainer.id = 'engine';
document.body.appendChild(engineContainer);
} else {
engineOptions = options;
- engineContainer = container;
if (!container) {
engineContainer = document.createElement('div');
engineContainer.id = 'engine';
document.body.appendChild(engineContainer);
+ } else {
+ engineContainer = container;
}
}
- engineConfig.setEngineOptions(engineOptions as any);
+ engineConfig.setEngineOptions(engineOptions);
const { Workbench } = common.skeletonCabin;
if (options && options.enableWorkspaceMode) {
const disposeFun = await pluginPromise;
disposeFun && disposeFun();
render(
- createElement(WorkSpaceWorkbench, {
+ createElement(options?.WorkSpaceWorkbench || (WorkSpaceWorkbench as any), {
workspace: innerWorkspace,
// skeleton: workspace.skeleton,
className: 'engine-main',
@@ -264,10 +269,10 @@ export async function init(
return;
}
- await plugins.init(pluginPreference as any);
+ await plugins.init(pluginPreference);
render(
- createElement(Workbench, {
+ createElement(options?.Workbench || (Workbench as any), {
skeleton: innerSkeleton,
className: 'engine-main',
topAreaItemClassName: 'engine-actionitem',
diff --git a/packages/engine/src/inner-plugins/setter-registry.ts b/packages/engine/src/inner-plugins/setter-registry.ts
index cdb6092d14..e2c857642d 100644
--- a/packages/engine/src/inner-plugins/setter-registry.ts
+++ b/packages/engine/src/inner-plugins/setter-registry.ts
@@ -6,7 +6,7 @@ export const setterRegistry = (ctx: IPublicModelPluginContext) => {
init() {
const { config } = ctx;
if (config.get('disableDefaultSetters')) return;
- const builtinSetters = require('@alilc/lowcode-engine-ext')?.setters;
+ const builtinSetters = require('@felce/lowcode-engine-ext')?.setters;
if (builtinSetters) {
ctx.setters.registerSetter(builtinSetters);
}
diff --git a/packages/ignitor/build.json b/packages/ignitor/build.json
index 5b7ec07d65..6055d193ba 100644
--- a/packages/ignitor/build.json
+++ b/packages/ignitor/build.json
@@ -17,7 +17,7 @@
"@alifd/next": "var window.Next",
"rax": "var window.Rax",
"@felce/lowcode-engine": "var window.AliLowCodeEngine",
- "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt",
+ "@felce/lowcode-engine-ext": "var window.AliLowCodeEngineExt",
"moment": "var moment",
"lodash": "var _"
},
diff --git a/packages/ignitor/package.json b/packages/ignitor/package.json
index e71de7e671..186ad28be6 100644
--- a/packages/ignitor/package.json
+++ b/packages/ignitor/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-ignitor",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "点火器,bootstrap lce project",
"main": "lib/index.js",
"private": true,
diff --git a/packages/plugin-command/package.json b/packages/plugin-command/package.json
index 51bd003ae7..bfcea56483 100644
--- a/packages/plugin-command/package.json
+++ b/packages/plugin-command/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-plugin-command",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "> TODO: description",
"author": "liujuping ",
"homepage": "https://github.com/fe-lce/lowcode-engine#readme",
@@ -30,8 +30,8 @@
"url": "https://github.com/fe-lce/lowcode-engine/issues"
},
"dependencies": {
- "@felce/lowcode-types": "1.4.0",
- "@felce/lowcode-utils": "1.4.0"
+ "@felce/lowcode-types": "1.4.1",
+ "@felce/lowcode-utils": "1.4.1"
},
"devDependencies": {
"@alib/build-scripts": "^0.1.18"
diff --git a/packages/plugin-designer/package.json b/packages/plugin-designer/package.json
index 61b3298efd..348a6a1947 100644
--- a/packages/plugin-designer/package.json
+++ b/packages/plugin-designer/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-plugin-designer",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "alibaba lowcode editor designer plugin",
"files": [
"es",
@@ -18,9 +18,9 @@
],
"author": "xiayang.xy",
"dependencies": {
- "@felce/lowcode-designer": "1.4.0",
- "@felce/lowcode-editor-core": "1.4.0",
- "@felce/lowcode-utils": "1.4.0",
+ "@felce/lowcode-designer": "1.4.1",
+ "@felce/lowcode-editor-core": "1.4.1",
+ "@felce/lowcode-utils": "1.4.1",
"react": "^16.8.1",
"react-dom": "^16.8.1"
},
diff --git a/packages/plugin-designer/src/index.tsx b/packages/plugin-designer/src/index.tsx
index 0183cf675b..53898ec324 100644
--- a/packages/plugin-designer/src/index.tsx
+++ b/packages/plugin-designer/src/index.tsx
@@ -3,14 +3,17 @@ import { Editor, engineConfig } from '@felce/lowcode-editor-core';
import { DesignerView, Designer } from '@felce/lowcode-designer';
import { Asset, getLogger } from '@felce/lowcode-utils';
import './index.scss';
+import { IPublicModelEngineConfig } from '@felce/lowcode-types';
const logger = getLogger({ level: 'warn', bizName: 'plugin:plugin-designer' });
export interface PluginProps {
engineEditor: Editor;
+ engineConfig: IPublicModelEngineConfig;
}
interface DesignerPluginState {
+ utilsMetadata?: any[] | null;
componentMetadatas?: any[] | null;
library?: any[] | null;
extraEnvironment?: any[] | null;
diff --git a/packages/plugin-outline-pane/package.json b/packages/plugin-outline-pane/package.json
index 3b57e6df1c..5998e947fe 100644
--- a/packages/plugin-outline-pane/package.json
+++ b/packages/plugin-outline-pane/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-plugin-outline-pane",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "Outline pane for Ali lowCode engine",
"files": [
"es",
@@ -13,8 +13,8 @@
},
"dependencies": {
"@alifd/next": "^1.26.0",
- "@felce/lowcode-types": "1.4.0",
- "@felce/lowcode-utils": "1.4.0",
+ "@felce/lowcode-types": "1.4.1",
+ "@felce/lowcode-utils": "1.4.1",
"classnames": "^2.2.6",
"react": "^16",
"react-dom": "^16.7.0",
diff --git a/packages/react-renderer/package.json b/packages/react-renderer/package.json
index ac178de6a6..3357a54421 100644
--- a/packages/react-renderer/package.json
+++ b/packages/react-renderer/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-react-renderer",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "react renderer for ali lowcode engine",
"main": "lib/index.js",
"module": "es/index.js",
@@ -22,7 +22,7 @@
],
"dependencies": {
"@alifd/next": "^1.26.0",
- "@felce/lowcode-renderer-core": "1.4.0"
+ "@felce/lowcode-renderer-core": "1.4.1"
},
"devDependencies": {
"@alib/build-scripts": "^0.1.18",
diff --git a/packages/react-simulator-renderer/build.umd.json b/packages/react-simulator-renderer/build.umd.json
index 1052bb0765..ff20a23782 100644
--- a/packages/react-simulator-renderer/build.umd.json
+++ b/packages/react-simulator-renderer/build.umd.json
@@ -10,7 +10,7 @@
"react-dom": "var window.ReactDOM",
"prop-types": "var window.PropTypes",
"@alifd/next": "var Next",
- "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt",
+ "@felce/lowcode-engine-ext": "var window.AliLowCodeEngineExt",
"moment": "var moment",
"lodash": "var _"
},
diff --git a/packages/react-simulator-renderer/package.json b/packages/react-simulator-renderer/package.json
index a6bd187309..daae6b8459 100644
--- a/packages/react-simulator-renderer/package.json
+++ b/packages/react-simulator-renderer/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-react-simulator-renderer",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "react simulator renderer for alibaba lowcode designer",
"main": "lib/index.js",
"module": "es/index.js",
@@ -17,10 +17,10 @@
"test:cov": "build-scripts test --config build.test.json --jest-coverage"
},
"dependencies": {
- "@felce/lowcode-designer": "1.4.0",
- "@felce/lowcode-react-renderer": "1.4.0",
- "@felce/lowcode-types": "1.4.0",
- "@felce/lowcode-utils": "1.4.0",
+ "@felce/lowcode-designer": "1.4.1",
+ "@felce/lowcode-react-renderer": "1.4.1",
+ "@felce/lowcode-types": "1.4.1",
+ "@felce/lowcode-utils": "1.4.1",
"classnames": "^2.2.6",
"mobx": "^6.3.0",
"mobx-react": "^7.2.0",
diff --git a/packages/renderer-core/package.json b/packages/renderer-core/package.json
index 9e0b33f1a3..45bac74aa3 100644
--- a/packages/renderer-core/package.json
+++ b/packages/renderer-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-renderer-core",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "renderer core",
"license": "MIT",
"main": "lib/index.js",
@@ -16,8 +16,8 @@
},
"dependencies": {
"@alilc/lowcode-datasource-engine": "^1.0.0",
- "@felce/lowcode-types": "1.4.0",
- "@felce/lowcode-utils": "1.4.0",
+ "@felce/lowcode-types": "1.4.1",
+ "@felce/lowcode-utils": "1.4.1",
"classnames": "^2.2.6",
"debug": "^4.1.1",
"fetch-jsonp": "^1.1.3",
@@ -33,7 +33,7 @@
"@alib/build-scripts": "^0.1.18",
"@alifd/next": "^1.26.0",
"@babel/plugin-transform-typescript": "^7.16.8",
- "@felce/lowcode-designer": "1.4.0",
+ "@felce/lowcode-designer": "1.4.1",
"@testing-library/react": "^11.2.2",
"@types/classnames": "^2.2.11",
"@types/debug": "^4.1.5",
diff --git a/packages/shell/package.json b/packages/shell/package.json
index 693cfaa2ec..86f42902f1 100644
--- a/packages/shell/package.json
+++ b/packages/shell/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-shell",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "Shell Layer for AliLowCodeEngine",
"main": "lib/index.js",
"module": "es/index.js",
@@ -14,12 +14,12 @@
"license": "MIT",
"dependencies": {
"@alifd/next": "^1.26.0",
- "@felce/lowcode-designer": "1.4.0",
- "@felce/lowcode-editor-core": "1.4.0",
- "@felce/lowcode-editor-skeleton": "1.4.0",
- "@felce/lowcode-types": "1.4.0",
- "@felce/lowcode-utils": "1.4.0",
- "@felce/lowcode-workspace": "1.4.0",
+ "@felce/lowcode-designer": "1.4.1",
+ "@felce/lowcode-editor-core": "1.4.1",
+ "@felce/lowcode-editor-skeleton": "1.4.1",
+ "@felce/lowcode-types": "1.4.1",
+ "@felce/lowcode-utils": "1.4.1",
+ "@felce/lowcode-workspace": "1.4.1",
"classnames": "^2.2.6",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.5",
diff --git a/packages/shell/src/api/common.tsx b/packages/shell/src/api/common.tsx
index eee286fe5c..8647363b6c 100644
--- a/packages/shell/src/api/common.tsx
+++ b/packages/shell/src/api/common.tsx
@@ -59,6 +59,7 @@ import {
Workbench as InnerWorkbench,
SettingsPrimaryPane as InnerSettingsPrimaryPane,
registerDefaults as InnerRegisterDefaults,
+ ISkeleton,
} from '@felce/lowcode-editor-skeleton';
import {
Editor,
@@ -180,11 +181,11 @@ class DesignerCabin implements IPublicApiCommonDesignerCabin {
}
class SkeletonCabin implements IPublicApiCommonSkeletonCabin {
- private readonly [skeletonSymbol]: InnerSkeleton;
+ private readonly [skeletonSymbol]: ISkeleton;
readonly [skeletonCabinSymbol]: any;
- constructor(skeleton: InnerSkeleton) {
+ constructor(skeleton: ISkeleton) {
this[skeletonSymbol] = skeleton;
this[skeletonCabinSymbol] = {
Workbench: InnerWorkbench,
@@ -426,11 +427,11 @@ class EditorCabin implements IPublicApiCommonEditorCabin {
export class Common implements IPublicApiCommon {
private readonly __designerCabin: any;
- private readonly __skeletonCabin: any;
+ private readonly __skeletonCabin: IPublicApiCommonSkeletonCabin;
private readonly __editorCabin: any;
private readonly __utils: Utils;
- constructor(editor: Editor, skeleton: InnerSkeleton) {
+ constructor(editor: Editor, skeleton: ISkeleton) {
this.__designerCabin = new DesignerCabin(editor);
this.__skeletonCabin = new SkeletonCabin(skeleton);
this.__editorCabin = new EditorCabin(editor);
@@ -459,7 +460,7 @@ export class Common implements IPublicApiCommon {
return this.__designerCabin;
}
- get skeletonCabin(): any {
+ get skeletonCabin(): IPublicApiCommonSkeletonCabin {
return this.__skeletonCabin;
}
diff --git a/packages/types/package.json b/packages/types/package.json
index 1a6f8f7430..10362eb7e2 100644
--- a/packages/types/package.json
+++ b/packages/types/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-types",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "Types for Ali lowCode engine",
"files": [
"es",
diff --git a/packages/types/src/shell/api/common.ts b/packages/types/src/shell/api/common.ts
index 05ef0da17f..26613b2e67 100644
--- a/packages/types/src/shell/api/common.ts
+++ b/packages/types/src/shell/api/common.ts
@@ -1,10 +1,12 @@
-
import { Component, ReactNode } from 'react';
-import { IPublicTypeI18nData, IPublicTypeNodeSchema, IPublicTypeTitleContent } from '../type';
+import {
+ IPublicTypeI18nData,
+ IPublicTypeNodeSchema,
+ IPublicTypeTitleContent,
+} from '../type';
import { IPublicEnumTransitionType } from '../enum';
export interface IPublicApiCommonUtils {
-
/**
* 是否为合法的 schema 结构
* check if data is valid NodeSchema
@@ -30,9 +32,9 @@ export interface IPublicApiCommonUtils {
* @returns {(IPublicTypeNodeSchema | undefined)}
*/
getNodeSchemaById(
- schema: IPublicTypeNodeSchema,
- nodeId: string,
- ): IPublicTypeNodeSchema | undefined;
+ schema: IPublicTypeNodeSchema,
+ nodeId: string,
+ ): IPublicTypeNodeSchema | undefined;
// TODO: add comments
getConvertedExtraKey(key: string): string;
@@ -76,16 +78,14 @@ export interface IPublicApiCommonUtils {
intl(data: IPublicTypeI18nData | string, params?: object): string;
}
export interface IPublicApiCommonSkeletonCabin {
-
/**
* 编辑器框架 View
* get Workbench Component
*/
- get Workbench(): Component;
+ get Workbench(): ReactNode;
}
export interface IPublicApiCommonEditorCabin {
-
/**
* Title 组件
* @experimental unstable API, pay extra caution when trying to use this
@@ -103,11 +103,9 @@ export interface IPublicApiCommonEditorCabin {
}>;
}
-export interface IPublicApiCommonDesignerCabin {
-}
+export interface IPublicApiCommonDesignerCabin {}
export interface IPublicApiCommon {
-
get utils(): IPublicApiCommonUtils;
/**
diff --git a/packages/types/src/shell/model/area.ts b/packages/types/src/shell/model/area.ts
new file mode 100644
index 0000000000..a736e99136
--- /dev/null
+++ b/packages/types/src/shell/model/area.ts
@@ -0,0 +1,8 @@
+export interface IPublicModelArea {
+ isEmpty(): boolean;
+ add(config: T | C): T;
+ remove(config: T | string): number;
+ setVisible(flag: boolean): void;
+ hide(): void;
+ show(): void;
+}
diff --git a/packages/types/src/shell/model/drag-object.ts b/packages/types/src/shell/model/drag-object.ts
index 92d92eca35..0ca749b5e9 100644
--- a/packages/types/src/shell/model/drag-object.ts
+++ b/packages/types/src/shell/model/drag-object.ts
@@ -2,10 +2,10 @@ import { IPublicEnumDragObjectType } from '../enum';
import { IPublicTypeNodeSchema } from '../type';
import { IPublicModelNode } from './node';
-export class IPublicModelDragObject {
+export class IPublicModelDragObject {
type: IPublicEnumDragObjectType.Node | IPublicEnumDragObjectType.NodeData;
data: IPublicTypeNodeSchema | IPublicTypeNodeSchema[] | null;
- nodes: (IPublicModelNode | null)[] | null;
+ nodes: (Node | null)[] | null;
}
diff --git a/packages/types/src/shell/model/dragon.ts b/packages/types/src/shell/model/dragon.ts
index 917149faf3..4eadde52a2 100644
--- a/packages/types/src/shell/model/dragon.ts
+++ b/packages/types/src/shell/model/dragon.ts
@@ -1,12 +1,15 @@
/* eslint-disable max-len */
-import { IPublicTypeDisposable, IPublicTypeDragNodeDataObject, IPublicTypeDragObject } from '../type';
-import { IPublicModelDragObject, IPublicModelLocateEvent, IPublicModelNode } from './';
+import { IPublicTypeDisposable, IPublicTypeDragObject } from '../type';
+import {
+ IPublicModelDragObject,
+ IPublicModelLocateEvent,
+ IPublicModelNode,
+} from './';
export interface IPublicModelDragon<
Node = IPublicModelNode,
- LocateEvent = IPublicModelLocateEvent
+ LocateEvent = IPublicModelLocateEvent,
> {
-
/**
* 是否正在拖动
* is dragging or not
@@ -35,7 +38,12 @@ export interface IPublicModelDragon<
* @param func
* @returns
*/
- onDragend(func: (o: { dragObject: IPublicModelDragObject; copy?: boolean }) => any): IPublicTypeDisposable;
+ onDragend(
+ func: (o: {
+ dragObject: IPublicModelDragObject;
+ copy?: boolean;
+ }) => any,
+ ): IPublicTypeDisposable;
/**
* 设置拖拽监听的区域 shell,以及自定义拖拽转换函数 boost
@@ -45,7 +53,10 @@ export interface IPublicModelDragon<
* @param shell 拖拽监听的区域
* @param boost 拖拽转换函数
*/
- from(shell: Element, boost: (e: MouseEvent) => IPublicTypeDragNodeDataObject | null): any;
+ from(
+ shell: Element,
+ boost: (e: MouseEvent) => IPublicModelDragObject | null,
+ ): any;
/**
* 发射拖拽对象
@@ -54,7 +65,11 @@ export interface IPublicModelDragon<
* @param dragObject 拖拽对象
* @param boostEvent 拖拽初始时事件
*/
- boost(dragObject: IPublicTypeDragObject, boostEvent: MouseEvent | DragEvent, fromRglNode?: Node): void;
+ boost(
+ dragObject: IPublicTypeDragObject,
+ boostEvent: MouseEvent | DragEvent,
+ fromRglNode?: Node,
+ ): void;
/**
* 添加投放感应区
diff --git a/packages/types/src/shell/model/index.ts b/packages/types/src/shell/model/index.ts
index ffe6347ac2..6fe6b96679 100644
--- a/packages/types/src/shell/model/index.ts
+++ b/packages/types/src/shell/model/index.ts
@@ -33,3 +33,5 @@ export * from './setting-field';
export * from './editor-view';
export * from './skeleton-item';
export * from './simulator-render';
+export * from './area';
+export * from './widget';
diff --git a/packages/types/src/shell/model/widget.ts b/packages/types/src/shell/model/widget.ts
new file mode 100644
index 0000000000..0446e7698a
--- /dev/null
+++ b/packages/types/src/shell/model/widget.ts
@@ -0,0 +1,23 @@
+import { ISkeleton } from '@felce/lowcode-editor-skeleton';
+import { ReactNode } from 'react';
+import { IPublicTypeWidgetBaseConfig } from '../type';
+
+export interface IPublicModelWidget {
+ readonly name: string;
+ readonly content: ReactNode;
+ readonly align?: string;
+ readonly isWidget: true;
+ readonly visible: boolean;
+ readonly disabled?: boolean;
+ readonly body: ReactNode;
+ readonly skeleton: ISkeleton;
+ readonly config: IPublicTypeWidgetBaseConfig;
+
+ getName(): string;
+ getContent(): any;
+ show(): void;
+ hide(): void;
+ toggle(): void;
+ enable?(): void;
+ disable?(): void;
+}
diff --git a/packages/types/src/shell/type/engine-options.ts b/packages/types/src/shell/type/engine-options.ts
index 8221c4089c..39b180bad5 100644
--- a/packages/types/src/shell/type/engine-options.ts
+++ b/packages/types/src/shell/type/engine-options.ts
@@ -1,8 +1,7 @@
import { RequestHandlersMap } from '@alilc/lowcode-datasource-types';
-import { ComponentType } from 'react';
+import { ComponentType, ReactNode } from 'react';
export interface IPublicTypeEngineOptions {
-
/**
* 是否开启 condition 的能力,默认在设计器中不管 condition 是啥都正常展示
* when this is true, node that configured as conditional not renderring
@@ -75,7 +74,10 @@ export interface IPublicTypeEngineOptions {
/**
* 定制画布中点击被忽略的 selectors,默认值:undefined
*/
- customizeIgnoreSelectors?: (defaultIgnoreSelectors: string[], e: MouseEvent) => string[];
+ customizeIgnoreSelectors?: (
+ defaultIgnoreSelectors: string[],
+ e: MouseEvent,
+ ) => string[];
/**
* 禁止默认的设置面板,默认值:false
@@ -137,7 +139,6 @@ export interface IPublicTypeEngineOptions {
* 与 react-renderer 的 appHelper 一致,https://lowcode-engine.cn/site/docs/guide/expand/runtime/renderer#apphelper
*/
appHelper?: {
-
/** 全局公共函数 */
utils?: Record;
@@ -189,11 +190,19 @@ export interface IPublicTypeEngineOptions {
* 隐藏设计器辅助层
*/
hideComponentAction?: boolean;
+
+ /**
+ * 自定义的 WorkSpaceWorkbench
+ */
+ WorkSpaceWorkbench?: ReactNode;
+
+ /**
+ * 自定义的 Workbench
+ */
+ Workbench?: ReactNode;
}
/**
* @deprecated use IPublicTypeEngineOptions instead
*/
-export interface EngineOptions {
-
-}
\ No newline at end of file
+export interface EngineOptions {}
diff --git a/packages/utils/package.json b/packages/utils/package.json
index abf50b017c..51b5b2efc9 100644
--- a/packages/utils/package.json
+++ b/packages/utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-utils",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "Utils for Ali lowCode engine",
"files": [
"lib",
@@ -14,7 +14,7 @@
},
"dependencies": {
"@alifd/next": "^1.26.0",
- "@felce/lowcode-types": "1.4.0",
+ "@felce/lowcode-types": "1.4.1",
"events": "^3.3.0",
"lodash": "^4.17.21",
"mobx": "^6.3.0",
diff --git a/packages/utils/src/is-plain-object.ts b/packages/utils/src/is-plain-object.ts
index 17bc6266f1..acca4bc207 100644
--- a/packages/utils/src/is-plain-object.ts
+++ b/packages/utils/src/is-plain-object.ts
@@ -1,6 +1,6 @@
import { isObject } from './is-object';
-export function isPlainObject(value: any): value is any {
+export function isPlainObject(value: any): value is Record {
if (!isObject(value)) {
return false;
}
diff --git a/packages/workspace/package.json b/packages/workspace/package.json
index 0383c958bc..cfb8514c19 100644
--- a/packages/workspace/package.json
+++ b/packages/workspace/package.json
@@ -1,6 +1,6 @@
{
"name": "@felce/lowcode-workspace",
- "version": "1.4.0",
+ "version": "1.4.1",
"description": "Shell Layer for AliLowCodeEngine",
"main": "lib/index.js",
"module": "es/index.js",
@@ -15,11 +15,11 @@
},
"license": "MIT",
"dependencies": {
- "@felce/lowcode-designer": "1.4.0",
- "@felce/lowcode-editor-core": "1.4.0",
- "@felce/lowcode-editor-skeleton": "1.4.0",
- "@felce/lowcode-types": "1.4.0",
- "@felce/lowcode-utils": "1.4.0",
+ "@felce/lowcode-designer": "1.4.1",
+ "@felce/lowcode-editor-core": "1.4.1",
+ "@felce/lowcode-editor-skeleton": "1.4.1",
+ "@felce/lowcode-types": "1.4.1",
+ "@felce/lowcode-utils": "1.4.1",
"classnames": "^2.2.6",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.5",
diff --git a/packages/workspace/src/workspace.ts b/packages/workspace/src/workspace.ts
index f229cbab67..27a4e26401 100644
--- a/packages/workspace/src/workspace.ts
+++ b/packages/workspace/src/workspace.ts
@@ -37,7 +37,7 @@ const CHANGE_EVENT = 'resource.list.change';
export interface IWorkspace
extends Omit<
- IPublicApiWorkspace,
+ IPublicApiWorkspace,
'resourceList' | 'plugins' | 'openEditorWindow' | 'removeEditorWindow'
> {
readonly registryInnerPlugin: (