Merge branch develop into release/1.0.17-beta

This commit is contained in:
liujuping 2022-11-22 17:17:03 +08:00
commit ab817312ff
4 changed files with 21 additions and 11 deletions

View File

@ -69,6 +69,7 @@ import { LiveEditing } from './live-editing/live-editing';
import { Project } from '../project'; import { Project } from '../project';
import { Scroller } from '../designer/scroller'; import { Scroller } from '../designer/scroller';
import { isElementNode, isDOMNodeVisible } from '../utils/misc'; import { isElementNode, isDOMNodeVisible } from '../utils/misc';
import { debounce } from 'lodash';
export interface LibraryItem extends Package{ export interface LibraryItem extends Package{
package: string; package: string;
@ -205,8 +206,10 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp
transactionManager.onStartTransaction(() => { transactionManager.onStartTransaction(() => {
this.stopAutoRepaintNode(); this.stopAutoRepaintNode();
}, TransitionType.REPAINT); }, TransitionType.REPAINT);
// 防止批量调用 transaction 时,执行多次 rerender
const rerender = debounce(this.rerender.bind(this), 28);
transactionManager.onEndTransaction(() => { transactionManager.onEndTransaction(() => {
this.rerender(); rerender();
this.enableAutoRepaintNode(); this.enableAutoRepaintNode();
}, TransitionType.REPAINT); }, TransitionType.REPAINT);
} }

View File

@ -173,7 +173,7 @@ export class Prop implements IPropParent {
const values = this.items!.map((prop) => { const values = this.items!.map((prop) => {
return prop.export(stage); return prop.export(stage);
}); });
if (values.every(val => val === undefined)) { if (values.every((val) => val === undefined)) {
return undefined; return undefined;
} }
return values; return values;
@ -314,14 +314,21 @@ export class Prop implements IPropParent {
@action @action
setAsSlot(data: JSSlot) { setAsSlot(data: JSSlot) {
this._type = 'slot'; this._type = 'slot';
const slotSchema: SlotSchema = { let slotSchema: SlotSchema;
componentName: 'Slot', // 当 data.value 的结构为 { componentName: 'Slot' } 时,直接当成 slotSchema 使用
title: data.title, if ((isPlainObject(data.value) && data.value?.componentName === 'Slot')) {
id: data.id, slotSchema = data.value as SlotSchema;
name: data.name, } else {
params: data.params, slotSchema = {
children: data.value, componentName: 'Slot',
}; title: data.title,
id: data.id,
name: data.name,
params: data.params,
children: data.value,
};
}
if (this._slotNode) { if (this._slotNode) {
this._slotNode.import(slotSchema); this._slotNode.import(slotSchema);
} else { } else {

View File

@ -26,4 +26,4 @@ export * from './node-helper';
export * from './clone-enumerable-property'; export * from './clone-enumerable-property';
export * from './logger'; export * from './logger';
export * as css from './css-helper'; export * as css from './css-helper';
export { transactionManager } from './start-transaction'; export { transactionManager } from './transaction-manager';