@owp/core 2.5.31 → 2.5.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/components/OwpPageContent/OwpPageContent.js +1 -1
  2. package/dist/components/OwpPageContent/OwpPageContent.js.map +1 -1
  3. package/dist/components/OwpSection/OwpSection.js +1 -1
  4. package/dist/components/OwpSection/OwpSection.js.map +1 -1
  5. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js +813 -241
  6. package/dist/components/OwpSelectorBase/OwpSelectorAutocomplete.js.map +1 -1
  7. package/dist/components/OwpTreeGrid/OwpTreeGrid.js +266 -252
  8. package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
  9. package/dist/components/OwpTreeGrid/internal/OwpTreeGridErrorTooltip.js +59 -0
  10. package/dist/components/OwpTreeGrid/internal/OwpTreeGridErrorTooltip.js.map +1 -0
  11. package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridErrorTooltip.js +27 -0
  12. package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridErrorTooltip.js.map +1 -0
  13. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +607 -510
  14. package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
  15. package/dist/components/OwpTreeGrid/internal/treeGridSelection.js +61 -0
  16. package/dist/components/OwpTreeGrid/internal/treeGridSelection.js.map +1 -0
  17. package/dist/components/OwpTreeGrid/internal/treeGridTheme.js +157 -154
  18. package/dist/components/OwpTreeGrid/internal/treeGridTheme.js.map +1 -1
  19. package/dist/hooks/useMinimumVisibleState.js.map +1 -0
  20. package/dist/hooks.js +47 -45
  21. package/dist/hooks.js.map +1 -1
  22. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
  23. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
  24. package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/constants.js +1 -1
  25. package/dist/types/components/OwpSelectorBase/types/types.d.ts +2 -0
  26. package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +5 -1
  27. package/dist/types/components/OwpTreeGrid/internal/OwpTreeGridErrorTooltip.d.ts +12 -0
  28. package/dist/types/components/OwpTreeGrid/internal/hooks/useOwpTreeGridErrorTooltip.d.ts +17 -0
  29. package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +6 -1
  30. package/dist/types/components/OwpTreeGrid/internal/treeGridSelection.d.ts +12 -0
  31. package/dist/types/hooks/index.d.ts +1 -0
  32. package/dist/types/hooks/useMinimumVisibleState.d.ts +6 -0
  33. package/dist/types/utils/treeGridUtil.d.ts +6 -1
  34. package/dist/utils/treeGridUtil.js +240 -204
  35. package/dist/utils/treeGridUtil.js.map +1 -1
  36. package/package.json +1 -1
  37. package/dist/hooks/internal/useMinimumVisibleState.js.map +0 -1
  38. package/dist/types/hooks/internal/useMinimumVisibleState.d.ts +0 -7
  39. /package/dist/hooks/{internal/useMinimumVisibleState.js → useMinimumVisibleState.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"OwpSelectorAutocomplete.js","sources":["../../../src/components/OwpSelectorBase/OwpSelectorAutocomplete.tsx"],"sourcesContent":["import { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport {\n Autocomplete,\n Box,\n Checkbox,\n Chip,\n CircularProgress,\n ClickAwayListener,\n Paper,\n Popper,\n TextField,\n} from '@mui/material';\nimport { alpha } from '@mui/material/styles';\nimport clsx from 'clsx';\nimport {\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type MutableRefObject,\n type SyntheticEvent,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type {\n OwpSelectorBaseHookResult,\n OwpSelectorBaseOption,\n OwpSelectorBaseProps,\n} from './types';\nimport {\n SELECTOR_ALL_OPTION_LABEL_SX,\n SELECTOR_ALL_VALUE_LABEL_SX,\n} from './selectorBaseStyles';\nimport { isSelectorAllOption } from './utils';\n\ninterface OwpSelectorAutocompleteProps {\n hookResult: OwpSelectorBaseHookResult;\n props: OwpSelectorBaseProps;\n}\n\nconst MULTIPLE_VISIBLE_CHIP_COUNT = 2;\nconst AUTOCOMPLETE_MIN_WIDTH = 152;\nconst MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH = 72;\nconst SELECTOR_CLEAR_ICON_FONT_SIZE = 18.57;\nconst STANDARD_AUTOCOMPLETE_INPUT_PADDING_LEFT = '11px !important';\nconst OUTLINED_AUTOCOMPLETE_INPUT_PADDING_LEFT = '2px !important';\nconst OUTLINED_SMALL_AUTOCOMPLETE_INPUT_PADDING_LEFT = '5px !important';\n\ntype SelectorAutocompleteKeyDownEvent = ReactKeyboardEvent<HTMLDivElement> & {\n defaultMuiPrevented?: boolean;\n};\n\n/**\n * 현재 키 이벤트 기준 입력값 반환\n * @param event 키보드 이벤트\n * @param fallbackValue 제어 입력 fallback 값\n */\nconst getCurrentAutocompleteInputValue = (\n event: SelectorAutocompleteKeyDownEvent,\n fallbackValue?: string,\n) => {\n const eventTarget = event.target;\n\n if (eventTarget instanceof HTMLInputElement) {\n return eventTarget.value;\n }\n\n return fallbackValue ?? '';\n};\n\n/**\n * Autocomplete 옵션 라벨 문자열 변환\n * @param label 옵션 라벨\n */\nconst getAutocompleteOptionLabel = (label: OwpSelectorBaseOption['label']) => {\n return typeof label === 'string' || typeof label === 'number' ? `${label}` : '';\n};\n\n/**\n * Autocomplete 옵션 라벨 렌더링\n * @param option 선택 옵션\n */\nconst renderAutocompleteOptionLabel = (option: OwpSelectorBaseOption) => (\n <Box\n component=\"span\"\n sx={isSelectorAllOption(option) ? SELECTOR_ALL_OPTION_LABEL_SX : undefined}\n >\n {option.label}\n </Box>\n);\n\n/**\n * Autocomplete 기반 공통 선택기\n * @param props Autocomplete 렌더링 props\n */\nexport const OwpSelectorAutocomplete = ({ hookResult, props }: OwpSelectorAutocompleteProps) => {\n const { t } = useOwpTranslation();\n const {\n autocompleteInputValue,\n className,\n disableClientFilter,\n disabled,\n error,\n fullWidth,\n helperText,\n label,\n loading,\n loadingText,\n multiple,\n noOptionsText,\n onAutocompleteInputChange,\n placeholder,\n required,\n showAllOption = true,\n textFieldProps,\n valueTextAlign,\n } = props;\n const {\n allOption,\n clearSelection,\n isAllSelected,\n resolvedOptions,\n restoreAllSelection,\n selectAll,\n selectedOption,\n selectedOptions,\n selectMultipleValues,\n selectSingleValue,\n } = hookResult;\n const options = showAllOption ? [allOption, ...resolvedOptions] : resolvedOptions;\n const filteredSelectedOptions = useMemo(\n () => selectedOptions.filter((option) => !isSelectorAllOption(option)),\n [selectedOptions],\n );\n const hiddenSelectedOptions = useMemo(\n () => (isAllSelected ? [] : filteredSelectedOptions.slice(MULTIPLE_VISIBLE_CHIP_COUNT)),\n [filteredSelectedOptions, isAllSelected],\n );\n const hiddenSelectedOptionCount = hiddenSelectedOptions.length;\n const [hiddenChipAnchorEl, setHiddenChipAnchorEl] = useState<HTMLElement | null>(null);\n const autocompleteRootRef = useRef<HTMLDivElement | null>(null);\n const resolvedNoOptionsText =\n noOptionsText ??\n t(disableClientFilter ? 'Message.검색 결과 없음' : 'Message.조회된 결과가 없습니다.');\n const shouldRestoreAllOnClearRef = useRef(\n multiple &&\n showAllOption &&\n ((props.value ?? props.defaultValue) == null || (props.value ?? props.defaultValue) === ''),\n );\n const autocompleteSlotProps = {\n clearIndicator: {\n className: 'm-0 p-0',\n size: 'small',\n tabIndex: -1,\n },\n paper: {\n sx: {\n '& .MuiAutocomplete-noOptions': {\n fontSize: 14,\n px: 1,\n py: 1.5,\n whiteSpace: 'nowrap',\n },\n },\n },\n popupIndicator: {\n className: 'm-0 p-0',\n size: 'small',\n tabIndex: -1,\n },\n } as const;\n const resolvedTextFieldVariant = textFieldProps?.variant ?? 'standard';\n const singleAutocompleteInputPaddingLeft =\n resolvedTextFieldVariant === 'standard'\n ? STANDARD_AUTOCOMPLETE_INPUT_PADDING_LEFT\n : resolvedTextFieldVariant === 'outlined'\n ? textFieldProps?.size === 'small'\n ? OUTLINED_SMALL_AUTOCOMPLETE_INPUT_PADDING_LEFT\n : OUTLINED_AUTOCOMPLETE_INPUT_PADDING_LEFT\n : undefined;\n const singleAutocompleteInputSx =\n singleAutocompleteInputPaddingLeft || valueTextAlign\n ? {\n '& .MuiAutocomplete-input': {\n ...(singleAutocompleteInputPaddingLeft\n ? { paddingLeft: singleAutocompleteInputPaddingLeft }\n : {}),\n ...(valueTextAlign ? { textAlign: valueTextAlign } : {}),\n },\n }\n : undefined;\n const autocompleteSx = {\n minWidth: AUTOCOMPLETE_MIN_WIDTH,\n '& .MuiAutocomplete-endAdornment': {\n '& .MuiAutocomplete-clearIndicator + .MuiAutocomplete-popupIndicator': {\n ml: 0,\n },\n '& .MuiIconButton-root': {\n m: 0,\n p: 0,\n },\n '& > :not(style) + :not(style)': {\n ml: 0,\n },\n alignItems: 'center',\n gap: 0,\n right: 0,\n },\n } as const;\n const multipleAutocompleteSx = {\n ...autocompleteSx,\n '& .MuiAutocomplete-inputRoot .MuiAutocomplete-input': {\n flexBasis: MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH,\n minWidth: MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH,\n },\n } as const;\n\n useEffect(() => {\n if (!hiddenSelectedOptionCount) {\n setHiddenChipAnchorEl(null);\n }\n }, [hiddenSelectedOptionCount]);\n\n useEffect(() => {\n if (!shouldRestoreAllOnClearRef.current) {\n return;\n }\n\n const formElement = autocompleteRootRef.current?.closest('form');\n\n if (!formElement) {\n return;\n }\n\n const handleFormReset = () => {\n window.setTimeout(() => {\n restoreAllSelection();\n }, 0);\n };\n\n formElement.addEventListener('reset', handleFormReset);\n\n return () => {\n formElement.removeEventListener('reset', handleFormReset);\n };\n }, [restoreAllSelection]);\n\n const handleHiddenChipPopperClose = () => {\n setHiddenChipAnchorEl(null);\n };\n\n const handleHiddenChipSummaryMouseDown = (event: ReactMouseEvent<HTMLElement>) => {\n event.preventDefault();\n };\n\n const handleHiddenChipSummaryClick = (event: ReactMouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n setHiddenChipAnchorEl((previousAnchorElement) =>\n previousAnchorElement === event.currentTarget ? null : event.currentTarget,\n );\n };\n\n const handleHiddenChipDelete = (optionValue: string) => {\n selectMultipleValues(\n filteredSelectedOptions\n .filter((option) => option.value !== optionValue)\n .map((option) => option.value),\n );\n };\n\n const handleMultipleRootKeyDown = (event: SelectorAutocompleteKeyDownEvent) => {\n const currentInputValue = getCurrentAutocompleteInputValue(event, autocompleteInputValue);\n\n if (\n (isAllSelected || hiddenSelectedOptionCount > 0) &&\n currentInputValue === '' &&\n (event.key === 'Backspace' || event.key === 'Delete')\n ) {\n event.defaultMuiPrevented = true;\n event.preventDefault();\n event.stopPropagation();\n }\n\n textFieldProps?.onKeyDown?.(\n event as Parameters<NonNullable<typeof textFieldProps.onKeyDown>>[0],\n );\n };\n\n if (multiple) {\n return (\n <>\n <Autocomplete\n ref={autocompleteRootRef as MutableRefObject<HTMLDivElement | null>}\n className={clsx('min-w-128', className)}\n disableCloseOnSelect\n disabled={disabled}\n filterOptions={disableClientFilter ? (nextOptions) => nextOptions : undefined}\n fullWidth={fullWidth}\n inputValue={autocompleteInputValue}\n loading={loading}\n multiple\n options={options}\n clearText=\"\"\n closeText=\"\"\n clearIcon={<ClearIcon sx={{ fontSize: SELECTOR_CLEAR_ICON_FONT_SIZE }} />}\n openText=\"\"\n popupIcon={<ArrowDropDownIcon />}\n sx={multipleAutocompleteSx}\n value={selectedOptions}\n getOptionLabel={(option) => getAutocompleteOptionLabel(option.label)}\n getOptionKey={(option) => option.value}\n isOptionEqualToValue={(option, selected) => option.value === selected.value}\n loadingText={loadingText ?? t('Common.로딩 중...')}\n noOptionsText={resolvedNoOptionsText}\n onChange={(\n _event: SyntheticEvent,\n nextOptions: OwpSelectorBaseOption[],\n reason: string,\n details,\n ) => {\n const currentInputValue =\n _event.type === 'keydown'\n ? getCurrentAutocompleteInputValue(\n _event as SelectorAutocompleteKeyDownEvent,\n autocompleteInputValue,\n )\n : (autocompleteInputValue ?? '');\n\n if (\n reason === 'removeOption' &&\n _event.type === 'keydown' &&\n currentInputValue === '' &&\n (isAllSelected || hiddenSelectedOptionCount > 0)\n ) {\n _event.preventDefault();\n _event.stopPropagation();\n return;\n }\n\n if (reason === 'clear') {\n if (shouldRestoreAllOnClearRef.current) {\n selectAll();\n return;\n }\n\n clearSelection();\n return;\n }\n\n if (showAllOption && details?.option && isSelectorAllOption(details.option)) {\n if (isAllSelected) {\n clearSelection();\n return;\n }\n\n selectAll();\n return;\n }\n\n selectMultipleValues(\n nextOptions\n .filter((option) => !isSelectorAllOption(option))\n .map((option) => option.value),\n );\n }}\n onInputChange={(_event, nextInputValue, reason) => {\n onAutocompleteInputChange?.(nextInputValue, reason);\n }}\n onKeyDown={handleMultipleRootKeyDown}\n slotProps={autocompleteSlotProps}\n renderInput={(params) => (\n <TextField\n {...params}\n {...textFieldProps}\n disabled={disabled}\n error={error}\n fullWidth={fullWidth}\n helperText={helperText}\n label={label}\n placeholder={placeholder ?? t('Common.검색')}\n required={required}\n slotProps={{\n ...textFieldProps?.slotProps,\n input: {\n ...params.InputProps,\n ...textFieldProps?.slotProps?.input,\n endAdornment: (\n <>\n {loading ? (\n <CircularProgress color=\"inherit\" size={16} sx={{ mr: 0.5 }} />\n ) : null}\n {params.InputProps.endAdornment}\n </>\n ),\n },\n }}\n variant={resolvedTextFieldVariant}\n />\n )}\n renderOption={(optionProps, option, state) => {\n const { key, ...restOptionProps } = optionProps;\n\n return (\n <li key={key} {...restOptionProps}>\n <Checkbox checked={state.selected} className=\"!mr-8 !p-0\" size=\"small\" />\n {renderAutocompleteOptionLabel(option)}\n </li>\n );\n }}\n renderValue={(nextSelectedOptions, getItemProps) => {\n if (showAllOption && isAllSelected) {\n return [\n <Box\n component=\"span\"\n key={allOption.value}\n sx={SELECTOR_ALL_VALUE_LABEL_SX}\n >\n {allOption.label}\n </Box>,\n ];\n }\n\n const visibleSelectedOptions = nextSelectedOptions\n .filter((option) => !isSelectorAllOption(option))\n .slice(0, MULTIPLE_VISIBLE_CHIP_COUNT);\n\n return [\n ...visibleSelectedOptions.map((option, index) => {\n const { key, ...itemProps } = getItemProps({ index });\n\n return (\n <Chip\n {...itemProps}\n key={key}\n label={option.label}\n size=\"small\"\n sx={{ borderRadius: 1, mr: 0.5 }}\n />\n );\n }),\n ...(hiddenSelectedOptionCount > 0\n ? [\n <Chip\n key=\"owp-selector-hidden-chip-summary\"\n clickable\n label={`+${hiddenSelectedOptionCount}`}\n onClick={handleHiddenChipSummaryClick}\n onMouseDown={handleHiddenChipSummaryMouseDown}\n size=\"small\"\n sx={(theme) => ({\n backgroundColor: alpha(theme.palette.primary.main, 0.14),\n border: `1px solid ${alpha(theme.palette.primary.main, 0.22)}`,\n borderRadius: 1,\n color: theme.palette.primary.dark,\n fontWeight: 600,\n mr: 0.5,\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.2),\n },\n })}\n />,\n ]\n : []),\n ];\n }}\n />\n <Popper\n anchorEl={hiddenChipAnchorEl}\n open={Boolean(hiddenChipAnchorEl) && hiddenSelectedOptionCount > 0}\n placement=\"bottom-start\"\n sx={{ zIndex: (theme) => theme.zIndex.modal }}\n >\n <ClickAwayListener onClickAway={handleHiddenChipPopperClose}>\n <Paper\n className=\"mt-4\"\n sx={{\n border: (theme) => `1px solid ${alpha(theme.palette.common.black, 0.12)}`,\n display: 'flex',\n flexWrap: 'wrap',\n gap: 0.75,\n maxWidth: 280,\n p: 1,\n }}\n >\n {hiddenSelectedOptions.map((option) => (\n <Chip\n key={option.value}\n label={option.label}\n onDelete={() => handleHiddenChipDelete(option.value)}\n size=\"small\"\n sx={{ borderRadius: 1 }}\n />\n ))}\n </Paper>\n </ClickAwayListener>\n </Popper>\n </>\n );\n }\n\n return (\n <Autocomplete\n className={clsx('min-w-128', className)}\n disabled={disabled}\n filterOptions={disableClientFilter ? (nextOptions) => nextOptions : undefined}\n fullWidth={fullWidth}\n inputValue={autocompleteInputValue}\n loading={loading}\n options={options}\n clearText=\"\"\n closeText=\"\"\n clearIcon={<ClearIcon sx={{ fontSize: SELECTOR_CLEAR_ICON_FONT_SIZE }} />}\n openText=\"\"\n popupIcon={<ArrowDropDownIcon />}\n sx={autocompleteSx}\n value={selectedOption}\n getOptionLabel={(option) => getAutocompleteOptionLabel(option.label)}\n getOptionKey={(option) => option.value}\n isOptionEqualToValue={(option, selected) => option.value === selected.value}\n loadingText={loadingText ?? t('Common.로딩 중...')}\n noOptionsText={resolvedNoOptionsText}\n onChange={(_event: SyntheticEvent, nextOption) => {\n if (!nextOption || (showAllOption && isSelectorAllOption(nextOption))) {\n selectSingleValue('');\n return;\n }\n\n selectSingleValue(nextOption.value);\n }}\n onInputChange={(_event, nextInputValue, reason) => {\n onAutocompleteInputChange?.(nextInputValue, reason);\n }}\n slotProps={autocompleteSlotProps}\n renderInput={(params) => (\n <TextField\n {...params}\n {...textFieldProps}\n disabled={disabled}\n error={error}\n fullWidth={fullWidth}\n helperText={helperText}\n label={label}\n placeholder={placeholder}\n required={required}\n slotProps={{\n ...textFieldProps?.slotProps,\n input: {\n ...params.InputProps,\n ...textFieldProps?.slotProps?.input,\n sx: {\n ...(singleAutocompleteInputSx ?? {}),\n ...((params.InputProps as { sx?: object }).sx ?? {}),\n ...((textFieldProps?.slotProps?.input as { sx?: object } | undefined)?.sx ?? {}),\n },\n endAdornment: (\n <>\n {loading ? <CircularProgress color=\"inherit\" size={16} sx={{ mr: 0.5 }} /> : null}\n {params.InputProps.endAdornment}\n </>\n ),\n },\n }}\n variant={resolvedTextFieldVariant}\n />\n )}\n selectOnFocus\n renderOption={(optionProps, option) => {\n const { key, ...restOptionProps } = optionProps;\n\n return (\n <li key={key} {...restOptionProps}>\n {renderAutocompleteOptionLabel(option)}\n </li>\n );\n }}\n />\n );\n};\n"],"names":["MULTIPLE_VISIBLE_CHIP_COUNT","AUTOCOMPLETE_MIN_WIDTH","MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH","SELECTOR_CLEAR_ICON_FONT_SIZE","STANDARD_AUTOCOMPLETE_INPUT_PADDING_LEFT","OUTLINED_AUTOCOMPLETE_INPUT_PADDING_LEFT","OUTLINED_SMALL_AUTOCOMPLETE_INPUT_PADDING_LEFT","getCurrentAutocompleteInputValue","__name","event","fallbackValue","eventTarget","getAutocompleteOptionLabel","label","renderAutocompleteOptionLabel","option","jsx","Box","isSelectorAllOption","SELECTOR_ALL_OPTION_LABEL_SX","OwpSelectorAutocomplete","hookResult","props","t","useOwpTranslation","autocompleteInputValue","className","disableClientFilter","disabled","error","fullWidth","helperText","loading","loadingText","multiple","noOptionsText","onAutocompleteInputChange","placeholder","required","showAllOption","textFieldProps","valueTextAlign","allOption","clearSelection","isAllSelected","resolvedOptions","restoreAllSelection","selectAll","selectedOption","selectedOptions","selectMultipleValues","selectSingleValue","options","filteredSelectedOptions","useMemo","hiddenSelectedOptions","hiddenSelectedOptionCount","hiddenChipAnchorEl","setHiddenChipAnchorEl","useState","autocompleteRootRef","useRef","resolvedNoOptionsText","shouldRestoreAllOnClearRef","autocompleteSlotProps","resolvedTextFieldVariant","singleAutocompleteInputPaddingLeft","singleAutocompleteInputSx","autocompleteSx","multipleAutocompleteSx","useEffect","formElement","_a","handleFormReset","handleHiddenChipPopperClose","handleHiddenChipSummaryMouseDown","handleHiddenChipSummaryClick","previousAnchorElement","handleHiddenChipDelete","optionValue","handleMultipleRootKeyDown","currentInputValue","jsxs","Fragment","Autocomplete","clsx","nextOptions","ClearIcon","ArrowDropDownIcon","selected","_event","reason","details","nextInputValue","params","TextField","CircularProgress","optionProps","state","key","restOptionProps","Checkbox","nextSelectedOptions","getItemProps","SELECTOR_ALL_VALUE_LABEL_SX","index","itemProps","createElement","Chip","theme","alpha","Popper","ClickAwayListener","Paper","nextOption","_c","_b"],"mappings":"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"}
