import type { Language } from 'element-plus/es/locale' import enLocale from 'element-plus/es/locale/lang/en' export const LOCALE_MONDAY = 'en-ivy-mon' export const LOCALE_SUNDAY = 'en-ivy-sun' type DayjsFactory = typeof import('dayjs') export const normalizeWeekStart = (weekStart?: number): number => { // Sunday is 0 in IvyForms but dayjs/Element Plus expect 7 (EP uses `weekStart || 7`). if (weekStart === 0 || weekStart === 7) return 7 return weekStart ?? 1 } export const getWeekLocaleName = (weekStart?: number): string => { return normalizeWeekStart(weekStart) === 7 ? LOCALE_SUNDAY : LOCALE_MONDAY } const ensureWeekLocaleRegistered = (dayjs: DayjsFactory, weekStart?: number): string => { const name = getWeekLocaleName(weekStart) const weekStartValue = normalizeWeekStart(weekStart) === 7 ? 7 : 1 const baseLocale = dayjs.Ls.en ?? {} if (!dayjs.Ls[name] || (dayjs.Ls[name] as { weekStart?: number }).weekStart !== weekStartValue) { dayjs.locale(name, { ...baseLocale, name, weekStart: weekStartValue }, true) } return name } export const createWeekLocaleHelpers = (dayjs: DayjsFactory) => { const getWeekLocale = (weekStart?: number): Language => { const name = ensureWeekLocaleRegistered(dayjs, weekStart) return { ...enLocale, name } } return { getWeekLocale, getWeekLocaleName } }