import { __assign } from "tslib"; import dayjs from 'dayjs'; import { useState } from 'functional-mini/component'; import { useMinAndMax } from './hooks'; export function useDateState(props) { var getMin = useMinAndMax().getMin; var _a = useState({ pickerType: 'start', start: null, end: null, }), dateState = _a[0], setDateState = _a[1]; var init = function (realValue) { var currentStartDate = realValue === null || realValue === void 0 ? void 0 : realValue[0]; var currentEndDate = realValue === null || realValue === void 0 ? void 0 : realValue[1]; if (!currentStartDate) { var min = getMin(props.min).toDate(); var max = props.max; currentStartDate = new Date(); if ((min && dayjs(currentStartDate).isBefore(min, props.precision)) || (max && dayjs(currentStartDate).isAfter(max, props.precision)) || (currentEndDate && currentStartDate > currentEndDate)) { currentStartDate = min; } } var newState = { pickerType: 'start', start: currentStartDate, end: currentEndDate, }; setDateState(newState); return newState; }; var changeType = function (newType) { var currentStartDate = dateState.start; var currentEndDate = dateState.end; if (newType === 'start') { if (!currentStartDate) { currentStartDate = currentEndDate; } } else { // pickerType=end start已存在 // 结束时间默认选中开始 if (!currentEndDate) { currentEndDate = currentStartDate; } } var newState = { pickerType: newType, start: currentStartDate, end: currentEndDate, }; setDateState(newState); return newState; }; function updateValue(newValue) { setDateState(function (old) { if (old.pickerType === 'start') { var newEnd = old.end; if (old.end && dayjs(newValue).isAfter(old.end)) { newEnd = null; } return __assign(__assign({}, old), { start: newValue, end: newEnd }); } var newStart = old.start; if (old.start && dayjs(newValue).isBefore(old.start)) { newStart = null; } return __assign(__assign({}, old), { end: newValue, start: newStart }); }); } return { updateValue: updateValue, dateState: dateState, init: init, changeType: changeType, }; }