@consta/uikit 4.2.1 → 4.3.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.
Files changed (126) hide show
  1. package/README.md +3 -3
  2. package/__internal__/src/components/AvatarGroup/helpers.d.ts +1 -1
  3. package/__internal__/src/components/Breadcrumbs/helpers.d.ts +1 -1
  4. package/__internal__/src/components/CheckboxGroup/helper.d.ts +1 -1
  5. package/__internal__/src/components/ChoiceGroup/helper.d.ts +3 -3
  6. package/__internal__/src/components/Collapse/Collapse.d.ts +4 -45
  7. package/__internal__/src/components/Collapse/Collapse.js +1 -1
  8. package/__internal__/src/components/Collapse/Collapse.js.map +1 -1
  9. package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.d.ts +1 -13
  10. package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.js +1 -1
  11. package/__internal__/src/components/Collapse/CollapseIcon/CollapseIcon.js.map +1 -1
  12. package/__internal__/src/components/Collapse/types.d.ts +53 -0
  13. package/__internal__/src/components/Collapse/types.js +2 -0
  14. package/__internal__/src/components/Collapse/types.js.map +1 -0
  15. package/__internal__/src/components/CollapseGroup/helpers.d.ts +9 -10
  16. package/__internal__/src/components/CollapseGroup/helpers.js.map +1 -1
  17. package/__internal__/src/components/Combobox/helpers.d.ts +1 -1
  18. package/__internal__/src/components/ContextMenu/helpers.d.ts +2 -2
  19. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDate/DatePickerFieldTypeDate.d.ts +2 -2
  20. package/__internal__/src/components/DatePicker/DatePickerFieldTypeDateTime/DatePickerFieldTypeDateTime.d.ts +2 -2
  21. package/__internal__/src/components/DatePicker/DatePickerFieldTypeMonth/DatePickerFieldTypeMonth.d.ts +2 -2
  22. package/__internal__/src/components/DatePicker/DatePickerFieldTypeTime/DatePickerFieldTypeTime.d.ts +2 -2
  23. package/__internal__/src/components/DatePicker/DatePickerFieldTypeYear/DatePickerFieldTypeYear.d.ts +2 -2
  24. package/__internal__/src/components/DateTime/DateTimeTypeDateTime/DateTimeTypeDateTime.css +1 -1
  25. package/__internal__/src/components/DateTime/DateTimeTypeTime/DateTimeTypeTime.css +1 -1
  26. package/__internal__/src/components/EventInterceptor/propsHandlers/useCheckboxEventsHandler.d.ts +2 -2
  27. package/__internal__/src/components/EventInterceptor/propsHandlers/useTextFieldEventsHandler.d.ts +2 -2
  28. package/__internal__/src/components/ProgressLine/helpers.d.ts +1 -1
  29. package/__internal__/src/components/ProgressStepBar/helpers.d.ts +1 -1
  30. package/__internal__/src/components/RadioGroup/helper.d.ts +1 -1
  31. package/__internal__/src/components/Select/helpers.d.ts +1 -1
  32. package/__internal__/src/components/SnackBar/SnackBar.js +1 -1
  33. package/__internal__/src/components/SnackBar/SnackBar.js.map +1 -1
  34. package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.css +1 -1
  35. package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.js +1 -1
  36. package/__internal__/src/components/SnackBar/SnackBarItem/SnackBarItem.js.map +1 -1
  37. package/__internal__/src/components/SnackBar/helper.d.ts +1 -0
  38. package/__internal__/src/components/SnackBar/types.d.ts +5 -0
  39. package/__internal__/src/components/SnackBar/types.js +1 -1
  40. package/__internal__/src/components/SnackBar/types.js.map +1 -1
  41. package/__internal__/src/components/SwitchGroup/helpers.d.ts +1 -1
  42. package/__internal__/src/components/Table/Table.d.ts +3 -2
  43. package/__internal__/src/components/Table/Table.js +1 -1
  44. package/__internal__/src/components/Table/Table.js.map +1 -1
  45. package/__internal__/src/components/Table/helpers.js +1 -1
  46. package/__internal__/src/components/Table/helpers.js.map +1 -1
  47. package/__internal__/src/components/Tabs/helpers.d.ts +4 -4
  48. package/__internal__/src/components/TagBase/TagBase.d.ts +1 -1
  49. package/__internal__/src/components/ThemeToggler/helpers.d.ts +1 -1
  50. package/__internal__/src/components/UserSelect/helpers.d.ts +1 -1
  51. package/__internal__/src/hooks/useBreakpoints/useBreakpoints.d.ts +1 -1
  52. package/__internal__/src/hooks/useChoiceGroup/useChoiceGroup.js +1 -1
  53. package/__internal__/src/hooks/useChoiceGroup/useChoiceGroup.js.map +1 -1
  54. package/__internal__/src/icons/Icon/Icon.d.ts +6 -2
  55. package/__internal__/src/icons/Icon/Icon.js +1 -1
  56. package/__internal__/src/icons/Icon/Icon.js.map +1 -1
  57. package/package.json +1 -1
  58. package/__internal__/src/docs/aboutConsta/aboutConsta.stand.d.ts +0 -2
  59. package/__internal__/src/docs/aboutConsta/aboutConsta.stand.js +0 -2
  60. package/__internal__/src/docs/aboutConsta/aboutConsta.stand.js.map +0 -1
  61. package/__internal__/src/docs/aboutConsta/components/AboutData/AboutData.css +0 -1
  62. package/__internal__/src/docs/aboutConsta/components/AboutData/AboutData.d.ts +0 -2
  63. package/__internal__/src/docs/aboutConsta/components/AboutData/AboutData.js +0 -2
  64. package/__internal__/src/docs/aboutConsta/components/AboutData/AboutData.js.map +0 -1
  65. package/__internal__/src/docs/addComponent/addComponent.stand.d.ts +0 -2
  66. package/__internal__/src/docs/addComponent/addComponent.stand.js +0 -2
  67. package/__internal__/src/docs/addComponent/addComponent.stand.js.map +0 -1
  68. package/__internal__/src/docs/addComponent/components/addComponentData/AddComponentData.css +0 -1
  69. package/__internal__/src/docs/addComponent/components/addComponentData/AddComponentData.d.ts +0 -5
  70. package/__internal__/src/docs/addComponent/components/addComponentData/AddComponentData.js +0 -2
  71. package/__internal__/src/docs/addComponent/components/addComponentData/AddComponentData.js.map +0 -1
  72. package/__internal__/src/docs/code/code.stand.d.ts +0 -2
  73. package/__internal__/src/docs/code/code.stand.js +0 -2
  74. package/__internal__/src/docs/code/code.stand.js.map +0 -1
  75. package/__internal__/src/docs/commits/commits.stand.d.ts +0 -2
  76. package/__internal__/src/docs/commits/commits.stand.js +0 -2
  77. package/__internal__/src/docs/commits/commits.stand.js.map +0 -1
  78. package/__internal__/src/docs/connectTheme/connectTheme.stand.d.ts +0 -2
  79. package/__internal__/src/docs/connectTheme/connectTheme.stand.js +0 -2
  80. package/__internal__/src/docs/connectTheme/connectTheme.stand.js.map +0 -1
  81. package/__internal__/src/docs/createPreset/createPreset.stand.d.ts +0 -2
  82. package/__internal__/src/docs/createPreset/createPreset.stand.js +0 -2
  83. package/__internal__/src/docs/createPreset/createPreset.stand.js.map +0 -1
  84. package/__internal__/src/docs/docs/docs.stand.d.ts +0 -2
  85. package/__internal__/src/docs/docs/docs.stand.js +0 -2
  86. package/__internal__/src/docs/docs/docs.stand.js.map +0 -1
  87. package/__internal__/src/docs/fileStructure/fileStructure.stand.d.ts +0 -2
  88. package/__internal__/src/docs/fileStructure/fileStructure.stand.js +0 -2
  89. package/__internal__/src/docs/fileStructure/fileStructure.stand.js.map +0 -1
  90. package/__internal__/src/docs/howToGo/howToGo.stand.d.ts +0 -2
  91. package/__internal__/src/docs/howToGo/howToGo.stand.js +0 -2
  92. package/__internal__/src/docs/howToGo/howToGo.stand.js.map +0 -1
  93. package/__internal__/src/docs/issue/issue.stand.d.ts +0 -2
  94. package/__internal__/src/docs/issue/issue.stand.js +0 -2
  95. package/__internal__/src/docs/issue/issue.stand.js.map +0 -1
  96. package/__internal__/src/docs/principle/principles.stand.d.ts +0 -2
  97. package/__internal__/src/docs/principle/principles.stand.js +0 -2
  98. package/__internal__/src/docs/principle/principles.stand.js.map +0 -1
  99. package/__internal__/src/docs/prototype/prototype.stand.d.ts +0 -2
  100. package/__internal__/src/docs/prototype/prototype.stand.js +0 -2
  101. package/__internal__/src/docs/prototype/prototype.stand.js.map +0 -1
  102. package/__internal__/src/docs/review/review.stand.d.ts +0 -2
  103. package/__internal__/src/docs/review/review.stand.js +0 -2
  104. package/__internal__/src/docs/review/review.stand.js.map +0 -1
  105. package/__internal__/src/docs/sla/components/SlaPictures/SlaPictures.d.ts +0 -1
  106. package/__internal__/src/docs/sla/components/SlaPictures/SlaPictures.js +0 -2
  107. package/__internal__/src/docs/sla/components/SlaPictures/SlaPictures.js.map +0 -1
  108. package/__internal__/src/docs/sla/sla.stand.d.ts +0 -2
  109. package/__internal__/src/docs/sla/sla.stand.js +0 -2
  110. package/__internal__/src/docs/sla/sla.stand.js.map +0 -1
  111. package/__internal__/src/docs/tableComparison/components/AboutData/AboutData.css +0 -1
  112. package/__internal__/src/docs/tableComparison/components/AboutData/AboutData.d.ts +0 -2
  113. package/__internal__/src/docs/tableComparison/components/AboutData/AboutData.js +0 -2
  114. package/__internal__/src/docs/tableComparison/components/AboutData/AboutData.js.map +0 -1
  115. package/__internal__/src/docs/tableComparison/tableComparison.stand.d.ts +0 -2
  116. package/__internal__/src/docs/tableComparison/tableComparison.stand.js +0 -2
  117. package/__internal__/src/docs/tableComparison/tableComparison.stand.js.map +0 -1
  118. package/__internal__/src/docs/themeAbout/themeAbout.stand.d.ts +0 -2
  119. package/__internal__/src/docs/themeAbout/themeAbout.stand.js +0 -2
  120. package/__internal__/src/docs/themeAbout/themeAbout.stand.js.map +0 -1
  121. package/__internal__/src/docs/units/units.stand.d.ts +0 -2
  122. package/__internal__/src/docs/units/units.stand.js +0 -2
  123. package/__internal__/src/docs/units/units.stand.js.map +0 -1
  124. package/__internal__/src/docs/workflow/workflow.stand.d.ts +0 -2
  125. package/__internal__/src/docs/workflow/workflow.stand.js +0 -2
  126. package/__internal__/src/docs/workflow/workflow.stand.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","names":["React","useEffect","useMemo","useComponentSize","useForkRef","IconSortDown","IconSortUp","IconUnsort","sortBy","sortByDefault","updateAt","cn","setRef","isNotNil","isString","Button","Text","TableCell","fieldFiltersPresent","filterTableData","getSelectedFiltersList","isSelectedFiltersPresent","useSelectedFilters","TableHeader","createSortingState","getColumnLeftOffset","getColumnsSize","getMergedArray","getNewSorting","Order","transformRows","useHeaderData","useLazyLoadData","TableResizer","TableRowsCollapse","TableSelectedOptionsList","TableTextFilter","TableFilterContainer","TableNumberFilter","TableChoiceGroupFilter","cnTable","sizes","zebraStriped","headerVerticalAligns","createButtonSizeMap","s","m","l","getColumnSortByField","column","sortable","sortByField","accessor","sortingData","rows","sorting","onSortBy","sortedRows","by","order","sortFn","some","row","length","map","defaultEmptyRowsPlaceholder","InternalTable","props","ref","columns","size","rawFilters","filters","isResizable","stickyHeader","stickyColumns","minColumnWidth","activeRow","verticalAlign","headerVerticalAlign","borderBetweenRows","borderBetweenColumns","emptyRowsPlaceholder","defaultExpandAll","className","onRowHover","onRowClick","onRowCreate","onCellClick","getAdditionalClassName","rowCreateText","lazyLoad","onFiltersUpdated","getTagLabel","getCellWrap","isExpandedRowsByDefault","otherProps","headers","flattenedHeaders","lowHeaders","headerRowsRefs","headerRowsHeights","resizerTopOffsets","stickyColumnsGrid","position","gridIndex","colSpan","getColumnsWidth","width","useState","resizedColumnWidths","setResizedColumnWidths","filter","id","field","initialColumnWidths","setInitialColumnWidths","setSorting","visibleFilter","setVisibleFilter","top","left","tableScroll","setTableScroll","tableRef","useRef","columnsRefs","cellsRefs","selectedFilters","updateSelectedFilters","removeOneSelectedFilter","removeAllSelectedFilters","expandedRowIds","setExpandedRowIds","sortingColumn","find","col","Object","prototype","hasOwnProperty","call","sortingState","tableHeight","current","clientHeight","tableWidth","clientWidth","showVerticalCellShadow","showHorizontalCellShadow","isRowsClickable","onChange","updateColumnWidth","idx","newWidth","overallColumnsWidth","columnsElements","values","columnsElementsWidths","el","getBoundingClientRect","resultArr","reduce","a","b","useLayoutEffect","isSortedByColumn","getStickyLeftOffset","columnIndex","topHeaderGridIndex","handleSelectRow","e","handleRowHover","handleRowCreate","index","handleColumnResize","delta","columnMinWidth","Math","min","prevColumnWidth","newColumnWidth","max","containerEl","scrollBy","stickyColumnsWidth","columnsWithMetaData","resizedColumnWidth","initialColumnWidth","columnWidth","columnLeftOffset","isSticky","showResizer","isFilterActive","selected","filterable","isSortingActive","isResized","headersWithMetaData","hasNestedRows","sortedTableData","filteredData","data","maxVisibleRows","scrollableEl","getSlicedRows","setBoundaryRef","flatRowsData","rowsData","tableStyle","hasMergedCells","header","mergeCells","handleExpandRow","includes","prevState","rowId","getCollapseRollProps","columnIdx","withCollapseButton","baseProps","level","isExpandedByDefault","isExpanded","toggleCollapse","getExpandedRows","expandedIds","forEach","defaultExpand","push","ids","indexOf","renderCell","cellContent","collapseRollProps","bottomCreateRowButton","rowsLength","slice","pop","lastRowId","getTableCellProps","rowIdx","getComparisonValue","previousCell","currentCell","result","rowSpan","show","style","nextCell","i","handleCellClick","params","withBorderBottom","handleScroll","target","HTMLElement","scrollTop","scrollLeft","type","getSortIcon","handleSortClick","newSorting","sortProps","sortingBy","sortOrder","handleFilterTogglerClick","handleTooltipSave","tooltipSelectedFilters","value","removeSelectedFilter","tableFilters","resetSelectedFilters","nth","withMergedCells","isActive","isDarkned","isMerged","renderEmptyRowsPlaceholder","placeholder","Table","forwardRef"],"sources":["../../../../../src/components/Table/Table.tsx"],"sourcesContent":["import './Table.css';\n\nimport React, { useEffect, useMemo } from 'react';\n\nimport { useComponentSize } from '../../hooks/useComponentSize/useComponentSize';\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { IconSortDown } from '../../icons/IconSortDown/IconSortDown';\nimport { IconSortUp } from '../../icons/IconSortUp/IconSortUp';\nimport { IconUnsort } from '../../icons/IconUnsort/IconUnsort';\nimport { sortBy as sortByDefault, updateAt } from '../../utils/array';\nimport { cn } from '../../utils/bem';\nimport { setRef } from '../../utils/setRef';\nimport { isNotNil, isString } from '../../utils/type-guards';\nimport { Button, ButtonPropSize } from '../Button/Button';\nimport { Text } from '../Text/Text';\nimport { HorizontalAlign, TableCell, VerticalAlign } from './Cell/TableCell';\nimport {\n fieldFiltersPresent,\n FieldSelectedValues,\n Filters,\n filterTableData,\n getSelectedFiltersList,\n isSelectedFiltersPresent,\n onSortBy,\n SelectedFilters,\n useSelectedFilters,\n} from './filtering';\nimport { TableHeader } from './Header/TableHeader';\nimport {\n createSortingState,\n getColumnLeftOffset,\n getColumnsSize,\n getMergedArray,\n getNewSorting,\n Header,\n Order,\n OrderType,\n Position,\n transformRows,\n useHeaderData,\n useLazyLoadData,\n} from './helpers';\nimport { TableResizer } from './Resizer/TableResizer';\nimport {\n Props as TableRowsCollapseProps,\n TableRowsCollapse,\n} from './RowsCollapse/TableRowsCollapse';\nimport {\n GetTagLabel,\n TableSelectedOptionsList,\n} from './SelectedOptionsList/TableSelectedOptionsList';\n\nexport { TableTextFilter } from './TextFilter/TableTextFilter';\nexport { TableFilterContainer } from './FilterContainer/TableFilterContainer';\nexport { TableNumberFilter } from './NumberFilter/TableNumberFilter';\nexport { TableChoiceGroupFilter } from './ChoiceGroupFilter/TableChoiceGroupFilter';\n\nconst cnTable = cn('Table');\n\nexport const sizes = ['s', 'm', 'l'] as const;\ntype Size = typeof sizes[number];\n\nexport const zebraStriped = ['odd', 'even'] as const;\ntype ZebraStriped = typeof zebraStriped[number];\n\nexport const headerVerticalAligns = ['center', 'bottom'] as const;\nexport type HeaderVerticalAlign = typeof headerVerticalAligns[number];\n\nconst createButtonSizeMap: Record<Size, ButtonPropSize> = {\n s: 'xs',\n m: 's',\n l: 'm',\n};\n\ntype TableCSSCustomProperty = {\n '--table-width': string;\n '--table-grid-template-columns': string;\n};\n\nexport type LazyLoad =\n | {\n maxVisibleRows?: number;\n scrollableEl?: HTMLDivElement | Window;\n }\n | undefined;\n\ntype ActiveRow = {\n id: string | undefined;\n onChange: ({\n id,\n e,\n }: {\n id: string | undefined;\n e?: React.SyntheticEvent;\n }) => void;\n};\n\ntype onRowHover = ({\n id,\n e,\n}: {\n id: string | undefined;\n e: React.MouseEvent;\n}) => void;\n\ntype onRowClick = ({ id, e }: { id: string; e: React.MouseEvent }) => void;\n\ntype onRowCreate = ({\n id,\n index,\n e,\n}: {\n id?: string;\n index: number;\n e: React.MouseEvent;\n}) => void;\n\nexport type CellClickType = 'click' | 'contextMenu';\n\nexport type onCellClick = ({\n e,\n type,\n rowId,\n columnIdx,\n ref,\n}: {\n e: React.SyntheticEvent;\n type: CellClickType;\n columnIdx: number;\n ref: React.RefObject<HTMLDivElement>;\n rowId?: string;\n}) => void;\n\nexport type TableRow = {\n id: string;\n defaultExpand?: boolean;\n rows?: TableRow[];\n};\n\nexport type TableTreeRow<T extends TableRow> = {\n level: number;\n parentId?: string;\n} & T;\n\nexport type TableFilters<T extends TableRow> = Filters<T>;\n\nexport type RowField<T extends TableRow> = Exclude<keyof T, symbol | number>;\n\nexport type ColumnWidth = number | undefined;\n\nexport type ValueOf<T> = T[keyof T];\n\ntype ColumnBase<T extends TableRow> = ValueOf<{\n [K in keyof T]: {\n accessor: K extends string ? K : never;\n sortable?: boolean;\n sortByField?: keyof T;\n order?: OrderType;\n sortFn?(a: T[K], b: T[K]): number;\n renderCell?: (row: T) => React.ReactNode;\n getComparisonValue?: (cell: T[K]) => number | string;\n };\n}>;\ntype SingleColumnAddition<T extends TableRow> = ColumnBase<T> & {\n columns?: never;\n};\ntype GroupColumnAddition<T extends TableRow> = {\n columns: TableColumn<T>[];\n} & {\n // eslint-disable-next-line no-unused-vars\n [K in keyof ColumnBase<T>]?: never;\n};\nexport interface TableControl<T extends TableRow> {\n column: Header<T> & ColumnMetaData;\n}\n\nexport type SortByProps<T extends TableRow> = {\n sortingBy: keyof T;\n sortOrder: 'asc' | 'desc';\n};\n\nexport type TableColumn<T extends TableRow> = {\n title: React.ReactNode;\n align?: HorizontalAlign;\n withoutPadding?: boolean;\n width?: ColumnWidth;\n mergeCells?: boolean;\n position?: Position;\n hidden?: boolean;\n control?: ({ column }: TableControl<T>) => React.ReactNode;\n} & (GroupColumnAddition<T> | SingleColumnAddition<T>);\n\nexport type TableProps<T extends TableRow> = {\n columns: TableColumn<T>[];\n rows: T[];\n isResizable?: boolean;\n filters?: Filters<T>;\n onSortBy?: onSortBy<T>;\n size?: Size;\n stickyHeader?: boolean;\n stickyColumns?: number;\n minColumnWidth?: number;\n activeRow?: ActiveRow;\n verticalAlign?: VerticalAlign;\n headerVerticalAlign?: HeaderVerticalAlign;\n zebraStriped?: ZebraStriped;\n borderBetweenRows?: boolean;\n defaultExpandAll?: boolean;\n borderBetweenColumns?: boolean;\n emptyRowsPlaceholder?: React.ReactNode;\n className?: string;\n onRowHover?: onRowHover;\n onRowClick?: onRowClick;\n onRowCreate?: onRowCreate;\n onCellClick?: onCellClick;\n getAdditionalClassName?: (props: {\n column: TableColumn<T>;\n row: T;\n isActive: boolean;\n }) => string;\n rowCreateText?: string;\n lazyLoad?: LazyLoad;\n onFiltersUpdated?: (filters: SelectedFilters) => void;\n getTagLabel?: GetTagLabel;\n isExpandedRowsByDefault?: boolean;\n getCellWrap?: (row: T) => 'truncate' | 'break';\n};\n\ntype Table = <T extends TableRow>(\n props: TableProps<T> & { ref?: React.Ref<HTMLDivElement> },\n) => React.ReactElement | null;\n\nexport type ColumnMetaData = {\n filterable: boolean;\n isSortingActive: boolean;\n isFilterActive: boolean;\n isResized: boolean;\n isSticky: boolean;\n showResizer: boolean;\n columnWidth: number;\n columnLeftOffset: number;\n};\n\nexport type SortingState<T extends TableRow> = {\n by: keyof T;\n order: 'asc' | 'desc';\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number;\n} | null;\n\ntype GetTableCellProps = {\n show: boolean;\n rowSpan: number;\n style: {\n 'left'?: number;\n '--row-span'?: string;\n };\n};\n\nconst getColumnSortByField = <T extends TableRow>(\n column: TableColumn<T>,\n): keyof T => (column.sortable && column.sortByField) || column.accessor!;\n\nconst sortingData = <T extends TableRow>(\n rows: T[],\n sorting: SortingState<T>,\n onSortBy?: onSortBy<T>,\n): T[] => {\n if (onSortBy) {\n return rows;\n }\n\n if (!sorting) {\n return rows;\n }\n const sortedRows = sortByDefault(\n rows,\n sorting.by,\n sorting.order,\n sorting.sortFn,\n );\n\n if (sortedRows.some((row) => row.rows?.length)) {\n return sortedRows.map((row) => {\n return row.rows\n ? { ...row, rows: sortingData(row.rows as T[], sorting, onSortBy) }\n : row;\n });\n }\n\n return sortedRows;\n};\n\nconst defaultEmptyRowsPlaceholder = (\n <Text as=\"span\" view=\"primary\" size=\"s\" lineHeight=\"s\">\n Нет данных\n </Text>\n);\n\nconst InternalTable = <T extends TableRow>(\n props: TableProps<T>,\n ref?: React.Ref<HTMLDivElement>,\n) => {\n const {\n columns,\n rows,\n size = 'l',\n filters: rawFilters,\n isResizable = false,\n stickyHeader = false,\n stickyColumns = 0,\n minColumnWidth = 150,\n activeRow,\n verticalAlign = 'top',\n headerVerticalAlign = 'center',\n zebraStriped,\n borderBetweenRows = false,\n borderBetweenColumns = false,\n emptyRowsPlaceholder = defaultEmptyRowsPlaceholder,\n defaultExpandAll,\n className,\n onRowHover,\n onRowClick,\n onRowCreate,\n onCellClick,\n getAdditionalClassName,\n rowCreateText = '+ Добавить строку',\n lazyLoad,\n onSortBy,\n onFiltersUpdated,\n getTagLabel,\n getCellWrap,\n isExpandedRowsByDefault = false,\n ...otherProps\n } = props;\n const {\n headers,\n flattenedHeaders,\n lowHeaders,\n headerRowsRefs,\n headerRowsHeights,\n resizerTopOffsets,\n } = useHeaderData(columns);\n const stickyColumnsGrid =\n // eslint-disable-next-line no-unsafe-optional-chaining\n headers[0][stickyColumns - 1]?.position.gridIndex! +\n (headers[0][stickyColumns - 1]?.position.colSpan || 1);\n\n const getColumnsWidth = () =>\n lowHeaders.map((column: TableColumn<T>) => column.width);\n const [resizedColumnWidths, setResizedColumnWidths] = React.useState<\n ColumnWidth[]\n >(getColumnsWidth());\n\n const filters = React.useMemo(() => {\n return (\n rawFilters && rawFilters.filter((filter) => filter.id && filter.field)\n );\n }, [rawFilters]);\n\n React.useEffect(() => {\n setResizedColumnWidths(getColumnsWidth());\n }, [lowHeaders.length]);\n\n const [initialColumnWidths, setInitialColumnWidths] = React.useState<\n number[]\n >([]);\n const [sorting, setSorting] = React.useState<SortingState<T>>(null);\n const [visibleFilter, setVisibleFilter] = React.useState<string | null>(null);\n const [tableScroll, setTableScroll] = React.useState({ top: 0, left: 0 });\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n const columnsRefs = React.useRef<Record<number, HTMLDivElement | null>>({});\n const cellsRefs = React.useRef<Record<string, HTMLDivElement | null>>({});\n const {\n selectedFilters,\n updateSelectedFilters,\n removeOneSelectedFilter,\n removeAllSelectedFilters,\n } = useSelectedFilters(filters, onFiltersUpdated);\n const [expandedRowIds, setExpandedRowIds] = React.useState<string[]>([]);\n\n // установка сортировки по умолчанию\n\n React.useEffect(() => {\n const sortingColumn = columns.find(\n (col) =>\n isString(col.order) &&\n Object.prototype.hasOwnProperty.call(Order, col.order),\n );\n if (sortingColumn) {\n const sortingState = createSortingState(\n getColumnSortByField(sortingColumn),\n sortingColumn.order,\n sortingColumn.sortFn,\n );\n setSorting(sortingState);\n }\n }, [columns]);\n\n /*\n Подписываемся на изменения размеров таблицы, но не используем значения из\n хука так как нам нужна ширина и высота таблицы без размера скролла. Этот хук\n использует значения `offsetWidth` и `offsetHeight` которые включают размер\n скролл бара.\n */\n useComponentSize(tableRef);\n const tableHeight = tableRef.current?.clientHeight || 0;\n const tableWidth = tableRef.current?.clientWidth || 0;\n\n const showVerticalCellShadow = tableScroll.left > 0;\n const showHorizontalCellShadow = tableScroll.top > 0;\n const isRowsClickable = activeRow && activeRow.onChange;\n\n const updateColumnWidth = (idx: number, newWidth: number): void => {\n setResizedColumnWidths(updateAt(resizedColumnWidths, idx, newWidth));\n };\n\n const overallColumnsWidth = useMemo(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n return resultArr.reduce((a, b) => (a ?? 0) + (b ?? 0));\n }, [resizedColumnWidths, isResizable]);\n\n React.useLayoutEffect(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n if (columnsElements.length === 0) return;\n\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n setInitialColumnWidths(columnsElementsWidths);\n\n // Проверяем, что таблица отрисовалась корректно, и устанавливаем значения ширин колонок после 1го и последующих рендера\n if (\n columnsElements[0].getBoundingClientRect().left !==\n columnsElements[columnsElements.length - 1].getBoundingClientRect().left\n ) {\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n // Выставляю в undefined так как если вычеслять значение для последней колонки так,\n // чтобы заполнялось все свободное пространство, при изменении ширины таблицы в меньшую сторону\n // ширина последней колонки изменяться не будет, а так она будет css'ом проставляться в auto\n if ((overallColumnsWidth ?? tableWidth) < tableWidth) {\n resultArr[resultArr.length - 1] = undefined;\n }\n return setResizedColumnWidths(resultArr);\n }\n\n // условие изменения ширины колонок при изменении ширины экрана (контейнера таблицы)\n if (tableWidth > 0 && !isResizable) {\n return setResizedColumnWidths(getColumnsWidth());\n }\n }, [tableWidth, overallColumnsWidth]);\n\n const isSortedByColumn = (column: TableColumn<T>): boolean =>\n getColumnSortByField(column) === sorting?.by;\n\n const getSortIcon = (column: TableColumn<T>) => {\n return (\n (isSortedByColumn(column) &&\n (sorting?.order === 'desc' ? IconSortDown : IconSortUp)) ||\n IconUnsort\n );\n };\n\n const handleSortClick = (column: TableColumn<T>): void => {\n const newSorting = getNewSorting(\n sorting,\n getColumnSortByField(column),\n (column.sortable && column?.sortFn) || undefined,\n );\n\n const sortProps = newSorting\n ? {\n sortingBy: newSorting.by,\n sortOrder: newSorting.order,\n }\n : null;\n onSortBy && onSortBy(sortProps);\n setSorting(newSorting);\n };\n\n const handleFilterTogglerClick = (id: string) => (): void => {\n setVisibleFilter(visibleFilter === id ? null : id);\n };\n\n const handleTooltipSave = (\n field: string,\n tooltipSelectedFilters: FieldSelectedValues,\n value?: unknown,\n ): void => {\n updateSelectedFilters(field, tooltipSelectedFilters, value);\n };\n\n const removeSelectedFilter =\n (tableFilters: Filters<T>) =>\n (filter: string): void => {\n removeOneSelectedFilter(tableFilters, filter);\n };\n\n const resetSelectedFilters = (): void => {\n if (filters && filters.length) {\n removeAllSelectedFilters(filters);\n }\n };\n\n const getStickyLeftOffset = (\n columnIndex: number,\n topHeaderGridIndex: number,\n ): number | undefined => {\n if (topHeaderGridIndex >= stickyColumns) {\n return;\n }\n\n return getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n };\n\n const handleScroll: React.UIEventHandler = (e) => {\n if (!(e.target instanceof HTMLElement) || e.target !== tableRef.current) {\n return;\n }\n\n setTableScroll({\n top: e.target.scrollTop,\n left: e.target.scrollLeft,\n });\n };\n\n const handleSelectRow = ({\n id,\n e,\n }: {\n id: string;\n e: React.SyntheticEvent;\n }): void | undefined => {\n if (!activeRow || !activeRow.onChange) {\n return;\n }\n\n activeRow.onChange({ id: activeRow.id === id ? undefined : id, e });\n };\n\n const handleRowHover = (id?: string) => (e: React.MouseEvent) =>\n onRowHover && onRowHover({ id, e });\n\n const handleRowCreate =\n (index: number, id?: string) => (e: React.MouseEvent) =>\n onRowCreate && onRowCreate({ e, id, index });\n\n const handleColumnResize = (idx: number, delta: number): void => {\n const columnMinWidth = Math.min(minColumnWidth, initialColumnWidths[idx]);\n const prevColumnWidth =\n resizedColumnWidths[idx] || initialColumnWidths[idx];\n const newColumnWidth = Math.max(columnMinWidth, prevColumnWidth + delta);\n\n updateColumnWidth(idx, newColumnWidth);\n\n // При расширении последней колонки скроллим таблицу вправо\n const containerEl = tableRef.current;\n if (idx === resizedColumnWidths.length - 1 && delta > 0 && containerEl) {\n containerEl.scrollBy(delta, 0);\n }\n };\n\n const stickyColumnsWidth = getColumnLeftOffset({\n columnIndex: stickyColumns,\n resizedColumnWidths,\n initialColumnWidths,\n });\n\n const columnsWithMetaData = (columns: Array<Header<T>>) => {\n return columns.map((column: Header<T>) => {\n const columnIndex = column.position.gridIndex;\n const resizedColumnWidth = resizedColumnWidths[columnIndex];\n const initialColumnWidth = initialColumnWidths[columnIndex];\n const columnWidth = resizedColumnWidth || initialColumnWidth;\n const columnLeftOffset = getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n const isResized = !!columnWidth && columnWidth !== initialColumnWidth;\n const isSticky = stickyColumns > column.position!.topHeaderGridIndex;\n const showResizer =\n stickyColumns > columnIndex ||\n stickyColumnsWidth + tableScroll.left < columnLeftOffset + columnWidth;\n const isFilterActive =\n (selectedFilters[column.accessor!]?.selected || []).length > 0;\n\n return {\n ...column,\n filterable: Boolean(\n filters && fieldFiltersPresent(filters, column.accessor!),\n ),\n isSortingActive: isSortedByColumn(column),\n isFilterActive,\n isResized,\n isSticky,\n showResizer,\n columnWidth,\n columnLeftOffset,\n };\n });\n };\n\n const headersWithMetaData: Array<Header<T> & ColumnMetaData> =\n columnsWithMetaData(flattenedHeaders);\n\n const hasNestedRows = React.useMemo(\n () => rows.some((row) => Boolean(row.rows?.length)),\n [rows],\n );\n\n const sortedTableData = sortingData(rows, sorting, onSortBy);\n\n const filteredData =\n filters && isSelectedFiltersPresent(selectedFilters)\n ? filterTableData({\n data: sortedTableData,\n filters: filters || [],\n selectedFilters,\n })\n : sortedTableData;\n\n const { maxVisibleRows = 210, scrollableEl = tableRef.current } =\n lazyLoad || {};\n\n const { getSlicedRows, setBoundaryRef } = useLazyLoadData(\n maxVisibleRows,\n scrollableEl,\n !!lazyLoad,\n );\n\n const flatRowsData = transformRows(\n filteredData,\n expandedRowIds,\n isExpandedRowsByDefault,\n );\n const rowsData = getSlicedRows(flatRowsData);\n\n const tableStyle: React.CSSProperties & TableCSSCustomProperty = {\n '--table-grid-template-columns': getColumnsSize(resizedColumnWidths),\n '--table-width': `${tableWidth}px`,\n };\n\n const hasMergedCells: boolean = columnsWithMetaData(lowHeaders).some(\n (header) => header.mergeCells,\n );\n\n const handleExpandRow = (id: string): (() => void) => {\n return (): void => {\n if (expandedRowIds.includes(id)) {\n setExpandedRowIds((prevState) =>\n prevState.filter((rowId) => rowId !== id),\n );\n return;\n }\n setExpandedRowIds((prevState) => [...prevState, id]);\n };\n };\n\n const getCollapseRollProps = (\n row: TableTreeRow<T>,\n columnIdx: number,\n ): TableRowsCollapseProps => {\n const withCollapseButton = Boolean(row.rows?.length) && columnIdx === 0;\n\n const baseProps = {\n level: row.level,\n isExpandedByDefault: isExpandedRowsByDefault,\n };\n\n if (!withCollapseButton || isExpandedRowsByDefault) {\n return baseProps;\n }\n\n const isExpanded = expandedRowIds.includes(row.id);\n const toggleCollapse = handleExpandRow(row.id);\n\n return {\n ...baseProps,\n withCollapseButton,\n isExpanded,\n toggleCollapse,\n };\n };\n\n const getExpandedRows = (rows: T[], defaultExpandAll?: boolean): string[] => {\n let expandedIds: string[] = [];\n rows.forEach((row) => {\n if (\n row.defaultExpand ||\n ((row.rows?.length ?? 0) > 0 && defaultExpandAll)\n ) {\n expandedIds.push(row.id);\n }\n if (row.rows) {\n const ids = getExpandedRows(row.rows as T[], defaultExpandAll);\n expandedIds = [...expandedIds, ...ids];\n if (ids.length > 0 && expandedIds.indexOf(row.id) === -1) {\n expandedIds.push(row.id);\n }\n }\n });\n return expandedIds;\n };\n\n useEffect(() => {\n if (rows) {\n setExpandedRowIds(getExpandedRows(rows, defaultExpandAll));\n }\n }, [rows, defaultExpandAll]);\n\n const renderCell = (\n column: TableColumn<T>,\n row: T,\n columnIdx: number,\n ): React.ReactNode => {\n const cellContent = column.renderCell\n ? column.renderCell(row)\n : row[column.accessor!];\n\n if (!hasNestedRows || columnIdx !== 0) {\n return cellContent as React.ReactNode;\n }\n\n const collapseRollProps = getCollapseRollProps(\n row as TableTreeRow<T>,\n columnIdx,\n );\n\n return (\n <TableRowsCollapse {...collapseRollProps}>\n {cellContent as React.ReactNode}\n </TableRowsCollapse>\n );\n };\n\n const renderEmptyRowsPlaceholder = (\n placeholder: React.ReactNode,\n ): React.ReactNode => {\n return typeof placeholder === 'string' ? (\n <Text size=\"s\">{placeholder}</Text>\n ) : (\n placeholder\n );\n };\n\n const bottomCreateRowButton = useMemo(() => {\n const rowsLength = rowsData.length;\n /* Можно и rowsData[rowsLength - 1], но в таком случае TS не подскажет,\n что мы будем искать id в undefined это может привести к ошибке */\n const { id: lastRowId } = rowsData.slice(-1).pop() ?? {};\n\n if (!onRowCreate) {\n return null;\n }\n\n return (\n <div className={cnTable(rowsLength ? 'CreatRowCell' : 'RowWithoutCells')}>\n <Button\n size={createButtonSizeMap[size]}\n form=\"brick\"\n label={rowCreateText}\n view=\"clear\"\n className={cnTable('CreateRowButton')}\n onClick={handleRowCreate(rowsLength, lastRowId)}\n width=\"full\"\n />\n </div>\n );\n }, [rowCreateText, rowsData.length, onRowCreate]);\n\n const getTableCellProps = (\n row: TableTreeRow<T>,\n rowIdx: number,\n column: TableColumn<T>,\n columnIdx: number,\n ): GetTableCellProps => {\n const {\n mergeCells,\n accessor,\n position,\n getComparisonValue = (e) => e,\n } = column;\n\n const previousCell =\n rowsData[rowIdx - 1] &&\n getComparisonValue(rowsData[rowIdx - 1][accessor!]);\n const currentCell = getComparisonValue(row[accessor!]);\n\n const result: GetTableCellProps = {\n rowSpan: 1,\n show: false,\n style: {\n left: getStickyLeftOffset(columnIdx, position!.topHeaderGridIndex),\n },\n };\n\n if (\n mergeCells &&\n ((rowsData[rowIdx - 1] && previousCell !== currentCell) || rowIdx === 0)\n ) {\n for (let i = rowIdx; i < rowsData.length; i++) {\n if (rowsData[i + 1]) {\n const nextCell = getComparisonValue(rowsData[i + 1][accessor!]);\n\n if (currentCell === nextCell) {\n result.rowSpan++;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n\n if (result.rowSpan > 1) {\n result.style['--row-span'] = `span ${result.rowSpan}`;\n }\n\n result.show = true;\n }\n\n if (!mergeCells) {\n result.show = true;\n }\n\n return result;\n };\n\n const handleCellClick: onCellClick = (params) => {\n onCellClick?.(params);\n };\n\n return (\n <div\n {...otherProps}\n ref={useForkRef([tableRef, ref])}\n className={cnTable(\n {\n size,\n isResizable,\n zebraStriped,\n withBorderBottom: !filteredData.length,\n },\n [className],\n )}\n style={tableStyle}\n onScroll={handleScroll}\n >\n {/*\n Элементы Resizer рендерятся в отдельных ячейках нулевой высоты с шириной\n равной ширине колонки сетки, при этом у ячейки самый большой z-index в\n таблице чтобы элементы Resizer могли перекрывать ячейки заголовка и\n контента. Кроме того это позволяет зафиксировать вертикальное и\n горизонтальное положение Resizer, а также его высоту.\n\n Получение высоты Resizer элементов через свойство элемента таблицы\n scrollHeight не подходило, так как в таком случае Resizer растягивал\n таблицу по высоте, поэтому от этого способа отказались.\n */}\n {columnsWithMetaData(lowHeaders).map(\n (\n column: TableColumn<T> & { showResizer: boolean },\n columnIdx: number,\n ) => (\n <TableCell\n type=\"resizer\"\n key={columnIdx}\n ref={(ref: HTMLDivElement | null): void => {\n columnsRefs.current[columnIdx] = ref;\n }}\n style={{\n left: getStickyLeftOffset(columnIdx, columnIdx),\n }}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n onClick={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n column={column}\n showVerticalShadow={showVerticalCellShadow}\n >\n {isResizable && (\n <TableResizer\n height={tableHeight - resizerTopOffsets[columnIdx]}\n top={resizerTopOffsets[columnIdx]}\n isVisible={column.showResizer}\n onResize={(delta): void => handleColumnResize(columnIdx, delta)}\n onDoubleClick={(): void =>\n updateColumnWidth(columnIdx, initialColumnWidths[columnIdx])\n }\n />\n )}\n </TableCell>\n ),\n )}\n <TableHeader\n isStickyHeader={stickyHeader}\n headersWithMetaData={headersWithMetaData}\n headerRowsHeights={headerRowsHeights}\n headerRowsRefs={headerRowsRefs}\n getStickyLeftOffset={getStickyLeftOffset}\n stickyColumnsGrid={stickyColumnsGrid}\n showVerticalCellShadow={showVerticalCellShadow}\n headerVerticalAlign={headerVerticalAlign}\n getSortIcon={getSortIcon}\n handleSortClick={handleSortClick}\n handleFilterTogglerClick={handleFilterTogglerClick}\n handleCellClick={handleCellClick}\n handleTooltipSave={handleTooltipSave}\n filters={filters}\n visibleFilter={visibleFilter}\n selectedFilters={selectedFilters}\n showHorizontalCellShadow={showHorizontalCellShadow}\n borderBetweenColumns={borderBetweenColumns}\n />\n {filters && isSelectedFiltersPresent(selectedFilters) && (\n <div className={cnTable('RowWithoutCells')}>\n <TableSelectedOptionsList\n values={getSelectedFiltersList({\n filters,\n selectedFilters,\n columns: lowHeaders,\n })}\n getTagLabel={getTagLabel}\n onRemove={removeSelectedFilter(filters)}\n onReset={resetSelectedFilters}\n />\n </div>\n )}\n {rowsData.length > 0 ? (\n rowsData.map((row, rowIdx) => {\n const nth = (rowIdx + 1) % 2 === 0 ? 'even' : 'odd';\n return (\n <div\n key={row.id}\n role=\"presentation\"\n className={cnTable('CellsRow', {\n nth,\n withMergedCells: hasMergedCells,\n })}\n onMouseEnter={handleRowHover(row.id)}\n onMouseLeave={handleRowHover(undefined)}\n onClick={(e) => onRowClick && onRowClick({ id: row.id, e })}\n >\n {columnsWithMetaData(lowHeaders).map(\n (column: TableColumn<T>, columnIdx: number) => {\n const { show, style, rowSpan } = getTableCellProps(\n row,\n rowIdx,\n column,\n columnIdx,\n );\n if (show) {\n return (\n <TableCell\n type=\"content\"\n key={column.accessor}\n ref={(ref: HTMLDivElement | null) => {\n cellsRefs.current[`${columnIdx}-${row.id}`] = ref;\n setRef(setBoundaryRef(columnIdx, rowIdx), ref);\n }}\n style={style}\n wrapperClassName={cnTable('ContentCell', {\n isActive: activeRow ? activeRow.id === row.id : false,\n isDarkned: activeRow\n ? activeRow.id !== undefined &&\n activeRow.id !== row.id\n : false,\n isMerged: column.mergeCells && rowSpan > 1,\n })}\n className={getAdditionalClassName?.({\n column,\n row,\n isActive: activeRow ? activeRow.id === row.id : false,\n })}\n wrap={getCellWrap?.(row)}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n })\n }\n onClick={(e: React.SyntheticEvent): void => {\n handleSelectRow({ id: row.id, e });\n\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n });\n }}\n column={column}\n verticalAlign={verticalAlign}\n isClickable={!!isRowsClickable}\n showVerticalShadow={\n showVerticalCellShadow &&\n // eslint-disable-next-line no-unsafe-optional-chaining\n column?.position!.gridIndex! +\n (column?.position!.colSpan || 1) ===\n stickyColumnsGrid\n }\n isBorderTop={rowIdx > 0 && borderBetweenRows}\n isBorderLeft={columnIdx > 0 && borderBetweenColumns}\n >\n {renderCell(column, row, columnIdx)}\n </TableCell>\n );\n }\n return null;\n },\n )}\n </div>\n );\n })\n ) : (\n <div className={cnTable('RowWithoutCells')}>\n <div className={cnTable('EmptyCell')}>\n {renderEmptyRowsPlaceholder(emptyRowsPlaceholder)}\n </div>\n </div>\n )}\n {bottomCreateRowButton}\n </div>\n );\n};\n\nexport const Table = React.forwardRef(InternalTable) as Table;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","names":["React","useEffect","useMemo","useComponentSize","useForkRef","IconSortDown","IconSortUp","IconUnsort","sortBy","sortByDefault","updateAt","cn","setRef","isNotNil","isString","Button","Text","TableCell","fieldFiltersPresent","filterTableData","getSelectedFiltersList","isSelectedFiltersPresent","useSelectedFilters","TableHeader","createSortingState","getColumnLeftOffset","getColumnsSize","getMergedArray","getNewSorting","Order","transformRows","useHeaderData","useLazyLoadData","TableResizer","TableRowsCollapse","TableSelectedOptionsList","TableTextFilter","TableFilterContainer","TableNumberFilter","TableChoiceGroupFilter","cnTable","sizes","zebraStriped","headerVerticalAligns","createButtonSizeMap","s","m","l","getColumnSortByField","column","sortable","sortByField","accessor","sortingData","rows","sorting","onSortBy","sortedRows","by","order","sortFn","some","row","length","map","defaultEmptyRowsPlaceholder","InternalTable","props","ref","columns","size","rawFilters","filters","isResizable","stickyHeader","stickyColumns","minColumnWidth","activeRow","verticalAlign","headerVerticalAlign","borderBetweenRows","borderBetweenColumns","emptyRowsPlaceholder","defaultExpandAll","className","onRowHover","onRowClick","onRowCreate","onCellClick","getAdditionalClassName","rowCreateText","lazyLoad","onFiltersUpdated","getTagLabel","getCellWrap","isExpandedRowsByDefault","otherProps","headers","flattenedHeaders","lowHeaders","headerRowsRefs","headerRowsHeights","resizerTopOffsets","stickyColumnsGrid","position","gridIndex","colSpan","getColumnsWidth","width","useState","resizedColumnWidths","setResizedColumnWidths","filter","id","field","initialColumnWidths","setInitialColumnWidths","setSorting","visibleFilter","setVisibleFilter","top","left","tableScroll","setTableScroll","tableRef","useRef","columnsRefs","cellsRefs","selectedFilters","updateSelectedFilters","removeOneSelectedFilter","removeAllSelectedFilters","expandedRowIds","setExpandedRowIds","sortingColumn","find","col","Object","prototype","hasOwnProperty","call","sortingState","tableHeight","current","clientHeight","tableWidth","clientWidth","showVerticalCellShadow","showHorizontalCellShadow","isRowsClickable","onChange","updateColumnWidth","idx","newWidth","overallColumnsWidth","columnsElements","values","columnsElementsWidths","el","getBoundingClientRect","resultArr","reduce","a","b","useLayoutEffect","isSortedByColumn","getStickyLeftOffset","columnIndex","topHeaderGridIndex","handleSelectRow","e","handleRowHover","handleRowCreate","index","handleColumnResize","delta","columnMinWidth","Math","min","prevColumnWidth","newColumnWidth","max","containerEl","scrollBy","stickyColumnsWidth","columnsWithMetaData","resizedColumnWidth","initialColumnWidth","columnWidth","columnLeftOffset","isSticky","showResizer","isFilterActive","selected","filterable","isSortingActive","isResized","headersWithMetaData","hasNestedRows","sortedTableData","filteredData","data","maxVisibleRows","scrollableEl","getSlicedRows","setBoundaryRef","flatRowsData","rowsData","tableStyle","hasMergedCells","header","mergeCells","handleExpandRow","includes","prevState","rowId","getCollapseRollProps","columnIdx","withCollapseButton","baseProps","level","options","isExpandedByDefault","isExpanded","toggleCollapse","getExpandedRows","expandedIds","forEach","defaultExpand","push","ids","indexOf","renderCell","cellContent","collapseRollProps","bottomCreateRowButton","rowsLength","slice","pop","lastRowId","getTableCellProps","rowIdx","getComparisonValue","previousCell","currentCell","result","rowSpan","show","style","nextCell","i","handleCellClick","params","withBorderBottom","handleScroll","target","HTMLElement","scrollTop","scrollLeft","type","getSortIcon","handleSortClick","newSorting","sortProps","sortingBy","sortOrder","handleFilterTogglerClick","handleTooltipSave","tooltipSelectedFilters","value","removeSelectedFilter","tableFilters","resetSelectedFilters","nth","withMergedCells","isActive","isDarkned","isMerged","renderEmptyRowsPlaceholder","placeholder","Table","forwardRef"],"sources":["../../../../../src/components/Table/Table.tsx"],"sourcesContent":["import './Table.css';\n\nimport React, { useEffect, useMemo } from 'react';\n\nimport { useComponentSize } from '../../hooks/useComponentSize/useComponentSize';\nimport { useForkRef } from '../../hooks/useForkRef/useForkRef';\nimport { IconSortDown } from '../../icons/IconSortDown/IconSortDown';\nimport { IconSortUp } from '../../icons/IconSortUp/IconSortUp';\nimport { IconUnsort } from '../../icons/IconUnsort/IconUnsort';\nimport { sortBy as sortByDefault, updateAt } from '../../utils/array';\nimport { cn } from '../../utils/bem';\nimport { setRef } from '../../utils/setRef';\nimport { isNotNil, isString } from '../../utils/type-guards';\nimport { Button, ButtonPropSize } from '../Button/Button';\nimport { Text } from '../Text/Text';\nimport { HorizontalAlign, TableCell, VerticalAlign } from './Cell/TableCell';\nimport {\n fieldFiltersPresent,\n FieldSelectedValues,\n Filters,\n filterTableData,\n getSelectedFiltersList,\n isSelectedFiltersPresent,\n onSortBy,\n SelectedFilters,\n useSelectedFilters,\n} from './filtering';\nimport { TableHeader } from './Header/TableHeader';\nimport {\n createSortingState,\n getColumnLeftOffset,\n getColumnsSize,\n getMergedArray,\n getNewSorting,\n Header,\n Order,\n OrderType,\n Position,\n transformRows,\n useHeaderData,\n useLazyLoadData,\n} from './helpers';\nimport { TableResizer } from './Resizer/TableResizer';\nimport {\n Props as TableRowsCollapseProps,\n TableRowsCollapse,\n} from './RowsCollapse/TableRowsCollapse';\nimport {\n GetTagLabel,\n TableSelectedOptionsList,\n} from './SelectedOptionsList/TableSelectedOptionsList';\n\nexport { TableTextFilter } from './TextFilter/TableTextFilter';\nexport { TableFilterContainer } from './FilterContainer/TableFilterContainer';\nexport { TableNumberFilter } from './NumberFilter/TableNumberFilter';\nexport { TableChoiceGroupFilter } from './ChoiceGroupFilter/TableChoiceGroupFilter';\n\nconst cnTable = cn('Table');\n\nexport const sizes = ['s', 'm', 'l'] as const;\ntype Size = typeof sizes[number];\n\nexport const zebraStriped = ['odd', 'even'] as const;\ntype ZebraStriped = typeof zebraStriped[number];\n\nexport const headerVerticalAligns = ['center', 'bottom'] as const;\nexport type HeaderVerticalAlign = typeof headerVerticalAligns[number];\n\nconst createButtonSizeMap: Record<Size, ButtonPropSize> = {\n s: 'xs',\n m: 's',\n l: 'm',\n};\n\ntype TableCSSCustomProperty = {\n '--table-width': string;\n '--table-grid-template-columns': string;\n};\n\nexport type LazyLoad =\n | {\n maxVisibleRows?: number;\n scrollableEl?: HTMLDivElement | Window;\n }\n | undefined;\n\ntype ActiveRow = {\n id: string | undefined;\n onChange: ({\n id,\n e,\n }: {\n id: string | undefined;\n e?: React.SyntheticEvent;\n }) => void;\n};\n\ntype onRowHover = ({\n id,\n e,\n}: {\n id: string | undefined;\n e: React.MouseEvent;\n}) => void;\n\ntype onRowClick = ({ id, e }: { id: string; e: React.MouseEvent }) => void;\n\ntype onRowCreate = ({\n id,\n index,\n e,\n}: {\n id?: string;\n index: number;\n e: React.MouseEvent;\n}) => void;\n\nexport type CellClickType = 'click' | 'contextMenu';\n\nexport type onCellClick = ({\n e,\n type,\n rowId,\n columnIdx,\n ref,\n}: {\n e: React.SyntheticEvent;\n type: CellClickType;\n columnIdx: number;\n ref: React.RefObject<HTMLDivElement>;\n rowId?: string;\n}) => void;\n\nexport type TableRow = {\n id: string;\n defaultExpand?: boolean;\n rows?: TableRow[];\n};\n\nexport type TableTreeRow<T extends TableRow> = {\n options: {\n level: number;\n };\n} & T;\n\nexport type TableFilters<T extends TableRow> = Filters<T>;\n\nexport type RowField<T extends TableRow> = Exclude<keyof T, symbol | number>;\n\nexport type ColumnWidth = number | undefined;\n\nexport type ValueOf<T> = T[keyof T];\n\ntype ColumnBase<T extends TableRow> = ValueOf<{\n [K in keyof T]: {\n accessor: K extends string ? K : never;\n sortable?: boolean;\n sortByField?: keyof T;\n order?: OrderType;\n sortFn?(a: T[K], b: T[K]): number;\n renderCell?: (row: T) => React.ReactNode;\n getComparisonValue?: (cell: T[K]) => number | string;\n };\n}>;\ntype SingleColumnAddition<T extends TableRow> = ColumnBase<T> & {\n columns?: never;\n};\ntype GroupColumnAddition<T extends TableRow> = {\n columns: TableColumn<T>[];\n} & {\n // eslint-disable-next-line no-unused-vars\n [K in keyof ColumnBase<T>]?: never;\n};\nexport interface TableControl<T extends TableRow> {\n column: Header<T> & ColumnMetaData;\n}\n\nexport type SortByProps<T extends TableRow> = {\n sortingBy: keyof T;\n sortOrder: 'asc' | 'desc';\n};\n\nexport type TableColumn<T extends TableRow> = {\n title: React.ReactNode;\n align?: HorizontalAlign;\n withoutPadding?: boolean;\n width?: ColumnWidth;\n mergeCells?: boolean;\n position?: Position;\n hidden?: boolean;\n control?: ({ column }: TableControl<T>) => React.ReactNode;\n} & (GroupColumnAddition<T> | SingleColumnAddition<T>);\n\nexport type TableProps<T extends TableRow> = {\n columns: TableColumn<T>[];\n rows: T[];\n isResizable?: boolean;\n filters?: Filters<T>;\n onSortBy?: onSortBy<T>;\n size?: Size;\n stickyHeader?: boolean;\n stickyColumns?: number;\n minColumnWidth?: number;\n activeRow?: ActiveRow;\n verticalAlign?: VerticalAlign;\n headerVerticalAlign?: HeaderVerticalAlign;\n zebraStriped?: ZebraStriped;\n borderBetweenRows?: boolean;\n defaultExpandAll?: boolean;\n borderBetweenColumns?: boolean;\n emptyRowsPlaceholder?: React.ReactNode;\n className?: string;\n onRowHover?: onRowHover;\n onRowClick?: onRowClick;\n onRowCreate?: onRowCreate;\n onCellClick?: onCellClick;\n getAdditionalClassName?: (props: {\n column: TableColumn<T>;\n row: T;\n isActive: boolean;\n }) => string;\n rowCreateText?: string;\n lazyLoad?: LazyLoad;\n onFiltersUpdated?: (filters: SelectedFilters) => void;\n getTagLabel?: GetTagLabel;\n isExpandedRowsByDefault?: boolean;\n getCellWrap?: (row: T) => 'truncate' | 'break';\n};\n\ntype Table = <T extends TableRow>(\n props: TableProps<T> & { ref?: React.Ref<HTMLDivElement> },\n) => React.ReactElement | null;\n\nexport type ColumnMetaData = {\n filterable: boolean;\n isSortingActive: boolean;\n isFilterActive: boolean;\n isResized: boolean;\n isSticky: boolean;\n showResizer: boolean;\n columnWidth: number;\n columnLeftOffset: number;\n};\n\nexport type SortingState<T extends TableRow> = {\n by: keyof T;\n order: 'asc' | 'desc';\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number;\n} | null;\n\ntype GetTableCellProps = {\n show: boolean;\n rowSpan: number;\n style: {\n 'left'?: number;\n '--row-span'?: string;\n };\n};\n\nconst getColumnSortByField = <T extends TableRow>(\n column: TableColumn<T>,\n): keyof T => (column.sortable && column.sortByField) || column.accessor!;\n\nconst sortingData = <T extends TableRow>(\n rows: T[],\n sorting: SortingState<T>,\n onSortBy?: onSortBy<T>,\n): T[] => {\n if (onSortBy) {\n return rows;\n }\n\n if (!sorting) {\n return rows;\n }\n const sortedRows = sortByDefault(\n rows,\n sorting.by,\n sorting.order,\n sorting.sortFn,\n );\n\n if (sortedRows.some((row) => row.rows?.length)) {\n return sortedRows.map((row) => {\n return row.rows\n ? { ...row, rows: sortingData(row.rows as T[], sorting, onSortBy) }\n : row;\n });\n }\n\n return sortedRows;\n};\n\nconst defaultEmptyRowsPlaceholder = (\n <Text as=\"span\" view=\"primary\" size=\"s\" lineHeight=\"s\">\n Нет данных\n </Text>\n);\n\nconst InternalTable = <T extends TableRow>(\n props: TableProps<T>,\n ref?: React.Ref<HTMLDivElement>,\n) => {\n const {\n columns,\n rows,\n size = 'l',\n filters: rawFilters,\n isResizable = false,\n stickyHeader = false,\n stickyColumns = 0,\n minColumnWidth = 150,\n activeRow,\n verticalAlign = 'top',\n headerVerticalAlign = 'center',\n zebraStriped,\n borderBetweenRows = false,\n borderBetweenColumns = false,\n emptyRowsPlaceholder = defaultEmptyRowsPlaceholder,\n defaultExpandAll,\n className,\n onRowHover,\n onRowClick,\n onRowCreate,\n onCellClick,\n getAdditionalClassName,\n rowCreateText = '+ Добавить строку',\n lazyLoad,\n onSortBy,\n onFiltersUpdated,\n getTagLabel,\n getCellWrap,\n isExpandedRowsByDefault = false,\n ...otherProps\n } = props;\n const {\n headers,\n flattenedHeaders,\n lowHeaders,\n headerRowsRefs,\n headerRowsHeights,\n resizerTopOffsets,\n } = useHeaderData(columns);\n const stickyColumnsGrid =\n // eslint-disable-next-line no-unsafe-optional-chaining\n headers[0][stickyColumns - 1]?.position.gridIndex! +\n (headers[0][stickyColumns - 1]?.position.colSpan || 1);\n\n const getColumnsWidth = () =>\n lowHeaders.map((column: TableColumn<T>) => column.width);\n const [resizedColumnWidths, setResizedColumnWidths] = React.useState<\n ColumnWidth[]\n >(getColumnsWidth());\n\n const filters = React.useMemo(() => {\n return (\n rawFilters && rawFilters.filter((filter) => filter.id && filter.field)\n );\n }, [rawFilters]);\n\n React.useEffect(() => {\n setResizedColumnWidths(getColumnsWidth());\n }, [lowHeaders.length]);\n\n const [initialColumnWidths, setInitialColumnWidths] = React.useState<\n number[]\n >([]);\n const [sorting, setSorting] = React.useState<SortingState<T>>(null);\n const [visibleFilter, setVisibleFilter] = React.useState<string | null>(null);\n const [tableScroll, setTableScroll] = React.useState({ top: 0, left: 0 });\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n const columnsRefs = React.useRef<Record<number, HTMLDivElement | null>>({});\n const cellsRefs = React.useRef<Record<string, HTMLDivElement | null>>({});\n const {\n selectedFilters,\n updateSelectedFilters,\n removeOneSelectedFilter,\n removeAllSelectedFilters,\n } = useSelectedFilters(filters, onFiltersUpdated);\n const [expandedRowIds, setExpandedRowIds] = React.useState<string[]>([]);\n\n // установка сортировки по умолчанию\n\n React.useEffect(() => {\n const sortingColumn = columns.find(\n (col) =>\n isString(col.order) &&\n Object.prototype.hasOwnProperty.call(Order, col.order),\n );\n if (sortingColumn) {\n const sortingState = createSortingState(\n getColumnSortByField(sortingColumn),\n sortingColumn.order,\n sortingColumn.sortFn,\n );\n setSorting(sortingState);\n }\n }, [columns]);\n\n /*\n Подписываемся на изменения размеров таблицы, но не используем значения из\n хука так как нам нужна ширина и высота таблицы без размера скролла. Этот хук\n использует значения `offsetWidth` и `offsetHeight` которые включают размер\n скролл бара.\n */\n useComponentSize(tableRef);\n const tableHeight = tableRef.current?.clientHeight || 0;\n const tableWidth = tableRef.current?.clientWidth || 0;\n\n const showVerticalCellShadow = tableScroll.left > 0;\n const showHorizontalCellShadow = tableScroll.top > 0;\n const isRowsClickable = activeRow && activeRow.onChange;\n\n const updateColumnWidth = (idx: number, newWidth: number): void => {\n setResizedColumnWidths(updateAt(resizedColumnWidths, idx, newWidth));\n };\n\n const overallColumnsWidth = useMemo(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n return resultArr.reduce((a, b) => (a ?? 0) + (b ?? 0));\n }, [resizedColumnWidths, isResizable]);\n\n React.useLayoutEffect(() => {\n const columnsElements = Object.values(columnsRefs.current).filter(isNotNil);\n if (columnsElements.length === 0) return;\n\n const columnsElementsWidths = columnsElements.map(\n (el) => el.getBoundingClientRect().width,\n );\n setInitialColumnWidths(columnsElementsWidths);\n\n // Проверяем, что таблица отрисовалась корректно, и устанавливаем значения ширин колонок после 1го и последующих рендера\n if (\n columnsElements[0].getBoundingClientRect().left !==\n columnsElements[columnsElements.length - 1].getBoundingClientRect().left\n ) {\n const resultArr = getMergedArray(\n columnsElementsWidths,\n resizedColumnWidths,\n );\n // Выставляю в undefined так как если вычеслять значение для последней колонки так,\n // чтобы заполнялось все свободное пространство, при изменении ширины таблицы в меньшую сторону\n // ширина последней колонки изменяться не будет, а так она будет css'ом проставляться в auto\n if ((overallColumnsWidth ?? tableWidth) < tableWidth) {\n resultArr[resultArr.length - 1] = undefined;\n }\n return setResizedColumnWidths(resultArr);\n }\n\n // условие изменения ширины колонок при изменении ширины экрана (контейнера таблицы)\n if (tableWidth > 0 && !isResizable) {\n return setResizedColumnWidths(getColumnsWidth());\n }\n }, [tableWidth, overallColumnsWidth]);\n\n const isSortedByColumn = (column: TableColumn<T>): boolean =>\n getColumnSortByField(column) === sorting?.by;\n\n const getSortIcon = (column: TableColumn<T>) => {\n return (\n (isSortedByColumn(column) &&\n (sorting?.order === 'desc' ? IconSortDown : IconSortUp)) ||\n IconUnsort\n );\n };\n\n const handleSortClick = (column: TableColumn<T>): void => {\n const newSorting = getNewSorting(\n sorting,\n getColumnSortByField(column),\n (column.sortable && column?.sortFn) || undefined,\n );\n\n const sortProps = newSorting\n ? {\n sortingBy: newSorting.by,\n sortOrder: newSorting.order,\n }\n : null;\n onSortBy && onSortBy(sortProps);\n setSorting(newSorting);\n };\n\n const handleFilterTogglerClick = (id: string) => (): void => {\n setVisibleFilter(visibleFilter === id ? null : id);\n };\n\n const handleTooltipSave = (\n field: string,\n tooltipSelectedFilters: FieldSelectedValues,\n value?: unknown,\n ): void => {\n updateSelectedFilters(field, tooltipSelectedFilters, value);\n };\n\n const removeSelectedFilter =\n (tableFilters: Filters<T>) =>\n (filter: string): void => {\n removeOneSelectedFilter(tableFilters, filter);\n };\n\n const resetSelectedFilters = (): void => {\n if (filters && filters.length) {\n removeAllSelectedFilters(filters);\n }\n };\n\n const getStickyLeftOffset = (\n columnIndex: number,\n topHeaderGridIndex: number,\n ): number | undefined => {\n if (topHeaderGridIndex >= stickyColumns) {\n return;\n }\n\n return getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n };\n\n const handleScroll: React.UIEventHandler = (e) => {\n if (!(e.target instanceof HTMLElement) || e.target !== tableRef.current) {\n return;\n }\n\n setTableScroll({\n top: e.target.scrollTop,\n left: e.target.scrollLeft,\n });\n };\n\n const handleSelectRow = ({\n id,\n e,\n }: {\n id: string;\n e: React.SyntheticEvent;\n }): void | undefined => {\n if (!activeRow || !activeRow.onChange) {\n return;\n }\n\n activeRow.onChange({ id: activeRow.id === id ? undefined : id, e });\n };\n\n const handleRowHover = (id?: string) => (e: React.MouseEvent) =>\n onRowHover && onRowHover({ id, e });\n\n const handleRowCreate =\n (index: number, id?: string) => (e: React.MouseEvent) =>\n onRowCreate && onRowCreate({ e, id, index });\n\n const handleColumnResize = (idx: number, delta: number): void => {\n const columnMinWidth = Math.min(minColumnWidth, initialColumnWidths[idx]);\n const prevColumnWidth =\n resizedColumnWidths[idx] || initialColumnWidths[idx];\n const newColumnWidth = Math.max(columnMinWidth, prevColumnWidth + delta);\n\n updateColumnWidth(idx, newColumnWidth);\n\n // При расширении последней колонки скроллим таблицу вправо\n const containerEl = tableRef.current;\n if (idx === resizedColumnWidths.length - 1 && delta > 0 && containerEl) {\n containerEl.scrollBy(delta, 0);\n }\n };\n\n const stickyColumnsWidth = getColumnLeftOffset({\n columnIndex: stickyColumns,\n resizedColumnWidths,\n initialColumnWidths,\n });\n\n const columnsWithMetaData = (columns: Array<Header<T>>) => {\n return columns.map((column: Header<T>) => {\n const columnIndex = column.position.gridIndex;\n const resizedColumnWidth = resizedColumnWidths[columnIndex];\n const initialColumnWidth = initialColumnWidths[columnIndex];\n const columnWidth = resizedColumnWidth || initialColumnWidth;\n const columnLeftOffset = getColumnLeftOffset({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n });\n const isResized = !!columnWidth && columnWidth !== initialColumnWidth;\n const isSticky = stickyColumns > column.position!.topHeaderGridIndex;\n const showResizer =\n stickyColumns > columnIndex ||\n stickyColumnsWidth + tableScroll.left < columnLeftOffset + columnWidth;\n const isFilterActive =\n (selectedFilters[column.accessor!]?.selected || []).length > 0;\n\n return {\n ...column,\n filterable: Boolean(\n filters && fieldFiltersPresent(filters, column.accessor!),\n ),\n isSortingActive: isSortedByColumn(column),\n isFilterActive,\n isResized,\n isSticky,\n showResizer,\n columnWidth,\n columnLeftOffset,\n };\n });\n };\n\n const headersWithMetaData: Array<Header<T> & ColumnMetaData> =\n columnsWithMetaData(flattenedHeaders);\n\n const hasNestedRows = React.useMemo(\n () => rows.some((row) => Boolean(row.rows?.length)),\n [rows],\n );\n\n const sortedTableData = sortingData(rows, sorting, onSortBy);\n\n const filteredData =\n filters && isSelectedFiltersPresent(selectedFilters)\n ? filterTableData({\n data: sortedTableData,\n filters: filters || [],\n selectedFilters,\n })\n : sortedTableData;\n\n const { maxVisibleRows = 210, scrollableEl = tableRef.current } =\n lazyLoad || {};\n\n const { getSlicedRows, setBoundaryRef } = useLazyLoadData(\n maxVisibleRows,\n scrollableEl,\n !!lazyLoad,\n );\n\n const flatRowsData = transformRows(\n filteredData,\n expandedRowIds,\n isExpandedRowsByDefault,\n );\n const rowsData = getSlicedRows(flatRowsData);\n\n const tableStyle: React.CSSProperties & TableCSSCustomProperty = {\n '--table-grid-template-columns': getColumnsSize(resizedColumnWidths),\n '--table-width': `${tableWidth}px`,\n };\n\n const hasMergedCells: boolean = columnsWithMetaData(lowHeaders).some(\n (header) => header.mergeCells,\n );\n\n const handleExpandRow = (id: string): (() => void) => {\n return (): void => {\n if (expandedRowIds.includes(id)) {\n setExpandedRowIds((prevState) =>\n prevState.filter((rowId) => rowId !== id),\n );\n return;\n }\n setExpandedRowIds((prevState) => [...prevState, id]);\n };\n };\n\n const getCollapseRollProps = (\n row: TableTreeRow<T>,\n columnIdx: number,\n ): TableRowsCollapseProps => {\n const withCollapseButton = Boolean(row.rows?.length) && columnIdx === 0;\n\n const baseProps = {\n level: row.options.level,\n isExpandedByDefault: isExpandedRowsByDefault,\n };\n\n if (!withCollapseButton || isExpandedRowsByDefault) {\n return baseProps;\n }\n\n const isExpanded = expandedRowIds.includes(row.id);\n const toggleCollapse = handleExpandRow(row.id);\n\n return {\n ...baseProps,\n withCollapseButton,\n isExpanded,\n toggleCollapse,\n };\n };\n\n const getExpandedRows = (rows: T[], defaultExpandAll?: boolean): string[] => {\n let expandedIds: string[] = [];\n rows.forEach((row) => {\n if (\n row.defaultExpand ||\n ((row.rows?.length ?? 0) > 0 && defaultExpandAll)\n ) {\n expandedIds.push(row.id);\n }\n if (row.rows) {\n const ids = getExpandedRows(row.rows as T[], defaultExpandAll);\n expandedIds = [...expandedIds, ...ids];\n if (ids.length > 0 && expandedIds.indexOf(row.id) === -1) {\n expandedIds.push(row.id);\n }\n }\n });\n return expandedIds;\n };\n\n useEffect(() => {\n if (rows) {\n setExpandedRowIds(getExpandedRows(rows, defaultExpandAll));\n }\n }, [rows, defaultExpandAll]);\n\n const renderCell = (\n column: TableColumn<T>,\n row: T,\n columnIdx: number,\n ): React.ReactNode => {\n const cellContent = column.renderCell\n ? column.renderCell(row)\n : row[column.accessor!];\n\n if (!hasNestedRows || columnIdx !== 0) {\n return cellContent as React.ReactNode;\n }\n\n const collapseRollProps = getCollapseRollProps(\n row as TableTreeRow<T>,\n columnIdx,\n );\n\n return (\n <TableRowsCollapse {...collapseRollProps}>\n {cellContent as React.ReactNode}\n </TableRowsCollapse>\n );\n };\n\n const renderEmptyRowsPlaceholder = (\n placeholder: React.ReactNode,\n ): React.ReactNode => {\n return typeof placeholder === 'string' ? (\n <Text size=\"s\">{placeholder}</Text>\n ) : (\n placeholder\n );\n };\n\n const bottomCreateRowButton = useMemo(() => {\n const rowsLength = rowsData.length;\n /* Можно и rowsData[rowsLength - 1], но в таком случае TS не подскажет,\n что мы будем искать id в undefined это может привести к ошибке */\n const { id: lastRowId } = rowsData.slice(-1).pop() ?? {};\n\n if (!onRowCreate) {\n return null;\n }\n\n return (\n <div className={cnTable(rowsLength ? 'CreatRowCell' : 'RowWithoutCells')}>\n <Button\n size={createButtonSizeMap[size]}\n form=\"brick\"\n label={rowCreateText}\n view=\"clear\"\n className={cnTable('CreateRowButton')}\n onClick={handleRowCreate(rowsLength, lastRowId)}\n width=\"full\"\n />\n </div>\n );\n }, [rowCreateText, rowsData.length, onRowCreate]);\n\n const getTableCellProps = (\n row: TableTreeRow<T>,\n rowIdx: number,\n column: TableColumn<T>,\n columnIdx: number,\n ): GetTableCellProps => {\n const {\n mergeCells,\n accessor,\n position,\n getComparisonValue = (e) => e,\n } = column;\n\n const previousCell =\n rowsData[rowIdx - 1] &&\n getComparisonValue(rowsData[rowIdx - 1][accessor!]);\n const currentCell = getComparisonValue(row[accessor!]);\n\n const result: GetTableCellProps = {\n rowSpan: 1,\n show: false,\n style: {\n left: getStickyLeftOffset(columnIdx, position!.topHeaderGridIndex),\n },\n };\n\n if (\n mergeCells &&\n ((rowsData[rowIdx - 1] && previousCell !== currentCell) || rowIdx === 0)\n ) {\n for (let i = rowIdx; i < rowsData.length; i++) {\n if (rowsData[i + 1]) {\n const nextCell = getComparisonValue(rowsData[i + 1][accessor!]);\n\n if (currentCell === nextCell) {\n result.rowSpan++;\n } else {\n break;\n }\n } else {\n break;\n }\n }\n\n if (result.rowSpan > 1) {\n result.style['--row-span'] = `span ${result.rowSpan}`;\n }\n\n result.show = true;\n }\n\n if (!mergeCells) {\n result.show = true;\n }\n\n return result;\n };\n\n const handleCellClick: onCellClick = (params) => {\n onCellClick?.(params);\n };\n\n return (\n <div\n {...otherProps}\n ref={useForkRef([tableRef, ref])}\n className={cnTable(\n {\n size,\n isResizable,\n zebraStriped,\n withBorderBottom: !filteredData.length,\n },\n [className],\n )}\n style={tableStyle}\n onScroll={handleScroll}\n >\n {/*\n Элементы Resizer рендерятся в отдельных ячейках нулевой высоты с шириной\n равной ширине колонки сетки, при этом у ячейки самый большой z-index в\n таблице чтобы элементы Resizer могли перекрывать ячейки заголовка и\n контента. Кроме того это позволяет зафиксировать вертикальное и\n горизонтальное положение Resizer, а также его высоту.\n\n Получение высоты Resizer элементов через свойство элемента таблицы\n scrollHeight не подходило, так как в таком случае Resizer растягивал\n таблицу по высоте, поэтому от этого способа отказались.\n */}\n {columnsWithMetaData(lowHeaders).map(\n (\n column: TableColumn<T> & { showResizer: boolean },\n columnIdx: number,\n ) => (\n <TableCell\n type=\"resizer\"\n key={columnIdx}\n ref={(ref: HTMLDivElement | null): void => {\n columnsRefs.current[columnIdx] = ref;\n }}\n style={{\n left: getStickyLeftOffset(columnIdx, columnIdx),\n }}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n onClick={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n ref: { current: columnsRefs.current[columnIdx] },\n })\n }\n column={column}\n showVerticalShadow={showVerticalCellShadow}\n >\n {isResizable && (\n <TableResizer\n height={tableHeight - resizerTopOffsets[columnIdx]}\n top={resizerTopOffsets[columnIdx]}\n isVisible={column.showResizer}\n onResize={(delta): void => handleColumnResize(columnIdx, delta)}\n onDoubleClick={(): void =>\n updateColumnWidth(columnIdx, initialColumnWidths[columnIdx])\n }\n />\n )}\n </TableCell>\n ),\n )}\n <TableHeader\n isStickyHeader={stickyHeader}\n headersWithMetaData={headersWithMetaData}\n headerRowsHeights={headerRowsHeights}\n headerRowsRefs={headerRowsRefs}\n getStickyLeftOffset={getStickyLeftOffset}\n stickyColumnsGrid={stickyColumnsGrid}\n showVerticalCellShadow={showVerticalCellShadow}\n headerVerticalAlign={headerVerticalAlign}\n getSortIcon={getSortIcon}\n handleSortClick={handleSortClick}\n handleFilterTogglerClick={handleFilterTogglerClick}\n handleCellClick={handleCellClick}\n handleTooltipSave={handleTooltipSave}\n filters={filters}\n visibleFilter={visibleFilter}\n selectedFilters={selectedFilters}\n showHorizontalCellShadow={showHorizontalCellShadow}\n borderBetweenColumns={borderBetweenColumns}\n />\n {filters && isSelectedFiltersPresent(selectedFilters) && (\n <div className={cnTable('RowWithoutCells')}>\n <TableSelectedOptionsList\n values={getSelectedFiltersList({\n filters,\n selectedFilters,\n columns: lowHeaders,\n })}\n getTagLabel={getTagLabel}\n onRemove={removeSelectedFilter(filters)}\n onReset={resetSelectedFilters}\n />\n </div>\n )}\n {rowsData.length > 0 ? (\n rowsData.map((row, rowIdx) => {\n const nth = (rowIdx + 1) % 2 === 0 ? 'even' : 'odd';\n return (\n <div\n key={row.id}\n role=\"presentation\"\n className={cnTable('CellsRow', {\n nth,\n withMergedCells: hasMergedCells,\n })}\n onMouseEnter={handleRowHover(row.id)}\n onMouseLeave={handleRowHover(undefined)}\n onClick={(e) => onRowClick && onRowClick({ id: row.id, e })}\n >\n {columnsWithMetaData(lowHeaders).map(\n (column: TableColumn<T>, columnIdx: number) => {\n const { show, style, rowSpan } = getTableCellProps(\n row,\n rowIdx,\n column,\n columnIdx,\n );\n if (show) {\n return (\n <TableCell\n type=\"content\"\n key={column.accessor}\n ref={(ref: HTMLDivElement | null) => {\n cellsRefs.current[`${columnIdx}-${row.id}`] = ref;\n setRef(setBoundaryRef(columnIdx, rowIdx), ref);\n }}\n style={style}\n wrapperClassName={cnTable('ContentCell', {\n isActive: activeRow ? activeRow.id === row.id : false,\n isDarkned: activeRow\n ? activeRow.id !== undefined &&\n activeRow.id !== row.id\n : false,\n isMerged: column.mergeCells && rowSpan > 1,\n })}\n className={getAdditionalClassName?.({\n column,\n row,\n isActive: activeRow ? activeRow.id === row.id : false,\n })}\n wrap={getCellWrap?.(row)}\n onContextMenu={(e: React.SyntheticEvent) =>\n handleCellClick({\n e,\n type: 'contextMenu',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n })\n }\n onClick={(e: React.SyntheticEvent): void => {\n handleSelectRow({ id: row.id, e });\n\n handleCellClick({\n e,\n type: 'click',\n columnIdx,\n rowId: row.id,\n ref: {\n current:\n cellsRefs.current[`${columnIdx}-${row.id}`],\n },\n });\n }}\n column={column}\n verticalAlign={verticalAlign}\n isClickable={!!isRowsClickable}\n showVerticalShadow={\n showVerticalCellShadow &&\n // eslint-disable-next-line no-unsafe-optional-chaining\n column?.position!.gridIndex! +\n (column?.position!.colSpan || 1) ===\n stickyColumnsGrid\n }\n isBorderTop={rowIdx > 0 && borderBetweenRows}\n isBorderLeft={columnIdx > 0 && borderBetweenColumns}\n >\n {renderCell(column, row, columnIdx)}\n </TableCell>\n );\n }\n return null;\n },\n )}\n </div>\n );\n })\n ) : (\n <div className={cnTable('RowWithoutCells')}>\n <div className={cnTable('EmptyCell')}>\n {renderEmptyRowsPlaceholder(emptyRowsPlaceholder)}\n </div>\n </div>\n )}\n {bottomCreateRowButton}\n </div>\n );\n};\n\nexport const Table = React.forwardRef(InternalTable) as Table;\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 _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React from"react";import{isNotNil,isNumber,isString}from"../../utils/type-guards";export var Order={ASC:"ASC",asc:"asc",DESC:"DESC",desc:"desc"};export var getColumnsSize=function(a){return a.map(function(a){return isNumber(a)?"".concat(a,"px"):"auto"}).join(" ")};export var getColumnLeftOffset=function(a){var b=a.columnIndex,c=a.resizedColumnWidths,d=a.initialColumnWidths,e=d.slice(0,b).map(function(a,b){return c[b]||a});return e.reduce(function(a,b){return a+b},0)};export var createSortingState=function(a,b,c){return isString(b)?{by:a,order:b.toLowerCase(),sortFn:c}:null};export var getNewSorting=function(a,b,c){return a&&a.by===b?"asc"===a.order?{by:b,order:"desc",sortFn:c}:null:{by:b,order:"asc",sortFn:c}};export var getMaxLevel=function(a){var b=0,c=function(a){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;d>b&&(b=d),a.forEach(function(a){a.columns&&c(a.columns,d+1)})};return c(a),b};var getLastChildrenCount=function(a){var b=0,c=function(a){a.forEach(function(a){a.columns?c(a.columns):b++})};return c(a),b};export var transformColumns=function(a,b){for(var c=[{columns:a,index:0}],d=[];c.length;){var e=c.length-1,f=c[e],g=f.columns[f.index];if(g){d[e]||(d[e]=[]);var h=c[0].index,i=d[e][d[e].length-1],j=i?i.position.gridIndex+(i.position.colSpan||1):0,k=_objectSpread(_objectSpread({},g),{},{position:{topHeaderGridIndex:h,gridIndex:j,level:e}});k.columns?(k.position.colSpan=getLastChildrenCount(k.columns),d[e].push(k),c.push({columns:k.columns,index:0})):(k.position.rowSpan=b-e,d[e].push(k),f.index++)}else c.pop(),c[c.length-1]&&c[c.length-1].index++}return d};export var useHeaderData=function(a){var b=React.useRef({}),c=transformColumns(a,getMaxLevel(a)),d=Object.values(b.current).filter(isNotNil).map(function(a){return a.getBoundingClientRect().height}),e=c.flat().filter(function(a){return!a.hidden}).map(function(a,b){return _objectSpread(_objectSpread({},a),{},{position:_objectSpread(_objectSpread({},a.position),{},{smallTextSize:1<c.length&&a.position.level===c.length-1,height:d[b]||0})})}),f=c.map(function(a,b){return Math.min.apply(null,e.filter(function(a){return a.position.level===b}).map(function(a){return a.position.height}))}),g=e.filter(function(a){var b=a.position.colSpan;return!b}).sort(function(c,a){return c.position.topHeaderGridIndex===a.position.topHeaderGridIndex?c.position.gridIndex>a.position.gridIndex?1:-1:c.position.topHeaderGridIndex>a.position.topHeaderGridIndex?1:-1}),h=g.map(function(a,b){var c,d,e=f.reduce(function(c,a){return c+a},0);return(a.position.rowSpan||0)>=((null===(c=g[b+1])||void 0===c?void 0:c.position.rowSpan)||0)?e-(a.position.height||0):e-(null===(d=g[b+1])||void 0===d?void 0:d.position.height)||0});return{headers:c,flattenedHeaders:e,lowHeaders:g,headerRowsRefs:b,headerRowsHeights:f,headerColumnsHeights:d,resizerTopOffsets:h}};export var useLazyLoadData=function(a,b,c){var d=React.useState(0),e=_slicedToArray(d,2),f=e[0],g=e[1],h=React.useRef(null),i=React.useRef(null),j=Math.floor(a/3);React.useEffect(function(){if(c){var a=0;b&&"offsetHeight"in b?a=b.offsetHeight:b&&"outerHeight"in b&&(a=b.outerHeight);var d=function(){i.current&&a/2>i.current.getBoundingClientRect().top?g(function(a){return a+j}):h.current&&h.current.getBoundingClientRect().top>a/2&&g(function(a){return 0>a-j?0:a-j})};return null===b||void 0===b?void 0:b.addEventListener("scroll",d),function(){return null===b||void 0===b?void 0:b.removeEventListener("scroll",d)}}},[f,b]);return{getSlicedRows:function getSlicedRows(b){return!c||b.length<a?b:b.slice(f,f+a)},setBoundaryRef:function setBoundaryRef(b,d){return c&&0===b&&d===j&&0<f?h:c&&0===b&&d===a-j?i:void 0}}};export var transformRows=function(a,b,c){for(var d=[{rows:a,index:0}],e=[];d.length;){var f=d.length-1,g=d[f],h=g.rows[g.index];if(h){var i=_objectSpread(_objectSpread({},h),{},{level:f,rows:h.rows&&_toConsumableArray(h.rows)}),j=!!i.rows&&(c||b.includes(i.id));j?d.push({rows:i.rows,index:0}):g.index++,e.push(i)}else d.pop(),d[d.length-1]&&d[d.length-1].index++}return e};export function getMergedArray(a,b){for(var c=Math.max(a.length,b.length),d=[],e=0;e<c;e++){var f;d.push(null!==(f=b[e])&&void 0!==f?f:a[e])}return d}
1
+ import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";import _slicedToArray from"@babel/runtime/helpers/slicedToArray";import _defineProperty from"@babel/runtime/helpers/defineProperty";function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}import React from"react";import{isNotNil,isNumber,isString}from"../../utils/type-guards";export var Order={ASC:"ASC",asc:"asc",DESC:"DESC",desc:"desc"};export var getColumnsSize=function(a){return a.map(function(a){return isNumber(a)?"".concat(a,"px"):"auto"}).join(" ")};export var getColumnLeftOffset=function(a){var b=a.columnIndex,c=a.resizedColumnWidths,d=a.initialColumnWidths,e=d.slice(0,b).map(function(a,b){return c[b]||a});return e.reduce(function(a,b){return a+b},0)};export var createSortingState=function(a,b,c){return isString(b)?{by:a,order:b.toLowerCase(),sortFn:c}:null};export var getNewSorting=function(a,b,c){return a&&a.by===b?"asc"===a.order?{by:b,order:"desc",sortFn:c}:null:{by:b,order:"asc",sortFn:c}};export var getMaxLevel=function(a){var b=0,c=function(a){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;d>b&&(b=d),a.forEach(function(a){a.columns&&c(a.columns,d+1)})};return c(a),b};var getLastChildrenCount=function(a){var b=0,c=function(a){a.forEach(function(a){a.columns?c(a.columns):b++})};return c(a),b};export var transformColumns=function(a,b){for(var c=[{columns:a,index:0}],d=[];c.length;){var e=c.length-1,f=c[e],g=f.columns[f.index];if(g){d[e]||(d[e]=[]);var h=c[0].index,i=d[e][d[e].length-1],j=i?i.position.gridIndex+(i.position.colSpan||1):0,k=_objectSpread(_objectSpread({},g),{},{position:{topHeaderGridIndex:h,gridIndex:j,level:e}});k.columns?(k.position.colSpan=getLastChildrenCount(k.columns),d[e].push(k),c.push({columns:k.columns,index:0})):(k.position.rowSpan=b-e,d[e].push(k),f.index++)}else c.pop(),c[c.length-1]&&c[c.length-1].index++}return d};export var useHeaderData=function(a){var b=React.useRef({}),c=transformColumns(a,getMaxLevel(a)),d=Object.values(b.current).filter(isNotNil).map(function(a){return a.getBoundingClientRect().height}),e=c.flat().filter(function(a){return!a.hidden}).map(function(a,b){return _objectSpread(_objectSpread({},a),{},{position:_objectSpread(_objectSpread({},a.position),{},{smallTextSize:1<c.length&&a.position.level===c.length-1,height:d[b]||0})})}),f=c.map(function(a,b){return Math.min.apply(null,e.filter(function(a){return a.position.level===b}).map(function(a){return a.position.height}))}),g=e.filter(function(a){var b=a.position.colSpan;return!b}).sort(function(c,a){return c.position.topHeaderGridIndex===a.position.topHeaderGridIndex?c.position.gridIndex>a.position.gridIndex?1:-1:c.position.topHeaderGridIndex>a.position.topHeaderGridIndex?1:-1}),h=g.map(function(a,b){var c,d,e=f.reduce(function(c,a){return c+a},0);return(a.position.rowSpan||0)>=((null===(c=g[b+1])||void 0===c?void 0:c.position.rowSpan)||0)?e-(a.position.height||0):e-(null===(d=g[b+1])||void 0===d?void 0:d.position.height)||0});return{headers:c,flattenedHeaders:e,lowHeaders:g,headerRowsRefs:b,headerRowsHeights:f,headerColumnsHeights:d,resizerTopOffsets:h}};export var useLazyLoadData=function(a,b,c){var d=React.useState(0),e=_slicedToArray(d,2),f=e[0],g=e[1],h=React.useRef(null),i=React.useRef(null),j=Math.floor(a/3);React.useEffect(function(){if(c){var a=0;b&&"offsetHeight"in b?a=b.offsetHeight:b&&"outerHeight"in b&&(a=b.outerHeight);var d=function(){i.current&&a/2>i.current.getBoundingClientRect().top?g(function(a){return a+j}):h.current&&h.current.getBoundingClientRect().top>a/2&&g(function(a){return 0>a-j?0:a-j})};return null===b||void 0===b?void 0:b.addEventListener("scroll",d),function(){return null===b||void 0===b?void 0:b.removeEventListener("scroll",d)}}},[f,b]);return{getSlicedRows:function getSlicedRows(b){return!c||b.length<a?b:b.slice(f,f+a)},setBoundaryRef:function setBoundaryRef(b,d){return c&&0===b&&d===j&&0<f?h:c&&0===b&&d===a-j?i:void 0}}};export var transformRows=function(a,b,c){for(var d=[{rows:a,index:0}],e=[];d.length;){var f=d.length-1,g=d[f],h=g.rows[g.index];if(h){var i=_objectSpread(_objectSpread({},h),{},{options:{level:f},rows:h.rows&&_toConsumableArray(h.rows)}),j=!!i.rows&&(c||b.includes(i.id));j?d.push({rows:i.rows,index:0}):g.index++,e.push(i)}else d.pop(),d[d.length-1]&&d[d.length-1].index++}return e};export function getMergedArray(a,b){for(var c=Math.max(a.length,b.length),d=[],e=0;e<c;e++){var f;d.push(null!==(f=b[e])&&void 0!==f?f:a[e])}return d}
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":["React","isNotNil","isNumber","isString","Order","ASC","asc","DESC","desc","getColumnsSize","sizes","map","s","join","getColumnLeftOffset","columnIndex","resizedColumnWidths","initialColumnWidths","selectedColumns","slice","size","index","reduce","acc","column","createSortingState","by","order","sortFn","toLowerCase","getNewSorting","currentSorting","newField","getMaxLevel","columns","count","traverse","cols","level","forEach","item","getLastChildrenCount","transformColumns","maxLevel","stack","headersArr","length","node","topHeaderGridIndex","prevItem","gridIndex","position","colSpan","handledItem","push","rowSpan","pop","useHeaderData","headerRowsRefs","useRef","headers","headerColumnsHeights","Object","values","current","filter","ref","getBoundingClientRect","height","flattenedHeaders","flat","hidden","smallTextSize","headerRowsHeights","arr","Math","min","apply","col","lowHeaders","sort","a","b","resizerTopOffsets","header","headerHeight","useLazyLoadData","maxVisibleRows","scrollableEl","enabled","useState","visibleStartIndex","setVisibleStartIndex","cellsRefStart","cellsRefEnd","additionalRowsCount","floor","useEffect","elHeight","offsetHeight","outerHeight","onScrollListener","top","prevIndex","addEventListener","removeEventListener","getSlicedRows","rows","setBoundaryRef","columnIdx","rowIdx","transformRows","expandedRowIds","isTableExpanded","rowsArr","needGoDeeper","includes","id","getMergedArray","mainArr","mergeArr","max","resultArr","i"],"sources":["../../../../../src/components/Table/helpers.ts"],"sourcesContent":["import React from 'react';\n\nimport { isNotNil, isNumber, isString } from '../../utils/type-guards';\nimport {\n ColumnWidth,\n SortingState,\n TableColumn,\n TableRow,\n TableTreeRow,\n} from './Table';\n\nexport const Order = {\n ASC: 'ASC',\n asc: 'asc',\n DESC: 'DESC',\n desc: 'desc',\n} as const;\n\nexport type OrderType = typeof Order[keyof typeof Order];\n\nexport type Position = {\n colSpan?: number;\n rowSpan?: number;\n level: number;\n gridIndex: number;\n topHeaderGridIndex: number;\n smallTextSize?: boolean;\n height?: number;\n};\n\nexport type Header<T extends TableRow> = TableColumn<T> & {\n position: Position;\n};\n\nexport type HeaderData<T extends TableRow> = {\n headers: Array<Header<T>>[];\n flattenedHeaders: Array<Header<T>>;\n lowHeaders: Array<Header<T>>;\n headerRowsRefs: React.MutableRefObject<Record<number, HTMLDivElement | null>>;\n headerRowsHeights: Array<number>;\n headerColumnsHeights: Array<number>;\n resizerTopOffsets: Array<number>;\n};\n\nexport const getColumnsSize = (sizes: ColumnWidth[]): string => {\n return sizes.map((s) => (isNumber(s) ? `${s}px` : `auto`)).join(' ');\n};\n\nexport const getColumnLeftOffset = ({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n}: {\n columnIndex: number;\n resizedColumnWidths: Array<number | undefined>;\n initialColumnWidths: number[];\n}): number => {\n const selectedColumns = initialColumnWidths\n .slice(0, columnIndex)\n .map((size, index) => resizedColumnWidths[index] || size);\n\n return selectedColumns.reduce((acc, column) => acc + column, 0);\n};\n\nexport const createSortingState = <T extends TableRow>(\n by: keyof T,\n order?: OrderType,\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number,\n): SortingState<T> => {\n if (!isString(order)) {\n return null;\n }\n\n return { by, order: order.toLowerCase(), sortFn } as SortingState<T>;\n};\n\nexport const getNewSorting = <T extends TableRow>(\n currentSorting: SortingState<T>,\n newField: keyof T,\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number,\n): SortingState<T> => {\n if (!currentSorting || currentSorting.by !== newField) {\n return {\n by: newField,\n order: 'asc',\n sortFn,\n };\n }\n\n if (currentSorting.order === 'asc') {\n return {\n by: newField,\n order: 'desc',\n sortFn,\n };\n }\n\n return null;\n};\n\nexport const getMaxLevel = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n) => {\n let count = 0;\n\n const traverse = (cols: Array<TableColumn<T>>, level = 1) => {\n if (level > count) count = level;\n cols.forEach((item: TableColumn<T>) => {\n if (item.columns) {\n traverse(item.columns, level + 1);\n }\n });\n };\n\n traverse(columns);\n\n return count;\n};\n\nconst getLastChildrenCount = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n) => {\n let count = 0;\n\n const traverse = (cols: Array<TableColumn<T>>) => {\n cols.forEach((item: TableColumn<T>) => {\n if (item.columns) {\n traverse(item.columns);\n } else {\n count++;\n }\n });\n };\n\n traverse(columns);\n\n return count;\n};\n\nexport const transformColumns = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n maxLevel: number,\n): Array<TableColumn<T> & { position: Position }>[] => {\n const stack = [{ columns, index: 0 }];\n const headersArr: Array<TableColumn<T> & { position: Position }>[] = [];\n\n while (stack.length) {\n const level = stack.length - 1;\n const node = stack[level];\n const item: TableColumn<T> = node.columns[node.index];\n\n if (item) {\n if (!headersArr[level]) headersArr[level] = [];\n const topHeaderGridIndex = stack[0].index;\n const prevItem = headersArr[level][headersArr[level].length - 1];\n const gridIndex = prevItem\n ? prevItem.position.gridIndex + (prevItem.position.colSpan || 1)\n : 0;\n\n const handledItem: TableColumn<T> & { position: Position } = {\n ...item,\n position: {\n topHeaderGridIndex,\n gridIndex,\n level,\n },\n };\n\n if (!handledItem.columns) {\n handledItem.position.rowSpan = maxLevel - level;\n headersArr[level].push(handledItem);\n node.index++;\n } else {\n handledItem.position.colSpan = getLastChildrenCount(\n handledItem.columns,\n );\n headersArr[level].push(handledItem);\n stack.push({ columns: handledItem.columns, index: 0 });\n }\n } else {\n stack.pop();\n if (stack[stack.length - 1]) stack[stack.length - 1].index++;\n }\n }\n\n return headersArr;\n};\n\n/**\n * Возвращает данные, необходимые для построения хидера таблицы\n *\n * @param columns - массив колонок\n *\n * @return {\n * {Array<Header<T>>[]} headers: двумерный массив заголовков, выстроенный по вертикали;\n * {Array<Header<T>>} flattenedHeaders: плоский массив заголовков;\n * {Array<Header<T>>} lowHeaders: самые нижние заголовки (по ним строятся колонки);\n * {Record<number, HTMLDivElement | null>} headerRowsRefs: содержит рефы на заголовки;\n * {Array<number>} headerRowsHeights: массив высот строк заголовков;\n * {Array<number>} headerColumnsHeights: массив высот колонок заголовков;\n * {Array<number>} resizerTopOffsets: массив отступов для компонентов Resizer;\n * }\n */\nexport const useHeaderData = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n): HeaderData<T> => {\n const headerRowsRefs = React.useRef<Record<number, HTMLDivElement | null>>(\n {},\n );\n const headers = transformColumns(columns, getMaxLevel(columns));\n const headerColumnsHeights: Array<number> = Object.values(\n headerRowsRefs.current,\n )\n .filter(isNotNil)\n .map((ref) => ref.getBoundingClientRect().height);\n const flattenedHeaders = headers\n .flat()\n .filter((column: TableColumn<T>) => !column.hidden)\n .map((column, index) => ({\n ...column,\n position: {\n ...column.position,\n smallTextSize:\n headers.length > 1 && column.position.level === headers.length - 1,\n height: headerColumnsHeights[index] || 0,\n },\n }));\n const headerRowsHeights = headers.map((arr, index) => {\n return Math.min.apply(\n null,\n flattenedHeaders\n .filter(\n (col: TableColumn<T> & { position: Position }) =>\n col.position.level === index,\n )\n .map((item) => item.position.height),\n );\n });\n const lowHeaders = flattenedHeaders\n .filter(\n ({ position: { colSpan } }: TableColumn<T> & { position: Position }) =>\n !colSpan,\n )\n .sort((a, b) => {\n if (a.position.topHeaderGridIndex !== b.position.topHeaderGridIndex) {\n return a.position.topHeaderGridIndex > b.position.topHeaderGridIndex\n ? 1\n : -1;\n }\n return a.position.gridIndex > b.position.gridIndex ? 1 : -1;\n });\n\n const resizerTopOffsets = lowHeaders.map(\n (header: TableColumn<T> & { position: Position }, index: number) => {\n const headerHeight = headerRowsHeights.reduce(\n (a: number, b: number) => a + b,\n 0,\n );\n if (\n (header.position.rowSpan || 0) >=\n (lowHeaders[index + 1]?.position.rowSpan || 0)\n ) {\n return headerHeight - (header.position.height || 0);\n }\n // eslint-disable-next-line no-unsafe-optional-chaining\n return headerHeight - lowHeaders[index + 1]?.position.height! || 0;\n },\n );\n\n return {\n headers,\n flattenedHeaders,\n lowHeaders,\n headerRowsRefs,\n headerRowsHeights,\n headerColumnsHeights,\n resizerTopOffsets,\n };\n};\n\n/**\n * Возвращает 2 функции, необходимые для отображения большого количества строк в таблице\n *\n * @param maxVisibleRows - максимальное количество отображаемых строк в один момент времени\n * @param scrollableEl - элемент, на который вешается scroll listener\n * @param enabled - флаг включения данной функциональность\n *\n * @return {\n * getSlicedRows: функция, обрезающая исходный массив данных\n * setBoundaryRef: функция, проставляющая рефы необходимым ячейкам для вычисления границ отображения строк\n * }\n */\nexport const useLazyLoadData = (\n maxVisibleRows: number,\n scrollableEl: HTMLDivElement | Window | null,\n enabled: boolean,\n) => {\n const [visibleStartIndex, setVisibleStartIndex] = React.useState<number>(0);\n const cellsRefStart = React.useRef<HTMLDivElement>(null);\n const cellsRefEnd = React.useRef<HTMLDivElement>(null);\n const additionalRowsCount = Math.floor(maxVisibleRows / 3);\n\n React.useEffect(() => {\n if (!enabled) return;\n let elHeight = 0;\n if (scrollableEl && 'offsetHeight' in scrollableEl) {\n elHeight = scrollableEl.offsetHeight;\n } else if (scrollableEl && 'outerHeight' in scrollableEl) {\n elHeight = scrollableEl.outerHeight;\n }\n const onScrollListener = () => {\n if (\n cellsRefEnd.current &&\n elHeight / 2 > cellsRefEnd.current.getBoundingClientRect().top\n ) {\n setVisibleStartIndex((prevIndex) => prevIndex + additionalRowsCount);\n } else if (\n cellsRefStart.current &&\n cellsRefStart.current.getBoundingClientRect().top > elHeight / 2\n ) {\n setVisibleStartIndex((prevIndex) =>\n prevIndex - additionalRowsCount < 0\n ? 0\n : prevIndex - additionalRowsCount,\n );\n }\n };\n\n scrollableEl?.addEventListener('scroll', onScrollListener);\n\n return () => scrollableEl?.removeEventListener('scroll', onScrollListener);\n }, [visibleStartIndex, scrollableEl]);\n\n const setBoundaryRef = (columnIdx: number, rowIdx: number) => {\n if (\n enabled &&\n columnIdx === 0 &&\n rowIdx === additionalRowsCount &&\n visibleStartIndex > 0\n ) {\n return cellsRefStart;\n }\n if (\n enabled &&\n columnIdx === 0 &&\n rowIdx === maxVisibleRows - additionalRowsCount\n ) {\n return cellsRefEnd;\n }\n return undefined;\n };\n\n const getSlicedRows = <T extends TableRow>(rows: T[]) =>\n !enabled || rows.length < maxVisibleRows\n ? rows\n : rows.slice(visibleStartIndex, visibleStartIndex + maxVisibleRows);\n\n return {\n getSlicedRows,\n setBoundaryRef,\n };\n};\n\nexport const transformRows = <T extends TableRow>(\n rows: T[],\n expandedRowIds: string[],\n isTableExpanded?: boolean,\n): TableTreeRow<T>[] => {\n const stack = [{ rows, index: 0 }];\n const rowsArr: TableTreeRow<T>[] = [];\n\n while (stack.length) {\n const level = stack.length - 1;\n const node = stack[level];\n const item: T = node.rows[node.index];\n\n if (item) {\n const handledItem: TableTreeRow<T> = {\n ...item,\n level,\n rows: item.rows && [...item.rows],\n };\n\n const needGoDeeper =\n Boolean(handledItem.rows) &&\n (isTableExpanded || expandedRowIds.includes(handledItem.id));\n\n if (needGoDeeper) {\n stack.push({ rows: handledItem.rows as T[], index: 0 });\n } else {\n node.index++;\n }\n\n rowsArr.push(handledItem);\n } else {\n stack.pop();\n if (stack[stack.length - 1]) {\n stack[stack.length - 1].index++;\n }\n }\n }\n return rowsArr;\n};\n\nexport function getMergedArray<TYPE>(mainArr: TYPE[], mergeArr: TYPE[]) {\n const length = Math.max(mainArr.length, mergeArr.length);\n const resultArr: TYPE[] = [];\n for (let i = 0; i < length; i++) {\n resultArr.push(mergeArr[i] ?? mainArr[i]);\n }\n return resultArr;\n}\n"],"mappings":"+yBAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,QAAT,CAAmBC,QAAnB,CAA6BC,QAA7B,+BASA,MAAO,IAAMC,MAAK,CAAG,CACnBC,GAAG,CAAE,KADc,CAEnBC,GAAG,CAAE,KAFc,CAGnBC,IAAI,CAAE,MAHa,CAInBC,IAAI,CAAE,MAJa,CAAd,CAiCP,MAAO,IAAMC,eAAc,CAAG,SAACC,CAAD,CAAkC,CAC9D,MAAOA,EAAK,CAACC,GAAN,CAAU,SAACC,CAAD,QAAQV,SAAQ,CAACU,CAAD,CAAR,WAAiBA,CAAjB,aAAR,CAAV,EAAoDC,IAApD,CAAyD,GAAzD,CACR,CAFM,CAIP,MAAO,IAAMC,oBAAmB,CAAG,WAQrB,IAPZC,EAOY,GAPZA,WAOY,CANZC,CAMY,GANZA,mBAMY,CALZC,CAKY,GALZA,mBAKY,CACNC,CAAe,CAAGD,CAAmB,CACxCE,KADqB,CACf,CADe,CACZJ,CADY,EAErBJ,GAFqB,CAEjB,SAACS,CAAD,CAAOC,CAAP,QAAiBL,EAAmB,CAACK,CAAD,CAAnB,EAA8BD,CAA/C,CAFiB,CADZ,CAKZ,MAAOF,EAAe,CAACI,MAAhB,CAAuB,SAACC,CAAD,CAAMC,CAAN,QAAiBD,EAAG,CAAGC,CAAvB,CAAvB,CAAsD,CAAtD,CACR,CAdM,CAgBP,MAAO,IAAMC,mBAAkB,CAAG,SAChCC,CADgC,CAEhCC,CAFgC,CAGhCC,CAHgC,CAIZ,OACfzB,SAAQ,CAACwB,CAAD,CADO,CAKb,CAAED,EAAE,CAAFA,CAAF,CAAMC,KAAK,CAAEA,CAAK,CAACE,WAAN,EAAb,CAAkCD,MAAM,CAANA,CAAlC,CALa,CAEX,IAIV,CAVM,CAYP,MAAO,IAAME,cAAa,CAAG,SAC3BC,CAD2B,CAE3BC,CAF2B,CAG3BJ,CAH2B,CAIP,OACfG,EAAD,EAAmBA,CAAc,CAACL,EAAf,GAAsBM,CADzB,CASS,KAAzB,GAAAD,CAAc,CAACJ,KATC,CAUX,CACLD,EAAE,CAAEM,CADC,CAELL,KAAK,CAAE,MAFF,CAGLC,MAAM,CAANA,CAHK,CAVW,CAiBb,IAjBa,CAEX,CACLF,EAAE,CAAEM,CADC,CAELL,KAAK,CAAE,KAFF,CAGLC,MAAM,CAANA,CAHK,CAgBV,CAtBM,CAwBP,MAAO,IAAMK,YAAW,CAAG,SACzBC,CADyB,CAEtB,IACCC,EAAK,CAAG,CADT,CAGGC,CAAQ,CAAG,SAACC,CAAD,CAA4C,IAAdC,EAAc,wDAAN,CAAM,CACvDA,CAAK,CAAGH,CAD+C,GACxCA,CAAK,CAAGG,CADgC,EAE3DD,CAAI,CAACE,OAAL,CAAa,SAACC,CAAD,CAA0B,CACjCA,CAAI,CAACN,OAD4B,EAEnCE,CAAQ,CAACI,CAAI,CAACN,OAAN,CAAeI,CAAK,CAAG,CAAvB,CAEX,CAJD,CAKD,CAVE,CAcH,MAFAF,EAAQ,CAACF,CAAD,CAER,CAAOC,CACR,CAjBM,CAmBP,GAAMM,qBAAoB,CAAG,SAC3BP,CAD2B,CAExB,IACCC,EAAK,CAAG,CADT,CAGGC,CAAQ,CAAG,SAACC,CAAD,CAAiC,CAChDA,CAAI,CAACE,OAAL,CAAa,SAACC,CAAD,CAA0B,CACjCA,CAAI,CAACN,OAD4B,CAEnCE,CAAQ,CAACI,CAAI,CAACN,OAAN,CAF2B,CAInCC,CAAK,EAER,CAND,CAOD,CAXE,CAeH,MAFAC,EAAQ,CAACF,CAAD,CAER,CAAOC,CACR,CAlBD,CAoBA,MAAO,IAAMO,iBAAgB,CAAG,SAC9BR,CAD8B,CAE9BS,CAF8B,CAGuB,QAC/CC,EAAK,CAAG,CAAC,CAAEV,OAAO,CAAPA,CAAF,CAAWb,KAAK,CAAE,CAAlB,CAAD,CADuC,CAE/CwB,CAA4D,CAAG,EAFhB,CAI9CD,CAAK,CAACE,MAJwC,EAIhC,IACbR,EAAK,CAAGM,CAAK,CAACE,MAAN,CAAe,CADV,CAEbC,CAAI,CAAGH,CAAK,CAACN,CAAD,CAFC,CAGbE,CAAoB,CAAGO,CAAI,CAACb,OAAL,CAAaa,CAAI,CAAC1B,KAAlB,CAHV,CAKnB,GAAImB,CAAJ,CAAU,CACHK,CAAU,CAACP,CAAD,CADP,GACgBO,CAAU,CAACP,CAAD,CAAV,CAAoB,EADpC,KAEFU,EAAkB,CAAGJ,CAAK,CAAC,CAAD,CAAL,CAASvB,KAF5B,CAGF4B,CAAQ,CAAGJ,CAAU,CAACP,CAAD,CAAV,CAAkBO,CAAU,CAACP,CAAD,CAAV,CAAkBQ,MAAlB,CAA2B,CAA7C,CAHT,CAIFI,CAAS,CAAGD,CAAQ,CACtBA,CAAQ,CAACE,QAAT,CAAkBD,SAAlB,EAA+BD,CAAQ,CAACE,QAAT,CAAkBC,OAAlB,EAA6B,CAA5D,CADsB,CAEtB,CANI,CAQFC,CAAoD,gCACrDb,CADqD,MAExDW,QAAQ,CAAE,CACRH,kBAAkB,CAAlBA,CADQ,CAERE,SAAS,CAATA,CAFQ,CAGRZ,KAAK,CAALA,CAHQ,CAF8C,EARlD,CAiBHe,CAAW,CAACnB,OAjBT,EAsBNmB,CAAW,CAACF,QAAZ,CAAqBC,OAArB,CAA+BX,oBAAoB,CACjDY,CAAW,CAACnB,OADqC,CAtB7C,CAyBNW,CAAU,CAACP,CAAD,CAAV,CAAkBgB,IAAlB,CAAuBD,CAAvB,CAzBM,CA0BNT,CAAK,CAACU,IAAN,CAAW,CAAEpB,OAAO,CAAEmB,CAAW,CAACnB,OAAvB,CAAgCb,KAAK,CAAE,CAAvC,CAAX,CA1BM,GAkBNgC,CAAW,CAACF,QAAZ,CAAqBI,OAArB,CAA+BZ,CAAQ,CAAGL,CAlBpC,CAmBNO,CAAU,CAACP,CAAD,CAAV,CAAkBgB,IAAlB,CAAuBD,CAAvB,CAnBM,CAoBNN,CAAI,CAAC1B,KAAL,EApBM,CA4BT,CA5BD,IA6BEuB,EAAK,CAACY,GAAN,EA7BF,CA8BMZ,CAAK,CAACA,CAAK,CAACE,MAAN,CAAe,CAAhB,CA9BX,EA8B+BF,CAAK,CAACA,CAAK,CAACE,MAAN,CAAe,CAAhB,CAAL,CAAwBzB,KAAxB,EAEhC,CAED,MAAOwB,EACR,CA/CM,CAgEP,MAAO,IAAMY,cAAa,CAAG,SAC3BvB,CAD2B,CAET,IACZwB,EAAc,CAAG1D,KAAK,CAAC2D,MAAN,CACrB,EADqB,CADL,CAIZC,CAAO,CAAGlB,gBAAgB,CAACR,CAAD,CAAUD,WAAW,CAACC,CAAD,CAArB,CAJd,CAKZ2B,CAAmC,CAAGC,MAAM,CAACC,MAAP,CAC1CL,CAAc,CAACM,OAD2B,EAGzCC,MAHyC,CAGlChE,QAHkC,EAIzCU,GAJyC,CAIrC,SAACuD,CAAD,QAASA,EAAG,CAACC,qBAAJ,GAA4BC,MAArC,CAJqC,CAL1B,CAUZC,CAAgB,CAAGT,CAAO,CAC7BU,IADsB,GAEtBL,MAFsB,CAEf,SAACzC,CAAD,QAA4B,CAACA,CAAM,CAAC+C,MAApC,CAFe,EAGtB5D,GAHsB,CAGlB,SAACa,CAAD,CAASH,CAAT,wCACAG,CADA,MAEH2B,QAAQ,gCACH3B,CAAM,CAAC2B,QADJ,MAENqB,aAAa,CACM,CAAjB,CAAAZ,CAAO,CAACd,MAAR,EAAsBtB,CAAM,CAAC2B,QAAP,CAAgBb,KAAhB,GAA0BsB,CAAO,CAACd,MAAR,CAAiB,CAH7D,CAINsB,MAAM,CAAEP,CAAoB,CAACxC,CAAD,CAApB,EAA+B,CAJjC,EAFL,GAHkB,CAVP,CAsBZoD,CAAiB,CAAGb,CAAO,CAACjD,GAAR,CAAY,SAAC+D,CAAD,CAAMrD,CAAN,CAAgB,CACpD,MAAOsD,KAAI,CAACC,GAAL,CAASC,KAAT,CACL,IADK,CAELR,CAAgB,CACbJ,MADH,CAEI,SAACa,CAAD,QACEA,EAAG,CAAC3B,QAAJ,CAAab,KAAb,GAAuBjB,CADzB,CAFJ,EAKGV,GALH,CAKO,SAAC6B,CAAD,QAAUA,EAAI,CAACW,QAAL,CAAciB,MAAxB,CALP,CAFK,CASR,CAVyB,CAtBR,CAiCZW,CAAU,CAAGV,CAAgB,CAChCJ,MADgB,CAEf,eAAeb,EAAf,GAAGD,QAAH,CAAeC,OAAf,OACE,CAACA,CADH,CAFe,EAKhB4B,IALgB,CAKX,SAACC,CAAD,CAAIC,CAAJ,CAAU,OACVD,EAAC,CAAC9B,QAAF,CAAWH,kBAAX,GAAkCkC,CAAC,CAAC/B,QAAF,CAAWH,kBADnC,CAMPiC,CAAC,CAAC9B,QAAF,CAAWD,SAAX,CAAuBgC,CAAC,CAAC/B,QAAF,CAAWD,SAAlC,CAA8C,CAA9C,CAAkD,CAAC,CAN5C,CAEL+B,CAAC,CAAC9B,QAAF,CAAWH,kBAAX,CAAgCkC,CAAC,CAAC/B,QAAF,CAAWH,kBAA3C,CACH,CADG,CAEH,CAAC,CAGR,CAZgB,CAjCD,CA+CZmC,CAAiB,CAAGJ,CAAU,CAACpE,GAAX,CACxB,SAACyE,CAAD,CAAkD/D,CAAlD,CAAoE,SAC5DgE,CAAY,CAAGZ,CAAiB,CAACnD,MAAlB,CACnB,SAAC2D,CAAD,CAAYC,CAAZ,QAA0BD,EAAC,CAAGC,CAA9B,CADmB,CAEnB,CAFmB,CAD6C,OAMhE,CAACE,CAAM,CAACjC,QAAP,CAAgBI,OAAhB,EAA2B,CAA5B,IACC,WAAAwB,CAAU,CAAC1D,CAAK,CAAG,CAAT,CAAV,uBAAuB8B,QAAvB,CAAgCI,OAAhC,GAA2C,CAD5C,CANgE,CASzD8B,CAAY,EAAID,CAAM,CAACjC,QAAP,CAAgBiB,MAAhB,EAA0B,CAA9B,CAT6C,CAY3DiB,CAAY,YAAGN,CAAU,CAAC1D,CAAK,CAAG,CAAT,CAAb,qBAAG,EAAuB8B,QAAvB,CAAgCiB,MAAnC,CAAZ,EAA0D,CAClE,CAduB,CA/CR,CAgElB,MAAO,CACLR,OAAO,CAAPA,CADK,CAELS,gBAAgB,CAAhBA,CAFK,CAGLU,UAAU,CAAVA,CAHK,CAILrB,cAAc,CAAdA,CAJK,CAKLe,iBAAiB,CAAjBA,CALK,CAMLZ,oBAAoB,CAApBA,CANK,CAOLsB,iBAAiB,CAAjBA,CAPK,CASR,CA3EM,CAyFP,MAAO,IAAMG,gBAAe,CAAG,SAC7BC,CAD6B,CAE7BC,CAF6B,CAG7BC,CAH6B,CAI1B,OAC+CzF,KAAK,CAAC0F,QAAN,CAAuB,CAAvB,CAD/C,uBACIC,CADJ,MACuBC,CADvB,MAEGC,CAAa,CAAG7F,KAAK,CAAC2D,MAAN,CAA6B,IAA7B,CAFnB,CAGGmC,CAAW,CAAG9F,KAAK,CAAC2D,MAAN,CAA6B,IAA7B,CAHjB,CAIGoC,CAAmB,CAAGpB,IAAI,CAACqB,KAAL,CAAWT,CAAc,CAAG,CAA5B,CAJzB,CAMHvF,KAAK,CAACiG,SAAN,CAAgB,UAAM,CACpB,GAAKR,CAAL,EACA,GAAIS,EAAQ,CAAG,CAAf,CACIV,CAAY,EAAI,gBAAkBA,EAFtC,CAGEU,CAAQ,CAAGV,CAAY,CAACW,YAH1B,CAIWX,CAAY,EAAI,eAAiBA,EAJ5C,GAKEU,CAAQ,CAAGV,CAAY,CAACY,WAL1B,EAOA,GAAMC,EAAgB,CAAG,UAAM,CAE3BP,CAAW,CAAC9B,OAAZ,EACAkC,CAAQ,CAAG,CAAX,CAAeJ,CAAW,CAAC9B,OAAZ,CAAoBG,qBAApB,GAA4CmC,GAHhC,CAK3BV,CAAoB,CAAC,SAACW,CAAD,QAAeA,EAAS,CAAGR,CAA3B,CAAD,CALO,CAO3BF,CAAa,CAAC7B,OAAd,EACA6B,CAAa,CAAC7B,OAAd,CAAsBG,qBAAtB,GAA8CmC,GAA9C,CAAoDJ,CAAQ,CAAG,CARpC,EAU3BN,CAAoB,CAAC,SAACW,CAAD,QACe,EAAlC,CAAAA,CAAS,CAAGR,CAAZ,CACI,CADJ,CAEIQ,CAAS,CAAGR,CAHG,CAAD,CAMvB,CAhBD,CAoBA,cAFAP,CAEA,WAFAA,CAEA,QAFAA,CAAY,CAAEgB,gBAAd,CAA+B,QAA/B,CAAyCH,CAAzC,CAEA,CAAO,yBAAMb,CAAN,WAAMA,CAAN,QAAMA,CAAY,CAAEiB,mBAAd,CAAkC,QAAlC,CAA4CJ,CAA5C,CAAN,CA3BP,CA4BD,CA7BD,CA6BG,CAACV,CAAD,CAAoBH,CAApB,CA7BH,CANG,CA6DH,MAAO,CACLkB,aAAa,CANO,QAAhBA,cAAgB,CAAqBC,CAArB,QACpB,CAAClB,CAAD,EAAYkB,CAAI,CAAC7D,MAAL,CAAcyC,CAA1B,CACIoB,CADJ,CAEIA,CAAI,CAACxF,KAAL,CAAWwE,CAAX,CAA8BA,CAAiB,CAAGJ,CAAlD,CAHgB,CAKf,CAELqB,cAAc,CA1BO,QAAjBA,eAAiB,CAACC,CAAD,CAAoBC,CAApB,CAAuC,OAE1DrB,EAAO,EACO,CAAd,GAAAoB,CADA,EAEAC,CAAM,GAAKf,CAFX,EAGoB,CAApB,CAAAJ,CAL0D,CAOnDE,CAPmD,CAU1DJ,CAAO,EACO,CAAd,GAAAoB,CADA,EAEAC,CAAM,GAAKvB,CAAc,CAAGQ,CAZ8B,CAcnDD,CAdmD,OAiB7D,CAOM,CAIR,CArEM,CAuEP,MAAO,IAAMiB,cAAa,CAAG,SAC3BJ,CAD2B,CAE3BK,CAF2B,CAG3BC,CAH2B,CAIL,QAChBrE,EAAK,CAAG,CAAC,CAAE+D,IAAI,CAAJA,CAAF,CAAQtF,KAAK,CAAE,CAAf,CAAD,CADQ,CAEhB6F,CAA0B,CAAG,EAFb,CAIftE,CAAK,CAACE,MAJS,EAID,IACbR,EAAK,CAAGM,CAAK,CAACE,MAAN,CAAe,CADV,CAEbC,CAAI,CAAGH,CAAK,CAACN,CAAD,CAFC,CAGbE,CAAO,CAAGO,CAAI,CAAC4D,IAAL,CAAU5D,CAAI,CAAC1B,KAAf,CAHG,CAKnB,GAAImB,CAAJ,CAAU,IACFa,EAA4B,gCAC7Bb,CAD6B,MAEhCF,KAAK,CAALA,CAFgC,CAGhCqE,IAAI,CAAEnE,CAAI,CAACmE,IAAL,qBAAiBnE,CAAI,CAACmE,IAAtB,CAH0B,EAD1B,CAOFQ,CAAY,CAChB,EAAQ9D,CAAW,CAACsD,IAApB,GACCM,CAAe,EAAID,CAAc,CAACI,QAAf,CAAwB/D,CAAW,CAACgE,EAApC,CADpB,CARM,CAWJF,CAXI,CAYNvE,CAAK,CAACU,IAAN,CAAW,CAAEqD,IAAI,CAAEtD,CAAW,CAACsD,IAApB,CAAiCtF,KAAK,CAAE,CAAxC,CAAX,CAZM,CAcN0B,CAAI,CAAC1B,KAAL,EAdM,CAiBR6F,CAAO,CAAC5D,IAAR,CAAaD,CAAb,CACD,CAlBD,IAmBET,EAAK,CAACY,GAAN,EAnBF,CAoBMZ,CAAK,CAACA,CAAK,CAACE,MAAN,CAAe,CAAhB,CApBX,EAqBIF,CAAK,CAACA,CAAK,CAACE,MAAN,CAAe,CAAhB,CAAL,CAAwBzB,KAAxB,EAGL,CACD,MAAO6F,EACR,CAvCM,CAyCP,MAAO,SAASI,eAAT,CAA8BC,CAA9B,CAA+CC,CAA/C,CAAiE,CAGtE,OAFM1E,EAAM,CAAG6B,IAAI,CAAC8C,GAAL,CAASF,CAAO,CAACzE,MAAjB,CAAyB0E,CAAQ,CAAC1E,MAAlC,CAEf,CADM4E,CAAiB,CAAG,EAC1B,CAASC,CAAC,CAAG,CAAb,CAAgBA,CAAC,CAAG7E,CAApB,CAA4B6E,CAAC,EAA7B,CAAiC,OAC/BD,CAAS,CAACpE,IAAV,WAAekE,CAAQ,CAACG,CAAD,CAAvB,gBAA8BJ,CAAO,CAACI,CAAD,CAArC,CACD,CACD,MAAOD,EACR"}
1
+ {"version":3,"file":"helpers.js","names":["React","isNotNil","isNumber","isString","Order","ASC","asc","DESC","desc","getColumnsSize","sizes","map","s","join","getColumnLeftOffset","columnIndex","resizedColumnWidths","initialColumnWidths","selectedColumns","slice","size","index","reduce","acc","column","createSortingState","by","order","sortFn","toLowerCase","getNewSorting","currentSorting","newField","getMaxLevel","columns","count","traverse","cols","level","forEach","item","getLastChildrenCount","transformColumns","maxLevel","stack","headersArr","length","node","topHeaderGridIndex","prevItem","gridIndex","position","colSpan","handledItem","push","rowSpan","pop","useHeaderData","headerRowsRefs","useRef","headers","headerColumnsHeights","Object","values","current","filter","ref","getBoundingClientRect","height","flattenedHeaders","flat","hidden","smallTextSize","headerRowsHeights","arr","Math","min","apply","col","lowHeaders","sort","a","b","resizerTopOffsets","header","headerHeight","useLazyLoadData","maxVisibleRows","scrollableEl","enabled","useState","visibleStartIndex","setVisibleStartIndex","cellsRefStart","cellsRefEnd","additionalRowsCount","floor","useEffect","elHeight","offsetHeight","outerHeight","onScrollListener","top","prevIndex","addEventListener","removeEventListener","getSlicedRows","rows","setBoundaryRef","columnIdx","rowIdx","transformRows","expandedRowIds","isTableExpanded","rowsArr","options","needGoDeeper","includes","id","getMergedArray","mainArr","mergeArr","max","resultArr","i"],"sources":["../../../../../src/components/Table/helpers.ts"],"sourcesContent":["import React from 'react';\n\nimport { isNotNil, isNumber, isString } from '../../utils/type-guards';\nimport {\n ColumnWidth,\n SortingState,\n TableColumn,\n TableRow,\n TableTreeRow,\n} from './Table';\n\nexport const Order = {\n ASC: 'ASC',\n asc: 'asc',\n DESC: 'DESC',\n desc: 'desc',\n} as const;\n\nexport type OrderType = typeof Order[keyof typeof Order];\n\nexport type Position = {\n colSpan?: number;\n rowSpan?: number;\n level: number;\n gridIndex: number;\n topHeaderGridIndex: number;\n smallTextSize?: boolean;\n height?: number;\n};\n\nexport type Header<T extends TableRow> = TableColumn<T> & {\n position: Position;\n};\n\nexport type HeaderData<T extends TableRow> = {\n headers: Array<Header<T>>[];\n flattenedHeaders: Array<Header<T>>;\n lowHeaders: Array<Header<T>>;\n headerRowsRefs: React.MutableRefObject<Record<number, HTMLDivElement | null>>;\n headerRowsHeights: Array<number>;\n headerColumnsHeights: Array<number>;\n resizerTopOffsets: Array<number>;\n};\n\nexport const getColumnsSize = (sizes: ColumnWidth[]): string => {\n return sizes.map((s) => (isNumber(s) ? `${s}px` : `auto`)).join(' ');\n};\n\nexport const getColumnLeftOffset = ({\n columnIndex,\n resizedColumnWidths,\n initialColumnWidths,\n}: {\n columnIndex: number;\n resizedColumnWidths: Array<number | undefined>;\n initialColumnWidths: number[];\n}): number => {\n const selectedColumns = initialColumnWidths\n .slice(0, columnIndex)\n .map((size, index) => resizedColumnWidths[index] || size);\n\n return selectedColumns.reduce((acc, column) => acc + column, 0);\n};\n\nexport const createSortingState = <T extends TableRow>(\n by: keyof T,\n order?: OrderType,\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number,\n): SortingState<T> => {\n if (!isString(order)) {\n return null;\n }\n\n return { by, order: order.toLowerCase(), sortFn } as SortingState<T>;\n};\n\nexport const getNewSorting = <T extends TableRow>(\n currentSorting: SortingState<T>,\n newField: keyof T,\n sortFn?: (a: T[keyof T], b: T[keyof T]) => number,\n): SortingState<T> => {\n if (!currentSorting || currentSorting.by !== newField) {\n return {\n by: newField,\n order: 'asc',\n sortFn,\n };\n }\n\n if (currentSorting.order === 'asc') {\n return {\n by: newField,\n order: 'desc',\n sortFn,\n };\n }\n\n return null;\n};\n\nexport const getMaxLevel = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n) => {\n let count = 0;\n\n const traverse = (cols: Array<TableColumn<T>>, level = 1) => {\n if (level > count) count = level;\n cols.forEach((item: TableColumn<T>) => {\n if (item.columns) {\n traverse(item.columns, level + 1);\n }\n });\n };\n\n traverse(columns);\n\n return count;\n};\n\nconst getLastChildrenCount = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n) => {\n let count = 0;\n\n const traverse = (cols: Array<TableColumn<T>>) => {\n cols.forEach((item: TableColumn<T>) => {\n if (item.columns) {\n traverse(item.columns);\n } else {\n count++;\n }\n });\n };\n\n traverse(columns);\n\n return count;\n};\n\nexport const transformColumns = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n maxLevel: number,\n): Array<TableColumn<T> & { position: Position }>[] => {\n const stack = [{ columns, index: 0 }];\n const headersArr: Array<TableColumn<T> & { position: Position }>[] = [];\n\n while (stack.length) {\n const level = stack.length - 1;\n const node = stack[level];\n const item: TableColumn<T> = node.columns[node.index];\n\n if (item) {\n if (!headersArr[level]) headersArr[level] = [];\n const topHeaderGridIndex = stack[0].index;\n const prevItem = headersArr[level][headersArr[level].length - 1];\n const gridIndex = prevItem\n ? prevItem.position.gridIndex + (prevItem.position.colSpan || 1)\n : 0;\n\n const handledItem: TableColumn<T> & { position: Position } = {\n ...item,\n position: {\n topHeaderGridIndex,\n gridIndex,\n level,\n },\n };\n\n if (!handledItem.columns) {\n handledItem.position.rowSpan = maxLevel - level;\n headersArr[level].push(handledItem);\n node.index++;\n } else {\n handledItem.position.colSpan = getLastChildrenCount(\n handledItem.columns,\n );\n headersArr[level].push(handledItem);\n stack.push({ columns: handledItem.columns, index: 0 });\n }\n } else {\n stack.pop();\n if (stack[stack.length - 1]) stack[stack.length - 1].index++;\n }\n }\n\n return headersArr;\n};\n\n/**\n * Возвращает данные, необходимые для построения хидера таблицы\n *\n * @param columns - массив колонок\n *\n * @return {\n * {Array<Header<T>>[]} headers: двумерный массив заголовков, выстроенный по вертикали;\n * {Array<Header<T>>} flattenedHeaders: плоский массив заголовков;\n * {Array<Header<T>>} lowHeaders: самые нижние заголовки (по ним строятся колонки);\n * {Record<number, HTMLDivElement | null>} headerRowsRefs: содержит рефы на заголовки;\n * {Array<number>} headerRowsHeights: массив высот строк заголовков;\n * {Array<number>} headerColumnsHeights: массив высот колонок заголовков;\n * {Array<number>} resizerTopOffsets: массив отступов для компонентов Resizer;\n * }\n */\nexport const useHeaderData = <T extends TableRow>(\n columns: Array<TableColumn<T>>,\n): HeaderData<T> => {\n const headerRowsRefs = React.useRef<Record<number, HTMLDivElement | null>>(\n {},\n );\n const headers = transformColumns(columns, getMaxLevel(columns));\n const headerColumnsHeights: Array<number> = Object.values(\n headerRowsRefs.current,\n )\n .filter(isNotNil)\n .map((ref) => ref.getBoundingClientRect().height);\n const flattenedHeaders = headers\n .flat()\n .filter((column: TableColumn<T>) => !column.hidden)\n .map((column, index) => ({\n ...column,\n position: {\n ...column.position,\n smallTextSize:\n headers.length > 1 && column.position.level === headers.length - 1,\n height: headerColumnsHeights[index] || 0,\n },\n }));\n const headerRowsHeights = headers.map((arr, index) => {\n return Math.min.apply(\n null,\n flattenedHeaders\n .filter(\n (col: TableColumn<T> & { position: Position }) =>\n col.position.level === index,\n )\n .map((item) => item.position.height),\n );\n });\n const lowHeaders = flattenedHeaders\n .filter(\n ({ position: { colSpan } }: TableColumn<T> & { position: Position }) =>\n !colSpan,\n )\n .sort((a, b) => {\n if (a.position.topHeaderGridIndex !== b.position.topHeaderGridIndex) {\n return a.position.topHeaderGridIndex > b.position.topHeaderGridIndex\n ? 1\n : -1;\n }\n return a.position.gridIndex > b.position.gridIndex ? 1 : -1;\n });\n\n const resizerTopOffsets = lowHeaders.map(\n (header: TableColumn<T> & { position: Position }, index: number) => {\n const headerHeight = headerRowsHeights.reduce(\n (a: number, b: number) => a + b,\n 0,\n );\n if (\n (header.position.rowSpan || 0) >=\n (lowHeaders[index + 1]?.position.rowSpan || 0)\n ) {\n return headerHeight - (header.position.height || 0);\n }\n // eslint-disable-next-line no-unsafe-optional-chaining\n return headerHeight - lowHeaders[index + 1]?.position.height! || 0;\n },\n );\n\n return {\n headers,\n flattenedHeaders,\n lowHeaders,\n headerRowsRefs,\n headerRowsHeights,\n headerColumnsHeights,\n resizerTopOffsets,\n };\n};\n\n/**\n * Возвращает 2 функции, необходимые для отображения большого количества строк в таблице\n *\n * @param maxVisibleRows - максимальное количество отображаемых строк в один момент времени\n * @param scrollableEl - элемент, на который вешается scroll listener\n * @param enabled - флаг включения данной функциональность\n *\n * @return {\n * getSlicedRows: функция, обрезающая исходный массив данных\n * setBoundaryRef: функция, проставляющая рефы необходимым ячейкам для вычисления границ отображения строк\n * }\n */\nexport const useLazyLoadData = (\n maxVisibleRows: number,\n scrollableEl: HTMLDivElement | Window | null,\n enabled: boolean,\n) => {\n const [visibleStartIndex, setVisibleStartIndex] = React.useState<number>(0);\n const cellsRefStart = React.useRef<HTMLDivElement>(null);\n const cellsRefEnd = React.useRef<HTMLDivElement>(null);\n const additionalRowsCount = Math.floor(maxVisibleRows / 3);\n\n React.useEffect(() => {\n if (!enabled) return;\n let elHeight = 0;\n if (scrollableEl && 'offsetHeight' in scrollableEl) {\n elHeight = scrollableEl.offsetHeight;\n } else if (scrollableEl && 'outerHeight' in scrollableEl) {\n elHeight = scrollableEl.outerHeight;\n }\n const onScrollListener = () => {\n if (\n cellsRefEnd.current &&\n elHeight / 2 > cellsRefEnd.current.getBoundingClientRect().top\n ) {\n setVisibleStartIndex((prevIndex) => prevIndex + additionalRowsCount);\n } else if (\n cellsRefStart.current &&\n cellsRefStart.current.getBoundingClientRect().top > elHeight / 2\n ) {\n setVisibleStartIndex((prevIndex) =>\n prevIndex - additionalRowsCount < 0\n ? 0\n : prevIndex - additionalRowsCount,\n );\n }\n };\n\n scrollableEl?.addEventListener('scroll', onScrollListener);\n\n return () => scrollableEl?.removeEventListener('scroll', onScrollListener);\n }, [visibleStartIndex, scrollableEl]);\n\n const setBoundaryRef = (columnIdx: number, rowIdx: number) => {\n if (\n enabled &&\n columnIdx === 0 &&\n rowIdx === additionalRowsCount &&\n visibleStartIndex > 0\n ) {\n return cellsRefStart;\n }\n if (\n enabled &&\n columnIdx === 0 &&\n rowIdx === maxVisibleRows - additionalRowsCount\n ) {\n return cellsRefEnd;\n }\n return undefined;\n };\n\n const getSlicedRows = <T extends TableRow>(rows: T[]) =>\n !enabled || rows.length < maxVisibleRows\n ? rows\n : rows.slice(visibleStartIndex, visibleStartIndex + maxVisibleRows);\n\n return {\n getSlicedRows,\n setBoundaryRef,\n };\n};\n\nexport const transformRows = <T extends TableRow>(\n rows: T[],\n expandedRowIds: string[],\n isTableExpanded?: boolean,\n): TableTreeRow<T>[] => {\n const stack = [{ rows, index: 0 }];\n const rowsArr: TableTreeRow<T>[] = [];\n while (stack.length) {\n const level = stack.length - 1;\n const node = stack[level];\n const item: T = node.rows[node.index];\n\n if (item) {\n const handledItem: TableTreeRow<T> = {\n ...item,\n options: { level },\n rows: item.rows && [...item.rows],\n };\n\n const needGoDeeper =\n Boolean(handledItem.rows) &&\n (isTableExpanded || expandedRowIds.includes(handledItem.id));\n\n if (needGoDeeper) {\n stack.push({ rows: handledItem.rows as T[], index: 0 });\n } else {\n node.index++;\n }\n\n rowsArr.push(handledItem);\n } else {\n stack.pop();\n if (stack[stack.length - 1]) {\n stack[stack.length - 1].index++;\n }\n }\n }\n return rowsArr;\n};\n\nexport function getMergedArray<TYPE>(mainArr: TYPE[], mergeArr: TYPE[]) {\n const length = Math.max(mainArr.length, mergeArr.length);\n const resultArr: TYPE[] = [];\n for (let i = 0; i < length; i++) {\n resultArr.push(mergeArr[i] ?? mainArr[i]);\n }\n return resultArr;\n}\n"],"mappings":"+yBAAA,MAAOA,MAAP,KAAkB,OAAlB,CAEA,OAASC,QAAT,CAAmBC,QAAnB,CAA6BC,QAA7B,+BASA,MAAO,IAAMC,MAAK,CAAG,CACnBC,GAAG,CAAE,KADc,CAEnBC,GAAG,CAAE,KAFc,CAGnBC,IAAI,CAAE,MAHa,CAInBC,IAAI,CAAE,MAJa,CAAd,CAiCP,MAAO,IAAMC,eAAc,CAAG,SAACC,CAAD,CAAkC,CAC9D,MAAOA,EAAK,CAACC,GAAN,CAAU,SAACC,CAAD,QAAQV,SAAQ,CAACU,CAAD,CAAR,WAAiBA,CAAjB,aAAR,CAAV,EAAoDC,IAApD,CAAyD,GAAzD,CACR,CAFM,CAIP,MAAO,IAAMC,oBAAmB,CAAG,WAQrB,IAPZC,EAOY,GAPZA,WAOY,CANZC,CAMY,GANZA,mBAMY,CALZC,CAKY,GALZA,mBAKY,CACNC,CAAe,CAAGD,CAAmB,CACxCE,KADqB,CACf,CADe,CACZJ,CADY,EAErBJ,GAFqB,CAEjB,SAACS,CAAD,CAAOC,CAAP,QAAiBL,EAAmB,CAACK,CAAD,CAAnB,EAA8BD,CAA/C,CAFiB,CADZ,CAKZ,MAAOF,EAAe,CAACI,MAAhB,CAAuB,SAACC,CAAD,CAAMC,CAAN,QAAiBD,EAAG,CAAGC,CAAvB,CAAvB,CAAsD,CAAtD,CACR,CAdM,CAgBP,MAAO,IAAMC,mBAAkB,CAAG,SAChCC,CADgC,CAEhCC,CAFgC,CAGhCC,CAHgC,CAIZ,OACfzB,SAAQ,CAACwB,CAAD,CADO,CAKb,CAAED,EAAE,CAAFA,CAAF,CAAMC,KAAK,CAAEA,CAAK,CAACE,WAAN,EAAb,CAAkCD,MAAM,CAANA,CAAlC,CALa,CAEX,IAIV,CAVM,CAYP,MAAO,IAAME,cAAa,CAAG,SAC3BC,CAD2B,CAE3BC,CAF2B,CAG3BJ,CAH2B,CAIP,OACfG,EAAD,EAAmBA,CAAc,CAACL,EAAf,GAAsBM,CADzB,CASS,KAAzB,GAAAD,CAAc,CAACJ,KATC,CAUX,CACLD,EAAE,CAAEM,CADC,CAELL,KAAK,CAAE,MAFF,CAGLC,MAAM,CAANA,CAHK,CAVW,CAiBb,IAjBa,CAEX,CACLF,EAAE,CAAEM,CADC,CAELL,KAAK,CAAE,KAFF,CAGLC,MAAM,CAANA,CAHK,CAgBV,CAtBM,CAwBP,MAAO,IAAMK,YAAW,CAAG,SACzBC,CADyB,CAEtB,IACCC,EAAK,CAAG,CADT,CAGGC,CAAQ,CAAG,SAACC,CAAD,CAA4C,IAAdC,EAAc,wDAAN,CAAM,CACvDA,CAAK,CAAGH,CAD+C,GACxCA,CAAK,CAAGG,CADgC,EAE3DD,CAAI,CAACE,OAAL,CAAa,SAACC,CAAD,CAA0B,CACjCA,CAAI,CAACN,OAD4B,EAEnCE,CAAQ,CAACI,CAAI,CAACN,OAAN,CAAeI,CAAK,CAAG,CAAvB,CAEX,CAJD,CAKD,CAVE,CAcH,MAFAF,EAAQ,CAACF,CAAD,CAER,CAAOC,CACR,CAjBM,CAmBP,GAAMM,qBAAoB,CAAG,SAC3BP,CAD2B,CAExB,IACCC,EAAK,CAAG,CADT,CAGGC,CAAQ,CAAG,SAACC,CAAD,CAAiC,CAChDA,CAAI,CAACE,OAAL,CAAa,SAACC,CAAD,CAA0B,CACjCA,CAAI,CAACN,OAD4B,CAEnCE,CAAQ,CAACI,CAAI,CAACN,OAAN,CAF2B,CAInCC,CAAK,EAER,CAND,CAOD,CAXE,CAeH,MAFAC,EAAQ,CAACF,CAAD,CAER,CAAOC,CACR,CAlBD,CAoBA,MAAO,IAAMO,iBAAgB,CAAG,SAC9BR,CAD8B,CAE9BS,CAF8B,CAGuB,QAC/CC,EAAK,CAAG,CAAC,CAAEV,OAAO,CAAPA,CAAF,CAAWb,KAAK,CAAE,CAAlB,CAAD,CADuC,CAE/CwB,CAA4D,CAAG,EAFhB,CAI9CD,CAAK,CAACE,MAJwC,EAIhC,IACbR,EAAK,CAAGM,CAAK,CAACE,MAAN,CAAe,CADV,CAEbC,CAAI,CAAGH,CAAK,CAACN,CAAD,CAFC,CAGbE,CAAoB,CAAGO,CAAI,CAACb,OAAL,CAAaa,CAAI,CAAC1B,KAAlB,CAHV,CAKnB,GAAImB,CAAJ,CAAU,CACHK,CAAU,CAACP,CAAD,CADP,GACgBO,CAAU,CAACP,CAAD,CAAV,CAAoB,EADpC,KAEFU,EAAkB,CAAGJ,CAAK,CAAC,CAAD,CAAL,CAASvB,KAF5B,CAGF4B,CAAQ,CAAGJ,CAAU,CAACP,CAAD,CAAV,CAAkBO,CAAU,CAACP,CAAD,CAAV,CAAkBQ,MAAlB,CAA2B,CAA7C,CAHT,CAIFI,CAAS,CAAGD,CAAQ,CACtBA,CAAQ,CAACE,QAAT,CAAkBD,SAAlB,EAA+BD,CAAQ,CAACE,QAAT,CAAkBC,OAAlB,EAA6B,CAA5D,CADsB,CAEtB,CANI,CAQFC,CAAoD,gCACrDb,CADqD,MAExDW,QAAQ,CAAE,CACRH,kBAAkB,CAAlBA,CADQ,CAERE,SAAS,CAATA,CAFQ,CAGRZ,KAAK,CAALA,CAHQ,CAF8C,EARlD,CAiBHe,CAAW,CAACnB,OAjBT,EAsBNmB,CAAW,CAACF,QAAZ,CAAqBC,OAArB,CAA+BX,oBAAoB,CACjDY,CAAW,CAACnB,OADqC,CAtB7C,CAyBNW,CAAU,CAACP,CAAD,CAAV,CAAkBgB,IAAlB,CAAuBD,CAAvB,CAzBM,CA0BNT,CAAK,CAACU,IAAN,CAAW,CAAEpB,OAAO,CAAEmB,CAAW,CAACnB,OAAvB,CAAgCb,KAAK,CAAE,CAAvC,CAAX,CA1BM,GAkBNgC,CAAW,CAACF,QAAZ,CAAqBI,OAArB,CAA+BZ,CAAQ,CAAGL,CAlBpC,CAmBNO,CAAU,CAACP,CAAD,CAAV,CAAkBgB,IAAlB,CAAuBD,CAAvB,CAnBM,CAoBNN,CAAI,CAAC1B,KAAL,EApBM,CA4BT,CA5BD,IA6BEuB,EAAK,CAACY,GAAN,EA7BF,CA8BMZ,CAAK,CAACA,CAAK,CAACE,MAAN,CAAe,CAAhB,CA9BX,EA8B+BF,CAAK,CAACA,CAAK,CAACE,MAAN,CAAe,CAAhB,CAAL,CAAwBzB,KAAxB,EAEhC,CAED,MAAOwB,EACR,CA/CM,CAgEP,MAAO,IAAMY,cAAa,CAAG,SAC3BvB,CAD2B,CAET,IACZwB,EAAc,CAAG1D,KAAK,CAAC2D,MAAN,CACrB,EADqB,CADL,CAIZC,CAAO,CAAGlB,gBAAgB,CAACR,CAAD,CAAUD,WAAW,CAACC,CAAD,CAArB,CAJd,CAKZ2B,CAAmC,CAAGC,MAAM,CAACC,MAAP,CAC1CL,CAAc,CAACM,OAD2B,EAGzCC,MAHyC,CAGlChE,QAHkC,EAIzCU,GAJyC,CAIrC,SAACuD,CAAD,QAASA,EAAG,CAACC,qBAAJ,GAA4BC,MAArC,CAJqC,CAL1B,CAUZC,CAAgB,CAAGT,CAAO,CAC7BU,IADsB,GAEtBL,MAFsB,CAEf,SAACzC,CAAD,QAA4B,CAACA,CAAM,CAAC+C,MAApC,CAFe,EAGtB5D,GAHsB,CAGlB,SAACa,CAAD,CAASH,CAAT,wCACAG,CADA,MAEH2B,QAAQ,gCACH3B,CAAM,CAAC2B,QADJ,MAENqB,aAAa,CACM,CAAjB,CAAAZ,CAAO,CAACd,MAAR,EAAsBtB,CAAM,CAAC2B,QAAP,CAAgBb,KAAhB,GAA0BsB,CAAO,CAACd,MAAR,CAAiB,CAH7D,CAINsB,MAAM,CAAEP,CAAoB,CAACxC,CAAD,CAApB,EAA+B,CAJjC,EAFL,GAHkB,CAVP,CAsBZoD,CAAiB,CAAGb,CAAO,CAACjD,GAAR,CAAY,SAAC+D,CAAD,CAAMrD,CAAN,CAAgB,CACpD,MAAOsD,KAAI,CAACC,GAAL,CAASC,KAAT,CACL,IADK,CAELR,CAAgB,CACbJ,MADH,CAEI,SAACa,CAAD,QACEA,EAAG,CAAC3B,QAAJ,CAAab,KAAb,GAAuBjB,CADzB,CAFJ,EAKGV,GALH,CAKO,SAAC6B,CAAD,QAAUA,EAAI,CAACW,QAAL,CAAciB,MAAxB,CALP,CAFK,CASR,CAVyB,CAtBR,CAiCZW,CAAU,CAAGV,CAAgB,CAChCJ,MADgB,CAEf,eAAeb,EAAf,GAAGD,QAAH,CAAeC,OAAf,OACE,CAACA,CADH,CAFe,EAKhB4B,IALgB,CAKX,SAACC,CAAD,CAAIC,CAAJ,CAAU,OACVD,EAAC,CAAC9B,QAAF,CAAWH,kBAAX,GAAkCkC,CAAC,CAAC/B,QAAF,CAAWH,kBADnC,CAMPiC,CAAC,CAAC9B,QAAF,CAAWD,SAAX,CAAuBgC,CAAC,CAAC/B,QAAF,CAAWD,SAAlC,CAA8C,CAA9C,CAAkD,CAAC,CAN5C,CAEL+B,CAAC,CAAC9B,QAAF,CAAWH,kBAAX,CAAgCkC,CAAC,CAAC/B,QAAF,CAAWH,kBAA3C,CACH,CADG,CAEH,CAAC,CAGR,CAZgB,CAjCD,CA+CZmC,CAAiB,CAAGJ,CAAU,CAACpE,GAAX,CACxB,SAACyE,CAAD,CAAkD/D,CAAlD,CAAoE,SAC5DgE,CAAY,CAAGZ,CAAiB,CAACnD,MAAlB,CACnB,SAAC2D,CAAD,CAAYC,CAAZ,QAA0BD,EAAC,CAAGC,CAA9B,CADmB,CAEnB,CAFmB,CAD6C,OAMhE,CAACE,CAAM,CAACjC,QAAP,CAAgBI,OAAhB,EAA2B,CAA5B,IACC,WAAAwB,CAAU,CAAC1D,CAAK,CAAG,CAAT,CAAV,uBAAuB8B,QAAvB,CAAgCI,OAAhC,GAA2C,CAD5C,CANgE,CASzD8B,CAAY,EAAID,CAAM,CAACjC,QAAP,CAAgBiB,MAAhB,EAA0B,CAA9B,CAT6C,CAY3DiB,CAAY,YAAGN,CAAU,CAAC1D,CAAK,CAAG,CAAT,CAAb,qBAAG,EAAuB8B,QAAvB,CAAgCiB,MAAnC,CAAZ,EAA0D,CAClE,CAduB,CA/CR,CAgElB,MAAO,CACLR,OAAO,CAAPA,CADK,CAELS,gBAAgB,CAAhBA,CAFK,CAGLU,UAAU,CAAVA,CAHK,CAILrB,cAAc,CAAdA,CAJK,CAKLe,iBAAiB,CAAjBA,CALK,CAMLZ,oBAAoB,CAApBA,CANK,CAOLsB,iBAAiB,CAAjBA,CAPK,CASR,CA3EM,CAyFP,MAAO,IAAMG,gBAAe,CAAG,SAC7BC,CAD6B,CAE7BC,CAF6B,CAG7BC,CAH6B,CAI1B,OAC+CzF,KAAK,CAAC0F,QAAN,CAAuB,CAAvB,CAD/C,uBACIC,CADJ,MACuBC,CADvB,MAEGC,CAAa,CAAG7F,KAAK,CAAC2D,MAAN,CAA6B,IAA7B,CAFnB,CAGGmC,CAAW,CAAG9F,KAAK,CAAC2D,MAAN,CAA6B,IAA7B,CAHjB,CAIGoC,CAAmB,CAAGpB,IAAI,CAACqB,KAAL,CAAWT,CAAc,CAAG,CAA5B,CAJzB,CAMHvF,KAAK,CAACiG,SAAN,CAAgB,UAAM,CACpB,GAAKR,CAAL,EACA,GAAIS,EAAQ,CAAG,CAAf,CACIV,CAAY,EAAI,gBAAkBA,EAFtC,CAGEU,CAAQ,CAAGV,CAAY,CAACW,YAH1B,CAIWX,CAAY,EAAI,eAAiBA,EAJ5C,GAKEU,CAAQ,CAAGV,CAAY,CAACY,WAL1B,EAOA,GAAMC,EAAgB,CAAG,UAAM,CAE3BP,CAAW,CAAC9B,OAAZ,EACAkC,CAAQ,CAAG,CAAX,CAAeJ,CAAW,CAAC9B,OAAZ,CAAoBG,qBAApB,GAA4CmC,GAHhC,CAK3BV,CAAoB,CAAC,SAACW,CAAD,QAAeA,EAAS,CAAGR,CAA3B,CAAD,CALO,CAO3BF,CAAa,CAAC7B,OAAd,EACA6B,CAAa,CAAC7B,OAAd,CAAsBG,qBAAtB,GAA8CmC,GAA9C,CAAoDJ,CAAQ,CAAG,CARpC,EAU3BN,CAAoB,CAAC,SAACW,CAAD,QACe,EAAlC,CAAAA,CAAS,CAAGR,CAAZ,CACI,CADJ,CAEIQ,CAAS,CAAGR,CAHG,CAAD,CAMvB,CAhBD,CAoBA,cAFAP,CAEA,WAFAA,CAEA,QAFAA,CAAY,CAAEgB,gBAAd,CAA+B,QAA/B,CAAyCH,CAAzC,CAEA,CAAO,yBAAMb,CAAN,WAAMA,CAAN,QAAMA,CAAY,CAAEiB,mBAAd,CAAkC,QAAlC,CAA4CJ,CAA5C,CAAN,CA3BP,CA4BD,CA7BD,CA6BG,CAACV,CAAD,CAAoBH,CAApB,CA7BH,CANG,CA6DH,MAAO,CACLkB,aAAa,CANO,QAAhBA,cAAgB,CAAqBC,CAArB,QACpB,CAAClB,CAAD,EAAYkB,CAAI,CAAC7D,MAAL,CAAcyC,CAA1B,CACIoB,CADJ,CAEIA,CAAI,CAACxF,KAAL,CAAWwE,CAAX,CAA8BA,CAAiB,CAAGJ,CAAlD,CAHgB,CAKf,CAELqB,cAAc,CA1BO,QAAjBA,eAAiB,CAACC,CAAD,CAAoBC,CAApB,CAAuC,OAE1DrB,EAAO,EACO,CAAd,GAAAoB,CADA,EAEAC,CAAM,GAAKf,CAFX,EAGoB,CAApB,CAAAJ,CAL0D,CAOnDE,CAPmD,CAU1DJ,CAAO,EACO,CAAd,GAAAoB,CADA,EAEAC,CAAM,GAAKvB,CAAc,CAAGQ,CAZ8B,CAcnDD,CAdmD,OAiB7D,CAOM,CAIR,CArEM,CAuEP,MAAO,IAAMiB,cAAa,CAAG,SAC3BJ,CAD2B,CAE3BK,CAF2B,CAG3BC,CAH2B,CAIL,QAChBrE,EAAK,CAAG,CAAC,CAAE+D,IAAI,CAAJA,CAAF,CAAQtF,KAAK,CAAE,CAAf,CAAD,CADQ,CAEhB6F,CAA0B,CAAG,EAFb,CAGftE,CAAK,CAACE,MAHS,EAGD,IACbR,EAAK,CAAGM,CAAK,CAACE,MAAN,CAAe,CADV,CAEbC,CAAI,CAAGH,CAAK,CAACN,CAAD,CAFC,CAGbE,CAAO,CAAGO,CAAI,CAAC4D,IAAL,CAAU5D,CAAI,CAAC1B,KAAf,CAHG,CAKnB,GAAImB,CAAJ,CAAU,IACFa,EAA4B,gCAC7Bb,CAD6B,MAEhC2E,OAAO,CAAE,CAAE7E,KAAK,CAALA,CAAF,CAFuB,CAGhCqE,IAAI,CAAEnE,CAAI,CAACmE,IAAL,qBAAiBnE,CAAI,CAACmE,IAAtB,CAH0B,EAD1B,CAOFS,CAAY,CAChB,EAAQ/D,CAAW,CAACsD,IAApB,GACCM,CAAe,EAAID,CAAc,CAACK,QAAf,CAAwBhE,CAAW,CAACiE,EAApC,CADpB,CARM,CAWJF,CAXI,CAYNxE,CAAK,CAACU,IAAN,CAAW,CAAEqD,IAAI,CAAEtD,CAAW,CAACsD,IAApB,CAAiCtF,KAAK,CAAE,CAAxC,CAAX,CAZM,CAcN0B,CAAI,CAAC1B,KAAL,EAdM,CAiBR6F,CAAO,CAAC5D,IAAR,CAAaD,CAAb,CACD,CAlBD,IAmBET,EAAK,CAACY,GAAN,EAnBF,CAoBMZ,CAAK,CAACA,CAAK,CAACE,MAAN,CAAe,CAAhB,CApBX,EAqBIF,CAAK,CAACA,CAAK,CAACE,MAAN,CAAe,CAAhB,CAAL,CAAwBzB,KAAxB,EAGL,CACD,MAAO6F,EACR,CAtCM,CAwCP,MAAO,SAASK,eAAT,CAA8BC,CAA9B,CAA+CC,CAA/C,CAAiE,CAGtE,OAFM3E,EAAM,CAAG6B,IAAI,CAAC+C,GAAL,CAASF,CAAO,CAAC1E,MAAjB,CAAyB2E,CAAQ,CAAC3E,MAAlC,CAEf,CADM6E,CAAiB,CAAG,EAC1B,CAASC,CAAC,CAAG,CAAb,CAAgBA,CAAC,CAAG9E,CAApB,CAA4B8E,CAAC,EAA7B,CAAiC,OAC/BD,CAAS,CAACrE,IAAV,WAAemE,CAAQ,CAACG,CAAD,CAAvB,gBAA8BJ,CAAO,CAACI,CAAD,CAArC,CACD,CACD,MAAOD,EACR"}
@@ -6,10 +6,10 @@ export declare const getTabsWrapper: (tabsDirection: TabsDirection, fitMode: Tab
6
6
  export declare const withDefaultGetters: (props: TabsProps) => {
7
7
  getItemLabel: TabsPropGetItemLabel<TabsItemDefault>;
8
8
  getItemIcon: TabsPropGetItemIcon<TabsItemDefault>;
9
- size?: "xs" | "s" | "m" | undefined;
9
+ size?: "m" | "s" | "xs" | undefined;
10
10
  onlyIcon?: boolean | undefined;
11
11
  view?: "clear" | "bordered" | undefined;
12
- iconSize?: import("../../icons/Icon").IconPropSize | undefined;
12
+ iconSize?: "m" | "s" | "xs" | "l" | undefined;
13
13
  items: TabsItemDefault[];
14
14
  value?: TabsItemDefault | null | undefined;
15
15
  children?: undefined;
@@ -276,10 +276,10 @@ export declare const withDefaultGetters: (props: TabsProps) => {
276
276
  } | {
277
277
  getItemLabel: TabsPropGetItemLabel<TabsItemDefault>;
278
278
  getItemIcon: TabsPropGetItemIcon<TabsItemDefault>;
279
- size?: "xs" | "s" | "m" | undefined;
279
+ size?: "m" | "s" | "xs" | undefined;
280
280
  onlyIcon?: boolean | undefined;
281
281
  view?: "clear" | "bordered" | undefined;
282
- iconSize?: import("../../icons/Icon").IconPropSize | undefined;
282
+ iconSize?: "m" | "s" | "xs" | "l" | undefined;
283
283
  items: TabsItemDefault[];
284
284
  value?: TabsItemDefault | null | undefined;
285
285
  children?: undefined;
@@ -6,7 +6,7 @@ export declare const tagBasePropSizeDefault: "m";
6
6
  export declare type TagBasePropSize = typeof tagBasePropSize[number];
7
7
  export declare const tagBasePropGroupNumberValue: readonly [1, 2, 3, 4, 5, 6, 7, 8, 9];
8
8
  export declare const tagBasePropGroupStringValue: readonly ["1", "2", "3", "4", "5", "6", "7", "8", "9"];
9
- export declare const tagBasePropGroup: (1 | "1" | 2 | 4 | 3 | 5 | "2" | 7 | "3" | "4" | "5" | 8 | 9 | 6 | "6" | "7" | "8" | "9")[];
9
+ export declare const tagBasePropGroup: (4 | 9 | 1 | "1" | 2 | 3 | 5 | "2" | 7 | "3" | "4" | "5" | 8 | 6 | "6" | "7" | "8" | "9")[];
10
10
  export declare type TagBasePropGroup = typeof tagBasePropGroup[number];
11
11
  export declare const tagBasePropView: readonly ["stroked", "filled"];
12
12
  export declare const tagBasePropViewDefault: "stroked";
@@ -6,7 +6,7 @@ export declare function withDefaultGetters(props: ThemeTogglerProps): {
6
6
  getItemKey: ThemeTogglerPropGetItemKey<ThemeTogglerItemDefault>;
7
7
  getItemLabel: ThemeTogglerPropGetItemLabel<ThemeTogglerItemDefault>;
8
8
  getItemIcon: ThemeTogglerPropGetItemIcon<ThemeTogglerItemDefault>;
9
- size?: "xs" | "s" | "m" | "l" | undefined;
9
+ size?: "m" | "s" | "xs" | "l" | undefined;
10
10
  className?: string | undefined;
11
11
  items: ThemeTogglerItemDefault[];
12
12
  value: ThemeTogglerItemDefault;
@@ -107,7 +107,7 @@ export declare const isNotMultipleParams: <ITEM, GROUP>(params: UserSelectProps<
107
107
  export declare function withDefaultGetters<ITEM = DefaultItem, GROUP = DefaultGroup, MULTIPLE extends boolean = false>(props: UserSelectProps<ITEM, GROUP, MULTIPLE>): {
108
108
  disabled?: boolean | undefined;
109
109
  form?: "default" | "round" | "brick" | "clearRound" | "roundClear" | "clearDefault" | "defaultClear" | "defaultBrick" | "brickDefault" | "brickClear" | "clearBrick" | "clearClear" | undefined;
110
- size?: "s" | "m" | "l" | undefined;
110
+ size?: "m" | "s" | "l" | undefined;
111
111
  view?: "default" | "clear" | undefined;
112
112
  dropdownForm?: "default" | "round" | "brick" | undefined;
113
113
  placeholder?: string | undefined;
@@ -1,4 +1,4 @@
1
1
  declare type Map<POINTS extends string> = Record<POINTS, number>;
2
2
  declare type Returned<POINTS extends string> = Record<POINTS, boolean>;
3
- export declare const useBreakpoints: <POINTS extends string = "xs" | "s" | "m" | "l" | "2xs" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "3xs" | "5xs" | "4xs">(map?: Map<POINTS> | undefined) => Returned<POINTS>;
3
+ export declare const useBreakpoints: <POINTS extends string = "m" | "s" | "xs" | "l" | "2xs" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "3xs" | "5xs" | "4xs">(map?: Map<POINTS> | undefined) => Returned<POINTS>;
4
4
  export {};
@@ -1,2 +1,2 @@
1
- import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){throw a}),f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){h=!0,f=a}),f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function isMultiple(a){return a.multiple}function isNotMultiple(a){return!a.multiple}function formatValue(a,b,c){var d={};if(!a)return d;var e=c?a:[a];if(e&&0<e.length){var f,g=_createForOfIteratorHelper(e);try{for(g.s();!(f=g.n()).done;){var h=f.value;d[b(h)]=h}}catch(a){g.e(a)}finally{g.f()}}return d}export function useChoiceGroup(a){var b=formatValue(a.value,a.getKey,a.multiple),c=function(c){return Object.prototype.hasOwnProperty.call(b,a.getKey(c))};return{getOnChange:function getOnChange(b){return function(d){if(isMultiple(a)){var e;if(c(b)){var f=a.value||[];e=f.filter(function(c){return a.getKey(c)!==a.getKey(b)}),0===e.length&&(e=null)}else e=a.value?_toConsumableArray(a.value):[],e.push(b);a.callBack({e:d,value:e})}isNotMultiple(a)&&a.callBack({e:d,value:b})}},getChecked:c}}
1
+ import _toConsumableArray from"@babel/runtime/helpers/toConsumableArray";function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){throw a}),f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function(a){function b(){return a.apply(this,arguments)}return b.toString=function(){return a.toString()},b}(function(a){h=!0,f=a}),f:function f(){try{g||null==c["return"]||c["return"]()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}import{isNotNil}from"../../utils/type-guards";function isMultiple(a){return a.multiple}function isNotMultiple(a){return!a.multiple}function formatValue(a,b,c){var d={};if(!isNotNil(a)&&!Array.isArray(a))return d;var e=c?a:[a];if(e&&0<e.length){var f,g=_createForOfIteratorHelper(e);try{for(g.s();!(f=g.n()).done;){var h=f.value;d[b(h)]=h}}catch(a){g.e(a)}finally{g.f()}}return d}export function useChoiceGroup(a){var b=formatValue(a.value,a.getKey,a.multiple),c=function(c){return Object.prototype.hasOwnProperty.call(b,a.getKey(c))};return{getOnChange:function getOnChange(b){return function(d){if(isMultiple(a)){var e;if(c(b)){var f=a.value||[];e=f.filter(function(c){return a.getKey(c)!==a.getKey(b)}),0===e.length&&(e=null)}else e=a.value?_toConsumableArray(a.value):[],e.push(b);a.callBack({e:d,value:e})}isNotMultiple(a)&&a.callBack({e:d,value:b})}},getChecked:c}}
2
2
  //# sourceMappingURL=useChoiceGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useChoiceGroup.js","names":["isMultiple","params","multiple","isNotMultiple","formatValue","valueProp","getKey","valueByKey","value","length","item","useChoiceGroup","props","formatedValue","getChecked","Object","prototype","hasOwnProperty","call","getOnChange","selectedItem","e","newValue","filter","push","callBack"],"sources":["../../../../../src/hooks/useChoiceGroup/useChoiceGroup.tsx"],"sourcesContent":["type GetKey<ITEM> = (item: ITEM) => string | number;\n\ntype GetOnChange<ITEM, EVENT> = (item: ITEM) => (e: EVENT) => void;\n\ntype GetChecked<ITEM> = (item: ITEM) => boolean;\n\ntype UseChoiceGroupValues<ITEM, EVENT> = {\n getOnChange: GetOnChange<ITEM, EVENT>;\n getChecked: GetChecked<ITEM>;\n};\n\ntype CallbackWithMultiple<ITEM, EVENT> = (props: {\n e: EVENT;\n value: ITEM[] | null;\n}) => void;\n\ntype CallbackWithoutMultiple<ITEM, EVENT> = (props: {\n e: EVENT;\n value: ITEM;\n}) => void;\n\ntype PropsWithMultiple<ITEM, EVENT> = {\n multiple: true;\n value: ITEM[] | null;\n callBack: CallbackWithMultiple<ITEM, EVENT>;\n};\n\ntype PropsWithoutMultiple<ITEM, EVENT> = {\n multiple: false;\n value: ITEM | null;\n callBack: CallbackWithoutMultiple<ITEM, EVENT>;\n};\n\ntype CommonProps<ITEM> = {\n getKey: GetKey<ITEM>;\n};\n\ntype UseChoiceGroupProps<ITEM, EVENT> = CommonProps<ITEM> &\n (PropsWithMultiple<ITEM, EVENT> | PropsWithoutMultiple<ITEM, EVENT>);\n\ntype FormatedItems<ITEM> = { [value: string]: ITEM };\n\nfunction isMultiple<ITEM, EVENT>(\n params: UseChoiceGroupProps<ITEM, EVENT>,\n): params is CommonProps<ITEM> & PropsWithMultiple<ITEM, EVENT> {\n return params.multiple;\n}\n\nfunction isNotMultiple<ITEM, EVENT>(\n params: UseChoiceGroupProps<ITEM, EVENT>,\n): params is CommonProps<ITEM> & PropsWithoutMultiple<ITEM, EVENT> {\n return !params.multiple;\n}\n\nfunction formatValue<ITEM>(\n valueProp: ITEM | ITEM[] | null,\n getKey: GetKey<ITEM>,\n multiple?: boolean,\n) {\n const valueByKey: FormatedItems<ITEM> = {};\n if (!valueProp) {\n return valueByKey;\n }\n const value = multiple ? (valueProp as ITEM[]) : [valueProp as ITEM];\n if (value && value.length > 0) {\n for (const item of value) {\n valueByKey[getKey(item)] = item;\n }\n }\n return valueByKey;\n}\n\nexport function useChoiceGroup<ITEM, EVENT>(\n props: UseChoiceGroupProps<ITEM, EVENT>,\n): UseChoiceGroupValues<ITEM, EVENT> {\n const formatedValue = formatValue(props.value, props.getKey, props.multiple);\n\n const getChecked: GetChecked<ITEM> = (item) =>\n Object.prototype.hasOwnProperty.call(formatedValue, props.getKey(item));\n\n const getOnChange: GetOnChange<ITEM, EVENT> = (selectedItem) => (e) => {\n if (isMultiple(props)) {\n let newValue: ITEM[] | null;\n\n if (getChecked(selectedItem)) {\n const value = props.value || [];\n newValue = value.filter(\n (item) => props.getKey(item) !== props.getKey(selectedItem),\n );\n if (newValue.length === 0) {\n newValue = null;\n }\n } else {\n newValue = props.value ? [...props.value] : [];\n newValue.push(selectedItem);\n }\n props.callBack({ e, value: newValue });\n }\n\n if (isNotMultiple(props)) {\n props.callBack({ e, value: selectedItem });\n }\n };\n\n return {\n getOnChange,\n getChecked,\n };\n}\n"],"mappings":"s7CA0CA,QAASA,WAAT,CACEC,CADF,CAEgE,CAC9D,MAAOA,EAAM,CAACC,QACf,CAED,QAASC,cAAT,CACEF,CADF,CAEmE,CACjE,MAAO,CAACA,CAAM,CAACC,QAChB,CAED,QAASE,YAAT,CACEC,CADF,CAEEC,CAFF,CAGEJ,CAHF,CAIE,CACA,GAAMK,EAA+B,CAAG,EAAxC,CACA,GAAI,CAACF,CAAL,CACE,MAAOE,EAAP,CAEF,GAAMC,EAAK,CAAGN,CAAQ,CAAIG,CAAJ,CAA2B,CAACA,CAAD,CAAjD,CACA,GAAIG,CAAK,EAAmB,CAAf,CAAAA,CAAK,CAACC,MAAnB,CAA+B,oCACVD,CADU,MAC7B,2BAA0B,IAAfE,EAAe,SACxBH,CAAU,CAACD,CAAM,CAACI,CAAD,CAAP,CAAV,CAA2BA,CAC5B,CAH4B,+BAI9B,CACD,MAAOH,EACR,CAED,MAAO,SAASI,eAAT,CACLC,CADK,CAE8B,IAC7BC,EAAa,CAAGT,WAAW,CAACQ,CAAK,CAACJ,KAAP,CAAcI,CAAK,CAACN,MAApB,CAA4BM,CAAK,CAACV,QAAlC,CADE,CAG7BY,CAA4B,CAAG,SAACJ,CAAD,QACnCK,OAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,CAArC,CAAoDD,CAAK,CAACN,MAAN,CAAaI,CAAb,CAApD,CADmC,CAHF,CA8BnC,MAAO,CACLS,WAAW,CAzBiC,QAAxCA,YAAwC,CAACC,CAAD,QAAkB,UAACC,CAAD,CAAO,CACrE,GAAIrB,UAAU,CAACY,CAAD,CAAd,CAAuB,CACrB,GAAIU,EAAJ,CAEA,GAAIR,CAAU,CAACM,CAAD,CAAd,CAA8B,CAC5B,GAAMZ,EAAK,CAAGI,CAAK,CAACJ,KAAN,EAAe,EAA7B,CACAc,CAAQ,CAAGd,CAAK,CAACe,MAAN,CACT,SAACb,CAAD,QAAUE,EAAK,CAACN,MAAN,CAAaI,CAAb,IAAuBE,CAAK,CAACN,MAAN,CAAac,CAAb,CAAjC,CADS,CAFiB,CAKJ,CAApB,GAAAE,CAAQ,CAACb,MALe,GAM1Ba,CAAQ,CAAG,IANe,CAQ7B,CARD,IASEA,EAAQ,CAAGV,CAAK,CAACJ,KAAN,oBAAkBI,CAAK,CAACJ,KAAxB,EAAiC,EAT9C,CAUEc,CAAQ,CAACE,IAAT,CAAcJ,CAAd,CAVF,CAYAR,CAAK,CAACa,QAAN,CAAe,CAAEJ,CAAC,CAADA,CAAF,CAAKb,KAAK,CAAEc,CAAZ,CAAf,CACD,CAEGnB,aAAa,CAACS,CAAD,CAnBoD,EAoBnEA,CAAK,CAACa,QAAN,CAAe,CAAEJ,CAAC,CAADA,CAAF,CAAKb,KAAK,CAAEY,CAAZ,CAAf,CAEH,CAtB6C,CAwBvC,CAELN,UAAU,CAAVA,CAFK,CAIR"}
1
+ {"version":3,"file":"useChoiceGroup.js","names":["isNotNil","isMultiple","params","multiple","isNotMultiple","formatValue","valueProp","getKey","valueByKey","Array","isArray","value","length","item","useChoiceGroup","props","formatedValue","getChecked","Object","prototype","hasOwnProperty","call","getOnChange","selectedItem","e","newValue","filter","push","callBack"],"sources":["../../../../../src/hooks/useChoiceGroup/useChoiceGroup.tsx"],"sourcesContent":["import { isNotNil } from '##/utils/type-guards';\n\ntype GetKey<ITEM> = (item: ITEM) => string | number;\n\ntype GetOnChange<ITEM, EVENT> = (item: ITEM) => (e: EVENT) => void;\n\ntype GetChecked<ITEM> = (item: ITEM) => boolean;\n\ntype UseChoiceGroupValues<ITEM, EVENT> = {\n getOnChange: GetOnChange<ITEM, EVENT>;\n getChecked: GetChecked<ITEM>;\n};\n\ntype CallbackWithMultiple<ITEM, EVENT> = (props: {\n e: EVENT;\n value: ITEM[] | null;\n}) => void;\n\ntype CallbackWithoutMultiple<ITEM, EVENT> = (props: {\n e: EVENT;\n value: ITEM;\n}) => void;\n\ntype PropsWithMultiple<ITEM, EVENT> = {\n multiple: true;\n value: ITEM[] | null;\n callBack: CallbackWithMultiple<ITEM, EVENT>;\n};\n\ntype PropsWithoutMultiple<ITEM, EVENT> = {\n multiple: false;\n value: ITEM | null;\n callBack: CallbackWithoutMultiple<ITEM, EVENT>;\n};\n\ntype CommonProps<ITEM> = {\n getKey: GetKey<ITEM>;\n};\n\ntype UseChoiceGroupProps<ITEM, EVENT> = CommonProps<ITEM> &\n (PropsWithMultiple<ITEM, EVENT> | PropsWithoutMultiple<ITEM, EVENT>);\n\ntype FormatedItems<ITEM> = { [value: string]: ITEM };\n\nfunction isMultiple<ITEM, EVENT>(\n params: UseChoiceGroupProps<ITEM, EVENT>,\n): params is CommonProps<ITEM> & PropsWithMultiple<ITEM, EVENT> {\n return params.multiple;\n}\n\nfunction isNotMultiple<ITEM, EVENT>(\n params: UseChoiceGroupProps<ITEM, EVENT>,\n): params is CommonProps<ITEM> & PropsWithoutMultiple<ITEM, EVENT> {\n return !params.multiple;\n}\n\nfunction formatValue<ITEM>(\n valueProp: ITEM | ITEM[] | null,\n getKey: GetKey<ITEM>,\n multiple?: boolean,\n) {\n const valueByKey: FormatedItems<ITEM> = {};\n if (!isNotNil(valueProp) && !Array.isArray(valueProp)) {\n return valueByKey;\n }\n const value = multiple ? (valueProp as ITEM[]) : [valueProp as ITEM];\n if (value && value.length > 0) {\n for (const item of value) {\n valueByKey[getKey(item)] = item;\n }\n }\n return valueByKey;\n}\n\nexport function useChoiceGroup<ITEM, EVENT>(\n props: UseChoiceGroupProps<ITEM, EVENT>,\n): UseChoiceGroupValues<ITEM, EVENT> {\n const formatedValue = formatValue(props.value, props.getKey, props.multiple);\n\n const getChecked: GetChecked<ITEM> = (item) =>\n Object.prototype.hasOwnProperty.call(formatedValue, props.getKey(item));\n\n const getOnChange: GetOnChange<ITEM, EVENT> = (selectedItem) => (e) => {\n if (isMultiple(props)) {\n let newValue: ITEM[] | null;\n\n if (getChecked(selectedItem)) {\n const value = props.value || [];\n newValue = value.filter(\n (item) => props.getKey(item) !== props.getKey(selectedItem),\n );\n if (newValue.length === 0) {\n newValue = null;\n }\n } else {\n newValue = props.value ? [...props.value] : [];\n newValue.push(selectedItem);\n }\n props.callBack({ e, value: newValue });\n }\n\n if (isNotMultiple(props)) {\n props.callBack({ e, value: selectedItem });\n }\n };\n\n return {\n getOnChange,\n getChecked,\n };\n}\n"],"mappings":"s7CAAA,OAASA,QAAT,+BA4CA,QAASC,WAAT,CACEC,CADF,CAEgE,CAC9D,MAAOA,EAAM,CAACC,QACf,CAED,QAASC,cAAT,CACEF,CADF,CAEmE,CACjE,MAAO,CAACA,CAAM,CAACC,QAChB,CAED,QAASE,YAAT,CACEC,CADF,CAEEC,CAFF,CAGEJ,CAHF,CAIE,CACA,GAAMK,EAA+B,CAAG,EAAxC,CACA,GAAI,CAACR,QAAQ,CAACM,CAAD,CAAT,EAAwB,CAACG,KAAK,CAACC,OAAN,CAAcJ,CAAd,CAA7B,CACE,MAAOE,EAAP,CAEF,GAAMG,EAAK,CAAGR,CAAQ,CAAIG,CAAJ,CAA2B,CAACA,CAAD,CAAjD,CACA,GAAIK,CAAK,EAAmB,CAAf,CAAAA,CAAK,CAACC,MAAnB,CAA+B,oCACVD,CADU,MAC7B,2BAA0B,IAAfE,EAAe,SACxBL,CAAU,CAACD,CAAM,CAACM,CAAD,CAAP,CAAV,CAA2BA,CAC5B,CAH4B,+BAI9B,CACD,MAAOL,EACR,CAED,MAAO,SAASM,eAAT,CACLC,CADK,CAE8B,IAC7BC,EAAa,CAAGX,WAAW,CAACU,CAAK,CAACJ,KAAP,CAAcI,CAAK,CAACR,MAApB,CAA4BQ,CAAK,CAACZ,QAAlC,CADE,CAG7Bc,CAA4B,CAAG,SAACJ,CAAD,QACnCK,OAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCL,CAArC,CAAoDD,CAAK,CAACR,MAAN,CAAaM,CAAb,CAApD,CADmC,CAHF,CA8BnC,MAAO,CACLS,WAAW,CAzBiC,QAAxCA,YAAwC,CAACC,CAAD,QAAkB,UAACC,CAAD,CAAO,CACrE,GAAIvB,UAAU,CAACc,CAAD,CAAd,CAAuB,CACrB,GAAIU,EAAJ,CAEA,GAAIR,CAAU,CAACM,CAAD,CAAd,CAA8B,CAC5B,GAAMZ,EAAK,CAAGI,CAAK,CAACJ,KAAN,EAAe,EAA7B,CACAc,CAAQ,CAAGd,CAAK,CAACe,MAAN,CACT,SAACb,CAAD,QAAUE,EAAK,CAACR,MAAN,CAAaM,CAAb,IAAuBE,CAAK,CAACR,MAAN,CAAagB,CAAb,CAAjC,CADS,CAFiB,CAKJ,CAApB,GAAAE,CAAQ,CAACb,MALe,GAM1Ba,CAAQ,CAAG,IANe,CAQ7B,CARD,IASEA,EAAQ,CAAGV,CAAK,CAACJ,KAAN,oBAAkBI,CAAK,CAACJ,KAAxB,EAAiC,EAT9C,CAUEc,CAAQ,CAACE,IAAT,CAAcJ,CAAd,CAVF,CAYAR,CAAK,CAACa,QAAN,CAAe,CAAEJ,CAAC,CAADA,CAAF,CAAKb,KAAK,CAAEc,CAAZ,CAAf,CACD,CAEGrB,aAAa,CAACW,CAAD,CAnBoD,EAoBnEA,CAAK,CAACa,QAAN,CAAe,CAAEJ,CAAC,CAADA,CAAF,CAAKb,KAAK,CAAEY,CAAZ,CAAf,CAEH,CAtB6C,CAwBvC,CAELN,UAAU,CAAVA,CAFK,CAIR"}
@@ -1,8 +1,12 @@
1
1
  import './Icon.css';
2
2
  import React from 'react';
3
3
  import { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes';
4
- export declare type IconPropSize = 'xs' | 's' | 'm';
5
- export declare type IconPropView = 'alert' | 'brand' | 'ghost' | 'link' | 'primary' | 'secondary' | 'success' | 'warning' | 'disabled';
4
+ export declare const iconPropSize: readonly ["m", "s", "xs", "l"];
5
+ export declare type IconPropSize = typeof iconPropSize[number];
6
+ export declare const iconPropSizeDefault: "m";
7
+ export declare const iconPropView: readonly ["primary", "alert", "brand", "ghost", "link", "secondary", "success", "warning", "disabled"];
8
+ export declare type IconPropView = typeof iconPropView[number];
9
+ export declare const iconPropViewDefault: "primary";
6
10
  export declare type IconProps = PropsWithHTMLAttributesAndRef<{
7
11
  view?: IconPropView;
8
12
  size?: IconPropSize;
@@ -1,2 +1,2 @@
1
- import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["children","className","size","view"];import"./Icon.css";import React,{forwardRef}from"react";import{cn}from"../../utils/bem";export var cnIcon=cn("Icon");export var Icon=forwardRef(function(a,b){var c=a.children,d=a.className,e=a.size,f=void 0===e?"m":e,g=a.view,h=_objectWithoutProperties(a,_excluded);return React.createElement("span",Object.assign({},h,{className:cnIcon({size:f,view:g},[d]),ref:b}),c)});
1
+ import _objectWithoutProperties from"@babel/runtime/helpers/objectWithoutProperties";var _excluded=["children","className","size","view"];import"./Icon.css";import React,{forwardRef}from"react";import{cn}from"../../utils/bem";export var iconPropSize=["m","s","xs","l"];export var iconPropSizeDefault=iconPropSize[0];export var iconPropView=["primary","alert","brand","ghost","link","secondary","success","warning","disabled"];export var iconPropViewDefault=iconPropView[0];export var cnIcon=cn("Icon");export var Icon=forwardRef(function(a,b){var c=a.children,d=a.className,e=a.size,f=void 0===e?"m":e,g=a.view,h=_objectWithoutProperties(a,_excluded);return React.createElement("span",Object.assign({},h,{className:cnIcon({size:f,view:g},[d]),ref:b}),c)});
2
2
  //# sourceMappingURL=Icon.js.map