import React, { Component } from 'react';
import { Tab, Breadcrumb, Icon } from '@alifd/next';
import { SettingsMain, SettingField, isSettingField } from './main';
import './style.less';
import Title from './title';
import SettingsTab, { registerSetter, createSetterContent, getSetter, createSettingFieldView } from './settings-pane';
import Node from '../../designer/src/designer/document/node/node';
import ArraySetter from './builtin-setters/array-setter';
export default class SettingsMainView extends Component {
private main: SettingsMain;
constructor(props: any) {
super(props);
this.main = new SettingsMain(props.editor);
this.main.onNodesChange(() => {
this.forceUpdate();
});
}
shouldComponentUpdate() {
return false;
}
componentWillUnmount() {
this.main.purge();
}
renderBreadcrumb() {
if (this.main.isMulti) {
return (
{this.main.componentType!.icon || }
{this.main.componentType!.title} x {this.main.nodes.length}
);
}
let node: Node | null = this.main.nodes[0]!;
const items = [];
let l = 4;
while (l-- > 0 && node) {
const props =
l === 3
? {}
: {
onMouseOver: hoverNode.bind(null, node, true),
onMouseOut: hoverNode.bind(null, node, false),
onClick: selectNode.bind(null, node),
};
items.unshift({node.title});
node = node.parent;
}
return (
{this.main.componentType!.icon || }
{items}
);
}
render() {
if (this.main.isNone) {
// 未选中节点,提示选中 或者 显示根节点设置
return (
);
}
if (!this.main.isSame) {
// todo: future support 获取设置项交集编辑
return (
);
}
const { items } = this.main;
if (items.length > 5 || items.some(item => !isSettingField(item) || !item.isGroup)) {
return (
{this.renderBreadcrumb()}
);
}
return (
{(items as SettingField[]).map(field => (
} key={field.name}>
))}
);
}
}
function hoverNode(node: Node, flag: boolean) {
node.hover(flag);
}
function selectNode(node: Node) {
node.select();
}
registerSetter('ArraySetter', ArraySetter);
export { registerSetter, createSetterContent, getSetter, createSettingFieldView };