{"version":3,"file":"react/js/vendor.mui@current-5c2946b3.764699cedff012ddf5a2.js","mappings":"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","sources":["webpack:///./node_modules/@mui/x-date-pickers/internals/constants/dimensions.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/date-helpers-hooks.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/defaultizedFieldProps.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useDefaultReduceAnimations.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useDesktopPicker/useDesktopPicker.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useField/buildSectionsFromFormat.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useField/useFieldState.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useField/useFieldCharacterEditing.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useField/useFieldV7TextField.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useField/useFieldV6TextField.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useField/useField.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useField/useField.utils.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useMobilePicker/useMobilePicker.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/usePicker/usePickerValue.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useOpenState.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/usePicker/usePickerViews.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useIsLandscape.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/usePicker/usePickerLayoutProps.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/usePicker/usePicker.js","webpack:///./node_modules/@mui/x-date-pickers/internals/hooks/useUtils.js"],"sourcesContent":["export const DAY_SIZE = 36;\nexport const DAY_MARGIN = 2;\nexport const DIALOG_WIDTH = 320;\nexport const MAX_CALENDAR_HEIGHT = 280;\nexport const VIEW_HEIGHT = 336;\nexport const DIGITAL_CLOCK_VIEW_HEIGHT = 232;\nexport const MULTI_SECTION_CLOCK_SECTION_WIDTH = 48;","import * as React from 'react';\nimport { useUtils } from './useUtils';\nimport { getMeridiem, convertToMeridiem } from '../utils/time-utils';\nexport function useNextMonthDisabled(month, {\n disableFuture,\n maxDate,\n timezone\n}) {\n const utils = useUtils();\n return React.useMemo(() => {\n const now = utils.date(undefined, timezone);\n const lastEnabledMonth = utils.startOfMonth(disableFuture && utils.isBefore(now, maxDate) ? now : maxDate);\n return !utils.isAfter(lastEnabledMonth, month);\n }, [disableFuture, maxDate, month, utils, timezone]);\n}\nexport function usePreviousMonthDisabled(month, {\n disablePast,\n minDate,\n timezone\n}) {\n const utils = useUtils();\n return React.useMemo(() => {\n const now = utils.date(undefined, timezone);\n const firstEnabledMonth = utils.startOfMonth(disablePast && utils.isAfter(now, minDate) ? now : minDate);\n return !utils.isBefore(firstEnabledMonth, month);\n }, [disablePast, minDate, month, utils, timezone]);\n}\nexport function useMeridiemMode(date, ampm, onChange, selectionState) {\n const utils = useUtils();\n const meridiemMode = getMeridiem(date, utils);\n const handleMeridiemChange = React.useCallback(mode => {\n const timeWithMeridiem = date == null ? null : convertToMeridiem(date, mode, Boolean(ampm), utils);\n onChange(timeWithMeridiem, selectionState ?? 'partial');\n }, [ampm, date, onChange, selectionState, utils]);\n return {\n meridiemMode,\n handleMeridiemChange\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { applyDefaultDate } from '../utils/date-utils';\nimport { useUtils, useDefaultDates } from './useUtils';\nexport const useDefaultizedDateField = props => {\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n return _extends({}, props, {\n disablePast: props.disablePast ?? false,\n disableFuture: props.disableFuture ?? false,\n format: props.format ?? utils.formats.keyboardDate,\n minDate: applyDefaultDate(utils, props.minDate, defaultDates.minDate),\n maxDate: applyDefaultDate(utils, props.maxDate, defaultDates.maxDate)\n });\n};\nexport const useDefaultizedTimeField = props => {\n const utils = useUtils();\n const ampm = props.ampm ?? utils.is12HourCycleInCurrentLocale();\n const defaultFormat = ampm ? utils.formats.fullTime12h : utils.formats.fullTime24h;\n return _extends({}, props, {\n disablePast: props.disablePast ?? false,\n disableFuture: props.disableFuture ?? false,\n format: props.format ?? defaultFormat\n });\n};\nexport const useDefaultizedDateTimeField = props => {\n const utils = useUtils();\n const defaultDates = useDefaultDates();\n const ampm = props.ampm ?? utils.is12HourCycleInCurrentLocale();\n const defaultFormat = ampm ? utils.formats.keyboardDateTime12h : utils.formats.keyboardDateTime24h;\n return _extends({}, props, {\n disablePast: props.disablePast ?? false,\n disableFuture: props.disableFuture ?? false,\n format: props.format ?? defaultFormat,\n disableIgnoringDatePartForTimeValidation: Boolean(props.minDateTime || props.maxDateTime),\n minDate: applyDefaultDate(utils, props.minDateTime ?? props.minDate, defaultDates.minDate),\n maxDate: applyDefaultDate(utils, props.maxDateTime ?? props.maxDate, defaultDates.maxDate),\n minTime: props.minDateTime ?? props.minTime,\n maxTime: props.maxDateTime ?? props.maxTime\n });\n};","import useMediaQuery from '@mui/material/useMediaQuery';\nconst PREFERS_REDUCED_MOTION = '@media (prefers-reduced-motion: reduce)';\n\n// detect if user agent has Android version < 10 or iOS version < 13\nconst mobileVersionMatches = typeof navigator !== 'undefined' && navigator.userAgent.match(/android\\s(\\d+)|OS\\s(\\d+)/i);\nconst androidVersion = mobileVersionMatches && mobileVersionMatches[1] ? parseInt(mobileVersionMatches[1], 10) : null;\nconst iOSVersion = mobileVersionMatches && mobileVersionMatches[2] ? parseInt(mobileVersionMatches[2], 10) : null;\nexport const slowAnimationDevices = androidVersion && androidVersion < 10 || iOSVersion && iOSVersion < 13 || false;\nexport const useDefaultReduceAnimations = () => {\n const prefersReduced = useMediaQuery(PREFERS_REDUCED_MOTION, {\n defaultMatches: false\n });\n return prefersReduced || slowAnimationDevices;\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"props\", \"getOpenDialogAriaText\"],\n _excluded2 = [\"ownerState\"],\n _excluded3 = [\"ownerState\"];\nimport * as React from 'react';\nimport { useSlotProps } from '@mui/base/utils';\nimport MuiInputAdornment from '@mui/material/InputAdornment';\nimport IconButton from '@mui/material/IconButton';\nimport useForkRef from '@mui/utils/useForkRef';\nimport useId from '@mui/utils/useId';\nimport { PickersPopper } from '../../components/PickersPopper';\nimport { useUtils } from '../useUtils';\nimport { usePicker } from '../usePicker';\nimport { LocalizationProvider } from '../../../LocalizationProvider';\nimport { PickersLayout } from '../../../PickersLayout';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Hook managing all the single-date desktop pickers:\n * - DesktopDatePicker\n * - DesktopDateTimePicker\n * - DesktopTimePicker\n */\nexport const useDesktopPicker = _ref => {\n let {\n props,\n getOpenDialogAriaText\n } = _ref,\n pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);\n const {\n slots,\n slotProps: innerSlotProps,\n className,\n sx,\n format,\n formatDensity,\n enableAccessibleFieldDOMStructure,\n selectedSections,\n onSelectedSectionsChange,\n timezone,\n name,\n label,\n inputRef,\n readOnly,\n disabled,\n autoFocus,\n localeText,\n reduceAnimations\n } = props;\n const utils = useUtils();\n const containerRef = React.useRef(null);\n const fieldRef = React.useRef(null);\n const labelId = useId();\n const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;\n const {\n open,\n actions,\n hasUIView,\n layoutProps,\n renderCurrentView,\n shouldRestoreFocus,\n fieldProps: pickerFieldProps\n } = usePicker(_extends({}, pickerParams, {\n props,\n fieldRef,\n autoFocusView: true,\n additionalViewProps: {},\n wrapperVariant: 'desktop'\n }));\n const InputAdornment = slots.inputAdornment ?? MuiInputAdornment;\n const _useSlotProps = useSlotProps({\n elementType: InputAdornment,\n externalSlotProps: innerSlotProps?.inputAdornment,\n additionalProps: {\n position: 'end'\n },\n ownerState: props\n }),\n inputAdornmentProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);\n const OpenPickerButton = slots.openPickerButton ?? IconButton;\n const _useSlotProps2 = useSlotProps({\n elementType: OpenPickerButton,\n externalSlotProps: innerSlotProps?.openPickerButton,\n additionalProps: {\n disabled: disabled || readOnly,\n onClick: open ? actions.onClose : actions.onOpen,\n 'aria-label': getOpenDialogAriaText(pickerFieldProps.value, utils),\n edge: inputAdornmentProps.position\n },\n ownerState: props\n }),\n openPickerButtonProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);\n const OpenPickerIcon = slots.openPickerIcon;\n const Field = slots.field;\n const fieldProps = useSlotProps({\n elementType: Field,\n externalSlotProps: innerSlotProps?.field,\n additionalProps: _extends({}, pickerFieldProps, isToolbarHidden && {\n id: labelId\n }, {\n readOnly,\n disabled,\n className,\n sx,\n format,\n formatDensity,\n enableAccessibleFieldDOMStructure,\n selectedSections,\n onSelectedSectionsChange,\n timezone,\n label,\n name,\n autoFocus: autoFocus && !props.open,\n focused: open ? true : undefined\n }, inputRef ? {\n inputRef\n } : {}),\n ownerState: props\n });\n\n // TODO: Move to `useSlotProps` when https://github.com/mui/material-ui/pull/35088 will be merged\n if (hasUIView) {\n fieldProps.InputProps = _extends({}, fieldProps.InputProps, {\n ref: containerRef\n }, !props.disableOpenPicker && {\n [`${inputAdornmentProps.position}Adornment`]: /*#__PURE__*/_jsx(InputAdornment, _extends({}, inputAdornmentProps, {\n children: /*#__PURE__*/_jsx(OpenPickerButton, _extends({}, openPickerButtonProps, {\n children: /*#__PURE__*/_jsx(OpenPickerIcon, _extends({}, innerSlotProps?.openPickerIcon))\n }))\n }))\n });\n }\n const slotsForField = _extends({\n textField: slots.textField,\n clearIcon: slots.clearIcon,\n clearButton: slots.clearButton\n }, fieldProps.slots);\n const Layout = slots.layout ?? PickersLayout;\n let labelledById = labelId;\n if (isToolbarHidden) {\n if (label) {\n labelledById = `${labelId}-label`;\n } else {\n labelledById = undefined;\n }\n }\n const slotProps = _extends({}, innerSlotProps, {\n toolbar: _extends({}, innerSlotProps?.toolbar, {\n titleId: labelId\n }),\n popper: _extends({\n 'aria-labelledby': labelledById\n }, innerSlotProps?.popper)\n });\n const handleFieldRef = useForkRef(fieldRef, fieldProps.unstableFieldRef);\n const renderPicker = () => /*#__PURE__*/_jsxs(LocalizationProvider, {\n localeText: localeText,\n children: [/*#__PURE__*/_jsx(Field, _extends({}, fieldProps, {\n slots: slotsForField,\n slotProps: slotProps,\n unstableFieldRef: handleFieldRef\n })), /*#__PURE__*/_jsx(PickersPopper, _extends({\n role: \"dialog\",\n placement: \"bottom-start\",\n anchorEl: containerRef.current\n }, actions, {\n open: open,\n slots: slots,\n slotProps: slotProps,\n shouldRestoreFocus: shouldRestoreFocus,\n reduceAnimations: reduceAnimations,\n children: /*#__PURE__*/_jsx(Layout, _extends({}, layoutProps, slotProps?.layout, {\n slots: slots,\n slotProps: slotProps,\n children: renderCurrentView()\n }))\n }))]\n });\n return {\n renderPicker\n };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { applyLocalizedDigits, cleanLeadingZeros, doesSectionFormatHaveLeadingZeros, getDateSectionConfigFromFormatToken, removeLocalizedDigits } from './useField.utils';\nconst expandFormat = ({\n utils,\n format\n}) => {\n // Expand the provided format\n let formatExpansionOverflow = 10;\n let prevFormat = format;\n let nextFormat = utils.expandFormat(format);\n while (nextFormat !== prevFormat) {\n prevFormat = nextFormat;\n nextFormat = utils.expandFormat(prevFormat);\n formatExpansionOverflow -= 1;\n if (formatExpansionOverflow < 0) {\n throw new Error('MUI X: The format expansion seems to be in an infinite loop. Please open an issue with the format passed to the picker component.');\n }\n }\n return nextFormat;\n};\nconst getEscapedPartsFromFormat = ({\n utils,\n expandedFormat\n}) => {\n const escapedParts = [];\n const {\n start: startChar,\n end: endChar\n } = utils.escapedCharacters;\n const regExp = new RegExp(`(\\\\${startChar}[^\\\\${endChar}]*\\\\${endChar})+`, 'g');\n let match = null;\n // eslint-disable-next-line no-cond-assign\n while (match = regExp.exec(expandedFormat)) {\n escapedParts.push({\n start: match.index,\n end: regExp.lastIndex - 1\n });\n }\n return escapedParts;\n};\nconst getSectionPlaceholder = (utils, timezone, localeText, sectionConfig, sectionFormat) => {\n switch (sectionConfig.type) {\n case 'year':\n {\n return localeText.fieldYearPlaceholder({\n digitAmount: utils.formatByString(utils.date(undefined, timezone), sectionFormat).length,\n format: sectionFormat\n });\n }\n case 'month':\n {\n return localeText.fieldMonthPlaceholder({\n contentType: sectionConfig.contentType,\n format: sectionFormat\n });\n }\n case 'day':\n {\n return localeText.fieldDayPlaceholder({\n format: sectionFormat\n });\n }\n case 'weekDay':\n {\n return localeText.fieldWeekDayPlaceholder({\n contentType: sectionConfig.contentType,\n format: sectionFormat\n });\n }\n case 'hours':\n {\n return localeText.fieldHoursPlaceholder({\n format: sectionFormat\n });\n }\n case 'minutes':\n {\n return localeText.fieldMinutesPlaceholder({\n format: sectionFormat\n });\n }\n case 'seconds':\n {\n return localeText.fieldSecondsPlaceholder({\n format: sectionFormat\n });\n }\n case 'meridiem':\n {\n return localeText.fieldMeridiemPlaceholder({\n format: sectionFormat\n });\n }\n default:\n {\n return sectionFormat;\n }\n }\n};\nconst createSection = ({\n utils,\n timezone,\n date,\n shouldRespectLeadingZeros,\n localeText,\n localizedDigits,\n now,\n token,\n startSeparator\n}) => {\n if (token === '') {\n throw new Error('MUI X: Should not call `commitToken` with an empty token');\n }\n const sectionConfig = getDateSectionConfigFromFormatToken(utils, token);\n const hasLeadingZerosInFormat = doesSectionFormatHaveLeadingZeros(utils, timezone, sectionConfig.contentType, sectionConfig.type, token);\n const hasLeadingZerosInInput = shouldRespectLeadingZeros ? hasLeadingZerosInFormat : sectionConfig.contentType === 'digit';\n const isValidDate = date != null && utils.isValid(date);\n let sectionValue = isValidDate ? utils.formatByString(date, token) : '';\n let maxLength = null;\n if (hasLeadingZerosInInput) {\n if (hasLeadingZerosInFormat) {\n maxLength = sectionValue === '' ? utils.formatByString(now, token).length : sectionValue.length;\n } else {\n if (sectionConfig.maxLength == null) {\n throw new Error(`MUI X: The token ${token} should have a 'maxDigitNumber' property on it's adapter`);\n }\n maxLength = sectionConfig.maxLength;\n if (isValidDate) {\n sectionValue = applyLocalizedDigits(cleanLeadingZeros(removeLocalizedDigits(sectionValue, localizedDigits), maxLength), localizedDigits);\n }\n }\n }\n return _extends({}, sectionConfig, {\n format: token,\n maxLength,\n value: sectionValue,\n placeholder: getSectionPlaceholder(utils, timezone, localeText, sectionConfig, token),\n hasLeadingZerosInFormat,\n hasLeadingZerosInInput,\n startSeparator,\n endSeparator: '',\n modified: false\n });\n};\nconst buildSections = params => {\n const {\n utils,\n expandedFormat,\n escapedParts\n } = params;\n const now = utils.date(undefined);\n const sections = [];\n let startSeparator = '';\n\n // This RegExp tests if the beginning of a string corresponds to a supported token\n const validTokens = Object.keys(utils.formatTokenMap).sort((a, b) => b.length - a.length); // Sort to put longest word first\n\n const regExpFirstWordInFormat = /^([a-zA-Z]+)/;\n const regExpWordOnlyComposedOfTokens = new RegExp(`^(${validTokens.join('|')})*$`);\n const regExpFirstTokenInWord = new RegExp(`^(${validTokens.join('|')})`);\n const getEscapedPartOfCurrentChar = i => escapedParts.find(escapeIndex => escapeIndex.start <= i && escapeIndex.end >= i);\n let i = 0;\n while (i < expandedFormat.length) {\n const escapedPartOfCurrentChar = getEscapedPartOfCurrentChar(i);\n const isEscapedChar = escapedPartOfCurrentChar != null;\n const firstWordInFormat = regExpFirstWordInFormat.exec(expandedFormat.slice(i))?.[1];\n\n // The first word in the format is only composed of tokens.\n // We extract those tokens to create a new sections.\n if (!isEscapedChar && firstWordInFormat != null && regExpWordOnlyComposedOfTokens.test(firstWordInFormat)) {\n let word = firstWordInFormat;\n while (word.length > 0) {\n const firstWord = regExpFirstTokenInWord.exec(word)[1];\n word = word.slice(firstWord.length);\n sections.push(createSection(_extends({}, params, {\n now,\n token: firstWord,\n startSeparator\n })));\n startSeparator = '';\n }\n i += firstWordInFormat.length;\n }\n // The remaining format does not start with a token,\n // We take the first character and add it to the current section's end separator.\n else {\n const char = expandedFormat[i];\n\n // If we are on the opening or closing character of an escaped part of the format,\n // Then we ignore this character.\n const isEscapeBoundary = isEscapedChar && escapedPartOfCurrentChar?.start === i || escapedPartOfCurrentChar?.end === i;\n if (!isEscapeBoundary) {\n if (sections.length === 0) {\n startSeparator += char;\n } else {\n sections[sections.length - 1].endSeparator += char;\n }\n }\n i += 1;\n }\n }\n if (sections.length === 0 && startSeparator.length > 0) {\n sections.push({\n type: 'empty',\n contentType: 'letter',\n maxLength: null,\n format: '',\n value: '',\n placeholder: '',\n hasLeadingZerosInFormat: false,\n hasLeadingZerosInInput: false,\n startSeparator,\n endSeparator: '',\n modified: false\n });\n }\n return sections;\n};\nconst postProcessSections = ({\n isRtl,\n formatDensity,\n sections\n}) => {\n return sections.map(section => {\n const cleanSeparator = separator => {\n let cleanedSeparator = separator;\n if (isRtl && cleanedSeparator !== null && cleanedSeparator.includes(' ')) {\n cleanedSeparator = `\\u2069${cleanedSeparator}\\u2066`;\n }\n if (formatDensity === 'spacious' && ['/', '.', '-'].includes(cleanedSeparator)) {\n cleanedSeparator = ` ${cleanedSeparator} `;\n }\n return cleanedSeparator;\n };\n section.startSeparator = cleanSeparator(section.startSeparator);\n section.endSeparator = cleanSeparator(section.endSeparator);\n return section;\n });\n};\nexport const buildSectionsFromFormat = params => {\n let expandedFormat = expandFormat(params);\n if (params.isRtl && params.enableAccessibleFieldDOMStructure) {\n expandedFormat = expandedFormat.split(' ').reverse().join(' ');\n }\n const escapedParts = getEscapedPartsFromFormat(_extends({}, params, {\n expandedFormat\n }));\n const sections = buildSections(_extends({}, params, {\n expandedFormat,\n escapedParts\n }));\n return postProcessSections(_extends({}, params, {\n sections\n }));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useControlled from '@mui/utils/useControlled';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { useUtils, useLocaleText, useLocalizationContext } from '../useUtils';\nimport { mergeDateIntoReferenceDate, getSectionsBoundaries, validateSections, getDateFromDateSections, parseSelectedSections, getLocalizedDigits } from './useField.utils';\nimport { buildSectionsFromFormat } from './buildSectionsFromFormat';\nimport { useValueWithTimezone } from '../useValueWithTimezone';\nimport { getSectionTypeGranularity } from '../../utils/getDefaultReferenceDate';\nexport const useFieldState = params => {\n const utils = useUtils();\n const localeText = useLocaleText();\n const adapter = useLocalizationContext();\n const isRtl = useRtl();\n const {\n valueManager,\n fieldValueManager,\n valueType,\n validator,\n internalProps,\n internalProps: {\n value: valueProp,\n defaultValue,\n referenceDate: referenceDateProp,\n onChange,\n format,\n formatDensity = 'dense',\n selectedSections: selectedSectionsProp,\n onSelectedSectionsChange,\n shouldRespectLeadingZeros = false,\n timezone: timezoneProp,\n enableAccessibleFieldDOMStructure = false\n }\n } = params;\n const {\n timezone,\n value: valueFromTheOutside,\n handleValueChange\n } = useValueWithTimezone({\n timezone: timezoneProp,\n value: valueProp,\n defaultValue,\n onChange,\n valueManager\n });\n const localizedDigits = React.useMemo(() => getLocalizedDigits(utils), [utils]);\n const sectionsValueBoundaries = React.useMemo(() => getSectionsBoundaries(utils, localizedDigits, timezone), [utils, localizedDigits, timezone]);\n const getSectionsFromValue = React.useCallback((value, fallbackSections = null) => fieldValueManager.getSectionsFromValue(utils, value, fallbackSections, date => buildSectionsFromFormat({\n utils,\n timezone,\n localeText,\n localizedDigits,\n format,\n date,\n formatDensity,\n shouldRespectLeadingZeros,\n enableAccessibleFieldDOMStructure,\n isRtl\n })), [fieldValueManager, format, localeText, localizedDigits, isRtl, shouldRespectLeadingZeros, utils, formatDensity, timezone, enableAccessibleFieldDOMStructure]);\n const [state, setState] = React.useState(() => {\n const sections = getSectionsFromValue(valueFromTheOutside);\n validateSections(sections, valueType);\n const stateWithoutReferenceDate = {\n sections,\n value: valueFromTheOutside,\n referenceValue: valueManager.emptyValue,\n tempValueStrAndroid: null\n };\n const granularity = getSectionTypeGranularity(sections);\n const referenceValue = valueManager.getInitialReferenceValue({\n referenceDate: referenceDateProp,\n value: valueFromTheOutside,\n utils,\n props: internalProps,\n granularity,\n timezone\n });\n return _extends({}, stateWithoutReferenceDate, {\n referenceValue\n });\n });\n const [selectedSections, innerSetSelectedSections] = useControlled({\n controlled: selectedSectionsProp,\n default: null,\n name: 'useField',\n state: 'selectedSections'\n });\n const setSelectedSections = newSelectedSections => {\n innerSetSelectedSections(newSelectedSections);\n onSelectedSectionsChange?.(newSelectedSections);\n };\n const parsedSelectedSections = React.useMemo(() => parseSelectedSections(selectedSections, state.sections), [selectedSections, state.sections]);\n const activeSectionIndex = parsedSelectedSections === 'all' ? 0 : parsedSelectedSections;\n const publishValue = ({\n value,\n referenceValue,\n sections\n }) => {\n setState(prevState => _extends({}, prevState, {\n sections,\n value,\n referenceValue,\n tempValueStrAndroid: null\n }));\n if (valueManager.areValuesEqual(utils, state.value, value)) {\n return;\n }\n const context = {\n validationError: validator({\n adapter,\n value,\n props: _extends({}, internalProps, {\n value,\n timezone\n })\n })\n };\n handleValueChange(value, context);\n };\n const setSectionValue = (sectionIndex, newSectionValue) => {\n const newSections = [...state.sections];\n newSections[sectionIndex] = _extends({}, newSections[sectionIndex], {\n value: newSectionValue,\n modified: true\n });\n return newSections;\n };\n const clearValue = () => {\n publishValue({\n value: valueManager.emptyValue,\n referenceValue: state.referenceValue,\n sections: getSectionsFromValue(valueManager.emptyValue)\n });\n };\n const clearActiveSection = () => {\n if (activeSectionIndex == null) {\n return;\n }\n const activeSection = state.sections[activeSectionIndex];\n const activeDateManager = fieldValueManager.getActiveDateManager(utils, state, activeSection);\n const nonEmptySectionCountBefore = activeDateManager.getSections(state.sections).filter(section => section.value !== '').length;\n const hasNoOtherNonEmptySections = nonEmptySectionCountBefore === (activeSection.value === '' ? 0 : 1);\n const newSections = setSectionValue(activeSectionIndex, '');\n const newActiveDate = hasNoOtherNonEmptySections ? null : utils.getInvalidDate();\n const newValues = activeDateManager.getNewValuesFromNewActiveDate(newActiveDate);\n publishValue(_extends({}, newValues, {\n sections: newSections\n }));\n };\n const updateValueFromValueStr = valueStr => {\n const parseDateStr = (dateStr, referenceDate) => {\n const date = utils.parse(dateStr, format);\n if (date == null || !utils.isValid(date)) {\n return null;\n }\n const sections = buildSectionsFromFormat({\n utils,\n timezone,\n localeText,\n localizedDigits,\n format,\n date,\n formatDensity,\n shouldRespectLeadingZeros,\n enableAccessibleFieldDOMStructure,\n isRtl\n });\n return mergeDateIntoReferenceDate(utils, timezone, date, sections, referenceDate, false);\n };\n const newValue = fieldValueManager.parseValueStr(valueStr, state.referenceValue, parseDateStr);\n const newReferenceValue = fieldValueManager.updateReferenceValue(utils, newValue, state.referenceValue);\n publishValue({\n value: newValue,\n referenceValue: newReferenceValue,\n sections: getSectionsFromValue(newValue, state.sections)\n });\n };\n const updateSectionValue = ({\n activeSection,\n newSectionValue,\n shouldGoToNextSection\n }) => {\n /**\n * 1. Decide which section should be focused\n */\n if (shouldGoToNextSection && activeSectionIndex < state.sections.length - 1) {\n setSelectedSections(activeSectionIndex + 1);\n }\n\n /**\n * 2. Try to build a valid date from the new section value\n */\n const activeDateManager = fieldValueManager.getActiveDateManager(utils, state, activeSection);\n const newSections = setSectionValue(activeSectionIndex, newSectionValue);\n const newActiveDateSections = activeDateManager.getSections(newSections);\n const newActiveDate = getDateFromDateSections(utils, newActiveDateSections, localizedDigits);\n let values;\n let shouldPublish;\n\n /**\n * If the new date is valid,\n * Then we merge the value of the modified sections into the reference date.\n * This makes sure that we don't lose some information of the initial date (like the time on a date field).\n */\n if (newActiveDate != null && utils.isValid(newActiveDate)) {\n const mergedDate = mergeDateIntoReferenceDate(utils, timezone, newActiveDate, newActiveDateSections, activeDateManager.referenceDate, true);\n values = activeDateManager.getNewValuesFromNewActiveDate(mergedDate);\n shouldPublish = true;\n } else {\n values = activeDateManager.getNewValuesFromNewActiveDate(newActiveDate);\n shouldPublish = (newActiveDate != null && !utils.isValid(newActiveDate)) !== (activeDateManager.date != null && !utils.isValid(activeDateManager.date));\n }\n\n /**\n * Publish or update the internal state with the new value and sections.\n */\n if (shouldPublish) {\n return publishValue(_extends({}, values, {\n sections: newSections\n }));\n }\n return setState(prevState => _extends({}, prevState, values, {\n sections: newSections,\n tempValueStrAndroid: null\n }));\n };\n const setTempAndroidValueStr = tempValueStrAndroid => setState(prev => _extends({}, prev, {\n tempValueStrAndroid\n }));\n React.useEffect(() => {\n const sections = getSectionsFromValue(state.value);\n validateSections(sections, valueType);\n setState(prevState => _extends({}, prevState, {\n sections\n }));\n }, [format, utils.locale, isRtl]); // eslint-disable-line react-hooks/exhaustive-deps\n\n React.useEffect(() => {\n let shouldUpdate;\n if (!valueManager.areValuesEqual(utils, state.value, valueFromTheOutside)) {\n shouldUpdate = true;\n } else {\n shouldUpdate = valueManager.getTimezone(utils, state.value) !== valueManager.getTimezone(utils, valueFromTheOutside);\n }\n if (shouldUpdate) {\n setState(prevState => _extends({}, prevState, {\n value: valueFromTheOutside,\n referenceValue: fieldValueManager.updateReferenceValue(utils, valueFromTheOutside, prevState.referenceValue),\n sections: getSectionsFromValue(valueFromTheOutside)\n }));\n }\n }, [valueFromTheOutside]); // eslint-disable-line react-hooks/exhaustive-deps\n\n return {\n state,\n activeSectionIndex,\n parsedSelectedSections,\n setSelectedSections,\n clearValue,\n clearActiveSection,\n updateSectionValue,\n updateValueFromValueStr,\n setTempAndroidValueStr,\n getSectionsFromValue,\n sectionsValueBoundaries,\n localizedDigits,\n timezone\n };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { useUtils } from '../useUtils';\nimport { changeSectionValueFormat, cleanDigitSectionValue, doesSectionFormatHaveLeadingZeros, getDateSectionConfigFromFormatToken, getDaysInWeekStr, getLetterEditingOptions, applyLocalizedDigits, removeLocalizedDigits, isStringNumber } from './useField.utils';\n\n/**\n * The letter editing and the numeric editing each define a `CharacterEditingApplier`.\n * This function decides what the new section value should be and if the focus should switch to the next section.\n *\n * If it returns `null`, then the section value is not updated and the focus does not move.\n */\n\n/**\n * Function called by `applyQuery` which decides:\n * - what is the new section value ?\n * - should the query used to get this value be stored for the next key press ?\n *\n * If it returns `{ sectionValue: string; shouldGoToNextSection: boolean }`,\n * Then we store the query and update the section with the new value.\n *\n * If it returns `{ saveQuery: true` },\n * Then we store the query and don't update the section.\n *\n * If it returns `{ saveQuery: false },\n * Then we do nothing.\n */\n\nconst QUERY_LIFE_DURATION_MS = 5000;\nconst isQueryResponseWithoutValue = response => response.saveQuery != null;\n\n/**\n * Update the active section value when the user pressed a key that is not a navigation key (arrow key for example).\n * This hook has two main editing behaviors\n *\n * 1. The numeric editing when the user presses a digit\n * 2. The letter editing when the user presses another key\n */\nexport const useFieldCharacterEditing = ({\n sections,\n updateSectionValue,\n sectionsValueBoundaries,\n localizedDigits,\n setTempAndroidValueStr,\n timezone\n}) => {\n const utils = useUtils();\n const [query, setQuery] = React.useState(null);\n const resetQuery = useEventCallback(() => setQuery(null));\n React.useEffect(() => {\n if (query != null && sections[query.sectionIndex]?.type !== query.sectionType) {\n resetQuery();\n }\n }, [sections, query, resetQuery]);\n React.useEffect(() => {\n if (query != null) {\n const timeout = setTimeout(() => resetQuery(), QUERY_LIFE_DURATION_MS);\n return () => {\n clearTimeout(timeout);\n };\n }\n return () => {};\n }, [query, resetQuery]);\n const applyQuery = ({\n keyPressed,\n sectionIndex\n }, getFirstSectionValueMatchingWithQuery, isValidQueryValue) => {\n const cleanKeyPressed = keyPressed.toLowerCase();\n const activeSection = sections[sectionIndex];\n\n // The current query targets the section being editing\n // We can try to concatenate the value\n if (query != null && (!isValidQueryValue || isValidQueryValue(query.value)) && query.sectionIndex === sectionIndex) {\n const concatenatedQueryValue = `${query.value}${cleanKeyPressed}`;\n const queryResponse = getFirstSectionValueMatchingWithQuery(concatenatedQueryValue, activeSection);\n if (!isQueryResponseWithoutValue(queryResponse)) {\n setQuery({\n sectionIndex,\n value: concatenatedQueryValue,\n sectionType: activeSection.type\n });\n return queryResponse;\n }\n }\n const queryResponse = getFirstSectionValueMatchingWithQuery(cleanKeyPressed, activeSection);\n if (isQueryResponseWithoutValue(queryResponse) && !queryResponse.saveQuery) {\n resetQuery();\n return null;\n }\n setQuery({\n sectionIndex,\n value: cleanKeyPressed,\n sectionType: activeSection.type\n });\n if (isQueryResponseWithoutValue(queryResponse)) {\n return null;\n }\n return queryResponse;\n };\n const applyLetterEditing = params => {\n const findMatchingOptions = (format, options, queryValue) => {\n const matchingValues = options.filter(option => option.toLowerCase().startsWith(queryValue));\n if (matchingValues.length === 0) {\n return {\n saveQuery: false\n };\n }\n return {\n sectionValue: matchingValues[0],\n shouldGoToNextSection: matchingValues.length === 1\n };\n };\n const testQueryOnFormatAndFallbackFormat = (queryValue, activeSection, fallbackFormat, formatFallbackValue) => {\n const getOptions = format => getLetterEditingOptions(utils, timezone, activeSection.type, format);\n if (activeSection.contentType === 'letter') {\n return findMatchingOptions(activeSection.format, getOptions(activeSection.format), queryValue);\n }\n\n // When editing a digit-format month / weekDay and the user presses a letter,\n // We can support the letter editing by using the letter-format month / weekDay and re-formatting the result.\n // We just have to make sure that the default month / weekDay format is a letter format,\n if (fallbackFormat && formatFallbackValue != null && getDateSectionConfigFromFormatToken(utils, fallbackFormat).contentType === 'letter') {\n const fallbackOptions = getOptions(fallbackFormat);\n const response = findMatchingOptions(fallbackFormat, fallbackOptions, queryValue);\n if (isQueryResponseWithoutValue(response)) {\n return {\n saveQuery: false\n };\n }\n return _extends({}, response, {\n sectionValue: formatFallbackValue(response.sectionValue, fallbackOptions)\n });\n }\n return {\n saveQuery: false\n };\n };\n const getFirstSectionValueMatchingWithQuery = (queryValue, activeSection) => {\n switch (activeSection.type) {\n case 'month':\n {\n const formatFallbackValue = fallbackValue => changeSectionValueFormat(utils, fallbackValue, utils.formats.month, activeSection.format);\n return testQueryOnFormatAndFallbackFormat(queryValue, activeSection, utils.formats.month, formatFallbackValue);\n }\n case 'weekDay':\n {\n const formatFallbackValue = (fallbackValue, fallbackOptions) => fallbackOptions.indexOf(fallbackValue).toString();\n return testQueryOnFormatAndFallbackFormat(queryValue, activeSection, utils.formats.weekday, formatFallbackValue);\n }\n case 'meridiem':\n {\n return testQueryOnFormatAndFallbackFormat(queryValue, activeSection);\n }\n default:\n {\n return {\n saveQuery: false\n };\n }\n }\n };\n return applyQuery(params, getFirstSectionValueMatchingWithQuery);\n };\n const applyNumericEditing = params => {\n const getNewSectionValue = (queryValue, section) => {\n const cleanQueryValue = removeLocalizedDigits(queryValue, localizedDigits);\n const queryValueNumber = Number(cleanQueryValue);\n const sectionBoundaries = sectionsValueBoundaries[section.type]({\n currentDate: null,\n format: section.format,\n contentType: section.contentType\n });\n if (queryValueNumber > sectionBoundaries.maximum) {\n return {\n saveQuery: false\n };\n }\n\n // If the user types `0` on a month section,\n // It is below the minimum, but we want to store the `0` in the query,\n // So that when he pressed `1`, it will store `01` and move to the next section.\n if (queryValueNumber < sectionBoundaries.minimum) {\n return {\n saveQuery: true\n };\n }\n const shouldGoToNextSection = queryValueNumber * 10 > sectionBoundaries.maximum || cleanQueryValue.length === sectionBoundaries.maximum.toString().length;\n const newSectionValue = cleanDigitSectionValue(utils, queryValueNumber, sectionBoundaries, localizedDigits, section);\n return {\n sectionValue: newSectionValue,\n shouldGoToNextSection\n };\n };\n const getFirstSectionValueMatchingWithQuery = (queryValue, activeSection) => {\n if (activeSection.contentType === 'digit' || activeSection.contentType === 'digit-with-letter') {\n return getNewSectionValue(queryValue, activeSection);\n }\n\n // When editing a letter-format month and the user presses a digit,\n // We can support the numeric editing by using the digit-format month and re-formatting the result.\n if (activeSection.type === 'month') {\n const hasLeadingZerosInFormat = doesSectionFormatHaveLeadingZeros(utils, timezone, 'digit', 'month', 'MM');\n const response = getNewSectionValue(queryValue, {\n type: activeSection.type,\n format: 'MM',\n hasLeadingZerosInFormat,\n hasLeadingZerosInInput: true,\n contentType: 'digit',\n maxLength: 2\n });\n if (isQueryResponseWithoutValue(response)) {\n return response;\n }\n const formattedValue = changeSectionValueFormat(utils, response.sectionValue, 'MM', activeSection.format);\n return _extends({}, response, {\n sectionValue: formattedValue\n });\n }\n\n // When editing a letter-format weekDay and the user presses a digit,\n // We can support the numeric editing by returning the nth day in the week day array.\n if (activeSection.type === 'weekDay') {\n const response = getNewSectionValue(queryValue, activeSection);\n if (isQueryResponseWithoutValue(response)) {\n return response;\n }\n const formattedValue = getDaysInWeekStr(utils, timezone, activeSection.format)[Number(response.sectionValue) - 1];\n return _extends({}, response, {\n sectionValue: formattedValue\n });\n }\n return {\n saveQuery: false\n };\n };\n return applyQuery(params, getFirstSectionValueMatchingWithQuery, queryValue => isStringNumber(queryValue, localizedDigits));\n };\n const applyCharacterEditing = useEventCallback(params => {\n const activeSection = sections[params.sectionIndex];\n const isNumericEditing = isStringNumber(params.keyPressed, localizedDigits);\n const response = isNumericEditing ? applyNumericEditing(_extends({}, params, {\n keyPressed: applyLocalizedDigits(params.keyPressed, localizedDigits)\n })) : applyLetterEditing(params);\n if (response == null) {\n setTempAndroidValueStr(null);\n return;\n }\n updateSectionValue({\n activeSection,\n newSectionValue: response.sectionValue,\n shouldGoToNextSection: response.shouldGoToNextSection\n });\n });\n return {\n applyCharacterEditing,\n resetCharacterQuery: resetQuery\n };\n};","import * as React from 'react';\nimport useForkRef from '@mui/utils/useForkRef';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport useId from '@mui/utils/useId';\nimport { getSectionValueNow, getSectionValueText, parseSelectedSections } from './useField.utils';\nimport { getActiveElement } from '../../utils/utils';\nimport { useLocaleText, useUtils } from '../useUtils';\nexport const useFieldV7TextField = params => {\n const {\n internalProps: {\n disabled,\n readOnly = false\n },\n forwardedProps: {\n sectionListRef: inSectionListRef,\n onBlur,\n onClick,\n onFocus,\n onInput,\n onPaste,\n focused: focusedProp,\n autoFocus = false\n },\n fieldValueManager,\n applyCharacterEditing,\n resetCharacterQuery,\n setSelectedSections,\n parsedSelectedSections,\n state,\n clearActiveSection,\n clearValue,\n updateSectionValue,\n updateValueFromValueStr,\n sectionOrder,\n areAllSectionsEmpty,\n sectionsValueBoundaries\n } = params;\n const sectionListRef = React.useRef(null);\n const handleSectionListRef = useForkRef(inSectionListRef, sectionListRef);\n const localeText = useLocaleText();\n const utils = useUtils();\n const id = useId();\n const [focused, setFocused] = React.useState(false);\n const interactions = React.useMemo(() => ({\n syncSelectionToDOM: () => {\n if (!sectionListRef.current) {\n return;\n }\n const selection = document.getSelection();\n if (!selection) {\n return;\n }\n if (parsedSelectedSections == null) {\n // If the selection contains an element inside the field, we reset it.\n if (selection.rangeCount > 0 && sectionListRef.current.getRoot().contains(selection.getRangeAt(0).startContainer)) {\n selection.removeAllRanges();\n }\n if (focused) {\n sectionListRef.current.getRoot().blur();\n }\n return;\n }\n\n // On multi input range pickers we want to update selection range only for the active input\n if (!sectionListRef.current.getRoot().contains(getActiveElement(document))) {\n return;\n }\n const range = new window.Range();\n let target;\n if (parsedSelectedSections === 'all') {\n target = sectionListRef.current.getRoot();\n } else {\n const section = state.sections[parsedSelectedSections];\n if (section.type === 'empty') {\n target = sectionListRef.current.getSectionContainer(parsedSelectedSections);\n } else {\n target = sectionListRef.current.getSectionContent(parsedSelectedSections);\n }\n }\n range.selectNodeContents(target);\n target.focus();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n getActiveSectionIndexFromDOM: () => {\n const activeElement = getActiveElement(document);\n if (!activeElement || !sectionListRef.current || !sectionListRef.current.getRoot().contains(activeElement)) {\n return null;\n }\n return sectionListRef.current.getSectionIndexFromDOMElement(activeElement);\n },\n focusField: (newSelectedSections = 0) => {\n if (!sectionListRef.current) {\n return;\n }\n const newParsedSelectedSections = parseSelectedSections(newSelectedSections, state.sections);\n setFocused(true);\n sectionListRef.current.getSectionContent(newParsedSelectedSections).focus();\n },\n setSelectedSections: newSelectedSections => {\n if (!sectionListRef.current) {\n return;\n }\n const newParsedSelectedSections = parseSelectedSections(newSelectedSections, state.sections);\n const newActiveSectionIndex = newParsedSelectedSections === 'all' ? 0 : newParsedSelectedSections;\n setFocused(newActiveSectionIndex !== null);\n setSelectedSections(newSelectedSections);\n },\n isFieldFocused: () => {\n const activeElement = getActiveElement(document);\n return !!sectionListRef.current && sectionListRef.current.getRoot().contains(activeElement);\n }\n }), [parsedSelectedSections, setSelectedSections, state.sections, focused]);\n\n /**\n * If a section content has been updated with a value we don't want to keep,\n * Then we need to imperatively revert it (we can't let React do it because the value did not change in his internal representation).\n */\n const revertDOMSectionChange = useEventCallback(sectionIndex => {\n if (!sectionListRef.current) {\n return;\n }\n const section = state.sections[sectionIndex];\n sectionListRef.current.getSectionContent(sectionIndex).innerHTML = section.value || section.placeholder;\n interactions.syncSelectionToDOM();\n });\n const handleContainerClick = useEventCallback((event, ...args) => {\n // The click event on the clear button would propagate to the input, trigger this handler and result in a wrong section selection.\n // We avoid this by checking if the call of `handleContainerClick` is actually intended, or a side effect.\n if (event.isDefaultPrevented() || !sectionListRef.current) {\n return;\n }\n setFocused(true);\n onClick?.(event, ...args);\n if (parsedSelectedSections === 'all') {\n setTimeout(() => {\n const cursorPosition = document.getSelection().getRangeAt(0).startOffset;\n if (cursorPosition === 0) {\n setSelectedSections(sectionOrder.startIndex);\n return;\n }\n let sectionIndex = 0;\n let cursorOnStartOfSection = 0;\n while (cursorOnStartOfSection < cursorPosition && sectionIndex < state.sections.length) {\n const section = state.sections[sectionIndex];\n sectionIndex += 1;\n cursorOnStartOfSection += `${section.startSeparator}${section.value || section.placeholder}${section.endSeparator}`.length;\n }\n setSelectedSections(sectionIndex - 1);\n });\n } else if (!focused) {\n setFocused(true);\n setSelectedSections(sectionOrder.startIndex);\n } else {\n const hasClickedOnASection = sectionListRef.current.getRoot().contains(event.target);\n if (!hasClickedOnASection) {\n setSelectedSections(sectionOrder.startIndex);\n }\n }\n });\n const handleContainerInput = useEventCallback(event => {\n onInput?.(event);\n if (!sectionListRef.current || parsedSelectedSections !== 'all') {\n return;\n }\n const target = event.target;\n const keyPressed = target.textContent ?? '';\n sectionListRef.current.getRoot().innerHTML = state.sections.map(section => `${section.startSeparator}${section.value || section.placeholder}${section.endSeparator}`).join('');\n interactions.syncSelectionToDOM();\n if (keyPressed.length === 0 || keyPressed.charCodeAt(0) === 10) {\n resetCharacterQuery();\n clearValue();\n setSelectedSections('all');\n } else if (keyPressed.length > 1) {\n updateValueFromValueStr(keyPressed);\n } else {\n applyCharacterEditing({\n keyPressed,\n sectionIndex: 0\n });\n }\n });\n const handleContainerPaste = useEventCallback(event => {\n onPaste?.(event);\n if (readOnly || parsedSelectedSections !== 'all') {\n event.preventDefault();\n return;\n }\n const pastedValue = event.clipboardData.getData('text');\n event.preventDefault();\n resetCharacterQuery();\n updateValueFromValueStr(pastedValue);\n });\n const handleContainerFocus = useEventCallback((...args) => {\n onFocus?.(...args);\n if (focused || !sectionListRef.current) {\n return;\n }\n setFocused(true);\n const isFocusInsideASection = sectionListRef.current.getSectionIndexFromDOMElement(getActiveElement(document)) != null;\n if (!isFocusInsideASection) {\n setSelectedSections(sectionOrder.startIndex);\n }\n });\n const handleContainerBlur = useEventCallback((...args) => {\n onBlur?.(...args);\n setTimeout(() => {\n if (!sectionListRef.current) {\n return;\n }\n const activeElement = getActiveElement(document);\n const shouldBlur = !sectionListRef.current.getRoot().contains(activeElement);\n if (shouldBlur) {\n setFocused(false);\n setSelectedSections(null);\n }\n });\n });\n const getInputContainerClickHandler = useEventCallback(sectionIndex => event => {\n // The click event on the clear button would propagate to the input, trigger this handler and result in a wrong section selection.\n // We avoid this by checking if the call to this function is actually intended, or a side effect.\n if (event.isDefaultPrevented() || readOnly) {\n return;\n }\n setSelectedSections(sectionIndex);\n });\n const handleInputContentMouseUp = useEventCallback(event => {\n // Without this, the browser will remove the selected when clicking inside an already-selected section.\n event.preventDefault();\n });\n const getInputContentFocusHandler = useEventCallback(sectionIndex => () => {\n if (readOnly) {\n return;\n }\n setSelectedSections(sectionIndex);\n });\n const handleInputContentPaste = useEventCallback(event => {\n // prevent default to avoid the input `onInput` handler being called\n event.preventDefault();\n if (readOnly || typeof parsedSelectedSections !== 'number') {\n return;\n }\n const activeSection = state.sections[parsedSelectedSections];\n const pastedValue = event.clipboardData.getData('text');\n const lettersOnly = /^[a-zA-Z]+$/.test(pastedValue);\n const digitsOnly = /^[0-9]+$/.test(pastedValue);\n const digitsAndLetterOnly = /^(([a-zA-Z]+)|)([0-9]+)(([a-zA-Z]+)|)$/.test(pastedValue);\n const isValidPastedValue = activeSection.contentType === 'letter' && lettersOnly || activeSection.contentType === 'digit' && digitsOnly || activeSection.contentType === 'digit-with-letter' && digitsAndLetterOnly;\n if (isValidPastedValue) {\n resetCharacterQuery();\n updateSectionValue({\n activeSection,\n newSectionValue: pastedValue,\n shouldGoToNextSection: true\n });\n }\n // If the pasted value corresponds to a single section, but not the expected type, we skip the modification\n else if (!lettersOnly && !digitsOnly) {\n resetCharacterQuery();\n updateValueFromValueStr(pastedValue);\n }\n });\n const handleInputContentDragOver = useEventCallback(event => {\n event.preventDefault();\n event.dataTransfer.dropEffect = 'none';\n });\n const handleInputContentInput = useEventCallback(event => {\n if (!sectionListRef.current) {\n return;\n }\n const target = event.target;\n const keyPressed = target.textContent ?? '';\n const sectionIndex = sectionListRef.current.getSectionIndexFromDOMElement(target);\n const section = state.sections[sectionIndex];\n if (readOnly || !sectionListRef.current) {\n revertDOMSectionChange(sectionIndex);\n return;\n }\n if (keyPressed.length === 0) {\n if (section.value === '') {\n revertDOMSectionChange(sectionIndex);\n return;\n }\n const inputType = event.nativeEvent.inputType;\n if (inputType === 'insertParagraph' || inputType === 'insertLineBreak') {\n revertDOMSectionChange(sectionIndex);\n return;\n }\n resetCharacterQuery();\n clearActiveSection();\n return;\n }\n applyCharacterEditing({\n keyPressed,\n sectionIndex\n });\n\n // The DOM value needs to remain the one React is expecting.\n revertDOMSectionChange(sectionIndex);\n });\n useEnhancedEffect(() => {\n if (!focused || !sectionListRef.current) {\n return;\n }\n if (parsedSelectedSections === 'all') {\n sectionListRef.current.getRoot().focus();\n } else if (typeof parsedSelectedSections === 'number') {\n const domElement = sectionListRef.current.getSectionContent(parsedSelectedSections);\n if (domElement) {\n domElement.focus();\n }\n }\n }, [parsedSelectedSections, focused]);\n const sectionBoundaries = React.useMemo(() => {\n return state.sections.reduce((acc, next) => {\n acc[next.type] = sectionsValueBoundaries[next.type]({\n currentDate: null,\n contentType: next.contentType,\n format: next.format\n });\n return acc;\n }, {});\n }, [sectionsValueBoundaries, state.sections]);\n const isContainerEditable = parsedSelectedSections === 'all';\n const elements = React.useMemo(() => {\n return state.sections.map((section, index) => {\n const isEditable = !isContainerEditable && !disabled && !readOnly;\n return {\n container: {\n 'data-sectionindex': index,\n onClick: getInputContainerClickHandler(index)\n },\n content: {\n tabIndex: isContainerEditable || index > 0 ? -1 : 0,\n contentEditable: !isContainerEditable && !disabled && !readOnly,\n role: 'spinbutton',\n id: `${id}-${section.type}`,\n 'aria-labelledby': `${id}-${section.type}`,\n 'aria-readonly': readOnly,\n 'aria-valuenow': getSectionValueNow(section, utils),\n 'aria-valuemin': sectionBoundaries[section.type].minimum,\n 'aria-valuemax': sectionBoundaries[section.type].maximum,\n 'aria-valuetext': section.value ? getSectionValueText(section, utils) : localeText.empty,\n 'aria-label': localeText[section.type],\n 'aria-disabled': disabled,\n spellCheck: isEditable ? false : undefined,\n autoCapitalize: isEditable ? 'off' : undefined,\n autoCorrect: isEditable ? 'off' : undefined,\n [parseInt(React.version, 10) >= 17 ? 'enterKeyHint' : 'enterkeyhint']: isEditable ? 'next' : undefined,\n children: section.value || section.placeholder,\n onInput: handleInputContentInput,\n onPaste: handleInputContentPaste,\n onFocus: getInputContentFocusHandler(index),\n onDragOver: handleInputContentDragOver,\n onMouseUp: handleInputContentMouseUp,\n inputMode: section.contentType === 'letter' ? 'text' : 'numeric'\n },\n before: {\n children: section.startSeparator\n },\n after: {\n children: section.endSeparator\n }\n };\n });\n }, [state.sections, getInputContentFocusHandler, handleInputContentPaste, handleInputContentDragOver, handleInputContentInput, getInputContainerClickHandler, handleInputContentMouseUp, disabled, readOnly, isContainerEditable, localeText, utils, sectionBoundaries, id]);\n const handleValueStrChange = useEventCallback(event => {\n updateValueFromValueStr(event.target.value);\n });\n const valueStr = React.useMemo(() => areAllSectionsEmpty ? '' : fieldValueManager.getV7HiddenInputValueFromSections(state.sections), [areAllSectionsEmpty, state.sections, fieldValueManager]);\n React.useEffect(() => {\n if (sectionListRef.current == null) {\n throw new Error(['MUI X: The `sectionListRef` prop has not been initialized by `PickersSectionList`', 'You probably tried to pass a component to the `textField` slot that contains an `` element instead of a `PickersSectionList`.', '', 'If you want to keep using an `` HTML element for the editing, please remove the `enableAccessibleFieldDOMStructure` prop from your picker or field component:', '', '', '', 'Learn more about the field accessible DOM structure on the MUI documentation: https://mui.com/x/react-date-pickers/fields/#fields-to-edit-a-single-element'].join('\\n'));\n }\n if (autoFocus && sectionListRef.current) {\n sectionListRef.current.getSectionContent(sectionOrder.startIndex).focus();\n }\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n return {\n interactions,\n returnedValue: {\n // Forwarded\n autoFocus,\n readOnly,\n focused: focusedProp ?? focused,\n sectionListRef: handleSectionListRef,\n onBlur: handleContainerBlur,\n onClick: handleContainerClick,\n onFocus: handleContainerFocus,\n onInput: handleContainerInput,\n onPaste: handleContainerPaste,\n // Additional\n enableAccessibleFieldDOMStructure: true,\n elements,\n // TODO v7: Try to set to undefined when there is a section selected.\n tabIndex: parsedSelectedSections === 0 ? -1 : 0,\n contentEditable: isContainerEditable,\n value: valueStr,\n onChange: handleValueStrChange,\n areAllSectionsEmpty\n }\n };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport useForkRef from '@mui/utils/useForkRef';\nimport { getActiveElement } from '../../utils/utils';\nimport { getSectionVisibleValue, isAndroid } from './useField.utils';\nconst cleanString = dirtyString => dirtyString.replace(/[\\u2066\\u2067\\u2068\\u2069]/g, '');\nexport const addPositionPropertiesToSections = (sections, localizedDigits, isRtl) => {\n let position = 0;\n let positionInInput = isRtl ? 1 : 0;\n const newSections = [];\n for (let i = 0; i < sections.length; i += 1) {\n const section = sections[i];\n const renderedValue = getSectionVisibleValue(section, isRtl ? 'input-rtl' : 'input-ltr', localizedDigits);\n const sectionStr = `${section.startSeparator}${renderedValue}${section.endSeparator}`;\n const sectionLength = cleanString(sectionStr).length;\n const sectionLengthInInput = sectionStr.length;\n\n // The ...InInput values consider the unicode characters but do include them in their indexes\n const cleanedValue = cleanString(renderedValue);\n const startInInput = positionInInput + (cleanedValue === '' ? 0 : renderedValue.indexOf(cleanedValue[0])) + section.startSeparator.length;\n const endInInput = startInInput + cleanedValue.length;\n newSections.push(_extends({}, section, {\n start: position,\n end: position + sectionLength,\n startInInput,\n endInInput\n }));\n position += sectionLength;\n // Move position to the end of string associated to the current section\n positionInInput += sectionLengthInInput;\n }\n return newSections;\n};\nexport const useFieldV6TextField = params => {\n const isRtl = useRtl();\n const focusTimeoutRef = React.useRef();\n const {\n forwardedProps: {\n onFocus,\n onClick,\n onPaste,\n onBlur,\n inputRef: inputRefProp,\n placeholder: inPlaceholder\n },\n internalProps: {\n readOnly = false\n },\n parsedSelectedSections,\n activeSectionIndex,\n state,\n fieldValueManager,\n valueManager,\n applyCharacterEditing,\n resetCharacterQuery,\n updateSectionValue,\n updateValueFromValueStr,\n clearActiveSection,\n clearValue,\n setTempAndroidValueStr,\n setSelectedSections,\n getSectionsFromValue,\n areAllSectionsEmpty,\n localizedDigits\n } = params;\n const inputRef = React.useRef(null);\n const handleRef = useForkRef(inputRefProp, inputRef);\n const sections = React.useMemo(() => addPositionPropertiesToSections(state.sections, localizedDigits, isRtl), [state.sections, localizedDigits, isRtl]);\n const interactions = React.useMemo(() => ({\n syncSelectionToDOM: () => {\n if (!inputRef.current) {\n return;\n }\n if (parsedSelectedSections == null) {\n if (inputRef.current.scrollLeft) {\n // Ensure that input content is not marked as selected.\n // setting selection range to 0 causes issues in Safari.\n // https://bugs.webkit.org/show_bug.cgi?id=224425\n inputRef.current.scrollLeft = 0;\n }\n return;\n }\n\n // On multi input range pickers we want to update selection range only for the active input\n // This helps to avoid the focus jumping on Safari https://github.com/mui/mui-x/issues/9003\n // because WebKit implements the `setSelectionRange` based on the spec: https://bugs.webkit.org/show_bug.cgi?id=224425\n if (inputRef.current !== getActiveElement(document)) {\n return;\n }\n\n // Fix scroll jumping on iOS browser: https://github.com/mui/mui-x/issues/8321\n const currentScrollTop = inputRef.current.scrollTop;\n if (parsedSelectedSections === 'all') {\n inputRef.current.select();\n } else {\n const selectedSection = sections[parsedSelectedSections];\n const selectionStart = selectedSection.type === 'empty' ? selectedSection.startInInput - selectedSection.startSeparator.length : selectedSection.startInInput;\n const selectionEnd = selectedSection.type === 'empty' ? selectedSection.endInInput + selectedSection.endSeparator.length : selectedSection.endInInput;\n if (selectionStart !== inputRef.current.selectionStart || selectionEnd !== inputRef.current.selectionEnd) {\n if (inputRef.current === getActiveElement(document)) {\n inputRef.current.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n setTimeout(() => {\n // handle case when the selection is not updated correctly\n // could happen on Android\n if (inputRef.current && inputRef.current === getActiveElement(document) && (inputRef.current.selectionStart !== selectionStart || inputRef.current.selectionEnd !== selectionEnd)) {\n interactions.syncSelectionToDOM();\n }\n });\n }\n\n // Even reading this variable seems to do the trick, but also setting it just to make use of it\n inputRef.current.scrollTop = currentScrollTop;\n },\n getActiveSectionIndexFromDOM: () => {\n const browserStartIndex = inputRef.current.selectionStart ?? 0;\n const browserEndIndex = inputRef.current.selectionEnd ?? 0;\n const isInputReadOnly = !!inputRef.current?.readOnly;\n if (browserStartIndex === 0 && browserEndIndex === 0 || isInputReadOnly) {\n return null;\n }\n const nextSectionIndex = browserStartIndex <= sections[0].startInInput ? 1 // Special case if browser index is in invisible characters at the beginning.\n : sections.findIndex(section => section.startInInput - section.startSeparator.length > browserStartIndex);\n return nextSectionIndex === -1 ? sections.length - 1 : nextSectionIndex - 1;\n },\n focusField: (newSelectedSection = 0) => {\n inputRef.current?.focus();\n setSelectedSections(newSelectedSection);\n },\n setSelectedSections: newSelectedSections => setSelectedSections(newSelectedSections),\n isFieldFocused: () => inputRef.current === getActiveElement(document)\n }), [inputRef, parsedSelectedSections, sections, setSelectedSections]);\n const syncSelectionFromDOM = () => {\n if (readOnly) {\n setSelectedSections(null);\n return;\n }\n const browserStartIndex = inputRef.current.selectionStart ?? 0;\n let nextSectionIndex;\n if (browserStartIndex <= sections[0].startInInput) {\n // Special case if browser index is in invisible characters at the beginning\n nextSectionIndex = 1;\n } else if (browserStartIndex >= sections[sections.length - 1].endInInput) {\n // If the click is after the last character of the input, then we want to select the 1st section.\n nextSectionIndex = 1;\n } else {\n nextSectionIndex = sections.findIndex(section => section.startInInput - section.startSeparator.length > browserStartIndex);\n }\n const sectionIndex = nextSectionIndex === -1 ? sections.length - 1 : nextSectionIndex - 1;\n setSelectedSections(sectionIndex);\n };\n const handleInputFocus = useEventCallback((...args) => {\n onFocus?.(...args);\n // The ref is guaranteed to be resolved at this point.\n const input = inputRef.current;\n clearTimeout(focusTimeoutRef.current);\n focusTimeoutRef.current = setTimeout(() => {\n // The ref changed, the component got remounted, the focus event is no longer relevant.\n if (!input || input !== inputRef.current) {\n return;\n }\n if (activeSectionIndex != null || readOnly) {\n return;\n }\n if (\n // avoid selecting all sections when focusing empty field without value\n input.value.length && Number(input.selectionEnd) - Number(input.selectionStart) === input.value.length) {\n setSelectedSections('all');\n } else {\n syncSelectionFromDOM();\n }\n });\n });\n const handleInputClick = useEventCallback((event, ...args) => {\n // The click event on the clear button would propagate to the input, trigger this handler and result in a wrong section selection.\n // We avoid this by checking if the call of `handleInputClick` is actually intended, or a side effect.\n if (event.isDefaultPrevented()) {\n return;\n }\n onClick?.(event, ...args);\n syncSelectionFromDOM();\n });\n const handleInputPaste = useEventCallback(event => {\n onPaste?.(event);\n\n // prevent default to avoid the input `onChange` handler being called\n event.preventDefault();\n if (readOnly) {\n return;\n }\n const pastedValue = event.clipboardData.getData('text');\n if (typeof parsedSelectedSections === 'number') {\n const activeSection = state.sections[parsedSelectedSections];\n const lettersOnly = /^[a-zA-Z]+$/.test(pastedValue);\n const digitsOnly = /^[0-9]+$/.test(pastedValue);\n const digitsAndLetterOnly = /^(([a-zA-Z]+)|)([0-9]+)(([a-zA-Z]+)|)$/.test(pastedValue);\n const isValidPastedValue = activeSection.contentType === 'letter' && lettersOnly || activeSection.contentType === 'digit' && digitsOnly || activeSection.contentType === 'digit-with-letter' && digitsAndLetterOnly;\n if (isValidPastedValue) {\n resetCharacterQuery();\n updateSectionValue({\n activeSection,\n newSectionValue: pastedValue,\n shouldGoToNextSection: true\n });\n return;\n }\n if (lettersOnly || digitsOnly) {\n // The pasted value corresponds to a single section, but not the expected type,\n // skip the modification\n return;\n }\n }\n resetCharacterQuery();\n updateValueFromValueStr(pastedValue);\n });\n const handleContainerBlur = useEventCallback((...args) => {\n onBlur?.(...args);\n setSelectedSections(null);\n });\n const handleInputChange = useEventCallback(event => {\n if (readOnly) {\n return;\n }\n const targetValue = event.target.value;\n if (targetValue === '') {\n resetCharacterQuery();\n clearValue();\n return;\n }\n const eventData = event.nativeEvent.data;\n // Calling `.fill(04/11/2022)` in playwright will trigger a change event with the requested content to insert in `event.nativeEvent.data`\n // usual changes have only the currently typed character in the `event.nativeEvent.data`\n const shouldUseEventData = eventData && eventData.length > 1;\n const valueStr = shouldUseEventData ? eventData : targetValue;\n const cleanValueStr = cleanString(valueStr);\n\n // If no section is selected or eventData should be used, we just try to parse the new value\n // This line is mostly triggered by imperative code / application tests.\n if (activeSectionIndex == null || shouldUseEventData) {\n updateValueFromValueStr(shouldUseEventData ? eventData : cleanValueStr);\n return;\n }\n let keyPressed;\n if (parsedSelectedSections === 'all' && cleanValueStr.length === 1) {\n keyPressed = cleanValueStr;\n } else {\n const prevValueStr = cleanString(fieldValueManager.getV6InputValueFromSections(sections, localizedDigits, isRtl));\n let startOfDiffIndex = -1;\n let endOfDiffIndex = -1;\n for (let i = 0; i < prevValueStr.length; i += 1) {\n if (startOfDiffIndex === -1 && prevValueStr[i] !== cleanValueStr[i]) {\n startOfDiffIndex = i;\n }\n if (endOfDiffIndex === -1 && prevValueStr[prevValueStr.length - i - 1] !== cleanValueStr[cleanValueStr.length - i - 1]) {\n endOfDiffIndex = i;\n }\n }\n const activeSection = sections[activeSectionIndex];\n const hasDiffOutsideOfActiveSection = startOfDiffIndex < activeSection.start || prevValueStr.length - endOfDiffIndex - 1 > activeSection.end;\n if (hasDiffOutsideOfActiveSection) {\n // TODO: Support if the new date is valid\n return;\n }\n\n // The active section being selected, the browser has replaced its value with the key pressed by the user.\n const activeSectionEndRelativeToNewValue = cleanValueStr.length - prevValueStr.length + activeSection.end - cleanString(activeSection.endSeparator || '').length;\n keyPressed = cleanValueStr.slice(activeSection.start + cleanString(activeSection.startSeparator || '').length, activeSectionEndRelativeToNewValue);\n }\n if (keyPressed.length === 0) {\n if (isAndroid()) {\n setTempAndroidValueStr(valueStr);\n }\n resetCharacterQuery();\n clearActiveSection();\n return;\n }\n applyCharacterEditing({\n keyPressed,\n sectionIndex: activeSectionIndex\n });\n });\n const placeholder = React.useMemo(() => {\n if (inPlaceholder !== undefined) {\n return inPlaceholder;\n }\n return fieldValueManager.getV6InputValueFromSections(getSectionsFromValue(valueManager.emptyValue), localizedDigits, isRtl);\n }, [inPlaceholder, fieldValueManager, getSectionsFromValue, valueManager.emptyValue, localizedDigits, isRtl]);\n const valueStr = React.useMemo(() => state.tempValueStrAndroid ?? fieldValueManager.getV6InputValueFromSections(state.sections, localizedDigits, isRtl), [state.sections, fieldValueManager, state.tempValueStrAndroid, localizedDigits, isRtl]);\n React.useEffect(() => {\n // Select all the sections when focused on mount (`autoFocus = true` on the input)\n if (inputRef.current && inputRef.current === getActiveElement(document)) {\n setSelectedSections('all');\n }\n return () => {\n clearTimeout(focusTimeoutRef.current);\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n const inputMode = React.useMemo(() => {\n if (activeSectionIndex == null) {\n return 'text';\n }\n if (state.sections[activeSectionIndex].contentType === 'letter') {\n return 'text';\n }\n return 'numeric';\n }, [activeSectionIndex, state.sections]);\n const inputHasFocus = inputRef.current && inputRef.current === getActiveElement(document);\n const shouldShowPlaceholder = !inputHasFocus && areAllSectionsEmpty;\n return {\n interactions,\n returnedValue: {\n // Forwarded\n readOnly,\n onBlur: handleContainerBlur,\n onClick: handleInputClick,\n onFocus: handleInputFocus,\n onPaste: handleInputPaste,\n inputRef: handleRef,\n // Additional\n enableAccessibleFieldDOMStructure: false,\n placeholder,\n inputMode,\n autoComplete: 'off',\n value: shouldShowPlaceholder ? '' : valueStr,\n onChange: handleInputChange\n }\n };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { useValidation } from '../useValidation';\nimport { useUtils } from '../useUtils';\nimport { adjustSectionValue, getSectionOrder } from './useField.utils';\nimport { useFieldState } from './useFieldState';\nimport { useFieldCharacterEditing } from './useFieldCharacterEditing';\nimport { useFieldV7TextField } from './useFieldV7TextField';\nimport { useFieldV6TextField } from './useFieldV6TextField';\nexport const useField = params => {\n const utils = useUtils();\n const {\n internalProps,\n internalProps: {\n unstableFieldRef,\n minutesStep,\n enableAccessibleFieldDOMStructure = false,\n disabled = false,\n readOnly = false\n },\n forwardedProps: {\n onKeyDown,\n error,\n clearable,\n onClear\n },\n fieldValueManager,\n valueManager,\n validator\n } = params;\n const isRtl = useRtl();\n const stateResponse = useFieldState(params);\n const {\n state,\n activeSectionIndex,\n parsedSelectedSections,\n setSelectedSections,\n clearValue,\n clearActiveSection,\n updateSectionValue,\n setTempAndroidValueStr,\n sectionsValueBoundaries,\n localizedDigits,\n timezone\n } = stateResponse;\n const characterEditingResponse = useFieldCharacterEditing({\n sections: state.sections,\n updateSectionValue,\n sectionsValueBoundaries,\n localizedDigits,\n setTempAndroidValueStr,\n timezone\n });\n const {\n resetCharacterQuery\n } = characterEditingResponse;\n const areAllSectionsEmpty = valueManager.areValuesEqual(utils, state.value, valueManager.emptyValue);\n const useFieldTextField = enableAccessibleFieldDOMStructure ? useFieldV7TextField : useFieldV6TextField;\n const sectionOrder = React.useMemo(() => getSectionOrder(state.sections, isRtl && !enableAccessibleFieldDOMStructure), [state.sections, isRtl, enableAccessibleFieldDOMStructure]);\n const {\n returnedValue,\n interactions\n } = useFieldTextField(_extends({}, params, stateResponse, characterEditingResponse, {\n areAllSectionsEmpty,\n sectionOrder\n }));\n const handleContainerKeyDown = useEventCallback(event => {\n onKeyDown?.(event);\n\n // eslint-disable-next-line default-case\n switch (true) {\n // Select all\n case (event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'a' && !event.shiftKey && !event.altKey:\n {\n // prevent default to make sure that the next line \"select all\" while updating\n // the internal state at the same time.\n event.preventDefault();\n setSelectedSections('all');\n break;\n }\n\n // Move selection to next section\n case event.key === 'ArrowRight':\n {\n event.preventDefault();\n if (parsedSelectedSections == null) {\n setSelectedSections(sectionOrder.startIndex);\n } else if (parsedSelectedSections === 'all') {\n setSelectedSections(sectionOrder.endIndex);\n } else {\n const nextSectionIndex = sectionOrder.neighbors[parsedSelectedSections].rightIndex;\n if (nextSectionIndex !== null) {\n setSelectedSections(nextSectionIndex);\n }\n }\n break;\n }\n\n // Move selection to previous section\n case event.key === 'ArrowLeft':\n {\n event.preventDefault();\n if (parsedSelectedSections == null) {\n setSelectedSections(sectionOrder.endIndex);\n } else if (parsedSelectedSections === 'all') {\n setSelectedSections(sectionOrder.startIndex);\n } else {\n const nextSectionIndex = sectionOrder.neighbors[parsedSelectedSections].leftIndex;\n if (nextSectionIndex !== null) {\n setSelectedSections(nextSectionIndex);\n }\n }\n break;\n }\n\n // Reset the value of the selected section\n case event.key === 'Delete':\n {\n event.preventDefault();\n if (readOnly) {\n break;\n }\n if (parsedSelectedSections == null || parsedSelectedSections === 'all') {\n clearValue();\n } else {\n clearActiveSection();\n }\n resetCharacterQuery();\n break;\n }\n\n // Increment / decrement the selected section value\n case ['ArrowUp', 'ArrowDown', 'Home', 'End', 'PageUp', 'PageDown'].includes(event.key):\n {\n event.preventDefault();\n if (readOnly || activeSectionIndex == null) {\n break;\n }\n const activeSection = state.sections[activeSectionIndex];\n const activeDateManager = fieldValueManager.getActiveDateManager(utils, state, activeSection);\n const newSectionValue = adjustSectionValue(utils, timezone, activeSection, event.key, sectionsValueBoundaries, localizedDigits, activeDateManager.date, {\n minutesStep\n });\n updateSectionValue({\n activeSection,\n newSectionValue,\n shouldGoToNextSection: false\n });\n break;\n }\n }\n });\n useEnhancedEffect(() => {\n interactions.syncSelectionToDOM();\n });\n const validationError = useValidation(_extends({}, internalProps, {\n value: state.value,\n timezone\n }), validator, valueManager.isSameError, valueManager.defaultErrorState);\n const inputError = React.useMemo(() => {\n // only override when `error` is undefined.\n // in case of multi input fields, the `error` value is provided externally and will always be defined.\n if (error !== undefined) {\n return error;\n }\n return valueManager.hasError(validationError);\n }, [valueManager, validationError, error]);\n React.useEffect(() => {\n if (!inputError && activeSectionIndex == null) {\n resetCharacterQuery();\n }\n }, [state.referenceValue, activeSectionIndex, inputError]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // If `tempValueStrAndroid` is still defined for some section when running `useEffect`,\n // Then `onChange` has only been called once, which means the user pressed `Backspace` to reset the section.\n // This causes a small flickering on Android,\n // But we can't use `useEnhancedEffect` which is always called before the second `onChange` call and then would cause false positives.\n React.useEffect(() => {\n if (state.tempValueStrAndroid != null && activeSectionIndex != null) {\n resetCharacterQuery();\n clearActiveSection();\n }\n }, [state.sections]); // eslint-disable-line react-hooks/exhaustive-deps\n\n React.useImperativeHandle(unstableFieldRef, () => ({\n getSections: () => state.sections,\n getActiveSectionIndex: interactions.getActiveSectionIndexFromDOM,\n setSelectedSections: interactions.setSelectedSections,\n focusField: interactions.focusField,\n isFieldFocused: interactions.isFieldFocused\n }));\n const handleClearValue = useEventCallback((event, ...args) => {\n event.preventDefault();\n onClear?.(event, ...args);\n clearValue();\n if (!interactions.isFieldFocused()) {\n // setSelectedSections is called internally\n interactions.focusField(0);\n } else {\n setSelectedSections(sectionOrder.startIndex);\n }\n });\n const commonForwardedProps = {\n onKeyDown: handleContainerKeyDown,\n onClear: handleClearValue,\n error: inputError,\n clearable: Boolean(clearable && !areAllSectionsEmpty && !readOnly && !disabled)\n };\n const commonAdditionalProps = {\n disabled,\n readOnly\n };\n return _extends({}, params.forwardedProps, commonForwardedProps, commonAdditionalProps, returnedValue);\n};","import { getMonthsInYear } from '../../utils/date-utils';\nexport const getDateSectionConfigFromFormatToken = (utils, formatToken) => {\n const config = utils.formatTokenMap[formatToken];\n if (config == null) {\n throw new Error([`MUI X: The token \"${formatToken}\" is not supported by the Date and Time Pickers.`, 'Please try using another token or open an issue on https://github.com/mui/mui-x/issues/new/choose if you think it should be supported.'].join('\\n'));\n }\n if (typeof config === 'string') {\n return {\n type: config,\n contentType: config === 'meridiem' ? 'letter' : 'digit',\n maxLength: undefined\n };\n }\n return {\n type: config.sectionType,\n contentType: config.contentType,\n maxLength: config.maxLength\n };\n};\nconst getDeltaFromKeyCode = keyCode => {\n switch (keyCode) {\n case 'ArrowUp':\n return 1;\n case 'ArrowDown':\n return -1;\n case 'PageUp':\n return 5;\n case 'PageDown':\n return -5;\n default:\n return 0;\n }\n};\nexport const getDaysInWeekStr = (utils, timezone, format) => {\n const elements = [];\n const now = utils.date(undefined, timezone);\n const startDate = utils.startOfWeek(now);\n const endDate = utils.endOfWeek(now);\n let current = startDate;\n while (utils.isBefore(current, endDate)) {\n elements.push(current);\n current = utils.addDays(current, 1);\n }\n return elements.map(weekDay => utils.formatByString(weekDay, format));\n};\nexport const getLetterEditingOptions = (utils, timezone, sectionType, format) => {\n switch (sectionType) {\n case 'month':\n {\n return getMonthsInYear(utils, utils.date(undefined, timezone)).map(month => utils.formatByString(month, format));\n }\n case 'weekDay':\n {\n return getDaysInWeekStr(utils, timezone, format);\n }\n case 'meridiem':\n {\n const now = utils.date(undefined, timezone);\n return [utils.startOfDay(now), utils.endOfDay(now)].map(date => utils.formatByString(date, format));\n }\n default:\n {\n return [];\n }\n }\n};\n\n// This format should be the same on all the adapters\n// If some adapter does not respect this convention, then we will need to hardcode the format on each adapter.\nexport const FORMAT_SECONDS_NO_LEADING_ZEROS = 's';\nconst NON_LOCALIZED_DIGITS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\nexport const getLocalizedDigits = utils => {\n const today = utils.date(undefined);\n const formattedZero = utils.formatByString(utils.setSeconds(today, 0), FORMAT_SECONDS_NO_LEADING_ZEROS);\n if (formattedZero === '0') {\n return NON_LOCALIZED_DIGITS;\n }\n return Array.from({\n length: 10\n }).map((_, index) => utils.formatByString(utils.setSeconds(today, index), FORMAT_SECONDS_NO_LEADING_ZEROS));\n};\nexport const removeLocalizedDigits = (valueStr, localizedDigits) => {\n if (localizedDigits[0] === '0') {\n return valueStr;\n }\n const digits = [];\n let currentFormattedDigit = '';\n for (let i = 0; i < valueStr.length; i += 1) {\n currentFormattedDigit += valueStr[i];\n const matchingDigitIndex = localizedDigits.indexOf(currentFormattedDigit);\n if (matchingDigitIndex > -1) {\n digits.push(matchingDigitIndex.toString());\n currentFormattedDigit = '';\n }\n }\n return digits.join('');\n};\nexport const applyLocalizedDigits = (valueStr, localizedDigits) => {\n if (localizedDigits[0] === '0') {\n return valueStr;\n }\n return valueStr.split('').map(char => localizedDigits[Number(char)]).join('');\n};\nexport const isStringNumber = (valueStr, localizedDigits) => {\n const nonLocalizedValueStr = removeLocalizedDigits(valueStr, localizedDigits);\n // `Number(' ')` returns `0` even if ' ' is not a valid number.\n return nonLocalizedValueStr !== ' ' && !Number.isNaN(Number(nonLocalizedValueStr));\n};\n\n/**\n * Remove the leading zeroes to a digit section value.\n * E.g.: `03` => `3`\n * Warning: Should only be called with non-localized digits. Call `removeLocalizedDigits` with your value if needed.\n */\nexport const cleanLeadingZeros = (valueStr, size) => {\n let cleanValueStr = valueStr;\n\n // Remove the leading zeros\n cleanValueStr = Number(cleanValueStr).toString();\n\n // Add enough leading zeros to fill the section\n while (cleanValueStr.length < size) {\n cleanValueStr = `0${cleanValueStr}`;\n }\n return cleanValueStr;\n};\nexport const cleanDigitSectionValue = (utils, value, sectionBoundaries, localizedDigits, section) => {\n if (process.env.NODE_ENV !== 'production') {\n if (section.type !== 'day' && section.contentType === 'digit-with-letter') {\n throw new Error([`MUI X: The token \"${section.format}\" is a digit format with letter in it.'\n This type of format is only supported for 'day' sections`].join('\\n'));\n }\n }\n if (section.type === 'day' && section.contentType === 'digit-with-letter') {\n const date = utils.setDate(sectionBoundaries.longestMonth, value);\n return utils.formatByString(date, section.format);\n }\n\n // queryValue without leading `0` (`01` => `1`)\n let valueStr = value.toString();\n if (section.hasLeadingZerosInInput) {\n valueStr = cleanLeadingZeros(valueStr, section.maxLength);\n }\n return applyLocalizedDigits(valueStr, localizedDigits);\n};\nexport const adjustSectionValue = (utils, timezone, section, keyCode, sectionsValueBoundaries, localizedDigits, activeDate, stepsAttributes) => {\n const delta = getDeltaFromKeyCode(keyCode);\n const isStart = keyCode === 'Home';\n const isEnd = keyCode === 'End';\n const shouldSetAbsolute = section.value === '' || isStart || isEnd;\n const adjustDigitSection = () => {\n const sectionBoundaries = sectionsValueBoundaries[section.type]({\n currentDate: activeDate,\n format: section.format,\n contentType: section.contentType\n });\n const getCleanValue = value => cleanDigitSectionValue(utils, value, sectionBoundaries, localizedDigits, section);\n const step = section.type === 'minutes' && stepsAttributes?.minutesStep ? stepsAttributes.minutesStep : 1;\n const currentSectionValue = parseInt(removeLocalizedDigits(section.value, localizedDigits), 10);\n let newSectionValueNumber = currentSectionValue + delta * step;\n if (shouldSetAbsolute) {\n if (section.type === 'year' && !isEnd && !isStart) {\n return utils.formatByString(utils.date(undefined, timezone), section.format);\n }\n if (delta > 0 || isStart) {\n newSectionValueNumber = sectionBoundaries.minimum;\n } else {\n newSectionValueNumber = sectionBoundaries.maximum;\n }\n }\n if (newSectionValueNumber % step !== 0) {\n if (delta < 0 || isStart) {\n newSectionValueNumber += step - (step + newSectionValueNumber) % step; // for JS -3 % 5 = -3 (should be 2)\n }\n if (delta > 0 || isEnd) {\n newSectionValueNumber -= newSectionValueNumber % step;\n }\n }\n if (newSectionValueNumber > sectionBoundaries.maximum) {\n return getCleanValue(sectionBoundaries.minimum + (newSectionValueNumber - sectionBoundaries.maximum - 1) % (sectionBoundaries.maximum - sectionBoundaries.minimum + 1));\n }\n if (newSectionValueNumber < sectionBoundaries.minimum) {\n return getCleanValue(sectionBoundaries.maximum - (sectionBoundaries.minimum - newSectionValueNumber - 1) % (sectionBoundaries.maximum - sectionBoundaries.minimum + 1));\n }\n return getCleanValue(newSectionValueNumber);\n };\n const adjustLetterSection = () => {\n const options = getLetterEditingOptions(utils, timezone, section.type, section.format);\n if (options.length === 0) {\n return section.value;\n }\n if (shouldSetAbsolute) {\n if (delta > 0 || isStart) {\n return options[0];\n }\n return options[options.length - 1];\n }\n const currentOptionIndex = options.indexOf(section.value);\n const newOptionIndex = (currentOptionIndex + delta) % options.length;\n const clampedIndex = (newOptionIndex + options.length) % options.length;\n return options[clampedIndex];\n };\n if (section.contentType === 'digit' || section.contentType === 'digit-with-letter') {\n return adjustDigitSection();\n }\n return adjustLetterSection();\n};\nexport const getSectionVisibleValue = (section, target, localizedDigits) => {\n let value = section.value || section.placeholder;\n const hasLeadingZeros = target === 'non-input' ? section.hasLeadingZerosInFormat : section.hasLeadingZerosInInput;\n if (target === 'non-input' && section.hasLeadingZerosInInput && !section.hasLeadingZerosInFormat) {\n value = Number(removeLocalizedDigits(value, localizedDigits)).toString();\n }\n\n // In the input, we add an empty character at the end of each section without leading zeros.\n // This makes sure that `onChange` will always be fired.\n // Otherwise, when your input value equals `1/dd/yyyy` (format `M/DD/YYYY` on DayJs),\n // If you press `1`, on the first section, the new value is also `1/dd/yyyy`,\n // So the browser will not fire the input `onChange`.\n const shouldAddInvisibleSpace = ['input-rtl', 'input-ltr'].includes(target) && section.contentType === 'digit' && !hasLeadingZeros && value.length === 1;\n if (shouldAddInvisibleSpace) {\n value = `${value}\\u200e`;\n }\n if (target === 'input-rtl') {\n value = `\\u2068${value}\\u2069`;\n }\n return value;\n};\nexport const changeSectionValueFormat = (utils, valueStr, currentFormat, newFormat) => {\n if (process.env.NODE_ENV !== 'production') {\n if (getDateSectionConfigFromFormatToken(utils, currentFormat).type === 'weekDay') {\n throw new Error(\"changeSectionValueFormat doesn't support week day formats\");\n }\n }\n return utils.formatByString(utils.parse(valueStr, currentFormat), newFormat);\n};\nconst isFourDigitYearFormat = (utils, timezone, format) => utils.formatByString(utils.date(undefined, timezone), format).length === 4;\nexport const doesSectionFormatHaveLeadingZeros = (utils, timezone, contentType, sectionType, format) => {\n if (contentType !== 'digit') {\n return false;\n }\n const now = utils.date(undefined, timezone);\n switch (sectionType) {\n // We can't use `changeSectionValueFormat`, because `utils.parse('1', 'YYYY')` returns `1971` instead of `1`.\n case 'year':\n {\n if (isFourDigitYearFormat(utils, timezone, format)) {\n const formatted0001 = utils.formatByString(utils.setYear(now, 1), format);\n return formatted0001 === '0001';\n }\n const formatted2001 = utils.formatByString(utils.setYear(now, 2001), format);\n return formatted2001 === '01';\n }\n case 'month':\n {\n return utils.formatByString(utils.startOfYear(now), format).length > 1;\n }\n case 'day':\n {\n return utils.formatByString(utils.startOfMonth(now), format).length > 1;\n }\n case 'weekDay':\n {\n return utils.formatByString(utils.startOfWeek(now), format).length > 1;\n }\n case 'hours':\n {\n return utils.formatByString(utils.setHours(now, 1), format).length > 1;\n }\n case 'minutes':\n {\n return utils.formatByString(utils.setMinutes(now, 1), format).length > 1;\n }\n case 'seconds':\n {\n return utils.formatByString(utils.setSeconds(now, 1), format).length > 1;\n }\n default:\n {\n throw new Error('Invalid section type');\n }\n }\n};\n\n/**\n * Some date libraries like `dayjs` don't support parsing from date with escaped characters.\n * To make sure that the parsing works, we are building a format and a date without any separator.\n */\nexport const getDateFromDateSections = (utils, sections, localizedDigits) => {\n // If we have both a day and a weekDay section,\n // Then we skip the weekDay in the parsing because libraries like dayjs can't parse complicated formats containing a weekDay.\n // dayjs(dayjs().format('dddd MMMM D YYYY'), 'dddd MMMM D YYYY')) // returns `Invalid Date` even if the format is valid.\n const shouldSkipWeekDays = sections.some(section => section.type === 'day');\n const sectionFormats = [];\n const sectionValues = [];\n for (let i = 0; i < sections.length; i += 1) {\n const section = sections[i];\n const shouldSkip = shouldSkipWeekDays && section.type === 'weekDay';\n if (!shouldSkip) {\n sectionFormats.push(section.format);\n sectionValues.push(getSectionVisibleValue(section, 'non-input', localizedDigits));\n }\n }\n const formatWithoutSeparator = sectionFormats.join(' ');\n const dateWithoutSeparatorStr = sectionValues.join(' ');\n return utils.parse(dateWithoutSeparatorStr, formatWithoutSeparator);\n};\nexport const createDateStrForV7HiddenInputFromSections = sections => sections.map(section => {\n return `${section.startSeparator}${section.value || section.placeholder}${section.endSeparator}`;\n}).join('');\nexport const createDateStrForV6InputFromSections = (sections, localizedDigits, isRtl) => {\n const formattedSections = sections.map(section => {\n const dateValue = getSectionVisibleValue(section, isRtl ? 'input-rtl' : 'input-ltr', localizedDigits);\n return `${section.startSeparator}${dateValue}${section.endSeparator}`;\n });\n const dateStr = formattedSections.join('');\n if (!isRtl) {\n return dateStr;\n }\n\n // \\u2066: start left-to-right isolation\n // \\u2067: start right-to-left isolation\n // \\u2068: start first strong character isolation\n // \\u2069: pop isolation\n // wrap into an isolated group such that separators can split the string in smaller ones by adding \\u2069\\u2068\n return `\\u2066${dateStr}\\u2069`;\n};\nexport const getSectionsBoundaries = (utils, localizedDigits, timezone) => {\n const today = utils.date(undefined, timezone);\n const endOfYear = utils.endOfYear(today);\n const endOfDay = utils.endOfDay(today);\n const {\n maxDaysInMonth,\n longestMonth\n } = getMonthsInYear(utils, today).reduce((acc, month) => {\n const daysInMonth = utils.getDaysInMonth(month);\n if (daysInMonth > acc.maxDaysInMonth) {\n return {\n maxDaysInMonth: daysInMonth,\n longestMonth: month\n };\n }\n return acc;\n }, {\n maxDaysInMonth: 0,\n longestMonth: null\n });\n return {\n year: ({\n format\n }) => ({\n minimum: 0,\n maximum: isFourDigitYearFormat(utils, timezone, format) ? 9999 : 99\n }),\n month: () => ({\n minimum: 1,\n // Assumption: All years have the same amount of months\n maximum: utils.getMonth(endOfYear) + 1\n }),\n day: ({\n currentDate\n }) => ({\n minimum: 1,\n maximum: currentDate != null && utils.isValid(currentDate) ? utils.getDaysInMonth(currentDate) : maxDaysInMonth,\n longestMonth: longestMonth\n }),\n weekDay: ({\n format,\n contentType\n }) => {\n if (contentType === 'digit') {\n const daysInWeek = getDaysInWeekStr(utils, timezone, format).map(Number);\n return {\n minimum: Math.min(...daysInWeek),\n maximum: Math.max(...daysInWeek)\n };\n }\n return {\n minimum: 1,\n maximum: 7\n };\n },\n hours: ({\n format\n }) => {\n const lastHourInDay = utils.getHours(endOfDay);\n const hasMeridiem = removeLocalizedDigits(utils.formatByString(utils.endOfDay(today), format), localizedDigits) !== lastHourInDay.toString();\n if (hasMeridiem) {\n return {\n minimum: 1,\n maximum: Number(removeLocalizedDigits(utils.formatByString(utils.startOfDay(today), format), localizedDigits))\n };\n }\n return {\n minimum: 0,\n maximum: lastHourInDay\n };\n },\n minutes: () => ({\n minimum: 0,\n // Assumption: All years have the same amount of minutes\n maximum: utils.getMinutes(endOfDay)\n }),\n seconds: () => ({\n minimum: 0,\n // Assumption: All years have the same amount of seconds\n maximum: utils.getSeconds(endOfDay)\n }),\n meridiem: () => ({\n minimum: 0,\n maximum: 1\n }),\n empty: () => ({\n minimum: 0,\n maximum: 0\n })\n };\n};\nlet warnedOnceInvalidSection = false;\nexport const validateSections = (sections, valueType) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnceInvalidSection) {\n const supportedSections = ['empty'];\n if (['date', 'date-time'].includes(valueType)) {\n supportedSections.push('weekDay', 'day', 'month', 'year');\n }\n if (['time', 'date-time'].includes(valueType)) {\n supportedSections.push('hours', 'minutes', 'seconds', 'meridiem');\n }\n const invalidSection = sections.find(section => !supportedSections.includes(section.type));\n if (invalidSection) {\n console.warn(`MUI X: The field component you are using is not compatible with the \"${invalidSection.type}\" date section.`, `The supported date sections are [\"${supportedSections.join('\", \"')}\"]\\`.`);\n warnedOnceInvalidSection = true;\n }\n }\n }\n};\nconst transferDateSectionValue = (utils, timezone, section, dateToTransferFrom, dateToTransferTo) => {\n switch (section.type) {\n case 'year':\n {\n return utils.setYear(dateToTransferTo, utils.getYear(dateToTransferFrom));\n }\n case 'month':\n {\n return utils.setMonth(dateToTransferTo, utils.getMonth(dateToTransferFrom));\n }\n case 'weekDay':\n {\n const formattedDaysInWeek = getDaysInWeekStr(utils, timezone, section.format);\n const dayInWeekStrOfActiveDate = utils.formatByString(dateToTransferFrom, section.format);\n const dayInWeekOfActiveDate = formattedDaysInWeek.indexOf(dayInWeekStrOfActiveDate);\n const dayInWeekOfNewSectionValue = formattedDaysInWeek.indexOf(section.value);\n const diff = dayInWeekOfNewSectionValue - dayInWeekOfActiveDate;\n return utils.addDays(dateToTransferFrom, diff);\n }\n case 'day':\n {\n return utils.setDate(dateToTransferTo, utils.getDate(dateToTransferFrom));\n }\n case 'meridiem':\n {\n const isAM = utils.getHours(dateToTransferFrom) < 12;\n const mergedDateHours = utils.getHours(dateToTransferTo);\n if (isAM && mergedDateHours >= 12) {\n return utils.addHours(dateToTransferTo, -12);\n }\n if (!isAM && mergedDateHours < 12) {\n return utils.addHours(dateToTransferTo, 12);\n }\n return dateToTransferTo;\n }\n case 'hours':\n {\n return utils.setHours(dateToTransferTo, utils.getHours(dateToTransferFrom));\n }\n case 'minutes':\n {\n return utils.setMinutes(dateToTransferTo, utils.getMinutes(dateToTransferFrom));\n }\n case 'seconds':\n {\n return utils.setSeconds(dateToTransferTo, utils.getSeconds(dateToTransferFrom));\n }\n default:\n {\n return dateToTransferTo;\n }\n }\n};\nconst reliableSectionModificationOrder = {\n year: 1,\n month: 2,\n day: 3,\n weekDay: 4,\n hours: 5,\n minutes: 6,\n seconds: 7,\n meridiem: 8,\n empty: 9\n};\nexport const mergeDateIntoReferenceDate = (utils, timezone, dateToTransferFrom, sections, referenceDate, shouldLimitToEditedSections) =>\n// cloning sections before sort to avoid mutating it\n[...sections].sort((a, b) => reliableSectionModificationOrder[a.type] - reliableSectionModificationOrder[b.type]).reduce((mergedDate, section) => {\n if (!shouldLimitToEditedSections || section.modified) {\n return transferDateSectionValue(utils, timezone, section, dateToTransferFrom, mergedDate);\n }\n return mergedDate;\n}, referenceDate);\nexport const isAndroid = () => navigator.userAgent.toLowerCase().indexOf('android') > -1;\n\n// TODO v8: Remove if we drop the v6 TextField approach.\nexport const getSectionOrder = (sections, shouldApplyRTL) => {\n const neighbors = {};\n if (!shouldApplyRTL) {\n sections.forEach((_, index) => {\n const leftIndex = index === 0 ? null : index - 1;\n const rightIndex = index === sections.length - 1 ? null : index + 1;\n neighbors[index] = {\n leftIndex,\n rightIndex\n };\n });\n return {\n neighbors,\n startIndex: 0,\n endIndex: sections.length - 1\n };\n }\n const rtl2ltr = {};\n const ltr2rtl = {};\n let groupedSectionsStart = 0;\n let groupedSectionsEnd = 0;\n let RTLIndex = sections.length - 1;\n while (RTLIndex >= 0) {\n groupedSectionsEnd = sections.findIndex(\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n (section, index) => index >= groupedSectionsStart && section.endSeparator?.includes(' ') &&\n // Special case where the spaces were not there in the initial input\n section.endSeparator !== ' / ');\n if (groupedSectionsEnd === -1) {\n groupedSectionsEnd = sections.length - 1;\n }\n for (let i = groupedSectionsEnd; i >= groupedSectionsStart; i -= 1) {\n ltr2rtl[i] = RTLIndex;\n rtl2ltr[RTLIndex] = i;\n RTLIndex -= 1;\n }\n groupedSectionsStart = groupedSectionsEnd + 1;\n }\n sections.forEach((_, index) => {\n const rtlIndex = ltr2rtl[index];\n const leftIndex = rtlIndex === 0 ? null : rtl2ltr[rtlIndex - 1];\n const rightIndex = rtlIndex === sections.length - 1 ? null : rtl2ltr[rtlIndex + 1];\n neighbors[index] = {\n leftIndex,\n rightIndex\n };\n });\n return {\n neighbors,\n startIndex: rtl2ltr[0],\n endIndex: rtl2ltr[sections.length - 1]\n };\n};\nexport const parseSelectedSections = (selectedSections, sections) => {\n if (selectedSections == null) {\n return null;\n }\n if (selectedSections === 'all') {\n return 'all';\n }\n if (typeof selectedSections === 'string') {\n return sections.findIndex(section => section.type === selectedSections);\n }\n return selectedSections;\n};\nexport const getSectionValueText = (section, utils) => {\n if (!section.value) {\n return undefined;\n }\n switch (section.type) {\n case 'month':\n {\n if (section.contentType === 'digit') {\n return utils.format(utils.setMonth(utils.date(), Number(section.value) - 1), 'month');\n }\n const parsedDate = utils.parse(section.value, section.format);\n return parsedDate ? utils.format(parsedDate, 'month') : undefined;\n }\n case 'day':\n return section.contentType === 'digit' ? utils.format(utils.setDate(utils.startOfYear(utils.date()), Number(section.value)), 'dayOfMonthFull') : section.value;\n case 'weekDay':\n // TODO: improve by providing the label of the week day\n return undefined;\n default:\n return undefined;\n }\n};\nexport const getSectionValueNow = (section, utils) => {\n if (!section.value) {\n return undefined;\n }\n switch (section.type) {\n case 'weekDay':\n {\n if (section.contentType === 'letter') {\n // TODO: improve by resolving the week day number from a letter week day\n return undefined;\n }\n return Number(section.value);\n }\n case 'meridiem':\n {\n const parsedDate = utils.parse(`01:00 ${section.value}`, `${utils.formats.hours12h}:${utils.formats.minutes} ${section.format}`);\n if (parsedDate) {\n return utils.getHours(parsedDate) >= 12 ? 1 : 0;\n }\n return undefined;\n }\n case 'day':\n return section.contentType === 'digit-with-letter' ? parseInt(section.value, 10) : Number(section.value);\n case 'month':\n {\n if (section.contentType === 'digit') {\n return Number(section.value);\n }\n const parsedDate = utils.parse(section.value, section.format);\n return parsedDate ? utils.getMonth(parsedDate) + 1 : undefined;\n }\n default:\n return section.contentType !== 'letter' ? Number(section.value) : undefined;\n }\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"props\", \"getOpenDialogAriaText\"];\nimport * as React from 'react';\nimport { useSlotProps } from '@mui/base/utils';\nimport useForkRef from '@mui/utils/useForkRef';\nimport useId from '@mui/utils/useId';\nimport { PickersModalDialog } from '../../components/PickersModalDialog';\nimport { usePicker } from '../usePicker';\nimport { onSpaceOrEnter } from '../../utils/utils';\nimport { useUtils } from '../useUtils';\nimport { LocalizationProvider } from '../../../LocalizationProvider';\nimport { PickersLayout } from '../../../PickersLayout';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\n/**\n * Hook managing all the single-date mobile pickers:\n * - MobileDatePicker\n * - MobileDateTimePicker\n * - MobileTimePicker\n */\nexport const useMobilePicker = _ref => {\n let {\n props,\n getOpenDialogAriaText\n } = _ref,\n pickerParams = _objectWithoutPropertiesLoose(_ref, _excluded);\n const {\n slots,\n slotProps: innerSlotProps,\n className,\n sx,\n format,\n formatDensity,\n enableAccessibleFieldDOMStructure,\n selectedSections,\n onSelectedSectionsChange,\n timezone,\n name,\n label,\n inputRef,\n readOnly,\n disabled,\n localeText\n } = props;\n const utils = useUtils();\n const fieldRef = React.useRef(null);\n const labelId = useId();\n const isToolbarHidden = innerSlotProps?.toolbar?.hidden ?? false;\n const {\n open,\n actions,\n layoutProps,\n renderCurrentView,\n fieldProps: pickerFieldProps\n } = usePicker(_extends({}, pickerParams, {\n props,\n fieldRef,\n autoFocusView: true,\n additionalViewProps: {},\n wrapperVariant: 'mobile'\n }));\n const Field = slots.field;\n const fieldProps = useSlotProps({\n elementType: Field,\n externalSlotProps: innerSlotProps?.field,\n additionalProps: _extends({}, pickerFieldProps, isToolbarHidden && {\n id: labelId\n }, !(disabled || readOnly) && {\n onClick: actions.onOpen,\n onKeyDown: onSpaceOrEnter(actions.onOpen)\n }, {\n readOnly: readOnly ?? true,\n disabled,\n className,\n sx,\n format,\n formatDensity,\n enableAccessibleFieldDOMStructure,\n selectedSections,\n onSelectedSectionsChange,\n timezone,\n label,\n name\n }, inputRef ? {\n inputRef\n } : {}),\n ownerState: props\n });\n\n // TODO: Move to `useSlotProps` when https://github.com/mui/material-ui/pull/35088 will be merged\n fieldProps.inputProps = _extends({}, fieldProps.inputProps, {\n 'aria-label': getOpenDialogAriaText(pickerFieldProps.value, utils)\n });\n const slotsForField = _extends({\n textField: slots.textField\n }, fieldProps.slots);\n const Layout = slots.layout ?? PickersLayout;\n let labelledById = labelId;\n if (isToolbarHidden) {\n if (label) {\n labelledById = `${labelId}-label`;\n } else {\n labelledById = undefined;\n }\n }\n const slotProps = _extends({}, innerSlotProps, {\n toolbar: _extends({}, innerSlotProps?.toolbar, {\n titleId: labelId\n }),\n mobilePaper: _extends({\n 'aria-labelledby': labelledById\n }, innerSlotProps?.mobilePaper)\n });\n const handleFieldRef = useForkRef(fieldRef, fieldProps.unstableFieldRef);\n const renderPicker = () => /*#__PURE__*/_jsxs(LocalizationProvider, {\n localeText: localeText,\n children: [/*#__PURE__*/_jsx(Field, _extends({}, fieldProps, {\n slots: slotsForField,\n slotProps: slotProps,\n unstableFieldRef: handleFieldRef\n })), /*#__PURE__*/_jsx(PickersModalDialog, _extends({}, actions, {\n open: open,\n slots: slots,\n slotProps: slotProps,\n children: /*#__PURE__*/_jsx(Layout, _extends({}, layoutProps, slotProps?.layout, {\n slots: slots,\n slotProps: slotProps,\n children: renderCurrentView()\n }))\n }))]\n });\n return {\n renderPicker\n };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { useOpenState } from '../useOpenState';\nimport { useLocalizationContext, useUtils } from '../useUtils';\nimport { useValidation } from '../useValidation';\nimport { useValueWithTimezone } from '../useValueWithTimezone';\n\n/**\n * Decide if the new value should be published\n * The published value will be passed to `onChange` if defined.\n */\nconst shouldPublishValue = params => {\n const {\n action,\n hasChanged,\n dateState,\n isControlled\n } = params;\n const isCurrentValueTheDefaultValue = !isControlled && !dateState.hasBeenModifiedSinceMount;\n\n // The field is responsible for only calling `onChange` when needed.\n if (action.name === 'setValueFromField') {\n return true;\n }\n if (action.name === 'setValueFromAction') {\n // If the component is not controlled, and the value has not been modified since the mount,\n // Then we want to publish the default value whenever the user pressed the \"Accept\", \"Today\" or \"Clear\" button.\n if (isCurrentValueTheDefaultValue && ['accept', 'today', 'clear'].includes(action.pickerAction)) {\n return true;\n }\n return hasChanged(dateState.lastPublishedValue);\n }\n if (action.name === 'setValueFromView' && action.selectionState !== 'shallow') {\n // On the first view,\n // If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onChange`\n if (isCurrentValueTheDefaultValue) {\n return true;\n }\n return hasChanged(dateState.lastPublishedValue);\n }\n if (action.name === 'setValueFromShortcut') {\n // On the first view,\n // If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onChange`\n if (isCurrentValueTheDefaultValue) {\n return true;\n }\n return hasChanged(dateState.lastPublishedValue);\n }\n return false;\n};\n\n/**\n * Decide if the new value should be committed.\n * The committed value will be passed to `onAccept` if defined.\n * It will also be used as a reset target when calling the `cancel` picker action (when clicking on the \"Cancel\" button).\n */\nconst shouldCommitValue = params => {\n const {\n action,\n hasChanged,\n dateState,\n isControlled,\n closeOnSelect\n } = params;\n const isCurrentValueTheDefaultValue = !isControlled && !dateState.hasBeenModifiedSinceMount;\n if (action.name === 'setValueFromAction') {\n // If the component is not controlled, and the value has not been modified since the mount,\n // Then we want to commit the default value whenever the user pressed the \"Accept\", \"Today\" or \"Clear\" button.\n if (isCurrentValueTheDefaultValue && ['accept', 'today', 'clear'].includes(action.pickerAction)) {\n return true;\n }\n return hasChanged(dateState.lastCommittedValue);\n }\n if (action.name === 'setValueFromView' && action.selectionState === 'finish' && closeOnSelect) {\n // On picker where the 1st view is also the last view,\n // If the value is not controlled, then clicking on any value (including the one equal to `defaultValue`) should call `onAccept`\n if (isCurrentValueTheDefaultValue) {\n return true;\n }\n return hasChanged(dateState.lastCommittedValue);\n }\n if (action.name === 'setValueFromShortcut') {\n return action.changeImportance === 'accept' && hasChanged(dateState.lastCommittedValue);\n }\n return false;\n};\n\n/**\n * Decide if the picker should be closed after the value is updated.\n */\nconst shouldClosePicker = params => {\n const {\n action,\n closeOnSelect\n } = params;\n if (action.name === 'setValueFromAction') {\n return true;\n }\n if (action.name === 'setValueFromView') {\n return action.selectionState === 'finish' && closeOnSelect;\n }\n if (action.name === 'setValueFromShortcut') {\n return action.changeImportance === 'accept';\n }\n return false;\n};\n\n/**\n * Manage the value lifecycle of all the pickers.\n */\nexport const usePickerValue = ({\n props,\n valueManager,\n valueType,\n wrapperVariant,\n validator\n}) => {\n const {\n onAccept,\n onChange,\n value: inValueWithoutRenderTimezone,\n defaultValue: inDefaultValue,\n closeOnSelect = wrapperVariant === 'desktop',\n timezone: timezoneProp\n } = props;\n const {\n current: defaultValue\n } = React.useRef(inDefaultValue);\n const {\n current: isControlled\n } = React.useRef(inValueWithoutRenderTimezone !== undefined);\n\n /* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (inValueWithoutRenderTimezone !== undefined)) {\n console.error([`MUI X: A component is changing the ${isControlled ? '' : 'un'}controlled value of a picker to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled value` + 'for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [inValueWithoutRenderTimezone]);\n React.useEffect(() => {\n if (!isControlled && defaultValue !== inDefaultValue) {\n console.error([`MUI X: A component is changing the defaultValue of an uncontrolled picker after being initialized. ` + `To suppress this warning opt to use a controlled value.`].join('\\n'));\n }\n }, [JSON.stringify(defaultValue)]);\n }\n /* eslint-enable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\n\n const utils = useUtils();\n const adapter = useLocalizationContext();\n const {\n isOpen,\n setIsOpen\n } = useOpenState(props);\n const {\n timezone,\n value: inValueWithTimezoneToRender,\n handleValueChange\n } = useValueWithTimezone({\n timezone: timezoneProp,\n value: inValueWithoutRenderTimezone,\n defaultValue,\n onChange,\n valueManager\n });\n const [dateState, setDateState] = React.useState(() => {\n let initialValue;\n if (inValueWithTimezoneToRender !== undefined) {\n initialValue = inValueWithTimezoneToRender;\n } else if (defaultValue !== undefined) {\n initialValue = defaultValue;\n } else {\n initialValue = valueManager.emptyValue;\n }\n return {\n draft: initialValue,\n lastPublishedValue: initialValue,\n lastCommittedValue: initialValue,\n lastControlledValue: inValueWithTimezoneToRender,\n hasBeenModifiedSinceMount: false\n };\n });\n useValidation(_extends({}, props, {\n value: dateState.draft,\n timezone\n }), validator, valueManager.isSameError, valueManager.defaultErrorState);\n const updateDate = useEventCallback(action => {\n const updaterParams = {\n action,\n dateState,\n hasChanged: comparison => !valueManager.areValuesEqual(utils, action.value, comparison),\n isControlled,\n closeOnSelect\n };\n const shouldPublish = shouldPublishValue(updaterParams);\n const shouldCommit = shouldCommitValue(updaterParams);\n const shouldClose = shouldClosePicker(updaterParams);\n setDateState(prev => _extends({}, prev, {\n draft: action.value,\n lastPublishedValue: shouldPublish ? action.value : prev.lastPublishedValue,\n lastCommittedValue: shouldCommit ? action.value : prev.lastCommittedValue,\n hasBeenModifiedSinceMount: true\n }));\n let cachedContext = null;\n const getContext = () => {\n if (!cachedContext) {\n const validationError = action.name === 'setValueFromField' ? action.context.validationError : validator({\n adapter,\n value: action.value,\n props: _extends({}, props, {\n value: action.value,\n timezone\n })\n });\n cachedContext = {\n validationError\n };\n if (action.name === 'setValueFromShortcut') {\n cachedContext.shortcut = action.shortcut;\n }\n }\n return cachedContext;\n };\n if (shouldPublish) {\n handleValueChange(action.value, getContext());\n }\n if (shouldCommit && onAccept) {\n onAccept(action.value, getContext());\n }\n if (shouldClose) {\n setIsOpen(false);\n }\n });\n if (inValueWithTimezoneToRender !== undefined && (dateState.lastControlledValue === undefined || !valueManager.areValuesEqual(utils, dateState.lastControlledValue, inValueWithTimezoneToRender))) {\n const isUpdateComingFromPicker = valueManager.areValuesEqual(utils, dateState.draft, inValueWithTimezoneToRender);\n setDateState(prev => _extends({}, prev, {\n lastControlledValue: inValueWithTimezoneToRender\n }, isUpdateComingFromPicker ? {} : {\n lastCommittedValue: inValueWithTimezoneToRender,\n lastPublishedValue: inValueWithTimezoneToRender,\n draft: inValueWithTimezoneToRender,\n hasBeenModifiedSinceMount: true\n }));\n }\n const handleClear = useEventCallback(() => {\n updateDate({\n value: valueManager.emptyValue,\n name: 'setValueFromAction',\n pickerAction: 'clear'\n });\n });\n const handleAccept = useEventCallback(() => {\n updateDate({\n value: dateState.lastPublishedValue,\n name: 'setValueFromAction',\n pickerAction: 'accept'\n });\n });\n const handleDismiss = useEventCallback(() => {\n updateDate({\n value: dateState.lastPublishedValue,\n name: 'setValueFromAction',\n pickerAction: 'dismiss'\n });\n });\n const handleCancel = useEventCallback(() => {\n updateDate({\n value: dateState.lastCommittedValue,\n name: 'setValueFromAction',\n pickerAction: 'cancel'\n });\n });\n const handleSetToday = useEventCallback(() => {\n updateDate({\n value: valueManager.getTodayValue(utils, timezone, valueType),\n name: 'setValueFromAction',\n pickerAction: 'today'\n });\n });\n const handleOpen = useEventCallback(event => {\n event.preventDefault();\n setIsOpen(true);\n });\n const handleClose = useEventCallback(event => {\n event?.preventDefault();\n setIsOpen(false);\n });\n const handleChange = useEventCallback((newValue, selectionState = 'partial') => updateDate({\n name: 'setValueFromView',\n value: newValue,\n selectionState\n }));\n const handleSelectShortcut = useEventCallback((newValue, changeImportance, shortcut) => updateDate({\n name: 'setValueFromShortcut',\n value: newValue,\n changeImportance,\n shortcut\n }));\n const handleChangeFromField = useEventCallback((newValue, context) => updateDate({\n name: 'setValueFromField',\n value: newValue,\n context\n }));\n const actions = {\n onClear: handleClear,\n onAccept: handleAccept,\n onDismiss: handleDismiss,\n onCancel: handleCancel,\n onSetToday: handleSetToday,\n onOpen: handleOpen,\n onClose: handleClose\n };\n const fieldResponse = {\n value: dateState.draft,\n onChange: handleChangeFromField\n };\n const viewValue = React.useMemo(() => valueManager.cleanValue(utils, dateState.draft), [utils, valueManager, dateState.draft]);\n const viewResponse = {\n value: viewValue,\n onChange: handleChange,\n onClose: handleClose,\n open: isOpen\n };\n const isValid = testedValue => {\n const error = validator({\n adapter,\n value: testedValue,\n props: _extends({}, props, {\n value: testedValue,\n timezone\n })\n });\n return !valueManager.hasError(error);\n };\n const layoutResponse = _extends({}, actions, {\n value: viewValue,\n onChange: handleChange,\n onSelectShortcut: handleSelectShortcut,\n isValid\n });\n return {\n open: isOpen,\n fieldProps: fieldResponse,\n viewProps: viewResponse,\n layoutProps: layoutResponse,\n actions\n };\n};","import * as React from 'react';\nexport const useOpenState = ({\n open,\n onOpen,\n onClose\n}) => {\n const isControllingOpenProp = React.useRef(typeof open === 'boolean').current;\n const [openState, setIsOpenState] = React.useState(false);\n\n // It is required to update inner state in useEffect in order to avoid situation when\n // Our component is not mounted yet, but `open` state is set to `true` (for example initially opened)\n React.useEffect(() => {\n if (isControllingOpenProp) {\n if (typeof open !== 'boolean') {\n throw new Error('You must not mix controlling and uncontrolled mode for `open` prop');\n }\n setIsOpenState(open);\n }\n }, [isControllingOpenProp, open]);\n const setIsOpen = React.useCallback(newIsOpen => {\n if (!isControllingOpenProp) {\n setIsOpenState(newIsOpen);\n }\n if (newIsOpen && onOpen) {\n onOpen();\n }\n if (!newIsOpen && onClose) {\n onClose();\n }\n }, [isControllingOpenProp, onOpen, onClose]);\n return {\n isOpen: openState,\n setIsOpen\n };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"sx\"];\nimport * as React from 'react';\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nimport useEventCallback from '@mui/utils/useEventCallback';\nimport { useViews } from '../useViews';\nimport { isTimeView } from '../../utils/time-utils';\n\n/**\n * Props used to handle the views that are common to all pickers.\n */\n\n/**\n * Props used to handle the views of the pickers.\n */\n\n/**\n * Props used to handle the value of the pickers.\n */\n\n/**\n * Manage the views of all the pickers:\n * - Handles the view switch\n * - Handles the switch between UI views and field views\n * - Handles the focus management when switching views\n */\nexport const usePickerViews = ({\n props,\n propsFromPickerValue,\n additionalViewProps,\n autoFocusView,\n rendererInterceptor,\n fieldRef\n}) => {\n const {\n onChange,\n open,\n onClose\n } = propsFromPickerValue;\n const {\n view: inView,\n views,\n openTo,\n onViewChange,\n viewRenderers,\n timezone\n } = props;\n const propsToForwardToView = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n view,\n setView,\n defaultView,\n focusedView,\n setFocusedView,\n setValueAndGoToNextView\n } = useViews({\n view: inView,\n views,\n openTo,\n onChange,\n onViewChange,\n autoFocus: autoFocusView\n });\n const {\n hasUIView,\n viewModeLookup\n } = React.useMemo(() => views.reduce((acc, viewForReduce) => {\n let viewMode;\n if (viewRenderers[viewForReduce] != null) {\n viewMode = 'UI';\n } else {\n viewMode = 'field';\n }\n acc.viewModeLookup[viewForReduce] = viewMode;\n if (viewMode === 'UI') {\n acc.hasUIView = true;\n }\n return acc;\n }, {\n hasUIView: false,\n viewModeLookup: {}\n }), [viewRenderers, views]);\n const timeViewsCount = React.useMemo(() => views.reduce((acc, viewForReduce) => {\n if (viewRenderers[viewForReduce] != null && isTimeView(viewForReduce)) {\n return acc + 1;\n }\n return acc;\n }, 0), [viewRenderers, views]);\n const currentViewMode = viewModeLookup[view];\n const shouldRestoreFocus = useEventCallback(() => currentViewMode === 'UI');\n const [popperView, setPopperView] = React.useState(currentViewMode === 'UI' ? view : null);\n if (popperView !== view && viewModeLookup[view] === 'UI') {\n setPopperView(view);\n }\n useEnhancedEffect(() => {\n // Handle case of `DateTimePicker` without time renderers\n if (currentViewMode === 'field' && open) {\n onClose();\n setTimeout(() => {\n fieldRef?.current?.setSelectedSections(view);\n // focusing the input before the range selection is done\n // calling it outside of timeout results in an inconsistent behavior between Safari And Chrome\n fieldRef?.current?.focusField(view);\n });\n }\n }, [view]); // eslint-disable-line react-hooks/exhaustive-deps\n\n useEnhancedEffect(() => {\n if (!open) {\n return;\n }\n let newView = view;\n\n // If the current view is a field view, go to the last popper view\n if (currentViewMode === 'field' && popperView != null) {\n newView = popperView;\n }\n\n // If the current view is not the default view and both are UI views\n if (newView !== defaultView && viewModeLookup[newView] === 'UI' && viewModeLookup[defaultView] === 'UI') {\n newView = defaultView;\n }\n if (newView !== view) {\n setView(newView);\n }\n setFocusedView(newView, true);\n }, [open]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const layoutProps = {\n views,\n view: popperView,\n onViewChange: setView\n };\n return {\n hasUIView,\n shouldRestoreFocus,\n layoutProps,\n renderCurrentView: () => {\n if (popperView == null) {\n return null;\n }\n const renderer = viewRenderers[popperView];\n if (renderer == null) {\n return null;\n }\n const rendererProps = _extends({}, propsToForwardToView, additionalViewProps, propsFromPickerValue, {\n views,\n timezone,\n onChange: setValueAndGoToNextView,\n view: popperView,\n onViewChange: setView,\n focusedView,\n onFocusedViewChange: setFocusedView,\n showViewSwitcher: timeViewsCount > 1,\n timeViewsCount\n });\n if (rendererInterceptor) {\n return rendererInterceptor(viewRenderers, popperView, rendererProps);\n }\n return renderer(rendererProps);\n }\n };\n};","import * as React from 'react';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { arrayIncludes } from '../utils/utils';\nfunction getOrientation() {\n if (typeof window === 'undefined') {\n return 'portrait';\n }\n if (window.screen && window.screen.orientation && window.screen.orientation.angle) {\n return Math.abs(window.screen.orientation.angle) === 90 ? 'landscape' : 'portrait';\n }\n\n // Support IOS safari\n if (window.orientation) {\n return Math.abs(Number(window.orientation)) === 90 ? 'landscape' : 'portrait';\n }\n return 'portrait';\n}\nexport const useIsLandscape = (views, customOrientation) => {\n const [orientation, setOrientation] = React.useState(getOrientation);\n useEnhancedEffect(() => {\n const eventHandler = () => {\n setOrientation(getOrientation());\n };\n window.addEventListener('orientationchange', eventHandler);\n return () => {\n window.removeEventListener('orientationchange', eventHandler);\n };\n }, []);\n if (arrayIncludes(views, ['hours', 'minutes', 'seconds'])) {\n // could not display 13:34:44 in landscape mode\n return false;\n }\n const orientationToUse = customOrientation || orientation;\n return orientationToUse === 'landscape';\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { useRtl } from '@mui/system/RtlProvider';\nimport { useIsLandscape } from '../useIsLandscape';\n\n/**\n * Props used to create the layout of the views.\n * Those props are exposed on all the pickers.\n */\n\n/**\n * Prepare the props for the view layout (managed by `PickersLayout`)\n */\nexport const usePickerLayoutProps = ({\n props,\n propsFromPickerValue,\n propsFromPickerViews,\n wrapperVariant\n}) => {\n const {\n orientation\n } = props;\n const isLandscape = useIsLandscape(propsFromPickerViews.views, orientation);\n const isRtl = useRtl();\n const layoutProps = _extends({}, propsFromPickerViews, propsFromPickerValue, {\n isLandscape,\n isRtl,\n wrapperVariant,\n disabled: props.disabled,\n readOnly: props.readOnly\n });\n return {\n layoutProps\n };\n};","import { usePickerValue } from './usePickerValue';\nimport { usePickerViews } from './usePickerViews';\nimport { usePickerLayoutProps } from './usePickerLayoutProps';\nimport { buildWarning } from '../../utils/warning';\nconst warnRenderInputIsDefined = buildWarning(['The `renderInput` prop has been removed in version 6.0 of the Date and Time Pickers.', 'You can replace it with the `textField` component slot in most cases.', 'For more information, please have a look at the migration guide (https://mui.com/x/migration/migration-pickers-v5/#input-renderer-required-in-v5).']);\nexport const usePicker = ({\n props,\n valueManager,\n valueType,\n wrapperVariant,\n additionalViewProps,\n validator,\n autoFocusView,\n rendererInterceptor,\n fieldRef\n}) => {\n if (process.env.NODE_ENV !== 'production') {\n if (props.renderInput != null) {\n warnRenderInputIsDefined();\n }\n }\n const pickerValueResponse = usePickerValue({\n props,\n valueManager,\n valueType,\n wrapperVariant,\n validator\n });\n const pickerViewsResponse = usePickerViews({\n props,\n additionalViewProps,\n autoFocusView,\n fieldRef,\n propsFromPickerValue: pickerValueResponse.viewProps,\n rendererInterceptor\n });\n const pickerLayoutResponse = usePickerLayoutProps({\n props,\n wrapperVariant,\n propsFromPickerValue: pickerValueResponse.layoutProps,\n propsFromPickerViews: pickerViewsResponse.layoutProps\n });\n return {\n // Picker value\n open: pickerValueResponse.open,\n actions: pickerValueResponse.actions,\n fieldProps: pickerValueResponse.fieldProps,\n // Picker views\n renderCurrentView: pickerViewsResponse.renderCurrentView,\n hasUIView: pickerViewsResponse.hasUIView,\n shouldRestoreFocus: pickerViewsResponse.shouldRestoreFocus,\n // Picker layout\n layoutProps: pickerLayoutResponse.layoutProps\n };\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { MuiPickersAdapterContext } from '../../LocalizationProvider/LocalizationProvider';\nimport { DEFAULT_LOCALE } from '../../locales/enUS';\nexport const useLocalizationContext = () => {\n const localization = React.useContext(MuiPickersAdapterContext);\n if (localization === null) {\n throw new Error(['MUI X: Can not find the date and time pickers localization context.', 'It looks like you forgot to wrap your component in LocalizationProvider.', 'This can also happen if you are bundling multiple versions of the `@mui/x-date-pickers` package'].join('\\n'));\n }\n if (localization.utils === null) {\n throw new Error(['MUI X: Can not find the date and time pickers adapter from its localization context.', 'It looks like you forgot to pass a `dateAdapter` to your LocalizationProvider.'].join('\\n'));\n }\n const localeText = React.useMemo(() => _extends({}, DEFAULT_LOCALE, localization.localeText), [localization.localeText]);\n return React.useMemo(() => _extends({}, localization, {\n localeText\n }), [localization, localeText]);\n};\nexport const useUtils = () => useLocalizationContext().utils;\nexport const useDefaultDates = () => useLocalizationContext().defaultDates;\nexport const useLocaleText = () => useLocalizationContext().localeText;\nexport const useNow = timezone => {\n const utils = useUtils();\n const now = React.useRef();\n if (now.current === undefined) {\n now.current = utils.date(undefined, timezone);\n }\n return now.current;\n};"],"names":["DAY_SIZE","DAY_MARGIN","DIALOG_WIDTH","MAX_CALENDAR_HEIGHT","VIEW_HEIGHT","useNextMonthDisabled","month","disableFuture","maxDate","timezone","utils","now","date","undefined","lastEnabledMonth","startOfMonth","isBefore","isAfter","usePreviousMonthDisabled","disablePast","minDate","firstEnabledMonth","useDefaultizedDateField","props","defaultDates","format","formats","keyboardDate","mobileVersionMatches","navigator","userAgent","match","androidVersion","parseInt","iOSVersion","slowAnimationDevices","useDefaultReduceAnimations","defaultMatches","_excluded","_excluded2","_excluded3","useDesktopPicker","_ref","getOpenDialogAriaText","pickerParams","slots","slotProps","innerSlotProps","className","sx","formatDensity","enableAccessibleFieldDOMStructure","selectedSections","onSelectedSectionsChange","name","label","inputRef","readOnly","disabled","autoFocus","localeText","reduceAnimations","containerRef","fieldRef","labelId","isToolbarHidden","toolbar","hidden","open","actions","hasUIView","layoutProps","renderCurrentView","shouldRestoreFocus","fieldProps","pickerFieldProps","autoFocusView","additionalViewProps","wrapperVariant","InputAdornment","inputAdornment","_useSlotProps","elementType","externalSlotProps","additionalProps","position","ownerState","inputAdornmentProps","OpenPickerButton","openPickerButton","_useSlotProps2","onClick","onClose","onOpen","value","edge","openPickerButtonProps","OpenPickerIcon","openPickerIcon","Field","field","id","focused","InputProps","ref","disableOpenPicker","children","slotsForField","textField","clearIcon","clearButton","Layout","layout","labelledById","titleId","popper","handleFieldRef","unstableFieldRef","renderPicker","role","placement","anchorEl","current","getSectionPlaceholder","sectionConfig","sectionFormat","type","fieldYearPlaceholder","digitAmount","formatByString","length","fieldMonthPlaceholder","contentType","fieldDayPlaceholder","fieldWeekDayPlaceholder","fieldHoursPlaceholder","fieldMinutesPlaceholder","fieldSecondsPlaceholder","fieldMeridiemPlaceholder","createSection","shouldRespectLeadingZeros","localizedDigits","token","startSeparator","Error","hasLeadingZerosInFormat","hasLeadingZerosInInput","isValidDate","isValid","sectionValue","maxLength","placeholder","endSeparator","modified","buildSectionsFromFormat","params","expandedFormat","formatExpansionOverflow","prevFormat","nextFormat","expandFormat","isRtl","split","reverse","join","escapedParts","start","startChar","end","endChar","escapedCharacters","regExp","RegExp","exec","push","index","lastIndex","getEscapedPartsFromFormat","sections","validTokens","Object","keys","formatTokenMap","sort","a","b","regExpFirstWordInFormat","regExpWordOnlyComposedOfTokens","regExpFirstTokenInWord","getEscapedPartOfCurrentChar","i","find","escapeIndex","escapedPartOfCurrentChar","isEscapedChar","firstWordInFormat","slice","test","word","firstWord","char","buildSections","map","section","cleanSeparator","separator","cleanedSeparator","includes","postProcessSections","isQueryResponseWithoutValue","response","saveQuery","useFieldCharacterEditing","updateSectionValue","sectionsValueBoundaries","setTempAndroidValueStr","useUtils","query","setQuery","resetQuery","useEventCallback","sectionIndex","sectionType","timeout","setTimeout","clearTimeout","applyQuery","keyPressed","getFirstSectionValueMatchingWithQuery","isValidQueryValue","cleanKeyPressed","toLowerCase","activeSection","concatenatedQueryValue","queryResponse","applyCharacterEditing","getNewSectionValue","queryValue","cleanQueryValue","queryValueNumber","Number","sectionBoundaries","currentDate","maximum","minimum","shouldGoToNextSection","toString","formattedValue","applyNumericEditing","findMatchingOptions","options","matchingValues","filter","option","startsWith","testQueryOnFormatAndFallbackFormat","fallbackFormat","formatFallbackValue","getOptions","fallbackOptions","fallbackValue","indexOf","weekday","applyLetterEditing","newSectionValue","resetCharacterQuery","useFieldV7TextField","internalProps","forwardedProps","sectionListRef","inSectionListRef","onBlur","onFocus","onInput","onPaste","focusedProp","fieldValueManager","setSelectedSections","parsedSelectedSections","state","clearActiveSection","clearValue","updateValueFromValueStr","sectionOrder","areAllSectionsEmpty","handleSectionListRef","useForkRef","useId","setFocused","interactions","syncSelectionToDOM","selection","document","getSelection","rangeCount","getRoot","contains","getRangeAt","startContainer","removeAllRanges","blur","range","window","Range","target","getSectionContainer","getSectionContent","selectNodeContents","focus","addRange","getActiveSectionIndexFromDOM","activeElement","getSectionIndexFromDOMElement","focusField","newSelectedSections","newParsedSelectedSections","isFieldFocused","revertDOMSectionChange","innerHTML","handleContainerClick","event","args","isDefaultPrevented","cursorPosition","startOffset","startIndex","cursorOnStartOfSection","handleContainerInput","textContent","charCodeAt","handleContainerPaste","preventDefault","pastedValue","clipboardData","getData","handleContainerFocus","handleContainerBlur","getInputContainerClickHandler","handleInputContentMouseUp","getInputContentFocusHandler","handleInputContentPaste","lettersOnly","digitsOnly","digitsAndLetterOnly","handleInputContentDragOver","dataTransfer","dropEffect","handleInputContentInput","inputType","nativeEvent","useEnhancedEffect","domElement","reduce","acc","next","isContainerEditable","elements","isEditable","container","content","tabIndex","contentEditable","empty","spellCheck","autoCapitalize","autoCorrect","onDragOver","onMouseUp","inputMode","before","after","handleValueStrChange","valueStr","getV7HiddenInputValueFromSections","returnedValue","onChange","cleanString","dirtyString","replace","useFieldV6TextField","focusTimeoutRef","inputRefProp","inPlaceholder","activeSectionIndex","valueManager","getSectionsFromValue","handleRef","positionInInput","newSections","renderedValue","sectionStr","sectionLength","sectionLengthInInput","cleanedValue","startInInput","endInInput","addPositionPropertiesToSections","scrollLeft","currentScrollTop","scrollTop","select","selectedSection","selectionStart","selectionEnd","setSelectionRange","browserStartIndex","browserEndIndex","isInputReadOnly","nextSectionIndex","findIndex","newSelectedSection","syncSelectionFromDOM","handleInputFocus","input","handleInputClick","handleInputPaste","handleInputChange","targetValue","eventData","data","shouldUseEventData","cleanValueStr","prevValueStr","getV6InputValueFromSections","startOfDiffIndex","endOfDiffIndex","activeSectionEndRelativeToNewValue","emptyValue","tempValueStrAndroid","inputHasFocus","autoComplete","useField","minutesStep","onKeyDown","error","clearable","onClear","validator","stateResponse","adapter","u","valueType","valueProp","defaultValue","referenceDate","referenceDateProp","selectedSectionsProp","timezoneProp","valueFromTheOutside","handleValueChange","useValueWithTimezone","fallbackSections","setState","stateWithoutReferenceDate","referenceValue","granularity","getInitialReferenceValue","innerSetSelectedSections","useControlled","controlled","default","publishValue","prevState","areValuesEqual","context","validationError","setSectionValue","locale","shouldUpdate","getTimezone","updateReferenceValue","activeDateManager","getActiveDateManager","hasNoOtherNonEmptySections","getSections","newActiveDate","getInvalidDate","newValues","getNewValuesFromNewActiveDate","newActiveDateSections","values","shouldPublish","mergedDate","newValue","parseValueStr","dateStr","parse","newReferenceValue","prev","useFieldState","characterEditingResponse","useFieldTextField","handleContainerKeyDown","ctrlKey","metaKey","key","shiftKey","altKey","endIndex","neighbors","rightIndex","leftIndex","useValidation","isSameError","defaultErrorState","inputError","hasError","getActiveSectionIndex","commonForwardedProps","Boolean","commonAdditionalProps","getDateSectionConfigFromFormatToken","formatToken","config","getDaysInWeekStr","startDate","startOfWeek","endDate","endOfWeek","addDays","weekDay","getLetterEditingOptions","startOfDay","endOfDay","NON_LOCALIZED_DIGITS","getLocalizedDigits","today","setSeconds","Array","from","_","removeLocalizedDigits","digits","currentFormattedDigit","matchingDigitIndex","applyLocalizedDigits","isStringNumber","nonLocalizedValueStr","isNaN","cleanLeadingZeros","size","cleanDigitSectionValue","setDate","longestMonth","adjustSectionValue","keyCode","activeDate","stepsAttributes","delta","getDeltaFromKeyCode","isStart","isEnd","shouldSetAbsolute","getCleanValue","step","newSectionValueNumber","adjustDigitSection","currentOptionIndex","adjustLetterSection","getSectionVisibleValue","hasLeadingZeros","changeSectionValueFormat","currentFormat","newFormat","isFourDigitYearFormat","doesSectionFormatHaveLeadingZeros","setYear","startOfYear","setHours","setMinutes","getDateFromDateSections","shouldSkipWeekDays","some","sectionFormats","sectionValues","formatWithoutSeparator","dateWithoutSeparatorStr","createDateStrForV7HiddenInputFromSections","createDateStrForV6InputFromSections","dateValue","getSectionsBoundaries","endOfYear","maxDaysInMonth","daysInMonth","getDaysInMonth","year","getMonth","day","daysInWeek","Math","min","max","hours","lastHourInDay","getHours","minutes","getMinutes","seconds","getSeconds","meridiem","validateSections","reliableSectionModificationOrder","mergeDateIntoReferenceDate","dateToTransferFrom","shouldLimitToEditedSections","dateToTransferTo","getYear","setMonth","formattedDaysInWeek","dayInWeekStrOfActiveDate","dayInWeekOfActiveDate","diff","getDate","isAM","mergedDateHours","addHours","transferDateSectionValue","isAndroid","getSectionOrder","shouldApplyRTL","forEach","rtl2ltr","ltr2rtl","groupedSectionsStart","groupedSectionsEnd","RTLIndex","rtlIndex","parseSelectedSections","getSectionValueText","parsedDate","getSectionValueNow","hours12h","useMobilePicker","inputProps","mobilePaper","usePickerValue","onAccept","inValueWithoutRenderTimezone","inDefaultValue","closeOnSelect","isControlled","isOpen","setIsOpen","isControllingOpenProp","openState","setIsOpenState","newIsOpen","useOpenState","inValueWithTimezoneToRender","dateState","setDateState","initialValue","draft","lastPublishedValue","lastCommittedValue","lastControlledValue","hasBeenModifiedSinceMount","updateDate","action","updaterParams","hasChanged","comparison","isCurrentValueTheDefaultValue","pickerAction","selectionState","shouldPublishValue","shouldCommit","changeImportance","shouldCommitValue","shouldClose","shouldClosePicker","cachedContext","getContext","shortcut","isUpdateComingFromPicker","handleClear","handleAccept","handleDismiss","handleCancel","handleSetToday","getTodayValue","handleOpen","handleClose","handleChange","handleSelectShortcut","handleChangeFromField","onDismiss","onCancel","onSetToday","fieldResponse","viewValue","cleanValue","viewProps","onSelectShortcut","testedValue","getOrientation","screen","orientation","angle","abs","usePickerLayoutProps","propsFromPickerValue","propsFromPickerViews","isLandscape","views","customOrientation","setOrientation","eventHandler","addEventListener","removeEventListener","useIsLandscape","usePicker","rendererInterceptor","pickerValueResponse","pickerViewsResponse","view","inView","openTo","onViewChange","viewRenderers","propsToForwardToView","setView","defaultView","focusedView","setFocusedView","setValueAndGoToNextView","useViews","viewModeLookup","viewForReduce","viewMode","timeViewsCount","currentViewMode","popperView","setPopperView","newView","renderer","rendererProps","onFocusedViewChange","showViewSwitcher","usePickerViews","pickerLayoutResponse","useLocalizationContext","localization","useDefaultDates","useLocaleText","useNow"],"sourceRoot":""}