UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

56 lines (55 loc) 1.97 kB
/** * DevExtreme (cjs/__internal/scheduler/utils/skipped_days.js) * Version: 26.1.3 * Build date: Wed Jun 10 2026 * * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isValidWeekday = exports.isDateSkipped = exports.getVisibleDaysOfWeek = exports.getSkippedDaysCount = exports.getFirstVisibleDate = void 0; const isValidWeekday = value => "number" === typeof value && Number.isInteger(value) && value >= 0 && value <= 6; exports.isValidWeekday = isValidWeekday; const isDateSkipped = (date, skippedDays) => skippedDays.includes(date.getDay()); exports.isDateSkipped = isDateSkipped; const getVisibleDaysOfWeek = (firstDayOfWeek, skippedDays) => { const result = []; for (let count = 0; count < 7; count += 1) { const raw = firstDayOfWeek + count; const dayOfWeek = (raw % 7 + 7) % 7; if (!skippedDays.includes(dayOfWeek)) { result.push(dayOfWeek) } } return result }; exports.getVisibleDaysOfWeek = getVisibleDaysOfWeek; const getFirstVisibleDate = (start, skippedDays, nextDate) => { if (skippedDays.length >= 7) { return new Date(start) } let date = new Date(start); while (isDateSkipped(date, skippedDays)) { date = nextDate(date) } return date }; exports.getFirstVisibleDate = getFirstVisibleDate; const getSkippedDaysCount = (start, dayCount, skippedDays) => { if (dayCount <= 0 || !skippedDays || 0 === skippedDays.length) { return 0 } const date = new Date(start); let skippedCount = 0; for (let i = 0; i < dayCount; i += 1) { if (isDateSkipped(date, skippedDays)) { skippedCount += 1 } date.setDate(date.getDate() + 1) } return skippedCount }; exports.getSkippedDaysCount = getSkippedDaysCount;