![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/clinic.corals.io/node_modules/flatpickr/dist/esm/utils/ |
import { tokenRegex, revFormat, formats, } from "./formatting"; import { defaults } from "../types/options"; import { english } from "../l10n/default"; export const createDateFormatter = ({ config = defaults, l10n = english, isMobile = false, }) => (dateObj, frmt, overrideLocale) => { const locale = overrideLocale || l10n; if (config.formatDate !== undefined && !isMobile) { return config.formatDate(dateObj, frmt, locale); } return frmt .split("") .map((c, i, arr) => formats[c] && arr[i - 1] !== "\\" ? formats[c](dateObj, locale, config) : c !== "\\" ? c : "") .join(""); }; export const createDateParser = ({ config = defaults, l10n = english }) => (date, givenFormat, timeless, customLocale) => { if (date !== 0 && !date) return undefined; const locale = customLocale || l10n; let parsedDate; const dateOrig = date; if (date instanceof Date) parsedDate = new Date(date.getTime()); else if (typeof date !== "string" && date.toFixed !== undefined) parsedDate = new Date(date); else if (typeof date === "string") { const format = givenFormat || (config || defaults).dateFormat; const datestr = String(date).trim(); if (datestr === "today") { parsedDate = new Date(); timeless = true; } else if (/Z$/.test(datestr) || /GMT$/.test(datestr)) parsedDate = new Date(date); else if (config && config.parseDate) parsedDate = config.parseDate(date, format); else { parsedDate = !config || !config.noCalendar ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0) : new Date(new Date().setHours(0, 0, 0, 0)); let matched, ops = []; for (let i = 0, matchIndex = 0, regexStr = ""; i < format.length; i++) { const token = format[i]; const isBackSlash = token === "\\"; const escaped = format[i - 1] === "\\" || isBackSlash; if (tokenRegex[token] && !escaped) { regexStr += tokenRegex[token]; const match = new RegExp(regexStr).exec(date); if (match && (matched = true)) { ops[token !== "Y" ? "push" : "unshift"]({ fn: revFormat[token], val: match[++matchIndex], }); } } else if (!isBackSlash) regexStr += "."; ops.forEach(({ fn, val }) => (parsedDate = fn(parsedDate, val, locale) || parsedDate)); } parsedDate = matched ? parsedDate : undefined; } } if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) { config.errorHandler(new Error(`Invalid date provided: ${dateOrig}`)); return undefined; } if (timeless === true) parsedDate.setHours(0, 0, 0, 0); return parsedDate; }; export function compareDates(date1, date2, timeless = true) { if (timeless !== false) { return (new Date(date1.getTime()).setHours(0, 0, 0, 0) - new Date(date2.getTime()).setHours(0, 0, 0, 0)); } return date1.getTime() - date2.getTime(); } export function compareTimes(date1, date2) { return (3600 * (date1.getHours() - date2.getHours()) + 60 * (date1.getMinutes() - date2.getMinutes()) + date1.getSeconds() - date2.getSeconds()); } export const isBetween = (ts, ts1, ts2) => { return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2); }; export const duration = { DAY: 86400000, }; export function getDefaultHours(config) { let hours = config.defaultHour; let minutes = config.defaultMinute; let seconds = config.defaultSeconds; if (config.minDate !== undefined) { const minHour = config.minDate.getHours(); const minMinutes = config.minDate.getMinutes(); const minSeconds = config.minDate.getSeconds(); if (hours < minHour) { hours = minHour; } if (hours === minHour && minutes < minMinutes) { minutes = minMinutes; } if (hours === minHour && minutes === minMinutes && seconds < minSeconds) seconds = config.minDate.getSeconds(); } if (config.maxDate !== undefined) { const maxHr = config.maxDate.getHours(); const maxMinutes = config.maxDate.getMinutes(); hours = Math.min(hours, maxHr); if (hours === maxHr) minutes = Math.min(maxMinutes, minutes); if (hours === maxHr && minutes === maxMinutes) seconds = config.maxDate.getSeconds(); } return { hours, minutes, seconds }; }