stupa-pdf-api/frontend/node_modules/@mui/x-date-pickers/legacy/internals/hooks/useValueWithTimezone.js

81 lines
3.3 KiB
JavaScript

import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import * as React from 'react';
import useEventCallback from '@mui/utils/useEventCallback';
import useControlled from '@mui/utils/useControlled';
import { useUtils } from './useUtils';
/**
* Hooks making sure that:
* - The value returned by `onChange` always have the timezone of `props.value` or `props.defaultValue` if defined
* - The value rendered is always the one from `props.timezone` if defined
*/
export var useValueWithTimezone = function useValueWithTimezone(_ref) {
var _ref2, _ref3;
var timezoneProp = _ref.timezone,
valueProp = _ref.value,
defaultValue = _ref.defaultValue,
onChange = _ref.onChange,
valueManager = _ref.valueManager;
var utils = useUtils();
var firstDefaultValue = React.useRef(defaultValue);
var inputValue = (_ref2 = valueProp != null ? valueProp : firstDefaultValue.current) != null ? _ref2 : valueManager.emptyValue;
var inputTimezone = React.useMemo(function () {
return valueManager.getTimezone(utils, inputValue);
}, [utils, valueManager, inputValue]);
var setInputTimezone = useEventCallback(function (newValue) {
if (inputTimezone == null) {
return newValue;
}
return valueManager.setTimezone(utils, inputTimezone, newValue);
});
var timezoneToRender = (_ref3 = timezoneProp != null ? timezoneProp : inputTimezone) != null ? _ref3 : 'default';
var valueWithTimezoneToRender = React.useMemo(function () {
return valueManager.setTimezone(utils, timezoneToRender, inputValue);
}, [valueManager, utils, timezoneToRender, inputValue]);
var handleValueChange = useEventCallback(function (newValue) {
var newValueWithInputTimezone = setInputTimezone(newValue);
for (var _len = arguments.length, otherParams = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
otherParams[_key - 1] = arguments[_key];
}
onChange == null || onChange.apply(void 0, [newValueWithInputTimezone].concat(otherParams));
});
return {
value: valueWithTimezoneToRender,
handleValueChange: handleValueChange,
timezone: timezoneToRender
};
};
/**
* Wrapper around `useControlled` and `useValueWithTimezone`
*/
export var useControlledValueWithTimezone = function useControlledValueWithTimezone(_ref4) {
var name = _ref4.name,
timezoneProp = _ref4.timezone,
valueProp = _ref4.value,
defaultValue = _ref4.defaultValue,
onChangeProp = _ref4.onChange,
valueManager = _ref4.valueManager;
var _useControlled = useControlled({
name: name,
state: 'value',
controlled: valueProp,
default: defaultValue != null ? defaultValue : valueManager.emptyValue
}),
_useControlled2 = _slicedToArray(_useControlled, 2),
valueWithInputTimezone = _useControlled2[0],
setValue = _useControlled2[1];
var onChange = useEventCallback(function (newValue) {
setValue(newValue);
for (var _len2 = arguments.length, otherParams = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
otherParams[_key2 - 1] = arguments[_key2];
}
onChangeProp == null || onChangeProp.apply(void 0, [newValue].concat(otherParams));
});
return useValueWithTimezone({
timezone: timezoneProp,
value: valueWithInputTimezone,
defaultValue: undefined,
onChange: onChange,
valueManager: valueManager
});
};