{"version":3,"file":"utils.mjs","names":[],"sources":["../../../../../../packages/components/time-picker/src/utils.ts"],"sourcesContent":["import dayjs from 'dayjs'\nimport { isArray, isDate, isEmpty } from '@element-plus/utils'\n\nimport type { Dayjs } from 'dayjs'\nimport type { DateOrDates, DayOrDays } from './common/props'\n\nexport type TimeList = [number | undefined, number, undefined | number]\n\nexport const buildTimeList = (value: number, bound: number): TimeList => {\n  return [\n    value > 0 ? value - 1 : undefined,\n    value,\n    value < bound ? value + 1 : undefined,\n  ]\n}\n\nexport const rangeArr = (n: number) =>\n  Array.from(Array.from({ length: n }).keys())\n\nexport const extractDateFormat = (format: string) => {\n  return format\n    .replace(/\\W?m{1,2}|\\W?ZZ/g, '')\n    .replace(/\\W?h{1,2}|\\W?s{1,3}|\\W?a/gi, '')\n    .trim()\n}\n\nexport const extractTimeFormat = (format: string) => {\n  return format\n    .replace(/\\W?D{1,2}|\\W?Do|\\W?d{1,4}|\\W?M{1,4}|\\W?Y{2,4}/g, '')\n    .trim()\n}\n\nexport const dateEquals = function (a: Date | unknown, b: Date | unknown) {\n  const aIsDate = isDate(a)\n  const bIsDate = isDate(b)\n  if (aIsDate && bIsDate) {\n    return a.getTime() === b.getTime()\n  }\n  if (!aIsDate && !bIsDate) {\n    return a === b\n  }\n  return false\n}\n\nexport const valueEquals = function (\n  a: Array<Date> | unknown,\n  b: Array<Date> | unknown\n) {\n  const aIsArray = isArray(a)\n  const bIsArray = isArray(b)\n  if (aIsArray && bIsArray) {\n    if (a.length !== b.length) {\n      return false\n    }\n    return a.every((item, index) => dateEquals(item, b[index]))\n  }\n  if (!aIsArray && !bIsArray) {\n    return dateEquals(a, b)\n  }\n  return false\n}\n\nexport const parseDate = function (\n  date: string | number | Date,\n  format: string | undefined,\n  lang: string\n) {\n  const day =\n    isEmpty(format) || format === 'x'\n      ? dayjs(date).locale(lang)\n      : dayjs(date, format).locale(lang)\n  return day.isValid() ? day : undefined\n}\n\nexport const formatter = function (\n  date: string | number | Date | Dayjs,\n  format: string | undefined,\n  lang: string\n) {\n  if (isEmpty(format)) return date\n  if (format === 'x') return +date\n  return dayjs(date).locale(lang).format(format)\n}\n\nexport const makeList = (total: number, method?: () => number[]) => {\n  const arr: boolean[] = []\n  const disabledArr = method?.()\n  for (let i = 0; i < total; i++) {\n    arr.push(disabledArr?.includes(i) ?? false)\n  }\n  return arr\n}\n\nexport const dayOrDaysToDate = (dayOrDays: DayOrDays): DateOrDates => {\n  return isArray(dayOrDays)\n    ? (dayOrDays.map((d) => d.toDate()) as [Date, Date])\n    : dayOrDays.toDate()\n}\n"],"mappings":";;;;AAQA,MAAa,iBAAiB,OAAe,UAA4B;AACvE,QAAO;EACL,QAAQ,IAAI,QAAQ,IAAI;EACxB;EACA,QAAQ,QAAQ,QAAQ,IAAI;EAC7B;;AAGH,MAAa,YAAY,MACvB,MAAM,KAAK,MAAM,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;AAE9C,MAAa,qBAAqB,WAAmB;AACnD,QAAO,OACJ,QAAQ,oBAAoB,GAAG,CAC/B,QAAQ,8BAA8B,GAAG,CACzC,MAAM;;AAGX,MAAa,qBAAqB,WAAmB;AACnD,QAAO,OACJ,QAAQ,kDAAkD,GAAG,CAC7D,MAAM;;AAGX,MAAa,aAAa,SAAU,GAAmB,GAAmB;CACxE,MAAM,UAAU,OAAO,EAAE;CACzB,MAAM,UAAU,OAAO,EAAE;AACzB,KAAI,WAAW,QACb,QAAO,EAAE,SAAS,KAAK,EAAE,SAAS;AAEpC,KAAI,CAAC,WAAW,CAAC,QACf,QAAO,MAAM;AAEf,QAAO;;AAGT,MAAa,cAAc,SACzB,GACA,GACA;CACA,MAAM,WAAW,QAAQ,EAAE;CAC3B,MAAM,WAAW,QAAQ,EAAE;AAC3B,KAAI,YAAY,UAAU;AACxB,MAAI,EAAE,WAAW,EAAE,OACjB,QAAO;AAET,SAAO,EAAE,OAAO,MAAM,UAAU,WAAW,MAAM,EAAE,OAAO,CAAC;;AAE7D,KAAI,CAAC,YAAY,CAAC,SAChB,QAAO,WAAW,GAAG,EAAE;AAEzB,QAAO;;AAGT,MAAa,YAAY,SACvB,MACA,QACA,MACA;CACA,MAAM,MACJ,QAAQ,OAAO,IAAI,WAAW,MAC1B,MAAM,KAAK,CAAC,OAAO,KAAK,GACxB,MAAM,MAAM,OAAO,CAAC,OAAO,KAAK;AACtC,QAAO,IAAI,SAAS,GAAG,MAAM;;AAG/B,MAAa,YAAY,SACvB,MACA,QACA,MACA;AACA,KAAI,QAAQ,OAAO,CAAE,QAAO;AAC5B,KAAI,WAAW,IAAK,QAAO,CAAC;AAC5B,QAAO,MAAM,KAAK,CAAC,OAAO,KAAK,CAAC,OAAO,OAAO;;AAGhD,MAAa,YAAY,OAAe,WAA4B;CAClE,MAAM,MAAiB,EAAE;CACzB,MAAM,cAAc,UAAU;AAC9B,MAAK,IAAI,IAAI,GAAG,IAAI,OAAO,IACzB,KAAI,KAAK,aAAa,SAAS,EAAE,IAAI,MAAM;AAE7C,QAAO;;AAGT,MAAa,mBAAmB,cAAsC;AACpE,QAAO,QAAQ,UAAU,GACpB,UAAU,KAAK,MAAM,EAAE,QAAQ,CAAC,GACjC,UAAU,QAAQ"}