import * as React from "react"; import styled from "styled-components"; import { MenuItem } from "@shared/editor/types"; import { s } from "@shared/styles"; import { useEditor } from "./EditorContext"; import ToolbarButton from "./ToolbarButton"; import ToolbarSeparator from "./ToolbarSeparator"; import Tooltip from "./Tooltip"; type Props = { items: MenuItem[]; }; const FlexibleWrapper = styled.div` color: ${s("toolbarItem")}; display: flex; gap: 8px; `; function ToolbarMenu(props: Props) { const { commands, view } = useEditor(); const { items } = props; const { state } = view; const handleClick = (item: MenuItem) => () => { if (!item.name) { return; } const attrs = typeof item.attrs === "function" ? item.attrs(state) : item.attrs; commands[item.name](attrs); }; return ( {items.map((item, index) => { if (item.name === "separator" && item.visible !== false) { return ; } if (item.visible === false || !item.icon) { return null; } const isActive = item.active ? item.active(state) : false; return ( {item.label && } {item.icon} ); })} ); } const Label = styled.span` font-size: 15px; font-weight: 500; `; export default ToolbarMenu;