{"version":3,"file":"useState.mjs","sources":["../../../src/calendar/hook/useState.ts"],"sourcesContent":["import { reactive, watch } from 'vue';\nimport dayjs from 'dayjs';\n\nimport { useConfig } from '../../hooks/useConfig';\nimport { COMPONENT_NAME } from '../const';\nimport { createDefaultCurDate } from '../utils';\nimport { TdCalendarProps } from '../type';\nimport { CalendarState } from '../interface';\nimport isArray from 'lodash/isArray';\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":["realFirstDayOfWeek","curDate","curDateList","curSelectedYear","curSelectedMonth","curSelectedMode","isShowWeekend","controlSize","state","isArray","re","watch","immediate","toToday","checkDayVisible"],"mappings":"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"}