react-keyboard-time-input
Version:
A keyboard friendly react component for capturing time
58 lines (40 loc) • 2.02 kB
JavaScript
;
exports.__esModule = true;
var _zeroPad = require('./zero-pad');
var _zeroPad2 = _interopRequireDefault(_zeroPad);
var _getGroups = require('./get-groups');
var _getGroups2 = _interopRequireDefault(_getGroups);
var _getBase = require('./get-base');
var _getBase2 = _interopRequireDefault(_getBase);
var _stringify = require('./stringify');
var _stringify2 = _interopRequireDefault(_stringify);
var _toggle24Hour = require('./toggle-24-hour');
var _toggle24Hour2 = _interopRequireDefault(_toggle24Hour);
var _isTwelveHourTime = require('./is-twelve-hour-time');
var _isTwelveHourTime2 = _interopRequireDefault(_isTwelveHourTime);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var add = function add(groups, groupId, amount, twelveHourTime) {
var base = (0, _getBase2.default)(groupId, twelveHourTime);
if (!groupId && groups[groupId] === '12' && twelveHourTime) groups[groupId] = '00';
var val = Number(groups[groupId]) + amount;
groups = replace(groups, groupId, (val + base) % base);
if (groupId && val >= base) return add(groups, groupId - 1, 1, twelveHourTime);
if (groupId && val < 0) return add(groups, groupId - 1, -1, twelveHourTime);
if (!groupId && twelveHourTime) {
if (val >= base || val < 0) (0, _toggle24Hour2.default)(groups);
if (groups[0] === '00') groups[0] = '12';
}
return groups;
};
var replace = function replace(groups, groupId, amount) {
var digits = groups[groupId].length;
groups[groupId] = (0, _zeroPad2.default)(String(amount), digits);
return groups;
};
// export default function adder(str, groupId, amount) {
exports.default = function (str, groupId, amount) {
var groups = (0, _getGroups2.default)(str);
var twelveHourTime = (0, _isTwelveHourTime2.default)(groups);
if (twelveHourTime && groupId === groups.length - 1) return (0, _stringify2.default)((0, _toggle24Hour2.default)(groups));
return (0, _stringify2.default)(add(groups, groupId, amount, twelveHourTime));
};