'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); exports.isDev = isDev; exports.isEventFromHandle = isEventFromHandle; exports.isValueOutOfRange = isValueOutOfRange; exports.isNotTouchEvent = isNotTouchEvent; exports.getClosestPoint = getClosestPoint; exports.getPrecision = getPrecision; exports.getMousePosition = getMousePosition; exports.getTouchPosition = getTouchPosition; exports.getHandleCenterPosition = getHandleCenterPosition; exports.ensureValueInRange = ensureValueInRange; exports.ensureValuePrecision = ensureValuePrecision; exports.pauseEvent = pauseEvent; exports.calculateNextValue = calculateNextValue; exports.getKeyboardValueMutator = getKeyboardValueMutator; var _KeyCode = require('../../_util/KeyCode'); var _KeyCode2 = _interopRequireDefault(_KeyCode); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function isDev() { return process.env.NODE_ENV !== 'production'; } function isEventFromHandle(e, handles) { try { return Object.keys(handles).some(function (key) { return e.target === handles[key].$el || e.target === handles[key]; }); } catch (error) { return false; } } function isValueOutOfRange(value, _ref) { var min = _ref.min, max = _ref.max; return value < min || value > max; } function isNotTouchEvent(e) { return e.touches.length > 1 || e.type.toLowerCase() === 'touchend' && e.touches.length > 0; } function getClosestPoint(val, _ref2) { var marks = _ref2.marks, step = _ref2.step, min = _ref2.min; var points = Object.keys(marks).map(parseFloat); if (step !== null) { var closestStep = Math.round((val - min) / step) * step + min; points.push(closestStep); } var diffs = points.map(function (point) { return Math.abs(val - point); }); return points[diffs.indexOf(Math.min.apply(Math, (0, _toConsumableArray3['default'])(diffs)))]; } function getPrecision(step) { var stepString = step.toString(); var precision = 0; if (stepString.indexOf('.') >= 0) { precision = stepString.length - stepString.indexOf('.') - 1; } return precision; } function getMousePosition(vertical, e) { var zoom = 1; if (window.visualViewport) { zoom = +(window.visualViewport.width / document.body.getBoundingClientRect().width).toFixed(2); } return (vertical ? e.clientY : e.pageX) / zoom; } function getTouchPosition(vertical, e) { var zoom = 1; if (window.visualViewport) { zoom = +(window.visualViewport.width / document.body.getBoundingClientRect().width).toFixed(2); } return (vertical ? e.touches[0].clientY : e.touches[0].pageX) / zoom; } function getHandleCenterPosition(vertical, handle) { var coords = handle.getBoundingClientRect(); return vertical ? coords.top + coords.height * 0.5 : window.pageXOffset + coords.left + coords.width * 0.5; } function ensureValueInRange(val, _ref3) { var max = _ref3.max, min = _ref3.min; if (val <= min) { return min; } if (val >= max) { return max; } return val; } function ensureValuePrecision(val, props) { var step = props.step; var closestPoint = isFinite(getClosestPoint(val, props)) ? getClosestPoint(val, props) : 0; // eslint-disable-line return step === null ? closestPoint : parseFloat(closestPoint.toFixed(getPrecision(step))); } function pauseEvent(e) { e.stopPropagation(); e.preventDefault(); } function calculateNextValue(func, value, props) { var operations = { increase: function increase(a, b) { return a + b; }, decrease: function decrease(a, b) { return a - b; } }; var indexToGet = operations[func](Object.keys(props.marks).indexOf(JSON.stringify(value)), 1); var keyToGet = Object.keys(props.marks)[indexToGet]; if (props.step) { return operations[func](value, props.step); } else if (!!Object.keys(props.marks).length && !!props.marks[keyToGet]) { return props.marks[keyToGet]; } return value; } function getKeyboardValueMutator(e) { switch (e.keyCode) { case _KeyCode2['default'].UP: case _KeyCode2['default'].RIGHT: return function (value, props) { return calculateNextValue('increase', value, props); }; case _KeyCode2['default'].DOWN: case _KeyCode2['default'].LEFT: return function (value, props) { return calculateNextValue('decrease', value, props); }; case _KeyCode2['default'].END: return function (value, props) { return props.max; }; case _KeyCode2['default'].HOME: return function (value, props) { return props.min; }; case _KeyCode2['default'].PAGE_UP: return function (value, props) { return value + props.step * 2; }; case _KeyCode2['default'].PAGE_DOWN: return function (value, props) { return value - props.step * 2; }; default: return undefined; } }