utils.mjs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { isArray, isDate, isEmpty } from "../../../utils/types.mjs";
  2. import dayjs from "dayjs";
  3. //#region ../../packages/components/time-picker/src/utils.ts
  4. const buildTimeList = (value, bound) => {
  5. return [
  6. value > 0 ? value - 1 : void 0,
  7. value,
  8. value < bound ? value + 1 : void 0
  9. ];
  10. };
  11. const rangeArr = (n) => Array.from(Array.from({ length: n }).keys());
  12. const extractDateFormat = (format) => {
  13. return format.replace(/\W?m{1,2}|\W?ZZ/g, "").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, "").trim();
  14. };
  15. const extractTimeFormat = (format) => {
  16. return format.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g, "").trim();
  17. };
  18. const dateEquals = function(a, b) {
  19. const aIsDate = isDate(a);
  20. const bIsDate = isDate(b);
  21. if (aIsDate && bIsDate) return a.getTime() === b.getTime();
  22. if (!aIsDate && !bIsDate) return a === b;
  23. return false;
  24. };
  25. const valueEquals = function(a, b) {
  26. const aIsArray = isArray(a);
  27. const bIsArray = isArray(b);
  28. if (aIsArray && bIsArray) {
  29. if (a.length !== b.length) return false;
  30. return a.every((item, index) => dateEquals(item, b[index]));
  31. }
  32. if (!aIsArray && !bIsArray) return dateEquals(a, b);
  33. return false;
  34. };
  35. const parseDate = function(date, format, lang) {
  36. const day = isEmpty(format) || format === "x" ? dayjs(date).locale(lang) : dayjs(date, format).locale(lang);
  37. return day.isValid() ? day : void 0;
  38. };
  39. const formatter = function(date, format, lang) {
  40. if (isEmpty(format)) return date;
  41. if (format === "x") return +date;
  42. return dayjs(date).locale(lang).format(format);
  43. };
  44. const makeList = (total, method) => {
  45. const arr = [];
  46. const disabledArr = method?.();
  47. for (let i = 0; i < total; i++) arr.push(disabledArr?.includes(i) ?? false);
  48. return arr;
  49. };
  50. const dayOrDaysToDate = (dayOrDays) => {
  51. return isArray(dayOrDays) ? dayOrDays.map((d) => d.toDate()) : dayOrDays.toDate();
  52. };
  53. //#endregion
  54. export { buildTimeList, dateEquals, dayOrDaysToDate, extractDateFormat, extractTimeFormat, formatter, makeList, parseDate, rangeArr, valueEquals };
  55. //# sourceMappingURL=utils.mjs.map