📝 Commit Details:
This commit is contained in:
70
backend/node_modules/date-fns/areIntervalsOverlapping.cjs
generated
vendored
Normal file
70
backend/node_modules/date-fns/areIntervalsOverlapping.cjs
generated
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
"use strict";
|
||||
exports.areIntervalsOverlapping = areIntervalsOverlapping;
|
||||
var _index = require("./toDate.cjs");
|
||||
|
||||
/**
|
||||
* The {@link areIntervalsOverlapping} function options.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @name areIntervalsOverlapping
|
||||
* @category Interval Helpers
|
||||
* @summary Is the given time interval overlapping with another time interval?
|
||||
*
|
||||
* @description
|
||||
* Is the given time interval overlapping with another time interval? Adjacent intervals do not count as overlapping unless `inclusive` is set to `true`.
|
||||
*
|
||||
* @param intervalLeft - The first interval to compare.
|
||||
* @param intervalRight - The second interval to compare.
|
||||
* @param options - The object with options
|
||||
*
|
||||
* @returns Whether the time intervals are overlapping
|
||||
*
|
||||
* @example
|
||||
* // For overlapping time intervals:
|
||||
* areIntervalsOverlapping(
|
||||
* { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
|
||||
* { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }
|
||||
* )
|
||||
* //=> true
|
||||
*
|
||||
* @example
|
||||
* // For non-overlapping time intervals:
|
||||
* areIntervalsOverlapping(
|
||||
* { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
|
||||
* { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }
|
||||
* )
|
||||
* //=> false
|
||||
*
|
||||
* @example
|
||||
* // For adjacent time intervals:
|
||||
* areIntervalsOverlapping(
|
||||
* { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
|
||||
* { start: new Date(2014, 0, 20), end: new Date(2014, 0, 30) }
|
||||
* )
|
||||
* //=> false
|
||||
*
|
||||
* @example
|
||||
* // Using the inclusive option:
|
||||
* areIntervalsOverlapping(
|
||||
* { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
|
||||
* { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) },
|
||||
* { inclusive: true }
|
||||
* )
|
||||
* //=> true
|
||||
*/
|
||||
function areIntervalsOverlapping(intervalLeft, intervalRight, options) {
|
||||
const [leftStartTime, leftEndTime] = [
|
||||
+(0, _index.toDate)(intervalLeft.start, options?.in),
|
||||
+(0, _index.toDate)(intervalLeft.end, options?.in),
|
||||
].sort((a, b) => a - b);
|
||||
const [rightStartTime, rightEndTime] = [
|
||||
+(0, _index.toDate)(intervalRight.start, options?.in),
|
||||
+(0, _index.toDate)(intervalRight.end, options?.in),
|
||||
].sort((a, b) => a - b);
|
||||
|
||||
if (options?.inclusive)
|
||||
return leftStartTime <= rightEndTime && rightStartTime <= leftEndTime;
|
||||
|
||||
return leftStartTime < rightEndTime && rightStartTime < leftEndTime;
|
||||
}
|
Reference in New Issue
Block a user