{"version":3,"file":"use-time-panel.mjs","names":[],"sources":["../../../../../../../packages/components/time-picker/src/composables/use-time-panel.ts"],"sourcesContent":["import type { Dayjs } from 'dayjs'\nimport type {\n  GetDisabledHours,\n  GetDisabledMinutes,\n  GetDisabledSeconds,\n} from '../common/props'\n\ntype UseTimePanelProps = {\n  getAvailableHours: GetDisabledHours\n  getAvailableMinutes: GetDisabledMinutes\n  getAvailableSeconds: GetDisabledSeconds\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"],"mappings":";AAaA,MAAa,gBAAgB,EAC3B,mBACA,qBACA,0BACuB;CACvB,MAAM,oBACJ,MACA,MACA,OACA,gBACG;EACH,MAAM,uBAAuB;GAC3B,MAAM;GACN,QAAQ;GACR,QAAQ;GACT;EACD,IAAI,SAAS;AACZ,EAAC;GAAC;GAAQ;GAAU;GAAS,CAAW,SAAS,SAAS;AACzD,OAAI,qBAAqB,OAAO;IAC9B,IAAI;IACJ,MAAM,SAAS,qBAAqB;AACpC,YAAQ,MAAR;KACE,KAAK;AACH,2BAAsB,OACpB,OAAO,MAAM,EACb,MACA,YACD;AACD;KAEF,KAAK;AACH,2BAAsB,OACpB,OAAO,MAAM,EACb,OAAO,QAAQ,EACf,MACA,YACD;AACD;KAEF;AACE,2BAAsB,OACpB,MACA,YACD;AACD;;AAIJ,QACE,oBAAoB,UACpB,CAAC,mBAAmB,SAAS,OAAO,OAAO,CAAC,EAC5C;KACA,MAAM,MAAM,QAAQ,IAAI,mBAAmB,SAAS;AACpD,cAAS,OAAO,MAAM,mBAAmB,KAAK;;;IAGlD;AACF,SAAO;;CAGT,MAAM,oBAA8D,EAAE;CAEtE,MAAM,eAAe,CAAC,KAAK,SAA6C;AACtE,oBAAkB,OAAO;;AAG3B,QAAO;EACL;EAEA;EACA;EACD"}