@consta/uikit 5.0.3 → 5.2.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/BookmarkTabs/BookmarkTabs.js +1 -1
- package/__internal__/src/components/BookmarkTabs/BookmarkTabs.js.map +1 -1
- package/__internal__/src/components/Chips/Chips.js +1 -1
- package/__internal__/src/components/Chips/Chips.js.map +1 -1
- package/__internal__/src/components/Chips/ChipsChoice/ChipsChoice.js +1 -1
- package/__internal__/src/components/Chips/ChipsChoice/ChipsChoice.js.map +1 -1
- package/__internal__/src/components/Chips/ChipsChoice/types.d.ts +1 -0
- package/__internal__/src/components/Chips/ChipsChoice/types.js.map +1 -1
- package/__internal__/src/components/Chips/ChipsItem/ChipsItem.css +2 -2
- package/__internal__/src/components/Chips/ChipsItem/ChipsItem.js +1 -1
- package/__internal__/src/components/Chips/ChipsItem/ChipsItem.js.map +1 -1
- package/__internal__/src/components/Chips/helpers.d.ts +6 -2
- package/__internal__/src/components/Chips/helpers.js +1 -1
- package/__internal__/src/components/Chips/helpers.js.map +1 -1
- package/__internal__/src/components/Chips/types.d.ts +4 -0
- package/__internal__/src/components/Chips/types.js.map +1 -1
- package/__internal__/src/components/ChoiceGroup/ChoiceGroup.js +1 -1
- package/__internal__/src/components/ChoiceGroup/ChoiceGroup.js.map +1 -1
- package/__internal__/src/components/ChoiceGroup/Item/ChoiceGroup-Item.js +1 -1
- package/__internal__/src/components/ChoiceGroup/Item/ChoiceGroup-Item.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePicker.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerAdditionalControls/DatePickerAdditionalControls.d.ts +1 -1
- package/__internal__/src/components/DatePicker/DatePickerAdditionalControls/DatePickerAdditionalControls.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.d.ts +3 -3
- package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerDropdown/DatePickerDropdown.js.map +1 -1
- 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 +1 -1
- 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.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/helpers.d.ts +1 -1
- 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.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/helpers.d.ts +1 -1
- 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.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/helpers.d.ts +1 -1
- 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.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/helpers.d.ts +1 -1
- 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/DatePickerTypeDate/DatePickerTypeDate.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDate/DatePickerTypeDate.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateRange/DatePickerTypeDateRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTime/DatePickerTypeDateTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeDateTimeRange/DatePickerTypeDateTimeRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonth/DatePickerTypeMonth.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeMonthRange/DatePickerTypeMonthRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeTime/DatePickerTypeTime.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYear/DatePickerTypeYear.js.map +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js +1 -1
- package/__internal__/src/components/DatePicker/DatePickerTypeYearRange/DatePickerTypeYearRange.js.map +1 -1
- package/__internal__/src/components/DatePicker/helpers.d.ts +7 -0
- package/__internal__/src/components/DatePicker/helpers.js +1 -1
- package/__internal__/src/components/DatePicker/helpers.js.map +1 -1
- package/__internal__/src/components/DatePicker/useCalendarVisible.d.ts +3 -2
- package/__internal__/src/components/DatePicker/useCalendarVisible.js +1 -1
- package/__internal__/src/components/DatePicker/useCalendarVisible.js.map +1 -1
- package/__internal__/src/components/DateTime/DateTimeItem/DateTimeItem.css +1 -1
- package/__internal__/src/components/DateTime/DateTimeItem/DateTimeItem.js +1 -1
- package/__internal__/src/components/DateTime/DateTimeItem/DateTimeItem.js.map +1 -1
- package/__internal__/src/components/FieldLabel/FieldLabel.js +1 -1
- package/__internal__/src/components/FieldLabel/FieldLabel.js.map +1 -1
- package/__internal__/src/components/Pagination/Pagination.css +1 -1
- package/__internal__/src/components/Pagination/Pagination.js +1 -1
- package/__internal__/src/components/Pagination/Pagination.js.map +1 -1
- package/__internal__/src/components/Pagination/PaginationItem/PaginationItem.css +1 -1
- package/__internal__/src/components/Pagination/PaginationItem/PaginationItem.d.ts +1 -0
- package/__internal__/src/components/Pagination/PaginationItem/PaginationItem.js +1 -1
- package/__internal__/src/components/Pagination/PaginationItem/PaginationItem.js.map +1 -1
- package/__internal__/src/components/Pagination/PaginationList/PaginationList.css +1 -1
- package/__internal__/src/components/Pagination/PaginationList/PaginationList.js +1 -1
- package/__internal__/src/components/Pagination/PaginationList/PaginationList.js.map +1 -1
- package/__internal__/src/components/Pagination/PaginationNumberInput/PaginationNumberInput.js +1 -1
- package/__internal__/src/components/Pagination/PaginationNumberInput/PaginationNumberInput.js.map +1 -1
- package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/PaginationSizeCalculateHelper.css +1 -0
- package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/PaginationSizeCalculateHelper.d.ts +7 -0
- package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/PaginationSizeCalculateHelper.js +2 -0
- package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/PaginationSizeCalculateHelper.js.map +1 -0
- package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/index.d.ts +1 -0
- package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/index.js +2 -0
- package/__internal__/src/components/Pagination/PaginationSizeCalculateHelper/index.js.map +1 -0
- package/__internal__/src/components/Pagination/helpers.d.ts +11 -555
- package/__internal__/src/components/Pagination/helpers.js +1 -1
- package/__internal__/src/components/Pagination/helpers.js.map +1 -1
- package/__internal__/src/components/Pagination/index.d.ts +0 -1
- package/__internal__/src/components/Pagination/index.js +1 -1
- package/__internal__/src/components/Pagination/index.js.map +1 -1
- package/__internal__/src/components/Pagination/types.d.ts +17 -37
- package/__internal__/src/components/Pagination/types.js.map +1 -1
- package/__internal__/src/components/Pagination/usePaginationItems.d.ts +7 -6
- package/__internal__/src/components/Pagination/usePaginationItems.js +1 -1
- package/__internal__/src/components/Pagination/usePaginationItems.js.map +1 -1
- package/__internal__/src/components/Pagination/usePaginationKeys.d.ts +2 -2
- package/__internal__/src/components/Pagination/usePaginationKeys.js +1 -1
- package/__internal__/src/components/Pagination/usePaginationKeys.js.map +1 -1
- package/__internal__/src/components/ProgressStepBar/ProgressStepBar.js +1 -1
- package/__internal__/src/components/ProgressStepBar/ProgressStepBar.js.map +1 -1
- package/__internal__/src/components/Slider/useSlider/helper.d.ts +1 -0
- package/__internal__/src/components/Slider/useSlider/helper.js +1 -1
- package/__internal__/src/components/Slider/useSlider/helper.js.map +1 -1
- package/__internal__/src/components/Slider/useSlider/useSlider.js +1 -1
- package/__internal__/src/components/Slider/useSlider/useSlider.js.map +1 -1
- package/__internal__/src/components/Spoiler/Spoiler.js +1 -1
- package/__internal__/src/components/Spoiler/Spoiler.js.map +1 -1
- package/__internal__/src/components/Spoiler/types.d.ts +2 -0
- package/__internal__/src/components/Spoiler/types.js.map +1 -1
- package/__internal__/src/components/Switch/Switch.css +1 -1
- package/__internal__/src/components/Tabs/Tabs.js +1 -1
- package/__internal__/src/components/Tabs/Tabs.js.map +1 -1
- package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.d.ts +1 -1
- package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.js +1 -1
- package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.js.map +1 -1
- package/__internal__/src/components/Tabs/helpers.d.ts +283 -1
- package/__internal__/src/components/Tabs/types.d.ts +9 -2
- package/__internal__/src/components/Tabs/types.js.map +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/fileIcons/FileIconAvi/FileIconAvi.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconBmp/FileIconBmp.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconCsv/FileIconCsv.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconDoc/FileIconDoc.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconExe/FileIconExe.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconGif/FileIconGif.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconJpg/FileIconJpg.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconJson/FileIconJson.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconLoading/FileIconLoading.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconMov/FileIconMov.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconMp3/FileIconMp3.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconMp4/FileIconMp4.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconPdf/FileIconPdf.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconPng/FileIconPng.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconRar/FileIconRar.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconRtf/FileIconRtf.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconTiff/FileIconTiff.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconTxt/FileIconTxt.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconUndefined/FileIconUndefined.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconWav/FileIconWav.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconXls/FileIconXls.js.map +1 -1
- package/__internal__/src/fileIcons/FileIconZip/FileIconZip.js.map +1 -1
- package/__internal__/src/hooks/useFlag/useFlag.d.ts +1 -2
- package/__internal__/src/hooks/useFlag/useFlag.js.map +1 -1
- package/__internal__/src/responsesImages/ResponsesImage403/ResponsesImage403.js.map +1 -1
- package/__internal__/src/responsesImages/ResponsesImage404/ResponsesImage404.js.map +1 -1
- package/__internal__/src/responsesImages/ResponsesImage500/ResponsesImage500.js.map +1 -1
- package/__internal__/src/responsesImages/ResponsesImage503/ResponsesImage503.js.map +1 -1
- package/__internal__/src/responsesImages/ResponsesImageConnectionError/ResponsesImageConnectionError.js.map +1 -1
- package/__internal__/src/responsesImages/ResponsesImageDeleted/ResponsesImageDeleted.js.map +1 -1
- package/__internal__/src/responsesImages/ResponsesImageEmptyBox/ResponsesImageEmptyBox.js.map +1 -1
- package/__internal__/src/responsesImages/ResponsesImageEmptyPockets/ResponsesImageEmptyPockets.js.map +1 -1
- package/__internal__/src/responsesImages/ResponsesImageNothingFound/ResponsesImageNothingFound.js.map +1 -1
- package/__internal__/src/responsesImages/ResponsesImageSuccess/ResponsesImageSuccess.js.map +1 -1
- package/package.json +1 -1
- package/__internal__/src/components/Pagination/PaginationBase/PaginationBase.css +0 -1
- package/__internal__/src/components/Pagination/PaginationBase/PaginationBase.d.ts +0 -3
- package/__internal__/src/components/Pagination/PaginationBase/PaginationBase.js +0 -2
- package/__internal__/src/components/Pagination/PaginationBase/PaginationBase.js.map +0 -1
- package/__internal__/src/components/Pagination/PaginationBase/index.d.ts +0 -1
- package/__internal__/src/components/Pagination/PaginationBase/index.js +0 -2
- package/__internal__/src/components/Pagination/PaginationBase/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlider.js","names":["useCallback","useEffect","useMemo","useRef","useState","useClickOutside","useComponentSize","useMutableRef","getActiveValue","getNewValue","getValidValue","getValueByPosition","isNotRangeParams","isRangeParams","trackPosition","COUNT_STEPS","useSlider","props","disabled","range","value","min","max","step","onChange","onAfterChange","sliderRef","containerRef","buttonRefs","minValue","maxValue","dragStepValue","Array","isArray","val","Math","abs","currentValue","setCurrentValue","leftPopover","setLeftPopover","rightPopover","setRightPopover","currentButton","setCurrentButton","activeButton","sizeSlider","lastValue","isActive","ignoreClicksInsideRefs","handler","current","controlListeners","type","method","document","handleRelease","handleTouchMove","setTooltipPosition","JSON","stringify","indexOf","newValue","targetValue","onKeyPress","event","typeButton","preventDefault","stopPropagation","stepIncrement","validKeyCode","changedValue","key","forEach","stepPoint","index","e","position","button","getBoundingClientRect","x","width","newPosition","y","offsetTop","offsetHeight","changePosition","positionValue","oldValue","copyValues","sort","a","b","handlePress","onFocus","onSliderClick","pageX","pageY","popoverPosition"],"sources":["../../../../../../src/components/Slider/useSlider/useSlider.ts"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\n\nimport { useComponentSize } from '../../../hooks/useComponentSize/useComponentSize';\nimport { useMutableRef } from '../../../hooks/useMutableRef/useMutableRef';\nimport { SliderValue, TrackPosition } from '../helper';\nimport {\n ActiveButton,\n getActiveValue,\n getNewValue,\n getValidValue,\n getValueByPosition,\n isNotRangeParams,\n isRangeParams,\n trackPosition,\n UseSliderProps,\n UseSliderValues,\n} from './helper';\n\nexport const COUNT_STEPS = 250;\n\nexport function useSlider<RANGE extends boolean>(\n props: UseSliderProps<RANGE>,\n): UseSliderValues {\n const {\n disabled,\n range,\n value,\n min,\n max,\n step = 1,\n onChange,\n onAfterChange,\n sliderRef,\n containerRef,\n buttonRefs,\n } = props;\n\n const minValue = max > min ? min : 0;\n const maxValue = max > min ? max : 100;\n\n const dragStepValue = useMemo(() => {\n if (!Array.isArray(step)) {\n if (step >= 1) {\n const val = Math.abs((maxValue - minValue) / COUNT_STEPS);\n if (val > step) {\n return val - (val % step);\n }\n return Math.max(val, step);\n }\n }\n return step;\n }, [max, min, step]);\n\n const [currentValue, setCurrentValue] = useState<number | [number, number]>(\n value,\n );\n const [leftPopover, setLeftPopover] = useState<TrackPosition>(null);\n const [rightPopover, setRightPopover] = useState<TrackPosition>(null);\n const [currentButton, setCurrentButton] = useState<ActiveButton | null>(null);\n\n const activeButton: MutableRefObject<ActiveButton | null> = useRef(null);\n\n const sizeSlider = useComponentSize(sliderRef);\n\n const lastValue = useMutableRef(currentValue);\n\n useClickOutside({\n isActive: true,\n ignoreClicksInsideRefs: [containerRef],\n handler: () => {\n setCurrentButton(null);\n activeButton.current = null;\n },\n });\n\n useEffect(() => {\n if (disabled) {\n controlListeners('remove');\n }\n }, [disabled]);\n\n const controlListeners = (type: 'add' | 'remove') => {\n const method = type === 'add' ? 'addEventListener' : 'removeEventListener';\n document[method]('mouseup', handleRelease);\n document[method]('touchend', handleRelease);\n document[method]('mousemove', handleTouchMove);\n document[method]('touchmove', handleTouchMove);\n };\n\n useEffect(() => {\n if (Array.isArray(currentValue)) {\n setTooltipPosition(currentValue[0], 0);\n setTooltipPosition(currentValue[1], 1);\n } else {\n setTooltipPosition(currentValue, 0);\n }\n }, [currentValue]);\n\n useEffect(() => {\n if (JSON.stringify(value) !== JSON.stringify(currentValue)) {\n if (Array.isArray(value) && Array.isArray(currentValue)) {\n if (\n !(\n currentValue.indexOf(value[0]) !== -1 &&\n currentValue.indexOf(value[1]) !== -1\n )\n ) {\n setCurrentValue(value);\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n } else {\n setCurrentValue(value);\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n setCurrentButton(null);\n activeButton.current = null;\n }\n }, [value]);\n\n useEffect(() => {\n const newValue = Array.isArray(currentValue)\n ? ([\n getNewValue(currentValue[0], currentValue[0], step, min, max, 0),\n getNewValue(currentValue[1], currentValue[1], step, min, max, 1),\n ] as SliderValue<RANGE>)\n : (getNewValue(\n currentValue,\n currentValue,\n step,\n min,\n max,\n 0,\n ) as SliderValue<RANGE>);\n onChange?.(newValue, {});\n }, [step]);\n\n useEffect(() => {\n if (typeof value !== 'undefined') {\n const targetValue = isRangeParams(props)\n ? ([\n getValidValue(props.value[0], min, max, step),\n getValidValue(props.value[1], min, max, step),\n ] as [number, number])\n : getValidValue(props.value as number, min, max, step);\n setCurrentValue(targetValue);\n }\n }, [range, typeof value]);\n\n useEffect(() => {\n if (isRangeParams(props)) {\n if (props.value[0] > props.value[1]) {\n const newValue: SliderValue<true> = [props.value[1], props.value[1]];\n props.onChange?.(newValue, {});\n }\n }\n }, []);\n\n const onSliderClick = (e: React.MouseEvent) => {\n if (isNotRangeParams(props)) {\n const positionValue = getValueByPosition(\n { x: e.pageX, y: e.pageY },\n sliderRef,\n minValue,\n maxValue,\n step,\n );\n const newValue = getNewValue(\n positionValue,\n currentValue,\n dragStepValue,\n min,\n max,\n activeButton.current,\n ) as SliderValue<RANGE>;\n if (newValue !== value) {\n setCurrentValue(newValue);\n setTooltipPosition(getActiveValue(newValue, 0), 0);\n onChange?.(newValue, {\n e,\n });\n }\n }\n };\n\n const onKeyPress = useCallback(\n (event: React.KeyboardEvent, typeButton: ActiveButton) => {\n if (\n !disabled &&\n typeof typeButton === 'number' &&\n typeof currentValue !== 'undefined'\n ) {\n event.preventDefault();\n event.stopPropagation();\n let stepIncrement = !Array.isArray(step) ? step || 1 : 1;\n let validKeyCode = false;\n const changedValue = getActiveValue(currentValue, typeButton);\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowRight':\n case '+':\n validKeyCode = true;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n case '-':\n validKeyCode = true;\n stepIncrement *= -1;\n break;\n default:\n break;\n }\n if (validKeyCode) {\n if (Array.isArray(step)) {\n step.forEach((stepPoint, index) => {\n if (\n typeof typeButton === 'number' &&\n changedValue === stepPoint\n ) {\n if (stepIncrement >= 0) {\n if (index === 0) {\n stepIncrement = step[1] - minValue;\n } else {\n stepIncrement =\n (typeof step[index + 1] !== 'undefined'\n ? step[index + 1]\n : maxValue) - stepPoint;\n }\n } else if (index === 0) {\n stepIncrement = minValue - step[1];\n } else {\n stepIncrement =\n (typeof step[index - 1] !== 'undefined'\n ? step[index - 1]\n : minValue) - stepPoint;\n }\n }\n });\n }\n const newValue = getNewValue(\n changedValue + stepIncrement,\n currentValue,\n step,\n min,\n max,\n typeButton,\n ) as SliderValue<RANGE>;\n setCurrentValue(newValue);\n setTooltipPosition(getActiveValue(newValue, typeButton), typeButton);\n onChange?.(newValue, {\n e: event,\n });\n }\n }\n },\n [currentValue, step, min, max],\n );\n\n const setTooltipPosition = (value: number, position: ActiveButton) => {\n if (sliderRef.current && typeof position === 'number') {\n const button = buttonRefs[position].current || sliderRef.current;\n const { x, width } = sliderRef.current.getBoundingClientRect();\n const newPosition = {\n y: button.offsetTop + button.offsetHeight + 50,\n x: x + Math.abs((value - minValue) / (maxValue - minValue)) * width,\n };\n if (position === 0) {\n setLeftPopover(newPosition);\n } else {\n setRightPopover(newPosition);\n }\n }\n };\n\n const changePosition = (event: Event) => {\n const nativeEvent = event as MouseEvent | TouchEvent;\n if (typeof activeButton.current !== 'number') {\n return value;\n }\n const position = trackPosition(nativeEvent);\n const positionValue = getValueByPosition(\n position,\n sliderRef,\n minValue,\n maxValue,\n step,\n );\n return getNewValue(\n positionValue,\n currentValue,\n dragStepValue,\n min,\n max,\n activeButton.current,\n );\n };\n\n const onFocus = (\n e: React.FocusEvent | React.MouseEvent,\n button: ActiveButton,\n ) => {\n setCurrentButton(button);\n activeButton.current = button;\n };\n\n const handleTouchMove = (\n event: MouseEvent | TouchEvent | Event,\n typeButton?: ActiveButton,\n ) => {\n const button = typeButton || activeButton.current;\n if (typeof button === 'number') {\n const position = changePosition(event) as SliderValue<RANGE>;\n const oldValue: number = getActiveValue(currentValue, button);\n const newValue: number = getActiveValue(position, button);\n setCurrentValue(position);\n if (oldValue !== newValue) {\n onAfterChange?.(position, { e: event });\n }\n }\n };\n\n useEffect(() => {\n if (isRangeParams(props)) {\n props.value?.forEach((val, index) => {\n setTooltipPosition(\n getActiveValue(val, activeButton.current),\n index === 0 ? 0 : 1,\n );\n });\n }\n if (isNotRangeParams(props)) {\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n activeButton.current = null;\n }, [sizeSlider, typeof value]);\n\n const handleRelease = useCallback(\n (e: MouseEvent | TouchEvent | Event) => {\n controlListeners('remove');\n if (isRangeParams(props) && Array.isArray(lastValue.current)) {\n const copyValues = [...lastValue.current].sort(\n (a, b) => Number(a) - Number(b),\n ) as SliderValue<true>;\n props.onChange?.(copyValues, { e });\n }\n if (isNotRangeParams(props) && typeof lastValue.current === 'number') {\n props.onChange?.(lastValue.current, { e });\n }\n setCurrentButton(null);\n activeButton.current = null;\n },\n [lastValue, value, onChange, handleTouchMove],\n );\n\n const handlePress = useCallback(\n (typeButton: ActiveButton) => {\n if (!disabled) {\n setCurrentButton(typeButton);\n activeButton.current = typeButton;\n controlListeners('add');\n }\n },\n [currentValue, value, onChange, handleTouchMove, disabled],\n );\n\n return {\n onKeyPress,\n onFocus,\n handlePress,\n onSliderClick,\n activeButton: currentButton,\n popoverPosition: [leftPopover, rightPopover],\n currentValue: Array.isArray(currentValue) ? currentValue : [currentValue],\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSlider.js","names":["useCallback","useEffect","useMemo","useRef","useState","useClickOutside","useComponentSize","useMutableRef","getActiveValue","getNewValue","getValidValue","getValueByPosition","isNotRangeParams","isRangeParams","trackPosition","valueToSring","COUNT_STEPS","useSlider","props","disabled","range","value","min","max","step","onChange","onAfterChange","sliderRef","containerRef","buttonRefs","minValue","maxValue","dragStepValue","Array","isArray","val","Math","abs","currentValue","setCurrentValue","leftPopover","setLeftPopover","rightPopover","setRightPopover","currentButton","setCurrentButton","activeButton","sizeSlider","currentValueRef","onChangeRef","onAfterChangeRef","isActive","ignoreClicksInsideRefs","handler","current","controlListeners","type","method","document","handleRelease","handleTouchMove","setTooltipPosition","indexOf","newValue","targetValue","onKeyPress","event","typeButton","preventDefault","stopPropagation","stepIncrement","validKeyCode","changedValue","key","forEach","stepPoint","index","e","position","button","getBoundingClientRect","x","width","newPosition","y","offsetTop","offsetHeight","changePosition","positionValue","oldValue","copyValues","sort","a","b","handlePress","onFocus","onSliderClick","pageX","pageY","popoverPosition"],"sources":["../../../../../../src/components/Slider/useSlider/useSlider.ts"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useClickOutside } from '##/hooks/useClickOutside';\nimport { useComponentSize } from '##/hooks/useComponentSize/useComponentSize';\nimport { useMutableRef } from '##/hooks/useMutableRef/useMutableRef';\n\nimport { SliderValue, TrackPosition } from '../helper';\nimport {\n ActiveButton,\n getActiveValue,\n getNewValue,\n getValidValue,\n getValueByPosition,\n isNotRangeParams,\n isRangeParams,\n trackPosition,\n UseSliderProps,\n UseSliderValues,\n valueToSring,\n} from './helper';\n\nexport const COUNT_STEPS = 250;\n\nexport function useSlider<RANGE extends boolean>(\n props: UseSliderProps<RANGE>,\n): UseSliderValues {\n const {\n disabled,\n range,\n value,\n min,\n max,\n step = 1,\n onChange,\n onAfterChange,\n sliderRef,\n containerRef,\n buttonRefs,\n } = props;\n\n const minValue = max > min ? min : 0;\n const maxValue = max > min ? max : 100;\n\n const dragStepValue = useMemo(() => {\n if (!Array.isArray(step)) {\n if (step >= 1) {\n const val = Math.abs((maxValue - minValue) / COUNT_STEPS);\n if (val > step) {\n return val - (val % step);\n }\n return Math.max(val, step);\n }\n }\n return step;\n }, [max, min, step]);\n\n const [currentValue, setCurrentValue] = useState<number | [number, number]>(\n value,\n );\n const [leftPopover, setLeftPopover] = useState<TrackPosition>(null);\n const [rightPopover, setRightPopover] = useState<TrackPosition>(null);\n const [currentButton, setCurrentButton] = useState<ActiveButton | null>(null);\n\n const activeButton: MutableRefObject<ActiveButton | null> = useRef(null);\n\n const sizeSlider = useComponentSize(sliderRef);\n\n const currentValueRef = useMutableRef(currentValue);\n const onChangeRef = useMutableRef(onChange);\n const onAfterChangeRef = useMutableRef(onAfterChange);\n\n useClickOutside({\n isActive: true,\n ignoreClicksInsideRefs: [containerRef],\n handler: () => {\n setCurrentButton(null);\n activeButton.current = null;\n },\n });\n\n useEffect(() => {\n if (disabled) {\n controlListeners('remove');\n }\n }, [disabled]);\n\n const controlListeners = (type: 'add' | 'remove') => {\n const method = type === 'add' ? 'addEventListener' : 'removeEventListener';\n document[method]('mouseup', handleRelease);\n document[method]('touchend', handleRelease);\n document[method]('mousemove', handleTouchMove);\n document[method]('touchmove', handleTouchMove);\n };\n\n useEffect(() => {\n if (Array.isArray(currentValue)) {\n setTooltipPosition(currentValue[0], 0);\n setTooltipPosition(currentValue[1], 1);\n } else {\n setTooltipPosition(currentValue, 0);\n }\n }, [currentValue]);\n\n useEffect(() => {\n if (valueToSring(value) !== valueToSring(currentValue)) {\n if (Array.isArray(value) && Array.isArray(currentValue)) {\n if (\n !(\n currentValue.indexOf(value[0]) !== -1 &&\n currentValue.indexOf(value[1]) !== -1\n )\n ) {\n setCurrentValue(value);\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n } else {\n setCurrentValue(value);\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n setCurrentButton(null);\n activeButton.current = null;\n }\n }, [value]);\n\n useEffect(() => {\n const newValue = Array.isArray(currentValue)\n ? ([\n getNewValue(currentValue[0], currentValue[0], step, min, max, 0),\n getNewValue(currentValue[1], currentValue[1], step, min, max, 1),\n ] as SliderValue<RANGE>)\n : (getNewValue(\n currentValue,\n currentValue,\n step,\n min,\n max,\n 0,\n ) as SliderValue<RANGE>);\n if (valueToSring(newValue) !== valueToSring(currentValue)) {\n onChangeRef.current?.(newValue, {});\n }\n }, [step]);\n\n useEffect(() => {\n if (typeof value !== 'undefined') {\n const targetValue = isRangeParams(props)\n ? ([\n getValidValue(props.value[0], min, max, step),\n getValidValue(props.value[1], min, max, step),\n ] as [number, number])\n : getValidValue(props.value as number, min, max, step);\n setCurrentValue(targetValue);\n }\n }, [range, typeof value]);\n\n useEffect(() => {\n if (isRangeParams(props) && props.value[0] > props.value[1]) {\n const newValue: SliderValue<true> = [props.value[1], props.value[1]];\n onChangeRef.current?.(newValue as SliderValue<RANGE>, {});\n }\n }, []);\n\n const onSliderClick = (e: React.MouseEvent) => {\n if (isNotRangeParams(props)) {\n const positionValue = getValueByPosition(\n { x: e.pageX, y: e.pageY },\n sliderRef,\n minValue,\n maxValue,\n step,\n );\n const newValue = getNewValue(\n positionValue,\n currentValue,\n dragStepValue,\n min,\n max,\n activeButton.current,\n ) as SliderValue<RANGE>;\n if (newValue !== value) {\n setCurrentValue(newValue);\n setTooltipPosition(getActiveValue(newValue, 0), 0);\n onChangeRef.current?.(newValue, {\n e,\n });\n }\n }\n };\n\n const onKeyPress = useCallback(\n (event: React.KeyboardEvent, typeButton: ActiveButton) => {\n if (\n !disabled &&\n typeof typeButton === 'number' &&\n typeof currentValue !== 'undefined'\n ) {\n event.preventDefault();\n event.stopPropagation();\n let stepIncrement = !Array.isArray(step) ? step || 1 : 1;\n let validKeyCode = false;\n const changedValue = getActiveValue(currentValue, typeButton);\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowRight':\n case '+':\n validKeyCode = true;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n case '-':\n validKeyCode = true;\n stepIncrement *= -1;\n break;\n default:\n break;\n }\n if (validKeyCode) {\n if (Array.isArray(step)) {\n step.forEach((stepPoint, index) => {\n if (\n typeof typeButton === 'number' &&\n changedValue === stepPoint\n ) {\n if (stepIncrement >= 0) {\n if (index === 0) {\n stepIncrement = step[1] - minValue;\n } else {\n stepIncrement =\n (typeof step[index + 1] !== 'undefined'\n ? step[index + 1]\n : maxValue) - stepPoint;\n }\n } else if (index === 0) {\n stepIncrement = minValue - step[1];\n } else {\n stepIncrement =\n (typeof step[index - 1] !== 'undefined'\n ? step[index - 1]\n : minValue) - stepPoint;\n }\n }\n });\n }\n const newValue = getNewValue(\n changedValue + stepIncrement,\n currentValue,\n step,\n min,\n max,\n typeButton,\n ) as SliderValue<RANGE>;\n setCurrentValue(newValue);\n setTooltipPosition(getActiveValue(newValue, typeButton), typeButton);\n onChangeRef.current?.(newValue, {\n e: event,\n });\n }\n }\n },\n [currentValue, step, min, max],\n );\n\n const setTooltipPosition = (value: number, position: ActiveButton) => {\n if (sliderRef.current && typeof position === 'number') {\n const button = buttonRefs[position].current || sliderRef.current;\n const { x, width } = sliderRef.current.getBoundingClientRect();\n const newPosition = {\n y: button.offsetTop + button.offsetHeight + 50,\n x: x + Math.abs((value - minValue) / (maxValue - minValue)) * width,\n };\n if (position === 0) {\n setLeftPopover(newPosition);\n } else {\n setRightPopover(newPosition);\n }\n }\n };\n\n const changePosition = (event: Event) => {\n const nativeEvent = event as MouseEvent | TouchEvent;\n if (typeof activeButton.current !== 'number') {\n return value;\n }\n const position = trackPosition(nativeEvent);\n const positionValue = getValueByPosition(\n position,\n sliderRef,\n minValue,\n maxValue,\n step,\n );\n return getNewValue(\n positionValue,\n currentValue,\n dragStepValue,\n min,\n max,\n activeButton.current,\n );\n };\n\n const onFocus = (\n e: React.FocusEvent | React.MouseEvent,\n button: ActiveButton,\n ) => {\n setCurrentButton(button);\n activeButton.current = button;\n };\n\n const handleTouchMove = (\n event: MouseEvent | TouchEvent | Event,\n typeButton?: ActiveButton,\n ) => {\n const button = typeButton || activeButton.current;\n if (typeof button === 'number') {\n const position = changePosition(event) as SliderValue<RANGE>;\n const oldValue: number = getActiveValue(currentValue, button);\n const newValue: number = getActiveValue(position, button);\n setCurrentValue(position);\n if (valueToSring(oldValue) !== valueToSring(newValue)) {\n onAfterChangeRef.current?.(position, { e: event });\n }\n }\n };\n\n useEffect(() => {\n if (isRangeParams(props)) {\n props.value?.forEach((val, index) => {\n setTooltipPosition(\n getActiveValue(val, activeButton.current),\n index === 0 ? 0 : 1,\n );\n });\n }\n if (isNotRangeParams(props)) {\n setTooltipPosition(getActiveValue(value, activeButton.current), 0);\n }\n activeButton.current = null;\n }, [sizeSlider, typeof value]);\n\n const handleRelease = useCallback(\n (e: MouseEvent | TouchEvent | Event) => {\n controlListeners('remove');\n if (isRangeParams(props) && Array.isArray(currentValueRef.current)) {\n const copyValues = [...currentValueRef.current].sort(\n (a, b) => Number(a) - Number(b),\n ) as SliderValue<true>;\n onChangeRef.current?.(copyValues as SliderValue<RANGE>, { e });\n }\n if (\n isNotRangeParams(props) &&\n typeof currentValueRef.current === 'number'\n ) {\n onChangeRef.current?.(currentValueRef.current as SliderValue<RANGE>, {\n e,\n });\n }\n setCurrentButton(null);\n activeButton.current = null;\n },\n [value, handleTouchMove],\n );\n\n const handlePress = useCallback(\n (typeButton: ActiveButton) => {\n if (!disabled) {\n setCurrentButton(typeButton);\n activeButton.current = typeButton;\n controlListeners('add');\n }\n },\n [currentValue, value, handleTouchMove, disabled],\n );\n\n return {\n onKeyPress,\n onFocus,\n handlePress,\n onSliderClick,\n activeButton: currentButton,\n popoverPosition: [leftPopover, rightPopover],\n currentValue: Array.isArray(currentValue) ? currentValue : [currentValue],\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["preview","maxHeight","content","size","lessIcon","lessLabel","children","moreIcon","moreLabel","className","lineClamp","buttonIndent","buttonAlign","style"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./Spoiler.css";import React,{forwardRef}from"react";import{Text}from"../Text";import{getElementSize}from"../../hooks/useComponentSize";import{useFlag}from"../../hooks/useFlag";import{useForkRef}from"../../hooks/useForkRef";import{useRefs}from"../../hooks/useRefs";import{useResizeObserved}from"../../hooks/useResizeObserved";import{cnMixSpace}from"../../mixs/MixSpace";import{cn}from"../../utils/bem";import{SpoilerButton}from"./SpoilerButton";import{defaultSpoilerPropButtonAlign,defaultSpoilerPropSize}from"./types";export var cnSpoiler=cn("Spoiler");var spoilerOffsetMap={xs:"xs",s:"s",m:"m",l:"m"},getContent=function(a){var b=a.children,c=a.content,d=a.preview,e=a.lineClamp;return e?["lineClamp",b,b]:b?["blur",b,b]:["toggle",d,c]};export var Spoiler=forwardRef(function(a,b){var c=a.preview,d=a.maxHeight,e=a.content,f=a.size,g=void 0===f?defaultSpoilerPropSize:f,h=a.lessIcon,i=a.lessLabel,j=a.children,k=a.moreIcon,l=a.moreLabel,m=a.className,n=a.lineClamp,o=a.buttonIndent,p=a.buttonAlign,q=void 0===p?defaultSpoilerPropButtonAlign:p,r=a.style,s=_objectWithoutProperties(a,_excluded),
|
|
1
|
+
import _defineProperty from"@babel/runtime/helpers/defineProperty";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["preview","maxHeight","content","size","lessIcon","lessLabel","children","moreIcon","moreLabel","className","lineClamp","buttonIndent","buttonAlign","style","opened","onOpenButtonClick"];function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import"./Spoiler.css";import React,{forwardRef,useCallback,useEffect}from"react";import{Text}from"../Text";import{getElementSize}from"../../hooks/useComponentSize";import{useFlag}from"../../hooks/useFlag";import{useForkRef}from"../../hooks/useForkRef";import{useMutableRef}from"../../hooks/useMutableRef";import{useRefs}from"../../hooks/useRefs";import{useResizeObserved}from"../../hooks/useResizeObserved";import{cnMixSpace}from"../../mixs/MixSpace";import{cn}from"../../utils/bem";import{SpoilerButton}from"./SpoilerButton";import{defaultSpoilerPropButtonAlign,defaultSpoilerPropSize}from"./types";export var cnSpoiler=cn("Spoiler");var spoilerOffsetMap={xs:"xs",s:"s",m:"m",l:"m"},getContent=function(a){var b=a.children,c=a.content,d=a.preview,e=a.lineClamp;return e?["lineClamp",b,b]:b?["blur",b,b]:["toggle",d,c]};export var Spoiler=forwardRef(function(a,b){var c=a.preview,d=a.maxHeight,e=a.content,f=a.size,g=void 0===f?defaultSpoilerPropSize:f,h=a.lessIcon,i=a.lessLabel,j=a.children,k=a.moreIcon,l=a.moreLabel,m=a.className,n=a.lineClamp,o=a.buttonIndent,p=a.buttonAlign,q=void 0===p?defaultSpoilerPropButtonAlign:p,r=a.style,s=a.opened,t=void 0!==s&&s,u=a.onOpenButtonClick,v=_objectWithoutProperties(a,_excluded),w=useFlag(t),x=_slicedToArray(w,2),y=x[0],z=x[1],A=getContent(a,y),B=_slicedToArray(A,3),C=B[0],D=B[1],E=B[2],F=useRefs(3),G=useResizeObserved(F,getElementSize),H=G[1].height>G[0].height,I=useMutableRef(u),J=useCallback(function(a){z.toggle(),I.current&&I.current(!y,a)},[]);return useEffect(function(){z.set(t)},[t]),React.createElement("div",Object.assign({},v,{className:cnSpoiler({size:g},[m]),ref:useForkRef([b,F[2]]),style:_objectSpread(_objectSpread(_objectSpread(_objectSpread({},r),"number"==typeof d&&_defineProperty({},"--spoiler-content-max-height","".concat(d,"px"))),"number"==typeof n&&_defineProperty({},"--spoiler-content-line-clamp",n)),"number"==typeof G[2].width&&_defineProperty({},"--spoiler-content-width","".concat(G[2].width,"px")))}),React.createElement(Text,{ref:F[0],className:cnSpoiler("Content",{mode:C,hidden:y||!H}),size:g},D),React.createElement(Text,{ref:F[1],className:cnSpoiler("Content",{hidden:!y&&H}),size:g},E),H&&React.createElement("div",{className:cnSpoiler("ButtonWrapper",{align:q},[cnMixSpace({mT:"undefined"==typeof o?spoilerOffsetMap[g]:o})])},React.createElement(SpoilerButton,{className:cnSpoiler("Button"),lessIcon:h,lessLabel:i,moreIcon:k,moreLabel:l,onClick:J,open:y,size:g})))});
|
|
2
2
|
//# sourceMappingURL=Spoiler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spoiler.js","names":["React","forwardRef","Text","getElementSize","useFlag","useForkRef","useRefs","useResizeObserved","cnMixSpace","cn","SpoilerButton","defaultSpoilerPropButtonAlign","defaultSpoilerPropSize","cnSpoiler","spoilerOffsetMap","xs","s","m","l","getContent","children","content","preview","lineClamp","Spoiler","props","ref","maxHeight","size","lessIcon","lessLabel","moreIcon","moreLabel","className","buttonIndent","buttonAlign","style","otherProps","isOpen","setIsOpen","mode","previewContent","fullContent","refs","sizes","visibleMoreButton","height","width","hidden","align","mT"
|
|
1
|
+
{"version":3,"file":"Spoiler.js","names":["React","forwardRef","useCallback","useEffect","Text","getElementSize","useFlag","useForkRef","useMutableRef","useRefs","useResizeObserved","cnMixSpace","cn","SpoilerButton","defaultSpoilerPropButtonAlign","defaultSpoilerPropSize","cnSpoiler","spoilerOffsetMap","xs","s","m","l","getContent","children","content","preview","lineClamp","Spoiler","props","ref","maxHeight","size","lessIcon","lessLabel","moreIcon","moreLabel","className","buttonIndent","buttonAlign","style","opened","onOpenButtonClick","otherProps","isOpen","setIsOpen","mode","previewContent","fullContent","refs","sizes","visibleMoreButton","height","onOpenButtonClickRef","handleClick","event","toggle","current","set","width","hidden","align","mT"],"sources":["../../../../../src/components/Spoiler/Spoiler.tsx"],"sourcesContent":["import './Spoiler.css';\n\nimport React, { forwardRef, useCallback, useEffect } from 'react';\n\nimport { Text } from '##/components/Text';\nimport { getElementSize } from '##/hooks/useComponentSize';\nimport { useFlag } from '##/hooks/useFlag';\nimport { useForkRef } from '##/hooks/useForkRef';\nimport { useMutableRef } from '##/hooks/useMutableRef';\nimport { useRefs } from '##/hooks/useRefs';\nimport { useResizeObserved } from '##/hooks/useResizeObserved';\nimport { cnMixSpace, Space } from '##/mixs/MixSpace';\nimport { cn } from '##/utils/bem';\n\nimport { SpoilerButton } from './SpoilerButton';\nimport {\n defaultSpoilerPropButtonAlign,\n defaultSpoilerPropSize,\n SpoilerMode,\n SpoilerProps,\n SpoilerPropSize,\n} from './types';\n\nexport const cnSpoiler = cn('Spoiler');\n\nconst spoilerOffsetMap: Record<SpoilerPropSize, Space> = {\n xs: 'xs',\n s: 's',\n m: 'm',\n l: 'm',\n};\n\nconst getContent = (\n { children, content, preview, lineClamp }: SpoilerProps,\n isOpen: boolean,\n): [SpoilerMode, React.ReactNode, React.ReactNode] => {\n if (lineClamp) {\n return ['lineClamp', children, children];\n }\n if (children) {\n return ['blur', children, children];\n }\n return ['toggle', preview, content];\n};\n\nexport const Spoiler = forwardRef<HTMLDivElement, SpoilerProps>(\n (props, ref) => {\n const {\n preview,\n maxHeight,\n content,\n size = defaultSpoilerPropSize,\n lessIcon,\n lessLabel,\n children,\n moreIcon,\n moreLabel,\n className,\n lineClamp,\n buttonIndent,\n buttonAlign = defaultSpoilerPropButtonAlign,\n style,\n opened = false,\n onOpenButtonClick,\n ...otherProps\n } = props;\n\n const [isOpen, setIsOpen] = useFlag(opened);\n const [mode, previewContent, fullContent] = getContent(props, isOpen);\n const refs = useRefs<HTMLDivElement>(3);\n const sizes = useResizeObserved(refs, getElementSize);\n const visibleMoreButton = sizes[1].height > sizes[0].height;\n const onOpenButtonClickRef = useMutableRef(onOpenButtonClick);\n\n const handleClick = useCallback((event: React.MouseEvent): void => {\n setIsOpen.toggle();\n onOpenButtonClickRef.current &&\n onOpenButtonClickRef.current(!isOpen, event);\n }, []);\n\n useEffect(() => {\n setIsOpen.set(opened);\n }, [opened]);\n\n return (\n <div\n {...otherProps}\n className={cnSpoiler({ size }, [className])}\n ref={useForkRef([ref, refs[2]])}\n style={{\n ...style,\n ...(typeof maxHeight === 'number' && {\n ['--spoiler-content-max-height' as string]: `${maxHeight}px`,\n }),\n ...(typeof lineClamp === 'number' && {\n ['--spoiler-content-line-clamp' as string]: lineClamp,\n }),\n ...(typeof sizes[2].width === 'number' && {\n ['--spoiler-content-width' as string]: `${sizes[2].width}px`,\n }),\n }}\n >\n <Text\n ref={refs[0]}\n className={cnSpoiler('Content', {\n mode,\n hidden: isOpen || !visibleMoreButton,\n })}\n size={size}\n >\n {previewContent}\n </Text>\n <Text\n ref={refs[1]}\n className={cnSpoiler('Content', {\n hidden: !isOpen && visibleMoreButton,\n })}\n size={size}\n >\n {fullContent}\n </Text>\n {visibleMoreButton && (\n <div\n className={cnSpoiler('ButtonWrapper', { align: buttonAlign }, [\n cnMixSpace({\n mT:\n typeof buttonIndent === 'undefined'\n ? spoilerOffsetMap[size]\n : buttonIndent,\n }),\n ])}\n >\n <SpoilerButton\n className={cnSpoiler('Button')}\n lessIcon={lessIcon}\n lessLabel={lessLabel}\n moreIcon={moreIcon}\n moreLabel={moreLabel}\n onClick={handleClick}\n open={isOpen}\n size={size}\n />\n </div>\n )}\n </div>\n );\n },\n);\n"],"mappings":"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"}
|
|
@@ -25,6 +25,8 @@ export declare type SpoilerProps = Omit<PropsWithHTMLAttributes<{
|
|
|
25
25
|
moreIcon?: IconComponent;
|
|
26
26
|
buttonIndent?: Space;
|
|
27
27
|
buttonAlign?: SpoilerPropButtonAlign;
|
|
28
|
+
opened?: boolean;
|
|
29
|
+
onOpenButtonClick?: (open: boolean, event: React.MouseEvent) => void;
|
|
28
30
|
}, HTMLDivElement>, 'children'> & ({
|
|
29
31
|
preview: React.ReactNode;
|
|
30
32
|
content: React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["spolierPropSize","defaultSpoilerPropSize","spolierPropButtonAlign","defaultSpoilerPropButtonAlign"],"sources":["../../../../../src/components/Spoiler/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { Space } from '##/mixs/MixSpace';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport const spolierPropSize = ['xs', 's', 'm', 'l'] as const;\nexport type SpoilerPropSize = typeof spolierPropSize[number];\nexport const defaultSpoilerPropSize = 'm';\n\nexport const spolierPropButtonAlign = ['left', 'center', 'right'] as const;\nexport type SpoilerPropButtonAlign = typeof spolierPropButtonAlign[number];\nexport const defaultSpoilerPropButtonAlign = spolierPropButtonAlign[0];\n\nexport type SpoilerModeProp = 'dots' | 'blur';\n\nexport type SpoilerButtonProps = {\n size?: SpoilerPropSize;\n lessLabel?: string;\n lessIcon?: IconComponent;\n moreLabel?: string;\n moreIcon?: IconComponent;\n open?: boolean;\n};\n\nexport type SpoilerProps = Omit<\n PropsWithHTMLAttributes<\n {\n size?: SpoilerPropSize;\n lessLabel?: string;\n lessIcon?: IconComponent;\n moreLabel?: string;\n moreIcon?: IconComponent;\n buttonIndent?: Space;\n buttonAlign?: SpoilerPropButtonAlign;\n },\n HTMLDivElement\n >,\n 'children'\n> &\n (\n | {\n preview: React.ReactNode;\n content: React.ReactNode;\n maxHeight?: never;\n children?: never;\n lineClamp?: never;\n }\n | {\n preview?: never;\n content?: never;\n children: React.ReactNode;\n maxHeight: number;\n lineClamp?: never;\n }\n | {\n preview?: never;\n content?: never;\n children: React.ReactNode;\n maxHeight?: never;\n lineClamp: number;\n }\n );\n\nexport type SpoilerMode = 'lineClamp' | 'blur' | 'toggle';\n"],"mappings":"AAMA,MAAO,IAAMA,gBAAe,CAAG,CAAC,IAAD,CAAO,GAAP,CAAY,GAAZ,CAAiB,GAAjB,CAAxB,CAEP,MAAO,IAAMC,uBAAsB,CAAG,GAA/B,CAEP,MAAO,IAAMC,uBAAsB,CAAG,CAAC,MAAD,CAAS,QAAT,CAAmB,OAAnB,CAA/B,CAEP,MAAO,IAAMC,8BAA6B,CAAGD,sBAAsB,CAAC,CAAD,CAA5D"}
|
|
1
|
+
{"version":3,"file":"types.js","names":["spolierPropSize","defaultSpoilerPropSize","spolierPropButtonAlign","defaultSpoilerPropButtonAlign"],"sources":["../../../../../src/components/Spoiler/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { Space } from '##/mixs/MixSpace';\nimport { PropsWithHTMLAttributes } from '##/utils/types/PropsWithHTMLAttributes';\n\nexport const spolierPropSize = ['xs', 's', 'm', 'l'] as const;\nexport type SpoilerPropSize = typeof spolierPropSize[number];\nexport const defaultSpoilerPropSize = 'm';\n\nexport const spolierPropButtonAlign = ['left', 'center', 'right'] as const;\nexport type SpoilerPropButtonAlign = typeof spolierPropButtonAlign[number];\nexport const defaultSpoilerPropButtonAlign = spolierPropButtonAlign[0];\n\nexport type SpoilerModeProp = 'dots' | 'blur';\n\nexport type SpoilerButtonProps = {\n size?: SpoilerPropSize;\n lessLabel?: string;\n lessIcon?: IconComponent;\n moreLabel?: string;\n moreIcon?: IconComponent;\n open?: boolean;\n};\n\nexport type SpoilerProps = Omit<\n PropsWithHTMLAttributes<\n {\n size?: SpoilerPropSize;\n lessLabel?: string;\n lessIcon?: IconComponent;\n moreLabel?: string;\n moreIcon?: IconComponent;\n buttonIndent?: Space;\n buttonAlign?: SpoilerPropButtonAlign;\n opened?: boolean;\n onOpenButtonClick?: (open: boolean, event: React.MouseEvent) => void;\n },\n HTMLDivElement\n >,\n 'children'\n> &\n (\n | {\n preview: React.ReactNode;\n content: React.ReactNode;\n maxHeight?: never;\n children?: never;\n lineClamp?: never;\n }\n | {\n preview?: never;\n content?: never;\n children: React.ReactNode;\n maxHeight: number;\n lineClamp?: never;\n }\n | {\n preview?: never;\n content?: never;\n children: React.ReactNode;\n maxHeight?: never;\n lineClamp: number;\n }\n );\n\nexport type SpoilerMode = 'lineClamp' | 'blur' | 'toggle';\n"],"mappings":"AAMA,MAAO,IAAMA,gBAAe,CAAG,CAAC,IAAD,CAAO,GAAP,CAAY,GAAZ,CAAiB,GAAjB,CAAxB,CAEP,MAAO,IAAMC,uBAAsB,CAAG,GAA/B,CAEP,MAAO,IAAMC,uBAAsB,CAAG,CAAC,MAAD,CAAS,QAAT,CAAmB,OAAnB,CAA/B,CAEP,MAAO,IAAMC,8BAA6B,CAAGD,sBAAsB,CAAC,CAAD,CAA5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.Switch{cursor:pointer;display:inline-flex;font-family:var(--font-primary);position:relative}.Switch_size_xs{--box-
|
|
1
|
+
.Switch{--switch-border-gap:calc(var(--control-border-width)*4);--switch-circle-size:calc(var(--box-height) - var(--switch-border-gap));cursor:pointer;display:inline-flex;font-family:var(--font-primary);position:relative}.Switch_size_xs{--box-height:12px;--switch-font-size:var(--control-text-size-xs);--offset:var(--space-2xs)}.Switch_size_s{--box-height:16px;--switch-font-size:var(--control-text-size-s);--offset:var(--space-xs)}.Switch_size_m{--box-height:20px;--switch-font-size:var(--control-text-size-m);--offset:var(--space-xs)}.Switch_size_l{--box-height:24px;--switch-font-size:var(--control-text-size-l);--offset:var(--space-s)}.Switch_view_primary:hover .Switch-Input:not(:checked){--border-color:var(--color-control-bg-border-default-hover);--background-color:transparent;--content-color:var(--color-control-bg-border-default-hover)}.Switch_view_primary .Switch-Input:not(:checked){--border-color:var(--color-control-bg-border-default);--background-color:transparent;--content-color:var(--color-control-bg-border-default)}.Switch_view_primary:hover .Switch-Input:checked{--border-color:var(--color-control-bg-primary-hover);--background-color:var(--color-control-bg-primary-hover);--content-color:var(--color-control-typo-primary-hover)}.Switch_view_primary .Switch-Input:checked{--border-color:var(--color-control-bg-primary);--background-color:var(--color-control-bg-primary);--content-color:var(--color-control-typo-primary)}.Switch_view_ghost:hover .Switch-Input:not(:checked){--border-color:var(--color-control-bg-border-default-hover);--background-color:transparent;--content-color:var(--color-control-bg-border-default-hover)}.Switch_view_ghost .Switch-Input:not(:checked){--border-color:var(--color-control-bg-border-default);--background-color:transparent;--content-color:var(--color-control-bg-border-default)}.Switch_view_ghost:hover .Switch-Input:checked{--border-color:var(--color-control-bg-border-default-hover);--background-color:var(--color-control-bg-ghost-hover);--content-color:var(--color-control-typo-ghost-hover)}.Switch_view_ghost .Switch-Input:checked{--border-color:var(--color-control-bg-border-default);--background-color:var(--color-control-bg-ghost);--content-color:var(--color-control-typo-ghost)}.Switch-Input{align-items:center;-webkit-appearance:none;background-color:var(--background-color);border:var(--control-border-width) solid var(--border-color);border-radius:99rem;box-sizing:border-box;cursor:pointer;display:inline-flex;flex-shrink:0;height:var(--box-height);margin:0;position:relative;transition:background-color .15s,border-color .15s;width:calc(var(--box-height)*2 - var(--switch-border-gap))}.Switch-Input:before{background-color:var(--content-color);border-radius:999rem;box-sizing:border-box;content:"";height:var(--switch-circle-size);position:absolute;right:1px;transform:translateX(calc((var(--box-height) - var(--switch-border-gap))*-1));transition:transform .15s,background-color .15s;width:var(--switch-circle-size)}.Switch-Input:checked{background-color:var(--background-color)}.Switch-Input:checked:before{transform:translateX(0)}.Switch-Label{color:var(--color-control-typo-default);font-size:var(--switch-font-size);margin-left:var(--offset)}.Switch_disabled{pointer-events:none}.Switch_disabled .Switch-Input:disabled{--border-color:transparent;--background-color:var(--color-control-bg-disable);--content-color:var(--color-control-typo-disable)}.Switch_disabled .Switch-Input:disabled~.Switch-Label{color:var(--color-control-typo-disable)}.Switch_align_center{align-items:center}.Switch_align_top{align-items:top}.Switch_align_top .Switch-Input{margin-top:1px}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["item","attributes","as"],_excluded2=["size","className","items","view","value","linePosition","fitMode","onlyIcon","getItemIcon","getItemAs","getItemAttributes","getItemRef","getItemLabel","onChange","iconSize","renderItem","getItemLeftIcon","getItemLeftSide","getItemRightIcon","getItemRightSide","getItemDisabled","disabled"];import"./Tabs.css";import React,{forwardRef}from"react";import{useRefs}from"../../hooks/useRefs";import{useChoiceGroup}from"../../hooks/useChoiceGroup/useChoiceGroup";import{useResizeObserved}from"../../hooks/useResizeObserved/useResizeObserved";import{cn}from"../../utils/bem";import{getTabsDirection,getTabsWrapper,withDefaultGetters}from"./helpers";import{TabsBorderLine,TabsRunningLine}from"./TabsLine/TabsLine";import{TabsTab}from"./TabsTab/TabsTab";import{tabsDefaultFitMode,tabsDefaultLinePosition,tabsDefaultSize,tabsDefaultView}from"./types";export var cnTabs=cn("Tabs");function renderItemDefault(a){var b=a.item,c=a.attributes,d=void 0===c?{}:c,e=a.as,f=_objectWithoutProperties(a,_excluded);return React.createElement(TabsTab,Object.assign({},d,f,{as:e}))}var TabsRender=function(a,b){var c=withDefaultGetters(a),d=c.size,e=void 0===d?tabsDefaultSize:d,f=c.className,g=c.items,h=c.view,i=void 0===h?tabsDefaultView:h,j=c.value,k=c.linePosition,l=void 0===k?tabsDefaultLinePosition:k,m=c.fitMode,n=void 0===m?tabsDefaultFitMode:m,o=c.
|
|
1
|
+
import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["item","attributes","as"],_excluded2=["size","className","items","view","value","linePosition","fitMode","withScrollButtons","onlyIcon","getItemIcon","getItemAs","getItemAttributes","getItemRef","getItemLabel","onChange","iconSize","renderItem","getItemLeftIcon","getItemLeftSide","getItemRightIcon","getItemRightSide","getItemDisabled","disabled"];import"./Tabs.css";import React,{forwardRef}from"react";import{useRefs}from"../../hooks/useRefs";import{cnMixScrollBar}from"../../mixs/MixScrollBar";import{useChoiceGroup}from"../../hooks/useChoiceGroup/useChoiceGroup";import{useResizeObserved}from"../../hooks/useResizeObserved/useResizeObserved";import{cn}from"../../utils/bem";import{getTabsDirection,getTabsWrapper,withDefaultGetters}from"./helpers";import{TabsBorderLine,TabsRunningLine}from"./TabsLine/TabsLine";import{TabsTab}from"./TabsTab/TabsTab";import{tabsDefaultFitMode,tabsDefaultLinePosition,tabsDefaultSize,tabsDefaultView}from"./types";export var cnTabs=cn("Tabs");function renderItemDefault(a){var b=a.item,c=a.attributes,d=void 0===c?{}:c,e=a.as,f=_objectWithoutProperties(a,_excluded);return React.createElement(TabsTab,Object.assign({},d,f,{as:e}))}var TabsRender=function(a,b){var c=withDefaultGetters(a),d=c.size,e=void 0===d?tabsDefaultSize:d,f=c.className,g=c.items,h=c.view,i=void 0===h?tabsDefaultView:h,j=c.value,k=c.linePosition,l=void 0===k?tabsDefaultLinePosition:k,m=c.fitMode,n=void 0===m?tabsDefaultFitMode:m,o=c.withScrollButtons,p=c.onlyIcon,q=c.getItemIcon,r=c.getItemAs,s=c.getItemAttributes,t=c.getItemRef,u=c.getItemLabel,v=c.onChange,w=c.iconSize,x=c.renderItem,y=void 0===x?renderItemDefault:x,z=c.getItemLeftIcon,A=c.getItemLeftSide,B=c.getItemRightIcon,C=c.getItemRightSide,D=c.getItemDisabled,E=c.disabled,F=_objectWithoutProperties(c,_excluded2),G=useChoiceGroup({value:j||null,getKey:u,callBack:v,multiple:!1}),H=G.getOnChange,I=G.getChecked,J=getTabsDirection(l),K="vertical"===J,L=useRefs(g.length,[g.length,n,K]),M=useResizeObserved(L,function(a){var b;return{size:null!==(b=null===a||void 0===a?void 0:a[K?"offsetHeight":"offsetWidth"])&&void 0!==b?b:0,gap:a?parseInt(getComputedStyle(a)[K?"marginBottom":"marginRight"],10):0}}),N=g.findIndex(I),O=function(a,b,c){return y({item:a,onChange:function(){null===b||void 0===b?void 0:b(),H(a).apply(void 0,arguments)},checked:I(a),label:u(a).toString(),icon:q(a),leftIcon:z(a),rightIcon:B(a),leftSide:A(a),rightSide:C(a),disabled:E||D(a),onlyIcon:p,size:e,iconSize:w,renderInDropdown:c,as:r(a)||"button",tabRef:t(a),attributes:s(a)})},P=getTabsWrapper(J,n);return g.length?React.createElement("div",Object.assign({className:cnTabs({size:e,view:i,direction:J},[f,cnMixScrollBar({invisible:!0})]),ref:b},F),React.createElement(P,{tabRefs:L,onChange:v,tabsDimensions:M,renderItem:O,renderItemsList:function renderItemsList(a){var b=a.withRunningLine,c=a.visibleIndexes,d=a.getTabClassName;return React.createElement("div",{className:cnTabs("List",{direction:J,linePosition:l})},g.map(function(a,b){return React.createElement("div",{ref:L[b],key:u(a),className:cnTabs("Tab",{direction:J},[null===d||void 0===d?void 0:d(b)])},O(a))}),(!(void 0!==b)||b)&&!E&&React.createElement(TabsRunningLine,{visibleIndexes:c,linePosition:l,tabsDimensions:M,activeTabIdx:N}))},getItemLabel:u,getItemChecked:I,items:g,size:e,withScrollButtons:!(void 0!==o)||o}),"bordered"===i&&React.createElement(TabsBorderLine,{linePosition:l})):null};export var Tabs=forwardRef(TabsRender);export*from"./types";
|
|
2
2
|
//# sourceMappingURL=Tabs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.js","names":["React","forwardRef","useRefs","useChoiceGroup","useResizeObserved","cn","getTabsDirection","getTabsWrapper","withDefaultGetters","TabsBorderLine","TabsRunningLine","TabsTab","tabsDefaultFitMode","tabsDefaultLinePosition","tabsDefaultSize","tabsDefaultView","cnTabs","renderItemDefault","props","item","attributes","as","otherProps","TabsRender","ref","size","className","items","view","value","linePosition","fitMode","onlyIcon","getItemIcon","getItemAs","getItemAttributes","getItemRef","getItemLabel","onChange","iconSize","renderItem","renderItemProp","getItemLeftIcon","getItemLeftSide","getItemRightIcon","getItemRightSide","getItemDisabled","disabled","getKey","callBack","multiple","getOnChange","getChecked","tabsDirection","isVertical","tabRefs","length","tabsDimensions","el","gap","parseInt","getComputedStyle","activeTabIdx","findIndex","onClick","renderInDropdown","checked","label","toString","icon","leftIcon","rightIcon","leftSide","rightSide","tabRef","Wrapper","direction","renderItemsList","withRunningLine","visibleIndexes","getTabClassName","map","idx","Tabs"],"sources":["../../../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import './Tabs.css';\n\nimport React, { forwardRef } from 'react';\n\nimport { useRefs } from '##/hooks/useRefs';\n\nimport { useChoiceGroup } from '../../hooks/useChoiceGroup/useChoiceGroup';\nimport { useResizeObserved } from '../../hooks/useResizeObserved/useResizeObserved';\nimport { cn } from '../../utils/bem';\nimport {\n getTabsDirection,\n getTabsWrapper,\n withDefaultGetters,\n} from './helpers';\nimport { TabsBorderLine, TabsRunningLine } from './TabsLine/TabsLine';\nimport { TabsTab } from './TabsTab/TabsTab';\nimport {\n RenderItemProps,\n RenderItemsListProp,\n TabDimensions,\n TabsComponent,\n tabsDefaultFitMode,\n tabsDefaultLinePosition,\n tabsDefaultSize,\n tabsDefaultView,\n TabsProps,\n} from './types';\n\nexport const cnTabs = cn('Tabs');\n\nfunction renderItemDefault<ITEM>(\n props: RenderItemProps<ITEM>,\n): React.ReactElement {\n const { item, attributes = {}, as, ...otherProps } = props;\n return <TabsTab {...attributes} {...otherProps} as={as} />;\n}\n\nconst TabsRender = (props: TabsProps, ref: React.Ref<HTMLDivElement>) => {\n const {\n size = tabsDefaultSize,\n className,\n items,\n view = tabsDefaultView,\n value,\n linePosition = tabsDefaultLinePosition,\n fitMode = tabsDefaultFitMode,\n onlyIcon,\n getItemIcon,\n getItemAs,\n getItemAttributes,\n getItemRef,\n getItemLabel,\n onChange,\n iconSize,\n renderItem: renderItemProp = renderItemDefault,\n getItemLeftIcon,\n getItemLeftSide,\n getItemRightIcon,\n getItemRightSide,\n getItemDisabled,\n disabled,\n ...otherProps\n } = withDefaultGetters(props);\n\n const { getOnChange, getChecked } = useChoiceGroup({\n value: value || null,\n getKey: getItemLabel,\n callBack: onChange,\n multiple: false,\n });\n\n const tabsDirection = getTabsDirection(linePosition);\n const isVertical = tabsDirection === 'vertical';\n const tabRefs = useRefs<HTMLDivElement>(items.length, [\n items.length,\n fitMode,\n isVertical,\n ]);\n\n const tabsDimensions = useResizeObserved(\n tabRefs,\n (el): TabDimensions => ({\n size: el?.[isVertical ? 'offsetHeight' : 'offsetWidth'] ?? 0,\n gap: el\n ? parseInt(\n getComputedStyle(el)[isVertical ? 'marginBottom' : 'marginRight'],\n 10,\n )\n : 0,\n }),\n );\n\n const activeTabIdx = items.findIndex(getChecked);\n\n const renderItem = (\n item: typeof items[number],\n onClick?: () => void,\n renderInDropdown?: boolean,\n ) =>\n renderItemProp({\n item,\n onChange: (...args) => {\n onClick?.();\n getOnChange(item)(...args);\n },\n checked: getChecked(item),\n label: getItemLabel(item).toString(),\n icon: getItemIcon(item),\n leftIcon: getItemLeftIcon(item),\n rightIcon: getItemRightIcon(item),\n leftSide: getItemLeftSide(item),\n rightSide: getItemRightSide(item),\n disabled: disabled || getItemDisabled(item),\n onlyIcon,\n size,\n iconSize,\n renderInDropdown,\n as: getItemAs(item) || 'button',\n tabRef: getItemRef(item),\n attributes: getItemAttributes(item),\n });\n\n const renderItemsList: RenderItemsListProp = ({\n withRunningLine = true,\n visibleIndexes,\n getTabClassName,\n }) => (\n <div className={cnTabs('List', { direction: tabsDirection, linePosition })}>\n {items.map((item, idx) => (\n <div\n ref={tabRefs[idx]}\n key={getItemLabel(item)}\n className={cnTabs('Tab', { direction: tabsDirection }, [\n getTabClassName?.(idx),\n ])}\n >\n {renderItem(item)}\n </div>\n ))}\n {withRunningLine && !disabled && (\n <TabsRunningLine\n visibleIndexes={visibleIndexes}\n linePosition={linePosition}\n tabsDimensions={tabsDimensions}\n activeTabIdx={activeTabIdx}\n />\n )}\n </div>\n );\n\n const Wrapper = getTabsWrapper(tabsDirection, fitMode);\n\n if (!items.length) {\n return null;\n }\n\n return (\n <div\n className={cnTabs({ size, view, direction: tabsDirection }, [className])}\n ref={ref}\n {...otherProps}\n >\n <Wrapper\n tabRefs={tabRefs}\n onChange={onChange}\n tabsDimensions={tabsDimensions}\n renderItem={renderItem}\n renderItemsList={renderItemsList}\n getItemLabel={getItemLabel}\n getItemChecked={getChecked}\n items={items}\n size={size}\n />\n {view === 'bordered' && <TabsBorderLine linePosition={linePosition} />}\n </div>\n );\n};\n\nexport const Tabs = forwardRef(TabsRender) as TabsComponent;\n\nexport * from './types';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tabs.js","names":["React","forwardRef","useRefs","cnMixScrollBar","useChoiceGroup","useResizeObserved","cn","getTabsDirection","getTabsWrapper","withDefaultGetters","TabsBorderLine","TabsRunningLine","TabsTab","tabsDefaultFitMode","tabsDefaultLinePosition","tabsDefaultSize","tabsDefaultView","cnTabs","renderItemDefault","props","item","attributes","as","otherProps","TabsRender","ref","size","className","items","view","value","linePosition","fitMode","withScrollButtons","onlyIcon","getItemIcon","getItemAs","getItemAttributes","getItemRef","getItemLabel","onChange","iconSize","renderItem","renderItemProp","getItemLeftIcon","getItemLeftSide","getItemRightIcon","getItemRightSide","getItemDisabled","disabled","getKey","callBack","multiple","getOnChange","getChecked","tabsDirection","isVertical","tabRefs","length","tabsDimensions","el","gap","parseInt","getComputedStyle","activeTabIdx","findIndex","onClick","renderInDropdown","checked","label","toString","icon","leftIcon","rightIcon","leftSide","rightSide","tabRef","Wrapper","direction","invisible","renderItemsList","withRunningLine","visibleIndexes","getTabClassName","map","idx","Tabs"],"sources":["../../../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import './Tabs.css';\n\nimport React, { forwardRef } from 'react';\n\nimport { useRefs } from '##/hooks/useRefs';\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\n\nimport { useChoiceGroup } from '../../hooks/useChoiceGroup/useChoiceGroup';\nimport { useResizeObserved } from '../../hooks/useResizeObserved/useResizeObserved';\nimport { cn } from '../../utils/bem';\nimport {\n getTabsDirection,\n getTabsWrapper,\n withDefaultGetters,\n} from './helpers';\nimport { TabsBorderLine, TabsRunningLine } from './TabsLine/TabsLine';\nimport { TabsTab } from './TabsTab/TabsTab';\nimport {\n RenderItemProps,\n RenderItemsListProp,\n TabDimensions,\n TabsComponent,\n tabsDefaultFitMode,\n tabsDefaultLinePosition,\n tabsDefaultSize,\n tabsDefaultView,\n TabsProps,\n} from './types';\n\nexport const cnTabs = cn('Tabs');\n\nfunction renderItemDefault<ITEM>(\n props: RenderItemProps<ITEM>,\n): React.ReactElement {\n const { item, attributes = {}, as, ...otherProps } = props;\n return <TabsTab {...attributes} {...otherProps} as={as} />;\n}\n\nconst TabsRender = (props: TabsProps, ref: React.Ref<HTMLDivElement>) => {\n const {\n size = tabsDefaultSize,\n className,\n items,\n view = tabsDefaultView,\n value,\n linePosition = tabsDefaultLinePosition,\n fitMode = tabsDefaultFitMode,\n withScrollButtons = true,\n onlyIcon,\n getItemIcon,\n getItemAs,\n getItemAttributes,\n getItemRef,\n getItemLabel,\n onChange,\n iconSize,\n renderItem: renderItemProp = renderItemDefault,\n getItemLeftIcon,\n getItemLeftSide,\n getItemRightIcon,\n getItemRightSide,\n getItemDisabled,\n disabled,\n ...otherProps\n } = withDefaultGetters(props);\n\n const { getOnChange, getChecked } = useChoiceGroup({\n value: value || null,\n getKey: getItemLabel,\n callBack: onChange,\n multiple: false,\n });\n\n const tabsDirection = getTabsDirection(linePosition);\n const isVertical = tabsDirection === 'vertical';\n const tabRefs = useRefs<HTMLDivElement>(items.length, [\n items.length,\n fitMode,\n isVertical,\n ]);\n\n const tabsDimensions = useResizeObserved(\n tabRefs,\n (el): TabDimensions => ({\n size: el?.[isVertical ? 'offsetHeight' : 'offsetWidth'] ?? 0,\n gap: el\n ? parseInt(\n getComputedStyle(el)[isVertical ? 'marginBottom' : 'marginRight'],\n 10,\n )\n : 0,\n }),\n );\n\n const activeTabIdx = items.findIndex(getChecked);\n\n const renderItem = (\n item: typeof items[number],\n onClick?: () => void,\n renderInDropdown?: boolean,\n ) =>\n renderItemProp({\n item,\n onChange: (...args) => {\n onClick?.();\n getOnChange(item)(...args);\n },\n checked: getChecked(item),\n label: getItemLabel(item).toString(),\n icon: getItemIcon(item),\n leftIcon: getItemLeftIcon(item),\n rightIcon: getItemRightIcon(item),\n leftSide: getItemLeftSide(item),\n rightSide: getItemRightSide(item),\n disabled: disabled || getItemDisabled(item),\n onlyIcon,\n size,\n iconSize,\n renderInDropdown,\n as: getItemAs(item) || 'button',\n tabRef: getItemRef(item),\n attributes: getItemAttributes(item),\n });\n\n const renderItemsList: RenderItemsListProp = ({\n withRunningLine = true,\n visibleIndexes,\n getTabClassName,\n }) => (\n <div className={cnTabs('List', { direction: tabsDirection, linePosition })}>\n {items.map((item, idx) => (\n <div\n ref={tabRefs[idx]}\n key={getItemLabel(item)}\n className={cnTabs('Tab', { direction: tabsDirection }, [\n getTabClassName?.(idx),\n ])}\n >\n {renderItem(item)}\n </div>\n ))}\n {withRunningLine && !disabled && (\n <TabsRunningLine\n visibleIndexes={visibleIndexes}\n linePosition={linePosition}\n tabsDimensions={tabsDimensions}\n activeTabIdx={activeTabIdx}\n />\n )}\n </div>\n );\n\n const Wrapper = getTabsWrapper(tabsDirection, fitMode);\n\n if (!items.length) {\n return null;\n }\n\n return (\n <div\n className={cnTabs({ size, view, direction: tabsDirection }, [\n className,\n cnMixScrollBar({ invisible: true }),\n ])}\n ref={ref}\n {...otherProps}\n >\n <Wrapper\n tabRefs={tabRefs}\n onChange={onChange}\n tabsDimensions={tabsDimensions}\n renderItem={renderItem}\n renderItemsList={renderItemsList}\n getItemLabel={getItemLabel}\n getItemChecked={getChecked}\n items={items}\n size={size}\n withScrollButtons={withScrollButtons}\n />\n {view === 'bordered' && <TabsBorderLine linePosition={linePosition} />}\n </div>\n );\n};\n\nexport const Tabs = forwardRef(TabsRender) as TabsComponent;\n\nexport * from './types';\n"],"mappings":"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"}
|
package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import './TabsFitModeScrollWrapper.css';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { TabsFitModeWrapperProps } from '../types';
|
|
4
|
-
export declare const TabsFitModeScrollWrapper: <ITEM>({ tabsDimensions, items, renderItemsList, getItemChecked, }: TabsFitModeWrapperProps<ITEM>) => React.ReactElement | null;
|
|
4
|
+
export declare const TabsFitModeScrollWrapper: <ITEM>({ tabsDimensions, items, renderItemsList, getItemChecked, withScrollButtons, }: TabsFitModeWrapperProps<ITEM>) => React.ReactElement | null;
|
package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TabsFitModeScrollWrapper.css";import{IconArrowLeft}from"@consta/icons/IconArrowLeft";import{IconArrowRight}from"@consta/icons/IconArrowRight";import React from"react";import{useResizeObserved}from"../../../hooks/useResizeObserved/useResizeObserved";import{useScrollPosition}from"../../../hooks/useScrollPosition/useScrollPosition";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{getTabsWidth,getVisibleTabsRange}from"../helpers";var cnTabsFitModeScrollWrapper=cn("TabsFitModeScrollWrapper");export var TabsFitModeScrollWrapper=function(a){var b=a.tabsDimensions,c=a.items,d=a.renderItemsList,e=a.getItemChecked,f=React.useRef(null),
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import"./TabsFitModeScrollWrapper.css";import{IconArrowLeft}from"@consta/icons/IconArrowLeft";import{IconArrowRight}from"@consta/icons/IconArrowRight";import React from"react";import{cnMixScrollBar}from"../../../mixs/MixScrollBar";import{useResizeObserved}from"../../../hooks/useResizeObserved/useResizeObserved";import{useScrollPosition}from"../../../hooks/useScrollPosition/useScrollPosition";import{cn}from"../../../utils/bem";import{Button}from"../../Button/Button";import{getTabsWidth,getVisibleTabsRange}from"../helpers";var cnTabsFitModeScrollWrapper=cn("TabsFitModeScrollWrapper");export var TabsFitModeScrollWrapper=function(a){var b=a.tabsDimensions,c=a.items,d=a.renderItemsList,e=a.getItemChecked,f=a.withScrollButtons,g=React.useRef(null),h=useResizeObserved(React.useMemo(function(){return[g]},[g,c]),function(a){var b;return{isScrollable:a&&a.scrollWidth>a.offsetWidth,width:null!==(b=null===a||void 0===a?void 0:a.offsetWidth)&&void 0!==b?b:0,paddingLeft:a?parseInt(getComputedStyle(a).paddingLeft,10):0}}),i=_slicedToArray(h,1),j=i[0],k=j.isScrollable,l=j.width,m=j.paddingLeft,n=useScrollPosition(g.current),o=n.scrollLeft,p=getVisibleTabsRange({tabsDimensions:b,containerWidth:l,containerPaddingLeft:m,scrollLeft:o}),q=_slicedToArray(p,2),r=q[0],s=q[1],t=function(a){if(!(a>=r&&a<=s)){var c,d=getTabsWidth(b.slice(0,a));null===(c=g.current)||void 0===c?void 0:c.scrollTo({left:d,behavior:"smooth"})}},u=function(){t(r-1)},v=function(){t(s+1)},w=c.findIndex(e);return React.useEffect(function(){k&&t(w)},[w,k]),React.createElement("div",{className:cnTabsFitModeScrollWrapper()},k&&f&&React.createElement(React.Fragment,null,["prev","next"].map(function(a){return React.createElement(Button,{key:a,view:"clear",type:"button",size:"xs",onlyIcon:!0,disabled:"prev"===a?0===r:s===c.length-1,iconLeft:"prev"===a?IconArrowLeft:IconArrowRight,className:cnTabsFitModeScrollWrapper("Button",{to:a}),onClick:"prev"===a?u:v})})),React.createElement("div",{className:cnTabsFitModeScrollWrapper("Content",cnMixScrollBar({invisible:!0})),ref:g},d({visibleIndexes:Array.from(Array(c.length).keys()),getTabClassName:function getTabClassName(a){return cnTabsFitModeScrollWrapper("Tab",{noMargin:a===c.length-1})}})))};
|
|
2
2
|
//# sourceMappingURL=TabsFitModeScrollWrapper.js.map
|
package/__internal__/src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabsFitModeScrollWrapper.js","names":["IconArrowLeft","IconArrowRight","React","useResizeObserved","useScrollPosition","cn","Button","getTabsWidth","getVisibleTabsRange","cnTabsFitModeScrollWrapper","TabsFitModeScrollWrapper","tabsDimensions","items","renderItemsList","getItemChecked","scrollContainerRef","useRef","useMemo","el","isScrollable","scrollWidth","offsetWidth","width","paddingLeft","parseInt","getComputedStyle","containerWidth","containerPaddingLeft","current","scrollLeft","firstVisibleTabIdx","lastVisibleTabIdx","scrollTabIntoView","idx","previousTabsWidth","slice","scrollTo","left","behavior","scrollPrev","scrollNext","checkedTabIdx","findIndex","useEffect","map","buttonTo","length","to","visibleIndexes","Array","from","keys","getTabClassName","noMargin"],"sources":["../../../../../../src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.tsx"],"sourcesContent":["import './TabsFitModeScrollWrapper.css';\n\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\nimport React from 'react';\n\nimport { useResizeObserved } from '../../../hooks/useResizeObserved/useResizeObserved';\nimport { useScrollPosition } from '../../../hooks/useScrollPosition/useScrollPosition';\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { getTabsWidth, getVisibleTabsRange } from '../helpers';\nimport { TabsFitModeWrapperProps } from '../types';\n\nconst cnTabsFitModeScrollWrapper = cn('TabsFitModeScrollWrapper');\n\nexport const TabsFitModeScrollWrapper = <ITEM,>({\n tabsDimensions,\n items,\n renderItemsList,\n getItemChecked,\n}: TabsFitModeWrapperProps<ITEM>): React.ReactElement | null => {\n const scrollContainerRef = React.useRef<HTMLDivElement>(null);\n const [\n { isScrollable, width: containerWidth, paddingLeft: containerPaddingLeft },\n ] = useResizeObserved(\n React.useMemo(() => [scrollContainerRef], [scrollContainerRef, items]),\n (el) => ({\n isScrollable: el && el.scrollWidth > el.offsetWidth,\n width: el?.offsetWidth ?? 0,\n paddingLeft: el ? parseInt(getComputedStyle(el).paddingLeft, 10) : 0,\n }),\n );\n const { scrollLeft } = useScrollPosition(scrollContainerRef.current);\n\n const [firstVisibleTabIdx, lastVisibleTabIdx] = getVisibleTabsRange({\n tabsDimensions,\n containerWidth,\n containerPaddingLeft,\n scrollLeft,\n });\n\n const scrollTabIntoView = (idx: number) => {\n const tabIsVisible = idx >= firstVisibleTabIdx && idx <= lastVisibleTabIdx;\n\n if (!tabIsVisible) {\n const previousTabsWidth = getTabsWidth(tabsDimensions.slice(0, idx));\n scrollContainerRef.current?.scrollTo({\n left: previousTabsWidth,\n behavior: 'smooth',\n });\n }\n };\n\n const scrollPrev = () => {\n scrollTabIntoView(firstVisibleTabIdx - 1);\n };\n\n const scrollNext = () => {\n scrollTabIntoView(lastVisibleTabIdx + 1);\n };\n\n // Подскролливаем к выбранному табу\n const checkedTabIdx = items.findIndex(getItemChecked);\n React.useEffect(() => {\n if (isScrollable) {\n scrollTabIntoView(checkedTabIdx);\n }\n }, [checkedTabIdx, isScrollable]);\n\n return (\n <div className={cnTabsFitModeScrollWrapper()}>\n {isScrollable && (\n <>\n {(['prev', 'next'] as const).map((buttonTo) => (\n <Button\n key={buttonTo}\n view=\"clear\"\n type=\"button\"\n size=\"xs\"\n onlyIcon\n disabled={\n buttonTo === 'prev'\n ? firstVisibleTabIdx === 0\n : lastVisibleTabIdx === items.length - 1\n }\n iconLeft={buttonTo === 'prev' ? IconArrowLeft : IconArrowRight}\n className={cnTabsFitModeScrollWrapper('Button', { to: buttonTo })}\n onClick={buttonTo === 'prev' ? scrollPrev : scrollNext}\n />\n ))}\n </>\n )}\n <div\n className={cnTabsFitModeScrollWrapper('Content')}\n ref={scrollContainerRef}\n >\n {renderItemsList({\n visibleIndexes: Array.from(Array(items.length).keys()),\n getTabClassName: (idx) =>\n cnTabsFitModeScrollWrapper('Tab', {\n noMargin: idx === items.length - 1,\n }),\n })}\n </div>\n </div>\n );\n};\n"],"mappings":"iEAAA,uCAEA,OAASA,aAAT,KAA8B,6BAA9B,CACA,OAASC,cAAT,KAA+B,8BAA/B,CACA,MAAOC,MAAP,KAAkB,OAAlB,CAEA,OAASC,iBAAT,0DACA,OAASC,iBAAT,0DACA,OAASC,EAAT,0BACA,OAASC,MAAT,2BACA,OAASC,YAAT,CAAuBC,mBAAvB,kBAGA,GAAMC,2BAA0B,CAAGJ,EAAE,CAAC,0BAAD,CAArC,CAEA,MAAO,IAAMK,yBAAwB,CAAG,
|
|
1
|
+
{"version":3,"file":"TabsFitModeScrollWrapper.js","names":["IconArrowLeft","IconArrowRight","React","cnMixScrollBar","useResizeObserved","useScrollPosition","cn","Button","getTabsWidth","getVisibleTabsRange","cnTabsFitModeScrollWrapper","TabsFitModeScrollWrapper","tabsDimensions","items","renderItemsList","getItemChecked","withScrollButtons","scrollContainerRef","useRef","useMemo","el","isScrollable","scrollWidth","offsetWidth","width","paddingLeft","parseInt","getComputedStyle","containerWidth","containerPaddingLeft","current","scrollLeft","firstVisibleTabIdx","lastVisibleTabIdx","scrollTabIntoView","idx","previousTabsWidth","slice","scrollTo","left","behavior","scrollPrev","scrollNext","checkedTabIdx","findIndex","useEffect","map","buttonTo","length","to","invisible","visibleIndexes","Array","from","keys","getTabClassName","noMargin"],"sources":["../../../../../../src/components/Tabs/TabsFitModeScrollWrapper/TabsFitModeScrollWrapper.tsx"],"sourcesContent":["import './TabsFitModeScrollWrapper.css';\n\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\nimport React from 'react';\n\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\n\nimport { useResizeObserved } from '../../../hooks/useResizeObserved/useResizeObserved';\nimport { useScrollPosition } from '../../../hooks/useScrollPosition/useScrollPosition';\nimport { cn } from '../../../utils/bem';\nimport { Button } from '../../Button/Button';\nimport { getTabsWidth, getVisibleTabsRange } from '../helpers';\nimport { TabsFitModeWrapperProps } from '../types';\n\nconst cnTabsFitModeScrollWrapper = cn('TabsFitModeScrollWrapper');\n\nexport const TabsFitModeScrollWrapper = <ITEM,>({\n tabsDimensions,\n items,\n renderItemsList,\n getItemChecked,\n withScrollButtons,\n}: TabsFitModeWrapperProps<ITEM>): React.ReactElement | null => {\n const scrollContainerRef = React.useRef<HTMLDivElement>(null);\n const [\n { isScrollable, width: containerWidth, paddingLeft: containerPaddingLeft },\n ] = useResizeObserved(\n React.useMemo(() => [scrollContainerRef], [scrollContainerRef, items]),\n (el) => ({\n isScrollable: el && el.scrollWidth > el.offsetWidth,\n width: el?.offsetWidth ?? 0,\n paddingLeft: el ? parseInt(getComputedStyle(el).paddingLeft, 10) : 0,\n }),\n );\n const { scrollLeft } = useScrollPosition(scrollContainerRef.current);\n\n const [firstVisibleTabIdx, lastVisibleTabIdx] = getVisibleTabsRange({\n tabsDimensions,\n containerWidth,\n containerPaddingLeft,\n scrollLeft,\n });\n\n const scrollTabIntoView = (idx: number) => {\n const tabIsVisible = idx >= firstVisibleTabIdx && idx <= lastVisibleTabIdx;\n\n if (!tabIsVisible) {\n const previousTabsWidth = getTabsWidth(tabsDimensions.slice(0, idx));\n scrollContainerRef.current?.scrollTo({\n left: previousTabsWidth,\n behavior: 'smooth',\n });\n }\n };\n\n const scrollPrev = () => {\n scrollTabIntoView(firstVisibleTabIdx - 1);\n };\n\n const scrollNext = () => {\n scrollTabIntoView(lastVisibleTabIdx + 1);\n };\n\n // Подскролливаем к выбранному табу\n const checkedTabIdx = items.findIndex(getItemChecked);\n React.useEffect(() => {\n if (isScrollable) {\n scrollTabIntoView(checkedTabIdx);\n }\n }, [checkedTabIdx, isScrollable]);\n\n return (\n <div className={cnTabsFitModeScrollWrapper()}>\n {isScrollable && withScrollButtons && (\n <>\n {(['prev', 'next'] as const).map((buttonTo) => (\n <Button\n key={buttonTo}\n view=\"clear\"\n type=\"button\"\n size=\"xs\"\n onlyIcon\n disabled={\n buttonTo === 'prev'\n ? firstVisibleTabIdx === 0\n : lastVisibleTabIdx === items.length - 1\n }\n iconLeft={buttonTo === 'prev' ? IconArrowLeft : IconArrowRight}\n className={cnTabsFitModeScrollWrapper('Button', { to: buttonTo })}\n onClick={buttonTo === 'prev' ? scrollPrev : scrollNext}\n />\n ))}\n </>\n )}\n <div\n className={cnTabsFitModeScrollWrapper(\n 'Content',\n cnMixScrollBar({ invisible: true }),\n )}\n ref={scrollContainerRef}\n >\n {renderItemsList({\n visibleIndexes: Array.from(Array(items.length).keys()),\n getTabClassName: (idx) =>\n cnTabsFitModeScrollWrapper('Tab', {\n noMargin: idx === items.length - 1,\n }),\n })}\n </div>\n </div>\n );\n};\n"],"mappings":"iEAAA,uCAEA,OAASA,aAAT,KAA8B,6BAA9B,CACA,OAASC,cAAT,KAA+B,8BAA/B,CACA,MAAOC,MAAP,KAAkB,OAAlB,CAEA,OAASC,cAAT,kCAEA,OAASC,iBAAT,0DACA,OAASC,iBAAT,0DACA,OAASC,EAAT,0BACA,OAASC,MAAT,2BACA,OAASC,YAAT,CAAuBC,mBAAvB,kBAGA,GAAMC,2BAA0B,CAAGJ,EAAE,CAAC,0BAAD,CAArC,CAEA,MAAO,IAAMK,yBAAwB,CAAG,WAMwB,IAL9DC,EAK8D,GAL9DA,cAK8D,CAJ9DC,CAI8D,GAJ9DA,KAI8D,CAH9DC,CAG8D,GAH9DA,eAG8D,CAF9DC,CAE8D,GAF9DA,cAE8D,CAD9DC,CAC8D,GAD9DA,iBAC8D,CACxDC,CAAkB,CAAGf,KAAK,CAACgB,MAAN,CAA6B,IAA7B,CADmC,GAI1Dd,iBAAiB,CACnBF,KAAK,CAACiB,OAAN,CAAc,iBAAM,CAACF,CAAD,CAAN,CAAd,CAA0C,CAACA,CAAD,CAAqBJ,CAArB,CAA1C,CADmB,CAEnB,SAACO,CAAD,cAAS,CACPC,YAAY,CAAED,CAAE,EAAIA,CAAE,CAACE,WAAH,CAAiBF,CAAE,CAACG,WADjC,CAEPC,KAAK,kBAAEJ,CAAF,WAAEA,CAAF,QAAEA,CAAE,CAAEG,WAAN,gBAAqB,CAFnB,CAGPE,WAAW,CAAEL,CAAE,CAAGM,QAAQ,CAACC,gBAAgB,CAACP,CAAD,CAAhB,CAAqBK,WAAtB,CAAmC,EAAnC,CAAX,CAAoD,CAH5D,CAAT,CAFmB,CAJyC,8BAG1DJ,CAH0D,GAG1DA,YAH0D,CAGrCO,CAHqC,GAG5CJ,KAH4C,CAGRK,CAHQ,GAGrBJ,WAHqB,GAYvCpB,iBAAiB,CAACY,CAAkB,CAACa,OAApB,CAZsB,CAYtDC,CAZsD,GAYtDA,UAZsD,GAcdtB,mBAAmB,CAAC,CAClEG,cAAc,CAAdA,CADkE,CAElEgB,cAAc,CAAdA,CAFkE,CAGlEC,oBAAoB,CAApBA,CAHkE,CAIlEE,UAAU,CAAVA,CAJkE,CAAD,CAdL,uBAcvDC,CAduD,MAcnCC,CAdmC,MAqBxDC,CAAiB,CAAG,SAACC,CAAD,CAAiB,CAGzC,GAAI,EAFiBA,CAAG,EAAIH,CAAP,EAA6BG,CAAG,EAAIF,CAErD,CAAJ,CAAmB,OACXG,CAAiB,CAAG5B,YAAY,CAACI,CAAc,CAACyB,KAAf,CAAqB,CAArB,CAAwBF,CAAxB,CAAD,CADrB,WAEjBlB,CAAkB,CAACa,OAFF,qBAEjB,EAA4BQ,QAA5B,CAAqC,CACnCC,IAAI,CAAEH,CAD6B,CAEnCI,QAAQ,CAAE,QAFyB,CAArC,CAID,CACF,CA/B6D,CAiCxDC,CAAU,CAAG,UAAM,CACvBP,CAAiB,CAACF,CAAkB,CAAG,CAAtB,CAClB,CAnC6D,CAqCxDU,CAAU,CAAG,UAAM,CACvBR,CAAiB,CAACD,CAAiB,CAAG,CAArB,CAClB,CAvC6D,CA0CxDU,CAAa,CAAG9B,CAAK,CAAC+B,SAAN,CAAgB7B,CAAhB,CA1CwC,CAiD9D,MANAb,MAAK,CAAC2C,SAAN,CAAgB,UAAM,CAChBxB,CADgB,EAElBa,CAAiB,CAACS,CAAD,CAEpB,CAJD,CAIG,CAACA,CAAD,CAAgBtB,CAAhB,CAJH,CAMA,CACE,2BAAK,SAAS,CAAEX,0BAA0B,EAA1C,EACGW,CAAY,EAAIL,CAAhB,EACC,wCACI,CAAC,MAAD,CAAS,MAAT,CAAD,CAA4B8B,GAA5B,CAAgC,SAACC,CAAD,QAC/B,qBAAC,MAAD,EACE,GAAG,CAAEA,CADP,CAEE,IAAI,CAAC,OAFP,CAGE,IAAI,CAAC,QAHP,CAIE,IAAI,CAAC,IAJP,CAKE,QAAQ,GALV,CAME,QAAQ,CACO,MAAb,GAAAA,CAAQ,CACmB,CAAvB,GAAAf,CADI,CAEJC,CAAiB,GAAKpB,CAAK,CAACmC,MAAN,CAAe,CAT7C,CAWE,QAAQ,CAAe,MAAb,GAAAD,CAAQ,CAAc/C,aAAd,CAA8BC,cAXlD,CAYE,SAAS,CAAES,0BAA0B,CAAC,QAAD,CAAW,CAAEuC,EAAE,CAAEF,CAAN,CAAX,CAZvC,CAaE,OAAO,CAAe,MAAb,GAAAA,CAAQ,CAAcN,CAAd,CAA2BC,CAb9C,EAD+B,CAAhC,CADH,CAFJ,CAsBE,2BACE,SAAS,CAAEhC,0BAA0B,CACnC,SADmC,CAEnCP,cAAc,CAAC,CAAE+C,SAAS,GAAX,CAAD,CAFqB,CADvC,CAKE,GAAG,CAAEjC,CALP,EAOGH,CAAe,CAAC,CACfqC,cAAc,CAAEC,KAAK,CAACC,IAAN,CAAWD,KAAK,CAACvC,CAAK,CAACmC,MAAP,CAAL,CAAoBM,IAApB,EAAX,CADD,CAEfC,eAAe,CAAE,yBAACpB,CAAD,QACfzB,2BAA0B,CAAC,KAAD,CAAQ,CAChC8C,QAAQ,CAAErB,CAAG,GAAKtB,CAAK,CAACmC,MAAN,CAAe,CADD,CAAR,CADX,CAFF,CAAD,CAPlB,CAtBF,CAuCH,CA/FM"}
|