1
+ {"version":3,"file":"OwpSelectorAutocomplete.js","sources":["../../../src/components/OwpSelectorBase/OwpSelectorAutocomplete.tsx"],"sourcesContent":["import { useOwpTranslation } from '@/hooks/useOwpTranslation';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport {\n Autocomplete,\n Box,\n Checkbox,\n Chip,\n CircularProgress,\n ClickAwayListener,\n IconButton,\n Paper,\n Popper,\n TextField,\n} from '@mui/material';\nimport useAutocomplete from '@mui/material/useAutocomplete';\nimport { alpha, type SxProps, type Theme } from '@mui/material/styles';\nimport clsx from 'clsx';\nimport {\n type FocusEvent as ReactFocusEvent,\n type ForwardedRef,\n type HTMLAttributes,\n type Key,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n type MouseEvent as ReactMouseEvent,\n type MutableRefObject,\n type SyntheticEvent,\n type UIEvent as ReactUIEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type {\n OwpSelectorBaseHookResult,\n OwpSelectorBaseOption,\n OwpSelectorBaseProps,\n} from './types';\nimport {\n SELECTOR_ALL_OPTION_LABEL_SX,\n SELECTOR_ALL_VALUE_LABEL_SX,\n} from './selectorBaseStyles';\nimport { isSelectorAllOption } from './utils';\n\ninterface OwpSelectorAutocompleteProps {\n hookResult: OwpSelectorBaseHookResult;\n props: OwpSelectorBaseProps;\n}\n\nconst MULTIPLE_VISIBLE_CHIP_COUNT = 2;\nconst AUTOCOMPLETE_MIN_WIDTH = 152;\nconst MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH = 72;\nconst SELECTOR_CLEAR_ICON_FONT_SIZE = 18.57;\nconst STANDARD_AUTOCOMPLETE_INPUT_PADDING_LEFT = '11px !important';\nconst OUTLINED_AUTOCOMPLETE_INPUT_PADDING_LEFT = '2px !important';\nconst OUTLINED_SMALL_AUTOCOMPLETE_INPUT_PADDING_LEFT = '5px !important';\nconst AUTOCOMPLETE_VIRTUALIZATION_THRESHOLD = 100;\nconst AUTOCOMPLETE_VIRTUALIZED_ITEM_HEIGHT = 36;\nconst AUTOCOMPLETE_VIRTUALIZED_LISTBOX_PADDING = 8;\nconst AUTOCOMPLETE_VIRTUALIZED_VISIBLE_ITEM_COUNT = 8;\nconst AUTOCOMPLETE_VIRTUALIZED_OVERSCAN_ITEM_COUNT = 8;\nconst AUTOCOMPLETE_POPUP_INDICATOR_WIDTH = 30;\nconst AUTOCOMPLETE_CLEAR_INDICATOR_WIDTH = 26;\nconst AUTOCOMPLETE_SEARCH_DIACRITICS_REGEX = /[\\u0300-\\u036f]/g;\n\ntype SelectorAutocompleteKeyDownEvent = ReactKeyboardEvent<HTMLDivElement> & {\n defaultMuiPrevented?: boolean;\n};\n\ntype SelectorAutocompleteGetOptionProps = (renderedOption: {\n option: OwpSelectorBaseOption;\n index: number;\n}) => HTMLAttributes<HTMLLIElement> & {\n key: Key;\n};\n\ninterface OwpVirtualizedAutocompleteOptionListProps {\n getListboxProps: () => HTMLAttributes<HTMLUListElement>;\n getOptionProps: SelectorAutocompleteGetOptionProps;\n options: OwpSelectorBaseOption[];\n selectedOption?: OwpSelectorBaseOption | null;\n}\n\ninterface OwpVirtualizedSingleSelectorAutocompleteProps {\n autocompleteInputValue?: string;\n autocompleteSx: SxProps<Theme>;\n className?: string;\n disableClientFilter?: boolean;\n disabled?: boolean;\n error?: boolean;\n fullWidth?: boolean;\n helperText?: ReactNode;\n label?: ReactNode;\n loading?: boolean;\n loadingText: ReactNode;\n noOptionsText: ReactNode;\n onAutocompleteInputChange?: (nextInputValue: string, reason: string) => void;\n options: OwpSelectorBaseOption[];\n placeholder?: string;\n required?: boolean;\n resolvedTextFieldVariant: NonNullable<OwpSelectorBaseProps['textFieldProps']>['variant'];\n selectSingleValue: (nextValue: string) => void;\n selectedOption: OwpSelectorBaseOption | null;\n showAllOption: boolean;\n singleAutocompleteInputSx?: SxProps<Theme>;\n textFieldProps?: OwpSelectorBaseProps['textFieldProps'];\n}\n\n/**\n * forwarded ref와 내부 ref 동기화\n * @param forwardedRef 외부 ref\n * @param node 현재 DOM 노드\n */\nconst assignAutocompleteListboxRef = (\n forwardedRef: ForwardedRef<HTMLElement>,\n node: HTMLElement | null,\n) => {\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n return;\n }\n\n if (forwardedRef) {\n forwardedRef.current = node;\n }\n};\n\n/**\n * 가상 목록 렌더링 인덱스 계산\n * @param optionCount option 개수\n * @param visibleStartIndex visible 시작 인덱스\n * @param visibleEndIndex visible 종료 인덱스\n * @param selectedOptionIndex 선택 option 인덱스\n */\nconst getVirtualizedOptionIndexes = (\n optionCount: number,\n visibleStartIndex: number,\n visibleEndIndex: number,\n selectedOptionIndex: number,\n) => {\n const indexSet = new Set<number>();\n const addIndex = (index: number) => {\n if (index >= 0 && index < optionCount) {\n indexSet.add(index);\n }\n };\n\n addIndex(0);\n addIndex(optionCount - 1);\n addIndex(selectedOptionIndex);\n\n for (let index = visibleStartIndex; index < visibleEndIndex; index += 1) {\n addIndex(index);\n }\n\n return Array.from(indexSet).sort((leftIndex, rightIndex) => leftIndex - rightIndex);\n};\n\n/**\n * 가상 Autocomplete listbox sx\n * @param height listbox 높이\n */\nconst getVirtualizedAutocompleteListboxSx = (height?: number): SxProps<Theme>[] => [\n {\n listStyle: 'none',\n margin: 0,\n maxHeight: '40vh',\n overflow: 'auto',\n padding: 0,\n position: 'relative',\n ...(height ? { height } : {}),\n '& .MuiAutocomplete-option': {\n alignItems: 'center',\n boxSizing: 'border-box',\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'flex-start',\n minHeight: 48,\n outline: 0,\n overflow: 'hidden',\n paddingBottom: 0.75,\n paddingLeft: 2,\n paddingRight: 2,\n paddingTop: 0.75,\n WebkitTapHighlightColor: 'transparent',\n '@media (min-width:600px)': {\n minHeight: 'auto',\n },\n '&.Mui-focused': {\n backgroundColor: (theme) => theme.palette.action.hover,\n '@media (hover: none)': {\n backgroundColor: 'transparent',\n },\n },\n '&.Mui-focusVisible': {\n backgroundColor: (theme) => theme.palette.action.focus,\n },\n '&[aria-disabled=\"true\"]': {\n opacity: (theme) => theme.palette.action.disabledOpacity,\n pointerEvents: 'none',\n },\n '&[aria-selected=\"true\"]': {\n backgroundColor: (theme) =>\n alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n '&.Mui-focused': {\n backgroundColor: (theme) =>\n alpha(\n theme.palette.primary.main,\n theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity,\n ),\n '@media (hover: none)': {\n backgroundColor: (theme) => theme.palette.action.selected,\n },\n },\n '&.Mui-focusVisible': {\n backgroundColor: (theme) =>\n alpha(\n theme.palette.primary.main,\n theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity,\n ),\n },\n },\n },\n },\n];\n\n/**\n * useAutocomplete 기반 대용량 옵션 목록 렌더링\n * @param props option list 렌더링 props\n */\nconst OwpVirtualizedAutocompleteOptionList = ({\n getListboxProps,\n getOptionProps,\n options,\n selectedOption,\n}: OwpVirtualizedAutocompleteOptionListProps) => {\n const listboxProps = getListboxProps() as HTMLAttributes<HTMLElement> & {\n ref?: ForwardedRef<HTMLElement>;\n };\n const { ref: forwardedListboxRef, style, ...restListboxProps } = listboxProps;\n const listboxRef = useRef<HTMLElement | null>(null);\n const [startIndex, setStartIndex] = useState(0);\n const optionCount = options.length;\n const visibleStartIndex = Math.max(0, Math.min(startIndex, Math.max(optionCount - 1, 0)));\n const visibleEndIndex = Math.min(\n optionCount,\n visibleStartIndex +\n AUTOCOMPLETE_VIRTUALIZED_VISIBLE_ITEM_COUNT +\n AUTOCOMPLETE_VIRTUALIZED_OVERSCAN_ITEM_COUNT * 2,\n );\n const selectedOptionIndex = useMemo(() => {\n if (!selectedOption) {\n return -1;\n }\n\n for (let index = 0; index < optionCount; index += 1) {\n if (options[index].value === selectedOption.value) {\n return index;\n }\n }\n\n return -1;\n }, [optionCount, options, selectedOption]);\n const renderedOptionIndexes = useMemo(\n () =>\n getVirtualizedOptionIndexes(\n optionCount,\n visibleStartIndex,\n visibleEndIndex,\n selectedOptionIndex,\n ),\n [optionCount, selectedOptionIndex, visibleEndIndex, visibleStartIndex],\n );\n const listboxHeight =\n Math.min(optionCount, AUTOCOMPLETE_VIRTUALIZED_VISIBLE_ITEM_COUNT) *\n AUTOCOMPLETE_VIRTUALIZED_ITEM_HEIGHT +\n AUTOCOMPLETE_VIRTUALIZED_LISTBOX_PADDING * 2;\n\n const handleRef = useCallback(\n (node: HTMLElement | null) => {\n listboxRef.current = node;\n assignAutocompleteListboxRef(forwardedListboxRef, node);\n },\n [forwardedListboxRef],\n );\n\n const handleScroll = (event: ReactUIEvent<HTMLElement>) => {\n const nextStartIndex = Math.max(\n 0,\n Math.floor(\n (event.currentTarget.scrollTop - AUTOCOMPLETE_VIRTUALIZED_LISTBOX_PADDING) /\n AUTOCOMPLETE_VIRTUALIZED_ITEM_HEIGHT,\n ) - AUTOCOMPLETE_VIRTUALIZED_OVERSCAN_ITEM_COUNT,\n );\n\n setStartIndex((previousStartIndex) =>\n previousStartIndex === nextStartIndex ? previousStartIndex : nextStartIndex,\n );\n };\n\n useEffect(() => {\n setStartIndex(0);\n\n if (listboxRef.current) {\n listboxRef.current.scrollTop = 0;\n }\n }, [optionCount]);\n\n return (\n <Box\n component=\"div\"\n {...restListboxProps}\n ref={handleRef}\n onScroll={handleScroll}\n style={style}\n sx={getVirtualizedAutocompleteListboxSx(listboxHeight) as SxProps<Theme>}\n >\n <Box\n component=\"ul\"\n sx={{\n height:\n optionCount * AUTOCOMPLETE_VIRTUALIZED_ITEM_HEIGHT +\n AUTOCOMPLETE_VIRTUALIZED_LISTBOX_PADDING * 2,\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative',\n }}\n >\n {renderedOptionIndexes.map((optionIndex) => {\n const option = options[optionIndex];\n const optionProps = getOptionProps({ option, index: optionIndex });\n const { key, ...restOptionProps } = optionProps;\n const optionTop =\n AUTOCOMPLETE_VIRTUALIZED_LISTBOX_PADDING +\n optionIndex * AUTOCOMPLETE_VIRTUALIZED_ITEM_HEIGHT;\n\n return (\n <li\n key={key}\n {...restOptionProps}\n className={clsx('MuiAutocomplete-option', restOptionProps.className)}\n style={{\n ...restOptionProps.style,\n height: AUTOCOMPLETE_VIRTUALIZED_ITEM_HEIGHT,\n left: 0,\n minHeight: AUTOCOMPLETE_VIRTUALIZED_ITEM_HEIGHT,\n position: 'absolute',\n right: 0,\n top: optionTop,\n }}\n >\n {renderAutocompleteOptionLabel(option)}\n </li>\n );\n })}\n </Box>\n </Box>\n );\n};\n\n/**\n * 현재 키 이벤트 기준 입력값 반환\n * @param event 키보드 이벤트\n * @param fallbackValue 제어 입력 fallback 값\n */\nconst getCurrentAutocompleteInputValue = (\n event: SelectorAutocompleteKeyDownEvent,\n fallbackValue?: string,\n) => {\n const eventTarget = event.target;\n\n if (eventTarget instanceof HTMLInputElement) {\n return eventTarget.value;\n }\n\n return fallbackValue ?? '';\n};\n\n/**\n * Autocomplete 옵션 라벨 문자열 변환\n * @param label 옵션 라벨\n */\nconst getAutocompleteOptionLabel = (label: OwpSelectorBaseOption['label']) => {\n return typeof label === 'string' || typeof label === 'number' ? `${label}` : '';\n};\n\n/**\n * Autocomplete 검색 문자열 정규화\n * @param text 검색 대상 문자열\n */\nconst normalizeAutocompleteSearchText = (text: string) =>\n text.normalize('NFD').replace(AUTOCOMPLETE_SEARCH_DIACRITICS_REGEX, '').toLowerCase();\n\n/**\n * Autocomplete 옵션 라벨 렌더링\n * @param option 선택 옵션\n */\nconst renderAutocompleteOptionLabel = (option: OwpSelectorBaseOption) => (\n <Box\n component=\"span\"\n sx={isSelectorAllOption(option) ? SELECTOR_ALL_OPTION_LABEL_SX : undefined}\n >\n {option.label}\n </Box>\n);\n\n/**\n * useAutocomplete 기반 단일 대용량 선택기\n * @param props 대용량 단일 선택기 props\n */\nconst OwpVirtualizedSingleSelectorAutocomplete = ({\n autocompleteInputValue,\n autocompleteSx,\n className,\n disableClientFilter,\n disabled,\n error,\n fullWidth,\n helperText,\n label,\n loading,\n loadingText,\n noOptionsText,\n onAutocompleteInputChange,\n options,\n placeholder,\n required,\n resolvedTextFieldVariant,\n selectSingleValue,\n selectedOption,\n showAllOption,\n singleAutocompleteInputSx,\n textFieldProps,\n}: OwpVirtualizedSingleSelectorAutocompleteProps) => {\n const isAutocompleteInputValueControlled = autocompleteInputValue !== undefined;\n const hasPendingAutocompleteInputEditRef = useRef(false);\n const skipNextAutocompleteBlurRestoreRef = useRef(false);\n const [uncontrolledAutocompleteInputValue, setUncontrolledAutocompleteInputValue] = useState(\n () => (selectedOption ? getAutocompleteOptionLabel(selectedOption.label) : ''),\n );\n const resolvedAutocompleteInputValue = isAutocompleteInputValueControlled\n ? autocompleteInputValue\n : uncontrolledAutocompleteInputValue;\n const normalizedOptionLabelMap = useMemo(\n () =>\n new Map(\n options.map((option) => [\n option.value,\n normalizeAutocompleteSearchText(getAutocompleteOptionLabel(option.label)),\n ]),\n ),\n [options],\n );\n const setAutocompleteInputDisplayValue = useCallback(\n (nextInputValue: string) => {\n if (!isAutocompleteInputValueControlled) {\n setUncontrolledAutocompleteInputValue(nextInputValue);\n }\n },\n [isAutocompleteInputValueControlled],\n );\n const clearAutocompleteInputDisplayValue = useCallback((reason: string) => {\n hasPendingAutocompleteInputEditRef.current = true;\n setAutocompleteInputDisplayValue('');\n onAutocompleteInputChange?.('', reason);\n }, [onAutocompleteInputChange, setAutocompleteInputDisplayValue]);\n const restoreAutocompleteInputDisplayValue = useCallback(() => {\n const restoredInputValue = selectedOption ? getAutocompleteOptionLabel(selectedOption.label) : '';\n\n hasPendingAutocompleteInputEditRef.current = false;\n setAutocompleteInputDisplayValue(restoredInputValue);\n onAutocompleteInputChange?.(restoredInputValue, 'reset');\n }, [onAutocompleteInputChange, selectedOption, setAutocompleteInputDisplayValue]);\n const filterOptions = useCallback(\n (\n nextOptions: OwpSelectorBaseOption[],\n state: { inputValue: string },\n ) => {\n if (disableClientFilter) {\n return nextOptions;\n }\n\n const inputValue = normalizeAutocompleteSearchText(state.inputValue);\n\n if (!inputValue) {\n return nextOptions;\n }\n\n const filteredOptions: OwpSelectorBaseOption[] = [];\n\n for (const option of nextOptions) {\n if (normalizedOptionLabelMap.get(option.value)?.includes(inputValue)) {\n filteredOptions.push(option);\n }\n }\n\n return filteredOptions;\n },\n [disableClientFilter, normalizedOptionLabelMap],\n );\n const {\n anchorEl,\n dirty,\n getClearProps,\n getInputLabelProps,\n getInputProps,\n getListboxProps,\n getOptionProps,\n getPopupIndicatorProps,\n getRootProps,\n groupedOptions,\n popupOpen,\n setAnchorEl,\n } = useAutocomplete<OwpSelectorBaseOption, false, false, false>({\n componentName: 'OwpSelectorAutocomplete',\n disabled,\n filterOptions,\n getOptionKey: (option) => option.value,\n getOptionLabel: (option) => getAutocompleteOptionLabel(option.label),\n inputValue: resolvedAutocompleteInputValue,\n isOptionEqualToValue: (option, selected) => option.value === selected.value,\n onChange: (_event, nextOption, reason) => {\n if (reason === 'clear' || reason === 'removeOption') {\n clearAutocompleteInputDisplayValue(reason);\n return;\n }\n\n hasPendingAutocompleteInputEditRef.current = false;\n\n if (!nextOption || (showAllOption && isSelectorAllOption(nextOption))) {\n setAutocompleteInputDisplayValue(\n nextOption ? getAutocompleteOptionLabel(nextOption.label) : '',\n );\n selectSingleValue('');\n return;\n }\n\n setAutocompleteInputDisplayValue(getAutocompleteOptionLabel(nextOption.label));\n selectSingleValue(nextOption.value);\n },\n onInputChange: (_event, nextInputValue, reason) => {\n if (reason === 'input') {\n hasPendingAutocompleteInputEditRef.current = true;\n }\n\n setAutocompleteInputDisplayValue(nextInputValue);\n onAutocompleteInputChange?.(nextInputValue, reason);\n },\n options,\n selectOnFocus: true,\n value: selectedOption,\n });\n const rootProps = getRootProps();\n const inputProps = getInputProps();\n const inputLabelProps = getInputLabelProps();\n const clearProps = getClearProps();\n const popupIndicatorProps = getPopupIndicatorProps();\n const shouldShowClearIndicator = dirty && !disabled && resolvedAutocompleteInputValue !== '';\n const htmlInputSlotProps = textFieldProps?.slotProps?.htmlInput as\n | (HTMLAttributes<HTMLInputElement> & { className?: string })\n | undefined;\n const {\n className: htmlInputClassName,\n onBlur: onHtmlInputBlur,\n onKeyDown: onHtmlInputKeyDown,\n ...restHtmlInputSlotProps\n } = htmlInputSlotProps ?? {};\n const inputSlotClassName = (\n textFieldProps?.slotProps?.input as { className?: string } | undefined\n )?.className;\n const setAutocompleteAnchorEl = useCallback(\n (node: HTMLElement | null) => {\n (setAnchorEl as unknown as (anchorElement: HTMLElement | null) => void)(node);\n },\n [setAnchorEl],\n );\n const handleClearClick = (event: ReactMouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n skipNextAutocompleteBlurRestoreRef.current = false;\n clearAutocompleteInputDisplayValue('clear');\n };\n const handleClearMouseDown = (event: ReactMouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n skipNextAutocompleteBlurRestoreRef.current = true;\n };\n const handleInputKeyDown = (event: ReactKeyboardEvent<HTMLInputElement>) => {\n onHtmlInputKeyDown?.(event);\n\n if (event.defaultPrevented || disabled) {\n return;\n }\n\n if (event.key === 'Escape' || event.key === 'Tab') {\n restoreAutocompleteInputDisplayValue();\n return;\n }\n\n if (event.key !== 'Backspace' && event.key !== 'Delete') {\n return;\n }\n\n if (!selectedOption) {\n return;\n }\n\n const currentInputValue = event.currentTarget.value;\n const selectedOptionLabel = getAutocompleteOptionLabel(selectedOption.label);\n const hasSelectedInputText =\n event.currentTarget.selectionStart !== event.currentTarget.selectionEnd;\n\n if (\n currentInputValue === '' ||\n currentInputValue === selectedOptionLabel ||\n hasSelectedInputText\n ) {\n event.preventDefault();\n (event as SelectorAutocompleteKeyDownEvent).defaultMuiPrevented = true;\n clearAutocompleteInputDisplayValue('input');\n }\n };\n const handleInputBlur = (event: ReactFocusEvent<HTMLInputElement>) => {\n inputProps.onBlur?.(event);\n onHtmlInputBlur?.(event);\n\n if (skipNextAutocompleteBlurRestoreRef.current) {\n skipNextAutocompleteBlurRestoreRef.current = false;\n return;\n }\n\n restoreAutocompleteInputDisplayValue();\n };\n\n useEffect(() => {\n if (isAutocompleteInputValueControlled) {\n return;\n }\n\n if (hasPendingAutocompleteInputEditRef.current) {\n return;\n }\n\n setUncontrolledAutocompleteInputValue(\n selectedOption ? getAutocompleteOptionLabel(selectedOption.label) : '',\n );\n }, [isAutocompleteInputValueControlled, selectedOption]);\n\n return (\n <Box\n {...rootProps}\n className={clsx(\n 'MuiAutocomplete-root min-w-128',\n fullWidth && 'MuiAutocomplete-fullWidth',\n popupOpen && 'Mui-expanded',\n shouldShowClearIndicator && 'MuiAutocomplete-hasClearIcon',\n 'MuiAutocomplete-hasPopupIcon',\n className,\n )}\n sx={\n [\n autocompleteSx,\n fullWidth ? { width: '100%' } : undefined,\n {\n '& .MuiAutocomplete-inputRoot': {\n paddingRight: `${\n AUTOCOMPLETE_POPUP_INDICATOR_WIDTH +\n (shouldShowClearIndicator ? AUTOCOMPLETE_CLEAR_INDICATOR_WIDTH : 0)\n }px !important`,\n position: 'relative',\n },\n '& .MuiAutocomplete-inputRoot .MuiAutocomplete-input': {\n minWidth: 30,\n width: 0,\n },\n '& .MuiAutocomplete-input': {\n flexGrow: 1,\n textOverflow: 'ellipsis',\n },\n '& .MuiAutocomplete-endAdornment': {\n alignItems: 'center',\n display: 'flex',\n position: 'absolute',\n right: resolvedTextFieldVariant === 'standard' ? 0 : 9,\n top: '50%',\n transform: 'translate(0, -50%)',\n },\n '& .MuiAutocomplete-clearIndicator': {\n marginRight: -0.25,\n padding: 0.5,\n visibility: 'visible',\n },\n '& .MuiAutocomplete-popupIndicator': {\n marginRight: -0.25,\n padding: 0.25,\n },\n '& .MuiAutocomplete-popupIndicatorOpen': {\n transform: 'rotate(180deg)',\n },\n },\n ] as SxProps<Theme>\n }\n >\n <TextField\n {...textFieldProps}\n disabled={disabled}\n error={error}\n fullWidth={fullWidth}\n helperText={helperText}\n label={label}\n placeholder={placeholder}\n required={required}\n slotProps={{\n ...textFieldProps?.slotProps,\n htmlInput: {\n ...inputProps,\n ...restHtmlInputSlotProps,\n className: clsx(\n 'MuiAutocomplete-input',\n inputProps.className,\n htmlInputClassName,\n ),\n onBlur: handleInputBlur,\n onKeyDown: handleInputKeyDown,\n },\n input: {\n ...textFieldProps?.slotProps?.input,\n ref: setAutocompleteAnchorEl,\n className: clsx('MuiAutocomplete-inputRoot', inputSlotClassName),\n sx: {\n ...(singleAutocompleteInputSx ?? {}),\n ...((textFieldProps?.slotProps?.input as { sx?: object } | undefined)?.sx ?? {}),\n },\n endAdornment: (\n <Box className=\"MuiAutocomplete-endAdornment\">\n {loading ? <CircularProgress color=\"inherit\" size={16} sx={{ mr: 0.5 }} /> : null}\n {shouldShowClearIndicator ? (\n <IconButton\n className=\"MuiAutocomplete-clearIndicator m-0\"\n onClick={handleClearClick}\n onMouseDown={handleClearMouseDown}\n size=\"small\"\n tabIndex={clearProps.tabIndex}\n type=\"button\"\n >\n <ClearIcon sx={{ fontSize: SELECTOR_CLEAR_ICON_FONT_SIZE }} />\n </IconButton>\n ) : null}\n <IconButton\n className={clsx(\n 'MuiAutocomplete-popupIndicator m-0',\n popupOpen && 'MuiAutocomplete-popupIndicatorOpen',\n )}\n onClick={(event) => popupIndicatorProps.onClick?.(event)}\n size=\"small\"\n disabled={disabled}\n tabIndex={popupIndicatorProps.tabIndex}\n type=\"button\"\n >\n <ArrowDropDownIcon />\n </IconButton>\n </Box>\n ),\n },\n inputLabel: {\n ...inputLabelProps,\n ...textFieldProps?.slotProps?.inputLabel,\n },\n }}\n variant={resolvedTextFieldVariant}\n />\n {anchorEl ? (\n <Popper\n anchorEl={anchorEl}\n open={popupOpen}\n placement=\"bottom-start\"\n style={{ width: anchorEl.clientWidth }}\n sx={{ zIndex: 99999 }}\n >\n <Paper\n sx={{\n '& .MuiAutocomplete-noOptions': {\n fontSize: 14,\n px: 1,\n py: 1.5,\n whiteSpace: 'nowrap',\n },\n }}\n >\n {loading && groupedOptions.length === 0 ? (\n <Box sx={{ fontSize: 14, px: 1, py: 1.5, whiteSpace: 'nowrap' }}>\n {loadingText}\n </Box>\n ) : null}\n {!loading && groupedOptions.length === 0 ? (\n <Box\n className=\"MuiAutocomplete-noOptions\"\n onMouseDown={(event) => {\n event.preventDefault();\n }}\n role=\"presentation\"\n >\n {noOptionsText}\n </Box>\n ) : null}\n {groupedOptions.length > 0 ? (\n <OwpVirtualizedAutocompleteOptionList\n getListboxProps={getListboxProps}\n getOptionProps={getOptionProps}\n options={groupedOptions}\n selectedOption={selectedOption}\n />\n ) : null}\n </Paper>\n </Popper>\n ) : null}\n </Box>\n );\n};\n\n/**\n * Autocomplete 기반 공통 선택기\n * @param props Autocomplete 렌더링 props\n */\nexport const OwpSelectorAutocomplete = ({ hookResult, props }: OwpSelectorAutocompleteProps) => {\n const { t } = useOwpTranslation();\n const {\n autocompleteInputValue,\n autocompleteVirtualizationThreshold,\n className,\n disableClientFilter,\n disabled,\n error,\n fullWidth,\n helperText,\n label,\n loading,\n loadingText,\n multiple,\n noOptionsText,\n onAutocompleteInputChange,\n placeholder,\n required,\n showAllOption = true,\n textFieldProps,\n valueTextAlign,\n } = props;\n const {\n allOption,\n clearSelection,\n isAllSelected,\n resolvedOptions,\n restoreAllSelection,\n selectAll,\n selectedOption,\n selectedOptions,\n selectMultipleValues,\n selectSingleValue,\n } = hookResult;\n const options = useMemo(\n () => (showAllOption ? [allOption, ...resolvedOptions] : resolvedOptions),\n [allOption, resolvedOptions, showAllOption],\n );\n const resolvedAutocompleteVirtualizationThreshold =\n autocompleteVirtualizationThreshold === false\n ? Number.POSITIVE_INFINITY\n : Math.max(1, autocompleteVirtualizationThreshold ?? AUTOCOMPLETE_VIRTUALIZATION_THRESHOLD);\n const shouldUseVirtualizedSingleAutocomplete =\n options.length >= resolvedAutocompleteVirtualizationThreshold;\n const filteredSelectedOptions = useMemo(\n () => selectedOptions.filter((option) => !isSelectorAllOption(option)),\n [selectedOptions],\n );\n const hiddenSelectedOptions = useMemo(\n () => (isAllSelected ? [] : filteredSelectedOptions.slice(MULTIPLE_VISIBLE_CHIP_COUNT)),\n [filteredSelectedOptions, isAllSelected],\n );\n const hiddenSelectedOptionCount = hiddenSelectedOptions.length;\n const [hiddenChipAnchorEl, setHiddenChipAnchorEl] = useState<HTMLElement | null>(null);\n const autocompleteRootRef = useRef<HTMLDivElement | null>(null);\n const resolvedNoOptionsText =\n noOptionsText ??\n t(disableClientFilter ? 'Message.검색 결과 없음' : 'Message.조회된 결과가 없습니다.');\n const resolvedLoadingText = loadingText ?? t('Common.로딩 중...');\n const shouldRestoreAllOnClearRef = useRef(\n multiple &&\n showAllOption &&\n ((props.value ?? props.defaultValue) == null || (props.value ?? props.defaultValue) === ''),\n );\n const autocompleteSlotProps = {\n clearIndicator: {\n className: 'm-0 p-0',\n size: 'small',\n tabIndex: -1,\n },\n paper: {\n sx: {\n '& .MuiAutocomplete-noOptions': {\n fontSize: 14,\n px: 1,\n py: 1.5,\n whiteSpace: 'nowrap',\n },\n },\n },\n popupIndicator: {\n className: 'm-0 p-0',\n size: 'small',\n tabIndex: -1,\n },\n } as const;\n const resolvedTextFieldVariant = textFieldProps?.variant ?? 'standard';\n const singleAutocompleteInputPaddingLeft =\n resolvedTextFieldVariant === 'standard'\n ? STANDARD_AUTOCOMPLETE_INPUT_PADDING_LEFT\n : resolvedTextFieldVariant === 'outlined'\n ? textFieldProps?.size === 'small'\n ? OUTLINED_SMALL_AUTOCOMPLETE_INPUT_PADDING_LEFT\n : OUTLINED_AUTOCOMPLETE_INPUT_PADDING_LEFT\n : undefined;\n const singleAutocompleteInputSx =\n singleAutocompleteInputPaddingLeft || valueTextAlign\n ? {\n '& .MuiAutocomplete-input': {\n ...(singleAutocompleteInputPaddingLeft\n ? { paddingLeft: singleAutocompleteInputPaddingLeft }\n : {}),\n ...(valueTextAlign ? { textAlign: valueTextAlign } : {}),\n },\n }\n : undefined;\n const autocompleteSx = {\n minWidth: AUTOCOMPLETE_MIN_WIDTH,\n '& .MuiAutocomplete-endAdornment': {\n '& .MuiAutocomplete-clearIndicator + .MuiAutocomplete-popupIndicator': {\n ml: 0,\n },\n '& .MuiIconButton-root': {\n m: 0,\n p: 0,\n },\n '& > :not(style) + :not(style)': {\n ml: 0,\n },\n alignItems: 'center',\n gap: 0,\n right: 0,\n },\n } as const;\n const multipleAutocompleteSx = {\n ...autocompleteSx,\n '& .MuiAutocomplete-inputRoot .MuiAutocomplete-input': {\n flexBasis: MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH,\n minWidth: MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH,\n },\n } as const;\n const isSingleAutocompleteInputValueControlled = autocompleteInputValue !== undefined;\n const singleAutocompleteHasPendingInputEditRef = useRef(false);\n const skipNextSingleAutocompleteBlurRestoreRef = useRef(false);\n const [singleAutocompleteInputValue, setSingleAutocompleteInputValue] = useState(\n () => (selectedOption ? getAutocompleteOptionLabel(selectedOption.label) : ''),\n );\n const resolvedSingleAutocompleteInputValue = isSingleAutocompleteInputValueControlled\n ? autocompleteInputValue\n : singleAutocompleteInputValue;\n const singleAutocompleteHtmlInputSlotProps = textFieldProps?.slotProps?.htmlInput as\n | (HTMLAttributes<HTMLInputElement> & { className?: string })\n | undefined;\n const {\n className: singleAutocompleteHtmlInputClassName,\n onBlur: onSingleAutocompleteHtmlInputBlur,\n onKeyDown: onSingleAutocompleteHtmlInputKeyDown,\n ...restSingleAutocompleteHtmlInputSlotProps\n } = singleAutocompleteHtmlInputSlotProps ?? {};\n\n const setSingleAutocompleteInputDisplayValue = useCallback(\n (nextInputValue: string) => {\n if (!isSingleAutocompleteInputValueControlled) {\n setSingleAutocompleteInputValue(nextInputValue);\n }\n },\n [isSingleAutocompleteInputValueControlled],\n );\n\n const clearSingleAutocompleteInputDisplayValue = useCallback(\n (reason: string, shouldNotifyInputChange = true) => {\n singleAutocompleteHasPendingInputEditRef.current = true;\n setSingleAutocompleteInputDisplayValue('');\n\n if (shouldNotifyInputChange) {\n onAutocompleteInputChange?.('', reason);\n }\n },\n [onAutocompleteInputChange, setSingleAutocompleteInputDisplayValue],\n );\n\n const restoreSingleAutocompleteInputDisplayValue = useCallback(() => {\n const restoredInputValue = selectedOption ? getAutocompleteOptionLabel(selectedOption.label) : '';\n\n singleAutocompleteHasPendingInputEditRef.current = false;\n setSingleAutocompleteInputDisplayValue(restoredInputValue);\n onAutocompleteInputChange?.(restoredInputValue, 'reset');\n }, [onAutocompleteInputChange, selectedOption, setSingleAutocompleteInputDisplayValue]);\n\n useEffect(() => {\n if (!hiddenSelectedOptionCount) {\n setHiddenChipAnchorEl(null);\n }\n }, [hiddenSelectedOptionCount]);\n\n useEffect(() => {\n if (multiple || isSingleAutocompleteInputValueControlled) {\n return;\n }\n\n if (singleAutocompleteHasPendingInputEditRef.current) {\n return;\n }\n\n setSingleAutocompleteInputValue(\n selectedOption ? getAutocompleteOptionLabel(selectedOption.label) : '',\n );\n }, [isSingleAutocompleteInputValueControlled, multiple, selectedOption]);\n\n useEffect(() => {\n if (!shouldRestoreAllOnClearRef.current) {\n return;\n }\n\n const formElement = autocompleteRootRef.current?.closest('form');\n\n if (!formElement) {\n return;\n }\n\n const handleFormReset = () => {\n window.setTimeout(() => {\n restoreAllSelection();\n }, 0);\n };\n\n formElement.addEventListener('reset', handleFormReset);\n\n return () => {\n formElement.removeEventListener('reset', handleFormReset);\n };\n }, [restoreAllSelection]);\n\n const handleHiddenChipPopperClose = () => {\n setHiddenChipAnchorEl(null);\n };\n\n const handleHiddenChipSummaryMouseDown = (event: ReactMouseEvent<HTMLElement>) => {\n event.preventDefault();\n };\n\n const handleHiddenChipSummaryClick = (event: ReactMouseEvent<HTMLElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n setHiddenChipAnchorEl((previousAnchorElement) =>\n previousAnchorElement === event.currentTarget ? null : event.currentTarget,\n );\n };\n\n const handleHiddenChipDelete = (optionValue: string) => {\n selectMultipleValues(\n filteredSelectedOptions\n .filter((option) => option.value !== optionValue)\n .map((option) => option.value),\n );\n };\n\n const handleMultipleRootKeyDown = (event: SelectorAutocompleteKeyDownEvent) => {\n const currentInputValue = getCurrentAutocompleteInputValue(event, autocompleteInputValue);\n\n if (\n (isAllSelected || hiddenSelectedOptionCount > 0) &&\n currentInputValue === '' &&\n (event.key === 'Backspace' || event.key === 'Delete')\n ) {\n event.defaultMuiPrevented = true;\n event.preventDefault();\n event.stopPropagation();\n }\n\n textFieldProps?.onKeyDown?.(\n event as Parameters<NonNullable<typeof textFieldProps.onKeyDown>>[0],\n );\n };\n\n const handleSingleAutocompleteClearMouseDown = (event: ReactMouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n skipNextSingleAutocompleteBlurRestoreRef.current = true;\n };\n\n const handleSingleAutocompleteClearClick = (event: ReactMouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n skipNextSingleAutocompleteBlurRestoreRef.current = false;\n clearSingleAutocompleteInputDisplayValue('clear');\n };\n\n const handleSingleAutocompleteInputKeyDown = (\n event: ReactKeyboardEvent<HTMLInputElement>,\n ) => {\n onSingleAutocompleteHtmlInputKeyDown?.(event);\n\n if (event.defaultPrevented || disabled) {\n return;\n }\n\n if (event.key === 'Escape' || event.key === 'Tab') {\n restoreSingleAutocompleteInputDisplayValue();\n return;\n }\n\n if (event.key !== 'Backspace' && event.key !== 'Delete') {\n return;\n }\n\n if (!selectedOption) {\n return;\n }\n\n const currentInputValue = event.currentTarget.value;\n const selectedOptionLabel = getAutocompleteOptionLabel(selectedOption.label);\n const hasSelectedInputText =\n event.currentTarget.selectionStart !== event.currentTarget.selectionEnd;\n\n if (\n currentInputValue === '' ||\n currentInputValue === selectedOptionLabel ||\n hasSelectedInputText\n ) {\n event.preventDefault();\n (event as SelectorAutocompleteKeyDownEvent).defaultMuiPrevented = true;\n clearSingleAutocompleteInputDisplayValue('input');\n }\n };\n\n const handleSingleAutocompleteInputBlur = (\n event: ReactFocusEvent<HTMLInputElement>,\n muiInputBlur?: HTMLAttributes<HTMLInputElement>['onBlur'],\n ) => {\n if (skipNextSingleAutocompleteBlurRestoreRef.current) {\n skipNextSingleAutocompleteBlurRestoreRef.current = false;\n return;\n }\n\n muiInputBlur?.(event);\n onSingleAutocompleteHtmlInputBlur?.(event);\n restoreSingleAutocompleteInputDisplayValue();\n };\n\n const singleAutocompleteSlotProps = {\n ...autocompleteSlotProps,\n clearIndicator: {\n ...autocompleteSlotProps.clearIndicator,\n onClick: handleSingleAutocompleteClearClick,\n onMouseDown: handleSingleAutocompleteClearMouseDown,\n },\n } as const;\n\n if (!multiple && shouldUseVirtualizedSingleAutocomplete) {\n return (\n <OwpVirtualizedSingleSelectorAutocomplete\n autocompleteInputValue={autocompleteInputValue}\n autocompleteSx={autocompleteSx}\n className={className}\n disableClientFilter={disableClientFilter}\n disabled={disabled}\n error={error}\n fullWidth={fullWidth}\n helperText={helperText}\n label={label}\n loading={loading}\n loadingText={resolvedLoadingText}\n noOptionsText={resolvedNoOptionsText}\n onAutocompleteInputChange={onAutocompleteInputChange}\n options={options}\n placeholder={placeholder}\n required={required}\n resolvedTextFieldVariant={resolvedTextFieldVariant}\n selectSingleValue={selectSingleValue}\n selectedOption={selectedOption}\n showAllOption={showAllOption}\n singleAutocompleteInputSx={singleAutocompleteInputSx}\n textFieldProps={textFieldProps}\n />\n );\n }\n\n if (multiple) {\n return (\n <>\n <Autocomplete\n ref={autocompleteRootRef as MutableRefObject<HTMLDivElement | null>}\n className={clsx('min-w-128', className)}\n disableCloseOnSelect\n disabled={disabled}\n filterOptions={disableClientFilter ? (nextOptions) => nextOptions : undefined}\n fullWidth={fullWidth}\n inputValue={autocompleteInputValue}\n loading={loading}\n multiple\n options={options}\n clearText=\"\"\n closeText=\"\"\n clearIcon={<ClearIcon sx={{ fontSize: SELECTOR_CLEAR_ICON_FONT_SIZE }} />}\n openText=\"\"\n popupIcon={<ArrowDropDownIcon />}\n sx={multipleAutocompleteSx}\n value={selectedOptions}\n getOptionLabel={(option) => getAutocompleteOptionLabel(option.label)}\n getOptionKey={(option) => option.value}\n isOptionEqualToValue={(option, selected) => option.value === selected.value}\n loadingText={resolvedLoadingText}\n noOptionsText={resolvedNoOptionsText}\n onChange={(\n _event: SyntheticEvent,\n nextOptions: OwpSelectorBaseOption[],\n reason: string,\n details,\n ) => {\n const currentInputValue =\n _event.type === 'keydown'\n ? getCurrentAutocompleteInputValue(\n _event as SelectorAutocompleteKeyDownEvent,\n autocompleteInputValue,\n )\n : (autocompleteInputValue ?? '');\n\n if (\n reason === 'removeOption' &&\n _event.type === 'keydown' &&\n currentInputValue === '' &&\n (isAllSelected || hiddenSelectedOptionCount > 0)\n ) {\n _event.preventDefault();\n _event.stopPropagation();\n return;\n }\n\n if (reason === 'clear') {\n if (shouldRestoreAllOnClearRef.current) {\n selectAll();\n return;\n }\n\n clearSelection();\n return;\n }\n\n if (showAllOption && details?.option && isSelectorAllOption(details.option)) {\n if (isAllSelected) {\n clearSelection();\n return;\n }\n\n selectAll();\n return;\n }\n\n selectMultipleValues(\n nextOptions\n .filter((option) => !isSelectorAllOption(option))\n .map((option) => option.value),\n );\n }}\n onInputChange={(_event, nextInputValue, reason) => {\n onAutocompleteInputChange?.(nextInputValue, reason);\n }}\n onKeyDown={handleMultipleRootKeyDown}\n slotProps={autocompleteSlotProps}\n renderInput={(params) => (\n <TextField\n {...params}\n {...textFieldProps}\n disabled={disabled}\n error={error}\n fullWidth={fullWidth}\n helperText={helperText}\n label={label}\n placeholder={placeholder ?? t('Common.검색')}\n required={required}\n slotProps={{\n ...textFieldProps?.slotProps,\n input: {\n ...params.InputProps,\n ...textFieldProps?.slotProps?.input,\n endAdornment: (\n <>\n {loading ? (\n <CircularProgress color=\"inherit\" size={16} sx={{ mr: 0.5 }} />\n ) : null}\n {params.InputProps.endAdornment}\n </>\n ),\n },\n }}\n variant={resolvedTextFieldVariant}\n />\n )}\n renderOption={(optionProps, option, state) => {\n const { key, ...restOptionProps } = optionProps;\n\n return (\n <li key={key} {...restOptionProps}>\n <Checkbox checked={state.selected} className=\"!mr-8 !p-0\" size=\"small\" />\n {renderAutocompleteOptionLabel(option)}\n </li>\n );\n }}\n renderValue={(nextSelectedOptions, getItemProps) => {\n if (showAllOption && isAllSelected) {\n return [\n <Box\n component=\"span\"\n key={allOption.value}\n sx={SELECTOR_ALL_VALUE_LABEL_SX}\n >\n {allOption.label}\n </Box>,\n ];\n }\n\n const visibleSelectedOptions = nextSelectedOptions\n .filter((option) => !isSelectorAllOption(option))\n .slice(0, MULTIPLE_VISIBLE_CHIP_COUNT);\n\n return [\n ...visibleSelectedOptions.map((option, index) => {\n const { key, ...itemProps } = getItemProps({ index });\n\n return (\n <Chip\n {...itemProps}\n key={key}\n label={option.label}\n size=\"small\"\n sx={{ borderRadius: 1, mr: 0.5 }}\n />\n );\n }),\n ...(hiddenSelectedOptionCount > 0\n ? [\n <Chip\n key=\"owp-selector-hidden-chip-summary\"\n clickable\n label={`+${hiddenSelectedOptionCount}`}\n onClick={handleHiddenChipSummaryClick}\n onMouseDown={handleHiddenChipSummaryMouseDown}\n size=\"small\"\n sx={(theme) => ({\n backgroundColor: alpha(theme.palette.primary.main, 0.14),\n border: `1px solid ${alpha(theme.palette.primary.main, 0.22)}`,\n borderRadius: 1,\n color: theme.palette.primary.dark,\n fontWeight: 600,\n mr: 0.5,\n '&:hover': {\n backgroundColor: alpha(theme.palette.primary.main, 0.2),\n },\n })}\n />,\n ]\n : []),\n ];\n }}\n />\n <Popper\n anchorEl={hiddenChipAnchorEl}\n open={Boolean(hiddenChipAnchorEl) && hiddenSelectedOptionCount > 0}\n placement=\"bottom-start\"\n sx={{ zIndex: (theme) => theme.zIndex.modal }}\n >\n <ClickAwayListener onClickAway={handleHiddenChipPopperClose}>\n <Paper\n className=\"mt-4\"\n sx={{\n border: (theme) => `1px solid ${alpha(theme.palette.common.black, 0.12)}`,\n display: 'flex',\n flexWrap: 'wrap',\n gap: 0.75,\n maxWidth: 280,\n p: 1,\n }}\n >\n {hiddenSelectedOptions.map((option) => (\n <Chip\n key={option.value}\n label={option.label}\n onDelete={() => handleHiddenChipDelete(option.value)}\n size=\"small\"\n sx={{ borderRadius: 1 }}\n />\n ))}\n </Paper>\n </ClickAwayListener>\n </Popper>\n </>\n );\n }\n\n return (\n <Autocomplete\n className={clsx('min-w-128', className)}\n disabled={disabled}\n filterOptions={disableClientFilter ? (nextOptions) => nextOptions : undefined}\n fullWidth={fullWidth}\n inputValue={resolvedSingleAutocompleteInputValue}\n loading={loading}\n options={options}\n clearText=\"\"\n closeText=\"\"\n clearIcon={<ClearIcon sx={{ fontSize: SELECTOR_CLEAR_ICON_FONT_SIZE }} />}\n openText=\"\"\n popupIcon={<ArrowDropDownIcon />}\n sx={autocompleteSx}\n value={selectedOption}\n getOptionLabel={(option) => getAutocompleteOptionLabel(option.label)}\n getOptionKey={(option) => option.value}\n isOptionEqualToValue={(option, selected) => option.value === selected.value}\n loadingText={resolvedLoadingText}\n noOptionsText={resolvedNoOptionsText}\n onChange={(_event: SyntheticEvent, nextOption, reason) => {\n if (reason === 'clear' || reason === 'removeOption') {\n clearSingleAutocompleteInputDisplayValue(reason, false);\n return;\n }\n\n singleAutocompleteHasPendingInputEditRef.current = false;\n\n if (!nextOption || (showAllOption && isSelectorAllOption(nextOption))) {\n setSingleAutocompleteInputDisplayValue(\n nextOption ? getAutocompleteOptionLabel(nextOption.label) : '',\n );\n selectSingleValue('');\n return;\n }\n\n setSingleAutocompleteInputDisplayValue(getAutocompleteOptionLabel(nextOption.label));\n selectSingleValue(nextOption.value);\n }}\n onInputChange={(_event, nextInputValue, reason) => {\n if (reason === 'input' || reason === 'clear') {\n singleAutocompleteHasPendingInputEditRef.current = true;\n }\n\n setSingleAutocompleteInputDisplayValue(nextInputValue);\n onAutocompleteInputChange?.(nextInputValue, reason);\n }}\n slotProps={singleAutocompleteSlotProps}\n renderInput={(params) => (\n <TextField\n {...params}\n {...textFieldProps}\n disabled={disabled}\n error={error}\n fullWidth={fullWidth}\n helperText={helperText}\n label={label}\n placeholder={placeholder}\n required={required}\n slotProps={{\n ...textFieldProps?.slotProps,\n htmlInput: {\n ...params.inputProps,\n ...restSingleAutocompleteHtmlInputSlotProps,\n className: clsx(\n params.inputProps.className,\n singleAutocompleteHtmlInputClassName,\n ),\n onBlur: (event: ReactFocusEvent<HTMLInputElement>) => {\n handleSingleAutocompleteInputBlur(event, params.inputProps.onBlur);\n },\n onKeyDown: handleSingleAutocompleteInputKeyDown,\n },\n input: {\n ...params.InputProps,\n ...textFieldProps?.slotProps?.input,\n sx: {\n ...(singleAutocompleteInputSx ?? {}),\n ...((params.InputProps as { sx?: object }).sx ?? {}),\n ...((textFieldProps?.slotProps?.input as { sx?: object } | undefined)?.sx ?? {}),\n },\n endAdornment: (\n <>\n {loading ? (\n <CircularProgress color=\"inherit\" size={16} sx={{ mr: 0.5 }} />\n ) : null}\n {params.InputProps.endAdornment}\n </>\n ),\n },\n }}\n variant={resolvedTextFieldVariant}\n />\n )}\n selectOnFocus\n renderOption={(optionProps, option) => {\n const { key, ...restOptionProps } = optionProps;\n\n return (\n <li key={key} {...restOptionProps}>\n {renderAutocompleteOptionLabel(option)}\n </li>\n );\n }}\n />\n );\n};\n"],"names":["MULTIPLE_VISIBLE_CHIP_COUNT","AUTOCOMPLETE_MIN_WIDTH","MULTIPLE_AUTOCOMPLETE_INPUT_MIN_WIDTH","SELECTOR_CLEAR_ICON_FONT_SIZE","STANDARD_AUTOCOMPLETE_INPUT_PADDING_LEFT","OUTLINED_AUTOCOMPLETE_INPUT_PADDING_LEFT","OUTLINED_SMALL_AUTOCOMPLETE_INPUT_PADDING_LEFT","AUTOCOMPLETE_VIRTUALIZATION_THRESHOLD","AUTOCOMPLETE_VIRTUALIZED_ITEM_HEIGHT","AUTOCOMPLETE_VIRTUALIZED_LISTBOX_PADDING","AUTOCOMPLETE_VIRTUALIZED_VISIBLE_ITEM_COUNT","AUTOCOMPLETE_VIRTUALIZED_OVERSCAN_ITEM_COUNT","AUTOCOMPLETE_POPUP_INDICATOR_WIDTH","AUTOCOMPLETE_CLEAR_INDICATOR_WIDTH","AUTOCOMPLETE_SEARCH_DIACRITICS_REGEX","assignAutocompleteListboxRef","__name","forwardedRef","node","getVirtualizedOptionIndexes","optionCount","visibleStartIndex","visibleEndIndex","selectedOptionIndex","indexSet","addIndex","index","leftIndex","rightIndex","getVirtualizedAutocompleteListboxSx","height","theme","alpha","OwpVirtualizedAutocompleteOptionList","getListboxProps","getOptionProps","options","selectedOption","listboxProps","forwardedListboxRef","style","restListboxProps","listboxRef","useRef","startIndex","setStartIndex","useState","useMemo","renderedOptionIndexes","listboxHeight","handleRef","useCallback","handleScroll","event","nextStartIndex","previousStartIndex","useEffect","jsx","Box","optionIndex","option","optionProps","key","restOptionProps","optionTop","clsx","getCurrentAutocompleteInputValue","fallbackValue","eventTarget","getAutocompleteOptionLabel","label","normalizeAutocompleteSearchText","text","renderAutocompleteOptionLabel","isSelectorAllOption","SELECTOR_ALL_OPTION_LABEL_SX","OwpVirtualizedSingleSelectorAutocomplete","autocompleteInputValue","autocompleteSx","className","disableClientFilter","disabled","error","fullWidth","helperText","loading","loadingText","noOptionsText","onAutocompleteInputChange","placeholder","required","resolvedTextFieldVariant","selectSingleValue","showAllOption","singleAutocompleteInputSx","textFieldProps","isAutocompleteInputValueControlled","hasPendingAutocompleteInputEditRef","skipNextAutocompleteBlurRestoreRef","uncontrolledAutocompleteInputValue","setUncontrolledAutocompleteInputValue","resolvedAutocompleteInputValue","normalizedOptionLabelMap","setAutocompleteInputDisplayValue","nextInputValue","clearAutocompleteInputDisplayValue","reason","restoreAutocompleteInputDisplayValue","restoredInputValue","filterOptions","nextOptions","state","inputValue","filteredOptions","_a","anchorEl","dirty","getClearProps","getInputLabelProps","getInputProps","getPopupIndicatorProps","getRootProps","groupedOptions","popupOpen","setAnchorEl","useAutocomplete","selected","_event","nextOption","rootProps","inputProps","inputLabelProps","clearProps","popupIndicatorProps","shouldShowClearIndicator","htmlInputSlotProps","htmlInputClassName","onHtmlInputBlur","onHtmlInputKeyDown","restHtmlInputSlotProps","inputSlotClassName","_c","_b","setAutocompleteAnchorEl","handleClearClick","handleClearMouseDown","handleInputKeyDown","currentInputValue","selectedOptionLabel","hasSelectedInputText","handleInputBlur","jsxs","TextField","_d","_f","_e","CircularProgress","IconButton","ClearIcon","ArrowDropDownIcon","_g","Popper","Paper","OwpSelectorAutocomplete","hookResult","props","t","useOwpTranslation","autocompleteVirtualizationThreshold","multiple","valueTextAlign","allOption","clearSelection","isAllSelected","resolvedOptions","restoreAllSelection","selectAll","selectedOptions","selectMultipleValues","resolvedAutocompleteVirtualizationThreshold","shouldUseVirtualizedSingleAutocomplete","filteredSelectedOptions","hiddenSelectedOptions","hiddenSelectedOptionCount","hiddenChipAnchorEl","setHiddenChipAnchorEl","autocompleteRootRef","resolvedNoOptionsText","resolvedLoadingText","shouldRestoreAllOnClearRef","autocompleteSlotProps","singleAutocompleteInputPaddingLeft","multipleAutocompleteSx","isSingleAutocompleteInputValueControlled","singleAutocompleteHasPendingInputEditRef","skipNextSingleAutocompleteBlurRestoreRef","singleAutocompleteInputValue","setSingleAutocompleteInputValue","resolvedSingleAutocompleteInputValue","singleAutocompleteHtmlInputSlotProps","singleAutocompleteHtmlInputClassName","onSingleAutocompleteHtmlInputBlur","onSingleAutocompleteHtmlInputKeyDown","restSingleAutocompleteHtmlInputSlotProps","setSingleAutocompleteInputDisplayValue","clearSingleAutocompleteInputDisplayValue","shouldNotifyInputChange","restoreSingleAutocompleteInputDisplayValue","formElement","handleFormReset","handleHiddenChipPopperClose","handleHiddenChipSummaryMouseDown","handleHiddenChipSummaryClick","previousAnchorElement","handleHiddenChipDelete","optionValue","handleMultipleRootKeyDown","handleSingleAutocompleteClearMouseDown","handleSingleAutocompleteClearClick","handleSingleAutocompleteInputKeyDown","handleSingleAutocompleteInputBlur","muiInputBlur","singleAutocompleteSlotProps","Fragment","Autocomplete","details","params","Checkbox","nextSelectedOptions","getItemProps","SELECTOR_ALL_VALUE_LABEL_SX","itemProps","createElement","Chip","ClickAwayListener"],"mappings":"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"}