{"version":3,"file":"useRangeDisabled.mjs","sources":["../../../../../../../packages/vue-components/vc-picker/src/hooks/useRangeDisabled.ts"],"sourcesContent":["import type { ComputedRef, Ref } from 'vue';\nimport type { GenerateConfig } from '../generate';\nimport type { Locale, PickerMode, RangeValue } from '../interface';\nimport { computed } from 'vue';\nimport { getQuarter, isSameDate } from '../utils/dateUtil';\nimport { getValue } from '../utils/miscUtil';\n\nexport default function useRangeDisabled<DateType>(\n  {\n    picker,\n    locale,\n    selectedValue,\n    disabledDate,\n    disabled,\n    generateConfig,\n  }: {\n    picker: Ref<PickerMode>;\n    selectedValue: Ref<RangeValue<DateType>>;\n    disabledDate?: Ref<(date: DateType) => boolean>;\n    disabled: ComputedRef<[boolean, boolean]>;\n    locale: Ref<Locale>;\n    generateConfig: Ref<GenerateConfig<DateType>>;\n  },\n  openRecordsRef: Ref<{\n    [x: number]: boolean;\n  }>,\n) {\n  const startDate = computed(() => getValue(selectedValue.value, 0));\n  const endDate = computed(() => getValue(selectedValue.value, 1));\n\n  function weekFirstDate(date: DateType) {\n    return generateConfig.value.locale.getWeekFirstDate(locale.value.locale, date);\n  }\n\n  function monthNumber(date: DateType) {\n    const year = generateConfig.value.getYear(date);\n    const month = generateConfig.value.getMonth(date);\n    return year * 100 + month;\n  }\n\n  function quarterNumber(date: DateType) {\n    const year = generateConfig.value.getYear(date);\n    const quarter = getQuarter(generateConfig.value, date);\n    return year * 10 + quarter;\n  }\n\n  const disabledStartDate = (date: DateType) => {\n    if (disabledDate && disabledDate?.value?.(date))\n      return true;\n\n    // Disabled range\n    if (disabled[1] && endDate) {\n      return (\n        !isSameDate(generateConfig.value, date, endDate.value)\n        && generateConfig.value.isAfter(date, endDate.value)\n      );\n    }\n\n    // Disabled part\n    if (openRecordsRef.value[1] && endDate.value) {\n      switch (picker.value) {\n        case 'quarter':\n          return quarterNumber(date) > quarterNumber(endDate.value);\n        case 'month':\n          return monthNumber(date) > monthNumber(endDate.value);\n        case 'week':\n          return weekFirstDate(date) > weekFirstDate(endDate.value);\n        default:\n          return (\n            !isSameDate(generateConfig.value, date, endDate.value)\n            && generateConfig.value.isAfter(date, endDate.value)\n          );\n      }\n    }\n\n    return false;\n  };\n\n  const disabledEndDate = (date: DateType) => {\n    if (disabledDate.value?.(date))\n      return true;\n\n    // Disabled range\n    if (disabled[0] && startDate) {\n      return (\n        !isSameDate(generateConfig.value, date, endDate.value)\n        && generateConfig.value.isAfter(startDate.value, date)\n      );\n    }\n\n    // Disabled part\n    if (openRecordsRef.value[0] && startDate.value) {\n      switch (picker.value) {\n        case 'quarter':\n          return quarterNumber(date) < quarterNumber(startDate.value);\n        case 'month':\n          return monthNumber(date) < monthNumber(startDate.value);\n        case 'week':\n          return weekFirstDate(date) < weekFirstDate(startDate.value);\n        default:\n          return (\n            !isSameDate(generateConfig.value, date, startDate.value)\n            && generateConfig.value.isAfter(startDate.value, date)\n          );\n      }\n    }\n\n    return false;\n  };\n\n  return [disabledStartDate, disabledEndDate];\n}\n"],"names":[],"mappings":";;;;AAOA,SAAwB,gBACtB,CAAA;AAAA,EACE,MAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AACF,CAAA,EAQA,cAGA,EAAA;AACA,EAAA,MAAM,YAAY,QAAS,CAAA,MAAM,SAAS,aAAc,CAAA,KAAA,EAAO,CAAC,CAAC,CAAA,CAAA;AACjE,EAAA,MAAM,UAAU,QAAS,CAAA,MAAM,SAAS,aAAc,CAAA,KAAA,EAAO,CAAC,CAAC,CAAA,CAAA;AAE/D,EAAA,SAAS,cAAc,IAAgB,EAAA;AACrC,IAAA,OAAO,eAAe,KAAM,CAAA,MAAA,CAAO,iBAAiB,MAAO,CAAA,KAAA,CAAM,QAAQ,IAAI,CAAA,CAAA;AAAA,GAC/E;AAEA,EAAA,SAAS,YAAY,IAAgB,EAAA;AACnC,IAAA,MAAM,IAAO,GAAA,cAAA,CAAe,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAC9C,IAAA,MAAM,KAAQ,GAAA,cAAA,CAAe,KAAM,CAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAChD,IAAA,OAAO,OAAO,GAAM,GAAA,KAAA,CAAA;AAAA,GACtB;AAEA,EAAA,SAAS,cAAc,IAAgB,EAAA;AACrC,IAAA,MAAM,IAAO,GAAA,cAAA,CAAe,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAC9C,IAAA,MAAM,OAAU,GAAA,UAAA,CAAW,cAAe,CAAA,KAAA,EAAO,IAAI,CAAA,CAAA;AACrD,IAAA,OAAO,OAAO,EAAK,GAAA,OAAA,CAAA;AAAA,GACrB;AAEA,EAAM,MAAA,iBAAA,GAAoB,CAAC,IAAmB,KAAA;AA9ChD,IAAA,IAAA,EAAA,CAAA;AA+CI,IAAI,IAAA,YAAA,KAAA,CAAgB,EAAc,GAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAA,KAAA,KAAd,IAAsB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AACxC,MAAO,OAAA,IAAA,CAAA;AAGT,IAAI,IAAA,QAAA,CAAS,CAAC,CAAA,IAAK,OAAS,EAAA;AAC1B,MAAA,OACE,CAAC,UAAA,CAAW,cAAe,CAAA,KAAA,EAAO,IAAM,EAAA,OAAA,CAAQ,KAAK,CAAA,IAClD,cAAe,CAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,EAAM,QAAQ,KAAK,CAAA,CAAA;AAAA,KAEvD;AAGA,IAAA,IAAI,cAAe,CAAA,KAAA,CAAM,CAAC,CAAA,IAAK,QAAQ,KAAO,EAAA;AAC5C,MAAA,QAAQ,OAAO,KAAO;AAAA,QACpB,KAAK,SAAA;AACH,UAAA,OAAO,aAAc,CAAA,IAAI,CAAI,GAAA,aAAA,CAAc,QAAQ,KAAK,CAAA,CAAA;AAAA,QAC1D,KAAK,OAAA;AACH,UAAA,OAAO,WAAY,CAAA,IAAI,CAAI,GAAA,WAAA,CAAY,QAAQ,KAAK,CAAA,CAAA;AAAA,QACtD,KAAK,MAAA;AACH,UAAA,OAAO,aAAc,CAAA,IAAI,CAAI,GAAA,aAAA,CAAc,QAAQ,KAAK,CAAA,CAAA;AAAA,QAC1D;AACE,UAAA,OACE,CAAC,UAAA,CAAW,cAAe,CAAA,KAAA,EAAO,IAAM,EAAA,OAAA,CAAQ,KAAK,CAAA,IAClD,cAAe,CAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,EAAM,QAAQ,KAAK,CAAA,CAAA;AAAA,OAEzD;AAAA,KACF;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,CAAC,IAAmB,KAAA;AA9E9C,IAAA,IAAA,EAAA,CAAA;AA+EI,IAAI,IAAA,CAAA,EAAA,GAAA,YAAA,CAAa,UAAb,IAAqB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,YAAA,EAAA,IAAA,CAAA;AACvB,MAAO,OAAA,IAAA,CAAA;AAGT,IAAI,IAAA,QAAA,CAAS,CAAC,CAAA,IAAK,SAAW,EAAA;AAC5B,MAAA,OACE,CAAC,UAAA,CAAW,cAAe,CAAA,KAAA,EAAO,IAAM,EAAA,OAAA,CAAQ,KAAK,CAAA,IAClD,cAAe,CAAA,KAAA,CAAM,OAAQ,CAAA,SAAA,CAAU,OAAO,IAAI,CAAA,CAAA;AAAA,KAEzD;AAGA,IAAA,IAAI,cAAe,CAAA,KAAA,CAAM,CAAC,CAAA,IAAK,UAAU,KAAO,EAAA;AAC9C,MAAA,QAAQ,OAAO,KAAO;AAAA,QACpB,KAAK,SAAA;AACH,UAAA,OAAO,aAAc,CAAA,IAAI,CAAI,GAAA,aAAA,CAAc,UAAU,KAAK,CAAA,CAAA;AAAA,QAC5D,KAAK,OAAA;AACH,UAAA,OAAO,WAAY,CAAA,IAAI,CAAI,GAAA,WAAA,CAAY,UAAU,KAAK,CAAA,CAAA;AAAA,QACxD,KAAK,MAAA;AACH,UAAA,OAAO,aAAc,CAAA,IAAI,CAAI,GAAA,aAAA,CAAc,UAAU,KAAK,CAAA,CAAA;AAAA,QAC5D;AACE,UAAA,OACE,CAAC,UAAA,CAAW,cAAe,CAAA,KAAA,EAAO,IAAM,EAAA,SAAA,CAAU,KAAK,CAAA,IACpD,cAAe,CAAA,KAAA,CAAM,OAAQ,CAAA,SAAA,CAAU,OAAO,IAAI,CAAA,CAAA;AAAA,OAE3D;AAAA,KACF;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAO,OAAA,CAAC,mBAAmB,eAAe,CAAA,CAAA;AAC5C;;;;"}