UNPKG

9.07 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.default = void 0;
11
12var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
14var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
16var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
18var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
20var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
21
22var _react = _interopRequireDefault(require("react"));
23
24var _warning = _interopRequireDefault(require("rc-util/lib/warning"));
25
26var _Track = _interopRequireDefault(require("./common/Track"));
27
28var _createSlider = _interopRequireDefault(require("./common/createSlider"));
29
30var utils = _interopRequireWildcard(require("./utils"));
31
32var Slider = /*#__PURE__*/function (_React$Component) {
33 (0, _inherits2.default)(Slider, _React$Component);
34
35 var _super = (0, _createSuper2.default)(Slider);
36
37 /* eslint-enable */
38 function Slider(props) {
39 var _this;
40
41 (0, _classCallCheck2.default)(this, Slider);
42 _this = _super.call(this, props);
43
44 _this.positionGetValue = function (position) {
45 return [];
46 };
47
48 _this.onEnd = function (force) {
49 var dragging = _this.state.dragging;
50
51 _this.removeDocumentEvents();
52
53 if (dragging || force) {
54 _this.props.onAfterChange(_this.getValue());
55 }
56
57 _this.setState({
58 dragging: false
59 });
60 };
61
62 var defaultValue = props.defaultValue !== undefined ? props.defaultValue : props.min;
63 var value = props.value !== undefined ? props.value : defaultValue;
64 _this.state = {
65 value: _this.trimAlignValue(value),
66 dragging: false
67 };
68 (0, _warning.default)(!('minimumTrackStyle' in props), 'minimumTrackStyle will be deprecated, please use trackStyle instead.');
69 (0, _warning.default)(!('maximumTrackStyle' in props), 'maximumTrackStyle will be deprecated, please use railStyle instead.');
70 return _this;
71 }
72 /**
73 * [Legacy] Used for inherit other component.
74 * It's a bad code style which should be refactor.
75 */
76
77 /* eslint-disable @typescript-eslint/no-unused-vars, class-methods-use-this */
78
79
80 (0, _createClass2.default)(Slider, [{
81 key: "calcValueByPos",
82 value: function calcValueByPos(value) {
83 return 0;
84 }
85 }, {
86 key: "calcOffset",
87 value: function calcOffset(value) {
88 return 0;
89 }
90 }, {
91 key: "saveHandle",
92 value: function saveHandle(index, h) {}
93 }, {
94 key: "removeDocumentEvents",
95 value: function removeDocumentEvents() {}
96 }, {
97 key: "componentDidUpdate",
98 value: function componentDidUpdate(prevProps, prevState) {
99 var _this$props = this.props,
100 min = _this$props.min,
101 max = _this$props.max,
102 value = _this$props.value,
103 onChange = _this$props.onChange;
104
105 if (!('min' in this.props || 'max' in this.props)) {
106 return;
107 }
108
109 var theValue = value !== undefined ? value : prevState.value;
110 var nextValue = this.trimAlignValue(theValue, this.props);
111
112 if (nextValue === prevState.value) {
113 return;
114 } // eslint-disable-next-line
115
116
117 this.setState({
118 value: nextValue
119 });
120
121 if (!(min === prevProps.min && max === prevProps.max) && utils.isValueOutOfRange(theValue, this.props)) {
122 onChange(nextValue);
123 }
124 }
125 }, {
126 key: "onChange",
127 value: function onChange(state) {
128 var props = this.props;
129 var isNotControlled = !('value' in props);
130 var nextState = state.value > this.props.max ? (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
131 value: this.props.max
132 }) : state;
133
134 if (isNotControlled) {
135 this.setState(nextState);
136 }
137
138 var changedValue = nextState.value;
139 props.onChange(changedValue);
140 }
141 }, {
142 key: "onStart",
143 value: function onStart(position) {
144 this.setState({
145 dragging: true
146 });
147 var props = this.props;
148 var prevValue = this.getValue();
149 props.onBeforeChange(prevValue);
150 var value = this.calcValueByPos(position);
151 this.startValue = value;
152 this.startPosition = position;
153 if (value === prevValue) return;
154 this.prevMovedHandleIndex = 0;
155 this.onChange({
156 value: value
157 });
158 }
159 }, {
160 key: "onMove",
161 value: function onMove(e, position) {
162 utils.pauseEvent(e);
163 var oldValue = this.state.value;
164 var value = this.calcValueByPos(position);
165 if (value === oldValue) return;
166 this.onChange({
167 value: value
168 });
169 }
170 }, {
171 key: "onKeyboard",
172 value: function onKeyboard(e) {
173 var _this$props2 = this.props,
174 reverse = _this$props2.reverse,
175 vertical = _this$props2.vertical;
176 var valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);
177
178 if (valueMutator) {
179 utils.pauseEvent(e);
180 var state = this.state;
181 var oldValue = state.value;
182 var mutatedValue = valueMutator(oldValue, this.props);
183 var value = this.trimAlignValue(mutatedValue);
184 if (value === oldValue) return;
185 this.onChange({
186 value: value
187 });
188 this.props.onAfterChange(value);
189 this.onEnd();
190 }
191 }
192 }, {
193 key: "getValue",
194 value: function getValue() {
195 return this.state.value;
196 }
197 }, {
198 key: "getLowerBound",
199 value: function getLowerBound() {
200 var minPoint = this.props.startPoint || this.props.min;
201 return this.state.value > minPoint ? minPoint : this.state.value;
202 }
203 }, {
204 key: "getUpperBound",
205 value: function getUpperBound() {
206 if (this.state.value < this.props.startPoint) {
207 return this.props.startPoint;
208 }
209
210 return this.state.value;
211 }
212 }, {
213 key: "trimAlignValue",
214 value: function trimAlignValue(v) {
215 var nextProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
216
217 if (v === null) {
218 return null;
219 }
220
221 var mergedProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, this.props), nextProps);
222 var val = utils.ensureValueInRange(v, mergedProps);
223 return utils.ensureValuePrecision(val, mergedProps);
224 }
225 }, {
226 key: "render",
227 value: function render() {
228 var _this2 = this;
229
230 var _this$props3 = this.props,
231 prefixCls = _this$props3.prefixCls,
232 vertical = _this$props3.vertical,
233 included = _this$props3.included,
234 disabled = _this$props3.disabled,
235 minimumTrackStyle = _this$props3.minimumTrackStyle,
236 trackStyle = _this$props3.trackStyle,
237 handleStyle = _this$props3.handleStyle,
238 tabIndex = _this$props3.tabIndex,
239 ariaLabelForHandle = _this$props3.ariaLabelForHandle,
240 ariaLabelledByForHandle = _this$props3.ariaLabelledByForHandle,
241 ariaValueTextFormatterForHandle = _this$props3.ariaValueTextFormatterForHandle,
242 min = _this$props3.min,
243 max = _this$props3.max,
244 startPoint = _this$props3.startPoint,
245 reverse = _this$props3.reverse,
246 handleGenerator = _this$props3.handle;
247 var _this$state = this.state,
248 value = _this$state.value,
249 dragging = _this$state.dragging;
250 var offset = this.calcOffset(value);
251 var handle = handleGenerator({
252 className: "".concat(prefixCls, "-handle"),
253 prefixCls: prefixCls,
254 vertical: vertical,
255 offset: offset,
256 value: value,
257 dragging: dragging,
258 disabled: disabled,
259 min: min,
260 max: max,
261 reverse: reverse,
262 index: 0,
263 tabIndex: tabIndex,
264 ariaLabel: ariaLabelForHandle,
265 ariaLabelledBy: ariaLabelledByForHandle,
266 ariaValueTextFormatter: ariaValueTextFormatterForHandle,
267 style: handleStyle[0] || handleStyle,
268 ref: function ref(h) {
269 return _this2.saveHandle(0, h);
270 }
271 });
272 var trackOffset = startPoint !== undefined ? this.calcOffset(startPoint) : 0;
273 var mergedTrackStyle = trackStyle[0] || trackStyle;
274
275 var track = /*#__PURE__*/_react.default.createElement(_Track.default, {
276 className: "".concat(prefixCls, "-track"),
277 vertical: vertical,
278 included: included,
279 offset: trackOffset,
280 reverse: reverse,
281 length: offset - trackOffset,
282 style: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, minimumTrackStyle), mergedTrackStyle)
283 });
284
285 return {
286 tracks: track,
287 handles: handle
288 };
289 }
290 }]);
291 return Slider;
292}(_react.default.Component);
293
294var _default = (0, _createSlider.default)(Slider);
295
296exports.default = _default;
\No newline at end of file