UNPKG

react-img-editor-pro

Version:

图片编辑器(微信截图编辑 PRO 版),来自 react-img-editor

81 lines (74 loc) 2.92 kB
import ParamSetting from './ParamSetting'; import React, { useContext } from 'react'; import Tooltip from 'rc-tooltip'; import { prefixCls } from '../common/constants'; import { EditorContext } from './EditorContext'; import 'rc-tooltip/assets/bootstrap_white.css'; export default function Toolbar() { var _useContext = useContext(EditorContext), containerWidth = _useContext.containerWidth, plugins = _useContext.plugins, toolbar = _useContext.toolbar, currentPlugin = _useContext.currentPlugin, paramValue = _useContext.paramValue, handlePluginChange = _useContext.handlePluginChange, handlePluginParamValueChange = _useContext.handlePluginParamValueChange, toolbarItemConfig = _useContext.toolbarItemConfig; var style = { width: containerWidth }; function renderPlugin(plugin) { var isActivated = !!(currentPlugin && currentPlugin.name === plugin.name); var paramNames = currentPlugin ? currentPlugin.params : []; var isDisabled = toolbarItemConfig[plugin.name].disable; if (!paramNames || paramNames.length === 0) { return /*#__PURE__*/React.createElement("span", { key: plugin.name, className: "".concat(prefixCls, "-toolbar-icon ").concat(isActivated ? 'activated' : '', " ").concat(isDisabled ? 'disabled' : '') }, /*#__PURE__*/React.createElement("i", { title: plugin.title, className: plugin.iconfont, onClick: function onClick() { return handlePluginChange(plugin); } })); } return /*#__PURE__*/React.createElement(Tooltip, { key: plugin.name, placement: "bottom", overlay: /*#__PURE__*/React.createElement(ParamSetting, { paramNames: paramNames, paramValue: paramValue, onChange: handlePluginParamValueChange }), visible: isActivated, overlayClassName: "".concat(prefixCls, "-tooltip"), arrowContent: /*#__PURE__*/React.createElement("div", { className: "rc-tooltip-arrow-inner" }) }, /*#__PURE__*/React.createElement("span", { key: plugin.name, className: "".concat(prefixCls, "-toolbar-icon ").concat(isActivated ? 'activated' : '', " ").concat(isDisabled ? 'disabled' : '') }, /*#__PURE__*/React.createElement("i", { title: plugin.title, className: plugin.iconfont, onClick: function onClick() { return handlePluginChange(plugin); } }))); } return /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-toolbar"), style: style }, toolbar.items.map(function (item) { if (item === '|') return /*#__PURE__*/React.createElement("span", { className: "".concat(prefixCls, "-toolbar-separator") }); for (var i = 0; i < plugins.length; i++) { if (plugins[i].name === item) { return renderPlugin(plugins[i]); } } return null; })); }