mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-06-11 18:02:27 +00:00
Compare commits
22 Commits
main
...
v1.0.16-be
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
456742eeac | ||
|
|
600b468ef2 | ||
|
|
e8fde6189c | ||
|
|
7a0faa48ee | ||
|
|
944d630e39 | ||
|
|
d2046cd225 | ||
|
|
727d04f23c | ||
|
|
74ac483d42 | ||
|
|
fe5b848044 | ||
|
|
3653f6a970 | ||
|
|
2d40d0bd07 | ||
|
|
e1af5a2644 | ||
|
|
d98b90e365 | ||
|
|
1833160038 | ||
|
|
b537b92f44 | ||
|
|
64d3de701b | ||
|
|
42b40d244a | ||
|
|
f9b33adc8b | ||
|
|
b0014ecdb9 | ||
|
|
49194b41f2 | ||
|
|
298cef6f96 | ||
|
|
67ec788f03 |
@ -1,6 +1,6 @@
|
||||
{
|
||||
"lerna": "4.0.0",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"npmClient": "yarn",
|
||||
"useWorkspaces": true,
|
||||
"packages": [
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-designer",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "Designer for Ali LowCode Engine",
|
||||
"main": "lib/index.js",
|
||||
"module": "es/index.js",
|
||||
@ -15,10 +15,10 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@alilc/lowcode-editor-core": "1.0.15",
|
||||
"@alilc/lowcode-shell": "1.0.15",
|
||||
"@alilc/lowcode-types": "1.0.15",
|
||||
"@alilc/lowcode-utils": "1.0.15",
|
||||
"@alilc/lowcode-editor-core": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-shell": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-types": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-utils": "1.0.16-beta.7",
|
||||
"classnames": "^2.2.6",
|
||||
"enzyme": "^3.11.0",
|
||||
"enzyme-adapter-react-16": "^1.15.5",
|
||||
|
||||
@ -36,6 +36,7 @@ import {
|
||||
hasOwnProperty,
|
||||
UtilsMetadata,
|
||||
getClosestNode,
|
||||
transactionManager,
|
||||
} from '@alilc/lowcode-utils';
|
||||
import {
|
||||
DragObjectType,
|
||||
@ -59,9 +60,8 @@ import { getClosestClickableNode } from './utils/clickable';
|
||||
import {
|
||||
ComponentMetadata,
|
||||
ComponentSchema,
|
||||
TransformStage,
|
||||
ActivityData,
|
||||
Package,
|
||||
TransitionType,
|
||||
} from '@alilc/lowcode-types';
|
||||
import { BuiltinSimulatorRenderer } from './renderer';
|
||||
import clipboard from '../designer/clipboard';
|
||||
@ -181,6 +181,14 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp
|
||||
*/
|
||||
autoRender = true;
|
||||
|
||||
stopAutoRepaintNode() {
|
||||
this.renderer?.stopAutoRepaintNode();
|
||||
}
|
||||
|
||||
enableAutoRepaintNode() {
|
||||
this.renderer?.enableAutoRepaintNode();
|
||||
}
|
||||
|
||||
constructor(project: Project) {
|
||||
makeObservable(this);
|
||||
this.project = project;
|
||||
@ -194,6 +202,13 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp
|
||||
i18n: this.project.i18n,
|
||||
};
|
||||
});
|
||||
transactionManager.onStartTransaction(() => {
|
||||
this.stopAutoRepaintNode();
|
||||
}, TransitionType.REPAINT);
|
||||
transactionManager.onEndTransaction(() => {
|
||||
this.rerender();
|
||||
this.enableAutoRepaintNode();
|
||||
}, TransitionType.REPAINT);
|
||||
}
|
||||
|
||||
get currentDocument() {
|
||||
|
||||
@ -13,6 +13,8 @@ export interface BuiltinSimulatorRenderer {
|
||||
setCopyState(state: boolean): void;
|
||||
loadAsyncLibrary(asyncMap: { [index: string]: any }): void;
|
||||
clearState(): void;
|
||||
stopAutoRepaintNode(): void;
|
||||
enableAutoRepaintNode(): void;
|
||||
run(): void;
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { EventEmitter } from 'events';
|
||||
import { autorun, reaction, mobx, untracked, globalContext, Editor } from '@alilc/lowcode-editor-core';
|
||||
import { reaction, untracked, globalContext, Editor } from '@alilc/lowcode-editor-core';
|
||||
import { NodeSchema } from '@alilc/lowcode-types';
|
||||
import { History as ShellHistory } from '@alilc/lowcode-shell';
|
||||
|
||||
@ -32,31 +32,30 @@ export class History<T = NodeSchema> {
|
||||
this.currentSerialization = serialization;
|
||||
}
|
||||
|
||||
constructor(dataFn: () => T, private redoer: (data: T) => void, private timeGap: number = 1000) {
|
||||
constructor(dataFn: () => T | null, private redoer: (data: T) => void, private timeGap: number = 1000) {
|
||||
this.session = new Session(0, null, this.timeGap);
|
||||
this.records = [this.session];
|
||||
|
||||
reaction(() => {
|
||||
reaction((): any => {
|
||||
if (this.asleep) return null;
|
||||
return dataFn();
|
||||
}, (data: T) => {
|
||||
if (this.asleep) return;
|
||||
untracked(() => {
|
||||
const log = this.currentSerialization.serialize(data);
|
||||
if (this.session.isActive()) {
|
||||
this.session.log(log);
|
||||
} else {
|
||||
this.session.end();
|
||||
const lastState = this.getState();
|
||||
const cursor = this.session.cursor + 1;
|
||||
const session = new Session(cursor, log, this.timeGap);
|
||||
this.session = session;
|
||||
this.records.splice(cursor, this.records.length - cursor, session);
|
||||
const currentState = this.getState();
|
||||
if (currentState !== lastState) {
|
||||
this.emitter.emit('statechange', currentState);
|
||||
}
|
||||
if (this.session.isActive()) {
|
||||
this.session.log(log);
|
||||
} else {
|
||||
this.session.end();
|
||||
const lastState = this.getState();
|
||||
const cursor = this.session.cursor + 1;
|
||||
const session = new Session(cursor, log, this.timeGap);
|
||||
this.session = session;
|
||||
this.records.splice(cursor, this.records.length - cursor, session);
|
||||
const currentState = this.getState();
|
||||
if (currentState !== lastState) {
|
||||
this.emitter.emit('statechange', currentState);
|
||||
}
|
||||
// }
|
||||
}
|
||||
});
|
||||
}, { fireImmediately: true });
|
||||
}
|
||||
@ -69,11 +68,11 @@ export class History<T = NodeSchema> {
|
||||
return this.point !== this.session.cursor;
|
||||
}
|
||||
|
||||
private sleep() {
|
||||
sleep() {
|
||||
this.asleep = true;
|
||||
}
|
||||
|
||||
private wakeup() {
|
||||
wakeup() {
|
||||
this.asleep = false;
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-editor-core",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "Core Api for Ali lowCode engine",
|
||||
"license": "MIT",
|
||||
"main": "lib/index.js",
|
||||
@ -14,8 +14,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@alifd/next": "^1.19.16",
|
||||
"@alilc/lowcode-types": "1.0.15",
|
||||
"@alilc/lowcode-utils": "1.0.15",
|
||||
"@alilc/lowcode-types": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-utils": "1.0.16-beta.7",
|
||||
"classnames": "^2.2.6",
|
||||
"debug": "^4.1.1",
|
||||
"intl-messageformat": "^9.3.1",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-editor-skeleton",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "alibaba lowcode editor skeleton",
|
||||
"main": "lib/index.js",
|
||||
"module": "es/index.js",
|
||||
@ -18,10 +18,10 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"@alifd/next": "^1.20.12",
|
||||
"@alilc/lowcode-designer": "1.0.15",
|
||||
"@alilc/lowcode-editor-core": "1.0.15",
|
||||
"@alilc/lowcode-types": "1.0.15",
|
||||
"@alilc/lowcode-utils": "1.0.15",
|
||||
"@alilc/lowcode-designer": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-editor-core": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-types": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-utils": "1.0.16-beta.7",
|
||||
"classnames": "^2.2.6",
|
||||
"react": "^16.8.1",
|
||||
"react-dom": "^16.8.1"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-engine",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "An enterprise-class low-code technology stack with scale-out design / 一套面向扩展设计的企业级低代码技术体系",
|
||||
"main": "lib/engine-core.js",
|
||||
"module": "es/engine-core.js",
|
||||
@ -19,14 +19,14 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@alifd/next": "^1.19.12",
|
||||
"@alilc/lowcode-designer": "1.0.15",
|
||||
"@alilc/lowcode-editor-core": "1.0.15",
|
||||
"@alilc/lowcode-editor-skeleton": "1.0.15",
|
||||
"@alilc/lowcode-designer": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-editor-core": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-editor-skeleton": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-engine-ext": "^1.0.0",
|
||||
"@alilc/lowcode-plugin-designer": "1.0.15",
|
||||
"@alilc/lowcode-plugin-outline-pane": "1.0.15",
|
||||
"@alilc/lowcode-shell": "1.0.15",
|
||||
"@alilc/lowcode-utils": "1.0.15",
|
||||
"@alilc/lowcode-plugin-designer": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-plugin-outline-pane": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-shell": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-utils": "1.0.16-beta.7",
|
||||
"react": "^16.8.1",
|
||||
"react-dom": "^16.8.1"
|
||||
},
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { isFormEvent, compatibleLegaoSchema, getNodeSchemaById } from '@alilc/lowcode-utils';
|
||||
import { isFormEvent, compatibleLegaoSchema, getNodeSchemaById, transactionManager } from '@alilc/lowcode-utils';
|
||||
import { isNodeSchema } from '@alilc/lowcode-types';
|
||||
import { getConvertedExtraKey, getOriginalExtraKey, isNode, isSettingField } from '@alilc/lowcode-designer';
|
||||
import { getConvertedExtraKey, getOriginalExtraKey } from '@alilc/lowcode-designer';
|
||||
|
||||
const utils = {
|
||||
isNodeSchema,
|
||||
@ -9,6 +9,7 @@ const utils = {
|
||||
getNodeSchemaById,
|
||||
getConvertedExtraKey,
|
||||
getOriginalExtraKey,
|
||||
startTransaction: transactionManager.startTransaction,
|
||||
};
|
||||
|
||||
export default utils;
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-ignitor",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "点火器,bootstrap lce project",
|
||||
"main": "lib/index.js",
|
||||
"private": true,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-plugin-designer",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "alibaba lowcode editor designer plugin",
|
||||
"files": [
|
||||
"es",
|
||||
@ -18,9 +18,9 @@
|
||||
],
|
||||
"author": "xiayang.xy",
|
||||
"dependencies": {
|
||||
"@alilc/lowcode-designer": "1.0.15",
|
||||
"@alilc/lowcode-editor-core": "1.0.15",
|
||||
"@alilc/lowcode-utils": "1.0.15",
|
||||
"@alilc/lowcode-designer": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-editor-core": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-utils": "1.0.16-beta.7",
|
||||
"react": "^16.8.1",
|
||||
"react-dom": "^16.8.1"
|
||||
},
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-plugin-outline-pane",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "Outline pane for Ali lowCode engine",
|
||||
"files": [
|
||||
"es",
|
||||
@ -13,10 +13,10 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@alifd/next": "^1.19.16",
|
||||
"@alilc/lowcode-designer": "1.0.15",
|
||||
"@alilc/lowcode-editor-core": "1.0.15",
|
||||
"@alilc/lowcode-types": "1.0.15",
|
||||
"@alilc/lowcode-utils": "1.0.15",
|
||||
"@alilc/lowcode-designer": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-editor-core": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-types": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-utils": "1.0.16-beta.7",
|
||||
"classnames": "^2.2.6",
|
||||
"react": "^16",
|
||||
"react-dom": "^16.7.0",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-rax-renderer",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "Rax renderer for Ali lowCode engine",
|
||||
"main": "lib/index.js",
|
||||
"module": "es/index.js",
|
||||
@ -30,8 +30,8 @@
|
||||
"build": "build-scripts build"
|
||||
},
|
||||
"dependencies": {
|
||||
"@alilc/lowcode-renderer-core": "1.0.15",
|
||||
"@alilc/lowcode-utils": "1.0.15",
|
||||
"@alilc/lowcode-renderer-core": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-utils": "1.0.16-beta.7",
|
||||
"rax-find-dom-node": "^1.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-rax-simulator-renderer",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "rax simulator renderer for alibaba lowcode designer",
|
||||
"main": "lib/index.js",
|
||||
"module": "es/index.js",
|
||||
@ -13,10 +13,10 @@
|
||||
"build:umd": "build-scripts build --config build.umd.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@alilc/lowcode-designer": "1.0.15",
|
||||
"@alilc/lowcode-rax-renderer": "1.0.15",
|
||||
"@alilc/lowcode-types": "1.0.15",
|
||||
"@alilc/lowcode-utils": "1.0.15",
|
||||
"@alilc/lowcode-designer": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-rax-renderer": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-types": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-utils": "1.0.16-beta.7",
|
||||
"classnames": "^2.2.6",
|
||||
"driver-universal": "^3.1.3",
|
||||
"history": "^5.0.0",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-react-renderer",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "react renderer for ali lowcode engine",
|
||||
"main": "lib/index.js",
|
||||
"module": "es/index.js",
|
||||
@ -22,7 +22,7 @@
|
||||
],
|
||||
"dependencies": {
|
||||
"@alifd/next": "^1.21.16",
|
||||
"@alilc/lowcode-renderer-core": "1.0.15"
|
||||
"@alilc/lowcode-renderer-core": "1.0.16-beta.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@alib/build-scripts": "^0.1.18",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-react-simulator-renderer",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"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": {
|
||||
"@alilc/lowcode-designer": "1.0.15",
|
||||
"@alilc/lowcode-react-renderer": "1.0.15",
|
||||
"@alilc/lowcode-types": "1.0.15",
|
||||
"@alilc/lowcode-utils": "1.0.15",
|
||||
"@alilc/lowcode-designer": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-react-renderer": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-types": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-utils": "1.0.16-beta.7",
|
||||
"classnames": "^2.2.6",
|
||||
"mobx": "^6.3.0",
|
||||
"mobx-react": "^7.2.0",
|
||||
|
||||
@ -349,6 +349,11 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer {
|
||||
* 是否为画布自动渲染
|
||||
*/
|
||||
autoRender = true;
|
||||
|
||||
/**
|
||||
* 画布是否自动监听事件来重绘节点
|
||||
*/
|
||||
autoRepaintNode = true;
|
||||
/**
|
||||
* 加载资源
|
||||
*/
|
||||
@ -491,6 +496,14 @@ export class SimulatorRendererContainer implements BuiltinSimulatorRenderer {
|
||||
this._appContext = { ...this._appContext };
|
||||
}
|
||||
|
||||
stopAutoRepaintNode() {
|
||||
this.autoRepaintNode = false;
|
||||
}
|
||||
|
||||
enableAutoRepaintNode() {
|
||||
this.autoRepaintNode = true;
|
||||
}
|
||||
|
||||
dispose() {
|
||||
this.disposeFunctions.forEach(fn => fn());
|
||||
this.documentInstances.forEach(docInst => docInst.dispose());
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-renderer-core",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "renderer core",
|
||||
"license": "MIT",
|
||||
"main": "lib/index.js",
|
||||
@ -16,8 +16,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@alilc/lowcode-datasource-engine": "^1.0.0",
|
||||
"@alilc/lowcode-types": "1.0.15",
|
||||
"@alilc/lowcode-utils": "1.0.15",
|
||||
"@alilc/lowcode-types": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-utils": "1.0.16-beta.7",
|
||||
"classnames": "^2.2.6",
|
||||
"debug": "^4.1.1",
|
||||
"fetch-jsonp": "^1.1.3",
|
||||
@ -33,7 +33,7 @@
|
||||
"devDependencies": {
|
||||
"@alib/build-scripts": "^0.1.18",
|
||||
"@alifd/next": "^1.26.0",
|
||||
"@alilc/lowcode-designer": "1.0.15",
|
||||
"@alilc/lowcode-designer": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-test-mate": "^1.0.1",
|
||||
"@babel/plugin-transform-typescript": "^7.16.8",
|
||||
"@testing-library/react": "^11.2.2",
|
||||
|
||||
@ -102,14 +102,23 @@ function initRerenderEvent({
|
||||
leaf,
|
||||
dispose: [
|
||||
leaf?.onPropChange?.(() => {
|
||||
if (!container.autoRepaintNode) {
|
||||
return;
|
||||
}
|
||||
__debug(`${schema.componentName}[${schema.id}] leaf not render in SimulatorRendererView, leaf onPropsChange make rerender`);
|
||||
container.rerender();
|
||||
}),
|
||||
leaf?.onChildrenChange?.(() => {
|
||||
if (!container.autoRepaintNode) {
|
||||
return;
|
||||
}
|
||||
__debug(`${schema.componentName}[${schema.id}] leaf not render in SimulatorRendererView, leaf onChildrenChange make rerender`);
|
||||
container.rerender();
|
||||
}) as Function,
|
||||
leaf?.onVisibleChange?.(() => {
|
||||
if (!container.autoRepaintNode) {
|
||||
return;
|
||||
}
|
||||
__debug(`${schema.componentName}[${schema.id}] leaf not render in SimulatorRendererView, leaf onVisibleChange make rerender`);
|
||||
container.rerender();
|
||||
}),
|
||||
@ -213,14 +222,18 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
const _leaf = this.leaf;
|
||||
this.initOnPropsChangeEvent(_leaf);
|
||||
this.initOnChildrenChangeEvent(_leaf);
|
||||
this.initOnVisibleChangeEvent(_leaf);
|
||||
this.recordTime();
|
||||
}
|
||||
|
||||
get defaultState() {
|
||||
getDefaultState(nextProps: any) {
|
||||
const {
|
||||
hidden = false,
|
||||
condition = true,
|
||||
} = this.leaf?.export?.(TransformStage.Render) || {};
|
||||
} = nextProps.__inner__ || {};
|
||||
return {
|
||||
nodeChildren: null,
|
||||
childrenInState: false,
|
||||
@ -236,11 +249,7 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, {
|
||||
// 监听以下事件,当变化时更新自己
|
||||
__debug(`${schema.componentName}[${this.props.componentId}] leaf render in SimulatorRendererView`);
|
||||
clearRerenderEvent(componentCacheId);
|
||||
const _leaf = this.leaf;
|
||||
this.initOnPropsChangeEvent(_leaf);
|
||||
this.initOnChildrenChangeEvent(_leaf);
|
||||
this.initOnVisibleChangeEvent(_leaf);
|
||||
this.curEventLeaf = _leaf;
|
||||
this.curEventLeaf = this.leaf;
|
||||
|
||||
cache.ref.set(componentCacheId, {
|
||||
makeUnitRender: this.makeUnitRender,
|
||||
@ -248,7 +257,7 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, {
|
||||
|
||||
let cacheState = cache.state.get(componentCacheId);
|
||||
if (!cacheState || cacheState.__tag !== props.__tag) {
|
||||
cacheState = this.defaultState;
|
||||
cacheState = this.getDefaultState(props);
|
||||
}
|
||||
|
||||
this.state = cacheState;
|
||||
@ -279,6 +288,10 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, {
|
||||
singleRender?: boolean;
|
||||
};
|
||||
|
||||
get autoRepaintNode() {
|
||||
return container.autoRepaintNode;
|
||||
}
|
||||
|
||||
judgeMiniUnitRender() {
|
||||
if (!this.renderUnitInfo) {
|
||||
this.getRenderUnitInfo();
|
||||
@ -380,13 +393,16 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, {
|
||||
const {
|
||||
visible,
|
||||
...resetState
|
||||
} = this.defaultState;
|
||||
} = this.getDefaultState(nextProps);
|
||||
this.setState(resetState);
|
||||
}
|
||||
|
||||
/** 监听参数变化 */
|
||||
initOnPropsChangeEvent(leaf = this.leaf): void {
|
||||
const dispose = leaf?.onPropChange?.(debounce((propChangeInfo: PropChangeOptions) => {
|
||||
const dispose = leaf?.onPropChange?.((propChangeInfo: PropChangeOptions) => {
|
||||
if (!this.autoRepaintNode) {
|
||||
return;
|
||||
}
|
||||
const {
|
||||
key,
|
||||
newValue = null,
|
||||
@ -433,7 +449,7 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, {
|
||||
});
|
||||
|
||||
this.judgeMiniUnitRender();
|
||||
}, 30));
|
||||
});
|
||||
|
||||
dispose && this.disposeFunctions.push(dispose);
|
||||
}
|
||||
@ -443,6 +459,9 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, {
|
||||
*/
|
||||
initOnVisibleChangeEvent(leaf = this.leaf) {
|
||||
const dispose = leaf?.onVisibleChange?.((flag: boolean) => {
|
||||
if (!this.autoRepaintNode) {
|
||||
return;
|
||||
}
|
||||
if (this.state.visible === flag) {
|
||||
return;
|
||||
}
|
||||
@ -463,6 +482,9 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, {
|
||||
*/
|
||||
initOnChildrenChangeEvent(leaf = this.leaf) {
|
||||
const dispose = leaf?.onChildrenChange?.((param): void => {
|
||||
if (!this.autoRepaintNode) {
|
||||
return;
|
||||
}
|
||||
const {
|
||||
type,
|
||||
node,
|
||||
@ -540,6 +562,8 @@ export function leafWrapper(Comp: types.IBaseRenderComponent, {
|
||||
ref: forwardedRef,
|
||||
};
|
||||
|
||||
delete compProps.__inner__;
|
||||
|
||||
return engine.createElement(Comp, compProps, this.hasChildren ? this.children : null);
|
||||
}
|
||||
}
|
||||
|
||||
@ -670,7 +670,14 @@ export default function baseRendererFactory(): IBaseRenderComponent {
|
||||
}
|
||||
}
|
||||
}
|
||||
return renderComp({ ...props, ...otherProps });
|
||||
return renderComp({
|
||||
...props,
|
||||
...otherProps,
|
||||
__inner__: {
|
||||
hidden: schema.hidden,
|
||||
condition,
|
||||
},
|
||||
});
|
||||
} catch (e) {
|
||||
return engine.createElement(engine.getFaultComponent(), {
|
||||
error: e,
|
||||
|
||||
@ -35,7 +35,8 @@ const baseRenderer: any = {
|
||||
__container: {
|
||||
rerender: () => {
|
||||
rerenderCount = 1 + rerenderCount;
|
||||
}
|
||||
},
|
||||
autoRepaintNode: true,
|
||||
},
|
||||
documentId: '01'
|
||||
},
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-shell",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "Shell Layer for AliLowCodeEngine",
|
||||
"main": "lib/index.js",
|
||||
"module": "es/index.js",
|
||||
@ -15,11 +15,11 @@
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@alilc/lowcode-designer": "1.0.15",
|
||||
"@alilc/lowcode-editor-core": "1.0.15",
|
||||
"@alilc/lowcode-editor-skeleton": "1.0.15",
|
||||
"@alilc/lowcode-types": "1.0.15",
|
||||
"@alilc/lowcode-utils": "1.0.15",
|
||||
"@alilc/lowcode-designer": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-editor-core": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-editor-skeleton": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-types": "1.0.16-beta.7",
|
||||
"@alilc/lowcode-utils": "1.0.16-beta.7",
|
||||
"classnames": "^2.2.6",
|
||||
"enzyme": "^3.11.0",
|
||||
"enzyme-adapter-react-16": "^1.15.5",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-types",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "Types for Ali lowCode engine",
|
||||
"files": [
|
||||
"es",
|
||||
|
||||
@ -21,3 +21,4 @@ export * from './code-result';
|
||||
export * from './assets';
|
||||
export * as GlobalEvent from './event';
|
||||
export * from './disposable';
|
||||
export * from './start-transaction';
|
||||
|
||||
4
packages/types/src/start-transaction.ts
Normal file
4
packages/types/src/start-transaction.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export enum TransitionType {
|
||||
/** 节点更新后重绘处理 */
|
||||
REPAINT
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@alilc/lowcode-utils",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.16-beta.7",
|
||||
"description": "Utils for Ali lowCode engine",
|
||||
"files": [
|
||||
"lib",
|
||||
@ -14,7 +14,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@alifd/next": "^1.19.16",
|
||||
"@alilc/lowcode-types": "1.0.15",
|
||||
"@alilc/lowcode-types": "1.0.16-beta.7",
|
||||
"lodash": "^4.17.21",
|
||||
"react": "^16",
|
||||
"zen-logger": "^1.1.0"
|
||||
|
||||
@ -26,3 +26,4 @@ export * from './node-helper';
|
||||
export * from './clone-enumerable-property';
|
||||
export * from './logger';
|
||||
export * as css from './css-helper';
|
||||
export { transactionManager } from './start-transaction';
|
||||
|
||||
31
packages/utils/src/start-transaction.ts
Normal file
31
packages/utils/src/start-transaction.ts
Normal file
@ -0,0 +1,31 @@
|
||||
import { TransitionType } from '@alilc/lowcode-types';
|
||||
import { transaction } from 'mobx';
|
||||
import EventEmitter from 'events';
|
||||
|
||||
class TransactionManager {
|
||||
emitter = new EventEmitter();
|
||||
|
||||
startTransaction = (fn: () => void, type: TransitionType = TransitionType.REPAINT): void => {
|
||||
this.emitter.emit(`[${type}]startTransaction`);
|
||||
transaction(fn);
|
||||
this.emitter.emit(`[${type}]endTransaction`);
|
||||
};
|
||||
|
||||
onStartTransaction = (fn: () => void, type: TransitionType = TransitionType.REPAINT): () => void => {
|
||||
this.emitter.on(`[${type}]startTransaction`, fn);
|
||||
return () => {
|
||||
this.emitter.off(`[${type}]startTransaction`, fn);
|
||||
};
|
||||
};
|
||||
|
||||
onEndTransaction = (fn: () => void, type: TransitionType = TransitionType.REPAINT): () => void => {
|
||||
this.emitter.on(`[${type}]endTransaction`, fn);
|
||||
return () => {
|
||||
this.emitter.off(`[${type}]endTransaction`, fn);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
export const transactionManager = new TransactionManager();
|
||||
|
||||
export default transactionManager;
|
||||
Loading…
x
Reference in New Issue
Block a user