UNPKG

@gechiui/components

Version:
126 lines (120 loc) 3.74 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { createElement } from "@gechiui/element"; /** * External dependencies */ import { map } from 'lodash'; /** * GeChiUI dependencies */ import { __, sprintf } from '@gechiui/i18n'; import { useCallback, useMemo } from '@gechiui/element'; /** * Internal dependencies */ import CircularOptionPicker from '../circular-option-picker'; import CustomGradientPicker from '../custom-gradient-picker'; import { VStack } from '../v-stack'; import { ColorHeading } from '../color-palette/styles'; function SingleOrigin(_ref) { let { className, clearGradient, gradients, onChange, value, actions, content } = _ref; const gradientOptions = useMemo(() => { return map(gradients, _ref2 => { let { gradient, name } = _ref2; return createElement(CircularOptionPicker.Option, { key: gradient, value: gradient, isSelected: value === gradient, tooltipText: name || // translators: %s: gradient code e.g: "linear-gradient(90deg, rgba(98,16,153,1) 0%, rgba(172,110,22,1) 100%);". sprintf(__('渐变色代码:%s'), gradient), style: { color: 'rgba( 0,0,0,0 )', background: gradient }, onClick: value === gradient ? clearGradient : () => onChange(gradient), "aria-label": name ? // translators: %s: The name of the gradient e.g: "Angular red to blue". sprintf(__('渐变色:%s'), name) : // translators: %s: gradient code e.g: "linear-gradient(90deg, rgba(98,16,153,1) 0%, rgba(172,110,22,1) 100%);". sprintf(__('渐变色代码:%s'), gradient) }); }); }, [gradients, value, onChange, clearGradient]); return createElement(CircularOptionPicker, { className: className, options: gradientOptions, actions: actions }, content); } function MultipleOrigin(_ref3) { let { className, clearGradient, gradients, onChange, value, actions, content } = _ref3; return createElement(VStack, { spacing: 3, className: className }, gradients.map((_ref4, index) => { let { name, gradients: gradientSet } = _ref4; return createElement(VStack, { spacing: 2, key: index }, createElement(ColorHeading, null, name), createElement(SingleOrigin, _extends({ clearGradient: clearGradient, gradients: gradientSet, onChange: onChange, value: value }, gradients.length === index + 1 ? { actions, content } : {}))); })); } export default function GradientPicker(_ref5) { let { className, gradients, onChange, value, clearable = true, disableCustomGradients = false, __experimentalHasMultipleOrigins, __experimentalIsRenderedInSidebar } = _ref5; const clearGradient = useCallback(() => onChange(undefined), [onChange]); const Component = __experimentalHasMultipleOrigins && gradients !== null && gradients !== void 0 && gradients.length ? MultipleOrigin : SingleOrigin; return createElement(Component, { className: className, clearable: clearable, clearGradient: clearGradient, gradients: gradients, onChange: onChange, value: value, actions: clearable && ((gradients === null || gradients === void 0 ? void 0 : gradients.length) || !disableCustomGradients) && createElement(CircularOptionPicker.ButtonAction, { onClick: clearGradient }, __('清除')), content: !disableCustomGradients && createElement(CustomGradientPicker, { __experimentalIsRenderedInSidebar: __experimentalIsRenderedInSidebar, value: value, onChange: onChange }) }); } //# sourceMappingURL=index.js.map