@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":"helpers.js","names":["IconArrowFirst","IconArrowLast","IconArrowLeft","IconArrowRight","defaultGetItemLabel","item","label","defaultGetItemKey","key","defaultGetItemClickable","clickable","defaultGetItemAs","as","defaultGetItemAttributes","attributes","defaultGetItemRef","ref","defaultGetItemOnClick","onClick","withDefaultGetters","props","getItemLabel","getItemKey","getItemClickable","getItemOnClick","getItemAs","getItemAttributes","getItemRef","getMinVisibleCount","showFirstPage","showLastPage","range","start","end","Array","from","length","Math","abs","map","_el","i","floor","generateArr","params","count","page","visibleCountProp","visibleCount","minVisibleCount","min","max","boundaryStart","boundaryEnd","res","siblingsStart","siblingsEnd","push","getPagesArray","totalPages","currentPage","rest","el","toString","active","paginationArrowIconsMap","first","previous","next","last","getListValue"],"sources":["../../../../../src/components/Pagination/helpers.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport { IconArrowFirst } from '@consta/icons/IconArrowFirst';\nimport { IconArrowLast } from '@consta/icons/IconArrowLast';\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\n\nimport {\n PaginationArrowTypes,\n PaginationBaseItemDefault,\n PaginationBaseProps,\n PaginationItem,\n PaginationPropGetItemAs,\n PaginationPropGetItemAttributes,\n PaginationPropGetItemClickable,\n PaginationPropGetItemKey,\n PaginationPropGetItemLabel,\n PaginationPropGetItemOnClick,\n PaginationPropGetItemRef,\n} from './types';\n\nexport const defaultGetItemLabel: PaginationPropGetItemLabel<\n PaginationBaseItemDefault\n> = (item) => item.label;\nexport const defaultGetItemKey: PaginationPropGetItemKey<\n PaginationBaseItemDefault\n> = (item) => item.key;\nexport const defaultGetItemClickable: PaginationPropGetItemClickable<\n PaginationBaseItemDefault\n> = (item) => item.clickable;\nconst defaultGetItemAs: PaginationPropGetItemAs<PaginationBaseItemDefault> = (\n item,\n) => item.as;\nconst defaultGetItemAttributes: PaginationPropGetItemAttributes<\n PaginationBaseItemDefault\n> = (item) => item.attributes;\nconst defaultGetItemRef: PaginationPropGetItemRef<PaginationBaseItemDefault> = (\n item,\n) => item.ref;\nconst defaultGetItemOnClick: PaginationPropGetItemOnClick<\n PaginationBaseItemDefault\n> = (item) => item.onClick;\n\nexport const withDefaultGetters = (props: PaginationBaseProps) => ({\n ...props,\n getItemLabel: props.getItemLabel ?? defaultGetItemLabel,\n getItemKey: props.getItemKey ?? defaultGetItemKey,\n getItemClickable: props.getItemClickable ?? defaultGetItemClickable,\n getItemOnClick: props.getItemOnClick ?? defaultGetItemOnClick,\n getItemAs: props.getItemAs ?? defaultGetItemAs,\n getItemAttributes: props.getItemAttributes ?? defaultGetItemAttributes,\n getItemRef: props.getItemRef ?? defaultGetItemRef,\n});\n\nconst getMinVisibleCount = (showFirstPage: boolean, showLastPage: boolean) => {\n if (showFirstPage || showLastPage) {\n return 5;\n }\n if (showFirstPage && showLastPage) {\n return 7;\n }\n\n return 3;\n};\n\nconst range = (start: number, end: number) =>\n Array.from({ length: Math.abs(end - start + 1) }).map((_el, i) =>\n Math.floor(start + i),\n );\n\nconst generateArr = (params: {\n page: number;\n count: number;\n visibleCount: number;\n showFirstPage?: boolean;\n showLastPage?: boolean;\n}) => {\n const {\n count,\n page,\n showFirstPage = false,\n showLastPage = false,\n visibleCount: visibleCountProp,\n } = params;\n\n let visibleCount = visibleCountProp;\n\n const minVisibleCount = getMinVisibleCount(showFirstPage, showLastPage);\n\n if (minVisibleCount >= count) {\n visibleCount = count;\n } else {\n visibleCount = Math.min(count, Math.max(visibleCountProp, minVisibleCount));\n }\n\n const boundaryStart = showFirstPage ? 2 : 0;\n const boundaryEnd = showLastPage ? 2 : 0;\n\n const res = [];\n\n const siblingsStart =\n Math.floor((visibleCount - boundaryEnd - boundaryStart) / 2) || 0;\n const siblingsEnd =\n Math.floor((visibleCount - boundaryEnd - boundaryStart - 1) / 2) || 0;\n\n let start = 1;\n let end = count;\n\n if (visibleCount - boundaryEnd >= page + siblingsEnd) {\n end = visibleCount - (showLastPage ? 2 : 0);\n } else if (page - siblingsStart > count - visibleCount + boundaryStart) {\n start = count - visibleCount + (showFirstPage ? 3 : 1);\n } else {\n start = page - siblingsStart;\n end = page + siblingsEnd;\n }\n\n if (showFirstPage && start !== 1) {\n res.push(1, '...');\n }\n res.push(...range(Math.floor(start), Math.floor(end)));\n\n if (showLastPage && end !== count) {\n res.push('...', count);\n }\n\n return res;\n};\n\nexport const getPagesArray = (params: {\n currentPage: number;\n totalPages: number;\n visibleCount: number;\n showFirstPage?: boolean;\n showLastPage?: boolean;\n}): PaginationItem[] => {\n const { totalPages, currentPage, ...rest } = params;\n\n const count = Math.max(totalPages, 1);\n const page = Math.min(count, Math.max(1, currentPage));\n\n return generateArr({ page, count, ...rest }).map((el, i) => {\n return {\n key: typeof el === 'string' ? totalPages + i : el,\n label: el.toString(),\n page: typeof el === 'string' ? i : el,\n active: typeof el === 'number' ? el === page : false,\n clickable: typeof el !== 'number',\n };\n });\n};\n\nexport const paginationArrowIconsMap: Record<\n PaginationArrowTypes,\n IconComponent\n> = {\n first: IconArrowFirst,\n previous: IconArrowLeft,\n next: IconArrowRight,\n last: IconArrowLast,\n};\n\nexport const getListValue = (page: number): PaginationItem => ({\n key: page,\n page,\n label: page.toString(),\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","names":["IconArrowFirst","IconArrowLast","IconArrowLeft","IconArrowRight","range","defaultGetItemLabel","item","label","defaultGetItemKey","key","defaultGetItemClickable","clickable","firstPageSeparator","lastPageSeparator","pageSeparatorLabel","guardCurrentPage","currentPage","totalPages","Math","floor","max","min","getPagesArrayByVisibleCount","visibleCountProp","showFirstPage","showLastPage","visibleCount","page","visibleSegmentStartToCenter","ceil","visibleSegmentEndToCenter","slideStart","map","i","el","toString","getPagesArrayByWidth","currentPageArg","gap","buttonPadding","buttonMinWidth","maxSymbolSize","totalWidth","w","direction","leftIndex","rightIndex","pages","getButtonWidth","withGap","length","add","buttonWidth","push","unshift","moreButtonWidth","firstButtonWidth","lastButtonWidth","isAddFirstPage","isAddlastPage","slicedArray","array","slice","reduce","previous","currentValue","returned","getPagesArray","paginationArrowIconsMap","first","next","last"],"sources":["../../../../../src/components/Pagination/helpers.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport { IconArrowFirst } from '@consta/icons/IconArrowFirst';\nimport { IconArrowLast } from '@consta/icons/IconArrowLast';\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\n\nimport { range } from '##/utils/array';\n\nimport {\n PaginationArrowTypes,\n PaginationBaseItemDefault,\n PaginationItem,\n PaginationPropGetItemClickable,\n PaginationPropGetItemKey,\n PaginationPropGetItemLabel,\n} from './types';\n\nexport const defaultGetItemLabel: PaginationPropGetItemLabel<\n PaginationBaseItemDefault\n> = (item) => item.label;\nexport const defaultGetItemKey: PaginationPropGetItemKey<\n PaginationBaseItemDefault\n> = (item) => item.key;\nexport const defaultGetItemClickable: PaginationPropGetItemClickable<\n PaginationBaseItemDefault\n> = (item) => item.clickable ?? true;\n\nexport const firstPageSeparator = '<_';\nexport const lastPageSeparator = '_>';\nexport const pageSeparatorLabel = '...';\nexport const guardCurrentPage = (\n currentPage: number | undefined,\n totalPages: number,\n) => Math.floor(Math.max(1, Math.min(currentPage || 0, totalPages)));\n\nexport const getPagesArrayByVisibleCount = (\n currentPage: number,\n totalPages: number,\n visibleCountProp: number,\n showFirstPage?: boolean,\n showLastPage?: boolean,\n): PaginationItem[] => {\n const visibleCount = Math.floor(Math.min(visibleCountProp, totalPages));\n const page = guardCurrentPage(currentPage, totalPages);\n const visibleSegmentStartToCenter = Math.ceil(visibleCount / 2);\n const visibleSegmentEndToCenter = visibleCount - visibleSegmentStartToCenter;\n const slideStart = Math.max(0, page - visibleSegmentStartToCenter);\n\n return range(visibleCount).map((i) => {\n const el =\n i +\n slideStart +\n 1 -\n Math.max(0, page + visibleSegmentEndToCenter - totalPages);\n\n if (visibleCount >= 5 && visibleCount < totalPages) {\n if (showFirstPage && i === 0 && page - visibleSegmentStartToCenter > 0) {\n return {\n key: 1,\n label: '1',\n clickable: true,\n };\n }\n if (showFirstPage && i === 1 && page - visibleSegmentStartToCenter > 0) {\n return {\n key: firstPageSeparator,\n label: pageSeparatorLabel,\n clickable: false,\n };\n }\n if (\n showLastPage &&\n i === visibleCount - 1 &&\n page + visibleSegmentEndToCenter < totalPages\n ) {\n return {\n key: totalPages,\n label: totalPages.toString(),\n clickable: true,\n };\n }\n if (\n showLastPage &&\n i === visibleCount - 2 &&\n page + visibleSegmentEndToCenter < totalPages\n ) {\n return {\n key: lastPageSeparator,\n label: pageSeparatorLabel,\n clickable: false,\n };\n }\n }\n\n return {\n key: el,\n label: el.toString(),\n clickable: true,\n };\n });\n};\n\ntype GetPagesArray = (\n currentPage: number,\n totalPages: number,\n visibleCount: number,\n showFirstPage: boolean,\n showLastPage: boolean,\n gap: number,\n buttonPadding: number,\n buttonMinWidth: number,\n maxSymbolSize: number,\n totalWidth: number,\n) => PaginationItem[];\n\ntype GetPagesArrayByWidth = (\n currentPage: number,\n totalPages: number,\n showFirstPage: boolean,\n showLastPage: boolean,\n gap: number,\n buttonPadding: number,\n buttonMinWidth: number,\n maxSymbolSize: number,\n totalWidth: number,\n) => PaginationItem[];\n\nexport const getPagesArrayByWidth: GetPagesArrayByWidth = (\n currentPageArg,\n totalPages,\n showFirstPage,\n showLastPage,\n gap: number,\n buttonPadding: number,\n buttonMinWidth: number,\n maxSymbolSize: number,\n totalWidth: number,\n) => {\n const currentPage = guardCurrentPage(currentPageArg, totalPages);\n\n let w = totalWidth;\n // направлеине добавления кнопки, true - влево, false - вправо\n let direction = false;\n // индекс добавляемой кнопки относительно от выбранной\n let leftIndex = 0;\n let rightIndex = 1;\n let pages: (PaginationItem & { buttonWidth: number })[] = [];\n\n const getButtonWidth = (label: number, withGap: boolean) => {\n return (\n Math.max(\n label.toString().length * maxSymbolSize + buttonPadding,\n buttonMinWidth,\n ) + (withGap ? gap : 0)\n );\n };\n\n while (w > 0 && pages.length < totalPages) {\n const add = direction ? currentPage + rightIndex : currentPage - leftIndex;\n\n const buttonWidth: number = getButtonWidth(add, Boolean(pages.length));\n\n if (w - buttonWidth >= 0 && add <= totalPages && add >= 1) {\n const el = {\n key: add,\n label: add.toString(),\n clickable: true,\n buttonWidth,\n };\n\n if (direction) {\n pages.push(el);\n rightIndex += 1;\n } else {\n pages.unshift(el);\n leftIndex += 1;\n }\n }\n direction = !direction;\n\n w -= add <= totalPages && add >= 1 ? buttonWidth : 0;\n }\n\n if ((showFirstPage || showLastPage) && pages.length >= 5) {\n const moreButtonWidth = getButtonWidth(1, true);\n const firstButtonWidth = getButtonWidth(1, true);\n const lastButtonWidth = getButtonWidth(totalPages, true);\n\n let isAddFirstPage = false;\n let isAddlastPage = false;\n\n if (showFirstPage && pages[0].key !== 1) {\n let array = [...pages];\n\n while (array.length > 3) {\n if (array[0].key === currentPage) {\n break;\n }\n\n const slicedArray = array.slice(1);\n\n if (\n slicedArray\n .map((el) => el.buttonWidth)\n .reduce((previous, currentValue) => previous + currentValue) +\n firstButtonWidth +\n moreButtonWidth <=\n totalWidth\n ) {\n isAddFirstPage = true;\n pages = [...slicedArray];\n break;\n }\n\n array = slicedArray;\n }\n }\n\n if (showLastPage && pages[pages.length - 1].key !== totalPages) {\n let array = [...pages];\n\n while (array.length > 3) {\n if (array[array.length - 1].key === totalPages) {\n break;\n }\n\n const slicedArray = array.slice(0, -1);\n\n if (\n slicedArray\n .map((el) => el.buttonWidth)\n .reduce((previous, currentValue) => previous + currentValue) +\n lastButtonWidth +\n moreButtonWidth +\n (isAddFirstPage ? firstButtonWidth + moreButtonWidth : 0) <=\n totalWidth\n ) {\n isAddlastPage = true;\n pages = [...slicedArray];\n break;\n }\n\n array = slicedArray;\n }\n }\n\n pages = [\n ...(isAddFirstPage\n ? [\n {\n key: 1,\n label: '1',\n clickable: true,\n buttonWidth: firstButtonWidth,\n },\n {\n key: firstPageSeparator,\n label: pageSeparatorLabel,\n buttonWidth: moreButtonWidth,\n clickable: false,\n },\n ]\n : []),\n ...pages,\n ...(isAddlastPage\n ? [\n {\n key: lastPageSeparator,\n label: pageSeparatorLabel,\n buttonWidth: moreButtonWidth,\n clickable: false,\n },\n {\n key: totalPages,\n label: totalPages.toString(),\n clickable: true,\n buttonWidth: firstButtonWidth,\n },\n ]\n : []),\n ];\n }\n\n const returned: PaginationItem[] = pages.map(({ key, label, clickable }) => ({\n key,\n label,\n clickable,\n }));\n\n return returned;\n};\n\nexport const getPagesArray: GetPagesArray = (\n currentPage,\n totalPages = 1,\n visibleCount,\n showFirstPage,\n showLastPage,\n gap,\n buttonPadding,\n buttonMinWidth,\n maxSymbolSize,\n totalWidth,\n) => {\n return visibleCount\n ? getPagesArrayByVisibleCount(\n currentPage,\n totalPages,\n visibleCount,\n showFirstPage,\n showLastPage,\n )\n : getPagesArrayByWidth(\n currentPage,\n totalPages,\n showFirstPage,\n showLastPage,\n gap,\n buttonPadding,\n buttonMinWidth,\n maxSymbolSize,\n totalWidth,\n );\n};\n\nexport const paginationArrowIconsMap: Record<\n PaginationArrowTypes,\n IconComponent\n> = {\n first: IconArrowFirst,\n previous: IconArrowLeft,\n next: IconArrowRight,\n last: IconArrowLast,\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export*from"./Pagination";
|
|
1
|
+
export*from"./Pagination";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/Pagination/index.ts"],"sourcesContent":["export * from './Pagination';\
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/components/Pagination/index.ts"],"sourcesContent":["export * from './Pagination';\n"],"mappings":"AAAA"}
|
|
@@ -21,7 +21,7 @@ export declare type PaginationPropOnItemClick<ITEM> = (item: ITEM, params: {
|
|
|
21
21
|
e: React.MouseEvent;
|
|
22
22
|
}) => void;
|
|
23
23
|
export declare type PaginationPropOnChange<ITEM> = (value: ITEM, params: {
|
|
24
|
-
e: React.MouseEvent |
|
|
24
|
+
e: React.MouseEvent | KeyboardEvent;
|
|
25
25
|
}) => void;
|
|
26
26
|
export declare type PaginationPropArrow = boolean | IconComponent | {
|
|
27
27
|
label?: string;
|
|
@@ -42,41 +42,31 @@ declare type PaginationArrowsProps = {
|
|
|
42
42
|
arrows?: never;
|
|
43
43
|
hotKeys?: never;
|
|
44
44
|
});
|
|
45
|
-
declare type
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
hotKeys?: [PaginationPropHotKey?, PaginationPropHotKey?];
|
|
50
|
-
} | {
|
|
51
|
-
arrows?: never;
|
|
52
|
-
hotKeys?: never;
|
|
53
|
-
});
|
|
54
|
-
declare type Props<ITEM> = {
|
|
55
|
-
form?: PaginationPropForm;
|
|
56
|
-
size?: PaginationPropSize;
|
|
57
|
-
containerEventListener?: HTMLElement | Window;
|
|
58
|
-
value?: ITEM;
|
|
59
|
-
items?: ITEM extends number ? number : ITEM[];
|
|
60
|
-
onChange?: PaginationPropOnChange<ITEM>;
|
|
45
|
+
export declare type PaginationItem = {
|
|
46
|
+
key: string | number;
|
|
47
|
+
label: string;
|
|
48
|
+
clickable: boolean;
|
|
61
49
|
};
|
|
62
50
|
export declare type PaginationProps<TYPE extends PaginationPropType> = PropsWithHTMLAttributes<{
|
|
63
51
|
type?: TYPE;
|
|
64
52
|
showFirstPage?: boolean;
|
|
65
53
|
showLastPage?: boolean;
|
|
66
54
|
visibleCount?: number;
|
|
67
|
-
|
|
55
|
+
form?: PaginationPropForm;
|
|
56
|
+
size?: PaginationPropSize;
|
|
57
|
+
containerEventListener?: HTMLElement | Window;
|
|
58
|
+
value?: number;
|
|
59
|
+
items?: number;
|
|
60
|
+
onChange?: PaginationPropOnChange<number>;
|
|
61
|
+
getItemAs?: PaginationPropGetItemAs<PaginationItem>;
|
|
62
|
+
getItemAttributes?: PaginationPropGetItemAttributes<PaginationItem>;
|
|
63
|
+
getItemRef?: PaginationPropGetItemRef<PaginationItem>;
|
|
64
|
+
}, HTMLDivElement> & PaginationArrowsProps & (TYPE extends 'input' ? {
|
|
68
65
|
getTotalLabel?: (pages: number) => string | number;
|
|
69
66
|
} : {
|
|
70
67
|
getTotalLabel?: never;
|
|
71
68
|
});
|
|
72
69
|
export declare type PaginationComponent = <TYPE extends PaginationPropType>(props: PaginationProps<TYPE>) => React.ReactElement | null;
|
|
73
|
-
export declare type PaginationItem = {
|
|
74
|
-
key: number;
|
|
75
|
-
label: string;
|
|
76
|
-
active?: boolean;
|
|
77
|
-
clickable?: boolean;
|
|
78
|
-
page: number;
|
|
79
|
-
};
|
|
80
70
|
export declare type PaginationBaseItemDefault = {
|
|
81
71
|
key: string | number;
|
|
82
72
|
label?: string;
|
|
@@ -95,19 +85,13 @@ export declare type PaginationPropGetItemRef<ITEM> = (item: ITEM) => PaginationB
|
|
|
95
85
|
export declare type PaginationPropGetItemOnClick<ITEM> = (item: ITEM) => PaginationBaseItemDefault['onClick'];
|
|
96
86
|
declare type Mappers<ITEM = PaginationBaseItemDefault> = {
|
|
97
87
|
getItemLabel?: PaginationPropGetItemLabel<ITEM>;
|
|
98
|
-
getItemKey
|
|
88
|
+
getItemKey: PaginationPropGetItemKey<ITEM>;
|
|
99
89
|
getItemAs?: PaginationPropGetItemAs<ITEM>;
|
|
100
90
|
getItemAttributes?: PaginationPropGetItemAttributes<ITEM>;
|
|
101
91
|
getItemRef?: PaginationPropGetItemRef<ITEM>;
|
|
102
92
|
getItemClickable?: PaginationPropGetItemClickable<ITEM>;
|
|
103
93
|
getItemOnClick?: PaginationPropGetItemOnClick<ITEM>;
|
|
104
94
|
};
|
|
105
|
-
export declare type PaginationBaseProps<ITEM = PaginationBaseItemDefault> = PropsWithHTMLAttributes<Mappers<ITEM> & Props<ITEM> & PaginationBaseArrowsProps & (ITEM extends {
|
|
106
|
-
key: PaginationBaseItemDefault['key'];
|
|
107
|
-
} ? {} : {
|
|
108
|
-
getItemKey: PaginationPropGetItemKey<ITEM>;
|
|
109
|
-
}), HTMLDivElement>;
|
|
110
|
-
export declare type PaginationBaseComponent = <ITEM = PaginationBaseItemDefault>(props: PaginationBaseProps<ITEM>) => React.ReactElement | null;
|
|
111
95
|
export declare type PaginationArrowProps = PropsWithHTMLAttributes<{
|
|
112
96
|
icon?: IconComponent;
|
|
113
97
|
form?: PaginationPropForm;
|
|
@@ -139,10 +123,6 @@ export declare type PaginationListProps<ITEM> = PropsWithHTMLAttributesAndRef<{
|
|
|
139
123
|
items: ITEM[];
|
|
140
124
|
value?: ITEM;
|
|
141
125
|
onItemClick?: PaginationPropOnItemClick<ITEM>;
|
|
142
|
-
}, HTMLDivElement> & Mappers<ITEM
|
|
143
|
-
label: string;
|
|
144
|
-
} ? {} : {
|
|
145
|
-
getItemKey: PaginationPropGetItemKey<ITEM>;
|
|
146
|
-
});
|
|
126
|
+
}, HTMLDivElement> & Mappers<ITEM>;
|
|
147
127
|
export declare type PaginationListComponent = <ITEM extends PaginationBaseItemDefault>(props: PaginationListProps<ITEM>) => React.ReactElement | null;
|
|
148
128
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["paginationPropForm","paginationPropFormDefault","paginationPropSize","paginationPropSizeDefault","paginationPropType","paginationPropTypeDefault"],"sources":["../../../../../src/components/Pagination/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { AsAttributes, AsTags } from '##/utils/types/AsTags';\nimport { PropsWithAsAttributes } from '##/utils/types/PropsWithAsAttributes';\nimport {\n PropsWithHTMLAttributes,\n PropsWithHTMLAttributesAndRef,\n} from '##/utils/types/PropsWithHTMLAttributes';\n\nexport const paginationPropForm = ['default', 'brick', 'round'] as const;\nexport type PaginationPropForm = typeof paginationPropForm[number];\nexport const paginationPropFormDefault: PaginationPropForm =\n paginationPropForm[0];\n\nexport const paginationPropSize = ['m', 'xs', 's', 'l'] as const;\nexport type PaginationPropSize = typeof paginationPropSize[number];\nexport const paginationPropSizeDefault: PaginationPropSize =\n paginationPropSize[0];\n\nexport const paginationPropType = ['default', 'input'] as const;\nexport type PaginationPropType = typeof paginationPropType[number];\nexport const paginationPropTypeDefault: PaginationPropType =\n paginationPropType[0];\n\nexport type PaginationArrowTypes = 'first' | 'previous' | 'next' | 'last';\n\nexport type PaginationPropHotKey = { label: string; keys: string[] };\n\nexport type PaginationPropOnItemClick<ITEM> = (\n item: ITEM,\n params: { e: React.MouseEvent },\n) => void;\n\nexport type PaginationPropOnChange<ITEM> = (\n value: ITEM,\n params: { e: React.MouseEvent |
|
|
1
|
+
{"version":3,"file":"types.js","names":["paginationPropForm","paginationPropFormDefault","paginationPropSize","paginationPropSizeDefault","paginationPropType","paginationPropTypeDefault"],"sources":["../../../../../src/components/Pagination/types.ts"],"sourcesContent":["import { IconComponent } from '@consta/icons/Icon';\nimport React from 'react';\n\nimport { AsAttributes, AsTags } from '##/utils/types/AsTags';\nimport { PropsWithAsAttributes } from '##/utils/types/PropsWithAsAttributes';\nimport {\n PropsWithHTMLAttributes,\n PropsWithHTMLAttributesAndRef,\n} from '##/utils/types/PropsWithHTMLAttributes';\n\nexport const paginationPropForm = ['default', 'brick', 'round'] as const;\nexport type PaginationPropForm = typeof paginationPropForm[number];\nexport const paginationPropFormDefault: PaginationPropForm =\n paginationPropForm[0];\n\nexport const paginationPropSize = ['m', 'xs', 's', 'l'] as const;\nexport type PaginationPropSize = typeof paginationPropSize[number];\nexport const paginationPropSizeDefault: PaginationPropSize =\n paginationPropSize[0];\n\nexport const paginationPropType = ['default', 'input'] as const;\nexport type PaginationPropType = typeof paginationPropType[number];\nexport const paginationPropTypeDefault: PaginationPropType =\n paginationPropType[0];\n\nexport type PaginationArrowTypes = 'first' | 'previous' | 'next' | 'last';\n\nexport type PaginationPropHotKey = { label: string; keys: string[] };\n\nexport type PaginationPropOnItemClick<ITEM> = (\n item: ITEM,\n params: { e: React.MouseEvent },\n) => void;\n\nexport type PaginationPropOnChange<ITEM> = (\n value: ITEM,\n params: { e: React.MouseEvent | KeyboardEvent },\n) => void;\n\n// ARROWS\n\nexport type PaginationPropArrow =\n | boolean\n | IconComponent\n | {\n label?: string;\n icon?: IconComponent;\n };\n\nexport type PaginationBasePropArrow =\n | false\n | {\n label?: string;\n disabled?: boolean;\n icon?: IconComponent;\n onClick?: React.MouseEventHandler;\n };\n\ntype PaginationArrowsProps = {\n outerMostArrows?: [PaginationPropArrow?, PaginationPropArrow?];\n} & (\n | {\n arrows: [PaginationPropArrow?, PaginationPropArrow?];\n hotKeys?: [PaginationPropHotKey?, PaginationPropHotKey?];\n }\n | {\n arrows?: never;\n hotKeys?: never;\n }\n);\n\nexport type PaginationItem = {\n key: string | number;\n label: string;\n clickable: boolean;\n};\n\nexport type PaginationProps<TYPE extends PaginationPropType> =\n PropsWithHTMLAttributes<\n {\n type?: TYPE;\n showFirstPage?: boolean;\n showLastPage?: boolean;\n visibleCount?: number;\n form?: PaginationPropForm;\n size?: PaginationPropSize;\n containerEventListener?: HTMLElement | Window;\n value?: number;\n items?: number;\n onChange?: PaginationPropOnChange<number>;\n getItemAs?: PaginationPropGetItemAs<PaginationItem>;\n getItemAttributes?: PaginationPropGetItemAttributes<PaginationItem>;\n getItemRef?: PaginationPropGetItemRef<PaginationItem>;\n },\n HTMLDivElement\n > &\n PaginationArrowsProps &\n (TYPE extends 'input'\n ? { getTotalLabel?: (pages: number) => string | number }\n : {\n getTotalLabel?: never;\n });\n\nexport type PaginationComponent = <TYPE extends PaginationPropType>(\n props: PaginationProps<TYPE>,\n) => React.ReactElement | null;\n\nexport type PaginationBaseItemDefault = {\n key: string | number;\n label?: string;\n as?: AsTags;\n ref?: React.RefObject<HTMLElement>;\n clickable?: boolean;\n attributes?: AsAttributes;\n onClick?: React.MouseEventHandler;\n};\n\nexport type PaginationPropGetItemKey<ITEM> = (\n item: ITEM,\n) => PaginationBaseItemDefault['key'];\nexport type PaginationPropGetItemLabel<ITEM> = (\n item: ITEM,\n) => PaginationBaseItemDefault['label'];\nexport type PaginationPropGetItemClickable<ITEM> = (\n item: ITEM,\n) => PaginationBaseItemDefault['clickable'];\nexport type PaginationPropGetItemAs<ITEM> = (\n item: ITEM,\n) => PaginationBaseItemDefault['as'];\nexport type PaginationPropGetItemAttributes<ITEM> = (\n item: ITEM,\n) => PaginationBaseItemDefault['attributes'];\nexport type PaginationPropGetItemRef<ITEM> = (\n item: ITEM,\n) => PaginationBaseItemDefault['ref'];\nexport type PaginationPropGetItemOnClick<ITEM> = (\n item: ITEM,\n) => PaginationBaseItemDefault['onClick'];\n\ntype Mappers<ITEM = PaginationBaseItemDefault> = {\n getItemLabel?: PaginationPropGetItemLabel<ITEM>;\n getItemKey: PaginationPropGetItemKey<ITEM>;\n getItemAs?: PaginationPropGetItemAs<ITEM>;\n getItemAttributes?: PaginationPropGetItemAttributes<ITEM>;\n getItemRef?: PaginationPropGetItemRef<ITEM>;\n getItemClickable?: PaginationPropGetItemClickable<ITEM>;\n getItemOnClick?: PaginationPropGetItemOnClick<ITEM>;\n};\n\nexport type PaginationArrowProps = PropsWithHTMLAttributes<\n {\n icon?: IconComponent;\n form?: PaginationPropForm;\n size?: PaginationPropSize;\n disabled?: boolean;\n orientation?: 'start' | 'end';\n label?: string;\n caption?: string;\n },\n HTMLButtonElement\n>;\n\nexport type PaginationItemProps<AS extends AsTags = 'button'> =\n PropsWithAsAttributes<\n {\n form?: PaginationPropForm;\n size?: PaginationPropSize;\n label?: string;\n active?: boolean;\n clickable?: boolean;\n },\n AS\n >;\n\nexport type PaginationItemComponent = <AS extends AsTags = 'button'>(\n props: PaginationItemProps<AS>,\n) => React.ReactElement | null;\n\nexport type PaginationNumberInputProps = PropsWithHTMLAttributes<\n {\n value?: number;\n onChange?: PaginationPropOnChange<number>;\n form?: PaginationPropForm;\n size?: PaginationPropSize;\n total: number;\n getTotalLabel?: (pages: number) => string | number;\n },\n HTMLDivElement\n>;\n\nexport type PaginationListProps<ITEM> = PropsWithHTMLAttributesAndRef<\n {\n form?: PaginationPropForm;\n size?: PaginationPropSize;\n items: ITEM[];\n value?: ITEM;\n onItemClick?: PaginationPropOnItemClick<ITEM>;\n },\n HTMLDivElement\n> &\n Mappers<ITEM>;\n\nexport type PaginationListComponent = <ITEM extends PaginationBaseItemDefault>(\n props: PaginationListProps<ITEM>,\n) => React.ReactElement | null;\n"],"mappings":"AAUA,MAAO,IAAMA,mBAAkB,CAAG,CAAC,SAAD,CAAY,OAAZ,CAAqB,OAArB,CAA3B,CAEP,MAAO,IAAMC,0BAA6C,CACxDD,kBAAkB,CAAC,CAAD,CADb,CAGP,MAAO,IAAME,mBAAkB,CAAG,CAAC,GAAD,CAAM,IAAN,CAAY,GAAZ,CAAiB,GAAjB,CAA3B,CAEP,MAAO,IAAMC,0BAA6C,CACxDD,kBAAkB,CAAC,CAAD,CADb,CAGP,MAAO,IAAME,mBAAkB,CAAG,CAAC,SAAD,CAAY,OAAZ,CAA3B,CAEP,MAAO,IAAMC,0BAA6C,CACxDD,kBAAkB,CAAC,CAAD,CADb"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import {
|
|
2
|
+
import { PaginationPropArrow, PaginationPropHotKey, PaginationPropSize, PaginationPropType } from './types';
|
|
3
3
|
declare type UsePaginationItemsProps = {
|
|
4
4
|
visibleCount?: number;
|
|
5
5
|
value: number;
|
|
@@ -9,11 +9,12 @@ declare type UsePaginationItemsProps = {
|
|
|
9
9
|
containerEventListener?: HTMLElement | Window;
|
|
10
10
|
size: PaginationPropSize;
|
|
11
11
|
hotKeys?: [PaginationPropHotKey?, PaginationPropHotKey?];
|
|
12
|
+
arrows?: [PaginationPropArrow?, PaginationPropArrow?];
|
|
13
|
+
outerMostArrows?: [PaginationPropArrow?, PaginationPropArrow?];
|
|
14
|
+
type?: PaginationPropType;
|
|
15
|
+
handleNext: (e: React.MouseEvent | KeyboardEvent) => void;
|
|
16
|
+
handlePrevious: (e: React.MouseEvent | KeyboardEvent) => void;
|
|
12
17
|
};
|
|
13
18
|
export declare const itemSizeMap: Record<PaginationPropSize, number>;
|
|
14
|
-
export declare const usePaginationItems: (props: UsePaginationItemsProps) =>
|
|
15
|
-
buttonRefs: import("react").RefObject<HTMLButtonElement>[];
|
|
16
|
-
wrapperRef: import("react").RefObject<HTMLDivElement>;
|
|
17
|
-
pages: PaginationItem[];
|
|
18
|
-
};
|
|
19
|
+
export declare const usePaginationItems: (props: UsePaginationItemsProps) => readonly [import("./types").PaginationItem[], import("react").RefObject<HTMLDivElement>[], number];
|
|
19
20
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
1
|
+
import{useMemo}from"react";import{useRefs}from"../../hooks/useRefs";import{useResizeObserved}from"../../hooks/useResizeObserved";import{getPagesArray}from"./helpers";import{usePaginationKeys}from"./usePaginationKeys";export var itemSizeMap={l:48,m:40,s:32,xs:24};var getElementWidth=function(a){var b;return null!==(b=null===a||void 0===a?void 0:a.getBoundingClientRect().width)&&void 0!==b?b:0},hashArrows=function(a){return(null===a||void 0===a?void 0:a.map(Boolean).join("-"))||"false-false"};export var usePaginationItems=function(a){var b=a.visibleCount,c=a.value,d=a.items,e=a.showFirstPage,f=a.showLastPage,g=a.containerEventListener,h=a.hotKeys,i=a.outerMostArrows,j=a.type,k=a.arrows,l=a.handleNext,m=a.handlePrevious,n=useRefs(20,[d,j,hashArrows(i),hashArrows(k)]),o=useResizeObserved(n,getElementWidth),p=o[7]-o[5]-o[6],q=o[18]-o[19],r=o[5],s=Math.max(o[8],o[9],o[10],o[11],o[12],o[13],o[14],o[15],o[16],o[17]),t=o[4]-(o[0]?o[0]+p:0)-(o[1]?o[1]+p:0)-(o[2]?o[2]+p:0)-(o[3]?o[3]+p:0),u=useMemo(function(){return"default"===j&&r?getPagesArray(c,d,b||0,e||!1,f||!1,p,q,r,s,t):[]},[j,c,d,b,e,f,p,q,r,s,t]);return usePaginationKeys({containerEventListener:g,hotKeys:h,handleNext:l,handlePrevious:m}),[u,n,s]};
|
|
2
2
|
//# sourceMappingURL=usePaginationItems.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePaginationItems.js","names":["
|
|
1
|
+
{"version":3,"file":"usePaginationItems.js","names":["useMemo","useRefs","useResizeObserved","getPagesArray","usePaginationKeys","itemSizeMap","l","m","s","xs","getElementWidth","el","getBoundingClientRect","width","hashArrows","arrows","map","Boolean","join","usePaginationItems","props","visibleCount","value","items","showFirstPage","showLastPage","containerEventListener","hotKeys","outerMostArrows","type","handleNext","handlePrevious","refs","gap","buttonPadding","buttonMinWidth","maxSymbolSize","Math","max","totalWidth","pages"],"sources":["../../../../../src/components/Pagination/usePaginationItems.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useRefs } from '##/hooks/useRefs';\nimport { useResizeObserved } from '##/hooks/useResizeObserved';\n\nimport { getPagesArray } from './helpers';\nimport {\n PaginationPropArrow,\n PaginationPropHotKey,\n PaginationPropSize,\n PaginationPropType,\n} from './types';\nimport { usePaginationKeys } from './usePaginationKeys';\n\ntype UsePaginationItemsProps = {\n visibleCount?: number;\n value: number;\n items: number;\n showFirstPage?: boolean;\n showLastPage?: boolean;\n containerEventListener?: HTMLElement | Window;\n size: PaginationPropSize;\n hotKeys?: [PaginationPropHotKey?, PaginationPropHotKey?];\n arrows?: [PaginationPropArrow?, PaginationPropArrow?];\n outerMostArrows?: [PaginationPropArrow?, PaginationPropArrow?];\n type?: PaginationPropType;\n handleNext: (e: React.MouseEvent | KeyboardEvent) => void;\n handlePrevious: (e: React.MouseEvent | KeyboardEvent) => void;\n};\n\nexport const itemSizeMap: Record<PaginationPropSize, number> = {\n l: 48,\n m: 40,\n s: 32,\n xs: 24,\n};\n\nconst getElementWidth = (el: HTMLElement | null) =>\n el?.getBoundingClientRect().width ?? 0;\n\nconst hashArrows = (\n arrows: [PaginationPropArrow?, PaginationPropArrow?] | undefined,\n) => arrows?.map(Boolean).join('-') || 'false-false';\n\nexport const usePaginationItems = (props: UsePaginationItemsProps) => {\n const {\n visibleCount,\n value,\n items,\n showFirstPage,\n showLastPage,\n containerEventListener,\n hotKeys,\n outerMostArrows,\n type,\n arrows,\n handleNext,\n handlePrevious,\n } = props;\n\n const refs = useRefs<HTMLDivElement>(20, [\n items,\n type,\n hashArrows(outerMostArrows),\n hashArrows(arrows),\n ]);\n\n const width = useResizeObserved(refs, getElementWidth);\n\n // расстояние между кнопками\n const gap = width[7] - width[5] - width[6];\n // внутренний отступ кнопки\n const buttonPadding = width[18] - width[19];\n // минимальная ширина кнопки\n const buttonMinWidth = width[5];\n // Максималяная ширина символа\n const maxSymbolSize = Math.max(\n width[8],\n width[9],\n width[10],\n width[11],\n width[12],\n width[13],\n width[14],\n width[15],\n width[16],\n width[17],\n );\n // разрешенная ширина\n const totalWidth =\n width[4] -\n (width[0] ? width[0] + gap : 0) -\n (width[1] ? width[1] + gap : 0) -\n (width[2] ? width[2] + gap : 0) -\n (width[3] ? width[3] + gap : 0);\n\n const pages = useMemo(\n () =>\n type === 'default' && buttonMinWidth\n ? getPagesArray(\n value,\n items,\n visibleCount || 0,\n showFirstPage || false,\n showLastPage || false,\n gap,\n buttonPadding,\n buttonMinWidth,\n maxSymbolSize,\n totalWidth,\n )\n : [],\n [\n type,\n value,\n items,\n visibleCount,\n showFirstPage,\n showLastPage,\n gap,\n buttonPadding,\n buttonMinWidth,\n maxSymbolSize,\n totalWidth,\n ],\n );\n\n usePaginationKeys({\n containerEventListener,\n hotKeys,\n handleNext,\n handlePrevious,\n });\n\n return [pages, refs, maxSymbolSize] as const;\n};\n"],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ import { PaginationPropHotKey } from './types';
|
|
|
3
3
|
declare type UsePaginationKeysParams = {
|
|
4
4
|
containerEventListener?: HTMLElement | Window;
|
|
5
5
|
hotKeys?: [PaginationPropHotKey?, PaginationPropHotKey?];
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
handleNext: (e: React.MouseEvent | KeyboardEvent) => void;
|
|
7
|
+
handlePrevious: (e: React.MouseEvent | KeyboardEvent) => void;
|
|
8
8
|
};
|
|
9
9
|
export declare const usePaginationKeys: (params: UsePaginationKeysParams) => void;
|
|
10
10
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useCallback,
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useCallback,useLayoutEffect,useRef}from"react";import{useMutableRef}from"../../hooks/useMutableRef";export var usePaginationKeys=function(a){var b=a.containerEventListener,c=void 0===b?window:b,d=a.hotKeys,e=a.handleNext,f=a.handlePrevious,g=useRef([]),h=useMutableRef([d||[],e,f]),i=useCallback(function(a){var b=a.key;g.current=g.current.filter(function(a){return a!==b})},[]),j=useCallback(function(a){var b=a.key,c=_slicedToArray(h.current[0],2),d=c[0],e=c[1];if(null!==d&&void 0!==d&&d.keys.includes(b)||null!==e&&void 0!==e&&e.keys.includes(b)){var f=[].concat(_toConsumableArray(g.current),[b]);null!==e&&void 0!==e&&e.keys.every(function(a){return f.includes(a)})?h.current[1](a):null!==d&&void 0!==d&&d.keys.every(function(a){return f.includes(a)})&&h.current[2](a),g.current=f}},[]);useLayoutEffect(function(){return c.addEventListener("keydown",j),c.addEventListener("keyup",i),function(){c.removeEventListener("keydown",j),c.removeEventListener("keyup",i)}},[c])};
|
|
2
2
|
//# sourceMappingURL=usePaginationKeys.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePaginationKeys.js","names":["useCallback","
|
|
1
|
+
{"version":3,"file":"usePaginationKeys.js","names":["useCallback","useLayoutEffect","useRef","useMutableRef","usePaginationKeys","params","containerEventListener","window","hotKeys","handleNext","handlePrevious","keys","mutableRefs","keyUpListener","event","key","current","filter","hotKey","keyDownListener","start","end","includes","newKeys","every","addEventListener","removeEventListener"],"sources":["../../../../../src/components/Pagination/usePaginationKeys.tsx"],"sourcesContent":["import { useCallback, useLayoutEffect, useRef } from 'react';\n\nimport { useMutableRef } from '##/hooks/useMutableRef';\n\nimport { PaginationPropHotKey } from './types';\n\ntype UsePaginationKeysParams = {\n containerEventListener?: HTMLElement | Window;\n hotKeys?: [PaginationPropHotKey?, PaginationPropHotKey?];\n handleNext: (e: React.MouseEvent | KeyboardEvent) => void;\n handlePrevious: (e: React.MouseEvent | KeyboardEvent) => void;\n};\n\nexport const usePaginationKeys = (params: UsePaginationKeysParams) => {\n const {\n containerEventListener = window,\n hotKeys,\n handleNext,\n handlePrevious,\n } = params;\n const keys: React.MutableRefObject<string[]> = useRef([]);\n const mutableRefs = useMutableRef([\n hotKeys || [],\n handleNext,\n handlePrevious,\n ] as const);\n\n const keyUpListener: EventListener = useCallback((event) => {\n const { key } = event as KeyboardEvent;\n keys.current = keys.current.filter((hotKey) => hotKey !== key);\n }, []);\n\n const keyDownListener = useCallback((event: KeyboardEvent) => {\n const { key } = event;\n const [start, end] = mutableRefs.current[0];\n\n if (start?.keys.includes(key) || end?.keys.includes(key)) {\n const newKeys = [...keys.current, key];\n if (end?.keys.every((hotKey) => newKeys.includes(hotKey))) {\n mutableRefs.current[1](event);\n } else if (start?.keys.every((hotKey) => newKeys.includes(hotKey))) {\n mutableRefs.current[2](event);\n }\n keys.current = newKeys;\n }\n }, []);\n\n useLayoutEffect(() => {\n containerEventListener.addEventListener(\n 'keydown',\n keyDownListener as EventListener,\n );\n containerEventListener.addEventListener('keyup', keyUpListener);\n return () => {\n containerEventListener.removeEventListener(\n 'keydown',\n keyDownListener as EventListener,\n );\n containerEventListener.removeEventListener('keyup', keyUpListener);\n };\n }, [containerEventListener]);\n};\n"],"mappings":"0IAAA,OAASA,WAAT,CAAsBC,eAAtB,CAAuCC,MAAvC,KAAqD,OAArD,CAEA,OAASC,aAAT,iCAWA,MAAO,IAAMC,kBAAiB,CAAG,SAACC,CAAD,CAAqC,OAMhEA,CANgE,CAElEC,sBAFkE,CAElEA,CAFkE,YAEzCC,MAFyC,GAGlEC,CAHkE,CAMhEH,CANgE,CAGlEG,OAHkE,CAIlEC,CAJkE,CAMhEJ,CANgE,CAIlEI,UAJkE,CAKlEC,CALkE,CAMhEL,CANgE,CAKlEK,cALkE,CAO9DC,CAAsC,CAAGT,MAAM,CAAC,EAAD,CAPe,CAQ9DU,CAAW,CAAGT,aAAa,CAAC,CAChCK,CAAO,EAAI,EADqB,CAEhCC,CAFgC,CAGhCC,CAHgC,CAAD,CARmC,CAc9DG,CAA4B,CAAGb,WAAW,CAAC,SAACc,CAAD,CAAW,CAC1D,GAAQC,EAAR,CAAgBD,CAAhB,CAAQC,GAAR,CACAJ,CAAI,CAACK,OAAL,CAAeL,CAAI,CAACK,OAAL,CAAaC,MAAb,CAAoB,SAACC,CAAD,QAAYA,EAAM,GAAKH,CAAvB,CAApB,CAChB,CAH+C,CAG7C,EAH6C,CAdoB,CAmB9DI,CAAe,CAAGnB,WAAW,CAAC,SAACc,CAAD,CAA0B,IACpDC,EADoD,CAC5CD,CAD4C,CACpDC,GADoD,kBAEvCH,CAAW,CAACI,OAAZ,CAAoB,CAApB,CAFuC,IAErDI,CAFqD,MAE9CC,CAF8C,MAI5D,GAAI,OAAAD,CAAK,WAALA,CAAA,EAAAA,CAAK,CAAET,IAAP,CAAYW,QAAZ,CAAqBP,CAArB,UAA6BM,CAA7B,WAA6BA,CAA7B,EAA6BA,CAAG,CAAEV,IAAL,CAAUW,QAAV,CAAmBP,CAAnB,CAAjC,CAA0D,CACxD,GAAMQ,EAAO,8BAAOZ,CAAI,CAACK,OAAZ,GAAqBD,CAArB,EAAb,CADwD,OAEpDM,CAFoD,WAEpDA,CAFoD,EAEpDA,CAAG,CAAEV,IAAL,CAAUa,KAAV,CAAgB,SAACN,CAAD,QAAYK,EAAO,CAACD,QAAR,CAAiBJ,CAAjB,CAAZ,CAAhB,CAFoD,CAGtDN,CAAW,CAACI,OAAZ,CAAoB,CAApB,EAAuBF,CAAvB,CAHsD,QAI7CM,CAJ6C,WAI7CA,CAJ6C,EAI7CA,CAAK,CAAET,IAAP,CAAYa,KAAZ,CAAkB,SAACN,CAAD,QAAYK,EAAO,CAACD,QAAR,CAAiBJ,CAAjB,CAAZ,CAAlB,CAJ6C,EAKtDN,CAAW,CAACI,OAAZ,CAAoB,CAApB,EAAuBF,CAAvB,CALsD,CAOxDH,CAAI,CAACK,OAAL,CAAeO,CAChB,CACF,CAbkC,CAahC,EAbgC,CAnBiC,CAkCpEtB,eAAe,CAAC,UAAM,CAMpB,MALAK,EAAsB,CAACmB,gBAAvB,CACE,SADF,CAEEN,CAFF,CAKA,CADAb,CAAsB,CAACmB,gBAAvB,CAAwC,OAAxC,CAAiDZ,CAAjD,CACA,CAAO,UAAM,CACXP,CAAsB,CAACoB,mBAAvB,CACE,SADF,CAEEP,CAFF,CADW,CAKXb,CAAsB,CAACoB,mBAAvB,CAA2C,OAA3C,CAAoDb,CAApD,CACD,CACF,CAbc,CAaZ,CAACP,CAAD,CAbY,CAchB,CAhDM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["steps","direction","size","className","activeStepIndex","onItemClick","getItemContent","getItemLabel","getItemPoint","getItemProgress","getItemStatus","getItemTooltipContent","getItemLineStatus","getItemOnClick","style"];import"./ProgressStepBar.css";import{IconArrowLeft}from"@consta/icons/IconArrowLeft";import{IconArrowRight}from"@consta/icons/IconArrowRight";import React,{createRef,forwardRef,useEffect,useLayoutEffect,useMemo,useRef,useState}from"react";import{cnMixScrollBar}from"../../mixs/MixScrollBar";import{useComponentSize}from"../../hooks/useComponentSize/useComponentSize";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{useOverflow}from"../../hooks/useOverflow/useOverflow";import{useScrollElements}from"../../hooks/useScrollElements/useScrollElements";import{Button}from"../Button/Button";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{calculateLines,cnProgressStepBar,getItemPosition,progressStepBarPropDirectionDefault,progressStepBarPropSizeDefault,withDefaultGetters}from"./helpers";import{ProgressStepBarItem}from"./ProgressStepBarItem/ProgressStepBarItem";import{ProgressStepBarLine}from"./ProgressStepBarLine/ProgressStepBarLine";export var COMPONENT_NAME="ProgressStepBar";function ProgressStepBarRender(a,b){var c=useRef(null),d=usePropsHandler(COMPONENT_NAME,withDefaultGetters(a),c),e=d.steps,f=void 0===e?[]:e,g=d.direction,h=void 0===g?progressStepBarPropDirectionDefault:g,i=d.size,j=void 0===i?progressStepBarPropSizeDefault:i,k=d.className,l=d.activeStepIndex,m=d.onItemClick,n=d.getItemContent,o=d.getItemLabel,p=d.getItemPoint,q=d.getItemProgress,r=d.getItemStatus,s=d.getItemTooltipContent,t=d.getItemLineStatus,u=d.getItemOnClick,v=d.style,w=_objectWithoutProperties(d,_excluded),x=useState(l||0),y=_slicedToArray(x,2),z=y[0],A=y[1],B=useState([]),C=_slicedToArray(B,2),D=C[0],E=C[1],F=useRef(null),G=useComponentSize(c),H=G.width,I=G.height,J=useScrollElements(f),K=J.refs,L=J.scrollTo,M=useMemo(function(){return Array(f.length).fill(null).map(function(){return createRef()})},[f.length]);useLayoutEffect(function(){var a=[],b=calculateLines(K,h);f.forEach(function(c,d){var e;d!==f.length-1&&a.push({status:t(c)||"normal",size:null!==(e=b[d])&&void 0!==e?e:0})}),E(a)},[l,f,h,j,H,I]),useEffect(function(){A(l||0)},[l]),useEffect(function(){L(z)},[z]);var
|
|
1
|
+
import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["steps","direction","size","className","activeStepIndex","onItemClick","getItemContent","getItemLabel","getItemPoint","getItemProgress","getItemStatus","getItemTooltipContent","getItemLineStatus","getItemOnClick","style"];import"./ProgressStepBar.css";import{IconArrowLeft}from"@consta/icons/IconArrowLeft";import{IconArrowRight}from"@consta/icons/IconArrowRight";import React,{createRef,forwardRef,useEffect,useLayoutEffect,useMemo,useRef,useState}from"react";import{cnMixScrollBar}from"../../mixs/MixScrollBar";import{useComponentSize}from"../../hooks/useComponentSize/useComponentSize";import{useForkRef}from"../../hooks/useForkRef/useForkRef";import{useOverflow}from"../../hooks/useOverflow/useOverflow";import{useScrollElements}from"../../hooks/useScrollElements/useScrollElements";import{Button}from"../Button/Button";import{usePropsHandler}from"../EventInterceptor/usePropsHandler";import{calculateLines,cnProgressStepBar,getItemPosition,progressStepBarPropDirectionDefault,progressStepBarPropSizeDefault,withDefaultGetters}from"./helpers";import{ProgressStepBarItem}from"./ProgressStepBarItem/ProgressStepBarItem";import{ProgressStepBarLine}from"./ProgressStepBarLine/ProgressStepBarLine";export var COMPONENT_NAME="ProgressStepBar";function ProgressStepBarRender(a,b){var c=useRef(null),d=usePropsHandler(COMPONENT_NAME,withDefaultGetters(a),c),e=d.steps,f=void 0===e?[]:e,g=d.direction,h=void 0===g?progressStepBarPropDirectionDefault:g,i=d.size,j=void 0===i?progressStepBarPropSizeDefault:i,k=d.className,l=d.activeStepIndex,m=d.onItemClick,n=d.getItemContent,o=d.getItemLabel,p=d.getItemPoint,q=d.getItemProgress,r=d.getItemStatus,s=d.getItemTooltipContent,t=d.getItemLineStatus,u=d.getItemOnClick,v=d.style,w=_objectWithoutProperties(d,_excluded),x=useState(l||0),y=_slicedToArray(x,2),z=y[0],A=y[1],B=useState([]),C=_slicedToArray(B,2),D=C[0],E=C[1],F=useRef(null),G=useComponentSize(c),H=G.width,I=G.height,J=useScrollElements(f),K=J.refs,L=J.scrollTo,M=useMemo(function(){return Array(f.length).fill(null).map(function(){return createRef()})},[f.length]),N=useOverflow({currentRef:F});useLayoutEffect(function(){var a=[],b=calculateLines(K,h);f.forEach(function(c,d){var e;d!==f.length-1&&a.push({status:t(c)||"normal",size:null!==(e=b[d])&&void 0!==e?e:0})}),E(a)},[l,f,h,j,H,I,N]),useEffect(function(){A(l||0)},[l]),useEffect(function(){L(z)},[z]);var O=function(a){a&&0!==z&&A(z-1),a||z===f.length-1||A(z+1)},P=function(a,b){var c=u(a),d=m?function(d){m(a,{e:d,index:b}),null===c||void 0===c?void 0:c(d)}:void 0;return{content:n(a),label:o(a),point:p(a),progress:q(a),status:"number"==typeof l&&l>=b?r(a)||"normal":"system",tooltipContent:s(a),size:j,position:getItemPosition(b,f.length),pointRef:M[b],direction:h,className:cnProgressStepBar("Item"),onClick:c||d,key:cnProgressStepBar({index:b}),tooltipZIndex:"number"==typeof(null===v||void 0===v?void 0:v.zIndex)?v.zIndex+1:void 0}};return React.createElement("div",Object.assign({},w,{style:v,className:cnProgressStepBar({isOverflow:N},[k,cnMixScrollBar()]),ref:useForkRef([b,c])}),N&&"vertical"!==h&&React.createElement(Button,{iconLeft:function iconLeft(){return React.createElement(IconArrowLeft,{size:"xs"})},view:"clear",onlyIcon:!0,type:"button",size:"xs",className:cnProgressStepBar("Button",{side:"left"}),onClick:function onClick(){return O(!0)}}),React.createElement("div",{ref:F,className:cnProgressStepBar("List",{direction:h,overflow:N})},React.createElement(ProgressStepBarLine,{lines:D,size:j,direction:h,activeStepIndex:l}),f.map(function(a,b){return React.createElement(ProgressStepBarItem,Object.assign({ref:K[b]},P(a,b)))})),N&&"vertical"!==h&&React.createElement(Button,{iconLeft:function iconLeft(){return React.createElement(IconArrowRight,{size:"xs"})},view:"clear",onlyIcon:!0,size:"xs",type:"button",className:cnProgressStepBar("Button",{side:"right"}),onClick:function onClick(){return O(!1)}}))}export var ProgressStepBar=forwardRef(ProgressStepBarRender);
|
|
2
2
|
//# sourceMappingURL=ProgressStepBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressStepBar.js","names":["IconArrowLeft","IconArrowRight","React","createRef","forwardRef","useEffect","useLayoutEffect","useMemo","useRef","useState","cnMixScrollBar","useComponentSize","useForkRef","useOverflow","useScrollElements","Button","usePropsHandler","calculateLines","cnProgressStepBar","getItemPosition","progressStepBarPropDirectionDefault","progressStepBarPropSizeDefault","withDefaultGetters","ProgressStepBarItem","ProgressStepBarLine","COMPONENT_NAME","ProgressStepBarRender","props","ref","containerRef","steps","direction","size","className","activeStepIndex","onItemClick","getItemContent","getItemLabel","getItemPoint","getItemProgress","getItemStatus","getItemTooltipContent","getItemLineStatus","getItemOnClick","style","otherProps","visibleIndex","setVisibleIndex","lines","setLines","listRef","width","height","refs","scrollTo","stepsRef","Array","length","fill","map","linesArray","sizes","forEach","step","index","push","status","changePosition","prev","getStepItem","item","onClick","onItemClickHandler","e","content","label","point","progress","tooltipContent","position","pointRef","key","tooltipZIndex","zIndex","isOverflow","currentRef","side","overflow","ProgressStepBar"],"sources":["../../../../../src/components/ProgressStepBar/ProgressStepBar.tsx"],"sourcesContent":["import './ProgressStepBar.css';\n\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\nimport React, {\n createRef,\n forwardRef,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\n\nimport { useComponentSize } from '../../hooks/useComponentSize/useComponentSize';\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { useOverflow } from '../../hooks/useOverflow/useOverflow';\nimport { useScrollElements } from '../../hooks/useScrollElements/useScrollElements';\nimport { Button } from '../Button/Button';\nimport { usePropsHandler } from '../EventInterceptor/usePropsHandler';\nimport {\n calculateLines,\n cnProgressStepBar,\n getItemPosition,\n Line,\n ProgressStepBarComponent,\n ProgressStepBarItemDefault,\n ProgressStepBarItemProps,\n progressStepBarPropDirectionDefault,\n ProgressStepBarProps,\n progressStepBarPropSizeDefault,\n withDefaultGetters,\n} from './helpers';\nimport { ProgressStepBarItem } from './ProgressStepBarItem/ProgressStepBarItem';\nimport { ProgressStepBarLine } from './ProgressStepBarLine/ProgressStepBarLine';\n\nexport const COMPONENT_NAME = 'ProgressStepBar' as const;\n\nfunction ProgressStepBarRender<ITEM = ProgressStepBarItemDefault>(\n props: ProgressStepBarProps<ITEM>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n const {\n steps = [],\n direction = progressStepBarPropDirectionDefault,\n size = progressStepBarPropSizeDefault,\n className,\n activeStepIndex,\n onItemClick,\n getItemContent,\n getItemLabel,\n getItemPoint,\n getItemProgress,\n getItemStatus,\n getItemTooltipContent,\n getItemLineStatus,\n getItemOnClick,\n style,\n ...otherProps\n } = usePropsHandler(COMPONENT_NAME, withDefaultGetters(props), containerRef);\n\n const [visibleIndex, setVisibleIndex] = useState<number>(\n activeStepIndex || 0,\n );\n const [lines, setLines] = useState<Line[]>([]);\n\n const listRef = useRef<HTMLDivElement>(null);\n\n const { width, height } = useComponentSize(containerRef);\n\n const { refs, scrollTo } = useScrollElements(steps);\n\n const stepsRef = useMemo(\n () =>\n new Array(steps.length)\n .fill(null)\n .map(() => createRef<HTMLButtonElement>()),\n [steps.length],\n );\n\n useLayoutEffect(() => {\n const linesArray: Line[] = [];\n const sizes = calculateLines(refs, direction);\n\n steps.forEach((step, index) => {\n if (index !== steps.length - 1)\n linesArray.push({\n status: getItemLineStatus(step) || 'normal',\n size: sizes[index] ?? 0,\n });\n });\n setLines(linesArray);\n }, [activeStepIndex, steps, direction, size, width, height]);\n\n useEffect(() => {\n setVisibleIndex(activeStepIndex || 0);\n }, [activeStepIndex]);\n\n useEffect(() => {\n scrollTo(visibleIndex);\n }, [visibleIndex]);\n\n const changePosition = (prev: boolean) => {\n if (prev && visibleIndex !== 0) {\n setVisibleIndex(visibleIndex - 1);\n }\n if (!prev && visibleIndex !== steps.length - 1) {\n setVisibleIndex(visibleIndex + 1);\n }\n };\n\n const getStepItem: (item: ITEM, index: number) => ProgressStepBarItemProps = (\n item,\n index,\n ) => {\n const onClick = getItemOnClick(item);\n\n const onItemClickHandler = onItemClick\n ? (e: React.MouseEvent<Element, MouseEvent>) => {\n onItemClick(item, { e, index });\n onClick?.(e);\n }\n : undefined;\n\n return {\n content: getItemContent(item),\n label: getItemLabel(item),\n point: getItemPoint(item),\n progress: getItemProgress(item),\n status:\n typeof activeStepIndex === 'number' && activeStepIndex >= index\n ? getItemStatus(item) || 'normal'\n : 'system',\n tooltipContent: getItemTooltipContent(item),\n size,\n position: getItemPosition(index, steps.length),\n pointRef: stepsRef[index] as React.RefObject<HTMLButtonElement>,\n direction,\n className: cnProgressStepBar('Item'),\n onClick: onClick || onItemClickHandler,\n key: cnProgressStepBar({ index }),\n tooltipZIndex:\n typeof style?.zIndex === 'number' ? style.zIndex + 1 : undefined,\n };\n };\n\n const isOverflow = useOverflow({ currentRef: listRef });\n\n return (\n <div\n {...otherProps}\n style={style}\n className={cnProgressStepBar({ isOverflow }, [\n className,\n cnMixScrollBar(),\n ])}\n ref={useForkRef([ref, containerRef])}\n >\n {isOverflow && direction !== 'vertical' && (\n <Button\n iconLeft={() => <IconArrowLeft size=\"xs\" />}\n view=\"clear\"\n onlyIcon\n type=\"button\"\n size=\"xs\"\n className={cnProgressStepBar('Button', { side: 'left' })}\n onClick={() => changePosition(true)}\n />\n )}\n <div\n ref={listRef}\n className={cnProgressStepBar('List', {\n direction,\n overflow: isOverflow,\n })}\n >\n <ProgressStepBarLine\n lines={lines}\n size={size}\n direction={direction}\n activeStepIndex={activeStepIndex}\n />\n {steps.map((step, index) => (\n <ProgressStepBarItem\n ref={refs[index] as React.RefObject<HTMLDivElement>}\n {...getStepItem(step, index)}\n />\n ))}\n </div>\n {isOverflow && direction !== 'vertical' && (\n <Button\n iconLeft={() => <IconArrowRight size=\"xs\" />}\n view=\"clear\"\n onlyIcon\n size=\"xs\"\n type=\"button\"\n className={cnProgressStepBar('Button', { side: 'right' })}\n onClick={() => changePosition(false)}\n />\n )}\n </div>\n );\n}\n\nexport const ProgressStepBar = forwardRef(\n ProgressStepBarRender,\n) as ProgressStepBarComponent;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProgressStepBar.js","names":["IconArrowLeft","IconArrowRight","React","createRef","forwardRef","useEffect","useLayoutEffect","useMemo","useRef","useState","cnMixScrollBar","useComponentSize","useForkRef","useOverflow","useScrollElements","Button","usePropsHandler","calculateLines","cnProgressStepBar","getItemPosition","progressStepBarPropDirectionDefault","progressStepBarPropSizeDefault","withDefaultGetters","ProgressStepBarItem","ProgressStepBarLine","COMPONENT_NAME","ProgressStepBarRender","props","ref","containerRef","steps","direction","size","className","activeStepIndex","onItemClick","getItemContent","getItemLabel","getItemPoint","getItemProgress","getItemStatus","getItemTooltipContent","getItemLineStatus","getItemOnClick","style","otherProps","visibleIndex","setVisibleIndex","lines","setLines","listRef","width","height","refs","scrollTo","stepsRef","Array","length","fill","map","isOverflow","currentRef","linesArray","sizes","forEach","step","index","push","status","changePosition","prev","getStepItem","item","onClick","onItemClickHandler","e","content","label","point","progress","tooltipContent","position","pointRef","key","tooltipZIndex","zIndex","side","overflow","ProgressStepBar"],"sources":["../../../../../src/components/ProgressStepBar/ProgressStepBar.tsx"],"sourcesContent":["import './ProgressStepBar.css';\n\nimport { IconArrowLeft } from '@consta/icons/IconArrowLeft';\nimport { IconArrowRight } from '@consta/icons/IconArrowRight';\nimport React, {\n createRef,\n forwardRef,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { cnMixScrollBar } from '##/mixs/MixScrollBar';\n\nimport { useComponentSize } from '../../hooks/useComponentSize/useComponentSize';\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { useOverflow } from '../../hooks/useOverflow/useOverflow';\nimport { useScrollElements } from '../../hooks/useScrollElements/useScrollElements';\nimport { Button } from '../Button/Button';\nimport { usePropsHandler } from '../EventInterceptor/usePropsHandler';\nimport {\n calculateLines,\n cnProgressStepBar,\n getItemPosition,\n Line,\n ProgressStepBarComponent,\n ProgressStepBarItemDefault,\n ProgressStepBarItemProps,\n progressStepBarPropDirectionDefault,\n ProgressStepBarProps,\n progressStepBarPropSizeDefault,\n withDefaultGetters,\n} from './helpers';\nimport { ProgressStepBarItem } from './ProgressStepBarItem/ProgressStepBarItem';\nimport { ProgressStepBarLine } from './ProgressStepBarLine/ProgressStepBarLine';\n\nexport const COMPONENT_NAME = 'ProgressStepBar' as const;\n\nfunction ProgressStepBarRender<ITEM = ProgressStepBarItemDefault>(\n props: ProgressStepBarProps<ITEM>,\n ref: React.Ref<HTMLDivElement>,\n) {\n const containerRef = useRef<HTMLDivElement>(null);\n\n const {\n steps = [],\n direction = progressStepBarPropDirectionDefault,\n size = progressStepBarPropSizeDefault,\n className,\n activeStepIndex,\n onItemClick,\n getItemContent,\n getItemLabel,\n getItemPoint,\n getItemProgress,\n getItemStatus,\n getItemTooltipContent,\n getItemLineStatus,\n getItemOnClick,\n style,\n ...otherProps\n } = usePropsHandler(COMPONENT_NAME, withDefaultGetters(props), containerRef);\n\n const [visibleIndex, setVisibleIndex] = useState<number>(\n activeStepIndex || 0,\n );\n const [lines, setLines] = useState<Line[]>([]);\n\n const listRef = useRef<HTMLDivElement>(null);\n\n const { width, height } = useComponentSize(containerRef);\n\n const { refs, scrollTo } = useScrollElements(steps);\n\n const stepsRef = useMemo(\n () =>\n new Array(steps.length)\n .fill(null)\n .map(() => createRef<HTMLButtonElement>()),\n [steps.length],\n );\n const isOverflow = useOverflow({ currentRef: listRef });\n\n useLayoutEffect(() => {\n const linesArray: Line[] = [];\n const sizes = calculateLines(refs, direction);\n\n steps.forEach((step, index) => {\n if (index !== steps.length - 1)\n linesArray.push({\n status: getItemLineStatus(step) || 'normal',\n size: sizes[index] ?? 0,\n });\n });\n setLines(linesArray);\n }, [activeStepIndex, steps, direction, size, width, height, isOverflow]);\n\n useEffect(() => {\n setVisibleIndex(activeStepIndex || 0);\n }, [activeStepIndex]);\n\n useEffect(() => {\n scrollTo(visibleIndex);\n }, [visibleIndex]);\n\n const changePosition = (prev: boolean) => {\n if (prev && visibleIndex !== 0) {\n setVisibleIndex(visibleIndex - 1);\n }\n if (!prev && visibleIndex !== steps.length - 1) {\n setVisibleIndex(visibleIndex + 1);\n }\n };\n\n const getStepItem: (item: ITEM, index: number) => ProgressStepBarItemProps = (\n item,\n index,\n ) => {\n const onClick = getItemOnClick(item);\n\n const onItemClickHandler = onItemClick\n ? (e: React.MouseEvent<Element, MouseEvent>) => {\n onItemClick(item, { e, index });\n onClick?.(e);\n }\n : undefined;\n\n return {\n content: getItemContent(item),\n label: getItemLabel(item),\n point: getItemPoint(item),\n progress: getItemProgress(item),\n status:\n typeof activeStepIndex === 'number' && activeStepIndex >= index\n ? getItemStatus(item) || 'normal'\n : 'system',\n tooltipContent: getItemTooltipContent(item),\n size,\n position: getItemPosition(index, steps.length),\n pointRef: stepsRef[index] as React.RefObject<HTMLButtonElement>,\n direction,\n className: cnProgressStepBar('Item'),\n onClick: onClick || onItemClickHandler,\n key: cnProgressStepBar({ index }),\n tooltipZIndex:\n typeof style?.zIndex === 'number' ? style.zIndex + 1 : undefined,\n };\n };\n\n return (\n <div\n {...otherProps}\n style={style}\n className={cnProgressStepBar({ isOverflow }, [\n className,\n cnMixScrollBar(),\n ])}\n ref={useForkRef([ref, containerRef])}\n >\n {isOverflow && direction !== 'vertical' && (\n <Button\n iconLeft={() => <IconArrowLeft size=\"xs\" />}\n view=\"clear\"\n onlyIcon\n type=\"button\"\n size=\"xs\"\n className={cnProgressStepBar('Button', { side: 'left' })}\n onClick={() => changePosition(true)}\n />\n )}\n <div\n ref={listRef}\n className={cnProgressStepBar('List', {\n direction,\n overflow: isOverflow,\n })}\n >\n <ProgressStepBarLine\n lines={lines}\n size={size}\n direction={direction}\n activeStepIndex={activeStepIndex}\n />\n {steps.map((step, index) => (\n <ProgressStepBarItem\n ref={refs[index] as React.RefObject<HTMLDivElement>}\n {...getStepItem(step, index)}\n />\n ))}\n </div>\n {isOverflow && direction !== 'vertical' && (\n <Button\n iconLeft={() => <IconArrowRight size=\"xs\" />}\n view=\"clear\"\n onlyIcon\n size=\"xs\"\n type=\"button\"\n className={cnProgressStepBar('Button', { side: 'right' })}\n onClick={() => changePosition(false)}\n />\n )}\n </div>\n );\n}\n\nexport const ProgressStepBar = forwardRef(\n ProgressStepBarRender,\n) as ProgressStepBarComponent;\n"],"mappings":"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"}
|
|
@@ -39,3 +39,4 @@ export declare const isValidValue: (value: number, min: number, max: number, ste
|
|
|
39
39
|
export declare const getValueByPosition: (position: TrackPosition, sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>, min: number, max: number, step?: number | number[]) => number;
|
|
40
40
|
export declare const getNewValue: (changedValue: number, currentValue: number | [number, number], step: number | number[], min: number, max: number, activeButton: ActiveButton) => number | [number, number];
|
|
41
41
|
export declare const analyzeDivisionValue: (value: number, step: number | number[], min: number, max: number) => number;
|
|
42
|
+
export declare const valueToSring: (value: number | number[] | undefined | null) => string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{getSteps}from"../useSliderStationing";export var isRangeParams=function(a){return!!a.range};export var isNotRangeParams=function(a){return!a.range};export var trackPosition=function(a){return"clientX"in a?{x:a.clientX,y:a.clientY}:{x:a.changedTouches[0].clientX,y:a.changedTouches[0].clientY}};export var getActiveValue=function(a,b){return Array.isArray(a)?a["number"==typeof b?b:0]:a};export var detectActiveButton=function(a,b){var c=null;return b.forEach(function(b,d){var e=b.current;if(e&&a){var f=e.getBoundingClientRect(),g=f.x,h=f.y,i=f.width,j=f.height;g<=a.x&&g+i>=a.x&&h<=a.y&&h+j>=a.y&&(c=d,e.focus())}}),c};export var getValidValue=function(a,b,c,d){if("number"==typeof a){if(a>=c)return c;if(a<=b)return b;if(!Array.isArray(d)){var e=null===d||void 0===d?void 0:d.toString().split(".")[1],f=d||1;if(1>Math.abs(a))return+a.toFixed(e?e.length:0);if(a<b)return b;for(var g=b;g<=c;g+=f)if(a>=g&&a<g+f)return+(a<g+f/2?g:g+f).toFixed(e?e.length:0);return c}var h=a;return d.forEach(function(e,f){var g=b,i=c;0===f?i=d[f+1]:f===d.length-1?(g=e,i=c):(i=d[f+1],g=e),a<=i&&a>=g&&((i+g)/2>a?h=g:h=i)}),h}return a};export var isValidValue=function(a,b,c,d){return getValidValue(a,b,c,d)===a};export var getValueByPosition=function(a,b,c,d,e){if(b.current&&a){var f=b.current.getBoundingClientRect(),g=f.x,h=f.width,i=Math.abs(d-c),j=c+(a.x-g)*i/h;return getValidValue(j,c,d,e)}return 0};export var getNewValue=function(a,b,c,d,e,f){var g=getValidValue(analyzeDivisionValue(a,c,d,e),d,e,c);return Array.isArray(b)?1===f?[b[0],g]:[g,b[1]]:g};export var analyzeDivisionValue=function(a,b,c,d){var e=a;if(Array.isArray(b)){var f=getSteps(b,c,d);f.forEach(function(b){a&&b.min<a&&b.max>=a&&((b.max+b.min)/2>a?e=b.min:e=b.max)})}else{if(a>=d)return d;if(a<=c)return c;var g=(a-c)%b;e=g>b/2?b-g+a:a-g}return e};
|
|
1
|
+
import{getSteps}from"../useSliderStationing";export var isRangeParams=function(a){return!!a.range};export var isNotRangeParams=function(a){return!a.range};export var trackPosition=function(a){return"clientX"in a?{x:a.clientX,y:a.clientY}:{x:a.changedTouches[0].clientX,y:a.changedTouches[0].clientY}};export var getActiveValue=function(a,b){return Array.isArray(a)?a["number"==typeof b?b:0]:a};export var detectActiveButton=function(a,b){var c=null;return b.forEach(function(b,d){var e=b.current;if(e&&a){var f=e.getBoundingClientRect(),g=f.x,h=f.y,i=f.width,j=f.height;g<=a.x&&g+i>=a.x&&h<=a.y&&h+j>=a.y&&(c=d,e.focus())}}),c};export var getValidValue=function(a,b,c,d){if("number"==typeof a){if(a>=c)return c;if(a<=b)return b;if(!Array.isArray(d)){var e=null===d||void 0===d?void 0:d.toString().split(".")[1],f=d||1;if(1>Math.abs(a))return+a.toFixed(e?e.length:0);if(a<b)return b;for(var g=b;g<=c;g+=f)if(a>=g&&a<g+f)return+(a<g+f/2?g:g+f).toFixed(e?e.length:0);return c}var h=a;return d.forEach(function(e,f){var g=b,i=c;0===f?i=d[f+1]:f===d.length-1?(g=e,i=c):(i=d[f+1],g=e),a<=i&&a>=g&&((i+g)/2>a?h=g:h=i)}),h}return a};export var isValidValue=function(a,b,c,d){return getValidValue(a,b,c,d)===a};export var getValueByPosition=function(a,b,c,d,e){if(b.current&&a){var f=b.current.getBoundingClientRect(),g=f.x,h=f.width,i=Math.abs(d-c),j=c+(a.x-g)*i/h;return getValidValue(j,c,d,e)}return 0};export var getNewValue=function(a,b,c,d,e,f){var g=getValidValue(analyzeDivisionValue(a,c,d,e),d,e,c);return Array.isArray(b)?1===f?[b[0],g]:[g,b[1]]:g};export var analyzeDivisionValue=function(a,b,c,d){var e=a;if(Array.isArray(b)){var f=getSteps(b,c,d);f.forEach(function(b){a&&b.min<a&&b.max>=a&&((b.max+b.min)/2>a?e=b.min:e=b.max)})}else{if(a>=d)return d;if(a<=c)return c;var g=(a-c)%b;e=g>b/2?b-g+a:a-g}return e};export var valueToSring=function(a){return a?"number"==typeof a?a.toString():a.join("-"):""};
|
|
2
2
|
//# sourceMappingURL=helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","names":["getSteps","isRangeParams","params","range","isNotRangeParams","trackPosition","event","x","clientX","y","clientY","changedTouches","getActiveValue","value","active","Array","isArray","detectActiveButton","position","buttons","activeButton","forEach","buttonRef","index","button","current","getBoundingClientRect","width","height","focus","getValidValue","min","max","step","division","toString","split","stepValue","Math","abs","toFixed","length","i","resultValue","stepPoint","minValue","maxValue","isValidValue","getValueByPosition","sliderRef","absoluteSize","getNewValue","changedValue","currentValue","analyzedValue","analyzeDivisionValue","newValue","steps","stepSize","nearStep"],"sources":["../../../../../../src/components/Slider/useSlider/helper.ts"],"sourcesContent":["import React from 'react';\n\nimport { SliderPropOnChange, SliderValue, TrackPosition } from '../helper';\nimport { getSteps } from '../useSliderStationing';\n\nexport type ActiveButton = 0 | 1 | null | undefined;\n\nexport type Stationing = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nexport type UseSliderProps<RANGE extends boolean = false> = {\n disabled: boolean;\n range?: RANGE;\n value: SliderValue<RANGE>;\n min: number;\n max: number;\n step?: number | number[];\n onChange?: SliderPropOnChange<RANGE>;\n onAfterChange?: SliderPropOnChange<RANGE>;\n containerRef: React.RefObject<HTMLDivElement>;\n sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>;\n buttonRefs: React.RefObject<HTMLButtonElement>[];\n};\n\nexport type UseSliderValues = {\n onKeyPress: (e: React.KeyboardEvent, typeButton: ActiveButton) => void;\n onFocus: (\n e: React.FocusEvent<HTMLButtonElement> | React.MouseEvent,\n button: ActiveButton,\n ) => void;\n handlePress: (typeButton: ActiveButton) => void;\n onSliderClick: React.MouseEventHandler;\n activeButton: ActiveButton;\n currentValue: [number] | [number, number];\n popoverPosition: TrackPosition[];\n};\n\nexport const isRangeParams = (\n params: UseSliderProps<boolean>,\n): params is UseSliderProps<true> => {\n return !!params.range;\n};\n\nexport const isNotRangeParams = (\n params: UseSliderProps<boolean>,\n): params is UseSliderProps<false> => {\n return !params.range;\n};\n\nexport const trackPosition = (\n event: TouchEvent | MouseEvent,\n): TrackPosition => {\n if ('clientX' in event) {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n }\n return {\n x: event.changedTouches[0].clientX,\n y: event.changedTouches[0].clientY,\n };\n};\n\nexport const getActiveValue = (\n value: number | [number, number],\n active: ActiveButton,\n) => {\n if (Array.isArray(value)) {\n return value[typeof active === 'number' ? active : 0];\n }\n return value;\n};\n\nexport const detectActiveButton: (\n posittion: TrackPosition,\n buttons: React.RefObject<HTMLButtonElement>[],\n) => ActiveButton = (position, buttons) => {\n let activeButton: ActiveButton = null;\n buttons.forEach((buttonRef, index) => {\n const button = buttonRef.current;\n if (button && position) {\n const { x, y, width, height } = button.getBoundingClientRect();\n if (\n x <= position.x &&\n x + width >= position.x &&\n y <= position.y &&\n y + height >= position.y\n ) {\n activeButton = index as ActiveButton;\n button.focus();\n }\n }\n });\n return activeButton;\n};\n\nexport const getValidValue = (\n value: number,\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (typeof value === 'number') {\n if (value >= max) return max;\n if (value <= min) return min;\n if (!Array.isArray(step)) {\n const division = step?.toString().split('.')[1];\n const stepValue = step || 1;\n if (Math.abs(value) < 1) {\n return Number(value.toFixed(division ? division.length : 0));\n }\n if (value < min) return min;\n for (let i = min; i <= max; i += stepValue) {\n if (value >= i && value < i + stepValue) {\n return Number(\n (value < i + stepValue / 2 ? i : i + stepValue).toFixed(\n division ? division.length : 0,\n ),\n );\n }\n }\n return max;\n }\n let resultValue = value;\n step.forEach((stepPoint, index) => {\n let minValue = min;\n let maxValue = max;\n if (index === 0) {\n maxValue = step[index + 1];\n } else if (index === step.length - 1) {\n minValue = stepPoint;\n maxValue = max;\n } else {\n maxValue = step[index + 1];\n minValue = stepPoint;\n }\n if (value <= maxValue && value >= minValue) {\n if ((maxValue + minValue) / 2 > value) {\n resultValue = minValue;\n } else {\n resultValue = maxValue;\n }\n }\n });\n return resultValue;\n }\n return value;\n};\n\nexport const isValidValue = (\n value: number,\n min: number,\n max: number,\n step?: number | number[],\n) => getValidValue(value, min, max, step) === value;\n\nexport const getValueByPosition = (\n position: TrackPosition,\n sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>,\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (sliderRef.current && position) {\n const { x, width } = sliderRef.current.getBoundingClientRect();\n const absoluteSize = Math.abs(max - min);\n const value = min + ((position.x - x) * absoluteSize) / width;\n return getValidValue(value, min, max, step);\n }\n return 0;\n};\n\nexport const getNewValue = (\n changedValue: number,\n currentValue: number | [number, number],\n step: number | number[],\n min: number,\n max: number,\n activeButton: ActiveButton,\n): number | [number, number] => {\n const analyzedValue = getValidValue(\n analyzeDivisionValue(changedValue, step, min, max),\n min,\n max,\n step,\n );\n if (Array.isArray(currentValue)) {\n return activeButton === 1\n ? [currentValue[0], analyzedValue]\n : [analyzedValue, currentValue[1]];\n }\n return analyzedValue;\n};\n\nexport const analyzeDivisionValue = (\n value: number,\n step: number | number[],\n min: number,\n max: number,\n) => {\n let newValue: number = value;\n if (Array.isArray(step)) {\n const steps = getSteps(step, min, max);\n steps.forEach((stepSize) => {\n if (value && stepSize.min < value && stepSize.max >= value) {\n if ((stepSize.max + stepSize.min) / 2 > value) {\n newValue = stepSize.min;\n } else {\n newValue = stepSize.max;\n }\n }\n });\n } else {\n if (value >= max) return max;\n if (value <= min) return min;\n const nearStep = (value - min) % step;\n if (nearStep > step / 2) {\n newValue = step - nearStep + value;\n } else {\n newValue = value - nearStep;\n }\n }\n return newValue;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helper.js","names":["getSteps","isRangeParams","params","range","isNotRangeParams","trackPosition","event","x","clientX","y","clientY","changedTouches","getActiveValue","value","active","Array","isArray","detectActiveButton","position","buttons","activeButton","forEach","buttonRef","index","button","current","getBoundingClientRect","width","height","focus","getValidValue","min","max","step","division","toString","split","stepValue","Math","abs","toFixed","length","i","resultValue","stepPoint","minValue","maxValue","isValidValue","getValueByPosition","sliderRef","absoluteSize","getNewValue","changedValue","currentValue","analyzedValue","analyzeDivisionValue","newValue","steps","stepSize","nearStep","valueToSring","join"],"sources":["../../../../../../src/components/Slider/useSlider/helper.ts"],"sourcesContent":["import React from 'react';\n\nimport { SliderPropOnChange, SliderValue, TrackPosition } from '../helper';\nimport { getSteps } from '../useSliderStationing';\n\nexport type ActiveButton = 0 | 1 | null | undefined;\n\nexport type Stationing = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nexport type UseSliderProps<RANGE extends boolean = false> = {\n disabled: boolean;\n range?: RANGE;\n value: SliderValue<RANGE>;\n min: number;\n max: number;\n step?: number | number[];\n onChange?: SliderPropOnChange<RANGE>;\n onAfterChange?: SliderPropOnChange<RANGE>;\n containerRef: React.RefObject<HTMLDivElement>;\n sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>;\n buttonRefs: React.RefObject<HTMLButtonElement>[];\n};\n\nexport type UseSliderValues = {\n onKeyPress: (e: React.KeyboardEvent, typeButton: ActiveButton) => void;\n onFocus: (\n e: React.FocusEvent<HTMLButtonElement> | React.MouseEvent,\n button: ActiveButton,\n ) => void;\n handlePress: (typeButton: ActiveButton) => void;\n onSliderClick: React.MouseEventHandler;\n activeButton: ActiveButton;\n currentValue: [number] | [number, number];\n popoverPosition: TrackPosition[];\n};\n\nexport const isRangeParams = (\n params: UseSliderProps<boolean>,\n): params is UseSliderProps<true> => {\n return !!params.range;\n};\n\nexport const isNotRangeParams = (\n params: UseSliderProps<boolean>,\n): params is UseSliderProps<false> => {\n return !params.range;\n};\n\nexport const trackPosition = (\n event: TouchEvent | MouseEvent,\n): TrackPosition => {\n if ('clientX' in event) {\n return {\n x: event.clientX,\n y: event.clientY,\n };\n }\n return {\n x: event.changedTouches[0].clientX,\n y: event.changedTouches[0].clientY,\n };\n};\n\nexport const getActiveValue = (\n value: number | [number, number],\n active: ActiveButton,\n) => {\n if (Array.isArray(value)) {\n return value[typeof active === 'number' ? active : 0];\n }\n return value;\n};\n\nexport const detectActiveButton: (\n posittion: TrackPosition,\n buttons: React.RefObject<HTMLButtonElement>[],\n) => ActiveButton = (position, buttons) => {\n let activeButton: ActiveButton = null;\n buttons.forEach((buttonRef, index) => {\n const button = buttonRef.current;\n if (button && position) {\n const { x, y, width, height } = button.getBoundingClientRect();\n if (\n x <= position.x &&\n x + width >= position.x &&\n y <= position.y &&\n y + height >= position.y\n ) {\n activeButton = index as ActiveButton;\n button.focus();\n }\n }\n });\n return activeButton;\n};\n\nexport const getValidValue = (\n value: number,\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (typeof value === 'number') {\n if (value >= max) return max;\n if (value <= min) return min;\n if (!Array.isArray(step)) {\n const division = step?.toString().split('.')[1];\n const stepValue = step || 1;\n if (Math.abs(value) < 1) {\n return Number(value.toFixed(division ? division.length : 0));\n }\n if (value < min) return min;\n for (let i = min; i <= max; i += stepValue) {\n if (value >= i && value < i + stepValue) {\n return Number(\n (value < i + stepValue / 2 ? i : i + stepValue).toFixed(\n division ? division.length : 0,\n ),\n );\n }\n }\n return max;\n }\n let resultValue = value;\n step.forEach((stepPoint, index) => {\n let minValue = min;\n let maxValue = max;\n if (index === 0) {\n maxValue = step[index + 1];\n } else if (index === step.length - 1) {\n minValue = stepPoint;\n maxValue = max;\n } else {\n maxValue = step[index + 1];\n minValue = stepPoint;\n }\n if (value <= maxValue && value >= minValue) {\n if ((maxValue + minValue) / 2 > value) {\n resultValue = minValue;\n } else {\n resultValue = maxValue;\n }\n }\n });\n return resultValue;\n }\n return value;\n};\n\nexport const isValidValue = (\n value: number,\n min: number,\n max: number,\n step?: number | number[],\n) => getValidValue(value, min, max, step) === value;\n\nexport const getValueByPosition = (\n position: TrackPosition,\n sliderRef: React.RefObject<HTMLDivElement | HTMLButtonElement>,\n min: number,\n max: number,\n step?: number | number[],\n) => {\n if (sliderRef.current && position) {\n const { x, width } = sliderRef.current.getBoundingClientRect();\n const absoluteSize = Math.abs(max - min);\n const value = min + ((position.x - x) * absoluteSize) / width;\n return getValidValue(value, min, max, step);\n }\n return 0;\n};\n\nexport const getNewValue = (\n changedValue: number,\n currentValue: number | [number, number],\n step: number | number[],\n min: number,\n max: number,\n activeButton: ActiveButton,\n): number | [number, number] => {\n const analyzedValue = getValidValue(\n analyzeDivisionValue(changedValue, step, min, max),\n min,\n max,\n step,\n );\n if (Array.isArray(currentValue)) {\n return activeButton === 1\n ? [currentValue[0], analyzedValue]\n : [analyzedValue, currentValue[1]];\n }\n return analyzedValue;\n};\n\nexport const analyzeDivisionValue = (\n value: number,\n step: number | number[],\n min: number,\n max: number,\n) => {\n let newValue: number = value;\n if (Array.isArray(step)) {\n const steps = getSteps(step, min, max);\n steps.forEach((stepSize) => {\n if (value && stepSize.min < value && stepSize.max >= value) {\n if ((stepSize.max + stepSize.min) / 2 > value) {\n newValue = stepSize.min;\n } else {\n newValue = stepSize.max;\n }\n }\n });\n } else {\n if (value >= max) return max;\n if (value <= min) return min;\n const nearStep = (value - min) % step;\n if (nearStep > step / 2) {\n newValue = step - nearStep + value;\n } else {\n newValue = value - nearStep;\n }\n }\n return newValue;\n};\n\nexport const valueToSring = (value: number | number[] | undefined | null) => {\n if (!value) {\n return '';\n }\n return typeof value === 'number' ? value.toString() : value.join('-');\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useClickOutside}from"../../../hooks/useClickOutside";import{useComponentSize}from"../../../hooks/useComponentSize/useComponentSize";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{getActiveValue,getNewValue,getValidValue,getValueByPosition,isNotRangeParams,isRangeParams,trackPosition}from"./helper";export var COUNT_STEPS=250;export function useSlider(a){var b=a.disabled,c=a.range,d=a.value,f=a.min,g=a.max,h=a.step,i=void 0===h?1:h,j=a.onChange,k=a.onAfterChange,l=a.sliderRef,m=a.containerRef,n=a.buttonRefs,o=g>f?f:0,p=g>f?g:100,q=useMemo(function(){if(!Array.isArray(i)&&1<=i){var a=Math.abs((p-o)/COUNT_STEPS);return a>i?a-a%i:Math.max(a,i)}return i},[g,f,i]),r=useState(d),s=_slicedToArray(r,2),t=s[0],u=s[1],v=useState(null),w=_slicedToArray(v,2),x=w[0],y=w[1],z=useState(null),A=_slicedToArray(z,2),B=A[0],C=A[1],D=useState(null),E=_slicedToArray(D,2),F=E[0],G=E[1],H=useRef(null),I=useComponentSize(l),J=useMutableRef(t);useClickOutside({isActive:!0,ignoreClicksInsideRefs:[m],handler:function handler(){G(null),H.current=null}}),useEffect(function(){b&&
|
|
1
|
+
import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{useClickOutside}from"../../../hooks/useClickOutside";import{useComponentSize}from"../../../hooks/useComponentSize/useComponentSize";import{useMutableRef}from"../../../hooks/useMutableRef/useMutableRef";import{getActiveValue,getNewValue,getValidValue,getValueByPosition,isNotRangeParams,isRangeParams,trackPosition,valueToSring}from"./helper";export var COUNT_STEPS=250;export function useSlider(a){var b=a.disabled,c=a.range,d=a.value,f=a.min,g=a.max,h=a.step,i=void 0===h?1:h,j=a.onChange,k=a.onAfterChange,l=a.sliderRef,m=a.containerRef,n=a.buttonRefs,o=g>f?f:0,p=g>f?g:100,q=useMemo(function(){if(!Array.isArray(i)&&1<=i){var a=Math.abs((p-o)/COUNT_STEPS);return a>i?a-a%i:Math.max(a,i)}return i},[g,f,i]),r=useState(d),s=_slicedToArray(r,2),t=s[0],u=s[1],v=useState(null),w=_slicedToArray(v,2),x=w[0],y=w[1],z=useState(null),A=_slicedToArray(z,2),B=A[0],C=A[1],D=useState(null),E=_slicedToArray(D,2),F=E[0],G=E[1],H=useRef(null),I=useComponentSize(l),J=useMutableRef(t),K=useMutableRef(j),L=useMutableRef(k);useClickOutside({isActive:!0,ignoreClicksInsideRefs:[m],handler:function handler(){G(null),H.current=null}}),useEffect(function(){b&&M("remove")},[b]);var M=function(a){var b="add"===a?"addEventListener":"removeEventListener";document[b]("mouseup",R),document[b]("touchend",R),document[b]("mousemove",Q),document[b]("touchmove",Q)};useEffect(function(){Array.isArray(t)?(O(t[0],0),O(t[1],1)):O(t,0)},[t]),useEffect(function(){valueToSring(d)!==valueToSring(t)&&(Array.isArray(d)&&Array.isArray(t)?(-1===t.indexOf(d[0])||-1===t.indexOf(d[1]))&&(u(d),O(getActiveValue(d,H.current),0)):(u(d),O(getActiveValue(d,H.current),0)),G(null),H.current=null)},[d]),useEffect(function(){var a=Array.isArray(t)?[getNewValue(t[0],t[0],i,f,g,0),getNewValue(t[1],t[1],i,f,g,1)]:getNewValue(t,t,i,f,g,0);if(valueToSring(a)!==valueToSring(t)){var b;null===(b=K.current)||void 0===b?void 0:b.call(K,a,{})}},[i]),useEffect(function(){if("undefined"!=typeof d){var b=isRangeParams(a)?[getValidValue(a.value[0],f,g,i),getValidValue(a.value[1],f,g,i)]:getValidValue(a.value,f,g,i);u(b)}},[c,typeof d]),useEffect(function(){if(isRangeParams(a)&&a.value[0]>a.value[1]){var b,c=[a.value[1],a.value[1]];null===(b=K.current)||void 0===b?void 0:b.call(K,c,{})}},[]);var N=useCallback(function(a,c){if(!b&&"number"==typeof c&&"undefined"!=typeof t){a.preventDefault(),a.stopPropagation();var d=Array.isArray(i)?1:i||1,e=!1,h=getActiveValue(t,c);switch(a.key){case"ArrowUp":case"ArrowRight":case"+":e=!0;break;case"ArrowLeft":case"ArrowDown":case"-":e=!0,d*=-1;break;default:}if(e){var j;Array.isArray(i)&&i.forEach(function(a,b){"number"==typeof c&&h===a&&(0<=d?0===b?d=i[1]-o:d=("undefined"==typeof i[b+1]?p:i[b+1])-a:0===b?d=o-i[1]:d=("undefined"==typeof i[b-1]?o:i[b-1])-a)});var k=getNewValue(h+d,t,i,f,g,c);u(k),O(getActiveValue(k,c),c),null===(j=K.current)||void 0===j?void 0:j.call(K,k,{e:a})}}},[t,i,f,g]),O=function(a,b){if(l.current&&"number"==typeof b){var c=n[b].current||l.current,d=l.current.getBoundingClientRect(),e=d.x,f=d.width,g={y:c.offsetTop+c.offsetHeight+50,x:e+Math.abs((a-o)/(p-o))*f};0===b?y(g):C(g)}},P=function(a){if("number"!=typeof H.current)return d;var b=trackPosition(a),c=getValueByPosition(b,l,o,p,i);return getNewValue(c,t,q,f,g,H.current)},Q=function(a,b){var c=b||H.current;if("number"==typeof c){var d=P(a),e=getActiveValue(t,c),f=getActiveValue(d,c);if(u(d),valueToSring(e)!==valueToSring(f)){var g;null===(g=L.current)||void 0===g?void 0:g.call(L,d,{e:a})}}};useEffect(function(){if(isRangeParams(a)){var b;null===(b=a.value)||void 0===b?void 0:b.forEach(function(a,b){O(getActiveValue(a,H.current),0===b?0:1)})}isNotRangeParams(a)&&O(getActiveValue(d,H.current),0),H.current=null},[I,typeof d]);var R=useCallback(function(b){if(M("remove"),isRangeParams(a)&&Array.isArray(J.current)){var c,d=_toConsumableArray(J.current).sort(function(c,a){return+c-+a});null===(c=K.current)||void 0===c?void 0:c.call(K,d,{e:b})}if(isNotRangeParams(a)&&"number"==typeof J.current){var e;null===(e=K.current)||void 0===e?void 0:e.call(K,J.current,{e:b})}G(null),H.current=null},[d,Q]),S=useCallback(function(a){b||(G(a),H.current=a,M("add"))},[t,d,Q,b]);return{onKeyPress:N,onFocus:function onFocus(a,b){G(b),H.current=b},handlePress:S,onSliderClick:function onSliderClick(b){if(isNotRangeParams(a)){var c=getValueByPosition({x:b.pageX,y:b.pageY},l,o,p,i),e=getNewValue(c,t,q,f,g,H.current);if(e!==d){var h;u(e),O(getActiveValue(e,0),0),null===(h=K.current)||void 0===h?void 0:h.call(K,e,{e:b})}}},activeButton:F,popoverPosition:[x,B],currentValue:Array.isArray(t)?t:[t]}}
|
|
2
2
|
//# sourceMappingURL=useSlider.js.map
|