import React from 'react'; import Menu, {MenuItem, MenuSeparator} from 'ui/components/Menu'; import Filler from 'ui/components/Filler'; import Fa from 'ui/components/Fa'; import {mapActionBehavior} from '../../actions/actionButtonBehavior'; import connect from 'ui/connect'; import {combine, merger} from 'lstream'; import mapContext from 'ui/mapContext'; import decoratorChain from 'ui/decoratorChain'; function MenuHolder({menus}) { return menus.map(({id, actions}) => ); } function ActionMenu({actions, keymap, ...menuState}) { return {actions.map((action, index) => { if (action === '-') { return } return ; })} ; } function ActionMenuItem({label, cssIcons, icon32, icon96, enabled, hotKey, visible, actionId, ...props}) { if (!visible) { return null; } let icon, style; if (icon32 || icon96) { let size = 16; icon = ; style = { backgroundImage: `url(${icon32 || icon96})`, backgroundRepeat: 'no-repeat', backgroundSize: `${size}px ${size}px`, backgroundPositionY: 6, backgroundPositionX: 5, }; if (!enabled) { style.filter = 'grayscale(90%)'; } } else if (cssIcons) { icon = ; } return ; } const ConnectedActionMenu = connect((streams, props) => combine( streams.ui.menu.states[props.menuId], streams.ui.keymap) .map(([s, keymap]) => ({...s, keymap}))) (ActionMenu); let ConnectedMenuItem = decoratorChain( connect((streams, {actionId}) => combine( streams.action.state[actionId], streams.action.appearance[actionId]).map(merger)), mapContext(mapActionBehavior(props => props.actionId)) ) (ActionMenuItem); export default connect(streams => streams.ui.menu.all.map(menus => ({menus})))(MenuHolder);