diff options
Diffstat (limited to 'node_modules/date-fns/closestTo/index.js')
| -rw-r--r-- | node_modules/date-fns/closestTo/index.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/node_modules/date-fns/closestTo/index.js b/node_modules/date-fns/closestTo/index.js new file mode 100644 index 0000000..e3a3cca --- /dev/null +++ b/node_modules/date-fns/closestTo/index.js @@ -0,0 +1,67 @@ +"use strict"; + +var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = closestTo; +var _index = _interopRequireDefault(require("../toDate/index.js")); +var _index2 = _interopRequireDefault(require("../_lib/requiredArgs/index.js")); +/** + * @name closestTo + * @category Common Helpers + * @summary Return a date from the array closest to the given date. + * + * @description + * Return a date from the array closest to the given date. + * + * @param {Date | Number} dateToCompare - the date to compare with + * @param {Array<Date> | Array<number>} datesArray - the array to search + * @returns {Date | undefined} the date from the array closest to the given date or undefined if no valid value is given + * @throws {TypeError} 2 arguments required + * + * @example + * // Which date is closer to 6 September 2015: 1 January 2000 or 1 January 2030? + * const dateToCompare = new Date(2015, 8, 6) + * const result = closestTo(dateToCompare, [ + * new Date(2000, 0, 1), + * new Date(2030, 0, 1) + * ]) + * //=> Tue Jan 01 2030 00:00:00 + */ +function closestTo(dirtyDateToCompare, dirtyDatesArray) { + (0, _index2.default)(2, arguments); + var dateToCompare = (0, _index.default)(dirtyDateToCompare); + if (isNaN(Number(dateToCompare))) return new Date(NaN); + var timeToCompare = dateToCompare.getTime(); + var datesArray; + // `dirtyDatesArray` is undefined or null + if (dirtyDatesArray == null) { + datesArray = []; + + // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method + } else if (typeof dirtyDatesArray.forEach === 'function') { + datesArray = dirtyDatesArray; + + // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array + } else { + datesArray = Array.prototype.slice.call(dirtyDatesArray); + } + var result; + var minDistance; + datesArray.forEach(function (dirtyDate) { + var currentDate = (0, _index.default)(dirtyDate); + if (isNaN(Number(currentDate))) { + result = new Date(NaN); + minDistance = NaN; + return; + } + var distance = Math.abs(timeToCompare - currentDate.getTime()); + if (result == null || distance < Number(minDistance)) { + result = currentDate; + minDistance = distance; + } + }); + return result; +} +module.exports = exports.default;
\ No newline at end of file |
