util.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.findValidateTime = findValidateTime;
  7. var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
  8. function findValidateTime(date, getHourUnits, getMinuteUnits, getSecondUnits, getMillisecondUnits, generateConfig) {
  9. var nextDate = date;
  10. function alignValidate(getUnitValue, setUnitValue, units) {
  11. var nextValue = generateConfig[getUnitValue](nextDate);
  12. var nextUnit = units.find(function (unit) {
  13. return unit.value === nextValue;
  14. });
  15. if (!nextUnit || nextUnit.disabled) {
  16. // Find most closest unit
  17. var validateUnits = units.filter(function (unit) {
  18. return !unit.disabled;
  19. });
  20. var reverseEnabledUnits = (0, _toConsumableArray2.default)(validateUnits).reverse();
  21. var validateUnit = reverseEnabledUnits.find(function (unit) {
  22. return unit.value <= nextValue;
  23. }) || validateUnits[0];
  24. if (validateUnit) {
  25. nextValue = validateUnit.value;
  26. nextDate = generateConfig[setUnitValue](nextDate, nextValue);
  27. }
  28. }
  29. return nextValue;
  30. }
  31. // Find validate hour
  32. var nextHour = alignValidate('getHour', 'setHour', getHourUnits());
  33. // Find validate minute
  34. var nextMinute = alignValidate('getMinute', 'setMinute', getMinuteUnits(nextHour));
  35. // Find validate second
  36. var nextSecond = alignValidate('getSecond', 'setSecond', getSecondUnits(nextHour, nextMinute));
  37. // Find validate millisecond
  38. alignValidate('getMillisecond', 'setMillisecond', getMillisecondUnits(nextHour, nextMinute, nextSecond));
  39. return nextDate;
  40. }