Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

178 строки
4.9 KiB

  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
  6. var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
  7. exports.isEventFromHandle = isEventFromHandle;
  8. exports.isValueOutOfRange = isValueOutOfRange;
  9. exports.isNotTouchEvent = isNotTouchEvent;
  10. exports.getClosestPoint = getClosestPoint;
  11. exports.getPrecision = getPrecision;
  12. exports.getMousePosition = getMousePosition;
  13. exports.getTouchPosition = getTouchPosition;
  14. exports.getHandleCenterPosition = getHandleCenterPosition;
  15. exports.ensureValueInRange = ensureValueInRange;
  16. exports.ensureValuePrecision = ensureValuePrecision;
  17. exports.pauseEvent = pauseEvent;
  18. exports.calculateNextValue = calculateNextValue;
  19. exports.getKeyboardValueMutator = getKeyboardValueMutator;
  20. var _reactDom = require('react-dom');
  21. var _KeyCode = require('rc-util/lib/KeyCode');
  22. var _KeyCode2 = _interopRequireDefault(_KeyCode);
  23. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
  24. function isEventFromHandle(e, handles) {
  25. try {
  26. return Object.keys(handles).some(function (key) {
  27. return e.target === (0, _reactDom.findDOMNode)(handles[key]);
  28. });
  29. } catch (error) {
  30. return false;
  31. }
  32. }
  33. function isValueOutOfRange(value, _ref) {
  34. var min = _ref.min,
  35. max = _ref.max;
  36. return value < min || value > max;
  37. }
  38. function isNotTouchEvent(e) {
  39. return e.touches.length > 1 || e.type.toLowerCase() === 'touchend' && e.touches.length > 0;
  40. }
  41. function getClosestPoint(val, _ref2) {
  42. var marks = _ref2.marks,
  43. step = _ref2.step,
  44. min = _ref2.min,
  45. max = _ref2.max;
  46. var points = Object.keys(marks).map(parseFloat);
  47. if (step !== null) {
  48. var maxSteps = Math.floor((max - min) / step);
  49. var steps = Math.min((val - min) / step, maxSteps);
  50. var closestStep = Math.round(steps) * step + min;
  51. points.push(closestStep);
  52. }
  53. var diffs = points.map(function (point) {
  54. return Math.abs(val - point);
  55. });
  56. return points[diffs.indexOf(Math.min.apply(Math, (0, _toConsumableArray3['default'])(diffs)))];
  57. }
  58. function getPrecision(step) {
  59. var stepString = step.toString();
  60. var precision = 0;
  61. if (stepString.indexOf('.') >= 0) {
  62. precision = stepString.length - stepString.indexOf('.') - 1;
  63. }
  64. return precision;
  65. }
  66. function getMousePosition(vertical, e) {
  67. return vertical ? e.clientY : e.pageX;
  68. }
  69. function getTouchPosition(vertical, e) {
  70. return vertical ? e.touches[0].clientY : e.touches[0].pageX;
  71. }
  72. function getHandleCenterPosition(vertical, handle) {
  73. var coords = handle.getBoundingClientRect();
  74. return vertical ? coords.top + coords.height * 0.5 : window.pageXOffset + coords.left + coords.width * 0.5;
  75. }
  76. function ensureValueInRange(val, _ref3) {
  77. var max = _ref3.max,
  78. min = _ref3.min;
  79. if (val <= min) {
  80. return min;
  81. }
  82. if (val >= max) {
  83. return max;
  84. }
  85. return val;
  86. }
  87. function ensureValuePrecision(val, props) {
  88. var step = props.step;
  89. var closestPoint = isFinite(getClosestPoint(val, props)) ? getClosestPoint(val, props) : 0; // eslint-disable-line
  90. return step === null ? closestPoint : parseFloat(closestPoint.toFixed(getPrecision(step)));
  91. }
  92. function pauseEvent(e) {
  93. e.stopPropagation();
  94. e.preventDefault();
  95. }
  96. function calculateNextValue(func, value, props) {
  97. var operations = {
  98. increase: function increase(a, b) {
  99. return a + b;
  100. },
  101. decrease: function decrease(a, b) {
  102. return a - b;
  103. }
  104. };
  105. var indexToGet = operations[func](Object.keys(props.marks).indexOf(JSON.stringify(value)), 1);
  106. var keyToGet = Object.keys(props.marks)[indexToGet];
  107. if (props.step) {
  108. return operations[func](value, props.step);
  109. } else if (!!Object.keys(props.marks).length && !!props.marks[keyToGet]) {
  110. return props.marks[keyToGet];
  111. }
  112. return value;
  113. }
  114. function getKeyboardValueMutator(e, vertical, reverse) {
  115. var increase = 'increase';
  116. var decrease = 'decrease';
  117. var method = increase;
  118. switch (e.keyCode) {
  119. case _KeyCode2['default'].UP:
  120. method = vertical && reverse ? decrease : increase;break;
  121. case _KeyCode2['default'].RIGHT:
  122. method = !vertical && reverse ? decrease : increase;break;
  123. case _KeyCode2['default'].DOWN:
  124. method = vertical && reverse ? increase : decrease;break;
  125. case _KeyCode2['default'].LEFT:
  126. method = !vertical && reverse ? increase : decrease;break;
  127. case _KeyCode2['default'].END:
  128. return function (value, props) {
  129. return props.max;
  130. };
  131. case _KeyCode2['default'].HOME:
  132. return function (value, props) {
  133. return props.min;
  134. };
  135. case _KeyCode2['default'].PAGE_UP:
  136. return function (value, props) {
  137. return value + props.step * 2;
  138. };
  139. case _KeyCode2['default'].PAGE_DOWN:
  140. return function (value, props) {
  141. return value - props.step * 2;
  142. };
  143. default:
  144. return undefined;
  145. }
  146. return function (value, props) {
  147. return calculateNextValue(method, value, props);
  148. };
  149. }