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 ;
}
}