{"version":3,"file":"generateCalendar.cjs","sources":["../../../../../../packages/components/calendar/src/generateCalendar.tsx"],"sourcesContent":["import type { PickerLocale } from '@antdv/locale';\nimport type { CustomSlotsType } from '@antdv/types';\nimport type { GenerateConfig } from '@antdv/vue-components/vc-picker/src/generate';\nimport type { App, PropType } from 'vue';\nimport type { CalendarMode, CalendarProps, CalendarSelectInfo } from './interface';\nimport { useMergedState } from '@antdv/hooks';\nimport { enUS } from '@antdv/locale';\nimport { classNames } from '@antdv/utils';\nimport { VcPickerPanel } from '@antdv/vue-components';\nimport { computed, defineComponent, toRef } from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport { useLocaleReceiver } from '../../locale-provider';\nimport useStyle from '../style';\nimport CalendarHeader from './Header';\n\n// CSSINJS\n\nexport default function generateCalendar<\n  DateType,\n  Props extends CalendarProps<DateType> = CalendarProps<DateType>,\n>(generateConfig: GenerateConfig<DateType>) {\n  function isSameYear(date1: DateType, date2: DateType) {\n    return date1 && date2 && generateConfig.getYear(date1) === generateConfig.getYear(date2);\n  }\n\n  function isSameMonth(date1: DateType, date2: DateType) {\n    return (\n      isSameYear(date1, date2) && generateConfig.getMonth(date1) === generateConfig.getMonth(date2)\n    );\n  }\n\n  function isSameDate(date1: DateType, date2: DateType) {\n    return (\n      isSameMonth(date1, date2) && generateConfig.getDate(date1) === generateConfig.getDate(date2)\n    );\n  }\n\n  const Calendar = defineComponent<Props>({\n    name: 'ACalendar',\n    inheritAttrs: false,\n    props: {\n      'prefixCls': String,\n      'locale': { type: Object as PropType<Props['locale']>, default: undefined as Props['locale'] },\n      'validRange': { type: Array as PropType<DateType[]>, default: undefined },\n      'disabledDate': { type: Function as PropType<Props['disabledDate']>, default: undefined },\n      'dateFullCellRender': {\n        type: Function as PropType<Props['dateFullCellRender']>,\n        default: undefined,\n      },\n      'dateCellRender': { type: Function as PropType<Props['dateCellRender']>, default: undefined },\n      'monthFullCellRender': {\n        type: Function as PropType<Props['monthFullCellRender']>,\n        default: undefined,\n      },\n      'monthCellRender': { type: Function as PropType<Props['monthCellRender']>, default: undefined },\n      'headerRender': { type: Function as PropType<Props['headerRender']>, default: undefined },\n      'value': {\n        type: [Object, String] as PropType<Props['value']>,\n        default: undefined as Props['value'],\n      },\n      'defaultValue': {\n        type: [Object, String] as PropType<Props['defaultValue']>,\n        default: undefined as Props['defaultValue'],\n      },\n      'mode': { type: String as PropType<Props['mode']>, default: undefined },\n      'fullscreen': { type: Boolean as PropType<Props['fullscreen']>, default: undefined },\n      'onChange': { type: Function as PropType<Props['onChange']>, default: undefined },\n      'onUpdate:value': { type: Function as PropType<Props['onUpdate:value']>, default: undefined },\n      'onPanelChange': { type: Function as PropType<Props['onPanelChange']>, default: undefined },\n      'onSelect': { type: Function as PropType<Props['onSelect']>, default: undefined },\n      'valueFormat': { type: String, default: undefined },\n    } as any,\n    slots: Object as CustomSlotsType<{\n      dateFullCellRender?: { current: DateType }\n      dateCellRender?: { current: DateType }\n      monthFullCellRender?: { current: DateType }\n      monthCellRender?: { current: DateType }\n      headerRender?: {\n        value: DateType\n        type: CalendarMode\n        onChange: (date: DateType) => void\n        onTypeChange: (type: CalendarMode) => void\n      }\n      default: any\n    }>,\n    setup(p, { emit, slots, attrs }) {\n      const props = p as unknown as Props;\n      const { prefixCls, direction } = useConfigInject('picker', props);\n\n      // style\n      const [wrapSSR, hashId] = useStyle(prefixCls);\n\n      const calendarPrefixCls = computed(() => `${prefixCls.value}-calendar`);\n      const maybeToString = (date: DateType) => {\n        return props.valueFormat ? generateConfig.toString(date, props.valueFormat) : date;\n      };\n      const value = computed(() => {\n        if (props.value) {\n          return props.valueFormat\n            ? (generateConfig.toDate(props.value, props.valueFormat) as DateType)\n            : (props.value as DateType);\n        }\n        return (props.value === '' ? undefined : props.value) as DateType;\n      });\n      const defaultValue = computed(() => {\n        if (props.defaultValue) {\n          return props.valueFormat\n            ? (generateConfig.toDate(props.defaultValue, props.valueFormat) as DateType)\n            : (props.defaultValue as DateType);\n        }\n        return (props.defaultValue === '' ? undefined : props.defaultValue) as DateType;\n      });\n\n      // Value\n      const [mergedValue, setMergedValue] = useMergedState(\n        () => value.value || generateConfig.getNow(),\n        {\n          defaultValue: defaultValue.value,\n          value,\n        },\n      );\n\n      // Mode\n      const [mergedMode, setMergedMode] = useMergedState('month', {\n        value: toRef(props, 'mode'),\n      });\n\n      const panelMode = computed(() => (mergedMode.value === 'year' ? 'month' : 'date'));\n\n      const mergedDisabledDate = computed(() => {\n        return (date: DateType) => {\n          const notInRange = props.validRange\n            ? generateConfig.isAfter(props.validRange[0], date)\n              || generateConfig.isAfter(date, props.validRange[1])\n            : false;\n          return notInRange || !!props.disabledDate?.(date);\n        };\n      });\n\n      // ====================== Events ======================\n      const triggerPanelChange = (date: DateType, newMode: CalendarMode) => {\n        emit('panelChange', maybeToString(date), newMode);\n      };\n\n      const triggerChange = (date: DateType) => {\n        setMergedValue(date);\n\n        if (!isSameDate(date, mergedValue.value)) {\n          // Trigger when month panel switch month\n          if (\n            (panelMode.value === 'date' && !isSameMonth(date, mergedValue.value))\n            || (panelMode.value === 'month' && !isSameYear(date, mergedValue.value))\n          ) {\n            triggerPanelChange(date, mergedMode.value);\n          }\n\n          const val = maybeToString(date);\n          emit('update:value', val);\n          emit('change', val);\n        }\n      };\n\n      const triggerModeChange = (newMode: CalendarMode) => {\n        setMergedMode(newMode);\n        triggerPanelChange(mergedValue.value, newMode);\n      };\n\n      const onInternalSelect = (date: DateType, source: CalendarSelectInfo['source']) => {\n        triggerChange(date);\n        emit('select', maybeToString(date), { source });\n      };\n      // ====================== Locale ======================\n      const defaultLocale = computed(() => {\n        const { locale } = props;\n        const result = {\n          ...enUS.DatePicker,\n          ...locale,\n        };\n        result.lang = {\n          ...result.lang,\n          ...(locale || {}).lang,\n        };\n        return result;\n      });\n\n      const [mergedLocale] = useLocaleReceiver('Calendar', defaultLocale) as [typeof defaultLocale];\n\n      return () => {\n        const today = generateConfig.getNow();\n        const {\n          dateFullCellRender = slots?.dateFullCellRender,\n          dateCellRender = slots?.dateCellRender,\n          monthFullCellRender = slots?.monthFullCellRender,\n          monthCellRender = slots?.monthCellRender,\n          headerRender = slots?.headerRender,\n          fullscreen = true,\n          validRange,\n        } = props;\n        // ====================== Render ======================\n        const dateRender = ({ current: date }) => {\n          if (dateFullCellRender)\n            return dateFullCellRender({ current: date });\n\n          return (\n            <div\n              class={classNames(\n                `${prefixCls.value}-cell-inner`,\n                `${calendarPrefixCls.value}-date`,\n                {\n                  [`${calendarPrefixCls.value}-date-today`]: isSameDate(today, date),\n                },\n              )}\n            >\n              <div class={`${calendarPrefixCls.value}-date-value`}>\n                {String(generateConfig.getDate(date)).padStart(2, '0')}\n              </div>\n              <div class={`${calendarPrefixCls.value}-date-content`}>\n                {dateCellRender && dateCellRender({ current: date })}\n              </div>\n            </div>\n          );\n        };\n\n        const monthRender = ({ current: date }, locale: PickerLocale) => {\n          if (monthFullCellRender)\n            return monthFullCellRender({ current: date });\n\n          const months = locale.shortMonths || generateConfig.locale.getShortMonths!(locale.locale);\n\n          return (\n            <div\n              class={classNames(\n                `${prefixCls.value}-cell-inner`,\n                `${calendarPrefixCls.value}-date`,\n                {\n                  [`${calendarPrefixCls.value}-date-today`]: isSameMonth(today, date),\n                },\n              )}\n            >\n              <div class={`${calendarPrefixCls.value}-date-value`}>\n                {months[generateConfig.getMonth(date)]}\n              </div>\n              <div class={`${calendarPrefixCls.value}-date-content`}>\n                {monthCellRender && monthCellRender({ current: date })}\n              </div>\n            </div>\n          );\n        };\n        return wrapSSR(\n          <div\n            {...attrs}\n            class={classNames(\n              calendarPrefixCls.value,\n              {\n                [`${calendarPrefixCls.value}-full`]: fullscreen,\n                [`${calendarPrefixCls.value}-mini`]: !fullscreen,\n                [`${calendarPrefixCls.value}-rtl`]: direction.value === 'rtl',\n              },\n              attrs.class,\n              hashId.value,\n            )}\n          >\n            {headerRender\n              ? (\n                  headerRender({\n                    value: mergedValue.value,\n                    type: mergedMode.value,\n                    onChange: (nextDate) => {\n                      onInternalSelect(nextDate, 'customize');\n                    },\n                    onTypeChange: triggerModeChange,\n                  })\n                )\n              : (\n                  <CalendarHeader\n                    prefixCls={calendarPrefixCls.value}\n                    value={mergedValue.value}\n                    generateConfig={generateConfig}\n                    mode={mergedMode.value}\n                    fullscreen={fullscreen}\n                    locale={mergedLocale.value.lang}\n                    validRange={validRange}\n                    onChange={onInternalSelect}\n                    onModeChange={triggerModeChange}\n                  />\n                )}\n            <VcPickerPanel\n              value={mergedValue.value}\n              prefixCls={prefixCls.value}\n              locale={mergedLocale.value.lang}\n              generateConfig={generateConfig}\n              dateRender={dateRender}\n              monthCellRender={obj => monthRender(obj, mergedLocale.value.lang)}\n              onSelect={(nextDate) => {\n                onInternalSelect(nextDate, panelMode.value);\n              }}\n              mode={panelMode.value}\n              picker={panelMode.value}\n              disabledDate={mergedDisabledDate.value}\n              hideHeader\n            />\n          </div>,\n        );\n      };\n    },\n  });\n\n  Calendar.install = function (app: App) {\n    app.component(Calendar.name, Calendar);\n    return app;\n  };\n\n  return Calendar;\n}\n"],"names":["generateCalendar","generateConfig","isSameYear","date1","date2","getYear","isSameMonth","getMonth","isSameDate","getDate","Calendar","defineComponent","name","inheritAttrs","props","String","type","Object","default","undefined","Array","Function","Boolean","slots","setup","p","emit","attrs","prefixCls","direction","useConfigInject","wrapSSR","hashId","useStyle","calendarPrefixCls","computed","value","maybeToString","date","valueFormat","toString","toDate","defaultValue","mergedValue","setMergedValue","useMergedState","getNow","mergedMode","setMergedMode","toRef","panelMode","mergedDisabledDate","notInRange","validRange","isAfter","disabledDate","triggerPanelChange","newMode","triggerChange","val","triggerModeChange","onInternalSelect","source","defaultLocale","locale","result","enUS","DatePicker","lang","mergedLocale","useLocaleReceiver","today","dateFullCellRender","dateCellRender","monthFullCellRender","monthCellRender","headerRender","fullscreen","dateRender","current","_createVNode","classNames","padStart","monthRender","months","shortMonths","getShortMonths","class","onChange","nextDate","onTypeChange","CalendarHeader","VcPickerPanel","obj","install","app","component"],"mappings":"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"}