tdesign-react
Version:
TDesign Component for React
186 lines (182 loc) • 7.59 kB
JavaScript
/**
* tdesign v1.11.6
* (c) 2025 tdesign
* @license MIT
*/
import { _ as _defineProperty } from '../../../../_chunks/dep-fb209a0c.js';
import { _ as _toConsumableArray } from '../../../../_chunks/dep-7a114245.js';
import React, { useRef, useEffect } from 'react';
import { throttle } from 'lodash-es';
import { C as Color } from '../../../../_chunks/dep-6967e9a4.js';
import { Input } from '../../../../input/index.js';
import { InputNumber } from '../../../../input-number/index.js';
import { FORMAT_INPUT_CONFIG } from './config.js';
import '../../../../_chunks/dep-9a3c539e.js';
import '../../../../_chunks/dep-901cf2d8.js';
import '../../../../_chunks/dep-889449c8.js';
import '../../../../_chunks/dep-404a8dbf.js';
import 'tinycolor2';
import '../../../../input/Input.js';
import '../../../../_chunks/dep-2c6eb8e0.js';
import 'classnames';
import 'tdesign-icons-react';
import '../../../../hooks/useLayoutEffect.js';
import '../../../../_util/dom.js';
import 'raf';
import '../../../../_util/easing.js';
import '../../../../_util/forwardRefWithStatics.js';
import 'hoist-non-react-statics';
import '../../../../hooks/useConfig.js';
import '../../../../config-provider/ConfigContext.js';
import '../../../../_chunks/dep-14e7d402.js';
import '../../../../_chunks/dep-72ba05e7.js';
import 'dayjs';
import '../../../../hooks/useGlobalIcon.js';
import '../../../../input/InputGroup.js';
import '../../../../hooks/useControlled.js';
import '../../../../_util/noop.js';
import '../../../../locale/LocalReceiver.js';
import '../../../../config-provider/ConfigProvider.js';
import '../../../../input/defaultProps.js';
import '../../../../_util/parseTNode.js';
import '../../../../_chunks/dep-fad5d621.js';
import '../../../../input/useLengthLimit.js';
import '../../../../_chunks/dep-3bd4dc4e.js';
import '../../../../hooks/useDefaultProps.js';
import '../../../../input-number/InputNumber.js';
import '../../../../button/index.js';
import '../../../../button/Button.js';
import '../../../../hooks/useDomRefCallback.js';
import '../../../../hooks/useRipple.js';
import '../../../../hooks/useAnimation.js';
import '../../../../_util/setStyle.js';
import '../../../../loading/index.js';
import '../../../../loading/Loading.js';
import '../../../../common/Portal.js';
import 'react-dom';
import '../../../../_chunks/dep-6a220fbc.js';
import '../../../../loading/defaultProps.js';
import '../../../../loading/plugin.js';
import '../../../../_util/react-render.js';
import '../../../../_chunks/dep-6625929b.js';
import '../../../../common/PluginContainer.js';
import '../../../../button/defaultProps.js';
import '../../../../input-number/useInputNumber.js';
import '../../../../hooks/useCommonClassName.js';
import '../../../../input-number/defaultProps.js';
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var FormatInputs = function FormatInputs(props) {
var format = props.format,
enableAlpha = props.enableAlpha,
inputProps = props.inputProps,
disabled = props.disabled,
onInputChange = props.onInputChange,
color = props.color;
var lastModelValue = useRef({});
var formatValueRef = useRef({});
var object2color = function object2color(f) {
return Color.object2color(formatValueRef.current, f);
};
var getFormatColorMap = function getFormatColorMap(type) {
if (type === "encode") {
return {
HSV: color.getHsva(),
HSL: color.getHsla(),
RGB: color.getRgba(),
CMYK: color.getCmyk(),
CSS: {
css: color.css
},
HEX: {
hex: color.hex
}
};
}
return {
HSV: object2color("HSV"),
HSL: object2color("HSL"),
RGB: object2color("RGB"),
CMYK: object2color("CMYK"),
CSS: formatValueRef.current.css,
HEX: formatValueRef.current.hex
};
};
var updateModelValue = function updateModelValue() {
var values = getFormatColorMap("encode")[format];
values.a = Math.round(color.alpha * 100);
var changedFormatValue = {};
Object.keys(values).forEach(function (key) {
if (values[key] !== formatValueRef.current[key]) {
changedFormatValue[key] = values[key];
}
lastModelValue.current[key] = values[key];
});
if (Object.keys(changedFormatValue).length > 0) {
formatValueRef.current = values;
}
};
updateModelValue();
var throttleUpdate = throttle(updateModelValue, 100);
var inputConfigs = function inputConfigs() {
var configs = _toConsumableArray(FORMAT_INPUT_CONFIG[format]);
if (enableAlpha) {
configs.push({
type: "inputNumber",
key: "a",
min: 0,
max: 100,
format: function format(value) {
return "".concat(value, "%");
},
flex: 1.15
});
}
return configs;
};
var handleInputChange = function handleInputChange(key, v) {
if (v === lastModelValue.current[key]) {
return;
}
var newFormatValue = _objectSpread(_objectSpread({}, formatValueRef.current), {}, _defineProperty({}, key, v));
formatValueRef.current = newFormatValue;
lastModelValue.current[key] = v;
var value = getFormatColorMap("decode")[format];
onInputChange(value, formatValueRef.current.a / 100, key, v);
};
useEffect(function () {
throttleUpdate();
}, [color.saturation, color.hue, color.value, color.alpha, format]);
return /* @__PURE__ */React.createElement("div", {
className: "input-group"
}, inputConfigs().map(function (config) {
var commonProps = _objectSpread(_objectSpread({}, inputProps), {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
title: formatValueRef.current[config.key]
}, config.type === "input" ? "defaultValue" : "value", formatValueRef.current[config.key]), "align", "center"), "disabled", disabled), "size", "small"), "onChange", config.type === "input" ? Function.prototype : function (v) {
return handleInputChange(config.key, v || config.min);
}), "onBlur", function onBlur(v) {
return handleInputChange(config.key, v);
}), "onEnter", function onEnter(v) {
return handleInputChange(config.key, v);
}));
return /* @__PURE__ */React.createElement("div", {
className: "input-group__item",
key: config.key,
style: {
flex: config.flex || 1
}
}, config.type === "input" ? /* @__PURE__ */React.createElement(Input, _objectSpread(_objectSpread({}, commonProps), {}, {
key: commonProps.defaultValue,
maxlength: format === "HEX" ? 9 : void 0
})) : /* @__PURE__ */React.createElement(InputNumber, _objectSpread(_objectSpread({}, commonProps), {}, {
min: config.min,
max: config.max,
step: 1,
format: config.format,
theme: "normal"
})));
}));
};
var FormatInput = /*#__PURE__*/React.memo(FormatInputs);
export { FormatInput as default };
//# sourceMappingURL=inputs.js.map