index.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  2. import cls from 'classnames';
  3. import * as React from 'react';
  4. import SliderContext from "../context";
  5. import { getIndex } from "../util";
  6. import Track from "./Track";
  7. var Tracks = function Tracks(props) {
  8. var prefixCls = props.prefixCls,
  9. style = props.style,
  10. values = props.values,
  11. startPoint = props.startPoint,
  12. onStartMove = props.onStartMove;
  13. var _React$useContext = React.useContext(SliderContext),
  14. included = _React$useContext.included,
  15. range = _React$useContext.range,
  16. min = _React$useContext.min,
  17. styles = _React$useContext.styles,
  18. classNames = _React$useContext.classNames;
  19. // =========================== List ===========================
  20. var trackList = React.useMemo(function () {
  21. if (!range) {
  22. // null value do not have track
  23. if (values.length === 0) {
  24. return [];
  25. }
  26. var startValue = startPoint !== null && startPoint !== void 0 ? startPoint : min;
  27. var endValue = values[0];
  28. return [{
  29. start: Math.min(startValue, endValue),
  30. end: Math.max(startValue, endValue)
  31. }];
  32. }
  33. // Multiple
  34. var list = [];
  35. for (var i = 0; i < values.length - 1; i += 1) {
  36. list.push({
  37. start: values[i],
  38. end: values[i + 1]
  39. });
  40. }
  41. return list;
  42. }, [values, range, startPoint, min]);
  43. if (!included) {
  44. return null;
  45. }
  46. // ========================== Render ==========================
  47. var tracksNode = trackList !== null && trackList !== void 0 && trackList.length && (classNames.tracks || styles.tracks) ? /*#__PURE__*/React.createElement(Track, {
  48. index: null,
  49. prefixCls: prefixCls,
  50. start: trackList[0].start,
  51. end: trackList[trackList.length - 1].end,
  52. replaceCls: cls(classNames.tracks, "".concat(prefixCls, "-tracks")),
  53. style: styles.tracks
  54. }) : null;
  55. return /*#__PURE__*/React.createElement(React.Fragment, null, tracksNode, trackList.map(function (_ref, index) {
  56. var start = _ref.start,
  57. end = _ref.end;
  58. return /*#__PURE__*/React.createElement(Track, {
  59. index: index,
  60. prefixCls: prefixCls,
  61. style: _objectSpread(_objectSpread({}, getIndex(style, index)), styles.track),
  62. start: start,
  63. end: end,
  64. key: index,
  65. onStartMove: onStartMove
  66. });
  67. }));
  68. };
  69. export default Tracks;