{"version":3,"file":"month-range-panel.vue2.mjs","sources":["../../../../../../../packages/components/date-picker/src/panels/month-range-panel.vue"],"sourcesContent":["<script lang=\"ts\">\n  import type { PropType } from 'vue'\n  import { computed, defineComponent, ref, toRefs, watch } from 'vue'\n  import { getNamespace } from '../../../../utils/global-config'\n  import { dateFormat, diffOfYear, getYMD, compareYear, isSameYear } from '../utils'\n  import type { DateCell } from '../types'\n  import { useMonthRows } from '../hooks/use-month-rows'\n\n  import PanelBody from './layout/body.vue'\n  import PanelHeader from './layout/header.vue'\n\n  export default defineComponent({\n    name: 'MonthRangePanel',\n    components: {\n      PanelHeader,\n      PanelBody\n    },\n    props: {\n      modelValue: {\n        type: Array as PropType<Date[]>,\n        default: () => []\n      },\n      disabledDate: {\n        type: Function,\n        default: undefined\n      }\n    },\n    emits: ['update:modelValue'],\n    setup(props, { emit }) {\n      const ns = getNamespace('date-picker')\n\n      const leftDate = ref<Date>()\n      const rightDate = ref<Date>()\n      const dateRange = ref<Date[]>([])\n      const dateModel = ref<Date[]>([])\n      const { disabledDate } = toRefs(props)\n\n      const { rows: leftRows } = useMonthRows({\n        date: leftDate,\n        dateModel,\n        dateRange,\n        disabledDate\n      })\n\n      const { rows: rightRows } = useMonthRows({\n        date: rightDate,\n        dateModel,\n        dateRange,\n        disabledDate\n      })\n\n      const headerContent = computed(() => {\n        return {\n          left: dateFormat(leftDate.value, 'yyyy 年'),\n          right: dateFormat(rightDate.value, 'yyyy 年')\n        }\n      })\n\n      const actions = computed(() => {\n        const [ly] = getYMD(leftDate.value)\n        const [ry] = getYMD(rightDate.value)\n        const left: string[] = []\n        const right: string[] = []\n        if (ly === ry - 1) {\n          left.push('prevSuper')\n          right.push('nextSuper')\n        } else {\n          left.push('prevSuper', 'nextSuper')\n          right.push('prevSuper', 'nextSuper')\n        }\n        return {\n          left,\n          right\n        }\n      })\n\n      const leftDateOps = {\n        handleYearChange(count: number) {\n          leftDate.value = diffOfYear(leftDate.value!, count)\n        },\n        handleMonthChange(count: number) {\n          leftDate.value = diffOfYear(leftDate.value!, count)\n          console.log(leftDate.value)\n        }\n      }\n\n      const rightDateOps = {\n        handleYearChange(count: number) {\n          rightDate.value = diffOfYear(rightDate.value!, count)\n        },\n        handleMonthChange(count: number) {\n          rightDate.value = diffOfYear(rightDate.value!, count)\n        }\n      }\n\n      const handleCellClick = (cell: DateCell) => {\n        if (dateModel.value.length < 2) {\n          dateRange.value.push(cell.date)\n          dateModel.value.push(cell.date)\n        } else {\n          dateRange.value = [cell.date]\n          dateModel.value = [cell.date]\n        }\n\n        if (dateModel.value.length === 2) {\n          emit('update:modelValue', dateModel.value.slice())\n        }\n      }\n\n      const handleCellMouseenter = (cell: DateCell) => {\n        if (dateModel.value.length === 1) {\n          const origin = dateRange.value.slice(0, 1)\n          origin.push(cell.date)\n          dateRange.value = origin\n        }\n      }\n\n      watch(\n        () => props.modelValue,\n        (newDate) => {\n          const [l = new Date(), r = diffOfYear(l, 1)] = newDate ?? []\n          const leftRet = compareYear(l, leftDate.value)\n          if (leftRet) {\n            leftDate.value = leftRet\n          }\n          const rightRet = compareYear(r, rightDate.value)\n          if (isSameYear(l, r)) {\n            rightDate.value = diffOfYear(l, 1)\n          } else if (rightRet) {\n            rightDate.value = rightRet\n          }\n          dateRange.value = newDate.slice()\n          dateModel.value = newDate.slice()\n        },\n        {\n          immediate: true\n        }\n      )\n\n      return {\n        ns,\n        leftRows,\n        rightRows,\n        headerContent,\n        handleCellClick,\n        handleCellMouseenter,\n        leftDateOps,\n        rightDateOps,\n        actions\n      }\n    }\n  })\n</script>\n\n<template>\n  <div :class=\"[`${ns}__range`]\">\n    <div :class=\"[`${ns}__range-left`]\">\n      <PanelHeader\n        :actions=\"actions.left\"\n        :content=\"headerContent.left\"\n        @prev-super=\"leftDateOps.handleYearChange(-1)\"\n        @next-super=\"leftDateOps.handleYearChange(1)\"\n      />\n      <PanelBody\n        :rows=\"leftRows\"\n        @on-cell-click=\"handleCellClick\"\n        @on-cell-mouseenter=\"handleCellMouseenter\"\n      >\n        <template #cell=\"scoped\">\n          <slot name=\"cell\" v-bind=\"scoped\"> </slot>\n        </template>\n      </PanelBody>\n    </div>\n    <div :class=\"[`${ns}__panel-right`]\">\n      <PanelHeader\n        :actions=\"actions.right\"\n        :content=\"headerContent.right\"\n        @prev-super=\"rightDateOps.handleYearChange(-1)\"\n        @next-super=\"rightDateOps.handleYearChange(1)\"\n      />\n      <PanelBody\n        :rows=\"rightRows\"\n        @on-cell-click=\"handleCellClick\"\n        @on-cell-mouseenter=\"handleCellMouseenter\"\n      >\n        <template #cell=\"scoped\">\n          <slot name=\"cell\" v-bind=\"scoped\"> </slot>\n        </template>\n      </PanelBody>\n    </div>\n  </div>\n</template>\n"],"names":[],"mappings":"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"}