{"version":3,"file":"useState.mjs","sources":["../../../../components/calendar/hooks/useState.ts"],"sourcesContent":["import { reactive, watch } from 'vue';\nimport dayjs from 'dayjs';\n\nimport { useConfig } from '@tdesign/shared-hooks';\nimport { COMPONENT_NAME } from '../constants';\nimport { createDefaultCurDate } from '../utils';\nimport { TdCalendarProps } from '../type';\nimport { CalendarState } from '../types';\nimport { isArray } from 'lodash-es';\n\nexport function useState(props: TdCalendarProps) {\n  const { globalConfig } = useConfig(COMPONENT_NAME);\n\n  const state = reactive<CalendarState>({\n    realFirstDayOfWeek: 1,\n    curDate: null,\n    curDateList: [],\n    curSelectedYear: null,\n    curSelectedMonth: null,\n    curSelectedMode: null,\n    isShowWeekend: true,\n    controlSize: 'medium',\n  });\n\n  function toToday() {\n    const curDate = createDefaultCurDate();\n    state.curDate = curDate;\n    state.curSelectedYear = curDate.year();\n    state.curSelectedMonth = parseInt(curDate.format('M'), 10);\n  }\n\n  function setCurSelectedYear(year?: TdCalendarProps['year']) {\n    const curSelectedYear = year ? parseInt(`${year}`, 10) : createDefaultCurDate().year();\n    if (!isNaN(curSelectedYear) && curSelectedYear > 0) {\n      state.curSelectedYear = curSelectedYear;\n    }\n  }\n\n  function setCurSelectedMonth(month?: TdCalendarProps['month']) {\n    const curSelectedMonth = month ? parseInt(`${month}`, 10) : parseInt(createDefaultCurDate().format('M'), 10);\n    if (!isNaN(curSelectedMonth) && curSelectedMonth > 0 && curSelectedMonth <= 12) {\n      state.curSelectedMonth = curSelectedMonth;\n    }\n  }\n\n  function setCurrentDate(value?: TdCalendarProps['value']): void {\n    if (isArray(value)) {\n      state.curDate = value && value.length ? dayjs(value[0]) : createDefaultCurDate();\n    } else {\n      state.curDate = value ? dayjs(value) : createDefaultCurDate();\n    }\n  }\n\n  function setCurrentDateList(value?: TdCalendarProps['value']): void {\n    if (isArray(value)) {\n      state.curDateList = value && value.length ? value.map((item) => dayjs(item)) : [createDefaultCurDate()];\n    } else {\n      state.curDateList = value ? [dayjs(value)] : [createDefaultCurDate()];\n    }\n  }\n\n  function checkDayVisible(day: number) {\n    let re = true;\n    if (!state.isShowWeekend) {\n      re = day !== 6 && day !== 7;\n    }\n    return re;\n  }\n\n  watch(\n    () => props.firstDayOfWeek,\n    () => {\n      state.realFirstDayOfWeek = props.firstDayOfWeek ?? globalConfig.value.firstDayOfWeek ?? 1;\n    },\n    { immediate: true },\n  );\n  watch(\n    () => props.value,\n    (v: TdCalendarProps['value']) => {\n      if (props.multiple) {\n        setCurrentDateList(v);\n      } else {\n        setCurrentDate(v);\n      }\n    },\n    { immediate: true },\n  );\n  watch(\n    () => props.year,\n    (v: TdCalendarProps['year']) => {\n      setCurSelectedYear(v);\n    },\n    { immediate: true },\n  );\n  watch(\n    () => props.month,\n    (v: TdCalendarProps['month']) => {\n      setCurSelectedMonth(v);\n    },\n    { immediate: true },\n  );\n  watch(\n    () => props.isShowWeekendDefault,\n    (v: TdCalendarProps['isShowWeekendDefault']) => {\n      state.isShowWeekend = v;\n    },\n    { immediate: true },\n  );\n  watch(\n    () => props.mode,\n    (v: TdCalendarProps['mode']) => {\n      state.curSelectedMode = v;\n    },\n    { immediate: true },\n  );\n  watch(\n    () => props.theme,\n    (v: TdCalendarProps['theme']) => {\n      if (v === 'card') state.controlSize = 'small';\n      if (v === 'full') state.controlSize = 'medium';\n    },\n    { immediate: true },\n  );\n  return {\n    state,\n    toToday,\n    checkDayVisible,\n  };\n}\n"],"names":["useState","props","_useConfig","useConfig","COMPONENT_NAME","globalConfig","state","reactive","realFirstDayOfWeek","curDate","curDateList","curSelectedYear","curSelectedMonth","curSelectedMode","isShowWeekend","controlSize","toToday","createDefaultCurDate","year","parseInt","format","setCurSelectedYear","concat","isNaN","setCurSelectedMonth","month","setCurrentDate","value","isArray","length","dayjs","setCurrentDateList","map","item","checkDayVisible","day","re","watch","firstDayOfWeek","_ref","_props$firstDayOfWeek","immediate","v","multiple","isShowWeekendDefault","mode","theme"],"mappings":"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"}