ec3e7d3cb2de63e860c4fd8cfb8bd78cc158552d0e917b738c4b11217370e192336ebb11b1b464d57c8976ccc1ba569f58b7d701d05891aa4caa87e9861e24 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const useTimePanel = ({
  2. getAvailableHours,
  3. getAvailableMinutes,
  4. getAvailableSeconds
  5. }) => {
  6. const getAvailableTime = (date, role, first, compareDate) => {
  7. const availableTimeGetters = {
  8. hour: getAvailableHours,
  9. minute: getAvailableMinutes,
  10. second: getAvailableSeconds
  11. };
  12. let result = date;
  13. ["hour", "minute", "second"].forEach((type) => {
  14. if (availableTimeGetters[type]) {
  15. let availableTimeSlots;
  16. const method = availableTimeGetters[type];
  17. switch (type) {
  18. case "minute": {
  19. availableTimeSlots = method(result.hour(), role, compareDate);
  20. break;
  21. }
  22. case "second": {
  23. availableTimeSlots = method(result.hour(), result.minute(), role, compareDate);
  24. break;
  25. }
  26. default: {
  27. availableTimeSlots = method(role, compareDate);
  28. break;
  29. }
  30. }
  31. if ((availableTimeSlots == null ? void 0 : availableTimeSlots.length) && !availableTimeSlots.includes(result[type]())) {
  32. const pos = first ? 0 : availableTimeSlots.length - 1;
  33. result = result[type](availableTimeSlots[pos]);
  34. }
  35. }
  36. });
  37. return result;
  38. };
  39. const timePickerOptions = {};
  40. const onSetOption = ([key, val]) => {
  41. timePickerOptions[key] = val;
  42. };
  43. return {
  44. timePickerOptions,
  45. getAvailableTime,
  46. onSetOption
  47. };
  48. };
  49. export { useTimePanel };
  50. //# sourceMappingURL=use-time-panel.mjs.map