{"version":3,"file":"use-time-panel.mjs","sources":["../../../../../../../packages/components/time-picker/src/composables/use-time-panel.ts"],"sourcesContent":["import type { Dayjs } from 'dayjs'\n\nimport type {\n  GetDisabledHoursState,\n  GetDisabledMinutesState,\n  GetDisabledSecondsState,\n} from '../types'\n\ntype UseTimePanelProps = {\n  getAvailableHours: GetDisabledHoursState\n  getAvailableMinutes: GetDisabledMinutesState\n  getAvailableSeconds: GetDisabledSecondsState\n}\n\nexport const useTimePanel = ({\n  getAvailableHours,\n  getAvailableMinutes,\n  getAvailableSeconds,\n}: UseTimePanelProps) => {\n  const getAvailableTime = (\n    date: Dayjs,\n    role: string,\n    first: boolean,\n    compareDate?: Dayjs\n  ) => {\n    const availableTimeGetters = {\n      hour: getAvailableHours,\n      minute: getAvailableMinutes,\n      second: getAvailableSeconds,\n    } as const\n    let result = date\n    ;(['hour', 'minute', 'second'] as const).forEach((type) => {\n      if (availableTimeGetters[type]) {\n        let availableTimeSlots: number[]\n        const method = availableTimeGetters[type]\n        switch (type) {\n          case 'minute': {\n            availableTimeSlots = (method as typeof getAvailableMinutes)(\n              result.hour(),\n              role,\n              compareDate\n            )\n            break\n          }\n          case 'second': {\n            availableTimeSlots = (method as typeof getAvailableSeconds)(\n              result.hour(),\n              result.minute(),\n              role,\n              compareDate\n            )\n            break\n          }\n          default: {\n            availableTimeSlots = (method as typeof getAvailableHours)(\n              role,\n              compareDate\n            )\n            break\n          }\n        }\n\n        if (\n          availableTimeSlots?.length &&\n          !availableTimeSlots.includes(result[type]())\n        ) {\n          const pos = first ? 0 : availableTimeSlots.length - 1\n          result = result[type](availableTimeSlots[pos]) as unknown as Dayjs\n        }\n      }\n    })\n    return result\n  }\n\n  const timePickerOptions: Record<string, (...args: any[]) => void> = {}\n\n  const onSetOption = ([key, val]: [string, (...args: any[]) => void]) => {\n    timePickerOptions[key] = val\n  }\n\n  return {\n    timePickerOptions,\n\n    getAvailableTime,\n    onSetOption,\n  }\n}\n"],"names":[],"mappings":"AAcO,MAAM,eAAe,CAAC;AAAA,EAC3B,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AACF,CAAyB,KAAA;AACvB,EAAA,MAAM,gBAAmB,GAAA,CACvB,IACA,EAAA,IAAA,EACA,OACA,WACG,KAAA;AACH,IAAA,MAAM,oBAAuB,GAAA;AAAA,MAC3B,IAAM,EAAA,iBAAA;AAAA,MACN,MAAQ,EAAA,mBAAA;AAAA,MACR,MAAQ,EAAA,mBAAA;AAAA,KACV,CAAA;AACA,IAAA,IAAI,MAAS,GAAA,IAAA,CAAA;AACZ,IAAC,CAAC,MAAQ,EAAA,QAAA,EAAU,QAAQ,CAAY,CAAA,OAAA,CAAQ,CAAC,IAAS,KAAA;AACzD,MAAA,IAAI,qBAAqB,IAAO,CAAA,EAAA;AAC9B,QAAI,IAAA,kBAAA,CAAA;AACJ,QAAA,MAAM,SAAS,oBAAqB,CAAA,IAAA,CAAA,CAAA;AACpC,QAAQ,QAAA,IAAA;AAAA,UAAA,KACD,QAAU,EAAA;AACb,YAAsB,kBAAA,GAAA,MAAA;AAAA,cACpB,OAAO,IAAK,EAAA;AAAA,cACZ,IAAA;AAAA,cACA,WAAA;AAAA,aACF,CAAA;AACA,YAAA,MAAA;AAAA,WACF;AAAA,UAAA,KACK,QAAU,EAAA;AACb,YAAsB,kBAAA,GAAA,MAAA;AAAA,cACpB,OAAO,IAAK,EAAA;AAAA,cACZ,OAAO,MAAO,EAAA;AAAA,cACd,IAAA;AAAA,cACA,WAAA;AAAA,aACF,CAAA;AACA,YAAA,MAAA;AAAA,WACF;AAAA,UACS,SAAA;AACP,YAAsB,kBAAA,GAAA,MAAA;AAAA,cACpB,IAAA;AAAA,cACA,WAAA;AAAA,aACF,CAAA;AACA,YAAA,MAAA;AAAA,WACF;AAAA,SAAA;AAGF,QACE,IAAA,kBAAA,EAAoB,UACpB,CAAC,kBAAA,CAAmB,SAAS,MAAO,CAAA,IAAA,CAAA,EAAO,CAC3C,EAAA;AACA,UAAA,MAAM,GAAM,GAAA,KAAA,GAAQ,CAAI,GAAA,kBAAA,CAAmB,MAAS,GAAA,CAAA,CAAA;AACpD,UAAS,MAAA,GAAA,MAAA,CAAO,IAAM,CAAA,CAAA,kBAAA,CAAmB,GAAI,CAAA,CAAA,CAAA;AAAA,SAC/C;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,MAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAA,MAAM,oBAA8D,EAAC,CAAA;AAErE,EAAA,MAAM,WAAc,GAAA,CAAC,CAAC,GAAA,EAAK,GAAG,CAA0C,KAAA;AACtE,IAAA,iBAAA,CAAkB,GAAO,CAAA,GAAA,GAAA,CAAA;AAAA,GAC3B,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,iBAAA;AAAA,IAEA,gBAAA;AAAA,IACA,WAAA;AAAA,GACF,CAAA;AACF;;;;"}