import React from 'react'; import Fa from 'ui/components/Fa'; import Toolbar, {ToolbarBraker, ToolbarButton, ToolbarGroup, ToolbarSplitter} from 'ui/components/Toolbar'; import ImgIcon from 'ui/components/ImgIcon'; import {toIdAndOverrides} from '../../actions/actionRef'; import {ActionButtonBehavior} from '../../actions/ActionButtonBehavior'; import capitalize from 'gems/capitalize'; import {constant} from 'lstream'; import {useStream} from "ui/effects"; import {NoIcon} from "../../../sketcher/icons/NoIcon"; import {GrCircleQuestion} from "react-icons/fa"; import {memoize} from "lodash/function"; function ConfigurableToolbar({actions, size, ...props}) { return } export function ToolbarActionButtons({actions, showTitles, size}) { return actions.map((actionRef, i) => { if (actionRef === '-') { return ; } else if (actionRef === '|') { return ; } else if (Array.isArray(actionRef)) { return ; } const [id, overrides] = toIdAndOverrides(actionRef); return }); } function ActionButton({label, icon, icon96, icon32, cssIcons, symbol, size = 'large', noLabel, enabled, visible, actionId, ...props}) { if (!visible) { return null; } const smallOrMedium = size === 'medium' || size === 'small'; if (icon) { const Icon = icon; icon = ; } if (!icon) { if (smallOrMedium) { if (cssIcons) { icon = ; } else if (icon32) { icon = ; } } else { icon = ; } } if (!icon) { const txtStub = symbol||(label&&label.charAt(0)); icon = txtStub ? {txtStub} : ; } return {icon} {!(smallOrMedium || noLabel)&&
{capitalize(label)}
}
} export const NonExistentAppearance = memoize((actionId) => { return constant({ info: "unknown action: " + actionId, label: "unknown action " + actionId, icon: () => ?{actionId}? }) }) export const NonExistentState = constant({ enabled: true, visible: true }); export function ConnectedActionButton(props) { const actionId = props.actionId; const actionAppearance = useStream(ctx => (ctx.streams.action.appearance[actionId] || NonExistentAppearance(actionId))); const actionState = useStream(ctx => ctx.streams.action.state[actionId] || NonExistentState); if (!actionAppearance || !actionState) { return null; } return {behaviourProps => } ; } export function createPlugableToolbar(streamSelector) { return function (props) { const actions = useStream(ctx => streamSelector(ctx.streams)); if (!actions) { return null; } return ; } }