areIntervalsOverlapping.d.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import type { ContextOptions, Interval } from "./types.js";
  2. /**
  3. * The {@link areIntervalsOverlapping} function options.
  4. */
  5. export interface AreIntervalsOverlappingOptions extends ContextOptions<Date> {
  6. /** Whether the comparison is inclusive or not */
  7. inclusive?: boolean;
  8. }
  9. /**
  10. * @name areIntervalsOverlapping
  11. * @category Interval Helpers
  12. * @summary Is the given time interval overlapping with another time interval?
  13. *
  14. * @description
  15. * Is the given time interval overlapping with another time interval? Adjacent intervals do not count as overlapping unless `inclusive` is set to `true`.
  16. *
  17. * @param intervalLeft - The first interval to compare.
  18. * @param intervalRight - The second interval to compare.
  19. * @param options - The object with options
  20. *
  21. * @returns Whether the time intervals are overlapping
  22. *
  23. * @example
  24. * // For overlapping time intervals:
  25. * areIntervalsOverlapping(
  26. * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
  27. * { start: new Date(2014, 0, 17), end: new Date(2014, 0, 21) }
  28. * )
  29. * //=> true
  30. *
  31. * @example
  32. * // For non-overlapping time intervals:
  33. * areIntervalsOverlapping(
  34. * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
  35. * { start: new Date(2014, 0, 21), end: new Date(2014, 0, 22) }
  36. * )
  37. * //=> false
  38. *
  39. * @example
  40. * // For adjacent time intervals:
  41. * areIntervalsOverlapping(
  42. * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
  43. * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 30) }
  44. * )
  45. * //=> false
  46. *
  47. * @example
  48. * // Using the inclusive option:
  49. * areIntervalsOverlapping(
  50. * { start: new Date(2014, 0, 10), end: new Date(2014, 0, 20) },
  51. * { start: new Date(2014, 0, 20), end: new Date(2014, 0, 24) },
  52. * { inclusive: true }
  53. * )
  54. * //=> true
  55. */
  56. export declare function areIntervalsOverlapping(
  57. intervalLeft: Interval,
  58. intervalRight: Interval,
  59. options?: AreIntervalsOverlappingOptions,
  60. ): boolean;