import React from 'react';
import ControlBar, {ControlBarButton} from './ControlBar';
import connect from 'ui/connect';
import Fa from 'ui/components/Fa';
import {toIdAndOverrides} from '../../actions/actionRef';
import {isMenuAction} from '../menu/menuPlugin';
import {combine, merger} from 'lstream';
import mapContext from 'ui/mapContext';
import decoratorChain from '../../../../../modules/ui/decoratorChain';
import {menuAboveElementHint} from '../menu/menuUtils';
export default function PlugableControlBar() {
return } right={}/>;
}
function ButtonGroup({actions}) {
return actions.map(actionRef => {
let [id, overrides] = toIdAndOverrides(actionRef);
return ;
});
}
class ActionButton extends React.Component {
render() {
let {label, cssIcons, enabled, visible, actionId, ...props} = this.props;
if (!visible) {
return null;
}
if (isMenuAction(actionId)) {
let onClick = props.onClick;
props.onClick = e => onClick(menuAboveElementHint(this.el));
}
return this.el = el} {...props} >
{cssIcons && } {label}
;
}
}
const LeftGroup = connect(streams => streams.ui.controlBars.left.map(actions => ({actions})))(ButtonGroup);
const RightGroup = connect(streams => streams.ui.controlBars.right.map(actions => ({actions})))(ButtonGroup);
const ConnectedActionButton = decoratorChain(
connect(
(streams, props) => combine(
streams.action.appearance[props.actionId],
streams.action.state[props.actionId]).map(merger)),
mapContext(({services}, props) => ({
onClick: data => services.action.run(props.actionId, data)
}))
)
(ActionButton);