@consta/uikit 4.14.2 → 4.16.0
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.
- package/__internal__/src/components/AutoCompleteCanary/useAutoComplete.js +1 -1
- package/__internal__/src/components/AutoCompleteCanary/useAutoComplete.js.map +1 -1
- package/__internal__/src/components/Combobox/Combobox.js +1 -1
- package/__internal__/src/components/Combobox/Combobox.js.map +1 -1
- package/__internal__/src/components/Combobox/helpers.d.ts +18 -7
- package/__internal__/src/components/Combobox/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.d.ts +3 -2
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.d.ts +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateRange/DatePickerFieldTypeDateRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.d.ts +3 -2
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.d.ts +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/DatePickerFieldTypeDateTimeRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTimeRange/DatePickerFieldTypeDateTimeRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.d.ts +3 -2
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.d.ts +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/DatePickerFieldTypeMonthRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonthRange/DatePickerFieldTypeMonthRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.d.ts +3 -2
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.d.ts +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.d.ts +3 -2
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.d.ts +2 -0
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYearRange/DatePickerFieldTypeYearRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/types.d.ts +1 -0
- package/__internal__/src/components/DatePicker/types.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeDate/DateTimeTypeDate.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeDate/DateTimeTypeDate.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeDateTime/DateTimeTypeDateTime.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeDateTime/DateTimeTypeDateTime.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeMonth/DateTimeTypeMonth.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeMonth/DateTimeTypeMonth.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeTime/DateTimeTypeTime.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeTime/DateTimeTypeTime.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeTime/helpers.d.ts +2 -1
- package/__internal__/src/components/DateTime/DateTimeTypeTime/helpers.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeTime/helpers.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeYear/DateTimeTypeYear.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeTypeYear/DateTimeTypeYear.js.map +1 -1
- package/__internal__/src/components/DateTime/helpers/getDaysOfMonth.d.ts +2 -1
- package/__internal__/src/components/DateTime/helpers/getDaysOfMonth.js +1 -1
- package/__internal__/src/components/DateTime/helpers/getDaysOfMonth.js.map +1 -1
- package/__internal__/src/components/DateTime/helpers/getMonthsOfYear.d.ts +2 -1
- package/__internal__/src/components/DateTime/helpers/getMonthsOfYear.js +1 -1
- package/__internal__/src/components/DateTime/helpers/getMonthsOfYear.js.map +1 -1
- package/__internal__/src/components/DateTime/helpers/getYearsOfDecade.d.ts +2 -1
- package/__internal__/src/components/DateTime/helpers/getYearsOfDecade.js +1 -1
- package/__internal__/src/components/DateTime/helpers/getYearsOfDecade.js.map +1 -1
- package/__internal__/src/components/DateTime/helpers/types.d.ts +2 -0
- package/__internal__/src/components/DateTime/helpers/types.js.map +1 -1
- package/__internal__/src/components/EventInterceptor/propsHandlers/useTextFieldEventsHandler.d.ts +3 -2
- package/__internal__/src/components/FieldLabel/FieldLabel.css +1 -1
- package/__internal__/src/components/FieldLabel/FieldLabel.d.ts +2 -0
- package/__internal__/src/components/FieldLabel/FieldLabel.js +1 -1
- package/__internal__/src/components/FieldLabel/FieldLabel.js.map +1 -1
- package/__internal__/src/components/Select/helpers.d.ts +5 -2
- package/__internal__/src/components/Select/helpers.js.map +1 -1
- package/__internal__/src/components/SelectComponents/Select.css +1 -1
- package/__internal__/src/components/SelectComponents/SelectContainer/SelectContainer.d.ts +3 -1
- package/__internal__/src/components/SelectComponents/SelectContainer/SelectContainer.js +1 -1
- package/__internal__/src/components/SelectComponents/SelectContainer/SelectContainer.js.map +1 -1
- package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.d.ts +7 -2
- package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js +1 -1
- package/__internal__/src/components/SelectComponents/SelectDropdown/SelectDropdown.js.map +1 -1
- package/__internal__/src/components/SelectComponents/SelectItem/SelectItem.d.ts +2 -0
- package/__internal__/src/components/SelectComponents/SelectItem/SelectItem.js +1 -1
- package/__internal__/src/components/SelectComponents/SelectItem/SelectItem.js.map +1 -1
- package/__internal__/src/components/SelectComponents/SelectItemAll/SelectItemAll.css +1 -0
- package/__internal__/src/components/SelectComponents/SelectItemAll/SelectSelectAll.d.ts +13 -0
- package/__internal__/src/components/SelectComponents/SelectItemAll/SelectSelectAll.js +2 -0
- package/__internal__/src/components/SelectComponents/SelectItemAll/SelectSelectAll.js.map +1 -0
- package/__internal__/src/components/SelectComponents/SelectValueTag/SelectValueTag.css +1 -1
- package/__internal__/src/components/SelectComponents/types.d.ts +1 -1
- package/__internal__/src/components/SelectComponents/types.js +1 -1
- package/__internal__/src/components/SelectComponents/types.js.map +1 -1
- package/__internal__/src/components/Slider/Slider.js +1 -1
- package/__internal__/src/components/Slider/Slider.js.map +1 -1
- package/__internal__/src/components/Slider/helper.d.ts +1 -0
- package/__internal__/src/components/Slider/helper.js.map +1 -1
- package/__internal__/src/components/TagBase/TagBase.d.ts +1 -1
- package/__internal__/src/components/TextField/TextField.css +1 -1
- package/__internal__/src/components/TextField/TextField.js +1 -1
- package/__internal__/src/components/TextField/TextField.js.map +1 -1
- package/__internal__/src/components/TextField/types.d.ts +1 -0
- package/__internal__/src/components/TextField/types.js.map +1 -1
- package/__internal__/src/components/User/User.js +1 -1
- package/__internal__/src/components/User/User.js.map +1 -1
- package/__internal__/src/components/UserSelect/helpers.d.ts +5 -2
- package/__internal__/src/components/UserSelect/helpers.js.map +1 -1
- package/__internal__/src/hooks/useSelect/useSelect.d.ts +5 -2
- package/__internal__/src/hooks/useSelect/useSelect.js +1 -1
- package/__internal__/src/hooks/useSelect/useSelect.js.map +1 -1
- package/__internal__/src/utils/date/index.d.ts +1 -0
- package/__internal__/src/utils/date/index.js +1 -1
- package/__internal__/src/utils/date/index.js.map +1 -1
- package/__internal__/src/utils/date/isDisableDate.d.ts +8 -0
- package/__internal__/src/utils/date/isDisableDate.js +2 -0
- package/__internal__/src/utils/date/isDisableDate.js.map +1 -0
- package/__internal__/src/utils/date/isInMinMaxDade.d.ts +1 -1
- package/__internal__/src/utils/date/isInMinMaxDade.js +1 -1
- package/__internal__/src/utils/date/isInMinMaxDade.js.map +1 -1
- package/__internal__/src/utils/getGroups.d.ts +12 -0
- package/__internal__/src/utils/getGroups.js +1 -1
- package/__internal__/src/utils/getGroups.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelect.js","names":["React","useEffect","useMemo","useRef","useState","getGroups","useClickOutside","useDebounce","useKeys","usePrevious","scrollToIndex","useHoistedState","isMultipleParams","params","multiple","isNotMultipleParams","actions","setOpen","setSearch","highlightIndex","initialState","searchValue","resolvedSearchValue","isOpen","highlightedIndex","scrollToHighlighted","isOptionForCreate","Object","prototype","hasOwnProperty","call","useSelect","items","dropdownRef","controlRef","disabled","getItemLabel","getItemKey","searchFunction","getItemGroupKey","groups","getGroupKey","sortGroups","getItemDisabled","onFocus","onBlur","searchValueProp","withoutClearSearch","inputRef","isFocused","setIsFocused","value","Array","isArray","setState","searchFunctionDefault","item","toLocaleLowerCase","indexOf","fiteredOptions","filter","matchWithValueSearch","find","option","toString","toLowerCase","onCreate","label","__optionForCreate","filteredOptions","optionForCreate","visibleItems","resultGroups","length","notFound","flag","group","hasItems","getSelectedOptionIndex","index","useCallback","newIsOpen","old","setResolvedSearch","prevIsOpen","useLayoutEffect","currentHighlightIndex","indexForHighlight","Math","min","max","removeValue","e","valueItem","stopPropagation","newValue","onChange","some","clearValue","results","ArrowUp","_","preventDefault","ArrowDown","getKeyProps","PageUp","PageDown","Home","End","Enter","getItem","couter","Escape","Tab","Backspace","isActive","ignoreClicksInsideRefs","handler","getOptionProps","onClick","onMouseEnter","active","hovered","key","handleInputFocus","handleInputBlur","current","focus","handleToggleDropdown","handleInputClick","handleInputChange","target","getHandleRemoveValue"],"sources":["../../../../../src/hooks/useSelect/useSelect.ts"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { getGroups } from '../../utils/getGroups';\nimport { useClickOutside } from '../useClickOutside/useClickOutside';\nimport { useDebounce } from '../useDebounce/useDebounce';\nimport { KeyHandler, useKeys } from '../useKeys/useKeys';\nimport { usePrevious } from '../usePrevious/usePrevious';\nimport { scrollToIndex, useHoistedState } from './helpers';\n\ntype IndexForHighlight = number | ((oldIndex: number) => number);\n\ntype Group<ITEM, GROUP> = {\n items: ITEM[];\n key: string | number;\n group?: GROUP;\n};\ntype GetItemGroupKey<ITEM> = (item: ITEM) => string | number | undefined;\ntype GetGroupKey<GROUP> = (item: GROUP) => string | number | undefined;\ntype SortGroups<ITEM, GROUP> = (\n a: Group<ITEM, GROUP>,\n b: Group<ITEM, GROUP>,\n) => number;\n\ntype OnChangeProp<ITEM, MULTIPLE extends boolean> = (props: {\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null;\n e: React.SyntheticEvent;\n}) => void;\n\ntype ValueProp<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type OptionForCreate = {\n label: string;\n __optionForCreate: boolean;\n};\n\nexport type SelectProps<ITEM, GROUP, MULTIPLE extends boolean> = {\n getItemGroupKey?: GetItemGroupKey<ITEM> | undefined;\n getGroupKey?: GetGroupKey<GROUP>;\n sortGroups?: SortGroups<ITEM, GROUP>;\n groups?: GROUP[];\n items: ITEM[];\n dropdownRef: React.MutableRefObject<HTMLDivElement | null>;\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n disabled?: boolean;\n getItemLabel: (item: ITEM) => string;\n getItemKey: (item: ITEM) => string | number;\n getItemDisabled?: (item: ITEM) => boolean | undefined;\n searchFunction?: (item: ITEM, searchValue: string) => boolean;\n onCreate?: (props: { e: React.SyntheticEvent; label: string }) => void;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n multiple: boolean;\n searchValue?: string;\n withoutClearSearch?: boolean;\n onChange: OnChangeProp<ITEM, MULTIPLE>;\n value: ValueProp<ITEM, MULTIPLE>;\n};\n\nexport type OptionProps<ITEM> = {\n index: number;\n item: ITEM | OptionForCreate;\n};\n\nexport type GetOptionPropsResult = {\n onClick: (e: React.SyntheticEvent) => void;\n onMouseEnter: (e: React.SyntheticEvent) => void;\n active: boolean;\n hovered: boolean;\n key: string | number;\n};\n\nconst isMultipleParams = <ITEM, GROUP>(\n params: SelectProps<ITEM, GROUP, boolean>,\n): params is SelectProps<ITEM, GROUP, true> => {\n return params.multiple;\n};\n\nconst isNotMultipleParams = <ITEM, GROUP>(\n params: SelectProps<ITEM, GROUP, boolean>,\n): params is SelectProps<ITEM, GROUP, false> => {\n return !params.multiple;\n};\n\nconst actions = {\n setOpen: 'setOpen',\n setSearch: 'setSearch',\n highlightIndex: 'highlightIndex',\n};\n\nconst initialState = {\n searchValue: '',\n resolvedSearchValue: '',\n isOpen: false,\n highlightedIndex: 0,\n scrollToHighlighted: false,\n};\n\nexport const isOptionForCreate = <ITEM, GROUP>(\n params: OptionForCreate | Group<ITEM, GROUP> | ITEM,\n): params is OptionForCreate => {\n return (\n params && Object.prototype.hasOwnProperty.call(params, '__optionForCreate')\n );\n};\n\nexport function useSelect<ITEM, GROUP, MULTIPLE extends boolean>(\n params: SelectProps<ITEM, GROUP, MULTIPLE>,\n) {\n const {\n items,\n dropdownRef,\n controlRef,\n disabled = false,\n multiple = false,\n getItemLabel,\n getItemKey,\n searchFunction,\n getItemGroupKey,\n groups,\n getGroupKey,\n sortGroups,\n getItemDisabled,\n onFocus,\n onBlur,\n searchValue: searchValueProp,\n withoutClearSearch,\n } = params;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [isFocused, setIsFocused] = useState(false);\n\n const value =\n (params.value &&\n (Array.isArray(params.value) ? params.value : [params.value])) ||\n [];\n\n const [\n {\n searchValue,\n isOpen,\n highlightedIndex,\n resolvedSearchValue,\n scrollToHighlighted,\n },\n setState,\n ] = useHoistedState(initialState);\n\n const searchFunctionDefault = (item: ITEM, searchValue: string) =>\n getItemLabel(item)\n .toLocaleLowerCase()\n .indexOf(searchValue.toLocaleLowerCase()) !== -1;\n\n const [filteredOptions, optionForCreate] = React.useMemo(() => {\n if (resolvedSearchValue && resolvedSearchValue !== '') {\n const fiteredOptions = items.filter((item) =>\n searchFunction\n ? searchFunction(item, resolvedSearchValue)\n : searchFunctionDefault(item, resolvedSearchValue),\n );\n\n const matchWithValueSearch = Boolean(\n items.find(\n (option) =>\n getItemLabel(option).toString().toLowerCase() ===\n resolvedSearchValue.toLocaleLowerCase(),\n ),\n );\n\n const optionForCreate: OptionForCreate = {\n label: searchValue,\n __optionForCreate: true,\n };\n\n return [\n fiteredOptions,\n params.onCreate && !matchWithValueSearch ? optionForCreate : undefined,\n ] as const;\n }\n return [items, undefined] as const;\n }, [items, resolvedSearchValue]);\n\n const visibleItems = useMemo(() => {\n const resultGroups = getGroups(\n filteredOptions,\n groups?.length ? getItemGroupKey : undefined,\n groups,\n getGroupKey,\n sortGroups,\n );\n\n return optionForCreate ? [optionForCreate, ...resultGroups] : resultGroups;\n }, [\n filteredOptions,\n groups,\n getItemGroupKey,\n getGroupKey,\n sortGroups,\n optionForCreate,\n ]);\n\n const notFound = useMemo(() => {\n let flag = false;\n if (searchValue.length > 0) {\n flag =\n visibleItems.filter(\n (group) =>\n isOptionForCreate(group) || group.items.length > 0 || group.group,\n ).length === 0 && !params.onCreate;\n }\n return flag;\n }, [visibleItems]);\n\n const hasItems = items.length !== 0;\n\n const getSelectedOptionIndex = (): number => {\n let index = 0;\n if (value.length > 0) {\n for (const group of visibleItems) {\n if (isOptionForCreate(group)) {\n index++;\n // eslint-disable-next-line no-continue\n continue;\n }\n for (const item of group.items) {\n if (getItemKey(item) === getItemKey(value[0])) {\n return index;\n }\n index++;\n }\n }\n }\n\n return 0;\n };\n\n // Actions\n\n const setOpen = React.useCallback(\n (newIsOpen: boolean) => {\n setState(\n (old) => ({\n ...old,\n isOpen: newIsOpen,\n }),\n actions.setOpen,\n );\n },\n [setState],\n );\n\n const setResolvedSearch = useDebounce((value: string) => {\n setState(\n (old) => ({\n ...old,\n resolvedSearchValue: value,\n }),\n actions.setSearch,\n );\n }, 300);\n\n const setSearch = React.useCallback(\n (value: string) => {\n setState(\n (old) => ({\n ...old,\n searchValue: value,\n }),\n actions.setSearch,\n );\n setResolvedSearch(value);\n },\n [setState, setResolvedSearch],\n );\n\n const prevIsOpen = usePrevious(isOpen);\n\n React.useLayoutEffect(() => {\n if (value !== null && !prevIsOpen && isOpen) {\n const currentHighlightIndex = getSelectedOptionIndex();\n if (filteredOptions.length > 0) {\n scrollToIndex(currentHighlightIndex, dropdownRef);\n }\n }\n });\n\n const highlightIndex = React.useCallback(\n (indexForHighlight: IndexForHighlight, scrollToHighlighted: boolean) => {\n setState((old) => {\n return {\n ...old,\n highlightedIndex: Math.min(\n Math.max(\n 0,\n typeof indexForHighlight === 'function'\n ? indexForHighlight(old.highlightedIndex)\n : indexForHighlight,\n ),\n optionForCreate\n ? filteredOptions.length\n : filteredOptions.length - 1,\n ),\n scrollToHighlighted,\n };\n }, actions.highlightIndex);\n },\n [filteredOptions, setState, optionForCreate],\n );\n\n const removeValue = (e: React.SyntheticEvent, valueItem: ITEM) => {\n e.stopPropagation();\n if (isMultipleParams(params)) {\n const newValue = params.value?.filter(\n (item) => getItemKey(item) !== getItemKey(valueItem),\n );\n params.onChange({\n e,\n value: newValue?.length ? newValue : null,\n });\n }\n };\n\n const onChange = (e: React.SyntheticEvent, item: ITEM) => {\n if (getItemDisabled && getItemDisabled(item)) {\n return;\n }\n if (isMultipleParams(params)) {\n const newValue = value.some(\n (value) => getItemKey(value) === getItemKey(item),\n )\n ? value.filter((value) => getItemKey(value) !== getItemKey(item))\n : [...value, item];\n params.onChange({ value: newValue.length ? newValue : null, e });\n }\n if (isNotMultipleParams(params)) {\n params.onChange({ value: item, e });\n setOpen(false);\n }\n !withoutClearSearch && setSearch('');\n };\n\n const onCreate = (e: React.SyntheticEvent, label: string) => {\n params.onCreate && params.onCreate({ e, label });\n setOpen(false);\n !withoutClearSearch && setSearch('');\n };\n\n // Handlers\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n if (!disabled && !(!multiple && value.length > 0)) {\n setSearch(e.target.value);\n }\n };\n\n const handleInputClick = (): void => {\n !disabled && setOpen(!isOpen);\n\n if (multiple) {\n inputRef.current?.focus();\n !withoutClearSearch && setSearch('');\n }\n };\n\n const clearValue = (e: React.SyntheticEvent) => {\n !withoutClearSearch && setSearch('');\n if (isMultipleParams(params)) {\n const results = value?.filter((item) => getItemDisabled?.(item));\n params.onChange({\n value: results && results.length > 0 ? results : null,\n e,\n });\n }\n if (isNotMultipleParams(params)) {\n params.onChange({ value: null, e });\n }\n };\n\n const getHandleRemoveValue = (item: ITEM) => (e: React.SyntheticEvent) =>\n removeValue(e, item);\n\n // Prop Getters\n\n const ArrowUp: KeyHandler = (_, e): void => {\n e.preventDefault();\n !disabled && setOpen(true);\n highlightIndex((old) => old - 1, true);\n };\n\n const ArrowDown: KeyHandler = (_, e): void => {\n e.preventDefault();\n !disabled && setOpen(true);\n highlightIndex((old) => old + 1, true);\n };\n\n const Enter: KeyHandler = (_, e): void => {\n if (isOpen) {\n if (searchValue || filteredOptions[highlightedIndex]) {\n e.preventDefault();\n }\n\n const getItem = (index: number) => {\n let couter = 0;\n for (const group of visibleItems) {\n if (isOptionForCreate(group)) {\n couter++;\n return group;\n }\n if (group.items.length + couter > index) {\n return group.items[index - couter];\n }\n couter += group.items.length;\n }\n return undefined;\n };\n\n const item = getItem(highlightedIndex);\n\n if (isOptionForCreate(item)) {\n onCreate(e, item.label);\n return;\n }\n\n if (item) {\n onChange(e, item);\n }\n }\n };\n\n const Escape = (): void => {\n setOpen(false);\n };\n\n const Tab = (): void => {\n setOpen(false);\n };\n\n const Backspace: KeyHandler = (_, e): void => {\n if (searchValue) {\n return;\n }\n if (multiple) {\n removeValue(e, value[value.length - 1]);\n } else {\n clearValue(e);\n }\n };\n\n const getKeyProps = useKeys({\n ArrowUp,\n ArrowDown,\n PageUp: ArrowUp,\n PageDown: ArrowDown,\n Home: ArrowUp,\n End: ArrowDown,\n Enter,\n Escape,\n Tab,\n Backspace,\n });\n\n const getOptionProps = ({\n index,\n item,\n }: OptionProps<ITEM>): GetOptionPropsResult => {\n if (isOptionForCreate(item)) {\n return {\n onClick: (e: React.SyntheticEvent) => {\n onCreate(e, item.label);\n },\n onMouseEnter: () => {\n highlightIndex(index, false);\n },\n active: false,\n hovered: index === highlightedIndex,\n key: '__optionForCreate',\n };\n }\n const key = getItemKey(item);\n return {\n onClick: (e: React.SyntheticEvent) => {\n onChange(e, item);\n },\n onMouseEnter: () => {\n highlightIndex(index, false);\n },\n active: Boolean(value.find((item) => getItemKey(item) === key)),\n hovered: index === highlightedIndex,\n key,\n };\n };\n\n useClickOutside({\n isActive: isOpen,\n ignoreClicksInsideRefs: [dropdownRef, controlRef],\n handler: () => {\n setOpen(false);\n },\n });\n\n React.useEffect(() => {\n if (disabled) {\n setOpen(false);\n }\n }, [disabled]);\n\n React.useEffect(() => {\n const currentHighlightIndex = getSelectedOptionIndex();\n highlightIndex(currentHighlightIndex, true);\n }, [highlightIndex]);\n\n React.useEffect(() => {\n if (filteredOptions.length > 0 && scrollToHighlighted) {\n scrollToIndex(highlightedIndex, dropdownRef);\n }\n }, [highlightedIndex]);\n\n const handleInputFocus = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (!disabled) {\n if (!isFocused) {\n setIsFocused(true);\n }\n if (typeof onFocus === 'function') {\n onFocus(e);\n }\n }\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (isOpen) {\n inputRef.current?.focus();\n return;\n }\n\n if (isFocused) {\n setIsFocused(false);\n }\n\n if (typeof onBlur === 'function') {\n onBlur(e);\n }\n };\n\n const handleToggleDropdown = (): void => {\n if (isOpen) {\n setOpen(false);\n setIsFocused(false);\n } else {\n setOpen(true);\n setIsFocused(true);\n inputRef.current?.focus();\n }\n };\n\n useEffect(() => {\n if (searchValueProp) {\n setSearch(searchValueProp);\n }\n }, [searchValueProp]);\n\n return {\n isOpen,\n isFocused,\n highlightedIndex,\n visibleItems,\n highlightIndex,\n getOptionProps,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n handleInputClick,\n inputRef,\n getKeyProps,\n handleInputChange,\n searchValue,\n clearValue,\n getHandleRemoveValue,\n notFound,\n hasItems,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSelect.js","names":["React","useEffect","useMemo","useRef","useState","getCountedGroups","getGroups","useClickOutside","useDebounce","useKeys","usePrevious","scrollToIndex","useHoistedState","isMultipleParams","params","multiple","isNotMultipleParams","actions","setOpen","setSearch","highlightIndex","initialState","searchValue","resolvedSearchValue","isOpen","highlightedIndex","scrollToHighlighted","isOptionForCreate","Object","prototype","hasOwnProperty","call","isOptionForSelectAll","useSelect","items","dropdownRef","controlRef","disabled","getItemLabel","getItemKey","searchFunction","getItemGroupKey","groups","selectAll","getGroupKey","sortGroups","getItemDisabled","onFocus","onBlur","searchValueProp","withoutClearSearch","inputRef","isFocused","setIsFocused","value","Array","isArray","setState","searchFunctionDefault","item","toLocaleLowerCase","indexOf","fiteredOptions","filter","matchWithValueSearch","find","option","toString","toLowerCase","onCreate","label","__optionForCreate","filteredOptions","optionForCreate","visibleItems","resultGroups","length","notFound","flag","group","hasItems","getSelectedOptionIndex","index","useCallback","newIsOpen","old","setResolvedSearch","prevIsOpen","useLayoutEffect","currentHighlightIndex","indexForHighlight","Math","min","max","removeValue","e","valueItem","stopPropagation","newValue","onChange","some","onChangeAll","parametrs","nonDisabledItems","currentGroupValues","withoutGroupValues","forEach","el","push","clearValue","results","ArrowUp","_","preventDefault","ArrowDown","getKeyProps","PageUp","PageDown","Home","End","Enter","getData","couter","Escape","Tab","Backspace","isActive","ignoreClicksInsideRefs","handler","getOptionProps","onClick","onMouseEnter","active","hovered","key","getItems","groupKey","handleInputFocus","handleInputBlur","current","focus","handleToggleDropdown","handleInputClick","handleInputChange","target","getHandleRemoveValue"],"sources":["../../../../../src/hooks/useSelect/useSelect.ts"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport {\n CountedGroup,\n getCountedGroups,\n getGroups,\n SelectAllItem,\n} from '../../utils/getGroups';\nimport { useClickOutside } from '../useClickOutside/useClickOutside';\nimport { useDebounce } from '../useDebounce/useDebounce';\nimport { KeyHandler, useKeys } from '../useKeys/useKeys';\nimport { usePrevious } from '../usePrevious/usePrevious';\nimport { scrollToIndex, useHoistedState } from './helpers';\n\ntype IndexForHighlight = number | ((oldIndex: number) => number);\n\ntype Group<ITEM, GROUP> = {\n items: ITEM[];\n key: string | number;\n group?: GROUP;\n};\ntype GetItemGroupKey<ITEM> = (item: ITEM) => string | number | undefined;\ntype GetGroupKey<GROUP> = (item: GROUP) => string | number | undefined;\ntype SortGroups<ITEM, GROUP> = (\n a: Group<ITEM, GROUP>,\n b: Group<ITEM, GROUP>,\n) => number;\n\ntype OnChangeProp<ITEM, MULTIPLE extends boolean> = (props: {\n value: (MULTIPLE extends true ? ITEM[] : ITEM) | null;\n e: React.SyntheticEvent;\n}) => void;\n\ntype ValueProp<ITEM, MULTIPLE extends boolean> =\n | (MULTIPLE extends true ? ITEM[] : ITEM)\n | null\n | undefined;\n\nexport type OptionForCreate = {\n label: string;\n __optionForCreate: boolean;\n};\n\nexport type SelectProps<ITEM, GROUP, MULTIPLE extends boolean> = {\n getItemGroupKey?: GetItemGroupKey<ITEM> | undefined;\n getGroupKey?: GetGroupKey<GROUP>;\n sortGroups?: SortGroups<ITEM, GROUP>;\n groups?: GROUP[];\n items: ITEM[];\n dropdownRef: React.MutableRefObject<HTMLDivElement | null>;\n controlRef: React.MutableRefObject<HTMLDivElement | null>;\n disabled?: boolean;\n selectAll?: boolean;\n getItemLabel: (item: ITEM) => string;\n getItemKey: (item: ITEM) => string | number;\n getItemDisabled?: (item: ITEM) => boolean | undefined;\n searchFunction?: (item: ITEM, searchValue: string) => boolean;\n onCreate?: (props: { e: React.SyntheticEvent; label: string }) => void;\n onFocus?: React.FocusEventHandler<HTMLInputElement>;\n onBlur?: React.FocusEventHandler<HTMLInputElement>;\n multiple: boolean;\n searchValue?: string;\n withoutClearSearch?: boolean;\n onChange: OnChangeProp<ITEM, MULTIPLE>;\n value: ValueProp<ITEM, MULTIPLE>;\n};\n\nexport type OptionProps<ITEM> = {\n index: number;\n item: ITEM | OptionForCreate | SelectAllItem;\n};\n\nexport type GetOptionPropsResult = {\n onClick: (e: React.SyntheticEvent) => void;\n onMouseEnter: (e: React.SyntheticEvent) => void;\n active: boolean;\n hovered: boolean;\n key: string | number;\n};\n\nconst isMultipleParams = <ITEM, GROUP>(\n params: SelectProps<ITEM, GROUP, boolean>,\n): params is SelectProps<ITEM, GROUP, true> => {\n return params.multiple;\n};\n\nconst isNotMultipleParams = <ITEM, GROUP>(\n params: SelectProps<ITEM, GROUP, boolean>,\n): params is SelectProps<ITEM, GROUP, false> => {\n return !params.multiple;\n};\n\nconst actions = {\n setOpen: 'setOpen',\n setSearch: 'setSearch',\n highlightIndex: 'highlightIndex',\n};\n\nconst initialState = {\n searchValue: '',\n resolvedSearchValue: '',\n isOpen: false,\n highlightedIndex: 0,\n scrollToHighlighted: false,\n};\n\nexport const isOptionForCreate = <ITEM, GROUP>(\n params: OptionForCreate | Group<ITEM, GROUP> | ITEM,\n): params is OptionForCreate => {\n return (\n params && Object.prototype.hasOwnProperty.call(params, '__optionForCreate')\n );\n};\n\nexport const isOptionForSelectAll = <ITEM, GROUP>(\n params: SelectAllItem | Group<ITEM, GROUP> | ITEM,\n): params is SelectAllItem => {\n return (\n params && Object.prototype.hasOwnProperty.call(params, '__optionSelctAll')\n );\n};\n\nexport function useSelect<ITEM, GROUP, MULTIPLE extends boolean>(\n params: SelectProps<ITEM, GROUP, MULTIPLE>,\n) {\n const {\n items,\n dropdownRef,\n controlRef,\n disabled = false,\n multiple = false,\n getItemLabel,\n getItemKey,\n searchFunction,\n getItemGroupKey,\n groups,\n selectAll = false,\n getGroupKey,\n sortGroups,\n getItemDisabled,\n onFocus,\n onBlur,\n searchValue: searchValueProp,\n withoutClearSearch,\n } = params;\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [isFocused, setIsFocused] = useState(false);\n\n const value =\n (params.value &&\n (Array.isArray(params.value) ? params.value : [params.value])) ||\n [];\n\n const [\n {\n searchValue,\n isOpen,\n highlightedIndex,\n resolvedSearchValue,\n scrollToHighlighted,\n },\n setState,\n ] = useHoistedState(initialState);\n\n const searchFunctionDefault = (item: ITEM, searchValue: string) =>\n getItemLabel(item)\n .toLocaleLowerCase()\n .indexOf(searchValue.toLocaleLowerCase()) !== -1;\n\n const [filteredOptions, optionForCreate] = React.useMemo(() => {\n if (resolvedSearchValue && resolvedSearchValue !== '') {\n const fiteredOptions = items.filter((item) =>\n searchFunction\n ? searchFunction(item, resolvedSearchValue)\n : searchFunctionDefault(item, resolvedSearchValue),\n );\n\n const matchWithValueSearch = Boolean(\n items.find(\n (option) =>\n getItemLabel(option).toString().toLowerCase() ===\n resolvedSearchValue.toLocaleLowerCase(),\n ),\n );\n\n const optionForCreate: OptionForCreate = {\n label: searchValue,\n __optionForCreate: true,\n };\n\n return [\n fiteredOptions,\n params.onCreate && !matchWithValueSearch ? optionForCreate : undefined,\n ] as const;\n }\n return [items, undefined] as const;\n }, [items, resolvedSearchValue]);\n\n const visibleItems = useMemo(() => {\n const resultGroups = getCountedGroups(\n getGroups(\n filteredOptions,\n groups?.length ? getItemGroupKey : undefined,\n groups,\n getGroupKey,\n sortGroups,\n ),\n isMultipleParams(params) ? params.value : [],\n selectAll,\n getItemKey,\n getItemDisabled,\n );\n\n return optionForCreate ? [optionForCreate, ...resultGroups] : resultGroups;\n }, [\n value,\n selectAll,\n filteredOptions,\n groups,\n getItemGroupKey,\n getItemDisabled,\n getGroupKey,\n sortGroups,\n optionForCreate,\n ]);\n\n const notFound = useMemo(() => {\n let flag = false;\n if (searchValue.length > 0) {\n flag =\n visibleItems.filter(\n (group) =>\n isOptionForCreate(group) || group.items.length > 0 || group.group,\n ).length === 0 && !params.onCreate;\n }\n return flag;\n }, [visibleItems]);\n\n const hasItems = items.length !== 0;\n\n const getSelectedOptionIndex = (): number => {\n let index = 0;\n if (value.length > 0) {\n for (const group of visibleItems) {\n if (isOptionForCreate(group)) {\n index++;\n // eslint-disable-next-line no-continue\n continue;\n }\n for (const item of group.items) {\n if (isOptionForSelectAll(item)) {\n return index;\n }\n if (getItemKey(item) === getItemKey(value[0])) {\n return index;\n }\n index++;\n }\n }\n }\n\n return 0;\n };\n\n // Actions\n\n const setOpen = React.useCallback(\n (newIsOpen: boolean) => {\n setState(\n (old) => ({\n ...old,\n isOpen: newIsOpen,\n }),\n actions.setOpen,\n );\n },\n [setState],\n );\n\n const setResolvedSearch = useDebounce((value: string) => {\n setState(\n (old) => ({\n ...old,\n resolvedSearchValue: value,\n }),\n actions.setSearch,\n );\n }, 300);\n\n const setSearch = React.useCallback(\n (value: string) => {\n setState(\n (old) => ({\n ...old,\n searchValue: value,\n }),\n actions.setSearch,\n );\n setResolvedSearch(value);\n },\n [setState, setResolvedSearch],\n );\n\n const prevIsOpen = usePrevious(isOpen);\n\n React.useLayoutEffect(() => {\n if (value !== null && !prevIsOpen && isOpen) {\n const currentHighlightIndex = getSelectedOptionIndex();\n if (filteredOptions.length > 0) {\n scrollToIndex(currentHighlightIndex, dropdownRef);\n }\n }\n });\n\n const highlightIndex = React.useCallback(\n (indexForHighlight: IndexForHighlight, scrollToHighlighted: boolean) => {\n setState((old) => {\n return {\n ...old,\n highlightedIndex: Math.min(\n Math.max(\n 0,\n typeof indexForHighlight === 'function'\n ? indexForHighlight(old.highlightedIndex)\n : indexForHighlight,\n ),\n optionForCreate\n ? filteredOptions.length\n : filteredOptions.length - 1,\n ),\n scrollToHighlighted,\n };\n }, actions.highlightIndex);\n },\n [filteredOptions, setState, optionForCreate],\n );\n\n const removeValue = (e: React.SyntheticEvent, valueItem: ITEM) => {\n e.stopPropagation();\n if (isMultipleParams(params)) {\n const newValue = params.value?.filter(\n (item) => getItemKey(item) !== getItemKey(valueItem),\n );\n params.onChange({\n e,\n value: newValue?.length ? newValue : null,\n });\n }\n };\n\n const onChange = (e: React.SyntheticEvent, item: ITEM) => {\n if (getItemDisabled && getItemDisabled(item)) {\n return;\n }\n if (isMultipleParams(params)) {\n const newValue = value.some(\n (value) => getItemKey(value) === getItemKey(item),\n )\n ? value.filter((value) => getItemKey(value) !== getItemKey(item))\n : [...value, item];\n params.onChange({ value: newValue.length ? newValue : null, e });\n }\n if (isNotMultipleParams(params)) {\n params.onChange({ value: item, e });\n setOpen(false);\n }\n !withoutClearSearch && setSearch('');\n };\n\n const onChangeAll = (parametrs: {\n e: React.SyntheticEvent;\n items: ITEM[];\n }) => {\n const { e, items } = parametrs;\n if (isMultipleParams(params)) {\n const nonDisabledItems = getItemDisabled\n ? items.filter((item) => !getItemDisabled(item))\n : items;\n\n const currentGroupValues: ITEM[] = [];\n const withoutGroupValues: ITEM[] = [];\n value.forEach((el) => {\n if (\n nonDisabledItems.find((item) => getItemKey(el) === getItemKey(item))\n ) {\n currentGroupValues.push(el);\n } else {\n withoutGroupValues.push(el);\n }\n });\n if (currentGroupValues.length === nonDisabledItems.length) {\n params.onChange({ value: withoutGroupValues, e });\n } else {\n params.onChange({\n e,\n value: [...withoutGroupValues, ...nonDisabledItems],\n });\n }\n }\n };\n\n const onCreate = (e: React.SyntheticEvent, label: string) => {\n params.onCreate && params.onCreate({ e, label });\n setOpen(false);\n !withoutClearSearch && setSearch('');\n };\n\n // Handlers\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {\n if (!disabled && !(!multiple && value.length > 0)) {\n setSearch(e.target.value);\n }\n };\n\n const handleInputClick = (): void => {\n !disabled && setOpen(!isOpen);\n\n if (multiple) {\n inputRef.current?.focus();\n !withoutClearSearch && setSearch('');\n }\n };\n\n const clearValue = (e: React.SyntheticEvent) => {\n !withoutClearSearch && setSearch('');\n if (isMultipleParams(params)) {\n const results = value?.filter((item) => getItemDisabled?.(item));\n params.onChange({\n value: results && results.length > 0 ? results : null,\n e,\n });\n }\n if (isNotMultipleParams(params)) {\n params.onChange({ value: null, e });\n }\n };\n\n const getHandleRemoveValue = (item: ITEM) => (e: React.SyntheticEvent) =>\n removeValue(e, item);\n\n // Prop Getters\n\n const ArrowUp: KeyHandler = (_, e): void => {\n e.preventDefault();\n !disabled && setOpen(true);\n highlightIndex((old) => old - 1, true);\n };\n\n const ArrowDown: KeyHandler = (_, e): void => {\n e.preventDefault();\n !disabled && setOpen(true);\n highlightIndex((old) => old + 1, true);\n };\n\n const Enter: KeyHandler = (_, e): void => {\n if (isOpen) {\n if (searchValue || filteredOptions[highlightedIndex]) {\n e.preventDefault();\n }\n\n const getData = (\n index: number,\n ): [\n CountedGroup<ITEM, GROUP> | undefined,\n SelectAllItem | OptionForCreate | ITEM | undefined,\n ] => {\n let couter = 0;\n for (const group of visibleItems) {\n if (isOptionForCreate(group)) {\n couter++;\n return [undefined, group];\n }\n if (group.items.length + couter > index) {\n return [group, group.items[index - couter]];\n }\n couter += group.items.length;\n }\n return [undefined, undefined];\n };\n\n const [group, item] = getData(highlightedIndex);\n\n if (isOptionForCreate(item)) {\n onCreate(e, item.label);\n return;\n }\n\n if (isOptionForSelectAll(item)) {\n onChangeAll({\n e,\n items:\n (group?.items.filter(\n (el) => !isOptionForSelectAll(el),\n ) as ITEM[]) ?? [],\n });\n return;\n }\n\n if (item) {\n onChange(e, item);\n }\n }\n };\n\n const Escape = (): void => {\n setOpen(false);\n };\n\n const Tab = (): void => {\n setOpen(false);\n };\n\n const Backspace: KeyHandler = (_, e): void => {\n if (searchValue) {\n return;\n }\n if (multiple) {\n removeValue(e, value[value.length - 1]);\n } else {\n clearValue(e);\n }\n };\n\n const getKeyProps = useKeys({\n ArrowUp,\n ArrowDown,\n PageUp: ArrowUp,\n PageDown: ArrowDown,\n Home: ArrowUp,\n End: ArrowDown,\n Enter,\n Escape,\n Tab,\n Backspace,\n });\n\n const getOptionProps = ({\n index,\n item,\n }: OptionProps<ITEM>): GetOptionPropsResult => {\n if (isOptionForCreate(item)) {\n return {\n onClick: (e: React.SyntheticEvent) => {\n onCreate(e, item.label);\n },\n onMouseEnter: () => {\n highlightIndex(index, false);\n },\n active: false,\n hovered: index === highlightedIndex,\n key: '__optionForCreate',\n };\n }\n if (isOptionForSelectAll(item)) {\n const getItems = (): ITEM[] => {\n for (const group of visibleItems) {\n if (isOptionForCreate(group)) {\n break;\n }\n if (group.key === item.groupKey) {\n return (\n (group?.items.filter(\n (el) => !isOptionForSelectAll(el),\n ) as ITEM[]) ?? []\n );\n }\n }\n return [];\n };\n return {\n onClick: (e: React.SyntheticEvent) => {\n onChangeAll({ e, items: getItems() });\n },\n onMouseEnter: () => {\n highlightIndex(index, false);\n },\n active: false,\n hovered: index === highlightedIndex,\n key: '__optionForSelectAll',\n };\n }\n const key = getItemKey(item);\n return {\n onClick: (e: React.SyntheticEvent) => {\n onChange(e, item);\n },\n onMouseEnter: () => {\n highlightIndex(index, false);\n },\n active: Boolean(value.find((item) => getItemKey(item) === key)),\n hovered: index === highlightedIndex,\n key,\n };\n };\n\n useClickOutside({\n isActive: isOpen,\n ignoreClicksInsideRefs: [dropdownRef, controlRef],\n handler: () => {\n setOpen(false);\n },\n });\n\n React.useEffect(() => {\n if (disabled) {\n setOpen(false);\n }\n }, [disabled]);\n\n React.useEffect(() => {\n const currentHighlightIndex = getSelectedOptionIndex();\n highlightIndex(currentHighlightIndex, true);\n }, [highlightIndex]);\n\n React.useEffect(() => {\n if (filteredOptions.length > 0 && scrollToHighlighted) {\n scrollToIndex(highlightedIndex, dropdownRef);\n }\n }, [highlightedIndex]);\n\n const handleInputFocus = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (!disabled) {\n if (!isFocused) {\n setIsFocused(true);\n }\n if (typeof onFocus === 'function') {\n onFocus(e);\n }\n }\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLInputElement>): void => {\n if (isOpen) {\n inputRef.current?.focus();\n return;\n }\n\n if (isFocused) {\n setIsFocused(false);\n }\n\n if (typeof onBlur === 'function') {\n onBlur(e);\n }\n };\n\n const handleToggleDropdown = (): void => {\n if (isOpen) {\n setOpen(false);\n setIsFocused(false);\n } else {\n setOpen(true);\n setIsFocused(true);\n inputRef.current?.focus();\n }\n };\n\n useEffect(() => {\n if (searchValueProp) {\n setSearch(searchValueProp);\n }\n }, [searchValueProp]);\n\n return {\n isOpen,\n isFocused,\n highlightedIndex,\n visibleItems,\n highlightIndex,\n getOptionProps,\n handleInputFocus,\n handleInputBlur,\n handleToggleDropdown,\n handleInputClick,\n inputRef,\n getKeyProps,\n handleInputChange,\n searchValue,\n clearValue,\n getHandleRemoveValue,\n notFound,\n hasItems,\n };\n}\n"],"mappings":"4pEAAA,MAAOA,MAAP,EAAgBC,SAAhB,CAA2BC,OAA3B,CAAoCC,MAApC,CAA4CC,QAA5C,KAA4D,OAA5D,CAEA,OAEEC,gBAFF,CAGEC,SAHF,6BAMA,OAASC,eAAT,0CACA,OAASC,WAAT,kCACA,OAAqBC,OAArB,0BACA,OAASC,WAAT,kCACA,OAASC,aAAT,CAAwBC,eAAxB,iB,GAoEMC,iBAAgB,CAAG,SACvBC,CADuB,CAEsB,CAC7C,MAAOA,EAAM,CAACC,QACf,C,CAEKC,mBAAmB,CAAG,SAC1BF,CAD0B,CAEoB,CAC9C,MAAO,CAACA,CAAM,CAACC,QAChB,C,CAEKE,OAAO,CAAG,CACdC,OAAO,CAAE,SADK,CAEdC,SAAS,CAAE,WAFG,CAGdC,cAAc,CAAE,gBAHF,C,CAMVC,YAAY,CAAG,CACnBC,WAAW,CAAE,EADM,CAEnBC,mBAAmB,CAAE,EAFF,CAGnBC,MAAM,GAHa,CAInBC,gBAAgB,CAAE,CAJC,CAKnBC,mBAAmB,GALA,C,CAQrB,MAAO,IAAMC,kBAAiB,CAAG,SAC/Bb,CAD+B,CAED,CAC9B,MACEA,EAAM,EAAIc,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCjB,CAArC,CAA6C,mBAA7C,CAEb,CANM,CAQP,MAAO,IAAMkB,qBAAoB,CAAG,SAClClB,CADkC,CAEN,CAC5B,MACEA,EAAM,EAAIc,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCjB,CAArC,CAA6C,kBAA7C,CAEb,CANM,CAQP,MAAO,SAASmB,UAAT,CACLnB,CADK,CAEL,IAEEoB,EAFF,CAoBIpB,CApBJ,CAEEoB,KAFF,CAGEC,CAHF,CAoBIrB,CApBJ,CAGEqB,WAHF,CAIEC,CAJF,CAoBItB,CApBJ,CAIEsB,UAJF,GAoBItB,CApBJ,CAKEuB,QALF,CAKEA,CALF,iBAoBIvB,CApBJ,CAMEC,QANF,CAMEA,CANF,eAOEuB,CAPF,CAoBIxB,CApBJ,CAOEwB,YAPF,CAQEC,CARF,CAoBIzB,CApBJ,CAQEyB,UARF,CASEC,CATF,CAoBI1B,CApBJ,CASE0B,cATF,CAUEC,CAVF,CAoBI3B,CApBJ,CAUE2B,eAVF,CAWEC,CAXF,CAoBI5B,CApBJ,CAWE4B,MAXF,GAoBI5B,CApBJ,CAYE6B,SAZF,CAYEA,CAZF,eAaEC,CAbF,CAoBI9B,CApBJ,CAaE8B,WAbF,CAcEC,CAdF,CAoBI/B,CApBJ,CAcE+B,UAdF,CAeEC,CAfF,CAoBIhC,CApBJ,CAeEgC,eAfF,CAgBEC,CAhBF,CAoBIjC,CApBJ,CAgBEiC,OAhBF,CAiBEC,CAjBF,CAoBIlC,CApBJ,CAiBEkC,MAjBF,CAkBeC,CAlBf,CAoBInC,CApBJ,CAkBEQ,WAlBF,CAmBE4B,CAnBF,CAoBIpC,CApBJ,CAmBEoC,kBAnBF,CAsBMC,CAAQ,CAAGhD,MAAM,CAAmB,IAAnB,CAtBvB,GAuBkCC,QAAQ,IAvB1C,uBAuBOgD,CAvBP,MAuBkBC,CAvBlB,MAyBMC,CAAK,CACRxC,CAAM,CAACwC,KAAP,GACEC,KAAK,CAACC,OAAN,CAAc1C,CAAM,CAACwC,KAArB,EAA8BxC,CAAM,CAACwC,KAArC,CAA6C,CAACxC,CAAM,CAACwC,KAAR,CAD/C,CAAD,EAEA,EA5BF,GAuCI1C,eAAe,CAACS,YAAD,CAvCnB,8BAgCIC,CAhCJ,GAgCIA,WAhCJ,CAiCIE,CAjCJ,GAiCIA,MAjCJ,CAkCIC,CAlCJ,GAkCIA,gBAlCJ,CAmCIF,CAnCJ,GAmCIA,mBAnCJ,CAoCIG,CApCJ,GAoCIA,mBApCJ,CAsCE+B,CAtCF,MAyCMC,CAAqB,CAAG,SAACC,CAAD,CAAarC,CAAb,QAGoB,CAAC,CAFjD,GAAAgB,CAAY,CAACqB,CAAD,CAAZ,CACGC,iBADH,GAEGC,OAFH,CAEWvC,CAAW,CAACsC,iBAAZ,EAFX,CAD4B,CAzC9B,GA8C2C5D,KAAK,CAACE,OAAN,CAAc,UAAM,CAC7D,GAAIqB,CAAmB,EAA4B,EAAxB,GAAAA,CAA3B,CAAuD,IAC/CuC,EAAc,CAAG5B,CAAK,CAAC6B,MAAN,CAAa,SAACJ,CAAD,QAClCnB,EAAc,CACVA,CAAc,CAACmB,CAAD,CAAOpC,CAAP,CADJ,CAEVmC,CAAqB,CAACC,CAAD,CAAOpC,CAAP,CAHS,CAAb,CAD8B,CAO/CyC,CAAoB,GACxB9B,CAAK,CAAC+B,IAAN,CACE,SAACC,CAAD,QACE5B,EAAY,CAAC4B,CAAD,CAAZ,CAAqBC,QAArB,GAAgCC,WAAhC,KACA7C,CAAmB,CAACqC,iBAApB,EAFF,CADF,CARmD,CAoBrD,MAAO,CACLE,CADK,CAELhD,CAAM,CAACuD,QAAP,EAAmB,CAACL,CAApB,CAPuC,CACvCM,KAAK,CAAEhD,CADgC,CAEvCiD,iBAAiB,GAFsB,CAOvC,OAFK,CAIR,CACD,MAAO,CAACrC,CAAD,QACR,CA3B0C,CA2BxC,CAACA,CAAD,CAAQX,CAAR,CA3BwC,CA9C3C,uBA8COiD,CA9CP,MA8CwBC,CA9CxB,MA2EMC,CAAY,CAAGxE,OAAO,CAAC,UAAM,CACjC,GAAMyE,EAAY,CAAGtE,gBAAgB,CACnCC,SAAS,CACPkE,CADO,CAEP,OAAA9B,CAAM,WAANA,CAAA,EAAAA,CAAM,CAAEkC,MAAR,CAAiBnC,CAAjB,OAFO,CAGPC,CAHO,CAIPE,CAJO,CAKPC,CALO,CAD0B,CAQnChC,gBAAgB,CAACC,CAAD,CAAhB,CAA2BA,CAAM,CAACwC,KAAlC,CAA0C,EARP,CASnCX,CATmC,CAUnCJ,CAVmC,CAWnCO,CAXmC,CAArC,CAcA,MAAO2B,EAAe,EAAIA,CAAJ,4BAAwBE,CAAxB,GAAwCA,CAC/D,CAhB2B,CAgBzB,CACDrB,CADC,CAEDX,CAFC,CAGD6B,CAHC,CAID9B,CAJC,CAKDD,CALC,CAMDK,CANC,CAODF,CAPC,CAQDC,CARC,CASD4B,CATC,CAhByB,CA3E5B,CAuGMI,CAAQ,CAAG3E,OAAO,CAAC,UAAM,CAC7B,GAAI4E,EAAI,GAAR,CAQA,MAPyB,EAArB,CAAAxD,CAAW,CAACsD,MAOhB,GANEE,CAAI,CAIW,CAHb,GAAAJ,CAAY,CAACX,MAAb,CACE,SAACgB,CAAD,QACEpD,kBAAiB,CAACoD,CAAD,CAAjB,EAAiD,CAArB,CAAAA,CAAK,CAAC7C,KAAN,CAAY0C,MAAxC,EAAsDG,CAAK,CAACA,KAD9D,CADF,EAGEH,MAHF,EAGkB,CAAC9D,CAAM,CAACuD,QAE9B,EAAOS,CACR,CAVuB,CAUrB,CAACJ,CAAD,CAVqB,CAvGxB,CAmHMM,CAAQ,CAAoB,CAAjB,GAAA9C,CAAK,CAAC0C,MAnHvB,CAqHMK,CAAsB,CAAG,UAAc,CAC3C,GAAIC,EAAK,CAAG,CAAZ,CACA,GAAmB,CAAf,CAAA5B,CAAK,CAACsB,MAAV,CAAsB,oCACAF,CADA,MACpB,2BAAkC,IAAvBK,EAAuB,SAChC,GAAIpD,iBAAiB,CAACoD,CAAD,CAArB,CAA8B,CAC5BG,CAAK,EADuB,CAG5B,QACD,CAL+B,mCAMbH,CAAK,CAAC7C,KANO,MAMhC,2BAAgC,IAArByB,EAAqB,SAC9B,GAAI3B,oBAAoB,CAAC2B,CAAD,CAAxB,CACE,MAAOuB,EAAP,CAEF,GAAI3C,CAAU,CAACoB,CAAD,CAAV,GAAqBpB,CAAU,CAACe,CAAK,CAAC,CAAD,CAAN,CAAnC,CACE,MAAO4B,EAAP,CAEFA,CAAK,EACN,CAd+B,+BAejC,CAhBmB,+BAiBrB,CAED,MAAO,EACR,CA3ID,CA+IMhE,CAAO,CAAGlB,KAAK,CAACmF,WAAN,CACd,SAACC,CAAD,CAAwB,CACtB3B,CAAQ,CACN,SAAC4B,CAAD,wCACKA,CADL,MAEE7D,MAAM,CAAE4D,CAFV,GADM,CAKNnE,OAAO,CAACC,OALF,CAOT,CATa,CAUd,CAACuC,CAAD,CAVc,CA/IhB,CA4JM6B,CAAiB,CAAG9E,WAAW,CAAC,SAAC8C,CAAD,CAAmB,CACvDG,CAAQ,CACN,SAAC4B,CAAD,wCACKA,CADL,MAEE9D,mBAAmB,CAAE+B,CAFvB,GADM,CAKNrC,OAAO,CAACE,SALF,CAOT,CARoC,CAQlC,GARkC,CA5JrC,CAsKMA,CAAS,CAAGnB,KAAK,CAACmF,WAAN,CAChB,SAAC7B,CAAD,CAAmB,CACjBG,CAAQ,CACN,SAAC4B,CAAD,wCACKA,CADL,MAEE/D,WAAW,CAAEgC,CAFf,GADM,CAKNrC,OAAO,CAACE,SALF,CADS,CAQjBmE,CAAiB,CAAChC,CAAD,CAClB,CAVe,CAWhB,CAACG,CAAD,CAAW6B,CAAX,CAXgB,CAtKlB,CAoLMC,CAAU,CAAG7E,WAAW,CAACc,CAAD,CApL9B,CAsLAxB,KAAK,CAACwF,eAAN,CAAsB,UAAM,CAC1B,GAAc,IAAV,GAAAlC,CAAK,EAAa,CAACiC,CAAnB,EAAiC/D,CAArC,CAA6C,CAC3C,GAAMiE,EAAqB,CAAGR,CAAsB,EAApD,CAC6B,CAAzB,CAAAT,CAAe,CAACI,MAFuB,EAGzCjE,aAAa,CAAC8E,CAAD,CAAwBtD,CAAxB,CAEhB,CACF,CAPD,CAtLA,IA+LMf,EAAc,CAAGpB,KAAK,CAACmF,WAAN,CACrB,SAACO,CAAD,CAAuChE,CAAvC,CAAwE,CACtE+B,CAAQ,CAAC,SAAC4B,CAAD,CAAS,CAChB,sCACKA,CADL,MAEE5D,gBAAgB,CAAEkE,IAAI,CAACC,GAAL,CAChBD,IAAI,CAACE,GAAL,CACE,CADF,CAE+B,UAA7B,QAAOH,EAAP,CACIA,CAAiB,CAACL,CAAG,CAAC5D,gBAAL,CADrB,CAEIiE,CAJN,CADgB,CAOhBjB,CAAe,CACXD,CAAe,CAACI,MADL,CAEXJ,CAAe,CAACI,MAAhB,CAAyB,CATb,CAFpB,CAaElD,mBAAmB,CAAnBA,CAbF,EAeD,CAhBO,CAgBLT,OAAO,CAACG,cAhBH,CAiBT,CAnBoB,CAoBrB,CAACoD,CAAD,CAAkBf,CAAlB,CAA4BgB,CAA5B,CApBqB,CA/LvB,CAsNMqB,CAAW,CAAG,SAACC,CAAD,CAA0BC,CAA1B,CAA8C,CAEhE,GADAD,CAAC,CAACE,eAAF,EACA,CAAIpF,gBAAgB,CAACC,CAAD,CAApB,CAA8B,OACtBoF,CAAQ,WAAGpF,CAAM,CAACwC,KAAV,qBAAG,EAAcS,MAAd,CACf,SAACJ,CAAD,QAAUpB,EAAU,CAACoB,CAAD,CAAV,GAAqBpB,CAAU,CAACyD,CAAD,CAAzC,CADe,CADW,CAI5BlF,CAAM,CAACqF,QAAP,CAAgB,CACdJ,CAAC,CAADA,CADc,CAEdzC,KAAK,CAAE,OAAA4C,CAAQ,WAARA,CAAA,EAAAA,CAAQ,CAAEtB,MAAV,CAAmBsB,CAAnB,CAA8B,IAFvB,CAAhB,CAID,CACF,CAjOD,CAmOMC,CAAQ,CAAG,SAACJ,CAAD,CAA0BpC,CAA1B,CAAyC,CACxD,KAAIb,CAAe,EAAIA,CAAe,CAACa,CAAD,CAAtC,GAGA,GAAI9C,gBAAgB,CAACC,CAAD,CAApB,CAA8B,CAC5B,GAAMoF,EAAQ,CAAG5C,CAAK,CAAC8C,IAAN,CACf,SAAC9C,CAAD,QAAWf,EAAU,CAACe,CAAD,CAAV,GAAsBf,CAAU,CAACoB,CAAD,CAA3C,CADe,EAGbL,CAAK,CAACS,MAAN,CAAa,SAACT,CAAD,QAAWf,EAAU,CAACe,CAAD,CAAV,GAAsBf,CAAU,CAACoB,CAAD,CAA3C,CAAb,CAHa,8BAITL,CAJS,GAIFK,CAJE,EAAjB,CAKA7C,CAAM,CAACqF,QAAP,CAAgB,CAAE7C,KAAK,CAAE4C,CAAQ,CAACtB,MAAT,CAAkBsB,CAAlB,CAA6B,IAAtC,CAA4CH,CAAC,CAADA,CAA5C,CAAhB,CACD,CACG/E,mBAAmB,CAACF,CAAD,CAXvB,GAYEA,CAAM,CAACqF,QAAP,CAAgB,CAAE7C,KAAK,CAAEK,CAAT,CAAeoC,CAAC,CAADA,CAAf,CAAhB,CAZF,CAaE7E,CAAO,IAbT,EAeCgC,CAAD,EAAuB/B,CAAS,CAAC,EAAD,CAfhC,CAgBD,CApPD,CAsPMkF,CAAW,CAAG,SAACC,CAAD,CAGd,CACJ,GAAQP,EAAR,CAAqBO,CAArB,CAAQP,CAAR,CAAW7D,CAAX,CAAqBoE,CAArB,CAAWpE,KAAX,CACA,GAAIrB,gBAAgB,CAACC,CAAD,CAApB,CAA8B,IACtByF,EAAgB,CAAGzD,CAAe,CACpCZ,CAAK,CAAC6B,MAAN,CAAa,SAACJ,CAAD,QAAU,CAACb,CAAe,CAACa,CAAD,CAA1B,CAAb,CADoC,CAEpCzB,CAHwB,CAKtBsE,CAA0B,CAAG,EALP,CAMtBC,CAA0B,CAAG,EANP,CAO5BnD,CAAK,CAACoD,OAAN,CAAc,SAACC,CAAD,CAAQ,CAElBJ,CAAgB,CAACtC,IAAjB,CAAsB,SAACN,CAAD,QAAUpB,EAAU,CAACoE,CAAD,CAAV,GAAmBpE,CAAU,CAACoB,CAAD,CAAvC,CAAtB,CAFkB,CAIlB6C,CAAkB,CAACI,IAAnB,CAAwBD,CAAxB,CAJkB,CAMlBF,CAAkB,CAACG,IAAnB,CAAwBD,CAAxB,CAEH,CARD,CAP4B,CAgBxBH,CAAkB,CAAC5B,MAAnB,GAA8B2B,CAAgB,CAAC3B,MAhBvB,CAiB1B9D,CAAM,CAACqF,QAAP,CAAgB,CAAE7C,KAAK,CAAEmD,CAAT,CAA6BV,CAAC,CAADA,CAA7B,CAAhB,CAjB0B,CAmB1BjF,CAAM,CAACqF,QAAP,CAAgB,CACdJ,CAAC,CAADA,CADc,CAEdzC,KAAK,WAAMmD,CAAN,oBAA6BF,CAA7B,EAFS,CAAhB,CAKH,CACF,CApRD,CAsRMlC,EAAQ,CAAG,SAAC0B,CAAD,CAA0BzB,CAA1B,CAA4C,CAC3DxD,CAAM,CAACuD,QAAP,EAAmBvD,CAAM,CAACuD,QAAP,CAAgB,CAAE0B,CAAC,CAADA,CAAF,CAAKzB,KAAK,CAALA,CAAL,CAAhB,CADwC,CAE3DpD,CAAO,IAFoD,CAG1DgC,CAAD,EAAuB/B,CAAS,CAAC,EAAD,CACjC,CA1RD,CA6SM0F,EAAU,CAAG,SAACd,CAAD,CAA6B,CAE9C,GADC7C,CAAD,EAAuB/B,CAAS,CAAC,EAAD,CAChC,CAAIN,gBAAgB,CAACC,CAAD,CAApB,CAA8B,CAC5B,GAAMgG,EAAO,QAAGxD,CAAH,WAAGA,CAAH,QAAGA,CAAK,CAAES,MAAP,CAAc,SAACJ,CAAD,gBAAUb,CAAV,WAAUA,CAAV,QAAUA,CAAe,CAAGa,CAAH,CAAzB,CAAd,CAAhB,CACA7C,CAAM,CAACqF,QAAP,CAAgB,CACd7C,KAAK,CAAEwD,CAAO,EAAqB,CAAjB,CAAAA,CAAO,CAAClC,MAAnB,CAAgCkC,CAAhC,CAA0C,IADnC,CAEdf,CAAC,CAADA,CAFc,CAAhB,CAID,CACG/E,mBAAmB,CAACF,CAAD,CATuB,EAU5CA,CAAM,CAACqF,QAAP,CAAgB,CAAE7C,KAAK,CAAE,IAAT,CAAeyC,CAAC,CAADA,CAAf,CAAhB,CAEH,CAzTD,CAgUMgB,EAAmB,CAAG,SAACC,CAAD,CAAIjB,CAAJ,CAAgB,CAC1CA,CAAC,CAACkB,cAAF,EAD0C,CAEzC5E,CAAD,EAAanB,CAAO,IAFsB,CAG1CE,CAAc,CAAC,SAACiE,CAAD,QAASA,EAAG,CAAG,CAAf,CAAD,IACf,CApUD,CAsUM6B,EAAqB,CAAG,SAACF,CAAD,CAAIjB,CAAJ,CAAgB,CAC5CA,CAAC,CAACkB,cAAF,EAD4C,CAE3C5E,CAAD,EAAanB,CAAO,IAFwB,CAG5CE,CAAc,CAAC,SAACiE,CAAD,QAASA,EAAG,CAAG,CAAf,CAAD,IACf,CA1UD,CAiZM8B,EAAW,CAAG1G,OAAO,CAAC,CAC1BsG,OAAO,CAAPA,EAD0B,CAE1BG,SAAS,CAATA,EAF0B,CAG1BE,MAAM,CAAEL,EAHkB,CAI1BM,QAAQ,CAAEH,EAJgB,CAK1BI,IAAI,CAAEP,EALoB,CAM1BQ,GAAG,CAAEL,EANqB,CAO1BM,KAAK,CA5EmB,QAApBA,MAAoB,CAACR,CAAD,CAAIjB,CAAJ,CAAgB,CACxC,GAAIvE,CAAJ,CAAY,EACNF,CAAW,EAAIkD,CAAe,CAAC/C,CAAD,CADxB,GAERsE,CAAC,CAACkB,cAAF,EAFQ,IAKJQ,EAAO,CAAG,SACdvC,CADc,CAKX,OACCwC,CAAM,CAAG,CADV,8BAEiBhD,CAFjB,MAEH,2BAAkC,IAAvBK,EAAuB,SAChC,GAAIpD,iBAAiB,CAACoD,CAAD,CAArB,CAEE,MADA2C,EAAM,EACN,CAAO,QAAY3C,CAAZ,CAAP,CAEF,GAAIA,CAAK,CAAC7C,KAAN,CAAY0C,MAAZ,CAAqB8C,CAArB,CAA8BxC,CAAlC,CACE,MAAO,CAACH,CAAD,CAAQA,CAAK,CAAC7C,KAAN,CAAYgD,CAAK,CAAGwC,CAApB,CAAR,CAAP,CAEFA,CAAM,EAAI3C,CAAK,CAAC7C,KAAN,CAAY0C,MACvB,CAXE,+BAYH,MAAO,eACR,CAvBS,GAyBY6C,CAAO,CAAChG,CAAD,CAzBnB,uBAyBHsD,CAzBG,MAyBIpB,CAzBJ,MA2BV,GAAIhC,iBAAiB,CAACgC,CAAD,CAArB,CAEE,WADAU,GAAQ,CAAC0B,CAAD,CAAIpC,CAAI,CAACW,KAAT,CACR,CAGF,GAAItC,oBAAoB,CAAC2B,CAAD,CAAxB,CAAgC,OAQ9B,WAPA0C,EAAW,CAAC,CACVN,CAAC,CAADA,CADU,CAEV7D,KAAK,kBACF6C,CADE,WACFA,CADE,QACFA,CAAK,CAAE7C,KAAP,CAAa6B,MAAb,CACC,SAAC4C,CAAD,QAAQ,CAAC3E,oBAAoB,CAAC2E,CAAD,CAA7B,CADD,CADE,gBAGa,EALR,CAAD,CAQZ,CAEGhD,CA3CM,EA4CRwC,CAAQ,CAACJ,CAAD,CAAIpC,CAAJ,CAEX,CACF,CAqB2B,CAQ1BgE,MAAM,CA3BO,QAATA,OAAS,EAAY,CACzBzG,CAAO,IACR,CAiB2B,CAS1B0G,GAAG,CAxBO,QAANA,IAAM,EAAY,CACtB1G,CAAO,IACR,CAa2B,CAU1B2G,SAAS,CArBmB,QAAxBA,UAAwB,CAACb,CAAD,CAAIjB,CAAJ,CAAgB,CACxCzE,CADwC,GAIxCP,CAJwC,CAK1C+E,CAAW,CAACC,CAAD,CAAIzC,CAAK,CAACA,CAAK,CAACsB,MAAN,CAAe,CAAhB,CAAT,CAL+B,CAO1CiC,EAAU,CAACd,CAAD,CAPgC,CAS7C,CAE2B,CAAD,CAjZ3B,CAydAxF,eAAe,CAAC,CACduH,QAAQ,CAAEtG,CADI,CAEduG,sBAAsB,CAAE,CAAC5F,CAAD,CAAcC,CAAd,CAFV,CAGd4F,OAAO,CAAE,kBAAM,CACb9G,CAAO,IACR,CALa,CAAD,CAzdf,CAieAlB,KAAK,CAACC,SAAN,CAAgB,UAAM,CAChBoC,CADgB,EAElBnB,CAAO,IAEV,CAJD,CAIG,CAACmB,CAAD,CAJH,CAjeA,CAueArC,KAAK,CAACC,SAAN,CAAgB,UAAM,CACpB,GAAMwF,EAAqB,CAAGR,CAAsB,EAApD,CACA7D,CAAc,CAACqE,CAAD,IACf,CAHD,CAGG,CAACrE,CAAD,CAHH,CAveA,CA4eApB,KAAK,CAACC,SAAN,CAAgB,UAAM,CACS,CAAzB,CAAAuE,CAAe,CAACI,MAAhB,EAA8BlD,CADd,EAElBf,aAAa,CAACc,CAAD,CAAmBU,CAAnB,CAEhB,CAJD,CAIG,CAACV,CAAD,CAJH,CA5eA,CA6hBA,MANAxB,UAAS,CAAC,UAAM,CACVgD,CADU,EAEZ9B,CAAS,CAAC8B,CAAD,CAEZ,CAJQ,CAIN,CAACA,CAAD,CAJM,CAMT,CAAO,CACLzB,MAAM,CAANA,CADK,CAEL4B,SAAS,CAATA,CAFK,CAGL3B,gBAAgB,CAAhBA,CAHK,CAILiD,YAAY,CAAZA,CAJK,CAKLtD,cAAc,CAAdA,CALK,CAML6G,cAAc,CArIO,QAAjBA,eAAiB,GAGwB,IAF7C/C,EAE6C,GAF7CA,KAE6C,CAD7CvB,CAC6C,GAD7CA,IAC6C,CAC7C,GAAIhC,iBAAiB,CAACgC,CAAD,CAArB,CACE,MAAO,CACLuE,OAAO,CAAE,iBAACnC,CAAD,CAA6B,CACpC1B,EAAQ,CAAC0B,CAAD,CAAIpC,CAAI,CAACW,KAAT,CACT,CAHI,CAIL6D,YAAY,CAAE,uBAAM,CAClB/G,CAAc,CAAC8D,CAAD,IACf,CANI,CAOLkD,MAAM,GAPD,CAQLC,OAAO,CAAEnD,CAAK,GAAKzD,CARd,CASL6G,GAAG,CAAE,mBATA,CAAP,CAYF,GAAItG,oBAAoB,CAAC2B,CAAD,CAAxB,CAAgC,CAC9B,GAAM4E,EAAQ,CAAG,UAAc,oCACT7D,CADS,MAC7B,2BAAkC,IAAvBK,EAAuB,SAChC,GAAIpD,iBAAiB,CAACoD,CAAD,CAArB,CACE,MAEF,GAAIA,CAAK,CAACuD,GAAN,GAAc3E,CAAI,CAAC6E,QAAvB,CAAiC,OAC/B,wBACGzD,CADH,WACGA,CADH,QACGA,CAAK,CAAE7C,KAAP,CAAa6B,MAAb,CACC,SAAC4C,CAAD,QAAQ,CAAC3E,oBAAoB,CAAC2E,CAAD,CAA7B,CADD,CADH,gBAGkB,EAEnB,CACF,CAZ4B,+BAa7B,MAAO,EACR,CAdD,CAeA,MAAO,CACLuB,OAAO,CAAE,iBAACnC,CAAD,CAA6B,CACpCM,CAAW,CAAC,CAAEN,CAAC,CAADA,CAAF,CAAK7D,KAAK,CAAEqG,CAAQ,EAApB,CAAD,CACZ,CAHI,CAILJ,YAAY,CAAE,uBAAM,CAClB/G,CAAc,CAAC8D,CAAD,IACf,CANI,CAOLkD,MAAM,GAPD,CAQLC,OAAO,CAAEnD,CAAK,GAAKzD,CARd,CASL6G,GAAG,CAAE,sBATA,CAWR,CACD,GAAMA,EAAG,CAAG/F,CAAU,CAACoB,CAAD,CAAtB,CACA,MAAO,CACLuE,OAAO,CAAE,iBAACnC,CAAD,CAA6B,CACpCI,CAAQ,CAACJ,CAAD,CAAIpC,CAAJ,CACT,CAHI,CAILwE,YAAY,CAAE,uBAAM,CAClB/G,CAAc,CAAC8D,CAAD,IACf,CANI,CAOLkD,MAAM,GAAU9E,CAAK,CAACW,IAAN,CAAW,SAACN,CAAD,QAAUpB,EAAU,CAACoB,CAAD,CAAV,GAAqB2E,CAA/B,CAAX,CAPX,CAQLD,OAAO,CAAEnD,CAAK,GAAKzD,CARd,CASL6G,GAAG,CAAHA,CATK,CAWR,CAsEM,CAOLG,gBAAgB,CAlDO,QAAnBA,iBAAmB,CAAC1C,CAAD,CAAiD,CACnE1D,CADmE,GAElE,CAACe,CAFiE,EAGpEC,CAAY,IAHwD,CAK/C,UAAnB,QAAON,EAL2D,EAMpEA,CAAO,CAACgD,CAAD,CAN6D,CASzE,CAkCM,CAQL2C,eAAe,CAxCO,QAAlBA,gBAAkB,CAAC3C,CAAD,CAAiD,CACvE,GAAIvE,CAAJ,CAAY,OAEV,sBADA2B,CAAQ,CAACwF,OACT,qBADA,EAAkBC,KAAlB,EACA,CACD,CAEGxF,CANmE,EAOrEC,CAAY,IAPyD,CAUjD,UAAlB,QAAOL,EAV4D,EAWrEA,CAAM,CAAC+C,CAAD,CAET,CAmBM,CASL8C,oBAAoB,CA1BO,QAAvBA,qBAAuB,EAAY,CACvC,GAAIrH,CAAJ,CACEN,CAAO,IADT,CAEEmC,CAAY,IAFd,KAGO,OACLnC,CAAO,IADF,CAELmC,CAAY,IAFP,WAGLF,CAAQ,CAACwF,OAHJ,qBAGL,EAAkBC,KAAlB,EACD,CACF,CAQM,CAULE,gBAAgB,CAnQO,QAAnBA,iBAAmB,EAAY,CAGnC,GAFCzG,CAAD,EAAanB,CAAO,CAAC,CAACM,CAAF,CAEpB,CAAIT,CAAJ,CAAc,iBACZoC,CAAQ,CAACwF,OADG,qBACZ,EAAkBC,KAAlB,EADY,CAEX1F,CAAD,EAAuB/B,CAAS,CAAC,EAAD,CACjC,CACF,CAkPM,CAWLgC,QAAQ,CAARA,CAXK,CAYLgE,WAAW,CAAXA,EAZK,CAaL4B,iBAAiB,CA5QO,QAApBA,kBAAoB,CAAChD,CAAD,CAAkD,CACrE1D,CAAD,EAAe,CAACtB,CAAD,EAA4B,CAAf,CAAAuC,CAAK,CAACsB,MADoC,EAExEzD,CAAS,CAAC4E,CAAC,CAACiD,MAAF,CAAS1F,KAAV,CAEZ,CA2PM,CAcLhC,WAAW,CAAXA,CAdK,CAeLuF,UAAU,CAAVA,EAfK,CAgBLoC,oBAAoB,CAlPO,QAAvBA,qBAAuB,CAACtF,CAAD,QAAgB,UAACoC,CAAD,QAC3CD,EAAW,CAACC,CAAD,CAAIpC,CAAJ,CADgC,CAAhB,CAkOtB,CAiBLkB,QAAQ,CAARA,CAjBK,CAkBLG,QAAQ,CAARA,CAlBK,CAoBR"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import setYear from"date-fns/setYear";export var leapYear=2020;export var dateComparer=function(c,a){var b,d;return(null!==(b=null===c||void 0===c?void 0:c.getTime())&&void 0!==b?b:0)-(null!==(d=null===a||void 0===a?void 0:a.getTime())&&void 0!==d?d:0)};export var getStartAndEndDate=function(a,b){return[a,b].sort(dateComparer)};export var minDateDefault=setYear(new Date(1970,0,1,0,0,0,0),1);export var maxDateDefault=new Date(9999,11,31,23,59,59);export*from"./isInMinMaxDade";export*from"./isDateRange";export*from"./isOnlyOneDateInRange";export*from"./getCentury";export*from"./startOfCentury";export*from"./endOfCentury";export*from"./isEqualDate";
|
|
1
|
+
import setYear from"date-fns/setYear";export var leapYear=2020;export var dateComparer=function(c,a){var b,d;return(null!==(b=null===c||void 0===c?void 0:c.getTime())&&void 0!==b?b:0)-(null!==(d=null===a||void 0===a?void 0:a.getTime())&&void 0!==d?d:0)};export var getStartAndEndDate=function(a,b){return[a,b].sort(dateComparer)};export var minDateDefault=setYear(new Date(1970,0,1,0,0,0,0),1);export var maxDateDefault=new Date(9999,11,31,23,59,59);export*from"./isInMinMaxDade";export*from"./isDateRange";export*from"./isOnlyOneDateInRange";export*from"./getCentury";export*from"./startOfCentury";export*from"./endOfCentury";export*from"./isEqualDate";export*from"./isDisableDate";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["setYear","leapYear","dateComparer","a","b","getTime","getStartAndEndDate","date1","date2","sort","minDateDefault","Date","maxDateDefault"],"sources":["../../../../../src/utils/date/index.ts"],"sourcesContent":["import setYear from 'date-fns/setYear';\n\nexport const leapYear = 2020;\n\nexport const dateComparer = (a?: Date, b?: Date): number =>\n (a?.getTime() ?? 0) - (b?.getTime() ?? 0);\n\nexport const getStartAndEndDate = (date1: Date, date2: Date): Date[] =>\n [date1, date2].sort(dateComparer);\n\nexport const minDateDefault = setYear(new Date(1970, 0, 1, 0, 0, 0, 0), 1);\nexport const maxDateDefault = new Date(9999, 11, 31, 23, 59, 59);\n\nexport * from './isInMinMaxDade';\nexport * from './isDateRange';\nexport * from './isOnlyOneDateInRange';\nexport * from './getCentury';\nexport * from './startOfCentury';\nexport * from './endOfCentury';\nexport * from './isEqualDate';\n"],"mappings":"AAAA,MAAOA,QAAP,KAAoB,kBAApB,CAEA,MAAO,IAAMC,SAAQ,CAAG,IAAjB,CAEP,MAAO,IAAMC,aAAY,CAAG,SAACC,CAAD,CAAWC,CAAX,gBAC1B,kBAACD,CAAD,WAACA,CAAD,QAACA,CAAC,CAAEE,OAAH,EAAD,gBAAiB,CAAjB,oBAAuBD,CAAvB,WAAuBA,CAAvB,QAAuBA,CAAC,CAAEC,OAAH,EAAvB,gBAAuC,CAAvC,CAD0B,CAArB,CAGP,MAAO,IAAMC,mBAAkB,CAAG,SAACC,CAAD,CAAcC,CAAd,QAChC,CAACD,CAAD,CAAQC,CAAR,EAAeC,IAAf,CAAoBP,YAApB,CADgC,CAA3B,CAGP,MAAO,IAAMQ,eAAc,CAAGV,OAAO,CAAC,GAAIW,KAAJ,CAAS,IAAT,CAAe,CAAf,CAAkB,CAAlB,CAAqB,CAArB,CAAwB,CAAxB,CAA2B,CAA3B,CAA8B,CAA9B,CAAD,CAAmC,CAAnC,CAA9B,CACP,MAAO,IAAMC,eAAc,CAAG,GAAID,KAAJ,CAAS,IAAT,CAAe,EAAf,CAAmB,EAAnB,CAAuB,EAAvB,CAA2B,EAA3B,CAA+B,EAA/B,CAAvB,CAEP,8BACA,2BACA,oCACA,0BACA,8BACA,4BACA"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["setYear","leapYear","dateComparer","a","b","getTime","getStartAndEndDate","date1","date2","sort","minDateDefault","Date","maxDateDefault"],"sources":["../../../../../src/utils/date/index.ts"],"sourcesContent":["import setYear from 'date-fns/setYear';\n\nexport const leapYear = 2020;\n\nexport const dateComparer = (a?: Date, b?: Date): number =>\n (a?.getTime() ?? 0) - (b?.getTime() ?? 0);\n\nexport const getStartAndEndDate = (date1: Date, date2: Date): Date[] =>\n [date1, date2].sort(dateComparer);\n\nexport const minDateDefault = setYear(new Date(1970, 0, 1, 0, 0, 0, 0), 1);\nexport const maxDateDefault = new Date(9999, 11, 31, 23, 59, 59);\n\nexport * from './isInMinMaxDade';\nexport * from './isDateRange';\nexport * from './isOnlyOneDateInRange';\nexport * from './getCentury';\nexport * from './startOfCentury';\nexport * from './endOfCentury';\nexport * from './isEqualDate';\nexport * from './isDisableDate';\n"],"mappings":"AAAA,MAAOA,QAAP,KAAoB,kBAApB,CAEA,MAAO,IAAMC,SAAQ,CAAG,IAAjB,CAEP,MAAO,IAAMC,aAAY,CAAG,SAACC,CAAD,CAAWC,CAAX,gBAC1B,kBAACD,CAAD,WAACA,CAAD,QAACA,CAAC,CAAEE,OAAH,EAAD,gBAAiB,CAAjB,oBAAuBD,CAAvB,WAAuBA,CAAvB,QAAuBA,CAAC,CAAEC,OAAH,EAAvB,gBAAuC,CAAvC,CAD0B,CAArB,CAGP,MAAO,IAAMC,mBAAkB,CAAG,SAACC,CAAD,CAAcC,CAAd,QAChC,CAACD,CAAD,CAAQC,CAAR,EAAeC,IAAf,CAAoBP,YAApB,CADgC,CAA3B,CAGP,MAAO,IAAMQ,eAAc,CAAGV,OAAO,CAAC,GAAIW,KAAJ,CAAS,IAAT,CAAe,CAAf,CAAkB,CAAlB,CAAqB,CAArB,CAAwB,CAAxB,CAA2B,CAA3B,CAA8B,CAA9B,CAAD,CAAmC,CAAnC,CAA9B,CACP,MAAO,IAAMC,eAAc,CAAG,GAAID,KAAJ,CAAS,IAAT,CAAe,EAAf,CAAmB,EAAnB,CAAuB,EAAvB,CAA2B,EAA3B,CAA+B,EAA/B,CAAvB,CAEP,8BACA,2BACA,oCACA,0BACA,8BACA,4BACA,2BACA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DateTimePropDisableDates, DateTimePropType } from "../../components/DateTime";
|
|
2
|
+
export declare const isEqualDates: (firstDate: Date, secondDate: Date, mode: DateTimePropType | undefined, timeType?: 'hours' | 'minutes' | 'seconds' | undefined) => boolean;
|
|
3
|
+
export declare const isDisableDate: <TYPE extends "time" | "date" | "month" | "year" | "date-time">(params: {
|
|
4
|
+
date: Date;
|
|
5
|
+
disableDates: DateTimePropDisableDates | undefined;
|
|
6
|
+
mode?: "time" | "date" | "month" | "year" | "date-time" | undefined;
|
|
7
|
+
timeType?: (TYPE extends "time" ? "hours" | "minutes" | "seconds" : undefined) | undefined;
|
|
8
|
+
}) => boolean;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var clearTime=function(a,b,c){var d=null!==c&&void 0!==c?c:{},e=d.hours,f=d.minutes,g=d.seconds,h=d.miliseconds,i=new Date(a);return e&&i.setHours("start"===b?0:23),f&&i.setMinutes("start"===b?0:59),g&&i.setSeconds("start"===b?0:59),h&&i.setMilliseconds("start"===b?0:999),i},isInRangeWithoutTime=function(a,b,c){var d=b.getTime(),e=c.getTime(),f=[clearTime(a,"start",{hours:!0,minutes:!0,seconds:!0,miliseconds:!0}).getTime(),clearTime(a,"end",{hours:!0,minutes:!0,seconds:!0,miliseconds:!0}).getTime()];return d<=f[0]&&f[0]<=e&&d<=f[1]&&f[1]<=e};export var isEqualDates=function(a,b,c){var d=3<arguments.length&&arguments[3]!==void 0?arguments[3]:"hours";if("time"===c)return"seconds"===d&&clearTime(a,"start",{miliseconds:!0}).getTime()===clearTime(b,"start",{miliseconds:!0}).getTime();var e=[a.getFullYear(),b.getFullYear()],f=[a.getMonth(),b.getMonth()],g=[a.getDate(),b.getDate()];return"year"===c?e[0]===e[1]:"month"===c?f[0]===f[1]&&e[0]===e[1]:g[0]===g[1]&&f[0]===f[1]&&e[0]===e[1]};var isInRange=function(a,b,c,d){var e=4<arguments.length&&arguments[4]!==void 0?arguments[4]:"hours";if("year"===d||"month"===d||"date"===d)return isInRangeWithoutTime(a,b,c);var f=b.getTime(),g=c.getTime(),h=f<=a.getTime()&&a.getTime()<=g;if(isEqualDates(a,c,"date",e)){var i=[clearTime(a,"start",{minutes:"hours"===e,seconds:"hours"===e||"minutes"===e,miliseconds:!1}).getTime(),clearTime(a,"end",{minutes:"hours"===e,seconds:"hours"===e||"minutes"===e,miliseconds:!1}).getTime()];return f<=i[0]&&i[0]<=g&&f<=i[1]&&i[1]<=g}return h};export var isDisableDate=function(a){var b=a.disableDates,c=a.mode,d=a.date,e=a.timeType;return!!b&&!!b.find(function(a){return a instanceof Date?isEqualDates(a,d,c,e):isInRange(d,a[0],a[1],c,e)})};
|
|
2
|
+
//# sourceMappingURL=isDisableDate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isDisableDate.js","names":["clearTime","date","type","params","hours","minutes","seconds","miliseconds","copyDate","Date","setHours","setMinutes","setSeconds","setMilliseconds","isInRangeWithoutTime","min","max","minTime","getTime","maxTime","dateTime","isEqualDates","firstDate","secondDate","mode","timeType","years","getFullYear","months","getMonth","dates","getDate","isInRange","minDate","maxDate","compare","dateTimes","isDisableDate","disableDates","find","compareDate"],"sources":["../../../../../src/utils/date/isDisableDate.ts"],"sourcesContent":["import {\n DateTimePropDisableDates,\n DateTimePropType,\n} from '##/components/DateTime';\n\nconst clearTime = (\n date: Date,\n type: 'start' | 'end',\n params?: {\n hours?: boolean;\n minutes?: boolean;\n seconds?: boolean;\n miliseconds?: boolean;\n },\n) => {\n const { hours, minutes, seconds, miliseconds } = params ?? {};\n const copyDate = new Date(date);\n hours && copyDate.setHours(type === 'start' ? 0 : 23);\n minutes && copyDate.setMinutes(type === 'start' ? 0 : 59);\n seconds && copyDate.setSeconds(type === 'start' ? 0 : 59);\n miliseconds && copyDate.setMilliseconds(type === 'start' ? 0 : 999);\n return copyDate;\n};\n\nconst isInRangeWithoutTime = (date: Date, min: Date, max: Date) => {\n const minTime = min.getTime();\n const maxTime = max.getTime();\n const dateTime = [\n clearTime(date, 'start', {\n hours: true,\n minutes: true,\n seconds: true,\n miliseconds: true,\n }).getTime(),\n clearTime(date, 'end', {\n hours: true,\n minutes: true,\n seconds: true,\n miliseconds: true,\n }).getTime(),\n ];\n return (\n minTime <= dateTime[0] &&\n dateTime[0] <= maxTime &&\n minTime <= dateTime[1] &&\n dateTime[1] <= maxTime\n );\n};\n\nexport const isEqualDates = (\n firstDate: Date,\n secondDate: Date,\n mode: DateTimePropType | undefined,\n timeType: 'hours' | 'minutes' | 'seconds' | undefined = 'hours',\n) => {\n if (mode === 'time') {\n if (timeType === 'seconds') {\n return (\n clearTime(firstDate, 'start', { miliseconds: true }).getTime() ===\n clearTime(secondDate, 'start', { miliseconds: true }).getTime()\n );\n }\n return false;\n }\n const years = [firstDate.getFullYear(), secondDate.getFullYear()];\n const months = [firstDate.getMonth(), secondDate.getMonth()];\n const dates = [firstDate.getDate(), secondDate.getDate()];\n\n if (mode === 'year') {\n return years[0] === years[1];\n }\n if (mode === 'month') {\n return months[0] === months[1] && years[0] === years[1];\n }\n\n return (\n dates[0] === dates[1] && months[0] === months[1] && years[0] === years[1]\n );\n};\n\nconst isInRange = (\n date: Date,\n minDate: Date,\n maxDate: Date,\n mode: DateTimePropType | undefined,\n timeType: 'hours' | 'minutes' | 'seconds' | undefined = 'hours',\n) => {\n if (mode === 'year' || mode === 'month' || mode === 'date') {\n return isInRangeWithoutTime(date, minDate, maxDate);\n }\n const minTime = minDate.getTime();\n const maxTime = maxDate.getTime();\n const compare = minTime <= date.getTime() && date.getTime() <= maxTime;\n if (isEqualDates(date, maxDate, 'date', timeType)) {\n const dateTimes = [\n clearTime(date, 'start', {\n minutes: timeType === 'hours',\n seconds: timeType === 'hours' || timeType === 'minutes',\n miliseconds: false,\n }).getTime(),\n clearTime(date, 'end', {\n minutes: timeType === 'hours',\n seconds: timeType === 'hours' || timeType === 'minutes',\n miliseconds: false,\n }).getTime(),\n ];\n return (\n minTime <= dateTimes[0] &&\n dateTimes[0] <= maxTime &&\n minTime <= dateTimes[1] &&\n dateTimes[1] <= maxTime\n );\n }\n return compare;\n};\n\nexport const isDisableDate = <TYPE extends DateTimePropType>(params: {\n date: Date;\n disableDates: DateTimePropDisableDates | undefined;\n mode?: DateTimePropType;\n timeType?: TYPE extends 'time' ? 'hours' | 'minutes' | 'seconds' : undefined;\n}) => {\n const { disableDates, mode, date, timeType } = params;\n if (!disableDates) {\n return false;\n }\n return !!disableDates.find((compareDate) =>\n compareDate instanceof Date\n ? isEqualDates(compareDate, date, mode, timeType)\n : isInRange(date, compareDate[0], compareDate[1], mode, timeType),\n );\n};\n"],"mappings":"GAKMA,UAAS,CAAG,SAChBC,CADgB,CAEhBC,CAFgB,CAGhBC,CAHgB,CASb,cAC8CA,CAD9C,WAC8CA,CAD9C,CAC8CA,CAD9C,CACwD,EADxD,CACKC,CADL,GACKA,KADL,CACYC,CADZ,GACYA,OADZ,CACqBC,CADrB,GACqBA,OADrB,CAC8BC,CAD9B,GAC8BA,WAD9B,CAEGC,CAAQ,CAAG,GAAIC,KAAJ,CAASR,CAAT,CAFd,CAOH,MAJAG,EAAK,EAAII,CAAQ,CAACE,QAAT,CAA2B,OAAT,GAAAR,CAAI,CAAe,CAAf,CAAmB,EAAzC,CAIT,CAHAG,CAAO,EAAIG,CAAQ,CAACG,UAAT,CAA6B,OAAT,GAAAT,CAAI,CAAe,CAAf,CAAmB,EAA3C,CAGX,CAFAI,CAAO,EAAIE,CAAQ,CAACI,UAAT,CAA6B,OAAT,GAAAV,CAAI,CAAe,CAAf,CAAmB,EAA3C,CAEX,CADAK,CAAW,EAAIC,CAAQ,CAACK,eAAT,CAAkC,OAAT,GAAAX,CAAI,CAAe,CAAf,CAAmB,GAAhD,CACf,CAAOM,CACR,C,CAEKM,oBAAoB,CAAG,SAACb,CAAD,CAAac,CAAb,CAAwBC,CAAxB,CAAsC,IAC3DC,EAAO,CAAGF,CAAG,CAACG,OAAJ,EADiD,CAE3DC,CAAO,CAAGH,CAAG,CAACE,OAAJ,EAFiD,CAG3DE,CAAQ,CAAG,CACfpB,SAAS,CAACC,CAAD,CAAO,OAAP,CAAgB,CACvBG,KAAK,GADkB,CAEvBC,OAAO,GAFgB,CAGvBC,OAAO,GAHgB,CAIvBC,WAAW,GAJY,CAAhB,CAAT,CAKGW,OALH,EADe,CAOflB,SAAS,CAACC,CAAD,CAAO,KAAP,CAAc,CACrBG,KAAK,GADgB,CAErBC,OAAO,GAFc,CAGrBC,OAAO,GAHc,CAIrBC,WAAW,GAJU,CAAd,CAAT,CAKGW,OALH,EAPe,CAHgD,CAiBjE,MACED,EAAO,EAAIG,CAAQ,CAAC,CAAD,CAAnB,EACAA,CAAQ,CAAC,CAAD,CAAR,EAAeD,CADf,EAEAF,CAAO,EAAIG,CAAQ,CAAC,CAAD,CAFnB,EAGAA,CAAQ,CAAC,CAAD,CAAR,EAAeD,CAElB,C,CAED,MAAO,IAAME,aAAY,CAAG,SAC1BC,CAD0B,CAE1BC,CAF0B,CAG1BC,CAH0B,CAKvB,IADHC,EACG,wDADqD,OACrD,CACH,GAAa,MAAT,GAAAD,CAAJ,OACmB,SAAb,GAAAC,CADN,EAGMzB,SAAS,CAACsB,CAAD,CAAY,OAAZ,CAAqB,CAAEf,WAAW,GAAb,CAArB,CAAT,CAAqDW,OAArD,KACAlB,SAAS,CAACuB,CAAD,CAAa,OAAb,CAAsB,CAAEhB,WAAW,GAAb,CAAtB,CAAT,CAAsDW,OAAtD,EAJN,CADG,GAUGQ,EAAK,CAAG,CAACJ,CAAS,CAACK,WAAV,EAAD,CAA0BJ,CAAU,CAACI,WAAX,EAA1B,CAVX,CAWGC,CAAM,CAAG,CAACN,CAAS,CAACO,QAAV,EAAD,CAAuBN,CAAU,CAACM,QAAX,EAAvB,CAXZ,CAYGC,CAAK,CAAG,CAACR,CAAS,CAACS,OAAV,EAAD,CAAsBR,CAAU,CAACQ,OAAX,EAAtB,CAZX,OAcU,MAAT,GAAAP,CAdD,CAeME,CAAK,CAAC,CAAD,CAAL,GAAaA,CAAK,CAAC,CAAD,CAfxB,CAiBU,OAAT,GAAAF,CAjBD,CAkBMI,CAAM,CAAC,CAAD,CAAN,GAAcA,CAAM,CAAC,CAAD,CAApB,EAA2BF,CAAK,CAAC,CAAD,CAAL,GAAaA,CAAK,CAAC,CAAD,CAlBnD,CAsBDI,CAAK,CAAC,CAAD,CAAL,GAAaA,CAAK,CAAC,CAAD,CAAlB,EAAyBF,CAAM,CAAC,CAAD,CAAN,GAAcA,CAAM,CAAC,CAAD,CAA7C,EAAoDF,CAAK,CAAC,CAAD,CAAL,GAAaA,CAAK,CAAC,CAAD,CAEzE,CA7BM,CA+BP,GAAMM,UAAS,CAAG,SAChB/B,CADgB,CAEhBgC,CAFgB,CAGhBC,CAHgB,CAIhBV,CAJgB,CAMb,IADHC,EACG,wDADqD,OACrD,CACH,GAAa,MAAT,GAAAD,CAAI,EAAwB,OAAT,GAAAA,CAAnB,EAAgD,MAAT,GAAAA,CAA3C,CACE,MAAOV,qBAAoB,CAACb,CAAD,CAAOgC,CAAP,CAAgBC,CAAhB,CAA3B,CAFC,GAIGjB,EAAO,CAAGgB,CAAO,CAACf,OAAR,EAJb,CAKGC,CAAO,CAAGe,CAAO,CAAChB,OAAR,EALb,CAMGiB,CAAO,CAAGlB,CAAO,EAAIhB,CAAI,CAACiB,OAAL,EAAX,EAA6BjB,CAAI,CAACiB,OAAL,IAAkBC,CAN5D,CAOH,GAAIE,YAAY,CAACpB,CAAD,CAAOiC,CAAP,CAAgB,MAAhB,CAAwBT,CAAxB,CAAhB,CAAmD,CACjD,GAAMW,EAAS,CAAG,CAChBpC,SAAS,CAACC,CAAD,CAAO,OAAP,CAAgB,CACvBI,OAAO,CAAe,OAAb,GAAAoB,CADc,CAEvBnB,OAAO,CAAe,OAAb,GAAAmB,CAAQ,EAA6B,SAAb,GAAAA,CAFV,CAGvBlB,WAAW,GAHY,CAAhB,CAAT,CAIGW,OAJH,EADgB,CAMhBlB,SAAS,CAACC,CAAD,CAAO,KAAP,CAAc,CACrBI,OAAO,CAAe,OAAb,GAAAoB,CADY,CAErBnB,OAAO,CAAe,OAAb,GAAAmB,CAAQ,EAA6B,SAAb,GAAAA,CAFZ,CAGrBlB,WAAW,GAHU,CAAd,CAAT,CAIGW,OAJH,EANgB,CAAlB,CAYA,MACED,EAAO,EAAImB,CAAS,CAAC,CAAD,CAApB,EACAA,CAAS,CAAC,CAAD,CAAT,EAAgBjB,CADhB,EAEAF,CAAO,EAAImB,CAAS,CAAC,CAAD,CAFpB,EAGAA,CAAS,CAAC,CAAD,CAAT,EAAgBjB,CAEnB,CACD,MAAOgB,EACR,CAlCD,CAoCA,MAAO,IAAME,cAAa,CAAG,SAAgClC,CAAhC,CAKvB,CACJ,GAAQmC,EAAR,CAA+CnC,CAA/C,CAAQmC,YAAR,CAAsBd,CAAtB,CAA+CrB,CAA/C,CAAsBqB,IAAtB,CAA4BvB,CAA5B,CAA+CE,CAA/C,CAA4BF,IAA5B,CAAkCwB,CAAlC,CAA+CtB,CAA/C,CAAkCsB,QAAlC,CADI,QAECa,CAFD,EAKG,CAAC,CAACA,CAAY,CAACC,IAAb,CAAkB,SAACC,CAAD,QACzBA,EAAW,WAAY/B,KAAvB,CACIY,YAAY,CAACmB,CAAD,CAAcvC,CAAd,CAAoBuB,CAApB,CAA0BC,CAA1B,CADhB,CAEIO,SAAS,CAAC/B,CAAD,CAAOuC,CAAW,CAAC,CAAD,CAAlB,CAAuBA,CAAW,CAAC,CAAD,CAAlC,CAAuChB,CAAvC,CAA6CC,CAA7C,CAHY,CAAlB,CAKV,CAfM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const
|
|
1
|
+
export declare const isInMinMaxDate: (date: Date, minDate?: Date, maxDate?: Date, startOf?: ((date: Date) => Date) | undefined, endOf?: ((date: Date) => Date) | undefined) => boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isWithinInterval}from"date-fns";var isMinMax=function(a,b,c){var d=null===b||void 0===b?void 0:b.getTime(),e=null===c||void 0===c?void 0:c.getTime();if(b&&c&&d&&e)return!!(d<e)&&isWithinInterval(a,{start:b,end:c});var f=a.getTime();return d&&!e?d<=f:d||!e||e>=f};export var
|
|
1
|
+
import{isWithinInterval}from"date-fns";var isMinMax=function(a,b,c){var d=null===b||void 0===b?void 0:b.getTime(),e=null===c||void 0===c?void 0:c.getTime();if(b&&c&&d&&e)return!!(d<e)&&isWithinInterval(a,{start:b,end:c});var f=a.getTime();return d&&!e?d<=f:d||!e||e>=f};export var isInMinMaxDate=function(a,b,c,d,e){return!(b||c)||isMinMax(a,d&&b&&d(b)||b,e&&c&&e(c)||c)};
|
|
2
2
|
//# sourceMappingURL=isInMinMaxDade.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isInMinMaxDade.js","names":["isWithinInterval","isMinMax","date","minDate","maxDate","minDateTime","getTime","maxDateTime","start","end","dateTime","
|
|
1
|
+
{"version":3,"file":"isInMinMaxDade.js","names":["isWithinInterval","isMinMax","date","minDate","maxDate","minDateTime","getTime","maxDateTime","start","end","dateTime","isInMinMaxDate","startOf","endOf"],"sources":["../../../../../src/utils/date/isInMinMaxDade.ts"],"sourcesContent":["import { isWithinInterval } from 'date-fns';\n\nconst isMinMax = (date: Date, minDate?: Date, maxDate?: Date): boolean => {\n const minDateTime = minDate?.getTime();\n const maxDateTime = maxDate?.getTime();\n\n if (minDate && maxDate && minDateTime && maxDateTime) {\n return minDateTime < maxDateTime\n ? isWithinInterval(date, { start: minDate, end: maxDate })\n : false;\n }\n\n const dateTime = date.getTime();\n\n if (minDateTime && !maxDateTime) {\n return minDateTime <= dateTime;\n }\n\n if (!minDateTime && maxDateTime) {\n return maxDateTime >= dateTime;\n }\n\n return true;\n};\n\nexport const isInMinMaxDate = (\n date: Date,\n minDate?: Date,\n maxDate?: Date,\n startOf?: (date: Date) => Date,\n endOf?: (date: Date) => Date,\n): boolean => {\n if (!minDate && !maxDate) {\n return true;\n }\n return isMinMax(\n date,\n (startOf && minDate && startOf(minDate)) || minDate,\n (endOf && maxDate && endOf(maxDate)) || maxDate,\n );\n};\n"],"mappings":"AAAA,OAASA,gBAAT,KAAiC,UAAjC,CAEA,GAAMC,SAAQ,CAAG,SAACC,CAAD,CAAaC,CAAb,CAA6BC,CAA7B,CAAyD,IAClEC,EAAW,QAAGF,CAAH,WAAGA,CAAH,QAAGA,CAAO,CAAEG,OAAT,EADoD,CAElEC,CAAW,QAAGH,CAAH,WAAGA,CAAH,QAAGA,CAAO,CAAEE,OAAT,EAFoD,CAIxE,GAAIH,CAAO,EAAIC,CAAX,EAAsBC,CAAtB,EAAqCE,CAAzC,CACE,SAAOF,CAAW,CAAGE,CAArB,GACIP,gBAAgB,CAACE,CAAD,CAAO,CAAEM,KAAK,CAAEL,CAAT,CAAkBM,GAAG,CAAEL,CAAvB,CAAP,CADpB,CAKF,GAAMM,EAAQ,CAAGR,CAAI,CAACI,OAAL,EAAjB,CAVwE,MAYpED,EAAW,EAAI,CAACE,CAZoD,CAa/DF,CAAW,EAAIK,CAbgD,CAgBnEL,CAAD,GAAgBE,CAhBoD,EAiB/DA,CAAW,EAAIG,CAIzB,CArBD,CAuBA,MAAO,IAAMC,eAAc,CAAG,SAC5BT,CAD4B,CAE5BC,CAF4B,CAG5BC,CAH4B,CAI5BQ,CAJ4B,CAK5BC,CAL4B,CAMhB,SACPV,CAAD,EAAaC,CADL,GAILH,QAAQ,CACbC,CADa,CAEZU,CAAO,EAAIT,CAAX,EAAsBS,CAAO,CAACT,CAAD,CAA9B,EAA4CA,CAF/B,CAGZU,CAAK,EAAIT,CAAT,EAAoBS,CAAK,CAACT,CAAD,CAA1B,EAAwCA,CAH3B,CAKhB,CAfM"}
|
|
@@ -4,7 +4,18 @@ export declare type Group<ITEM, GROUP> = {
|
|
|
4
4
|
group?: GROUP;
|
|
5
5
|
groupIndex: number;
|
|
6
6
|
};
|
|
7
|
+
export declare type SelectAllItem = {
|
|
8
|
+
checkedCount: number;
|
|
9
|
+
totalCount: number;
|
|
10
|
+
groupKey: string | number;
|
|
11
|
+
__optionSelctAll: true;
|
|
12
|
+
};
|
|
13
|
+
export declare type CountedGroup<ITEM, GROUP> = Omit<Group<ITEM, GROUP>, 'items'> & {
|
|
14
|
+
items: Array<SelectAllItem | ITEM>;
|
|
15
|
+
};
|
|
7
16
|
declare type GetItemGroupKey<ITEM> = (item: ITEM) => string | number | undefined;
|
|
17
|
+
declare type GetItemKey<ITEM> = (item: ITEM) => string | number | undefined;
|
|
18
|
+
declare type GetItemDisabled<ITEM> = (item: ITEM) => boolean | undefined;
|
|
8
19
|
declare type GetGroupKey<GROUP> = (item: GROUP) => string | number | undefined;
|
|
9
20
|
declare type SortGroups<ITEM, GROUP> = (a: Group<ITEM, GROUP>, b: Group<ITEM, GROUP>) => number;
|
|
10
21
|
declare type GetGroupsResult<ITEM, GROUP> = Group<ITEM, GROUP>[];
|
|
@@ -18,4 +29,5 @@ export declare const defaultGroupKey = "no-group";
|
|
|
18
29
|
* @param noGroupKey ключ группы которая создаться если item небудет принадлежать ни к одной из групп
|
|
19
30
|
*/
|
|
20
31
|
export declare function getGroups<ITEM, GROUP>(items: ITEM[], getItemGroupKey: GetItemGroupKey<ITEM> | undefined, groups: GROUP[] | undefined, getGroupKey: GetGroupKey<GROUP> | undefined, sortGroups: SortGroups<ITEM, GROUP> | undefined, noGroupKey?: string): GetGroupsResult<ITEM, GROUP>;
|
|
32
|
+
export declare function getCountedGroups<ITEM, GROUP>(groups: GetGroupsResult<ITEM, GROUP>, values: ITEM[] | undefined | null, selectAll: boolean, getItemKey: GetItemKey<ITEM>, getItemDisabled?: GetItemDisabled<ITEM>): CountedGroup<ITEM, GROUP>[];
|
|
21
33
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}export var defaultGroupKey="no-group";var getItemGroupKeyGuard=function(a,b,c){var d=a(b);return"undefined"==typeof d?c:d};export function getGroups(a,b,c,d,e){var f=5<arguments.length&&void 0!==arguments[5]?arguments[5]:defaultGroupKey;if("function"!=typeof b)return[{items:a,key:f,groupIndex:-1}];var g,h=[],i=_createForOfIteratorHelper(a);try{var j=function _loop(){var a=g.value,e=getItemGroupKeyGuard(b,a,f),i=h.findIndex(function(a){return a.key===e});if(0<=i)h[i].items.push(a);else{var j=d&&c?c.findIndex(function(a){return d(a)===e}):-1,k={key:e,items:[a],groupIndex:j,group:c?c[j]:void 0};h.push(k)}};for(i.s();!(g=i.n()).done;)j()}catch(a){i.e(a)}finally{i.f()}return"function"==typeof e?h.sort(e):c&&d&&h.sort(function(c,a){return c.groupIndex>a.groupIndex?1:c.groupIndex<a.groupIndex?-1:0}),h}
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}export var defaultGroupKey="no-group";var getItemGroupKeyGuard=function(a,b,c){var d=a(b);return"undefined"==typeof d?c:d};export function getGroups(a,b,c,d,e){var f=5<arguments.length&&void 0!==arguments[5]?arguments[5]:defaultGroupKey;if("function"!=typeof b)return[{items:a,key:f,groupIndex:-1}];var g,h=[],i=_createForOfIteratorHelper(a);try{var j=function _loop(){var a=g.value,e=getItemGroupKeyGuard(b,a,f),i=h.findIndex(function(a){return a.key===e});if(0<=i)h[i].items.push(a);else{var j=d&&c?c.findIndex(function(a){return d(a)===e}):-1,k={key:e,items:[a],groupIndex:j,group:c?c[j]:void 0};h.push(k)}};for(i.s();!(g=i.n()).done;)j()}catch(a){i.e(a)}finally{i.f()}return"function"==typeof e?h.sort(e):c&&d&&h.sort(function(c,a){return c.groupIndex>a.groupIndex?1:c.groupIndex<a.groupIndex?-1:0}),h}export function getCountedGroups(a,b,c,d,e){var f=_toConsumableArray(a);return c&&a.forEach(function(a,c){var g=0,h=0;a.items.forEach(function(a){e&&null!==e&&void 0!==e&&e(a)||(g+=1),null!==b&&void 0!==b&&b.find(function(b){return d(a)===d(b)})&&(h+=1)}),f[c].items=[{__optionSelctAll:!0,totalCount:g,groupKey:a.key,checkedCount:h}].concat(_toConsumableArray(f[c].items))}),f}
|
|
2
2
|
//# sourceMappingURL=getGroups.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getGroups.js","names":["defaultGroupKey","getItemGroupKeyGuard","getter","item","noGroupKey","key","getGroups","items","getItemGroupKey","groups","getGroupKey","sortGroups","groupIndex","resultGroups","itemGroupKey","resultGroupIndex","findIndex","group","push","g","resultGroup","sort","a","b"],"sources":["../../../../src/utils/getGroups.ts"],"sourcesContent":["export type Group<ITEM, GROUP> = {\n items: ITEM[];\n key: string | number;\n group?: GROUP;\n groupIndex: number;\n};\ntype GetItemGroupKey<ITEM> = (item: ITEM) => string | number | undefined;\ntype GetGroupKey<GROUP> = (item: GROUP) => string | number | undefined;\ntype SortGroups<ITEM, GROUP> = (\n a: Group<ITEM, GROUP>,\n b: Group<ITEM, GROUP>,\n) => number;\ntype GetGroupsResult<ITEM, GROUP> = Group<ITEM, GROUP>[];\n\nexport const defaultGroupKey = 'no-group';\n\nconst getItemGroupKeyGuard = <ITEM>(\n getter: GetGroupKey<ITEM>,\n item: ITEM,\n noGroupKey: string,\n) => {\n const key = getter(item);\n\n return typeof key === 'undefined' ? noGroupKey : key;\n};\n\n/**\n * @param items список который нужно групировать\n * @param getItemGroupKey признак принадлежности к группе\n * @param groups список групп\n * @param getGroupKey результат функции должен вернуть уникальный ключ группы\n * @param sortGroups сортировка групп\n * @param noGroupKey ключ группы которая создаться если item небудет принадлежать ни к одной из групп\n */\n\nexport function getGroups<ITEM, GROUP>(\n items: ITEM[],\n getItemGroupKey: GetItemGroupKey<ITEM> | undefined,\n groups: GROUP[] | undefined,\n getGroupKey: GetGroupKey<GROUP> | undefined,\n sortGroups: SortGroups<ITEM, GROUP> | undefined,\n noGroupKey = defaultGroupKey,\n): GetGroupsResult<ITEM, GROUP> {\n if (typeof getItemGroupKey !== 'function') {\n return [{ items, key: noGroupKey, groupIndex: -1 }];\n }\n\n const resultGroups: GetGroupsResult<ITEM, GROUP> = [];\n for (const item of items) {\n const itemGroupKey = getItemGroupKeyGuard(\n getItemGroupKey,\n item,\n noGroupKey,\n );\n const resultGroupIndex = resultGroups.findIndex(\n (group) => group.key === itemGroupKey,\n );\n\n if (resultGroupIndex >= 0) {\n resultGroups[resultGroupIndex].items.push(item);\n } else {\n const groupIndex =\n getGroupKey && groups\n ? groups.findIndex((g) => getGroupKey(g) === itemGroupKey)\n : -1;\n\n const resultGroup: Group<ITEM, GROUP> = {\n key: itemGroupKey,\n items: [item],\n groupIndex,\n group: groups ? groups[groupIndex] : undefined,\n };\n\n resultGroups.push(resultGroup);\n }\n }\n\n if (typeof sortGroups === 'function') {\n resultGroups.sort(sortGroups);\n } else if (groups && getGroupKey) {\n resultGroups.sort((a, b) => {\n if (a.groupIndex > b.groupIndex) return 1;\n if (a.groupIndex < b.groupIndex) return -1;\n return 0;\n });\n }\n\n return resultGroups;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"getGroups.js","names":["defaultGroupKey","getItemGroupKeyGuard","getter","item","noGroupKey","key","getGroups","items","getItemGroupKey","groups","getGroupKey","sortGroups","groupIndex","resultGroups","itemGroupKey","resultGroupIndex","findIndex","group","push","g","resultGroup","sort","a","b","getCountedGroups","values","selectAll","getItemKey","getItemDisabled","copyGroups","forEach","index","totalCount","checkedCount","find","el","__optionSelctAll","groupKey"],"sources":["../../../../src/utils/getGroups.ts"],"sourcesContent":["export type Group<ITEM, GROUP> = {\n items: ITEM[];\n key: string | number;\n group?: GROUP;\n groupIndex: number;\n};\n\nexport type SelectAllItem = {\n checkedCount: number;\n totalCount: number;\n groupKey: string | number;\n __optionSelctAll: true;\n};\n\nexport type CountedGroup<ITEM, GROUP> = Omit<Group<ITEM, GROUP>, 'items'> & {\n items: Array<SelectAllItem | ITEM>;\n};\n\ntype GetItemGroupKey<ITEM> = (item: ITEM) => string | number | undefined;\ntype GetItemKey<ITEM> = (item: ITEM) => string | number | undefined;\ntype GetItemDisabled<ITEM> = (item: ITEM) => boolean | undefined;\ntype GetGroupKey<GROUP> = (item: GROUP) => string | number | undefined;\ntype SortGroups<ITEM, GROUP> = (\n a: Group<ITEM, GROUP>,\n b: Group<ITEM, GROUP>,\n) => number;\ntype GetGroupsResult<ITEM, GROUP> = Group<ITEM, GROUP>[];\n\nexport const defaultGroupKey = 'no-group';\n\nconst getItemGroupKeyGuard = <ITEM>(\n getter: GetGroupKey<ITEM>,\n item: ITEM,\n noGroupKey: string,\n) => {\n const key = getter(item);\n\n return typeof key === 'undefined' ? noGroupKey : key;\n};\n\n/**\n * @param items список который нужно групировать\n * @param getItemGroupKey признак принадлежности к группе\n * @param groups список групп\n * @param getGroupKey результат функции должен вернуть уникальный ключ группы\n * @param sortGroups сортировка групп\n * @param noGroupKey ключ группы которая создаться если item небудет принадлежать ни к одной из групп\n */\n\nexport function getGroups<ITEM, GROUP>(\n items: ITEM[],\n getItemGroupKey: GetItemGroupKey<ITEM> | undefined,\n groups: GROUP[] | undefined,\n getGroupKey: GetGroupKey<GROUP> | undefined,\n sortGroups: SortGroups<ITEM, GROUP> | undefined,\n noGroupKey = defaultGroupKey,\n): GetGroupsResult<ITEM, GROUP> {\n if (typeof getItemGroupKey !== 'function') {\n return [{ items, key: noGroupKey, groupIndex: -1 }];\n }\n\n const resultGroups: GetGroupsResult<ITEM, GROUP> = [];\n for (const item of items) {\n const itemGroupKey = getItemGroupKeyGuard(\n getItemGroupKey,\n item,\n noGroupKey,\n );\n const resultGroupIndex = resultGroups.findIndex(\n (group) => group.key === itemGroupKey,\n );\n\n if (resultGroupIndex >= 0) {\n resultGroups[resultGroupIndex].items.push(item);\n } else {\n const groupIndex =\n getGroupKey && groups\n ? groups.findIndex((g) => getGroupKey(g) === itemGroupKey)\n : -1;\n\n const resultGroup: Group<ITEM, GROUP> = {\n key: itemGroupKey,\n items: [item],\n groupIndex,\n group: groups ? groups[groupIndex] : undefined,\n };\n\n resultGroups.push(resultGroup);\n }\n }\n\n if (typeof sortGroups === 'function') {\n resultGroups.sort(sortGroups);\n } else if (groups && getGroupKey) {\n resultGroups.sort((a, b) => {\n if (a.groupIndex > b.groupIndex) return 1;\n if (a.groupIndex < b.groupIndex) return -1;\n return 0;\n });\n }\n\n return resultGroups;\n}\n\nexport function getCountedGroups<ITEM, GROUP>(\n groups: GetGroupsResult<ITEM, GROUP>,\n values: ITEM[] | undefined | null,\n selectAll: boolean,\n getItemKey: GetItemKey<ITEM>,\n getItemDisabled?: GetItemDisabled<ITEM>,\n): CountedGroup<ITEM, GROUP>[] {\n const copyGroups: CountedGroup<ITEM, GROUP>[] = [...groups];\n if (selectAll) {\n groups.forEach((group, index) => {\n let totalCount = 0;\n let checkedCount = 0;\n group.items.forEach((item) => {\n if (!(getItemDisabled && getItemDisabled?.(item))) {\n totalCount += 1;\n }\n if (values?.find((el) => getItemKey(item) === getItemKey(el))) {\n checkedCount += 1;\n }\n });\n copyGroups[index].items = [\n {\n __optionSelctAll: true,\n totalCount,\n groupKey: group.key,\n checkedCount,\n },\n ...copyGroups[index].items,\n ];\n });\n }\n return copyGroups;\n}\n"],"mappings":"8tCA4BA,MAAO,IAAMA,gBAAe,CAAG,UAAxB,CAEP,GAAMC,qBAAoB,CAAG,SAC3BC,CAD2B,CAE3BC,CAF2B,CAG3BC,CAH2B,CAIxB,CACH,GAAMC,EAAG,CAAGH,CAAM,CAACC,CAAD,CAAlB,CAEA,MAAsB,WAAf,QAAOE,EAAP,CAA6BD,CAA7B,CAA0CC,CAClD,CARD,CAmBA,MAAO,SAASC,UAAT,CACLC,CADK,CAELC,CAFK,CAGLC,CAHK,CAILC,CAJK,CAKLC,CALK,CAOyB,IAD9BP,EAC8B,wDADjBJ,eACiB,CAC9B,GAA+B,UAA3B,QAAOQ,EAAX,CACE,MAAO,CAAC,CAAED,KAAK,CAALA,CAAF,CAASF,GAAG,CAAED,CAAd,CAA0BQ,UAAU,CAAE,CAAC,CAAvC,CAAD,CAAP,CAF4B,MAKxBC,CAA0C,CAAG,EALrB,8BAMXN,CANW,gCAMnBJ,EANmB,SAOtBW,CAAY,CAAGb,oBAAoB,CACvCO,CADuC,CAEvCL,CAFuC,CAGvCC,CAHuC,CAPb,CAYtBW,CAAgB,CAAGF,CAAY,CAACG,SAAb,CACvB,SAACC,CAAD,QAAWA,EAAK,CAACZ,GAAN,GAAcS,CAAzB,CADuB,CAZG,CAgB5B,GAAwB,CAApB,EAAAC,CAAJ,CACEF,CAAY,CAACE,CAAD,CAAZ,CAA+BR,KAA/B,CAAqCW,IAArC,CAA0Cf,CAA1C,CADF,KAEO,IACCS,EAAU,CACdF,CAAW,EAAID,CAAf,CACIA,CAAM,CAACO,SAAP,CAAiB,SAACG,CAAD,QAAOT,EAAW,CAACS,CAAD,CAAX,GAAmBL,CAA1B,CAAjB,CADJ,CAEI,CAAC,CAJF,CAMCM,CAA+B,CAAG,CACtCf,GAAG,CAAES,CADiC,CAEtCP,KAAK,CAAE,CAACJ,CAAD,CAF+B,CAGtCS,UAAU,CAAVA,CAHsC,CAItCK,KAAK,CAAER,CAAM,CAAGA,CAAM,CAACG,CAAD,CAAT,OAJyB,CANnC,CAaLC,CAAY,CAACK,IAAb,CAAkBE,CAAlB,CACD,CAhC2B,EAM9B,8BAN8B,+BA6C9B,MAV0B,UAAtB,QAAOT,EAUX,CATEE,CAAY,CAACQ,IAAb,CAAkBV,CAAlB,CASF,CARWF,CAAM,EAAIC,CAQrB,EAPEG,CAAY,CAACQ,IAAb,CAAkB,SAACC,CAAD,CAAIC,CAAJ,CAAU,OACtBD,EAAC,CAACV,UAAF,CAAeW,CAAC,CAACX,UADK,CACc,CADd,CAEtBU,CAAC,CAACV,UAAF,CAAeW,CAAC,CAACX,UAFK,CAEc,CAAC,CAFf,CAGnB,CACR,CAJD,CAOF,CAAOC,CACR,CAED,MAAO,SAASW,iBAAT,CACLf,CADK,CAELgB,CAFK,CAGLC,CAHK,CAILC,CAJK,CAKLC,CALK,CAMwB,CAC7B,GAAMC,EAAuC,oBAAOpB,CAAP,CAA7C,CAwBA,MAvBIiB,EAuBJ,EAtBEjB,CAAM,CAACqB,OAAP,CAAe,SAACb,CAAD,CAAQc,CAAR,CAAkB,IAC3BC,EAAU,CAAG,CADc,CAE3BC,CAAY,CAAG,CAFY,CAG/BhB,CAAK,CAACV,KAAN,CAAYuB,OAAZ,CAAoB,SAAC3B,CAAD,CAAU,CACtByB,CAAe,SAAIA,CAAJ,WAAIA,CAAJ,EAAIA,CAAe,CAAGzB,CAAH,CADZ,GAE1B6B,CAAU,EAAI,CAFY,SAIxBP,CAJwB,WAIxBA,CAJwB,EAIxBA,CAAM,CAAES,IAAR,CAAa,SAACC,CAAD,QAAQR,EAAU,CAACxB,CAAD,CAAV,GAAqBwB,CAAU,CAACQ,CAAD,CAAvC,CAAb,CAJwB,GAK1BF,CAAY,EAAI,CALU,CAO7B,CAPD,CAH+B,CAW/BJ,CAAU,CAACE,CAAD,CAAV,CAAkBxB,KAAlB,EACE,CACE6B,gBAAgB,GADlB,CAEEJ,UAAU,CAAVA,CAFF,CAGEK,QAAQ,CAAEpB,CAAK,CAACZ,GAHlB,CAIE4B,YAAY,CAAZA,CAJF,CADF,4BAOKJ,CAAU,CAACE,CAAD,CAAV,CAAkBxB,KAPvB,EASD,CApBD,CAsBF,CAAOsB,CACR"}
|