{"version":3,"sources":["../src/DateUtils.js"],"names":["clone","addMonths","isSameDay","isPastDay","isFutureDay","isDayBetween","addDayToRange","isDayInRange","d","Date","getTime","n","newDate","setMonth","getMonth","d1","d2","getDate","getFullYear","today","setHours","tomorrow","date","date1","date2","day","range","from","to"],"mappings":"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","file":"DateUtils.js","sourcesContent":["\n/**\n * Clone a date object.\n *\n * @param {Date} d The date to clone\n * @return {Date} The cloned date\n */\nexport function clone(d) {\n return new Date(d.getTime());\n}\n\n/**\n * Return `d` as a new date with `n` months added.\n * @param {[type]} d\n * @param {[type]} n\n */\nexport function addMonths(d, n) {\n const newDate = clone(d);\n newDate.setMonth(d.getMonth() + n);\n return newDate;\n}\n\n/**\n * Return `true` if two dates are the same day, ignoring the time.\n *\n * @param {Date} d1\n * @param {Date} d2\n * @return {Boolean}\n */\nexport function isSameDay(d1, d2) {\n if (!d1 || !d2) {\n return false;\n }\n return d1.getDate() === d2.getDate() &&\n d1.getMonth() === d2.getMonth() &&\n d1.getFullYear() === d2.getFullYear();\n}\n\n/**\n * Return `true` if a day is in the past, e.g. yesterday or any day\n * before yesterday.\n *\n * @param {Date} d\n * @return {Boolean}\n */\nexport function isPastDay(d) {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return d < today;\n}\n\n/**\n * Return `true` if a day is in the future, e.g. tomorrow or any day\n * after tomorrow.\n *\n * @param {Date} d\n * @return {Boolean}\n */\nexport function isFutureDay(d) {\n const tomorrow = new Date(new Date().getTime() + (24 * 60 * 60 * 1000));\n tomorrow.setHours(0, 0, 0, 0);\n return d >= tomorrow;\n}\n\n/**\n * Return `true` if day `d` is between days `d1` and `d2`,\n * without including them.\n *\n * @param {Date} d\n * @param {Date} d1\n * @param {Date} d2\n * @return {Boolean}\n */\nexport function isDayBetween(d, d1, d2) {\n const date = clone(d);\n const date1 = clone(d1);\n const date2 = clone(d2);\n\n date.setHours(0, 0, 0, 0);\n date1.setHours(0, 0, 0, 0);\n date2.setHours(0, 0, 0, 0);\n return (date1 < date && date < date2) || (date2 < date && date < date1);\n}\n\n/**\n * Add a day to a range and return a new range. A range is an object with\n * `from` and `to` days.\n *\n * @param {Date} day\n * @param {Object} range\n * @return {Object} Returns a new range object\n */\nexport function addDayToRange(day, range = { from: null, to: null }) {\n let { from, to } = range;\n if (!from) {\n from = day;\n } else if (from && to && isSameDay(from, to) && isSameDay(day, from)) {\n from = null;\n to = null;\n } else if (to && day < from) {\n from = day;\n } else if (to && isSameDay(day, to)) {\n from = day;\n to = day;\n } else {\n to = day;\n if (to < from) {\n to = from;\n from = day;\n }\n }\n\n return { from, to };\n}\n\n/**\n * Return `true` if a day is included in a range of days.\n *\n * @param {Date} day\n * @param {Object} range\n * @return {Boolean}\n */\nexport function isDayInRange(day, range) {\n const { from, to } = range;\n return (from && isSameDay(day, from)) ||\n (to && isSameDay(day, to)) ||\n (from && to && isDayBetween(day, from, to));\n}\n\nexport default {\n addDayToRange,\n addMonths,\n clone,\n isSameDay,\n isDayInRange,\n isDayBetween,\n isPastDay,\n isFutureDay,\n};\n"]}