util.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
  2. export function findValidateTime(date, getHourUnits, getMinuteUnits, getSecondUnits, getMillisecondUnits, generateConfig) {
  3. var nextDate = date;
  4. function alignValidate(getUnitValue, setUnitValue, units) {
  5. var nextValue = generateConfig[getUnitValue](nextDate);
  6. var nextUnit = units.find(function (unit) {
  7. return unit.value === nextValue;
  8. });
  9. if (!nextUnit || nextUnit.disabled) {
  10. // Find most closest unit
  11. var validateUnits = units.filter(function (unit) {
  12. return !unit.disabled;
  13. });
  14. var reverseEnabledUnits = _toConsumableArray(validateUnits).reverse();
  15. var validateUnit = reverseEnabledUnits.find(function (unit) {
  16. return unit.value <= nextValue;
  17. }) || validateUnits[0];
  18. if (validateUnit) {
  19. nextValue = validateUnit.value;
  20. nextDate = generateConfig[setUnitValue](nextDate, nextValue);
  21. }
  22. }
  23. return nextValue;
  24. }
  25. // Find validate hour
  26. var nextHour = alignValidate('getHour', 'setHour', getHourUnits());
  27. // Find validate minute
  28. var nextMinute = alignValidate('getMinute', 'setMinute', getMinuteUnits(nextHour));
  29. // Find validate second
  30. var nextSecond = alignValidate('getSecond', 'setSecond', getSecondUnits(nextHour, nextMinute));
  31. // Find validate millisecond
  32. alignValidate('getMillisecond', 'setMillisecond', getMillisecondUnits(nextHour, nextMinute, nextSecond));
  33. return nextDate;
  34. }