rsuite
Version:
A suite of react components
32 lines (31 loc) • 1.13 kB
JavaScript
'use client';
;
exports.__esModule = true;
exports.useCalendarDate = void 0;
var _react = require("react");
var _hooks = require("../../internals/hooks");
var _date = require("../../internals/utils/date");
const useCalendarDate = (value, defaultDate) => {
const valueRef = (0, _react.useRef)(value);
const [calendarDate, setValue] = (0, _react.useState)(value ?? defaultDate ?? (0, _date.startOfToday)());
const setCalendarDate = (0, _react.useCallback)(date => {
if (date && date?.valueOf() !== calendarDate?.valueOf()) {
setValue(date);
}
}, [calendarDate]);
const resetCalendarDate = (0, _react.useCallback)((nextValue = value) => {
setValue(nextValue ?? defaultDate ?? (0, _date.startOfToday)());
}, [defaultDate, value]);
(0, _hooks.useUpdateEffect)(() => {
if (value?.valueOf() !== valueRef.current?.valueOf()) {
setCalendarDate(value ?? defaultDate ?? (0, _date.startOfToday)());
valueRef.current = value;
}
}, [value, defaultDate]);
return {
calendarDate,
setCalendarDate,
resetCalendarDate
};
};
exports.useCalendarDate = useCalendarDate;