UNPKG

react-input-range

Version:

React component for inputting numeric values within a range

165 lines (145 loc) 4.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.getPercentageFromPosition = getPercentageFromPosition; exports.getValueFromPosition = getValueFromPosition; exports.getValueFromProps = getValueFromProps; exports.getPercentageFromValue = getPercentageFromValue; exports.getPercentagesFromValues = getPercentagesFromValues; exports.getPositionFromValue = getPositionFromValue; exports.getPositionsFromValues = getPositionsFromValues; exports.getPositionFromEvent = getPositionFromEvent; exports.getStepValueFromValue = getStepValueFromValue; var _utils = require('../utils'); /** * Convert a point into a percentage value * @ignore * @param {Point} position * @param {ClientRect} clientRect * @return {number} Percentage value */ function getPercentageFromPosition(position, clientRect) { var length = clientRect.width; var sizePerc = position.x / length; return sizePerc || 0; } /** * Convert a point into a model value * @ignore * @param {Point} position * @param {number} minValue * @param {number} maxValue * @param {ClientRect} clientRect * @return {number} */ function getValueFromPosition(position, minValue, maxValue, clientRect) { var sizePerc = getPercentageFromPosition(position, clientRect); var valueDiff = maxValue - minValue; return minValue + valueDiff * sizePerc; } /** * Convert props into a range value * @ignore * @param {Object} props * @param {boolean} isMultiValue * @return {Range} */ function getValueFromProps(props, isMultiValue) { if (isMultiValue) { return _extends({}, props.value); } return { min: props.minValue, max: props.value }; } /** * Convert a model value into a percentage value * @ignore * @param {number} value * @param {number} minValue * @param {number} maxValue * @return {number} */ function getPercentageFromValue(value, minValue, maxValue) { var validValue = (0, _utils.clamp)(value, minValue, maxValue); var valueDiff = maxValue - minValue; var valuePerc = (validValue - minValue) / valueDiff; return valuePerc || 0; } /** * Convert model values into percentage values * @ignore * @param {Range} values * @param {number} minValue * @param {number} maxValue * @return {Range} */ function getPercentagesFromValues(values, minValue, maxValue) { return { min: getPercentageFromValue(values.min, minValue, maxValue), max: getPercentageFromValue(values.max, minValue, maxValue) }; } /** * Convert a value into a point * @ignore * @param {number} value * @param {number} minValue * @param {number} maxValue * @param {ClientRect} clientRect * @return {Point} Position */ function getPositionFromValue(value, minValue, maxValue, clientRect) { var length = clientRect.width; var valuePerc = getPercentageFromValue(value, minValue, maxValue); var positionValue = valuePerc * length; return { x: positionValue, y: 0 }; } /** * Convert a range of values into points * @ignore * @param {Range} values * @param {number} minValue * @param {number} maxValue * @param {ClientRect} clientRect * @return {Range} */ function getPositionsFromValues(values, minValue, maxValue, clientRect) { return { min: getPositionFromValue(values.min, minValue, maxValue, clientRect), max: getPositionFromValue(values.max, minValue, maxValue, clientRect) }; } /** * Convert an event into a point * @ignore * @param {Event} event * @param {ClientRect} clientRect * @return {Point} */ function getPositionFromEvent(event, clientRect) { var length = clientRect.width; var _ref = event.touches ? event.touches[0] : event, clientX = _ref.clientX; return { x: (0, _utils.clamp)(clientX - clientRect.left, 0, length), y: 0 }; } /** * Convert a value into a step value * @ignore * @param {number} value * @param {number} valuePerStep * @return {number} */ function getStepValueFromValue(value, valuePerStep) { return Math.round(value / valuePerStep) * valuePerStep; } //# sourceMappingURL=value-transformer.js.map