preact-arco-design
Version:
Arco Design React UI Library.
63 lines (62 loc) • 1.78 kB
JavaScript
import { useMemo } from "preact/compat";
import merge from 'lodash/merge';
import { isObject } from "../../_util/is";
var defaultComponents = {
table: 'table',
header: {
operations: function operations(_a) {
var selectionNode = _a.selectionNode,
expandNode = _a.expandNode;
return [{
name: 'expandNode',
node: expandNode
}, {
name: 'selectionNode',
node: selectionNode
}];
},
wrapper: 'div',
thead: 'thead',
row: 'tr',
th: 'th',
cell: 'div'
},
body: {
operations: function operations(_a) {
var selectionNode = _a.selectionNode,
expandNode = _a.expandNode;
return [{
name: 'expandNode',
node: expandNode
}, {
name: 'selectionNode',
node: selectionNode
}];
},
wrapper: 'div',
tbody: 'tbody',
row: 'tr',
td: 'td',
cell: 'span'
}
};
export default function useComponent(components) {
var _components = useMemo(function () {
return isObject(components) ? merge({}, defaultComponents, components) : defaultComponents;
}, [components]);
return {
getHeaderComponentOperations: _components.header.operations,
getBodyComponentOperations: _components.body.operations,
ComponentTable: _components.table,
ComponentHeaderWrapper: _components.header.wrapper,
ComponentThead: _components.header.thead,
ComponentHeaderRow: _components.header.row,
ComponentTh: _components.header.th,
ComponentHeaderCell: _components.header.cell,
ComponentBodyWrapper: _components.body.wrapper,
ComponentTbody: _components.body.tbody,
ComponentBodyRow: _components.body.row,
ComponentTd: _components.body.td,
ComponentBodyCell: _components.body.cell
};
}