tdesign-react
Version:
TDesign Component for React
110 lines (102 loc) • 4.01 kB
JavaScript
/**
* tdesign v1.13.2
* (c) 2025 tdesign
* @license MIT
*/
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var classNames = require('classnames');
var constants = require('../../../_chunks/dep-11227668.js');
var hooks_useDrag = require('../../../hooks/useDrag.js');
var colorPicker_hooks_useStyles = require('../../hooks/useStyles.js');
require('../../../_chunks/dep-e17e2d31.js');
require('../../../_chunks/dep-b7d577ac.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
var ColorSlider = function ColorSlider(props) {
var color = props.color,
_props$className = props.className,
className = _props$className === void 0 ? "" : _props$className,
_props$value = props.value,
value = _props$value === void 0 ? 0 : _props$value,
_props$railStyle = props.railStyle,
railStyle = _props$railStyle === void 0 ? {} : _props$railStyle,
_props$maxValue = props.maxValue,
maxValue = _props$maxValue === void 0 ? 360 : _props$maxValue,
baseClassName = props.baseClassName,
disabled = props.disabled,
onChange = props.onChange,
type = props.type;
var panelRef = React.useRef(null);
var thumbRef = React.useRef(null);
var isMovedRef = React.useRef(false);
var panelRectRef = React.useRef({
width: constants.SLIDER_DEFAULT_WIDTH
});
var _useStyles = colorPicker_hooks_useStyles["default"]({
color: color,
value: value,
maxValue: maxValue,
type: type
}, panelRectRef),
styles = _useStyles.styles;
var handleDrag = function handleDrag(coordinate) {
if (disabled) {
return;
}
var width = panelRectRef.current.width;
var x = coordinate.x;
var value2 = Math.round(x / width * Number(maxValue) * 100) / 100;
isMovedRef.current = true;
onChange(value2);
};
var handleDragEnd = function handleDragEnd(coordinate) {
if (disabled || !isMovedRef.current) {
return;
}
handleDrag(coordinate);
isMovedRef.current = false;
};
hooks_useDrag["default"](panelRef, {
start: function start(coordinate) {
panelRectRef.current.width = panelRef.current.offsetWidth;
isMovedRef.current = false;
handleDrag(coordinate);
},
end: function end(coordinate) {
handleDragEnd(coordinate);
},
drag: function drag(coordinate) {
handleDrag(coordinate);
}
});
React.useEffect(function () {
panelRectRef.current.width = panelRef.current.offsetWidth || constants.SLIDER_DEFAULT_WIDTH;
}, []);
var paddingStyle = {
background: "linear-gradient(90deg, rgba(0,0,0,.0) 0%, rgba(0,0,0,.0) 93%, ".concat(props.color.rgb, " 93%, ").concat(props.color.rgb, " 100%)")
};
return /* @__PURE__ */React__default["default"].createElement("div", {
className: classNames__default["default"]("".concat(baseClassName, "__slider-wrapper"), "".concat(baseClassName, "__slider-wrapper--").concat(type, "-type"))
}, type === "alpha" && /* @__PURE__ */React__default["default"].createElement("div", {
className: "".concat(baseClassName, "__slider-padding"),
style: paddingStyle
}), /* @__PURE__ */React__default["default"].createElement("div", {
className: classNames__default["default"]("".concat(baseClassName, "__slider"), className),
ref: panelRef
}, /* @__PURE__ */React__default["default"].createElement("div", {
className: "".concat(baseClassName, "__rail"),
style: railStyle
}), /* @__PURE__ */React__default["default"].createElement("span", {
className: "".concat(baseClassName, "__thumb"),
role: "slider",
tabIndex: 0,
ref: thumbRef,
style: styles
})));
};
var ColorSlider$1 = /*#__PURE__*/React__default["default"].memo(ColorSlider);
exports["default"] = ColorSlider$1;
//# sourceMappingURL=slider.js.map