@ytsaurus/ui 1.62.0 → 1.63.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/build/assets-manifest.json +69 -69
- package/dist/public/build/css/7540.b48a154e.chunk.css +2 -0
- package/dist/public/build/css/7540.b48a154e.chunk.css.map +1 -0
- package/dist/public/build/css/{cluster-page-wrapper.0b62c90f.chunk.css → cluster-page-wrapper.0b6a786f.chunk.css} +2 -2
- package/dist/public/build/css/cluster-page-wrapper.0b6a786f.chunk.css.map +1 -0
- package/dist/public/build/css/{main.a99b07c5.css → main.070fd473.css} +2 -2
- package/dist/public/build/css/main.070fd473.css.map +1 -0
- package/dist/public/build/css/navigation.0a141599.chunk.css +2 -0
- package/dist/public/build/css/navigation.0a141599.chunk.css.map +1 -0
- package/dist/public/build/css/{system.17b114fc.chunk.css → system.221e5d53.chunk.css} +2 -2
- package/dist/public/build/css/{system.17b114fc.chunk.css.map → system.221e5d53.chunk.css.map} +1 -1
- package/dist/public/build/js/1110.a7382226.chunk.js +2 -0
- package/dist/public/build/js/1110.a7382226.chunk.js.map +1 -0
- package/dist/public/build/js/1394.011da2d1.chunk.js +2 -0
- package/dist/public/build/js/1394.011da2d1.chunk.js.map +1 -0
- package/dist/public/build/js/2447.35b478a9.chunk.js +2 -0
- package/dist/public/build/js/2447.35b478a9.chunk.js.map +1 -0
- package/dist/public/build/js/4364.aa1ab5fb.chunk.js +2 -0
- package/dist/public/build/js/4364.aa1ab5fb.chunk.js.map +1 -0
- package/dist/public/build/js/5451.50d8f2b2.chunk.js +3 -0
- package/dist/public/build/js/5451.50d8f2b2.chunk.js.LICENSE.txt +5 -0
- package/dist/public/build/js/5451.50d8f2b2.chunk.js.map +1 -0
- package/dist/public/build/js/5770.0d8fda01.chunk.js +2 -0
- package/dist/public/build/js/5770.0d8fda01.chunk.js.map +1 -0
- package/dist/public/build/js/{7077.b11a392b.chunk.js → 7077.7dab612c.chunk.js} +2 -2
- package/dist/public/build/js/{7077.b11a392b.chunk.js.map → 7077.7dab612c.chunk.js.map} +1 -1
- package/dist/public/build/js/7959.e0d47dec.chunk.js +2 -0
- package/dist/public/build/js/7959.e0d47dec.chunk.js.map +1 -0
- package/dist/public/build/js/{8460.b18e700b.chunk.js → 8460.2b27e2b7.chunk.js} +2 -2
- package/dist/public/build/js/{8460.b18e700b.chunk.js.map → 8460.2b27e2b7.chunk.js.map} +1 -1
- package/dist/public/build/js/{8778.8d098a1f.chunk.js → 8778.d97acdd6.chunk.js} +2 -2
- package/dist/public/build/js/8778.d97acdd6.chunk.js.map +1 -0
- package/dist/public/build/js/accounts.badfc837.chunk.js +2 -0
- package/dist/public/build/js/{accounts.63268a11.chunk.js.map → accounts.badfc837.chunk.js.map} +1 -1
- package/dist/public/build/js/{acl.aa7a9df7.chunk.js → acl.cd1fe761.chunk.js} +2 -2
- package/dist/public/build/js/acl.cd1fe761.chunk.js.map +1 -0
- package/dist/public/build/js/cluster-menu.bf57160d.chunk.js +2 -0
- package/dist/public/build/js/cluster-menu.bf57160d.chunk.js.map +1 -0
- package/dist/public/build/js/cluster-page-wrapper.c9e6c27c.chunk.js +2 -0
- package/dist/public/build/js/cluster-page-wrapper.c9e6c27c.chunk.js.map +1 -0
- package/dist/public/build/js/job.31c91355.chunk.js +2 -0
- package/dist/public/build/js/job.31c91355.chunk.js.map +1 -0
- package/dist/public/build/js/main.61fc9935.js +3 -0
- package/dist/public/build/js/main.61fc9935.js.map +1 -0
- package/dist/public/build/js/{manage-tokens.c996037c.chunk.js → manage-tokens.e9106aad.chunk.js} +2 -2
- package/dist/public/build/js/{manage-tokens.c996037c.chunk.js.map → manage-tokens.e9106aad.chunk.js.map} +1 -1
- package/dist/public/build/js/navigation.22bd542f.chunk.js +2 -0
- package/dist/public/build/js/navigation.22bd542f.chunk.js.map +1 -0
- package/dist/public/build/js/{odin.ddcd41de.chunk.js → odin.7eefabce.chunk.js} +2 -2
- package/dist/public/build/js/{odin.ddcd41de.chunk.js.map → odin.7eefabce.chunk.js.map} +1 -1
- package/dist/public/build/js/operations.3feb2deb.chunk.js +2 -0
- package/dist/public/build/js/operations.3feb2deb.chunk.js.map +1 -0
- package/dist/public/build/js/{query-results.99804b61.chunk.js → query-results.4c207fef.chunk.js} +2 -2
- package/dist/public/build/js/{query-results.99804b61.chunk.js.map → query-results.4c207fef.chunk.js.map} +1 -1
- package/dist/public/build/js/query-tracker.badbc586.chunk.js +2 -0
- package/dist/public/build/js/query-tracker.badbc586.chunk.js.map +1 -0
- package/dist/public/build/js/{runtime.8be0e5c6.js → runtime.f98c3e55.js} +2 -2
- package/dist/public/build/js/{runtime.8be0e5c6.js.map → runtime.f98c3e55.js.map} +1 -1
- package/dist/public/build/js/scheduling.73b1257c.chunk.js +2 -0
- package/dist/public/build/js/scheduling.73b1257c.chunk.js.map +1 -0
- package/dist/public/build/js/{system.6843a1a3.chunk.js → system.25e9136a.chunk.js} +2 -2
- package/dist/public/build/js/system.25e9136a.chunk.js.map +1 -0
- package/dist/public/build/js/tablet.7401a5ec.chunk.js +2 -0
- package/dist/public/build/js/tablet.7401a5ec.chunk.js.map +1 -0
- package/dist/public/build/js/{yt-df-dialog.6b4604c0.chunk.js → yt-df-dialog.69fc013a.chunk.js} +2 -2
- package/dist/public/build/js/{yt-df-dialog.6b4604c0.chunk.js.map → yt-df-dialog.69fc013a.chunk.js.map} +1 -1
- package/dist/public/build/manifest.json +64 -64
- package/dist/shared/ui-settings.d.ts +0 -1
- package/package.json +3 -3
- package/dist/public/build/css/7540.56f97199.chunk.css +0 -2
- package/dist/public/build/css/7540.56f97199.chunk.css.map +0 -1
- package/dist/public/build/css/cluster-page-wrapper.0b62c90f.chunk.css.map +0 -1
- package/dist/public/build/css/main.a99b07c5.css.map +0 -1
- package/dist/public/build/css/navigation.adb62abd.chunk.css +0 -2
- package/dist/public/build/css/navigation.adb62abd.chunk.css.map +0 -1
- package/dist/public/build/js/1110.d02f593c.chunk.js +0 -2
- package/dist/public/build/js/1110.d02f593c.chunk.js.map +0 -1
- package/dist/public/build/js/1394.f5423b9c.chunk.js +0 -2
- package/dist/public/build/js/1394.f5423b9c.chunk.js.map +0 -1
- package/dist/public/build/js/2447.d0a0e8ad.chunk.js +0 -2
- package/dist/public/build/js/2447.d0a0e8ad.chunk.js.map +0 -1
- package/dist/public/build/js/4364.277e1cfa.chunk.js +0 -2
- package/dist/public/build/js/4364.277e1cfa.chunk.js.map +0 -1
- package/dist/public/build/js/5770.c5499ce7.chunk.js +0 -2
- package/dist/public/build/js/5770.c5499ce7.chunk.js.map +0 -1
- package/dist/public/build/js/7891.2ce56be7.chunk.js +0 -3
- package/dist/public/build/js/7891.2ce56be7.chunk.js.LICENSE.txt +0 -14
- package/dist/public/build/js/7891.2ce56be7.chunk.js.map +0 -1
- package/dist/public/build/js/7959.eb292cbd.chunk.js +0 -2
- package/dist/public/build/js/7959.eb292cbd.chunk.js.map +0 -1
- package/dist/public/build/js/8778.8d098a1f.chunk.js.map +0 -1
- package/dist/public/build/js/accounts.63268a11.chunk.js +0 -2
- package/dist/public/build/js/acl.aa7a9df7.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-menu.e484a2ca.chunk.js +0 -2
- package/dist/public/build/js/cluster-menu.e484a2ca.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-page-wrapper.8c8aa8a1.chunk.js +0 -2
- package/dist/public/build/js/cluster-page-wrapper.8c8aa8a1.chunk.js.map +0 -1
- package/dist/public/build/js/job.5ed7166b.chunk.js +0 -2
- package/dist/public/build/js/job.5ed7166b.chunk.js.map +0 -1
- package/dist/public/build/js/main.00809a7d.js +0 -3
- package/dist/public/build/js/main.00809a7d.js.map +0 -1
- package/dist/public/build/js/navigation.c3108a21.chunk.js +0 -2
- package/dist/public/build/js/navigation.c3108a21.chunk.js.map +0 -1
- package/dist/public/build/js/operations.b353981f.chunk.js +0 -2
- package/dist/public/build/js/operations.b353981f.chunk.js.map +0 -1
- package/dist/public/build/js/query-tracker.fba0ec95.chunk.js +0 -2
- package/dist/public/build/js/query-tracker.fba0ec95.chunk.js.map +0 -1
- package/dist/public/build/js/scheduling.115669fe.chunk.js +0 -2
- package/dist/public/build/js/scheduling.115669fe.chunk.js.map +0 -1
- package/dist/public/build/js/system.6843a1a3.chunk.js.map +0 -1
- package/dist/public/build/js/tablet.40ad9054.chunk.js +0 -2
- package/dist/public/build/js/tablet.40ad9054.chunk.js.map +0 -1
- /package/dist/public/build/js/{main.00809a7d.js.LICENSE.txt → main.61fc9935.js.LICENSE.txt} +0 -0
package/dist/public/build/js/{accounts.63268a11.chunk.js.map → accounts.badfc837.chunk.js.map}
RENAMED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"js/accounts.63268a11.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/CollapsibleSection/CollapsibleSection.tsx","webpack://@ytsaurus/ui/./src/ui/components/PageCounter/PageCounter.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnHeader/ColumnHeader.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnSelector/ColumnSelector.js","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/modal-no-content.svg","webpack://@ytsaurus/ui/./src/ui/components/ColumnSelectorModal/ColumnSelectorModal.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/controls/RoleListControl/utils.ts","webpack://@ytsaurus/ui/./src/ui/components/Dialog/DialogError.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/index.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withDelayedMount.tsx","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/ElementsTableFooter.js","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withStickyFooter.js","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withStickyHead.js","webpack://@ytsaurus/ui/./src/ui/components/Favourites/Favourites.tsx","webpack://@ytsaurus/ui/./src/ui/components/Pagination/Pagination.js","webpack://@ytsaurus/ui/./src/ui/components/Pagination/SimplePagination.tsx","webpack://@ytsaurus/ui/./src/ui/components/TextInputWithDebounce/TextInputWithDebounce.tsx","webpack://@ytsaurus/ui/./src/ui/components/WarningIcon/WarningIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/common/Datepicker/index.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/global.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/AccountsNoContent.js","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/statistic/AccountStatisticTab.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/acl/AccountsAclTab.js","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/monitor/AccountsMonitorTab.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/accounts/account-usage.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/accounts/account-usage-diff.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/accounts/account-usage.ts","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountUsageColumnsButton.tsx","webpack://@ytsaurus/ui/./src/ui/containers/PathFragment/PathFragment.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountUsageToolbar.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountActionsField.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/DetailTableCell.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountUsageDetails.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountUsageTab.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/Accounts/Accounts.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/general/Editor/AccountCreateDialog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/general/Editor/AccountCreate.js","webpack://@ytsaurus/ui/./src/ui/pages/accounts/Accounts/AccountsTopRowContent.tsx","webpack://@ytsaurus/ui/./src/ui/rum/rum-app-measures.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/path-editor.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/bars-descending-align-left.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/circle-info.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Breadcrumbs/BreadcrumbsButton.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Breadcrumbs/BreadcrumbsItem.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Breadcrumbs/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Breadcrumbs/BreadcrumbsMore.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Breadcrumbs/BreadcrumbsSeparator.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Breadcrumbs/Breadcrumbs.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Tooltip/Tooltip.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/private/useTooltipVisible/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/private/useBoolean/useBoolean.js"],"sourcesContent":["import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport './CollapsibleSection.scss';\nimport Icon from '../../components/Icon/Icon';\n\nconst b = block('collapsible-section');\nconst headingCN = block('elements-heading');\n\ntype PropsStateLess = CollapsibleSectionProps & {\n onToggle: Required<CollapsibleSectionProps>['onToggle'];\n};\n\nexport class CollapsibleSectionStateLess extends Component<PropsStateLess> {\n static propTypes = {\n name: PropTypes.node.isRequired,\n collapsed: PropTypes.bool,\n onToggle: PropTypes.func.isRequired,\n size: PropTypes.oneOf(['s', 'ss', 'xs', 'm', 'l', 'xl', 'ns']),\n children: PropTypes.node,\n overview: PropTypes.node,\n className: PropTypes.string,\n };\n\n static defaultProps = {\n size: 'm',\n collapsed: false,\n marginDirection: 'top',\n };\n\n toggle = () => {\n const {onToggle} = this.props;\n\n onToggle(!this.props.collapsed);\n };\n\n render() {\n const {name, children, size, overview, className, collapsed, marginDirection} = this.props;\n\n return (\n <ErrorBoundary>\n <div className={b({margin: marginDirection}, className)}>\n <div className={headingCN({size, overview: 'yes'})}>\n <span\n className={headingCN(\n 'heading',\n {\n clickable: 'yes',\n },\n b('title'),\n )}\n onClick={this.toggle}\n >\n {name}\n <a>\n <Icon\n className={b('toggler')}\n awesome={collapsed ? 'angle-down' : 'angle-up'}\n />\n </a>\n </span>\n {overview}\n </div>\n\n {!collapsed && <ErrorBoundary>{children}</ErrorBoundary>}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nexport interface CollapsibleSectionProps {\n className?: string;\n name: React.ReactNode;\n collapsed?: boolean;\n onToggle?: (value: boolean) => void;\n\n size?: 'unset' | 'xs' | 's' | 'ss' | 'ns' | 'n' | 'm' | 'l';\n children?: React.ReactNode;\n overview?: React.ReactNode;\n\n marginDirection?: 'top' | 'bottom';\n}\n\nexport default function CollapsibleSection(props: CollapsibleSectionProps) {\n const {onToggle} = props;\n const [collapsed, setCollapsed] = React.useState(props.collapsed);\n\n const onChange = React.useCallback(\n (value: boolean) => {\n setCollapsed(value);\n if (onToggle) {\n onToggle(value);\n }\n },\n [setCollapsed, onToggle],\n );\n\n return <CollapsibleSectionStateLess {...props} onToggle={onChange} collapsed={collapsed} />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nconst block = cn('yt-page-counter');\n\nexport interface PageCounterProps {\n className?: string;\n pageIndex?: number;\n pageCount?: number;\n}\n\nfunction PageCounter({pageIndex, pageCount, className}: PageCounterProps) {\n if (pageIndex === undefined || pageCount === undefined) {\n return null;\n }\n\n return pageCount! > 1 ? (\n <span className={block(null, className)}>\n Page: {(pageIndex || 0) + 1} / {pageCount}\n </span>\n ) : null;\n}\n\nexport default React.memo(PageCounter);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport capitalize_ from 'lodash/capitalize';\n\nimport barsDescendingSvg from '@gravity-ui/icons/svgs/bars-descending-align-left.svg';\nimport {Button, DropdownMenu, Icon, Text} from '@gravity-ui/uikit';\n\nimport SortIcon from '../../components/SortIcon/SortIcon';\n\nimport {OrderType, calculateNextOrderValue, nextSortOrderValue} from '../../utils/sort-helpers';\nimport PageCounter, {PageCounterProps} from '../../components/PageCounter/PageCounter';\nimport Loader from '../../components/Loader/Loader';\nimport {rumLogError} from '../../rum/rum-counter';\n\nimport './ColumnHeader.scss';\n\nconst block = cn('column-header');\n\nexport type ColumnInfo<T> = {\n column: T;\n title?: string;\n shortTitle?: string;\n /**\n * Ignored when allowedOrderTypes is defined\n */\n allowUnordered?: boolean;\n /**\n * Ignored when allowedOrderTypes is defined\n */\n withUndefined?: boolean;\n allowedOrderTypes?: Array<OrderType>;\n};\n\nexport type HasSortColumn<T> =\n | (ColumnInfo<T> & {options?: undefined})\n | ({\n title: string;\n shortTitle?: string;\n column: T;\n options: Array<ColumnInfo<T>>;\n } & Partial<Record<keyof Omit<ColumnInfo<T>, 'column' | 'title' | 'shortTitle'>, undefined>>);\n\nexport type ColumnHeaderProps<T extends string = string> = PageCounterProps &\n HasSortColumn<T> & {\n className?: string;\n order?: OrderType;\n multisortIndex?: number;\n onSort?: (\n column: T,\n nextOrder: OrderType,\n options: {currentOrder?: OrderType; multisort?: boolean},\n ) => void;\n\n loading?: boolean;\n\n align?: 'center' | 'left' | 'right';\n };\n\ntype NameTitleContent = {\n nameContent: string;\n titleContent: string;\n};\n\nfunction getNameTitle<T extends string>({\n column,\n title,\n shortTitle,\n}: Pick<ColumnInfo<T>, 'column' | 'title' | 'shortTitle'>): NameTitleContent {\n const t = title ?? capitalize_(column);\n const nameContent = !shortTitle ? t : shortTitle;\n return {nameContent, titleContent: t};\n}\n\nfunction useColumnInfo<T extends string = string>(\n props: ColumnHeaderProps<T>,\n): ColumnInfo<T> & NameTitleContent & {subColumn?: NameTitleContent} {\n if (props.options === undefined) {\n const {column, allowUnordered, withUndefined, title, shortTitle, allowedOrderTypes} = props;\n return {\n column,\n allowUnordered,\n withUndefined,\n allowedOrderTypes,\n ...getNameTitle({column, title, shortTitle}),\n };\n }\n\n const {column: value, options, title, shortTitle} = props;\n const columnData = options.find(({column}) => value === column)!;\n if (!columnData) {\n rumLogError({\n message: 'Unexpected behavior: missing value in ColumnHeader.props.options',\n additional: props,\n });\n }\n return {\n subColumn: getNameTitle({...columnData}),\n ...columnData,\n ...getNameTitle({column: '', title, shortTitle}),\n };\n}\n\nexport default function ColumnHeader<T extends string = string>(props: ColumnHeaderProps<T>) {\n const {className, align, order, onSort, multisortIndex, loading, pageIndex, pageCount} = props;\n const {\n column,\n allowUnordered,\n withUndefined,\n nameContent,\n titleContent,\n allowedOrderTypes,\n subColumn,\n } = useColumnInfo(props);\n\n const changeHandler = React.useCallback(\n (e: React.MouseEvent) => {\n const nextOrder = allowedOrderTypes\n ? calculateNextOrderValue(order, allowedOrderTypes)\n : nextSortOrderValue(order, allowUnordered, withUndefined);\n onSort?.(column, nextOrder, {\n currentOrder: order,\n multisort: e.ctrlKey || e.metaKey,\n });\n },\n [column, order, onSort, allowUnordered, allowedOrderTypes, withUndefined],\n );\n\n const sortable = Boolean(onSort);\n\n return (\n <div className={block(null, className)}>\n <div\n className={block('label-icon', {sortable, align})}\n onClick={sortable ? changeHandler : undefined}\n >\n <span className={block('label')} title={titleContent}>\n {nameContent}\n </span>\n <span className={block('icon')}>\n <SortIcon hidden={!sortable} order={order} />\n </span>\n {multisortIndex !== undefined && (\n <span className={block('multisort')}>\n <sup>{multisortIndex}</sup>\n </span>\n )}\n {Boolean(order) && Boolean(subColumn) && (\n <Text\n className={block('label', {'sub-column': true})}\n variant=\"caption-2\"\n title={subColumn?.titleContent}\n color=\"dark-secondary\"\n >\n {subColumn?.nameContent}\n </Text>\n )}\n </div>\n <SubColumnSelector options={props.options} order={order} onSort={onSort} />\n {loading !== undefined && (\n <div className={block('loader')}>\n <Loader visible={loading} />\n </div>\n )}\n {Boolean(pageCount) && (\n <PageCounter\n className={block('page-counter')}\n pageIndex={pageIndex}\n pageCount={pageCount}\n />\n )}\n </div>\n );\n}\n\nfunction SubColumnSelector<T extends string>({\n order,\n options,\n onSort,\n}: Pick<ColumnHeaderProps<T>, 'onSort'> & {\n order?: ColumnHeaderProps<T>['order'];\n options?: Array<ColumnInfo<T>>;\n}) {\n return !options ? null : (\n <DropdownMenu\n items={options.map((x) => {\n const {titleContent} = getNameTitle(x);\n return {\n text: titleContent,\n action() {\n if (!onSort) {\n return;\n }\n const {column, allowUnordered, withUndefined, allowedOrderTypes} = x;\n const nextOrder = allowedOrderTypes\n ? calculateNextOrderValue(order, allowedOrderTypes)\n : nextSortOrderValue(order, allowUnordered, withUndefined);\n onSort(column, nextOrder, {\n currentOrder: order,\n });\n },\n };\n })}\n renderSwitcher={({onClick}) => (\n <Button onClick={onClick} view=\"flat\" size=\"xs\">\n <Icon size={12} data={barsDescendingSvg} />\n </Button>\n )}\n />\n );\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport {sortableContainer, sortableElement, sortableHandle} from 'react-sortable-hoc';\nimport ReactList from 'react-list';\n\nimport each_ from 'lodash/each';\nimport escapeRegExp_ from 'lodash/escapeRegExp';\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport partition_ from 'lodash/partition';\nimport reduce_ from 'lodash/reduce';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Icon from '../../components/Icon/Icon';\n\nimport {renderText} from '../../components/templates/utils';\n\nimport './ColumnSelector.scss';\nimport Button from '../Button/Button';\n\nconst b = cn('column-selector');\n\nexport function makeItemsCopy(items) {\n return map_(items, (item) => {\n return {...item};\n });\n}\n\nconst DragHandle = sortableHandle(() => (\n <div className={b('drag-handle')}>\n <Icon face=\"solid\" awesome=\"list\" />\n </div>\n));\n\nconst SortableItem = sortableElement(\n ({\n item,\n isSortable,\n isSelectable,\n isDisabled,\n itemRenderer,\n onCheckBoxChange,\n withClickableHandler,\n }) => {\n const active = !isDisabled && !item.disabled;\n const className = b('list-item', {\n selected: item.checked && active && 'yes',\n selectable: isSelectable && active && 'yes',\n disabled: !active && 'yes',\n });\n\n return (\n <div className={className}>\n {isSortable && item.checked && <DragHandle />}\n <div className={b('list-item-name')}>\n {item.keyColumn && <Icon awesome=\"key\" />}\n {itemRenderer(item)}\n </div>\n {active && withClickableHandler && (\n <span\n className={b('list-item-check')}\n onClick={onCheckBoxChange}\n data-item={item.name}\n >\n <Icon awesome=\"check\" />\n </span>\n )}\n {!active && <Icon className={b('list-item-lock')} awesome=\"lock\" />}\n </div>\n );\n },\n);\n\nconst SortableList = sortableContainer(\n ({\n items,\n isSortable,\n isDisabled,\n itemRenderer,\n onCheckBoxChange,\n isSelectable,\n useStaticSize,\n withClickableHandler = true,\n }) => {\n const renderer = (index, key) => {\n const item = items[index];\n return (\n <SortableItem\n key={key}\n index={index}\n item={item}\n disabled={!isSortable}\n isSortable={isSortable}\n isDisabled={isDisabled}\n isSelectable={isSelectable}\n itemRenderer={itemRenderer}\n onCheckBoxChange={onCheckBoxChange}\n withClickableHandler={withClickableHandler}\n />\n );\n };\n // Use 'simple' placement for draggable items because 'uniform' produces bugs when items are dragged outside the viewport\n const type = isSortable ? 'simple' : 'uniform';\n const mods = {'static-size': useStaticSize};\n\n return (\n <div className={b('list', mods)}>\n <ReactList itemRenderer={renderer} length={items.length} type={type} />\n </div>\n );\n },\n);\n\nexport default class ColumnSelector extends Component {\n static itemsProps = PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n keyColumn: PropTypes.bool,\n caption: PropTypes.string,\n disabled: PropTypes.bool,\n }),\n );\n\n static propTypes = {\n className: PropTypes.string,\n items: ColumnSelector.itemsProps.isRequired,\n showDisabledItems: PropTypes.bool,\n isSortable: PropTypes.bool,\n isSelectable: PropTypes.bool,\n isFilterable: PropTypes.bool,\n showSelectedOnly: PropTypes.bool,\n isHeadless: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n children: PropTypes.node,\n itemRenderer: PropTypes.func,\n };\n\n static defaultProps = {\n itemRenderer: ({name, caption = name}) => renderText(caption, {asHTML: false}),\n isSortable: false,\n isHeadless: false,\n isSelectable: true,\n isFilterable: true,\n showSelectedOnly: false,\n };\n\n constructor(props) {\n const {items, isHeadless, showSelectedOnly} = props;\n super(props);\n\n const state = {\n showSelectedOnly,\n filter: '',\n };\n if (isHeadless) {\n Object.assign(state, {items: makeItemsCopy(items)});\n }\n this.state = state;\n }\n\n get items() {\n return this.props.isHeadless ? this.state.items : this.props.items;\n }\n\n get buttonALLisDisabled() {\n return this.items.every((item) => item.checked);\n }\n\n get buttonNONEisDisabled() {\n return !this.items.some((item) => item.checked);\n }\n\n /*\n Takes items from the proper place (props or state), modifies them and writes them back at the same place.\n */\n withActualItems(func) {\n const {onChange} = this.props;\n // headless widget keeps its state to itself, but calls onChange as a way of notifying caller about changes\n if (this.props.isHeadless) {\n const {items} = func({items: this.state.items || []});\n this.setState({items}, () => {\n onChange({items: [...this.state.items]});\n });\n } else {\n // widget inside modal passes all changes to the modal component where they are put into state\n const {items} = func({items: this.props.items || []});\n onChange({items: [...items]});\n }\n }\n\n toggleItem = (name) => {\n this.withActualItems(({items}) => {\n items = [...items];\n const index = items.findIndex((item) => item.name === name);\n const changedItem = items[index];\n items[index] = {...changedItem, checked: !changedItem.checked};\n\n return {items};\n });\n };\n\n selectAllItems = () => {\n this.withActualItems(({items}) => {\n const visibleMap = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleMap[item.name]) {\n return;\n }\n if (!item.checked && !item.disabled) {\n items[index] = {...item, checked: true};\n }\n });\n\n return {items};\n });\n };\n\n deselectAllItems = () => {\n this.withActualItems(({items}) => {\n const visibleMap = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleMap[item.name]) {\n return;\n }\n if (item.checked && !item.disabled) {\n items[index] = {...item, checked: false};\n }\n });\n\n return {items};\n });\n };\n\n invertItems = () => {\n this.withActualItems(({items}) => {\n const visibleItems = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleItems[item.name]) {\n return;\n }\n if (!item.disabled) {\n items[index] = {...item, checked: !item.checked};\n }\n });\n\n return {items};\n });\n };\n\n _handleCheckBoxChange = (event) => {\n this.toggleItem(event.currentTarget.getAttribute('data-item'));\n };\n\n _handleSortEnd = ({oldIndex, newIndex}) => {\n if (oldIndex === newIndex) {\n return;\n }\n\n this.withActualItems(({items}) => {\n items = [...items];\n\n const {items: visibleItems} = this.getVisibleItems();\n const fromIndex = items.findIndex((item) => item.name === visibleItems[oldIndex].name);\n const toIndex = items.findIndex((item) => item.name === visibleItems[newIndex].name);\n\n const [removed] = items.splice(fromIndex, 1);\n items.splice(toIndex, 0, removed);\n\n return {items};\n });\n };\n\n _handleDefaultSort = () => {\n this.withActualItems(({items}) => {\n return {\n items: items.sort((a, b) => {\n const aCaption = a.caption || a.name;\n const bCaption = b.caption || b.name;\n\n return aCaption.localeCompare(bCaption);\n }),\n };\n });\n };\n\n _toggleShownItems = () => {\n this.setState((prevState) => ({\n showSelectedOnly: !prevState.showSelectedOnly,\n }));\n };\n\n _changeFilter = (filter) => {\n this.setState({filter});\n };\n\n renderSearchBox() {\n return (\n <TextInput\n placeholder=\"Search...\"\n onUpdate={this._changeFilter}\n value={this.state.filter}\n hasClear={true}\n />\n );\n }\n\n renderControls() {\n const {isFilterable, isSelectable, isSortable, isHeadless} = this.props;\n const btnProps = {\n size: 'm',\n className: b('controls-item'),\n };\n\n return (\n <div className={b('controls')}>\n {isFilterable && this.renderSearchBox()}\n {isHeadless && (\n <Button {...btnProps} onClick={this._toggleShownItems}>\n Selected \n <span className=\"elements-secondary-text\">\n {filter_(this.items, (item) => item.checked).length}\n </span>\n </Button>\n )}\n {isSelectable && (\n <Button\n {...btnProps}\n disabled={this.buttonALLisDisabled}\n onClick={this.selectAllItems}\n >\n Add all\n </Button>\n )}\n {isSelectable && (\n <Button {...btnProps} onClick={this.invertItems}>\n Invert list\n </Button>\n )}\n {!isSelectable && (\n <Button\n {...btnProps}\n disabled={this.buttonNONEisDisabled}\n onClick={this.deselectAllItems}\n >\n Remove all\n </Button>\n )}\n {isSortable && (\n <Button {...btnProps} onClick={this._handleDefaultSort}>\n Default sort\n </Button>\n )}\n </div>\n );\n }\n\n filterItemsByName(items) {\n const re = new RegExp(escapeRegExp_(this.state.filter), 'i');\n return filter_(items, (item) => re.test(item.name));\n }\n\n filterItems(items) {\n const {showDisabledItems} = this.props;\n items = showDisabledItems ? items : filter_(items, (item) => !item.disabled);\n\n const visibleItems = this.filterItemsByName(items);\n return this.state.showSelectedOnly\n ? filter_(visibleItems, (item) => item.checked)\n : visibleItems;\n }\n\n getVisibleItems() {\n const toSplit = this.filterItems(this.items);\n const [keyItems, items] = partition_(toSplit, (item) => item.keyColumn);\n return {items, keyItems};\n }\n\n getVisibleItemsMap() {\n return reduce_(\n this.filterItems(this.items),\n (acc, item) => {\n acc[item.name] = item;\n return acc;\n },\n {},\n );\n }\n\n renderList() {\n const {isSortable, isSelectable, itemRenderer, children, isHeadless} = this.props;\n\n const {items, keyItems} = this.getVisibleItems();\n\n const className = b(\n 'content',\n {\n headless: isHeadless ? undefined : 'no',\n empty: items.length ? undefined : 'yes',\n },\n 'pretty-scroll',\n );\n\n return (\n <div className={className}>\n {keyItems.length > 0 && (\n <React.Fragment>\n <SortableList\n lockAxis=\"y\"\n isDisabled={false}\n isSortable={false}\n isSelectable={isSelectable}\n items={keyItems}\n itemRenderer={itemRenderer}\n helperClass={b('list-item', {helper: 'yes'})}\n onCheckBoxChange={this._handleCheckBoxChange}\n />\n {items.length > 0 && <div className={b('separator')} />}\n </React.Fragment>\n )}\n {items.length > 0 && (\n <SortableList\n items={items}\n isSelectable={isSelectable}\n isSortable={isSortable}\n itemRenderer={itemRenderer}\n lockAxis=\"y\"\n helperClass={b('list-item', {helper: 'yes'})}\n onSortEnd={this._handleSortEnd}\n onCheckBoxChange={this._handleCheckBoxChange}\n useDragHandle\n />\n )}\n {!keyItems.length && !items.length && children}\n </div>\n );\n }\n\n render() {\n const {isHeadless, isSortable, className} = this.props;\n const classNames = b(\n {\n headless: isHeadless ? 'yes' : undefined,\n sortable: isSortable ? undefined : 'no',\n },\n className,\n );\n return (\n <div className={classNames}>\n {this.renderControls()}\n {this.renderList()}\n </div>\n );\n }\n}\n","const SvgModalNoContent = props => <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 194 194\" {...props}><g fill=\"none\" fillRule=\"evenodd\" stroke=\"#999\" opacity={0.22}><path strokeWidth={2} d=\"M97.116 188.443h1v1h-1zM96.424 185.293h1.1v1h-1.1zM95.374 182.143h2.34v1h-2.34zM94.324 178.993h4.2v1h-4.2zM93.273 175.842h6.679v1h-6.679zM91.173 172.692h9.779v1h-9.779zM89.597 169.542h13.499v1H89.597zM87.496 166.391h17.839v1H87.496zM84.871 163.241h22.798v1H84.871zM81.719 160.091h28.998v1H81.719zM78.043 156.94h35.817v1H78.043zM73.842 153.623h45.117v1H73.842z\" /><ellipse cx={96.77} cy={96.61} strokeWidth={8} rx={92.403} ry={92.61} /><ellipse cx={96.669} cy={96.371} strokeWidth={4} rx={37.057} ry={37.141} /><ellipse cx={97.269} cy={96.915} strokeWidth={8} rx={11.499} ry={11.532} /><path strokeLinecap=\"square\" strokeWidth={4} d=\"M34.504 34.653 66.12 66.34\" /><path strokeDasharray=\"8,8\" strokeWidth={4} d=\"M33.023 44.104V148.48M160.116 44.104V148.48\" /><path strokeLinecap=\"square\" strokeWidth={4} d=\"M159.603 34.653 127.986 66.34M34.504 159.798l31.617-31.685M159.603 159.798l-31.617-31.685\" /></g></svg>;\nexport default SvgModalNoContent;","import React from 'react';\nimport hammer from '../../common/hammer';\nimport block from 'bem-cn-lite';\n\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport Modal from '../Modal/Modal';\nimport ColumnSelector, {makeItemsCopy} from '../ColumnSelector/ColumnSelector';\nimport NoContentImage from '../../assets/img/svg/modal-no-content.svg';\n\nimport './ColumnSelectorModal.scss';\n\nconst b = block('column-selector-modal');\n\nexport type ColumnSelectorModalProps<DataT> = {\n items: Array<ColumnSelectorItem<DataT>>;\n srcItems: Array<ColumnSelectorItem<DataT>>;\n isVisible?: boolean;\n onChange: (items: Array<ColumnSelectorItem<DataT>>) => void;\n onConfirm: (items: Array<ColumnSelectorItem<DataT>>) => void;\n onCancel: () => void;\n\n itemRenderer: (item: ColumnSelectorItem<DataT>) => React.ReactNode;\n entity: string;\n};\n\nexport type ColumnSelectorItem<DataT> = {\n name: string;\n checked: boolean;\n data: DataT;\n disabled?: boolean;\n keyColumn?: boolean;\n};\n\ntype Props<T> = ColumnSelectorModalProps<T>;\n\ntype State<T> = Pick<Props<T>, 'items' | 'srcItems'> & {itemsOrder: Array<string>};\n\nexport default class ColumnSelectorModal<T = never> extends React.Component<Props<T>, State<T>> {\n static defaultProps: Partial<Props<unknown>> = {\n entity: 'columns',\n };\n\n state: State<T> = {\n srcItems: this.props.srcItems || this.props.items,\n items: makeItemsCopy(this.props.items),\n itemsOrder: this._getItemsOrder(this.props.items),\n };\n\n // in React 16.3 there is another way to do it: getDerivedStateFromProps;\n // revise this place once received data is managed by Redux\n componentDidUpdate(prevProps: Props<T>) {\n const {items, srcItems} = this.props;\n if (prevProps.items !== items || prevProps.srcItems !== srcItems) {\n // don't update itemsOrder\n this.setState({\n srcItems: srcItems || this.props.items,\n items: this._getOrderedItems(makeItemsCopy(items)),\n });\n }\n }\n\n _handleCONFIRMButtonClick = () => {\n const {items} = this.state;\n this.props.onConfirm(items);\n };\n\n _handleCANCELButtonClick = () => {\n const {items} = this.props;\n const order = this._getItemsOrder(items);\n // reset state to initial on cancel\n this.setState({\n items: this._getOrderedItems(makeItemsCopy(items)),\n itemsOrder: order,\n });\n this.props.onCancel();\n };\n\n _getItemsOrder(items: Props<T>['items']) {\n return map_(items, (item) => item.name);\n }\n\n _getOrderedItems(items: Props<T>['items'], order = this.state.itemsOrder) {\n return items.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name));\n }\n\n _getSelectorProps<P>(props: P, items: Props<T>['items']) {\n return {\n ...props,\n items,\n showDisabledItems: true,\n isHeadless: false,\n isFilterable: true,\n onChange: this.onSourceChange,\n };\n }\n\n _getSortableSelectorProps<P>(props: P, items: Props<T>['items']) {\n return {\n ...props,\n items,\n isSelectable: false,\n isSortable: true,\n showSelectedOnly: true,\n onChange: this.onDestinationChange,\n };\n }\n\n calculateSrcItems(newItemsMap: Record<string, ColumnSelectorItem<T>>) {\n return map_(this.state.srcItems, (item) => {\n const newItem = newItemsMap[item.name];\n\n if (newItem && newItem.checked !== item.checked) {\n return newItem;\n }\n\n return item;\n });\n }\n\n onSourceChange = ({items: newItems}: Pick<Props<T>, 'items'>) => {\n const {items} = this.state;\n const newItemsMap = reduce_(\n newItems,\n (acc, data) => {\n acc[data.name] = data;\n return acc;\n },\n {} as Record<string, ColumnSelectorItem<T>>,\n );\n\n const unchanged: Props<T>['items'] = [];\n const changed: Props<T>['items'] = [];\n forEach_(items, (item) => {\n const newItem = newItemsMap[item.name];\n if (newItem && newItem.checked !== item.checked) {\n const dst = newItem.keyColumn ? unchanged : changed;\n dst.push(newItem);\n } else {\n unchanged.push(item);\n }\n });\n\n const preparedItems = unchanged.concat(changed);\n // don't update itemsOrder\n this.setState({\n items: this._getOrderedItems(preparedItems),\n srcItems: this.calculateSrcItems(newItemsMap),\n });\n };\n\n onDestinationChange = ({items: newItems}: Pick<Props<T>, 'items'>) => {\n const newItemsMap = reduce_(\n newItems,\n (acc, data) => {\n acc[data.name] = data;\n return acc;\n },\n {} as Record<string, ColumnSelectorItem<T>>,\n );\n\n const order = this._getItemsOrder(newItems);\n\n this.setState({\n items: this._getOrderedItems(newItems, order),\n itemsOrder: order,\n srcItems: this.calculateSrcItems(newItemsMap),\n });\n };\n\n renderColumnSelector({\n props,\n title,\n description,\n className,\n }: {\n props: object;\n title: string;\n description: string;\n className?: string;\n }) {\n return (\n <ColumnSelector {...props} className={className}>\n <div className={b('no-content')}>\n <p>\n <strong>{title}</strong>\n </p>\n <p>{description}</p>\n <NoContentImage />\n </div>\n </ColumnSelector>\n );\n }\n\n renderContent() {\n const {isVisible, entity, ...rest} = this.props; // eslint-disable-line\n const {items, srcItems} = this.state;\n\n const headingCN = block('elements-heading')({size: 's'}, b('header'));\n\n const selectorProps = this._getSelectorProps(rest, srcItems);\n const sortableSelectorProps = this._getSortableSelectorProps(selectorProps, items);\n const selectedItemsCount = reduce_(\n sortableSelectorProps.items,\n (acc, item) => (item.disabled || !item.checked ? acc : ++acc),\n 0,\n );\n\n return (\n isVisible && (\n <div className={b()}>\n <div className={b('panel', {left: 'yes'})}>\n <div className={headingCN}>\n All \n <span className=\"elements-secondary-text\">{srcItems.length}</span>\n </div>\n\n {this.renderColumnSelector({\n props: selectorProps,\n title: `No available ${entity}`,\n description: `No ${entity} matching your filtering criteria`,\n })}\n </div>\n\n <div className={b('panel')}>\n <div className={headingCN}>\n Selected \n <span className=\"elements-secondary-text\">{selectedItemsCount}</span>\n </div>\n\n {this.renderColumnSelector({\n props: sortableSelectorProps,\n title: `No selected ${entity}`,\n description: `Add ${entity} you need from the All section.`,\n })}\n </div>\n </div>\n )\n );\n }\n\n render() {\n const {isVisible, entity} = this.props;\n const title = `${hammer.format['FirstUppercase'](entity)} setup`;\n\n return (\n <Modal\n size=\"l\"\n title={title}\n borderless={true}\n visible={isVisible}\n confirmText=\"Apply\"\n onConfirm={this._handleCONFIRMButtonClick}\n onCancel={this._handleCANCELButtonClick}\n content={this.renderContent()}\n contentClassName=\"column-selector-modal-content\"\n />\n );\n }\n}\n","import cn from 'bem-cn-lite';\n\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\n\nimport type {EditableManyListsItemType} from '../../../../components/Dialog';\nimport type {ResponsibleType, RoleConverted} from '../../../../utils/acl/acl-types';\nimport type {PreparedRole} from '../../../../utils/acl';\nimport {RoleListControlProps} from './RoleListControl';\n\nexport const block = cn('role-list-control');\n\nexport function prepareRoleListValue(roles: Array<PreparedRole>, otherMembers: Array<string> = []) {\n const current: typeof roles = [];\n const toAdd: typeof roles = [];\n const toRemove: typeof roles = [];\n const unrecognized: typeof roles = [];\n forEach_(roles, (item) => {\n const {isUnrecognized, isRequested, isApproved, isDepriving} = item;\n if (isUnrecognized) {\n unrecognized.push(item);\n } else if (isDepriving) {\n toRemove.push(item);\n } else if (isApproved || isRequested) {\n toAdd.push(item);\n } else {\n current.push(item);\n }\n });\n\n const currentArr = current.map((item) => prepareItemOfCurrent(item));\n const otherArr = otherMembers.map((item) => ({\n title: item,\n data: {},\n frozen: true,\n }));\n\n return {\n newItems: [],\n current: {title: 'Current', data: currentArr.concat(otherArr)},\n toAdd: {\n title: 'Will be added',\n itemClassName: block('item-to-add'),\n data: toAdd.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n toRemove: {\n title: 'Will be removed',\n itemClassName: block('item-to-remove'),\n data: toRemove.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n unrecognized: {\n title: 'Unrecognized',\n itemClassName: block('item-unrecognized'),\n data: unrecognized.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n };\n}\n\nfunction prepareItemOfCurrent(role: PreparedRole, extraProps: any = {}) {\n return {\n title: role.text || role.value,\n data: role,\n ...extraProps,\n };\n}\n\nexport function roleListValueToSubjectList(\n value: RoleListControlProps['value'],\n): Array<ResponsibleType> {\n const {current, newItems, toAdd} = value;\n return [\n ...newItems,\n ...manyListDataItemToSubjectList(current),\n ...manyListDataItemToSubjectList(toAdd),\n ];\n}\n\nfunction manyListDataItemToSubjectList(\n manyListDataItem: EditableManyListsItemType<RoleConverted>,\n): Array<ResponsibleType> {\n const {data} = manyListDataItem || {};\n return map_(\n filter_(data, ({removed}) => !removed),\n ({data}) => {\n const {type, value} = data || {};\n return {type: type!, value: value!};\n },\n );\n}\n\nexport function extractChangedSubjects(value: {\n current: EditableManyListsItemType<RoleConverted>;\n newItems: Array<ResponsibleType>;\n}) {\n const {current, newItems} = value;\n const added = newItems || [];\n const removed = ((current && current.data) || []).filter(({removed}) => removed);\n return {\n added: added.map(({type, value}) => {\n return type === 'users' ? {user: value} : {group: value};\n }),\n removed: removed.map(({data}) => {\n const {value, type} = data || {};\n return type === 'users' ? {user: value} : {group: value};\n }),\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport type {FORM_ERROR as FormErrorType} from './index';\n\nimport {FIX_MY_TYPE, YTError} from '../../types';\nimport Block from '../../components/Block/Block';\n\nimport compact_ from 'lodash/compact';\nimport map_ from 'lodash/map';\n\nconst block = cn('yt-dialog-error');\n\nexport function DialogError(props: FIX_MY_TYPE) {\n return <Block {...props} className={block()} />;\n}\n\nexport function makeErrorFields(errors: Array<YTError | Error | undefined>) {\n return compact_(\n map_(errors, (error, index) => {\n return error\n ? {\n name: `error_${index}`,\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n }\n : undefined;\n }),\n );\n}\n\nconst FORM_ERROR: typeof FormErrorType = 'FINAL_FORM/form-error';\n\nexport function makeFormSubmitError(error: YTError) {\n return {\n validationErrors: {\n [FORM_ERROR]: <DialogError error={error} />,\n },\n };\n}\n","import React from 'react';\nimport withLazyLoading from '../../hocs/withLazyLoading';\nimport {withDelayedMount} from '../../hocs/withDelayedMount';\n\nimport type {\n registerDialogControl as RegisterDialogControlFn,\n registerDialogTabControl as RegisterDialogTabControlFn,\n YTDialogType,\n} from './Dialog';\n\nexport type * from './Dialog';\nexport * from './DialogError';\nexport * from './controls/RoleListControl/utils';\n\nexport function importYTDFDialog() {\n return import(/* webpackChunkName: \"yt-df-dialog\" */ './Dialog');\n}\n\nexport const YTDFDialog = withDelayedMount(\n withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).YTDialog};\n }),\n '',\n ),\n) as YTDialogType;\n\nexport function useControlRegistration(\n fn: (params: {\n registerDialogControl: typeof RegisterDialogControlFn;\n registerDialogTabControl: typeof RegisterDialogTabControlFn;\n }) => void,\n) {\n importYTDFDialog().then(({registerDialogControl, registerDialogTabControl}) => {\n fn({registerDialogControl, registerDialogTabControl});\n });\n}\n\nexport type {RoleListControlProps} from './controls/RoleListControl/RoleListControl';\nexport const RoleListControl = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).RoleListControl};\n }),\n '',\n);\n\nexport const EditableList = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).EditableList};\n }),\n '',\n);\n\nexport const TabFieldVertical = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).TabFieldVertical};\n }),\n '',\n);\n","import React from 'react';\n\n/**\n * The hoc allows to delay mounting until `props.visible == true`.\n * The hoc might be useful to wrap components wrapped by React.lazy\n * @param Component\n * @returns\n */\nexport function withDelayedMount<P extends {visible?: boolean}>(Component: React.ComponentType<P>) {\n return function MountOnFirstVisible(props: P) {\n const [mounted, setMounted] = React.useState(false);\n React.useEffect(() => {\n if (!mounted && props.visible) {\n setMounted(true);\n }\n }, [props.visible, mounted]);\n return !mounted ? null : <Component {...props} />;\n };\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport ElementsTableRow from '../../components/ElementsTable/ElementsTableRow';\n\nimport {ELEMENTS_TABLE, TemplatesPropType, prepareColumnsData} from './utils';\n\nimport './ElementsTable.scss';\n\nexport default class ElementsTableFooter extends Component {\n static propTypes = {\n footer: PropTypes.object.isRequired,\n templates: TemplatesPropType.isRequired,\n cssHover: PropTypes.bool,\n };\n\n static defaultProps = {\n templates: {},\n cssHover: false,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {};\n }\n\n static getDerivedStateFromProps(props) {\n const {columns} = props;\n const {items, set} = prepareColumnsData(columns);\n\n return {\n columnItems: items,\n columnSet: set,\n };\n }\n\n renderRow(item, index, key = index) {\n const {css, itemHeight, templates, itemMods, selectedIndex, computeKey, cssHover} =\n this.props;\n const {columnSet, columnItems} = this.state;\n\n const selected = selectedIndex === index;\n const currentKey = typeof computeKey === 'function' ? computeKey(item) : key;\n\n return (\n <ElementsTableRow\n key={currentKey}\n columnSet={columnSet}\n columnItems={columnItems}\n item={item}\n itemHeight={itemHeight}\n css={css}\n templates={templates}\n selected={selected}\n index={index}\n itemMods={itemMods}\n cssHover={cssHover}\n />\n );\n }\n\n render() {\n const bFooter = block(ELEMENTS_TABLE)('footer');\n const {footer} = this.props;\n\n return <tfoot className={bFooter}>{this.renderRow(footer, 0)}</tfoot>;\n }\n}\n","import React from 'react';\nimport block from 'bem-cn-lite';\n\nimport ElementsTableFooter from '../../../components/ElementsTable/ElementsTableFooter';\n\nimport {getDisplayName} from '../../../utils';\nimport {prepareTableClassName} from '../../../components/ElementsTable/utils';\n\nimport '../ElementsTable.scss';\n\nexport default (Component) => {\n return class WithStickyFooter extends React.Component {\n static displayName = `WithStickyFooter(${getDisplayName(Component)})`;\n\n static defaultProps = {\n size: 'm',\n };\n\n renderStickyFooter() {\n const bWrapper = block('elements-table-wrapper')({\n sticky: 'bottom',\n });\n const {footer} = this.props;\n\n return (\n <div className={bWrapper}>\n <table className={prepareTableClassName(this.props)}>\n <ElementsTableFooter {...this.props} footer={footer} />\n </table>\n </div>\n );\n }\n\n render() {\n return (\n <React.Fragment>\n <Component {...this.props} />\n {this.props.footer && this.renderStickyFooter()}\n </React.Fragment>\n );\n }\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {compose} from 'redux';\nimport block from 'bem-cn-lite';\n\nimport ElementsTableHeader from '../../../components/ElementsTable/ElementsTableHeader';\n\nimport {toggleColumnSortOrder} from '../../../store/actions/tables';\nimport {getDisplayName} from '../../../utils';\nimport {prepareTableClassName} from '../../../components/ElementsTable/utils';\nimport {HEADER_HEIGHT} from '../../../constants/index';\n\nimport '../ElementsTable.scss';\n\nconst withStickyHead = (Component) => {\n return class WithStickyHead extends React.Component {\n static displayName = `WithStickyHead(${getDisplayName(Component)})`;\n\n static propTypes = {\n top: PropTypes.number,\n };\n\n static defaultProps = {\n templates: {},\n size: 'm',\n theme: 'bordered',\n padded: false,\n striped: true,\n top: HEADER_HEIGHT,\n };\n\n renderStickyHead() {\n const {top} = this.props;\n const bWrapper = block('elements-table-wrapper')({sticky: 'top'});\n\n return (\n <div className={bWrapper} style={{top}}>\n <table className={prepareTableClassName(this.props)}>\n <ElementsTableHeader {...this.props} />\n </table>\n </div>\n );\n }\n\n render() {\n return (\n <React.Fragment>\n {this.renderStickyHead()}\n <Component {...this.props} />\n </React.Fragment>\n );\n }\n };\n};\n\nconst mapStateToProps = ({tables}) => {\n return {sortState: tables};\n};\n\nconst mapDispatchToProps = {\n toggleColumnSortOrder,\n};\n\nconst composedWithStickyHead = compose(\n connect(mapStateToProps, mapDispatchToProps),\n withStickyHead,\n);\n\nexport default composedWithStickyHead;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Button, ButtonProps, DropdownMenu} from '@gravity-ui/uikit';\n\nimport Icon from '../Icon/Icon';\nimport Hotkey from '../../components/Hotkey/Hotkey';\n\nimport './Favourites.scss';\n\nconst b = block('favourites');\n\ninterface Props {\n className?: string;\n isActive: boolean;\n items: Array<FavouritesItem>;\n onItemClick: (item: FavouritesItem) => void;\n toggleDisabled?: boolean;\n onToggle: () => void;\n theme?: 'clear';\n}\n\nexport interface FavouritesItem {\n path: string;\n}\n\ninterface State {\n isActive: boolean;\n}\n\nexport default class Favourites extends Component<Props, State> {\n static itemType = PropTypes.shape({\n path: PropTypes.string,\n });\n\n static propTypes = {\n isActive: PropTypes.bool.isRequired,\n items: PropTypes.arrayOf(Favourites.itemType),\n onItemClick: PropTypes.func,\n toggleDisabled: PropTypes.bool,\n onToggle: PropTypes.func,\n className: PropTypes.string,\n theme: PropTypes.string,\n };\n\n static getDerivedStateFromProps(props: Props, state: State) {\n if (props.isActive !== state.isActive) {\n return {isActive: props.isActive};\n }\n return null;\n }\n\n state = {\n isActive: this.props.isActive,\n };\n\n toggleActive = () => {\n const {onToggle} = this.props;\n\n this.setState((prevState) => ({isActive: !prevState.isActive}));\n onToggle();\n };\n\n onItemClick = (item: FavouritesItem) => {\n const {onItemClick} = this.props;\n onItemClick(item);\n };\n\n renderDropDownMenu() {\n const {items} = this.props;\n\n const dropItems = map_(items, (item) => {\n return {\n text: item.path,\n action: () => this.onItemClick(item),\n };\n });\n if (items.length === 0) {\n dropItems.push({\n action: () => {},\n text: 'No favourites',\n });\n }\n\n const switcher = this.renderButton({\n view: 'normal',\n size: 'm',\n pin: 'brick-round',\n title: 'View favourites',\n children: <Icon awesome=\"angle-down\" />,\n });\n\n return (\n <DropdownMenu\n popupProps={{\n className: b('popup', {empty: items.length === 0}),\n }}\n items={dropItems}\n switcher={switcher}\n />\n );\n }\n\n renderHotkey() {\n return <Hotkey settings={[{keys: 'f', handler: this.toggleActive, scope: 'all'}]} />;\n }\n\n renderButton(buttonProps: ButtonProps & {disabled?: boolean}) {\n const {theme} = this.props;\n const themeProps = !theme ? {} : {view: 'outlined' as const};\n return <Button {...buttonProps} {...themeProps} />;\n }\n\n render() {\n const {toggleDisabled, className, theme} = this.props;\n const {isActive} = this.state;\n\n return (\n <div className={b(null, className)}>\n <div className={b('star-btn', {clear: theme === 'clear'})}>\n {this.renderButton({\n view: 'outlined-info',\n selected: isActive,\n size: 'm',\n pin: theme === 'clear' ? 'round-brick' : 'round-clear',\n title: 'Add to favourites [F]',\n onClick: this.toggleActive,\n disabled: toggleDisabled,\n children: <Icon awesome={isActive ? 'star-alt' : 'star'} />,\n })}\n </div>\n {this.renderDropDownMenu()}\n {this.renderHotkey()}\n </div>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport {TextInput} from '@gravity-ui/uikit';\n\nimport Icon from '../Icon/Icon';\nimport Hotkey from '../../components/Hotkey/Hotkey';\n\nimport './Pagination.scss';\nimport Button from '../Button/Button';\n\nconst paginationControlComponent = PropTypes.shape({\n handler: PropTypes.func,\n target: PropTypes.func,\n disabled: PropTypes.bool,\n hotkey: PropTypes.string,\n hotkeyScope: PropTypes.string,\n hotkeyHandler: PropTypes.func,\n}).isRequired;\n\nconst supportedSizes = ['s', 'm', 'l'];\nconst block = cn('elements-pagination');\n\nexport default class Pagination extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n size: PropTypes.oneOf(supportedSizes),\n first: paginationControlComponent,\n previous: paginationControlComponent,\n next: paginationControlComponent,\n last: paginationControlComponent,\n tooltip: PropTypes.string,\n showInput: PropTypes.bool,\n inputValue: PropTypes.string,\n onChange: PropTypes.func,\n };\n static defaultProps = {\n size: 'm',\n showInput: false,\n };\n\n renderComponent(name, control) {\n const handler = control.handler;\n\n const disabled = typeof control.disabled === 'boolean' ? control.disabled : false;\n\n const {size, tooltip} = this.props;\n const hotkeySettings = [\n {\n keys: control.hotkey,\n scope: control.hotkeyScope,\n handler: control.hotkeyHandler,\n },\n ];\n\n return (\n <span title={tooltip}>\n <Button\n size={size}\n onClick={handler}\n disabled={disabled}\n className={block('control', {name})}\n title={\n {\n first: 'First page',\n previous: 'Previous page',\n next: 'Next page',\n last: 'Last page',\n }[name]\n }\n pin={\n {\n first: 'round-brick',\n previous: 'clear-brick',\n next: 'brick-clear',\n last: 'brick-round',\n }[name]\n }\n >\n <Icon\n awesome={\n {\n first: 'angle-double-left',\n previous: 'angle-left',\n next: 'angle-right',\n last: 'angle-double-right',\n }[name]\n }\n />\n </Button>\n {typeof control.hotkeyHandler !== 'undefined' && (\n <Hotkey settings={hotkeySettings} />\n )}\n </span>\n );\n }\n renderInput() {\n const {showInput, inputValue, onChange, size} = this.props;\n\n return showInput ? (\n <TextInput\n qa=\"yt-pagination_input\"\n size={size}\n type=\"text\"\n value={inputValue}\n onUpdate={onChange}\n pin={'clear-clear'}\n />\n ) : null;\n }\n render() {\n const {first, previous, next, last, className} = this.props;\n\n return (\n <div className={block(null, className)}>\n {this.renderComponent('first', first)}\n {this.renderComponent('previous', previous)}\n {this.renderInput()}\n {this.renderComponent('next', next)}\n {this.renderComponent('last', last)}\n </div>\n );\n }\n}\n","import React from 'react';\nimport Pagination from './Pagination';\n\ninterface Props {\n value?: number;\n min?: number;\n max?: number;\n onChange: (value: number) => void;\n disabled?: boolean;\n step?: number;\n className?: string;\n}\n\nfunction SimplePagination(props: Props) {\n const {value = NaN, min = NaN, max = NaN, onChange, disabled, step = 1, className} = props;\n\n const firstDiff = isNaN(value) || isNaN(min) ? 0 : value - min;\n const lastDiff = isNaN(value) || isNaN(max) ? 0 : max - value;\n\n const handleToFirst = React.useCallback(() => {\n onChange(min);\n }, [min, onChange]);\n\n const handleToPrev = React.useCallback(() => {\n const newValue = value - step;\n onChange(newValue < min ? min : newValue);\n }, [min, value, step, onChange]);\n\n const handleToNext = React.useCallback(() => {\n const newValue = value + step;\n onChange(newValue > max ? max : newValue);\n }, [max, value, step, onChange]);\n\n const handleToLast = React.useCallback(() => {\n onChange(max);\n }, [max, onChange]);\n\n return (\n <Pagination\n className={className}\n first={{\n handler: handleToFirst,\n disabled: firstDiff === 0 || disabled,\n }}\n previous={{\n handler: handleToPrev,\n disabled: firstDiff === 0 || disabled,\n }}\n next={{\n handler: handleToNext,\n disabled: lastDiff === 0 || disabled,\n }}\n last={{\n handler: handleToLast,\n disabled: lastDiff === 0 || disabled,\n }}\n />\n );\n}\n\nexport default React.memo(SimplePagination);\n","import React from 'react';\nimport throttle_ from 'lodash/throttle';\n\nimport {TextInput, TextInputProps} from '@gravity-ui/uikit';\n\nexport interface TextInputWithDebounceProps extends TextInputProps {\n debounce?: number;\n onBlur?: (e: React.FocusEvent) => void;\n onEnterKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nfunction TextInputWithDebounce(props: TextInputWithDebounceProps) {\n const {\n debounce = 400,\n onUpdate = () => {},\n onBlur,\n value,\n onEnterKeyDown,\n onKeyDown,\n ...rest\n } = props;\n\n const [input, setInput] = React.useState<string | undefined>();\n\n const handleChangeExt = React.useMemo(() => {\n return throttle_(onUpdate as any, debounce);\n }, [debounce, onUpdate]);\n\n const handleChange = React.useCallback(\n (text: string) => {\n setInput(text);\n handleChangeExt(text);\n },\n [handleChangeExt, setInput],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyDown) {\n onKeyDown(e);\n }\n if (e.key === 'Enter' && onEnterKeyDown) {\n onEnterKeyDown(e);\n }\n },\n [onEnterKeyDown, onKeyDown],\n );\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setInput(undefined);\n\n if (onBlur) {\n onBlur(e);\n }\n },\n [setInput, onBlur],\n );\n\n return (\n <TextInput\n onUpdate={handleChange}\n {...rest}\n value={input === undefined ? value : input}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n );\n}\n\nexport default React.memo(TextInputWithDebounce);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../Tooltip/Tooltip';\n\nimport './WarningIcon.scss';\n\nconst b = cn('yt-warning-icon');\n\ninterface Props {\n className?: string;\n hoverContent?: React.ReactNode;\n color?: 'warning' | 'danger';\n children?: React.ReactNode;\n}\n\nexport default function WarningIcon(props: Props) {\n const {className, hoverContent, children, color} = props;\n return (\n <span className={b(null, className)}>\n <Tooltip className={b('tooltip')} content={hoverContent}>\n <Icon className={b('icon', {color})} awesome=\"exclamation-triangle\" />\n {children && (\n <Text variant=\"inherit\" color={color}>\n {children}\n </Text>\n )}\n </Tooltip>\n </span>\n );\n}\n","import React, {FC} from 'react';\nimport {Datepicker, DatepickerProps, datepickerDefaultProps} from './Datepicker';\n\nexport * from './Datepicker';\n\nexport const DatePickerWrapper: FC<DatepickerProps> = (props) => <Datepicker {...props} />;\nDatePickerWrapper.defaultProps = datepickerDefaultProps;\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport sortedIndexBy_ from 'lodash/sortedIndexBy';\nimport sortedLastIndexBy_ from 'lodash/sortedLastIndexBy';\n\nimport {getAllUserNamesSorted} from '../store/selectors/global';\nimport {\n loadAccountsIfNotLoaded,\n loadBundlesIfNotLoaded,\n loadGroupsIfNotLoaded,\n loadUsersIfNotLoaded,\n} from '../store/actions/global';\n\nexport function useAllUserNamesFiltered() {\n const dispatch = useDispatch();\n React.useEffect(() => {\n dispatch(loadUsersIfNotLoaded());\n }, []);\n\n const namesSorted = useSelector(getAllUserNamesSorted);\n\n const getFiltered = React.useCallback(\n (text: string) => {\n const from = sortedIndexBy_(namesSorted, text, (item) => item.substr(0, text.length));\n const to = sortedLastIndexBy_(namesSorted, text, (item) => item.substr(0, text.length));\n const res = namesSorted.slice(from, to);\n return res;\n },\n [namesSorted],\n );\n\n return {getFiltered, allNames: namesSorted};\n}\n\nexport function useGroupsLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadGroupsIfNotLoaded());\n }, []);\n}\n\nexport function GroupsLoader({children}: {children?: React.ReactElement}) {\n useGroupsLoaded();\n return children ?? null;\n}\n\nexport function useAccountsLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadAccountsIfNotLoaded());\n }, []);\n}\n\nexport function AccountsLoader() {\n useAccountsLoaded();\n return null;\n}\n\nexport function useBundlesLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadBundlesIfNotLoaded());\n }, []);\n}\n\nexport function BundlesLoader() {\n useBundlesLoaded();\n return null;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {NoContent} from '../../components/NoContent/NoContent';\n\nAccountsNoContent.propTypes = {\n hint: PropTypes.node.isRequired,\n};\n\nexport default function AccountsNoContent({hint}) {\n return <NoContent hint={hint} warning=\"You don't have any selected accounts\" />;\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport AccountsNoContent from '../../../../pages/accounts/AccountsNoContent';\nimport {getCluster, getTheme} from '../../../../store/selectors/global';\nimport {\n getActiveAccount,\n getActiveAccountSubtreeNames,\n} from '../../../../store/selectors/accounts/accounts';\nimport UIFactory from '../../../../UIFactory';\n\nfunction AccountStatisticTab() {\n const cluster = useSelector(getCluster);\n const account = useSelector(getActiveAccount);\n const accountSubtreeAllNames = useSelector(getActiveAccountSubtreeNames);\n const theme = useSelector(getTheme);\n\n if (!account) {\n return <AccountsNoContent hint=\"Choose an account to build a forecast\" />;\n }\n\n const AccountStatisticsComponent = UIFactory.getStatisticsComponentForAccount()!;\n\n return (\n <div className={'elements-section'}>\n <AccountStatisticsComponent {...{cluster, account, accountSubtreeAllNames, theme}} />\n </div>\n );\n}\n\nexport default React.memo(AccountStatisticTab);\n","import * as React from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport AccountsNoContent from '../../../../pages/accounts/AccountsNoContent';\n\nimport {getActiveAccount} from '../../../../store/selectors/accounts/accounts';\nimport {fetchAccounts} from '../../../../store/actions/accounts/accounts';\nimport {loadUsers} from '../../../../store/actions/accounts/editor';\nimport {AccountsAcl} from '../../../../containers/ACL';\n\nAccountsAclTab.propTypes = {\n activeAccount: PropTypes.string,\n fetchAccounts: PropTypes.func,\n};\n\nfunction AccountsAclTab(props) {\n const {activeAccount} = props;\n if (!activeAccount) {\n return <AccountsNoContent hint=\"Choose an account to display its ACL\" />;\n }\n\n return <AccountsAcl path={activeAccount} />;\n}\n\nconst mapAccountsAclTabStateToProps = (state) => {\n return {\n activeAccount: getActiveAccount(state),\n };\n};\n\nexport default connect(mapAccountsAclTabStateToProps, {\n fetchAccounts,\n loadUsers,\n})(AccountsAclTab);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport AccountsNoContent from '../../AccountsNoContent';\n\nimport {getActiveAccount} from '../../../../store/selectors/accounts/accounts';\nimport {getCluster} from '../../../../store/selectors/global';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\n\nfunction AccountsMonitorTab(props: {\n component: React.ComponentType<{cluster: string; account: string}>;\n}) {\n const {component: AccountMonitor} = props;\n const account = useSelector(getActiveAccount);\n const cluster = useSelector(getCluster);\n\n if (!account) {\n return <AccountsNoContent hint={'Please choose one to display charts'} />;\n }\n\n return (\n <ErrorBoundary>\n <AccountMonitor {...{account, cluster}} />\n </ErrorBoundary>\n );\n}\n\nexport default React.memo(AccountsMonitorTab);\n","import {RootState} from '../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport {PAGE_SIZE} from '../../reducers/accounts/usage/accounts-usage-filters';\nimport ypath from '../../../common/thor/ypath';\n\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {SortState} from '../../../types';\nimport {\n getSettingsAccountUsageColumnsList,\n getSettingsAccountUsageColumnsListFolders,\n getSettingsAccountUsageColumnsTree,\n} from '../settings-ts';\nimport format from '../../../common/hammer/format';\nimport {AccountUsageDataItem} from '../../reducers/accounts/usage/account-usage-types';\n\nconst ACCOUNT_USAGE_COLUMN_TITLE: Record<string, string> = {\n approximate_row_count: '~Row count',\n master_memory: 'Master mem',\n};\n\nconst MEDIUM_PREFIX = 'medium:';\n\nexport function readableAccountUsageColumnName(column: string, withMediumPrefix?: boolean) {\n const title = ACCOUNT_USAGE_COLUMN_TITLE[column];\n if (title) {\n return title;\n }\n\n const readable =\n !withMediumPrefix && column.startsWith(MEDIUM_PREFIX)\n ? column.substr(MEDIUM_PREFIX.length)\n : column;\n return format.Readable(readable);\n}\n\nexport const getAccountUsageSnapshots = (state: RootState) =>\n state.accounts.usage.snapshots.snapshot_timestamps;\n\nexport const getAccountUsageCurrentSnapshot = (state: RootState) =>\n state.accounts.usage.filters.currentSnapshot;\nexport const getAccountUsageTreePath = (state: RootState) => state.accounts.usage.filters.treePath;\nexport const getAccountUsageSortState = (state: RootState) =>\n state.accounts.usage.filters.sortState;\n\nexport const getAccountUsageViewType = (state: RootState) => state.accounts.usage.filters.viewType;\n\nexport const getAccountUsagePathFilter = (state: RootState) =>\n state.accounts.usage.filters.pathFilter;\nexport const getAccountUsageOwnerFilter = (state: RootState) =>\n state.accounts.usage.filters.ownerFilter;\nexport const getAccountUsageDateRangeFilter = (state: RootState) =>\n state.accounts.usage.filters.dateRange;\nexport const getAccountUsageDateRangeTypeFilter = (state: RootState) =>\n state.accounts.usage.filters.dateRangeType;\nexport const getAccountsUsageDiffFromSnapshot = (state: RootState) =>\n state.accounts.usage.filters.diffFromSnapshot;\nexport const getAccountsUsageDiffToSnapshot = (state: RootState) =>\n state.accounts.usage.filters.diffToSnapshot;\nconst getAccountUsagePageIndexRaw = (state: RootState) => state.accounts.usage.filters.pageIndex;\n\nexport const getAccountUsageListRequestParams = (state: RootState) =>\n state.accounts.usage.list.requestParams;\nexport const getAccountUsageListLoading = (state: RootState) => state.accounts.usage.list.loading;\nexport const getAccountUsageListLoaded = (state: RootState) => state.accounts.usage.list.loaded;\nexport const getAccountUsageListError = (state: RootState) => state.accounts.usage.list.error;\nexport const getAccountUsageListItems = (state: RootState) =>\n state.accounts.usage.list.response?.items || [];\nexport const getAccountUsageListFields = (state: RootState) =>\n state.accounts.usage.list.response?.fields || [];\nexport const getAccountUsageListMediums = (state: RootState) =>\n state.accounts.usage.list.response?.mediums || [];\nexport const getAccountUsageListRowCount = (state: RootState) =>\n state.accounts.usage.list.response?.row_count || 0;\n\nexport const getAccountUsageTreeRequestParams = (state: RootState) =>\n state.accounts.usage.tree.requestParams;\nexport const getAccountUsageTreeLoading = (state: RootState) => state.accounts.usage.tree.loading;\nexport const getAccountUsageTreeLoaded = (state: RootState) => state.accounts.usage.tree.loaded;\nexport const getAccountUsageTreeError = (state: RootState) => state.accounts.usage.tree.error;\nexport const getAccountUsageTreeItems = (state: RootState) =>\n state.accounts.usage.tree.response?.items || [];\nexport const getAccountUsageTreeFields = (state: RootState) =>\n state.accounts.usage.tree.response?.fields || [];\nexport const getAccountUsageTreeMediums = (state: RootState) =>\n state.accounts.usage.tree.response?.mediums || [];\nexport const getAccountUsageTreeRowCount = (state: RootState) =>\n state.accounts.usage.tree.response?.row_count || 0;\nexport const getAccountUsageTreeItemsBasePath = (state: RootState) =>\n state.accounts.usage.tree.base_path;\n\nexport const getAccountUsageListDiffRequestParams = (state: RootState) =>\n state.accounts.usage.listDiff.requestParams;\nexport const getAccountUsageListDiffLoading = (state: RootState) =>\n state.accounts.usage.listDiff.loading;\nexport const getAccountUsageListDiffLoaded = (state: RootState) =>\n state.accounts.usage.listDiff.loaded;\nexport const getAccountUsageListDiffError = (state: RootState) =>\n state.accounts.usage.listDiff.error;\nexport const getAccountUsageListDiffItems = (state: RootState) =>\n state.accounts.usage.listDiff.response?.items || [];\nexport const getAccountUsageListDiffFields = (state: RootState) =>\n state.accounts.usage.listDiff.response?.fields || [];\nexport const getAccountUsageListDiffMediums = (state: RootState) =>\n state.accounts.usage.listDiff.response?.mediums || [];\nexport const getAccountUsageListDiffRowCount = (state: RootState) =>\n state.accounts.usage.listDiff.response?.row_count || 0;\n\nexport const getAccountUsageTreeDiffRequestParams = (state: RootState) =>\n state.accounts.usage.treeDiff.requestParams;\nexport const getAccountUsageTreeDiffLoading = (state: RootState) =>\n state.accounts.usage.treeDiff.loading;\nexport const getAccountUsageTreeDiffLoaded = (state: RootState) =>\n state.accounts.usage.treeDiff.loaded;\nexport const getAccountUsageTreeDiffError = (state: RootState) =>\n state.accounts.usage.treeDiff.error;\nexport const getAccountUsageTreeDiffItems = (state: RootState) =>\n state.accounts.usage.treeDiff.response?.items || [];\nexport const getAccountUsageTreeDiffFields = (state: RootState) =>\n state.accounts.usage.treeDiff.response?.fields || [];\nexport const getAccountUsageTreeDiffMediums = (state: RootState) =>\n state.accounts.usage.treeDiff.response?.mediums || [];\nexport const getAccountUsageTreeDiffRowCount = (state: RootState) =>\n state.accounts.usage.treeDiff.response?.row_count || 0;\nexport const getAccountUsageTreeDiffItemsBasePath = (state: RootState) =>\n state.accounts.usage.treeDiff.base_path;\n\nexport const isAccountsUsageDiffView = createSelector([getAccountUsageViewType], (viewType) => {\n return viewType?.endsWith('-diff');\n});\n\nexport const getAccountUsageTreeItemsBasePathSplitted = createSelector(\n [\n getAccountUsageViewType,\n getAccountUsageTreeItemsBasePath,\n getAccountUsageTreeDiffItemsBasePath,\n ],\n (viewType, treePath, treeDiffPath) => {\n const path = viewType === 'tree-diff' ? treeDiffPath : treePath;\n if (!path) {\n return [];\n }\n\n const fragments: Array<{name: string}> = new ypath.YPath(path, 'absolute').fragments || [];\n\n return map_(fragments, (item, index) => {\n return {\n value: fragments\n .slice(0, index + 1)\n .map(({name}) => name)\n .join('/'),\n item: item.name,\n };\n });\n },\n);\n\nexport const getAccountUsageFieldFiltersRequestParameter = createSelector(\n [getAccountUsageDateRangeFilter, getAccountUsageDateRangeTypeFilter],\n ({from, to}, dateRangeType: 'creation_time' | 'modification_time') => {\n const res = [];\n\n if (from !== null) {\n res.push({\n field: dateRangeType,\n value: Math.round(new Date(from).getTime() / 1000),\n comparison: '>=' as const,\n });\n }\n\n if (to !== null) {\n res.push({\n field: dateRangeType,\n value: Math.round(new Date(to).getTime() / 1000),\n comparison: '<=' as const,\n });\n }\n\n return res;\n },\n);\n\nexport const getAccountUsagePageCount = createSelector(\n [\n getAccountUsageViewType,\n getAccountUsageListRowCount,\n getAccountUsageTreeRowCount,\n getAccountUsageListDiffRowCount,\n ],\n (viewType, listRowCount, treeRowCount, listDiffRowCount) => {\n let rowCount = listRowCount;\n if (viewType === 'tree') {\n rowCount = treeRowCount;\n } else if (viewType === 'list-diff' || viewType === 'list-plus-folders-diff') {\n rowCount = listDiffRowCount;\n }\n return rowCount > 0 ? Math.ceil(rowCount / PAGE_SIZE) : 0;\n },\n);\n\nexport const getAccountUsagePageIndex = createSelector(\n [getAccountUsagePageIndexRaw],\n (pageIndex) => {\n return Math.max(0, Number(pageIndex));\n },\n);\n\nexport const getAccountUsageSortStateByColumn = createSelector(\n [getAccountUsageSortState],\n (sortState) => {\n return reduce_(\n sortState,\n (acc, {column, order}, index) => {\n if (column && order) {\n acc[column] = {\n order,\n multisortIndex: sortState.length > 1 ? index + 1 : undefined,\n };\n }\n return acc;\n },\n {} as Record<string, {order: Required<SortState>['order']; multisortIndex?: number}>,\n );\n },\n);\n\nexport const getAccountUsageAvailableColumns = createSelector(\n [\n getAccountUsageViewType,\n getAccountUsageListFields,\n getAccountUsageTreeFields,\n getAccountUsageListDiffFields,\n getAccountUsageTreeDiffFields,\n ],\n (viewType, listFields, treeFields, listDiffFields, treeDiffFields) => {\n switch (viewType) {\n case 'list':\n case 'list-plus-folders':\n return listFields;\n case 'list-diff':\n case 'list-plus-folders-diff':\n return listDiffFields;\n case 'tree':\n return treeFields;\n case 'tree-diff':\n return treeDiffFields;\n }\n return [];\n },\n);\n\nconst defaultTreeColumns: Array<keyof AccountUsageDataItem> = [\n 'owner',\n 'disk_space',\n 'medium:default',\n 'medium:ssd_blobs',\n 'medium:nvme_blobs',\n 'chunk_count',\n 'node_count',\n 'modification_time',\n] as any;\nconst defaultListColumns: Array<keyof AccountUsageDataItem> = [\n 'owner',\n 'disk_space',\n 'medium:default',\n 'medium:ssd_blobs',\n 'medium:nvme_blobs',\n 'chunk_count',\n 'modification_time',\n] as any;\nconst defaultListFoldersColumns: Array<keyof AccountUsageDataItem> = [\n 'owner',\n 'disk_space',\n 'medium:default',\n 'medium:ssd_blobs',\n 'medium:nvme_blobs',\n 'chunk_count',\n 'node_count',\n 'modification_time',\n] as any;\n\nfunction firstNotEmpty<T = keyof AccountUsageDataItem>(a1: Array<T>, a2: Array<T>): Array<T> {\n if (a1?.length) {\n return a1;\n }\n\n return a2;\n}\n\nconst getAccountUsageVisibleColumns = createSelector(\n [\n getAccountUsageViewType,\n getSettingsAccountUsageColumnsTree,\n getSettingsAccountUsageColumnsList,\n getSettingsAccountUsageColumnsListFolders,\n ],\n (viewType, treeColumns, listColumns, listFoldersColumns) => {\n switch (viewType) {\n case 'list':\n case 'list-diff':\n return firstNotEmpty(listColumns, defaultListColumns);\n case 'list-plus-folders':\n case 'list-plus-folders-diff':\n return firstNotEmpty(listFoldersColumns, defaultListFoldersColumns);\n default:\n return firstNotEmpty(treeColumns, defaultTreeColumns);\n }\n },\n);\n\nexport const getAccountUsageSelectableColumns = createSelector(\n [getAccountUsageAvailableColumns],\n (columns) => {\n return filter_(columns, (item) => !ACCOUNT_USAGE_UNAVAILABLE_FIELDS.has(item));\n },\n);\n\nexport const ACCOUNT_USAGE_UNAVAILABLE_FIELDS = new Set([\n 'type',\n 'path',\n 'depth',\n 'account',\n 'medium:cache',\n 'direct_child_count',\n]);\n\nexport const getAccountUsageVisibleDataColumns = createSelector(\n [getAccountUsageSelectableColumns, getAccountUsageVisibleColumns],\n (selectableColumns, userColumns) => {\n const columns = new Set<string>(selectableColumns);\n\n return ['type', 'path'].concat(\n filter_(userColumns, (item) => {\n return columns.has(item);\n }),\n );\n },\n);\n","import isEqual_ from 'lodash/isEqual';\n\nimport axios from 'axios';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../store/reducers';\nimport {\n AccountUsageListDiffAction,\n AccountUsageListDiffDataParams,\n AccountsUsageDiffDataResponse,\n} from '../../../store/reducers/accounts/usage/accounts-usage-list-diff';\nimport {accountUsageApiUrl, getFilterParameters} from './account-usage';\nimport {\n ACCOUNTS_USAGE_LIST_DIFF_FAILED,\n ACCOUNTS_USAGE_LIST_DIFF_REQUEST,\n ACCOUNTS_USAGE_LIST_DIFF_SUCCESS,\n ACCOUNTS_USAGE_TREE_DIFF_FAILED,\n ACCOUNTS_USAGE_TREE_DIFF_REQUEST,\n ACCOUNTS_USAGE_TREE_DIFF_SUCCESS,\n} from '../../../constants/accounts/accounts';\nimport {\n getAccountUsageListDiffRequestParams,\n getAccountUsageTreeDiffRequestParams,\n getAccountUsageTreePath,\n getAccountsUsageDiffFromSnapshot,\n getAccountsUsageDiffToSnapshot,\n} from '../../../store/selectors/accounts/account-usage';\nimport {\n AccountUsageTreeDiffAction,\n AccountUsageTreeDiffData,\n} from '../../reducers/accounts/usage/accounts-usage-tree-diff';\nimport {AccountUsageData} from '../../reducers/accounts/usage/account-usage-types';\n\ntype UsageListThunkAction = ThunkAction<any, RootState, any, AccountUsageListDiffAction>;\n\nfunction getFilterFromToTimestamps(state: RootState) {\n const from = getAccountsUsageDiffFromSnapshot(state);\n const to = getAccountsUsageDiffToSnapshot(state);\n if ((!from && !to) || from === to) {\n return null;\n }\n\n return {\n older: {timestamp: from || Date.now() / 1000},\n newer: {timestamp: to || Date.now() / 1000},\n };\n}\n\nexport function fetchAccountUsageListDiff(): UsageListThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamps = getFilterFromToTimestamps(state);\n\n if (!timestamps) {\n return;\n }\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageListDiffDataParams = {\n ...params,\n timestamps,\n };\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_DIFF_REQUEST,\n data: {requestParams},\n });\n\n return axios\n .request<AccountsUsageDiffDataResponse>({\n method: 'POST',\n url: accountUsageApiUrl('get-resource-usage-diff'),\n data: requestParams,\n withCredentials: true,\n })\n .then((response) => {\n const params = getAccountUsageListDiffRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_DIFF_SUCCESS,\n data: {response: response.data},\n });\n })\n .catch((error: any) => {\n const params = getAccountUsageListDiffRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_DIFF_FAILED,\n data: {error: error?.response?.data || error},\n });\n });\n };\n}\n\ntype UsageTreeThunkAction = ThunkAction<any, RootState, any, AccountUsageTreeDiffAction>;\n\nexport function fetchAccountUsageTreeDiff(): UsageTreeThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamps = getFilterFromToTimestamps(state);\n\n if (!timestamps) {\n return;\n }\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageTreeDiffData['requestParams'] = {\n ...params,\n timestamps,\n row_filter: {\n ...params.row_filter,\n base_path: getAccountUsageTreePath(state),\n },\n };\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_DIFF_REQUEST,\n data: {requestParams},\n });\n\n return axios\n .request<AccountUsageData>({\n method: 'POST',\n url: accountUsageApiUrl('get-children-and-resource-usage-diff'),\n data: requestParams,\n withCredentials: true,\n })\n .then((response) => {\n const params = getAccountUsageTreeDiffRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_DIFF_SUCCESS,\n data: {\n response: response.data,\n base_path: requestParams.row_filter.base_path,\n },\n });\n })\n .catch((error: any) => {\n const params = getAccountUsageTreeDiffRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_DIFF_FAILED,\n data: {error: error?.response?.data || error},\n });\n });\n };\n}\n","import isEmpty_ from 'lodash/isEmpty';\nimport isEqual_ from 'lodash/isEqual';\nimport reduce_ from 'lodash/reduce';\n\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../store/reducers';\nimport {AccountsSnapshotsAction} from '../../reducers/accounts/usage/accounts-usage-snapshots';\nimport {\n ACCOUNTS_USAGE_FILTERS_PARTIAL,\n ACCOUNTS_USAGE_LIST_FAILED,\n ACCOUNTS_USAGE_LIST_REQUEST,\n ACCOUNTS_USAGE_LIST_SUCCESS,\n ACCOUNTS_USAGE_SNAPSHOTS_FAILED,\n ACCOUNTS_USAGE_SNAPSHOTS_REQUEST,\n ACCOUNTS_USAGE_SNAPSHOTS_SUCCESS,\n ACCOUNTS_USAGE_TREE_FAILED,\n ACCOUNTS_USAGE_TREE_REQUEST,\n ACCOUNTS_USAGE_TREE_SUCCESS,\n} from '../../../constants/accounts/accounts';\nimport axios from 'axios';\nimport {getCluster} from '../../selectors/global';\nimport {\n AccountUsageListAction,\n AccountUsageListDataParams,\n AccountsUsageDataResponse,\n} from '../../reducers/accounts/usage/accounts-usage-list';\nimport {\n getAccountUsageCurrentSnapshot,\n getAccountUsageDateRangeFilter,\n getAccountUsageFieldFiltersRequestParameter,\n getAccountUsageListRequestParams,\n getAccountUsageOwnerFilter,\n getAccountUsagePageIndex,\n getAccountUsagePathFilter,\n getAccountUsageSortState,\n getAccountUsageTreePath,\n getAccountUsageTreeRequestParams,\n getAccountUsageViewType,\n} from '../../selectors/accounts/account-usage';\nimport {getActiveAccount} from '../../../store/selectors/accounts/accounts-ts';\nimport {getSettingsAccountUsageViewType} from '../../selectors/settings-ts';\nimport {SortState} from '../../../types';\nimport {\n AccountUsageFiltersState,\n AccountUsageViewType,\n AccountsUsageFiltersAction,\n PAGE_SIZE,\n} from '../../reducers/accounts/usage/accounts-usage-filters';\nimport {\n AccountUsageTreeAction,\n AccountUsageTreeData,\n} from '../../reducers/accounts/usage/accounts-usage-tree';\nimport {\n setSettingsAccountUsageColumnsList,\n setSettingsAccountUsageColumnsListFolders,\n setSettingsAccountUsageColumnsTree,\n setSettingsAccountUsageViewType,\n} from '../settings/settings';\nimport {AccountUsageDataParams} from '../../reducers/accounts/usage/account-usage-types';\nimport {fetchAccountUsageListDiff, fetchAccountUsageTreeDiff} from './account-usage-diff';\nimport {getAccountsUsageBasePath} from '../../../config';\nimport {updateSortStateArray} from '../../../utils/sort-helpers';\nimport {Action} from 'redux';\nimport {openModal} from '../modals/attributes-modal';\n\ntype SnapshotsThunkAction = ThunkAction<any, RootState, any, AccountsSnapshotsAction>;\n\nexport function accountUsageApiUrl(handle: string) {\n return getAccountsUsageBasePath() + handle;\n}\n\nexport function syncAccountsUsageViewTypeWithSettings(): FiltersThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const viewType = getAccountUsageViewType(state);\n if (!viewType) {\n const lastViewType = getSettingsAccountUsageViewType(state);\n dispatch(setAccountUsageFilters({viewType: lastViewType}));\n } else {\n dispatch(setSettingsAccountUsageViewType(viewType));\n }\n };\n}\n\nexport function fetchAccountsUsageSnapshots(cluster: string): SnapshotsThunkAction {\n return (dispatch) => {\n dispatch({type: ACCOUNTS_USAGE_SNAPSHOTS_REQUEST});\n\n return axios\n .request<{\n snapshot_timestamps: Array<number>;\n }>({\n method: 'POST',\n url: accountUsageApiUrl('list-timestamps'),\n data: {cluster},\n withCredentials: true,\n })\n .then((data) => {\n dispatch({\n type: ACCOUNTS_USAGE_SNAPSHOTS_SUCCESS,\n data: {...data.data, cluster},\n });\n })\n .catch((error: any) => {\n dispatch({\n type: ACCOUNTS_USAGE_SNAPSHOTS_FAILED,\n data: {error: error?.response?.data || error, cluster},\n });\n });\n };\n}\ntype UsageListThunkAction = ThunkAction<any, RootState, any, AccountUsageListAction>;\n\nexport function getFilterParameters(state: RootState): AccountUsageDataParams {\n const account = getActiveAccount(state);\n const cluster = getCluster(state);\n const sortStates = getAccountUsageSortState(state);\n const path_regexp = getAccountUsagePathFilter(state);\n const owner = getAccountUsageOwnerFilter(state);\n\n const field_filters = getAccountUsageFieldFiltersRequestParameter(state);\n const viewType = getAccountUsageViewType(state);\n\n const row_filter: AccountUsageListDataParams['row_filter'] = Object.assign(\n {\n exclude_map_nodes: viewType === 'list' || viewType === 'list-diff',\n },\n owner ? {owner} : undefined,\n path_regexp ? {path_regexp} : undefined,\n field_filters?.length ? {field_filters} : undefined,\n );\n\n return {\n account,\n cluster,\n sort_order: reduce_(\n sortStates,\n (acc, {column, order}) => {\n if (column && order) {\n acc.push({field: column, desc: order === 'desc'});\n }\n return acc;\n },\n [] as Required<AccountUsageListDataParams>['sort_order'],\n ),\n row_filter,\n page: {\n index: getAccountUsagePageIndex(state),\n size: PAGE_SIZE,\n },\n };\n}\n\nexport function fetchAccountUsageList(): UsageListThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamp = getAccountUsageCurrentSnapshot(state);\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageListDataParams = {\n ...params,\n timestamp: timestamp || Date.now() / 1000,\n };\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_REQUEST,\n data: {requestParams},\n });\n\n return axios\n .request<AccountsUsageDataResponse>({\n method: 'POST',\n url: accountUsageApiUrl('get-resource-usage'),\n data: requestParams,\n withCredentials: true,\n })\n .then((response) => {\n const params = getAccountUsageListRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_SUCCESS,\n data: {response: response.data},\n });\n })\n .catch((error: any) => {\n const params = getAccountUsageListRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_FAILED,\n data: {error: error?.response?.data || error},\n });\n });\n };\n}\n\ntype UsageTreeThunkAction = ThunkAction<any, RootState, any, AccountUsageTreeAction>;\n\nexport function fetchAccountUsageTree(): UsageTreeThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamp = getAccountUsageCurrentSnapshot(state);\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageTreeData['requestParams'] = {\n ...params,\n timestamp: timestamp || Date.now() / 1000,\n row_filter: {\n ...params.row_filter,\n base_path: getAccountUsageTreePath(state),\n },\n };\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_REQUEST,\n data: {requestParams},\n });\n\n return axios\n .request<AccountsUsageDataResponse>({\n method: 'POST',\n url: accountUsageApiUrl('get-children-and-resource-usage'),\n data: requestParams,\n withCredentials: true,\n })\n .then((response) => {\n const params = getAccountUsageTreeRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_SUCCESS,\n data: {\n response: response.data,\n base_path: requestParams.row_filter.base_path,\n },\n });\n })\n .catch((error: any) => {\n const params = getAccountUsageTreeRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_FAILED,\n data: {error: error?.response?.data || error},\n });\n });\n };\n}\n\ntype FiltersThunkAction = ThunkAction<\n any,\n RootState,\n any,\n AccountUsageTreeAction | AccountUsageListAction | AccountsUsageFiltersAction\n>;\n\nexport function fetchAccountUsage(): FiltersThunkAction {\n return (dispatch, getState) => {\n const viewType = getAccountUsageViewType(getState());\n switch (viewType) {\n case 'tree':\n return dispatch(fetchAccountUsageTree());\n case 'list':\n case 'list-plus-folders':\n return dispatch(fetchAccountUsageList());\n case 'list-diff':\n case 'list-plus-folders-diff':\n return dispatch(fetchAccountUsageListDiff());\n case 'tree-diff':\n return dispatch(fetchAccountUsageTreeDiff());\n }\n };\n}\n\nexport function setAccountUsageSortState(item: SortState, multisort?: boolean): FiltersThunkAction {\n return (dispatch, getState) => {\n const prevSortState = getAccountUsageSortState(getState());\n const sortState = updateSortStateArray(prevSortState, item, {multisort});\n\n dispatch({\n type: ACCOUNTS_USAGE_FILTERS_PARTIAL,\n data: {sortState, pageIndex: 0},\n });\n dispatch(fetchAccountUsage());\n };\n}\n\nexport function setAccountUsageCurrentSnapshot(currentSnapshot: number): FiltersThunkAction {\n return (dispatch) => {\n dispatch({\n type: ACCOUNTS_USAGE_FILTERS_PARTIAL,\n data: {currentSnapshot},\n });\n };\n}\nexport function setAccountUsageDataFilter(\n data: Omit<Partial<AccountUsageFiltersState>, 'columnPreset' | 'viewType' | 'pageIndex'>,\n): FiltersThunkAction {\n return (dispatch, getState) => {\n dispatch({\n type: ACCOUNTS_USAGE_FILTERS_PARTIAL,\n data: {pageIndex: 0, ...data},\n });\n\n const {dateRangeType, ...rest} = data;\n if (isEmpty_(rest) && dateRangeType) {\n const {from, to} = getAccountUsageDateRangeFilter(getState());\n if (!from && !to) {\n return;\n }\n }\n dispatch(fetchAccountUsage());\n };\n}\n\nexport function setAccountUsageDataPageIndex(pageIndex: number): FiltersThunkAction {\n return (dispatch) => {\n dispatch({type: ACCOUNTS_USAGE_FILTERS_PARTIAL, data: {pageIndex}});\n dispatch(fetchAccountUsage());\n };\n}\n\nexport function setAccountUsageFilters(\n data: Pick<Partial<AccountUsageFiltersState>, 'visibleColumns' | 'viewType'>,\n): FiltersThunkAction {\n return (dispatch) => {\n dispatch({type: ACCOUNTS_USAGE_FILTERS_PARTIAL, data});\n };\n}\n\nexport function setAccountUsageViewType(viewType: AccountUsageViewType): FiltersThunkAction {\n return (dispatch) => {\n dispatch({\n type: ACCOUNTS_USAGE_FILTERS_PARTIAL,\n data: {pageIndex: 0, viewType},\n });\n dispatch(setSettingsAccountUsageViewType(viewType));\n };\n}\n\nexport function setAccountUsageColumns(columns: Array<string>): FiltersThunkAction {\n return (dispatch, getState) => {\n const viewType = getAccountUsageViewType(getState());\n switch (viewType) {\n case 'list':\n case 'list-diff':\n dispatch(setSettingsAccountUsageColumnsList(columns));\n break;\n case 'list-plus-folders':\n case 'list-plus-folders-diff':\n dispatch(setSettingsAccountUsageColumnsListFolders(columns));\n break;\n default:\n dispatch(setSettingsAccountUsageColumnsTree(columns));\n }\n };\n}\n\nexport const openAccountAttributesModal =\n ({\n cluster,\n account,\n path,\n }: {\n cluster: string;\n account: string;\n path: string;\n }): ThunkAction<void, RootState, null, Action> =>\n (dispatch) =>\n dispatch(\n openModal({\n title: path,\n promise: axios\n .request({\n method: 'POST',\n url: accountUsageApiUrl('get-versioned-resource-usage'),\n data: {\n cluster,\n account,\n path,\n timestamp_rounding_policy: 'closest',\n },\n withCredentials: true,\n })\n .then((data) => data.data),\n }),\n );\n","import React from 'react';\n\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\n\nimport Button from '../../../../components/Button/Button';\nimport {\n getAccountUsageSelectableColumns,\n getAccountUsageVisibleDataColumns,\n readableAccountUsageColumnName,\n} from '../../../../store/selectors/accounts/account-usage';\nimport {useDispatch, useSelector} from 'react-redux';\nimport ColumnSelectorModal from '../../../../components/ColumnSelectorModal/ColumnSelectorModal';\nimport {setAccountUsageColumns} from '../../../../store/actions/accounts/account-usage';\nimport {Secondary} from '../../../../components/Text/Text';\n\nconst AccountUsageColumnsDialogMemo = React.memo(AccountUsageColumnsDialog);\n\nexport default React.memo(AccountUsageColumnsButton);\n\nfunction AccountUsageColumnsButton() {\n const [visible, setVisible] = React.useState(false);\n const toggleVisibility = React.useCallback(() => {\n setVisible(!visible);\n }, [visible, setVisible]);\n\n const handleClose = React.useCallback(() => {\n setVisible(false);\n }, [setVisible]);\n\n return (\n <React.Fragment>\n <Button onClick={toggleVisibility}>Columns</Button>\n <AccountUsageColumnsDialogMemo visible={visible} onClose={handleClose} />\n </React.Fragment>\n );\n}\n\ninterface DialogProps {\n visible: boolean;\n onClose: () => void;\n}\n\nfunction AccountUsageColumnsDialog({visible, onClose}: DialogProps) {\n const dispatch = useDispatch();\n const visibleColumns = useSelector(getAccountUsageVisibleDataColumns);\n const availableColumns = useSelector(getAccountUsageSelectableColumns);\n\n const handleChange = React.useCallback((newValue: typeof value) => {\n const checked = filter_(newValue, 'checked');\n dispatch(setAccountUsageColumns(map_(checked, ({data: {caption}}) => caption)));\n onClose();\n }, []);\n\n const value = React.useMemo(() => {\n const available = new Set(availableColumns);\n const selected = visibleColumns.filter((item) => available.has(item as any));\n\n const selectedSet = new Set(selected);\n const other = availableColumns.filter((item) => !selectedSet.has(item));\n\n return map_(selected.concat(other), (item) => {\n return {\n name: readableAccountUsageColumnName(item, true),\n checked: selectedSet.has(item),\n data: {\n caption: item,\n isMedium: item.startsWith('medium:'),\n },\n };\n });\n }, [availableColumns, visibleColumns]);\n\n return !visible ? null : (\n <ColumnSelectorModal\n isVisible={true}\n onCancel={onClose}\n onConfirm={handleChange}\n items={value}\n itemRenderer={(item) => {\n const {\n name,\n data: {isMedium, caption},\n } = item;\n return !isMedium ? (\n name\n ) : (\n <span>\n <Secondary>Medium: </Secondary>\n {readableAccountUsageColumnName(caption)}\n </span>\n );\n }}\n />\n );\n}\n","import React from 'react';\n\nimport unipika from '../../common/thor/unipika';\nimport ypath from '../../common/thor/ypath';\n\nfunction PathPart({name}: {name?: string}) {\n if (!name) {\n return null;\n }\n\n if (name === '/') {\n return <span>/</span>;\n }\n\n const fragment = ypath.YPath.fragmentToYSON(name);\n try {\n const __html = unipika.decode(fragment);\n return <span dangerouslySetInnerHTML={{__html}} />;\n } catch {\n return <span>{fragment}</span>;\n }\n}\n\nexport const PathFragment = React.memo(PathPart);\n\nfunction PathView({path, lastFragmentOnly}: {path?: string; lastFragmentOnly?: boolean}) {\n const items = React.useMemo(() => {\n if (!path) {\n return [];\n }\n\n const {fragments} = new ypath.YPath(path, 'absolute');\n return !lastFragmentOnly ? fragments : fragments.slice(-1);\n }, [path, lastFragmentOnly]);\n\n const res: Array<React.ReactNode> = [];\n for (let i = 0; i < items.length; ++i) {\n const {name} = items[i];\n res.push(<PathFragment key={i} name={name} />);\n if (i < items.length - 1) {\n res.push(<span key={'slash_' + i}>/</span>);\n }\n }\n return <>{res}</>;\n}\n\nexport default PathView;\n","import React from 'react';\n\nimport map_ from 'lodash/map';\nimport reverse_ from 'lodash/reverse';\n\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Breadcrumbs} from '@gravity-ui/uikit';\n\nimport format from '../../../../common/hammer/format';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n fetchAccountUsage,\n fetchAccountsUsageSnapshots,\n setAccountUsageDataFilter,\n setAccountUsageDataPageIndex,\n setAccountUsageViewType,\n} from '../../../../store/actions/accounts/account-usage';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport Select from '../../../../components/Select/Select';\nimport {\n getAccountUsageCurrentSnapshot,\n getAccountUsageDateRangeFilter,\n getAccountUsageDateRangeTypeFilter,\n getAccountUsageOwnerFilter,\n getAccountUsagePageCount,\n getAccountUsagePageIndex,\n getAccountUsagePathFilter,\n getAccountUsageSnapshots,\n getAccountUsageTreeItemsBasePathSplitted,\n getAccountUsageViewType,\n getAccountsUsageDiffFromSnapshot,\n getAccountsUsageDiffToSnapshot,\n isAccountsUsageDiffView,\n} from '../../../../store/selectors/accounts/account-usage';\nimport TextInputWithDebounce from '../../../../components/TextInputWithDebounce/TextInputWithDebounce';\nimport {Secondary, SecondaryBold} from '../../../../components/Text/Text';\nimport SimplePagination from '../../../../components/Pagination/SimplePagination';\nimport Link from '../../../../components/Link/Link';\nimport Icon from '../../../../components/Icon/Icon';\nimport AccountUsageColumnsButton from './AccountUsageColumnsButton';\nimport {SubjectCard} from '../../../../components/SubjectLink/SubjectLink';\nimport Suggest, {SuggestItem} from '../../../../components/Suggest/Suggest';\nimport {Datepicker, DatepickerOutputDates} from '../../../../components/common/Datepicker';\nimport {PathFragment} from '../../../../containers/PathFragment/PathFragment';\nimport {useAllUserNamesFiltered} from '../../../../hooks/global';\nimport {useUpdater} from '../../../../hooks/use-updater';\n\nimport './AccountUsageToolbar.scss';\n\nconst block = cn('account-usage-toolbar');\n\nfunction useFetchSnapshots() {\n const dispatch = useDispatch();\n const cluster = useSelector(getCluster);\n\n const updateFn = React.useCallback(() => {\n dispatch(fetchAccountsUsageSnapshots(cluster));\n }, [dispatch, cluster]);\n\n useUpdater(updateFn, {timeout: 5 * 60000});\n}\n\nconst SnapshotFilterMemo = React.memo(SnapshotFilter);\nconst PathFilterMemo = React.memo(PathFilter);\nconst OwnerFilterMemo = React.memo(OwnerFilter);\nconst DateRangeFilterMemo = React.memo(DateRangeFilter);\nconst DateRangeTypeFilterMemo = React.memo(DateRangeTypeFilter);\nconst PaginationFilterMemo = React.memo(PaginationFilter);\nconst ViewTypeMemo = React.memo(ViewType);\nconst UsageBreadcrumbsMemo = React.memo(UsageBreadcrumbs);\nconst SnapshotDiffFilterMemo = React.memo(SnapshotDiffFilter);\n\nfunction AccountUsageToolbar() {\n const viewType = useSelector(getAccountUsageViewType);\n const isDiffView = useSelector(isAccountsUsageDiffView);\n\n return (\n <div>\n <Toolbar\n className={block()}\n itemsToWrap={[\n {\n name: 'page',\n node: <PaginationFilterMemo />,\n },\n {\n name: 'pathFilter',\n wrapperClassName: block('item'),\n node: <PathFilterMemo />,\n shrinkable: true,\n },\n {\n name: 'ownerFilter',\n wrapperClassName: block('item'),\n node: <OwnerFilterMemo />,\n shrinkable: true,\n },\n {\n name: 'dateRangeFilter',\n wrapperClassName: block('item'),\n node: <DateRangeFilterMemo />,\n },\n {\n name: 'columns',\n node: <AccountUsageColumnsButton />,\n },\n {\n name: 'viewType',\n node: <ViewTypeMemo />,\n },\n isDiffView\n ? {\n name: 'snapshots',\n wrapperClassName: block('item'),\n growable: true,\n node: <SnapshotDiffFilterMemo />,\n }\n : {\n name: 'snapshotsDiff',\n wrapperClassName: block('item'),\n growable: true,\n node: <SnapshotFilterMemo />,\n },\n ]}\n >\n {(viewType === 'tree' || viewType === 'tree-diff') && (\n <Toolbar\n itemsToWrap={[\n {\n node: <UsageBreadcrumbsMemo />,\n },\n ]}\n />\n )}\n </Toolbar>\n </div>\n );\n}\n\nconst UNDEFINED_SNAPSHOT = '_';\n\nfunction string2snapshot(v: string) {\n return v === UNDEFINED_SNAPSHOT ? undefined : Number(v);\n}\n\nfunction snapshot2string(v?: number) {\n return v === undefined ? UNDEFINED_SNAPSHOT : String(v);\n}\n\nfunction useSnapshotItems() {\n const snapshots = useSelector(getAccountUsageSnapshots);\n\n const items = React.useMemo(() => {\n const res = map_(reverse_(snapshots.slice()), (item) => {\n return {\n value: snapshot2string(item),\n text: moment(new Date(item * 1000)).format('YYYY-MM-DD HH:mm'),\n };\n });\n res.splice(0, 0, {value: UNDEFINED_SNAPSHOT, text: 'Latest'});\n return res;\n }, [snapshots]);\n\n return items;\n}\n\nfunction FromSnapshot() {\n const dispatch = useDispatch();\n const items = useSnapshotItems();\n const value = useSelector(getAccountsUsageDiffFromSnapshot);\n\n const handleChange = React.useCallback(\n (value: string) => {\n dispatch(\n setAccountUsageDataFilter({\n diffFromSnapshot: string2snapshot(value),\n }),\n );\n },\n [dispatch],\n );\n\n return (\n <Select\n placeholder={'Snapthot...'}\n items={items}\n value={[snapshot2string(value)]}\n onUpdate={(vals) => handleChange(vals[0])}\n width={150}\n />\n );\n}\n\nfunction ToSnapshot() {\n const dispatch = useDispatch();\n const items = useSnapshotItems();\n const value = useSelector(getAccountsUsageDiffToSnapshot);\n\n const handleChange = React.useCallback(\n (value: string) => {\n dispatch(\n setAccountUsageDataFilter({\n diffToSnapshot: string2snapshot(value),\n }),\n );\n },\n [dispatch],\n );\n\n return (\n <Select\n placeholder={'Snapthot...'}\n items={items}\n value={[snapshot2string(value)]}\n onUpdate={(vals) => handleChange(vals[0])}\n width={150}\n />\n );\n}\n\nfunction SnapshotDiffFilter() {\n useFetchSnapshots();\n\n return (\n <span className={block('snapshots')}>\n <span className={block('spacer')} />\n <span className={block('snapshot-label')}>From</span>\n <FromSnapshot />\n <span className={block('snapshot-label')}>To</span>\n <ToSnapshot />\n </span>\n );\n}\n\nfunction SnapshotFilter() {\n const dispatch = useDispatch();\n useFetchSnapshots();\n\n const currentSnapshot = useSelector(getAccountUsageCurrentSnapshot);\n const items = useSnapshotItems();\n\n const handleSnapshotChange = React.useCallback(\n (value: string) => {\n dispatch(\n setAccountUsageDataFilter({\n currentSnapshot: string2snapshot(value),\n }),\n );\n },\n [dispatch],\n );\n\n return (\n <span className={block('snapshots')}>\n <span className={block('spacer')} />\n <SecondaryBold>Snapshot </SecondaryBold>\n <Select\n placeholder={'Snapshot...'}\n value={[snapshot2string(currentSnapshot)]}\n items={items}\n onUpdate={(vals) => handleSnapshotChange(vals[0])}\n width={150}\n />\n </span>\n );\n}\n\nfunction PathFilter() {\n const dispatch = useDispatch();\n\n const filter = useSelector(getAccountUsagePathFilter);\n\n const handleChange = React.useCallback(\n (pathFilter: string) => {\n dispatch(setAccountUsageDataFilter({pathFilter}));\n },\n [dispatch],\n );\n\n return (\n <TextInputWithDebounce\n debounce={500}\n value={filter}\n placeholder={'Path regexp...'}\n onUpdate={handleChange}\n />\n );\n}\n\nfunction OwnerFilter() {\n const dispatch = useDispatch();\n\n const filter = useSelector(getAccountUsageOwnerFilter);\n\n const handleChange = React.useCallback(\n (item: SuggestItem) => {\n const ownerFilter = 'string' === typeof item ? item : item.value;\n dispatch(setAccountUsageDataFilter({ownerFilter}));\n },\n [dispatch],\n );\n\n const {getFiltered, allNames} = useAllUserNamesFiltered();\n\n return (\n <Suggest\n text={filter}\n items={allNames}\n filter={(_items, filter = '') => getFiltered(filter)}\n apply={handleChange}\n placeholder={'Owner...'}\n renderItem={(item) => (\n <span className={block('owner-item')}>\n <SubjectCard name={'string' === typeof item ? item : item.value} noLink />\n </span>\n )}\n popupClassName={block('owner-popup')}\n />\n );\n}\n\nfunction DateRangeFilter() {\n const dispatch = useDispatch();\n\n const {from, to} = useSelector(getAccountUsageDateRangeFilter);\n const type = useSelector(getAccountUsageDateRangeTypeFilter);\n\n const handleChange = React.useCallback(\n (dateRange: DatepickerOutputDates) => {\n dispatch(setAccountUsageDataFilter({dateRange}));\n },\n [dispatch],\n );\n\n return (\n <span className={block('date-range')}>\n <Datepicker\n from={from}\n to={to}\n min={0}\n max={Date.now() + 3600 * 24 * 1000}\n range={true}\n allowNullableValues={true}\n onUpdate={handleChange}\n className={block('date-range-control')}\n onError={() => {}}\n placeholder={format.Readable(type) + ' range...'}\n pin=\"round-brick\"\n />\n <DateRangeTypeFilterMemo />\n </span>\n );\n}\n\nfunction DateRangeTypeFilter() {\n const dispatch = useDispatch();\n\n const value = useSelector(getAccountUsageDateRangeTypeFilter);\n const handleChange = React.useCallback(\n (dateRangeType: any) => {\n dispatch(setAccountUsageDataFilter({dateRangeType}));\n },\n [dispatch],\n );\n\n return (\n <Select\n pin=\"clear-round\"\n value={[value]}\n onUpdate={(vals) => handleChange(vals[0])}\n items={[\n {value: 'creation_time', text: 'Creation'},\n {value: 'modification_time', text: 'Modification'},\n ]}\n width={135}\n />\n );\n}\n\nfunction PaginationFilter() {\n const dispatch = useDispatch();\n\n const value = useSelector(getAccountUsagePageIndex);\n const pageCount = useSelector(getAccountUsagePageCount);\n\n const handleChange = React.useCallback(\n (pageIndex: number) => {\n dispatch(setAccountUsageDataPageIndex(pageIndex));\n },\n [dispatch],\n );\n\n return (\n <SimplePagination\n value={value}\n min={0}\n max={Math.max(0, pageCount - 1)}\n onChange={handleChange}\n />\n );\n}\n\nconst VIEW_TYPE_ITEMS = [\n {\n value: 'tree' as const,\n text: 'Tree',\n icon: <Icon awesome={'folder-tree'} face={'solid'} />,\n },\n {\n value: 'list' as const,\n text: 'List',\n icon: <Icon awesome={'list'} />,\n },\n {\n value: 'list-plus-folders' as const,\n text: 'List + folders',\n icon: <Icon awesome={'folders'} />,\n },\n {\n value: 'tree-diff' as const,\n text: 'Diff: Tree',\n content: <DiffTitle title={'Tree'} />,\n icon: <Icon awesome={'folder-tree'} face={'solid'} />,\n },\n {\n value: 'list-diff' as const,\n text: 'Diff: List',\n content: <DiffTitle title={'List'} />,\n icon: <Icon awesome={'list'} />,\n },\n {\n value: 'list-plus-folders-diff' as const,\n text: 'Diff: List + folders',\n content: <DiffTitle title={'List + folders'} />,\n icon: <Icon awesome={'folders'} />,\n },\n];\n\nfunction DiffTitle({title}: {title: string}) {\n return (\n <React.Fragment>\n <Secondary>Diff: </Secondary>\n {title}\n </React.Fragment>\n );\n}\n\nfunction ViewType() {\n const dispatch = useDispatch();\n\n const value = useSelector(getAccountUsageViewType);\n const handleChange = React.useCallback(\n (value: string) => {\n dispatch(setAccountUsageViewType(value as any));\n },\n [dispatch],\n );\n\n return (\n <Select\n value={value ? [value] : []}\n items={VIEW_TYPE_ITEMS}\n onUpdate={(vals) => handleChange(vals[0])}\n width=\"max\"\n />\n );\n}\n\nexport function UsageBreadcrumbs() {\n const dispatch = useDispatch();\n const pathArr = useSelector(getAccountUsageTreeItemsBasePathSplitted);\n\n const items = React.useMemo(() => {\n return map_(pathArr, (item) => {\n return {\n text: item.item,\n value: item.value,\n action: () => {\n dispatch(fetchAccountUsage());\n },\n };\n });\n }, [pathArr, dispatch]);\n\n return (\n <Breadcrumbs\n items={items}\n firstDisplayedItemsCount={1}\n lastDisplayedItemsCount={1}\n renderRootContent={() => {\n return (\n <Link\n theme={'primary'}\n url={`${window.location.pathname}?path=/`}\n routed={true}\n routedPreserveLocation={true}\n >\n <Secondary>\n <Icon awesome={'folder-tree'} />\n </Secondary>\n </Link>\n );\n }}\n renderItemContent={(item) => {\n return (\n <Link\n theme={'primary'}\n url={`${window.location.pathname}?path=${(item as any).value}`}\n routed={true}\n routedPreserveLocation={true}\n >\n <PathFragment name={item.text} />\n </Link>\n );\n }}\n />\n );\n}\n\nexport default React.memo(AccountUsageToolbar);\n","import React, {FC, useCallback, useMemo} from 'react';\nimport Icon from '../../../../components/Icon/Icon';\nimport {Flex, Text} from '@gravity-ui/uikit';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport Link from '../../../../components/Link/Link';\nimport {makeRoutedURL} from '../../../../store/location';\nimport {Page} from '../../../../../shared/constants/settings';\nimport AttributesButton from '../../../../components/AttributesButton/AttributesButton';\n\nexport type AccountRequestData = {title: string; path: string; cluster: string; account: string};\n\ntype Props = {\n cluster: string;\n path: string;\n account: string;\n onAttributeButtonClick: (accountData: AccountRequestData) => void;\n};\n\nexport const AccountActionsField: FC<Props> = ({\n path,\n account,\n cluster,\n onAttributeButtonClick,\n}) => {\n const handleOpenAttributeModal = useCallback(() => {\n onAttributeButtonClick({path, account, cluster, title: path});\n }, [onAttributeButtonClick, path, account, cluster]);\n\n const navigationUrl = useMemo(() => {\n return makeRoutedURL(`/${cluster}/${Page.NAVIGATION}`, {path});\n }, [cluster, path]);\n\n if (!path) return undefined;\n\n return (\n <Flex gap={1} alignItems=\"center\">\n <AttributesButton\n view=\"flat\"\n withTooltip\n tooltipProps={{placement: 'bottom-end', content: 'Show attributes'}}\n onClick={handleOpenAttributeModal}\n size=\"xs\"\n />\n <Link theme={'secondary'} url={navigationUrl} routed routedPreserveLocation>\n <Tooltip\n content={<Text whiteSpace=\"nowrap\">Open original path in Navigation</Text>}\n placement={'left'}\n >\n <Icon awesome={'folder-tree'} />\n </Tooltip>\n </Link>\n </Flex>\n );\n};\n","import React, {FC} from 'react';\nimport {Flex, Icon, Tooltip} from '@gravity-ui/uikit';\nimport {AccountUsageViewType} from '../../../../store/reducers/accounts/usage/accounts-usage-filters';\nimport cn from 'bem-cn-lite';\nimport format from '../../../../common/hammer/format';\nimport CircleInfoIcon from '@gravity-ui/icons/svgs/circle-info.svg';\nimport './DetailTableCell.scss';\n\nconst block = cn('detail-table-cell');\n\nconst getRenderSign = (value: number) => (!value || value < 0 ? '' : '+');\nconst getDiffClass = (showDiff: boolean, sign: number) => {\n if (!showDiff || !sign) return undefined;\n return sign > 0 ? 'plus' : 'minus';\n};\n\ntype Props = {\n value: number | null;\n additionalValue: number | null;\n viewType?: AccountUsageViewType;\n formatType: 'bytes' | 'number';\n};\n\nexport const DetailTableCell: FC<Props> = ({value, additionalValue, viewType, formatType}) => {\n const totalValue = additionalValue ? Number(value) + additionalValue : Number(value);\n const showDiff = viewType?.endsWith('-diff');\n const sign = Math.sign(totalValue);\n\n const formatFn = formatType === 'bytes' ? format.Bytes : format.Number;\n\n return (\n <Flex justifyContent=\"center\" alignItems=\"center\" gap={1} className={block()}>\n <span className={block('value', {diff: getDiffClass(Boolean(showDiff), sign)})}>\n {showDiff && getRenderSign(sign)}\n {formatFn(totalValue)}\n </span>\n {Boolean(additionalValue) && (\n <Tooltip\n content={`${formatFn(value)} + ${formatFn(additionalValue)} (versioned)`}\n placement=\"top\"\n >\n <div tabIndex={0} className={block('alert-icon')}>\n <Icon data={CircleInfoIcon} size={14} />\n </div>\n </Tooltip>\n )}\n </Flex>\n );\n};\n","import React, {useCallback} from 'react';\n\nimport capitalize_ from 'lodash/capitalize';\nimport forEach_ from 'lodash/forEach';\n\nimport cn from 'bem-cn-lite';\n\nimport format from '../../../../common/hammer/format';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {\n fetchAccountUsageList,\n fetchAccountUsageTree,\n openAccountAttributesModal,\n setAccountUsageDataFilter,\n setAccountUsageSortState,\n syncAccountsUsageViewTypeWithSettings,\n} from '../../../../store/actions/accounts/account-usage';\nimport DataTableYT from '../../../../components/DataTableYT/DataTableYT';\nimport {\n getAccountUsageAvailableColumns,\n getAccountUsageCurrentSnapshot,\n getAccountUsageListDiffError,\n getAccountUsageListDiffItems,\n getAccountUsageListDiffLoaded,\n getAccountUsageListDiffLoading,\n getAccountUsageListDiffMediums,\n getAccountUsageListError,\n getAccountUsageListItems,\n getAccountUsageListLoaded,\n getAccountUsageListLoading,\n getAccountUsageListMediums,\n getAccountUsagePageCount,\n getAccountUsagePageIndex,\n getAccountUsageSortStateByColumn,\n getAccountUsageTreeDiffError,\n getAccountUsageTreeDiffItems,\n getAccountUsageTreeDiffLoaded,\n getAccountUsageTreeDiffLoading,\n getAccountUsageTreeDiffMediums,\n getAccountUsageTreeError,\n getAccountUsageTreeItems,\n getAccountUsageTreeItemsBasePath,\n getAccountUsageTreeLoaded,\n getAccountUsageTreeLoading,\n getAccountUsageTreeMediums,\n getAccountUsageViewType,\n getAccountUsageVisibleDataColumns,\n getAccountsUsageDiffFromSnapshot,\n getAccountsUsageDiffToSnapshot,\n isAccountsUsageDiffView,\n readableAccountUsageColumnName,\n} from '../../../../store/selectors/accounts/account-usage';\nimport DataTable, {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport ErrorBlock from '../../../../components/Error/Error';\nimport {\n STICKY_DOUBLE_TOOLBAR_BOTTOM,\n STICKY_TOOLBAR_BOTTOM,\n} from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport ColumnHeader from '../../../../components/ColumnHeader/ColumnHeader';\nimport Icon from '../../../../components/Icon/Icon';\nimport {getCluster} from '../../../../store/selectors/global';\nimport Loader from '../../../../components/Loader/Loader';\n\nimport {SubjectCard} from '../../../../components/SubjectLink/SubjectLink';\nimport {Secondary, Warning} from '../../../../components/Text/Text';\nimport PathView from '../../../../containers/PathFragment/PathFragment';\nimport {getIconNameForType} from '../../../../utils/navigation/path-editor';\nimport {OrderType} from '../../../../utils/sort-helpers';\nimport {NoContent} from '../../../../components/NoContent/NoContent';\nimport {\n AccountUsageDataItem,\n MediumKeyTemplate,\n VersionedKeyTemplate,\n} from '../../../../store/reducers/accounts/usage/account-usage-types';\nimport {\n fetchAccountUsageListDiff,\n fetchAccountUsageTreeDiff,\n} from '../../../../store/actions/accounts/account-usage-diff';\nimport {useUpdater} from '../../../../hooks/use-updater';\n\nimport './AccountUsageDetails.scss';\nimport {AccountActionsField, AccountRequestData} from './AccountActionsField';\nimport {DetailTableCell} from './DetailTableCell';\n\nconst TABLE_SETTINGS: Settings = {\n displayIndices: false,\n stickyHead: DataTable.MOVING,\n stickyFooter: DataTable.MOVING,\n stickyTop: STICKY_TOOLBAR_BOTTOM,\n stickyBottom: 0,\n syncHeadOnResize: true,\n};\n\nconst TABLE_SETTINGS_DOUBLE_TOOLBAR: Settings = {\n displayIndices: false,\n stickyHead: DataTable.MOVING,\n stickyFooter: DataTable.MOVING,\n stickyTop: STICKY_DOUBLE_TOOLBAR_BOTTOM,\n stickyBottom: 0,\n syncHeadOnResize: true,\n};\n\nconst block = cn('account-usage-details');\n\nconst ROW_CLASS_NAME = block('row');\n\nfunction AccountUsageDetailsHeader(props: {column: keyof AccountUsageDataItem}) {\n const dispatch = useDispatch();\n const sortOrder = useSelector(getAccountUsageSortStateByColumn);\n const {column} = props;\n\n const onSort = React.useCallback(\n (column: string, nextOrder: OrderType, opts: {multisort?: boolean}) => {\n dispatch(setAccountUsageSortState({column, order: nextOrder}, opts.multisort));\n },\n [dispatch],\n );\n\n const {order, multisortIndex} = sortOrder[column] || {};\n\n return (\n <ColumnHeader\n column={column}\n title={readableAccountUsageColumnName(column)}\n order={order}\n onSort={onSort}\n multisortIndex={multisortIndex}\n />\n );\n}\n\nconst PageCounterMemo = React.memo(PageCounter);\n\nfunction PathHeader() {\n return (\n <div className={block('path-header')}>\n <AccountUsageDetailsHeader column={'path'} />\n <div className={block('path-header-loader')}>\n <UsageLoaderMemo />\n </div>\n <div className={block('path-header-page')}>\n <PageCounterMemo />\n </div>\n </div>\n );\n}\n\nconst UsageLoaderMemo = React.memo(UsageLoader);\n\nfunction useColumnsByPreset(mediums: Array<string>) {\n const dispatch = useDispatch();\n\n const availableColumns = useSelector(getAccountUsageAvailableColumns);\n const visibleColumns = useSelector(getAccountUsageVisibleDataColumns);\n const cluster = useSelector(getCluster);\n const viewType = useSelector(getAccountUsageViewType);\n const treePath = useSelector(getAccountUsageTreeItemsBasePath);\n\n const handleAttributeButtonClick = useCallback(\n (accountData: AccountRequestData) => {\n dispatch(openAccountAttributesModal(accountData));\n },\n [dispatch],\n );\n\n const columnsByName = React.useMemo(() => {\n const res: Map<string, Column<AccountUsageDataItem>> = new Map();\n\n const iconName =\n viewType === 'tree' || viewType === 'tree-diff'\n ? ''\n : viewType === 'list' || viewType === 'list-diff'\n ? 'list'\n : 'folders';\n res.set('type', {\n name: 'type',\n header: iconName === '' ? null : <Icon awesome={iconName} />,\n sortable: false,\n render(item) {\n const {type, path, acl_status} = item.row;\n return acl_status === 'deny' ? (\n <Icon face=\"light\" awesome=\"eye-slash\" />\n ) : (\n <Icon awesome={getIconNameForType(path ? type : '')} />\n );\n },\n width: 50,\n });\n res.set('path', {\n name: 'path',\n header: <PathHeader />,\n sortable: false,\n render(item) {\n const {path} = item.row;\n if (!path) {\n return <Warning>Permission denied</Warning>;\n }\n\n return <PathView path={path} lastFragmentOnly={viewType === 'tree'} />;\n },\n onClick: ({row}) => {\n const {path} = row;\n if (\n !path ||\n (viewType !== 'tree-diff' && viewType !== 'tree') ||\n row.type !== 'map_node'\n ) {\n return;\n }\n dispatch(setAccountUsageDataFilter({treePath: row.path}));\n },\n className: block('path-cell', {view: viewType}),\n });\n\n res.set('disk_space', {\n name: 'disk_space',\n header: <AccountUsageDetailsHeader column={'disk_space'} />,\n sortable: false,\n render(item) {\n return (\n <DetailTableCell\n value={item.row.disk_space}\n additionalValue={item.row['versioned:disk_space']}\n viewType={viewType}\n formatType=\"bytes\"\n />\n );\n },\n align: 'right',\n width: 120,\n });\n res.set('master_memory', {\n name: 'Master mem',\n header: <AccountUsageDetailsHeader column={'master_memory'} />,\n sortable: false,\n render(item) {\n return (\n <DetailTableCell\n value={item.row.master_memory}\n additionalValue={item.row['versioned:master_memory']}\n viewType={viewType}\n formatType=\"bytes\"\n />\n );\n },\n align: 'right',\n width: 120,\n });\n res.set('owner', {\n name: 'Owner',\n header: <AccountUsageDetailsHeader column={'owner'} />,\n sortable: false,\n render(item) {\n return <SubjectCard name={item.row.owner} />;\n },\n width: 120,\n });\n\n forEach_(mediums, (medium) => {\n const name = `medium:${medium}` as MediumKeyTemplate;\n const versionedName = `versioned:medium:${name}` as VersionedKeyTemplate;\n\n res.set(name, {\n name,\n header: <AccountUsageDetailsHeader column={name} />,\n sortable: false,\n render(item) {\n const additionalValue =\n versionedName in item.row ? Number(item.row[versionedName]) : null;\n return (\n <DetailTableCell\n value={Number(item.row[name])}\n additionalValue={additionalValue}\n viewType={viewType}\n formatType=\"bytes\"\n />\n );\n },\n align: 'right',\n width: 120,\n });\n });\n\n forEach_(availableColumns, (field) => {\n if (res.has(field)) {\n return;\n }\n\n res.set(field, {\n name: field,\n header: <AccountUsageDetailsHeader column={field} />,\n sortable: false,\n render(item) {\n const {[field]: value} = item.row;\n const additionalKey = `versioned:${field}` as VersionedKeyTemplate;\n const additionalValue =\n additionalKey in item.row ? Number(item.row[additionalKey]) : null;\n\n if (typeof value === 'boolean') {\n return value === undefined ? format.NO_VALUE : capitalize_(String(value));\n }\n if (field.endsWith('_time')) {\n return value === null || value === undefined\n ? format.NO_VALUE\n : format.DateTime(value, {format: 'full'});\n }\n if (field.endsWith('_count')) {\n return (\n <DetailTableCell\n value={Number(value)}\n additionalValue={additionalValue}\n viewType={viewType}\n formatType=\"number\"\n />\n );\n }\n },\n align: 'right',\n width: 150,\n });\n });\n\n return res;\n }, [treePath, viewType, mediums, cluster, availableColumns, dispatch]);\n\n return React.useMemo(() => {\n const res: Array<Column<AccountUsageDataItem>> = [];\n visibleColumns.forEach((name) => {\n const item = columnsByName.get(name);\n if (item) {\n res.push(item);\n }\n });\n res.push({\n name: 'actions',\n header: '',\n sortable: false,\n render(item) {\n return (\n <AccountActionsField\n path={item.row.path}\n cluster={cluster}\n account={item.row.account}\n onAttributeButtonClick={handleAttributeButtonClick}\n />\n );\n },\n width: 50,\n });\n return res;\n }, [handleAttributeButtonClick, cluster, columnsByName, visibleColumns]);\n}\n\nconst UPDATE_TIMEOUT = 600000;\n\nfunction AccountUsageDetailsList() {\n const dispatch = useDispatch();\n const currentSnapshot = useSelector(getAccountUsageCurrentSnapshot);\n\n const updateFn = React.useCallback(() => {\n dispatch(fetchAccountUsageList());\n }, [dispatch]);\n\n useUpdater(updateFn, {timeout: UPDATE_TIMEOUT, onlyOnce: currentSnapshot !== undefined});\n\n const items = useSelector(getAccountUsageListItems);\n const loading = useSelector(getAccountUsageListLoading);\n const loaded = useSelector(getAccountUsageListLoaded);\n const error = useSelector(getAccountUsageListError);\n\n const mediums = useSelector(getAccountUsageListMediums);\n const columns = useColumnsByPreset(mediums);\n\n if (!loading && error) {\n return <ErrorBlock error={error} />;\n }\n\n return (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={items}\n settings={TABLE_SETTINGS}\n rowClassName={() => ROW_CLASS_NAME}\n useThemeYT\n />\n );\n}\n\nfunction AccountUsageDetailsListDiff() {\n const dispatch = useDispatch();\n React.useEffect(() => {\n dispatch(fetchAccountUsageListDiff());\n }, [dispatch]);\n\n const items = useSelector(getAccountUsageListDiffItems);\n const loading = useSelector(getAccountUsageListDiffLoading);\n const loaded = useSelector(getAccountUsageListDiffLoaded);\n const error = useSelector(getAccountUsageListDiffError);\n\n const mediums = useSelector(getAccountUsageListDiffMediums);\n const columns = useColumnsByPreset(mediums);\n\n if (!loading && error) {\n return <ErrorBlock error={error} />;\n }\n\n return (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={items}\n settings={TABLE_SETTINGS}\n rowClassName={() => ROW_CLASS_NAME}\n useThemeYT\n />\n );\n}\n\nfunction AccountUsageDetailsTree() {\n const dispatch = useDispatch();\n const currentSnapshot = useSelector(getAccountUsageCurrentSnapshot);\n const updateFn = React.useCallback(() => {\n dispatch(fetchAccountUsageTree());\n }, [dispatch]);\n\n useUpdater(updateFn, {timeout: UPDATE_TIMEOUT, onlyOnce: currentSnapshot !== undefined});\n\n const items = useSelector(getAccountUsageTreeItems);\n const loading = useSelector(getAccountUsageTreeLoading);\n const loaded = useSelector(getAccountUsageTreeLoaded);\n const error = useSelector(getAccountUsageTreeError);\n\n const mediums = useSelector(getAccountUsageTreeMediums);\n const columns = useColumnsByPreset(mediums);\n\n if (!loading && error) {\n return <ErrorBlock error={error} />;\n }\n\n return (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={items}\n settings={TABLE_SETTINGS_DOUBLE_TOOLBAR}\n rowClassName={() => ROW_CLASS_NAME}\n useThemeYT\n />\n );\n}\n\nfunction AccountUsageDetailsTreeDiff() {\n const dispatch = useDispatch();\n React.useEffect(() => {\n dispatch(fetchAccountUsageTreeDiff());\n }, [dispatch]);\n\n const items = useSelector(getAccountUsageTreeDiffItems);\n const loading = useSelector(getAccountUsageTreeDiffLoading);\n const loaded = useSelector(getAccountUsageTreeDiffLoaded);\n const error = useSelector(getAccountUsageTreeDiffError);\n\n const mediums = useSelector(getAccountUsageTreeDiffMediums);\n const columns = useColumnsByPreset(mediums);\n\n if (!loading && error) {\n return <ErrorBlock error={error} />;\n }\n\n return (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={items}\n settings={TABLE_SETTINGS_DOUBLE_TOOLBAR}\n rowClassName={() => ROW_CLASS_NAME}\n useThemeYT\n />\n );\n}\n\nconst AccountUsageDetailsListMemo = React.memo(AccountUsageDetailsList);\nconst AccountUsageDetailsListDiffMemo = React.memo(AccountUsageDetailsListDiff);\nconst AccountUsageDetailsTreeMemo = React.memo(AccountUsageDetailsTree);\nconst AccountUsageDetailsTreeDiffMemo = React.memo(AccountUsageDetailsTreeDiff);\n\nfunction AccountUsageDetailsDiff({children}: {children: React.ReactNode}) {\n const isDiffView = useSelector(isAccountsUsageDiffView);\n const from = useSelector(getAccountsUsageDiffFromSnapshot);\n const to = useSelector(getAccountsUsageDiffToSnapshot);\n\n if (!isDiffView) {\n return <>Unexpected view mode</>;\n }\n\n if ((!from && !to) || from === to) {\n return (\n <NoContent\n warning={\"You don't have any selected snapshot range\"}\n hint={\n <React.Fragment>\n Please select <Secondary>From</Secondary>, <Secondary>To</Secondary>{' '}\n snapshots\n </React.Fragment>\n }\n />\n );\n }\n\n return <>{children}</>;\n}\n\nconst AccountUsageDetailsDiffMemo = React.memo(AccountUsageDetailsDiff);\n\nfunction AccountUsageDetails() {\n const dispatch = useDispatch();\n const viewType = useSelector(getAccountUsageViewType);\n\n React.useEffect(() => {\n dispatch(syncAccountsUsageViewTypeWithSettings());\n }, [dispatch]);\n\n let diffContent = `${viewType} is not implemented` as React.ReactNode;\n\n switch (viewType) {\n case 'tree':\n return <AccountUsageDetailsTreeMemo />;\n case 'list-plus-folders':\n case 'list':\n return <AccountUsageDetailsListMemo key={viewType} />;\n case 'list-diff':\n case 'list-plus-folders-diff':\n diffContent = <AccountUsageDetailsListDiffMemo key={viewType} />;\n break;\n case 'tree-diff':\n diffContent = <AccountUsageDetailsTreeDiffMemo />;\n break;\n }\n\n return !viewType ? null : (\n <AccountUsageDetailsDiffMemo>{diffContent}</AccountUsageDetailsDiffMemo>\n );\n}\n\nconst AccountsUsageDetailsListLoaderMemo = React.memo(AccountsUsageDetailsListLoader);\nconst AccountsUsageDetailsTreeLoaderMemo = React.memo(AccountsUsageDetailsTreeLoader);\n\nfunction UsageLoader() {\n const viewType = useSelector(getAccountUsageViewType);\n\n switch (viewType) {\n case 'list':\n case 'list-plus-folders':\n return <AccountsUsageDetailsListLoaderMemo />;\n case 'tree':\n return <AccountsUsageDetailsTreeLoaderMemo />;\n case 'tree-diff':\n return <AccountsUsageDetailsTreeDiffLoader />;\n case 'list-diff':\n case 'list-plus-folders-diff':\n return <AccountsUsageDetailsListDiffLoader />;\n }\n return null;\n}\n\nfunction AccountsUsageDetailsListLoader() {\n const loading = useSelector(getAccountUsageListLoading);\n return <Loader visible={loading} />;\n}\n\nfunction AccountsUsageDetailsTreeLoader() {\n const loading = useSelector(getAccountUsageTreeLoading);\n return <Loader visible={loading} />;\n}\n\nfunction AccountsUsageDetailsListDiffLoader() {\n const loading = useSelector(getAccountUsageListDiffLoading);\n return <Loader visible={loading} />;\n}\n\nfunction AccountsUsageDetailsTreeDiffLoader() {\n const loading = useSelector(getAccountUsageTreeDiffLoading);\n return <Loader visible={loading} />;\n}\n\nfunction PageCounter() {\n const value = useSelector(getAccountUsagePageIndex);\n const count = useSelector(getAccountUsagePageCount);\n\n return count > 1 ? (\n <Secondary>\n Page: {Number(value) + 1} / {count}{' '}\n </Secondary>\n ) : null;\n}\n\nexport default React.memo(AccountUsageDetails);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport AccountUsageToolbar from './AccountUsageToolbar';\nimport AccountUsageDetails from './AccountUsageDetails';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {NoContent} from '../../../../components/NoContent/NoContent';\nimport {getActiveAccount} from '../../../../store/selectors/accounts/accounts-ts';\nimport {useSelector} from 'react-redux';\nimport {getAccountUsageViewType} from '../../../../store/selectors/accounts/account-usage';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\n\nconst block = cn('accounts');\n\nfunction AccountDetailedUsageTab() {\n const account = useSelector(getActiveAccount);\n const viewType = useSelector(getAccountUsageViewType);\n\n if (!account) {\n return (\n <NoContent\n warning={\"You don't have any selected accounts\\n\"}\n hint={'Please choose one to display charts'}\n />\n );\n }\n\n return (\n <ErrorBoundary>\n <WithStickyToolbar\n className={block('usage')}\n doubleHeight={viewType === 'tree' || viewType === 'tree-diff'}\n toolbar={<AccountUsageToolbar />}\n content={<AccountUsageDetails />}\n />\n </ErrorBoundary>\n );\n}\n\nexport default React.memo(AccountDetailedUsageTab);\n","import React from 'react';\nimport block from 'bem-cn-lite';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\n\nimport reduce_ from 'lodash/reduce';\n\nimport {Redirect, Route, Switch} from 'react-router';\n\nimport Tabs from '../../../components/Tabs/Tabs';\n\nimport {Page} from '../../../constants/index';\nimport {\n ACCOUNTS_ALLOWED_ROOT_TABS,\n ACCOUNTS_DEFAULT_TAB,\n AccountsTab,\n} from '../../../constants/accounts/accounts';\nimport {\n getAccountsIsFinalLoadingStatus,\n getActiveAccount,\n} from '../../../store/selectors/accounts/accounts-ts';\nimport {getLastVisitedTabs} from '../../../store/selectors/settings';\nimport {TabSettings, makeTabProps} from '../../../utils';\nimport {formatByParams} from '../../../utils/format';\n\nimport AccountsGeneralTab from '../tabs/general/AccountsGeneralTab';\nimport AccountStatisticTab from '../tabs/statistic/AccountStatisticTab';\nimport AccountsAclTab from '../tabs/acl/AccountsAclTab';\nimport AccountsMonitorTab from '../tabs/monitor/AccountsMonitorTab';\nimport AccountsUsageTab from '../tabs/detailed-usage/AccountUsageTab';\nimport {useAppRumMeasureStart} from '../../../rum/rum-app-measures';\nimport {useRumMeasureStop} from '../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\nimport {getCluster} from '../../../store/selectors/global';\nimport AccountsUpdater from './AccountsUpdater';\nimport {getAccountsUsageBasePath} from '../../../config';\nimport {RootState} from '../../../store/reducers';\n\nimport './Accounts.scss';\nimport UIFactory from '../../../UIFactory';\nimport {UI_TAB_SIZE} from '../../../constants/global';\n\nconst b = block('accounts');\n\ntype Props = ConnectedProps<typeof connector>;\n\nexport class Accounts extends React.Component<\n Props & {match: {url: string; path: string}; lastVisitedTab: string}\n> {\n static defaultProps = {\n lastVisitedTab: ACCOUNTS_DEFAULT_TAB,\n };\n\n render() {\n const {match, cluster, lastVisitedTab, activeAccount, allowUsageTab} = this.props;\n const showSettings = reduce_(\n AccountsTab,\n (acc, tab) => {\n acc[tab] = {\n show: Boolean(activeAccount) || Boolean(ACCOUNTS_ALLOWED_ROOT_TABS[tab]),\n };\n return acc;\n },\n {} as Record<string, TabSettings>,\n );\n const usageTab = showSettings[AccountsTab.USAGE];\n usageTab.show = usageTab.show && Boolean(allowUsageTab);\n\n const statsTab = showSettings[AccountsTab.STATISTICS];\n statsTab.show = statsTab.show && Boolean(UIFactory.getStatisticsComponentForAccount());\n\n const {\n component: monitoringComponent,\n urlTemplate,\n title: monitoringTitle,\n } = UIFactory.getMonitoringForAccounts() ?? {};\n const monTab = showSettings[AccountsTab.MONITOR];\n monTab.show = monTab.show && Boolean(monitoringComponent ?? urlTemplate);\n if (urlTemplate) {\n monTab.routed = false;\n monTab.external = true;\n monTab.url = formatByParams(urlTemplate, {\n ytCluster: cluster,\n ytAccount: activeAccount,\n });\n }\n\n const props = makeTabProps(match.url, AccountsTab, showSettings, undefined, {\n [AccountsTab.USAGE]: 'Detailed usage',\n [AccountsTab.MONITOR]: monitoringTitle ?? 'Monitoring',\n });\n\n const lastTab = lastVisitedTab in AccountsTab ? lastVisitedTab : undefined;\n const tabToRedirect = activeAccount && lastTab ? lastTab : AccountsTab.GENERAL;\n\n return (\n <div className=\"elements-page__content\">\n <AccountsRumMeasure />\n <AccountsUpdater />\n <section className={b(null, 'elements-main-section')}>\n <div className=\"elements-section\">\n <div className={b('heading')}>\n <Tabs\n {...props}\n active={ACCOUNTS_DEFAULT_TAB}\n className={b('tabs')}\n routed\n routedPreserveLocation\n size={UI_TAB_SIZE}\n />\n </div>\n </div>\n <div className={b('tab-viewer')}>\n <Switch>\n <Route\n path={`${match.path}/${AccountsTab.GENERAL}`}\n component={AccountsGeneralTab}\n />\n {statsTab.show && (\n <Route\n path={`${match.path}/${AccountsTab.STATISTICS}`}\n component={AccountStatisticTab}\n />\n )}\n {monTab.show && monitoringComponent && (\n <Route\n path={`${match.path}/${AccountsTab.MONITOR}`}\n render={() => (\n <AccountsMonitorTab component={monitoringComponent} />\n )}\n />\n )}\n <Route\n path={`${match.path}/${AccountsTab.ACL}`}\n component={AccountsAclTab}\n />\n {usageTab.show && (\n <Route\n path={`${match.path}/${AccountsTab.USAGE}`}\n component={AccountsUsageTab}\n />\n )}\n <Redirect from={match.url} to={`${match.url}/${tabToRedirect}`} />\n </Switch>\n </div>\n </section>\n </div>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const lastVisitedTabs = getLastVisitedTabs(state);\n\n return {\n lastVisitedTab: lastVisitedTabs[Page.ACCOUNTS],\n activeAccount: getActiveAccount(state),\n allowUsageTab: Boolean(getAccountsUsageBasePath()),\n cluster: getCluster(state),\n };\n};\n\nconst connector = connect(mapStateToProps);\nexport default connector(Accounts);\n\nfunction AccountsRumMeasure() {\n const isFinalStatus = useSelector(getAccountsIsFinalLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.ACCOUNTS,\n allowStart: ([isFinal]) => !isFinal,\n startDeps: [isFinalStatus],\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.ACCOUNTS,\n allowStop: ([isFinal]) => isFinal,\n stopDeps: [isFinalStatus],\n });\n\n return null;\n}\n","import cn from 'bem-cn-lite';\nimport React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport {DialogField, FormApi, YTDFDialog} from '../../../../../components/Dialog';\nimport {closeCreateModal} from '../../../../../store/actions/accounts/editor';\nimport {loadEditedAccount} from '../../../../../store/actions/accounts/accounts';\nimport {createAccountFromInfo} from '../../../../../utils/accounts/editor';\nimport {getCluster, getCurrentUserName, isDeveloper} from '../../../../../store/selectors/global';\nimport {getActiveAccount} from '../../../../../store/selectors/accounts/accounts';\nimport {ROOT_ACCOUNT_NAME} from '../../../../../constants/accounts/accounts';\n\nimport './AccountCreateDialog.scss';\nimport {RootState} from '../../../../../store/reducers';\nimport {isIdmAclAvailable} from '../../../../../config';\nimport {isAbcAllowed} from '../../../../../UIFactory';\n\nconst block = cn('account-create-dialog');\n\ninterface FormValues {\n abcService?: {slug: string; id: number};\n account: string;\n parentAccount: string;\n responsibles: Array<unknown>;\n createHome: boolean;\n}\n\nfunction isRootAccount(account: string) {\n return account === 'root';\n}\n\nclass AccountCreateDialog extends React.Component<ConnectedProps<typeof connector>> {\n render() {\n const {visible, newAccountInfo, activeAccount, currentUserName, isAdmin} = this.props;\n\n const {parentAccount, responsibles = []} = newAccountInfo;\n\n return (\n <YTDFDialog<FormValues>\n className={block()}\n visible={visible}\n onClose={this.onClose}\n headerProps={{title: 'Create account'}}\n onAdd={this.onSubmit}\n pristineSubmittable\n initialValues={{\n ...newAccountInfo,\n parentAccount:\n parentAccount || activeAccount || (isAdmin ? ROOT_ACCOUNT_NAME : undefined),\n responsibles: responsibles.length\n ? responsibles\n : [{value: currentUserName, type: 'users'}],\n }}\n fields={[\n ...((isAdmin && isAbcAllowed()\n ? [\n {\n name: 'abcService',\n type: 'abc-control',\n caption: 'Service in ABC',\n required: true,\n visibilityCondition: {\n when: 'parentAccount',\n isActive: isRootAccount,\n },\n extras: {\n placeholder: 'Enter ABC service name',\n },\n },\n ]\n : []) as Array<DialogField<FormValues>>),\n {\n name: 'account',\n type: 'text',\n caption: 'Account name',\n required: true,\n extras: {\n placeholder: 'Enter account name',\n className: block('name'),\n },\n },\n {\n name: 'parentAccount',\n type: 'accountsSuggest',\n caption: 'Parent account',\n required: true,\n extras: {\n placeholder: 'Enter parent account name',\n allowRootAccount: isAdmin,\n },\n },\n ...((isIdmAclAvailable()\n ? [\n {\n name: 'responsibles',\n type: 'acl-subjects',\n caption: 'Responsible users',\n required: true,\n extras: {\n placeholder: 'Enter name or login',\n allowedTypes: ['users'],\n },\n },\n ]\n : []) as Array<DialogField<FormValues>>),\n ...(isAdmin\n ? [\n {\n name: 'createHome',\n type: 'tumbler' as const,\n caption: 'Create home directory',\n },\n ]\n : []),\n ]}\n />\n );\n }\n\n onSubmit = (form: FormApi<FormValues>) => {\n const {createAccountFromInfo, closeCreateModal, loadEditedAccount, cluster} = this.props;\n const newAccountInfo = form.getState().values;\n if (!isRootAccount(newAccountInfo.parentAccount)) {\n newAccountInfo.abcService = undefined;\n }\n\n return createAccountFromInfo(cluster, newAccountInfo).then(() => {\n closeCreateModal();\n const {account} = newAccountInfo;\n loadEditedAccount(account);\n });\n };\n\n onClose = (form: FormApi<FormValues>) => {\n this.props.closeCreateModal(form.getState().values);\n };\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {\n accounts: {editor},\n } = state;\n return {\n currentUserName: getCurrentUserName(state),\n activeAccount: getActiveAccount(state),\n visible: editor.createModalVisible,\n newAccountInfo: editor.newAccountInfo as FormValues,\n cluster: getCluster(state),\n isAdmin: isDeveloper(state),\n };\n};\n\nconst mapDispatchToProps = {\n closeCreateModal,\n loadEditedAccount,\n createAccountFromInfo,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(AccountCreateDialog);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n\nimport {openCreateModal} from '../../../../../store/actions/accounts/editor';\n\nimport AccountCreateDialog from '../../../../../pages/accounts/tabs/general/Editor/AccountCreateDialog';\nimport Button from '../../../../../components/Button/Button';\n\nclass AccountCreate extends Component {\n static propTypes = {\n openCreateModal: PropTypes.func.isRequired,\n className: PropTypes.string,\n };\n\n state = {\n infoValue: '',\n activeCreateValue: '',\n showConfirmMessage: false,\n showErrorMessage: false,\n };\n\n render() {\n const {openCreateModal, className} = this.props;\n return (\n <span className={className}>\n <Button view=\"action\" title=\"Create account\" onClick={openCreateModal}>\n Create account\n </Button>\n <AccountCreateDialog />\n </span>\n );\n }\n}\n\nconst mapDispatchToProps = {\n openCreateModal,\n};\n\nexport default connect(null, mapDispatchToProps)(AccountCreate);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport some_ from 'lodash/some';\n\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\nimport Favourites, {FavouritesItem} from '../../../components/Favourites/Favourites';\nimport {\n getFavouriteAccounts,\n isActiveAcountInFavourites,\n} from '../../../store/selectors/favourites';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n getAccountsMapByName,\n getActiveAccount,\n} from '../../../store/selectors/accounts/accounts-ts';\nimport {setActiveAccount} from '../../../store/actions/accounts/accounts';\nimport {accountsToggleFavourite} from '../../../store/actions/favourites';\nimport {Breadcrumbs, BreadcrumbsItem} from '@gravity-ui/uikit';\nimport {getActiveAccountBreadcrumbs} from '../../../store/selectors/accounts/accounts';\n\nimport AccountCreate from '../tabs/general/Editor/AccountCreate';\nimport Link from '../../../components/Link/Link';\nimport {makeRoutedURL} from '../../../store/location';\nimport {Page} from '../../../constants';\n\nimport {getCluster, getClusterUiConfig} from '../../../store/selectors/global';\nimport {ACCOUNTS_ALLOWED_ROOT_TABS, AccountsTab} from '../../../constants/accounts/accounts';\n\nimport './AccountsTopRowContent.scss';\nimport UIFactory from '../../../UIFactory';\n\nconst block = cn('accounts-top-row-content');\n\nfunction AccountsTopRowContent() {\n const clusterUiConfig = useSelector(getClusterUiConfig);\n const account = useSelector(getActiveAccount);\n const accountsByName = useSelector(getAccountsMapByName) as any;\n\n const current = accountsByName[account];\n\n return (\n <RowWithName page={Page.ACCOUNTS} urlParams={{account: ''}}>\n <AccountsFavourites />\n <AccountsBreadcrumbs />\n <span className={block('actions')}>\n {UIFactory.renderTopRowExtraControlsForAccount({\n clusterUiConfig,\n accountAttributes: current?.$attributes,\n })}\n <AccountCreate className={block('create')} />\n </span>\n </RowWithName>\n );\n}\n\nfunction AccountsFavourites() {\n const isActiveInFavourites = useSelector(isActiveAcountInFavourites);\n const favourites = useSelector(getFavouriteAccounts);\n const dispatch = useDispatch();\n const activeAccount = useSelector(getActiveAccount);\n\n const handleFavouriteItemClick = React.useCallback(\n (item: FavouritesItem) => {\n dispatch(setActiveAccount(item.path));\n },\n [dispatch],\n );\n\n const handleFavouriteToggle = React.useCallback(() => {\n dispatch(accountsToggleFavourite(activeAccount));\n }, [dispatch, activeAccount]);\n\n return (\n <Favourites\n isActive={isActiveInFavourites}\n items={favourites}\n onItemClick={handleFavouriteItemClick}\n onToggle={handleFavouriteToggle}\n toggleDisabled={!activeAccount}\n theme={'clear'}\n />\n );\n}\n\ninterface BreadcrumbsItemType {\n text: string;\n url: string;\n title?: string;\n}\n\nfunction AccountsBreadcrumbs() {\n // @ts-ignore\n const bcItems = useSelector(getActiveAccountBreadcrumbs).slice(1);\n const dispatch = useDispatch();\n\n const handleItemClick = React.useCallback(\n (item: BreadcrumbsItemType) => {\n dispatch(setActiveAccount(item.text));\n },\n [dispatch, setActiveAccount],\n );\n\n const items = React.useMemo(() => {\n return [\n {\n text: '',\n action: () => handleItemClick({text: '', url: ''}),\n },\n ...bcItems.map((item) => {\n return {\n ...item,\n action: () => handleItemClick(item),\n };\n }),\n ];\n }, [bcItems, handleItemClick]);\n\n return (\n <Breadcrumbs\n className={block('breadcrumbs')}\n items={items}\n lastDisplayedItemsCount={2}\n firstDisplayedItemsCount={1}\n renderItemContent={renderBcItem}\n />\n );\n}\n\nfunction renderBcItem(item: BreadcrumbsItem, isCurrent: boolean) {\n return (\n <BreadcrumbLink account={item.text} title={item.text || '<Root>'} isCurrent={isCurrent} />\n );\n}\n\ninterface BreadcrumbLinkProps {\n account: string;\n title?: string;\n isCurrent: boolean;\n}\n\nfunction BreadcrumbLink({account, title, isCurrent}: BreadcrumbLinkProps) {\n const cluster = useSelector(getCluster);\n const pathname = account\n ? window.location.pathname\n : calcRootPathname(window.location.pathname, cluster);\n const url = makeRoutedURL(pathname, {account});\n\n return (\n <Link\n className={block('breadcrumbs-item', {current: isCurrent})}\n theme={'ghost'}\n url={url}\n routed\n >\n {title || account}\n </Link>\n );\n}\n\nfunction calcRootPathname(pathname: string, cluster: string) {\n const isAllowedRootTab = some_(ACCOUNTS_ALLOWED_ROOT_TABS, (_v, tab) => {\n return pathname.endsWith('/' + tab);\n });\n\n return isAllowedRootTab ? pathname : `/${cluster}/${Page.ACCOUNTS}/${AccountsTab.GENERAL}`;\n}\n\nexport default React.memo(AccountsTopRowContent);\n","import {RumMeasureStartProps, useRumMeasureStart} from './RumUiContext';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../store/selectors/global';\n\nexport function useAppRumMeasureStart<T extends Array<any>>(params: RumMeasureStartProps<T>) {\n const cluster = useSelector(getCluster);\n\n useRumMeasureStart({\n ...params,\n subPage: params.subPage || `ui.${cluster}`,\n });\n}\n","import filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\n\nimport unipika from '../../common/thor/unipika';\nimport ypath from '../../common/thor/ypath';\n\nimport CancelHelper from '../cancel-helper';\nimport {YTApiId, ytApiV3Id} from '../../rum/rum-wrap-api';\n\nexport const pathEditorRequests = new CancelHelper();\n\nfunction prepareSuggestions(initialPath, parentPath, children) {\n let suggestions = map_(children, (child) => {\n const prepared = {};\n\n prepared.parentPath = parentPath;\n prepared.childPath = '/' + unipika.decode(ypath.getValue(child));\n prepared.path = prepared.parentPath + prepared.childPath;\n prepared.type = ypath.getValue(child, '/@type');\n prepared.dynamic = ypath.getValue(child, '/@dynamic');\n prepared.targetPathBroken = ypath.getValue(child, '/@broken');\n\n return prepared;\n });\n\n suggestions = sortBy_(suggestions, 'childPath');\n\n return suggestions;\n}\n\nexport function preparePath(currentPath) {\n return ypath.YPath.create(currentPath, 'absolute').toSubpath(-2).stringify();\n}\n\nexport function loadSuggestions(path, customFilter) {\n const parentPath = preparePath(path);\n\n return ytApiV3Id\n .list(YTApiId.pathEditorLoadSuggestions, {\n parameters: {path: parentPath, attributes: ['type', 'dynamic']},\n cancellation: pathEditorRequests.saveCancelToken,\n })\n .then(ypath.getValue)\n .then((nodes) => prepareSuggestions(path, parentPath, nodes))\n .then((suggestions) => (customFilter ? customFilter(suggestions) : suggestions));\n}\n\nexport function filterByCurrentPath(currentPath, suggestions) {\n const path = currentPath.toLowerCase();\n\n return filter_(suggestions, (child) => {\n const hasPartOfPath = child.path.startsWith(path);\n const isShowCurrentChild = child.path !== path || child.type === 'map_node';\n\n return hasPartOfPath && isShowCurrentChild;\n });\n}\n\nexport function getNextSelectedIndex(suggestion, selectedIndex) {\n if (selectedIndex === -1 || selectedIndex === suggestion.length - 1) {\n return 0;\n }\n\n return selectedIndex + 1;\n}\n\nexport function getPrevSelectedIndex(suggestions, selectedIndex) {\n if (selectedIndex === -1 || selectedIndex === 0) {\n return suggestions.length - 1;\n }\n\n return selectedIndex - 1;\n}\n\nexport function getCompletedPath(suggestion) {\n return suggestion.type === 'map_node' ? suggestion.path + '/' : suggestion.path;\n}\n\nexport function getIconNameForType(type, targetPathBroken) {\n const icons = {\n document: 'file-alt',\n string_node: 'file-alt',\n int64_node: 'file-alt',\n uint64_node: 'file-alt',\n double_node: 'file-alt',\n boolean_node: 'file-alt',\n map_node: 'folder',\n scheduler_pool_tree_map: 'folder-tree',\n scheduler_pool: 'tasks',\n tablet_cell: 'th',\n journal: 'book',\n table: 'th',\n table_dynamic: 'dyn-th',\n replicated_table: 'th',\n chaos_replicated_table: 'chaos-replicated-table',\n replication_log_table: 'replication-log-table',\n file: 'file',\n topmost_transaction_map: 'folder',\n transaction_map: 'folder',\n transaction: 'code-branch',\n nested_transaction: 'code-branch',\n link: ypath.getBoolean(targetPathBroken) ? 'unlink' : 'link',\n rootstock: 'link',\n portal_entrance: 'link',\n cell_node: 'circle',\n cell_node_map: 'far circle',\n sys_node: 'cog',\n access_control_object_namespace_map: 'acl-namespace-map',\n access_control_object_namespace: 'acl-namespace',\n access_control_object: 'acl-object',\n };\n\n const icon = type ? icons[type] || 'not-suported' : 'eye-slash';\n\n return icon;\n}\n","const SvgBarsDescendingAlignLeft = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M1 3.25a.75.75 0 0 1 .75-.75h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 3.25M1 8a.75.75 0 0 1 .75-.75h8.5a.75.75 0 0 1 0 1.5h-8.5A.75.75 0 0 1 1 8m.75 4a.75.75 0 0 0 0 1.5h2.5a.75.75 0 0 0 0-1.5z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgBarsDescendingAlignLeft;","const SvgCircleInfo = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M8 13.5a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14m1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-.25 3a.75.75 0 0 0-1.5 0V11a.75.75 0 0 0 1.5 0z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgCircleInfo;","import React from 'react';\nimport { block } from '../utils/cn';\nconst b = block('breadcrumbs');\nexport function BreadcrumbsButton(props) {\n return React.createElement(\"button\", Object.assign({}, props, { type: \"button\", className: b('switcher', { more: true }) }));\n}\n","'use client';\nimport React from 'react';\nimport { Link } from '../Link';\nimport { block } from '../utils/cn';\nimport { BreadcrumbsButton } from './BreadcrumbsButton';\nconst b = block('breadcrumbs');\nfunction Item({ item, isCurrent, isPrevCurrent, renderItemContent, renderItem, }) {\n const children = renderItemContent\n ? renderItemContent(item, isCurrent, isPrevCurrent)\n : item.text;\n if (renderItem) {\n return renderItem({ item, children, isCurrent, isPrevCurrent });\n }\n const itemTitle = item.title || item.text;\n if (isPrevCurrent || !isCurrent) {\n if (item.href !== undefined) {\n return (React.createElement(Link, { key: item.text, view: \"secondary\", href: item.href, title: itemTitle, onClick: item.action, className: b('item', { 'prev-current': isPrevCurrent }) }, children));\n }\n return (React.createElement(BreadcrumbsButton, { key: item.text, title: itemTitle, onClick: item.action }, children));\n }\n return (React.createElement(\"div\", { title: itemTitle, className: b('item', { current: true }) }, children));\n}\nexport const BreadcrumbsItem = React.memo(Item);\nBreadcrumbsItem.displayName = 'Breadcrumbs.Item';\n","import { addComponentKeysets } from '../../utils/addComponentKeysets';\nimport en from './en.json';\nimport ru from './ru.json';\nconst COMPONENT = 'Breadcrumbs';\nexport default addComponentKeysets({ en, ru }, COMPONENT);\n","'use client';\nimport React from 'react';\nimport { DropdownMenu } from '../DropdownMenu';\nimport { block } from '../utils/cn';\nimport { BreadcrumbsButton } from './BreadcrumbsButton';\nimport i18n from './i18n';\nconst b = block('breadcrumbs');\nexport function BreadcrumbsMore({ popupStyle, popupPlacement, items }) {\n return (React.createElement(DropdownMenu, { items: items, popupProps: {\n className: b('popup', {\n staircase: popupStyle === 'staircase',\n }),\n placement: popupPlacement,\n }, renderSwitcher: ({ onClick }) => (React.createElement(BreadcrumbsButton, { title: i18n('label_more'), onClick: onClick }, \"...\")) }));\n}\nBreadcrumbsMore.displayName = 'Breadcrumbs.More';\n","import React from 'react';\nimport { block } from '../utils/cn';\nconst b = block('breadcrumbs');\nexport function BreadcrumbsSeparator({ renderItemDivider }) {\n return (React.createElement(\"div\", { \"aria-hidden\": true, className: b('divider') }, renderItemDivider ? renderItemDivider() : '/'));\n}\nBreadcrumbsSeparator.displayName = 'Breadcrumbs.Separator';\n","'use client';\nimport React from 'react';\nimport _throttle from 'lodash/throttle';\nimport { block } from '../utils/cn';\nimport { BreadcrumbsItem as Item } from './BreadcrumbsItem';\nimport { BreadcrumbsMore } from './BreadcrumbsMore';\nimport { BreadcrumbsSeparator } from './BreadcrumbsSeparator';\nimport './Breadcrumbs.css';\nconst RESIZE_THROTTLE = 200;\nconst MORE_ITEM_WIDTH = 34;\nconst DEFAULT_POPUP_PLACEMENT = ['bottom', 'top'];\nconst GAP_WIDTH = 4;\nconst b = block('breadcrumbs');\nexport var LastDisplayedItemsCount;\n(function (LastDisplayedItemsCount) {\n LastDisplayedItemsCount[LastDisplayedItemsCount[\"One\"] = 1] = \"One\";\n LastDisplayedItemsCount[LastDisplayedItemsCount[\"Two\"] = 2] = \"Two\";\n})(LastDisplayedItemsCount || (LastDisplayedItemsCount = {}));\nexport var FirstDisplayedItemsCount;\n(function (FirstDisplayedItemsCount) {\n FirstDisplayedItemsCount[FirstDisplayedItemsCount[\"Zero\"] = 0] = \"Zero\";\n FirstDisplayedItemsCount[FirstDisplayedItemsCount[\"One\"] = 1] = \"One\";\n})(FirstDisplayedItemsCount || (FirstDisplayedItemsCount = {}));\nexport class Breadcrumbs extends React.Component {\n static prepareInitialState(props) {\n const { firstDisplayedItemsCount } = props;\n return {\n calculated: false,\n rootItem: firstDisplayedItemsCount ? props.items[0] : undefined,\n visibleItems: props.items.slice(firstDisplayedItemsCount),\n hiddenItems: [],\n allItems: props.items,\n };\n }\n static getDerivedStateFromProps(props, state) {\n if (state.allItems !== props.items) {\n return Breadcrumbs.prepareInitialState(props);\n }\n return null;\n }\n constructor(props) {\n super(props);\n this.handleResize = () => {\n const state = Breadcrumbs.prepareInitialState(this.props);\n this.setState(state, this.recalculate);\n };\n this.handleResize = _throttle(this.handleResize, RESIZE_THROTTLE);\n if (typeof window !== 'undefined') {\n this.resizeObserver = new ResizeObserver(this.handleResize);\n }\n this.container = React.createRef();\n this.state = Breadcrumbs.prepareInitialState(props);\n }\n componentDidMount() {\n var _a;\n this.recalculate();\n (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(this.container.current);\n }\n componentDidUpdate(prevProps) {\n if (prevProps.items !== this.state.allItems) {\n this.recalculate();\n }\n }\n componentWillUnmount() {\n var _a;\n (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n }\n render() {\n const { className, qa } = this.props;\n const { calculated } = this.state;\n return (React.createElement(\"div\", { className: b({ calculated: calculated ? 'yes' : 'no' }, className), \"data-qa\": qa },\n React.createElement(\"div\", { className: b('inner'), ref: this.container },\n this.renderRootItem(),\n this.renderMoreItem(),\n this.renderVisibleItems())));\n }\n renderItem(item, isCurrent, isPrevCurrent, renderItemContent) {\n return (React.createElement(Item, { item: item, isCurrent: isCurrent, isPrevCurrent: isPrevCurrent, renderItemContent: renderItemContent || this.props.renderItemContent, renderItem: this.props.renderItem }));\n }\n renderItemDivider() {\n const { renderItemDivider } = this.props;\n return React.createElement(BreadcrumbsSeparator, { renderItemDivider: renderItemDivider });\n }\n renderRootItem() {\n const { renderRootContent } = this.props;\n const { rootItem, visibleItems } = this.state;\n const isCurrent = visibleItems.length === 0;\n if (!rootItem) {\n return null;\n }\n return this.renderItem(rootItem, isCurrent, false, renderRootContent);\n }\n renderVisibleItems() {\n const { visibleItems } = this.state;\n return visibleItems.map((item, index, items) => {\n const isCurrent = index === items.length - 1;\n const isPrevCurrent = index === items.length - 2;\n return (React.createElement(React.Fragment, { key: index },\n this.renderItemDivider(),\n this.renderItem(item, isCurrent, isPrevCurrent)));\n });\n }\n renderMoreItem() {\n const { hiddenItems } = this.state;\n if (hiddenItems.length === 0) {\n return null;\n }\n const { popupStyle, popupPlacement, renderItemDivider } = this.props;\n return (React.createElement(React.Fragment, null,\n React.createElement(BreadcrumbsSeparator, { renderItemDivider: renderItemDivider }),\n React.createElement(BreadcrumbsMore, { items: hiddenItems, popupPlacement: popupPlacement, popupStyle: popupStyle })));\n }\n recalculate() {\n var _a;\n const { items: allItems, lastDisplayedItemsCount, firstDisplayedItemsCount } = this.props;\n let availableWidth = ((_a = this.container.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) || 0;\n if (this.container.current && availableWidth > 0) {\n availableWidth += GAP_WIDTH;\n const dividers = Array.from(this.container.current.querySelectorAll(`.${b('divider')}`));\n const items = [\n ...Array.from(this.container.current.querySelectorAll(`.${b('switcher')}`)),\n ...Array.from(this.container.current.querySelectorAll(`.${b('item')}`)),\n ];\n const itemsWidths = items.map((elem, i) => elem.scrollWidth + (i === items.length - 1 ? GAP_WIDTH : GAP_WIDTH * 2));\n const dividersWidths = dividers.map((elem) => elem.offsetWidth);\n const buttonsWidth = itemsWidths.reduce((total, width, index, widths) => {\n const isLastItem = widths.length - 1 === index;\n const isItemBeforeLast = lastDisplayedItemsCount === LastDisplayedItemsCount.Two &&\n widths.length - 2 === index;\n if (isLastItem || isItemBeforeLast) {\n return total + Math.min(width, 200);\n }\n return total + width;\n }, 0);\n const dividersWidth = dividersWidths.reduce((total, width) => total + width, 0);\n let totalWidth = buttonsWidth + dividersWidth;\n let visibleItemsStartIndex = 1;\n while (totalWidth > availableWidth &&\n visibleItemsStartIndex < items.length - lastDisplayedItemsCount) {\n if (visibleItemsStartIndex === 1) {\n totalWidth += MORE_ITEM_WIDTH + dividersWidths[visibleItemsStartIndex];\n }\n totalWidth -=\n itemsWidths[visibleItemsStartIndex] + dividersWidths[visibleItemsStartIndex];\n visibleItemsStartIndex++;\n }\n this.setState({\n calculated: true,\n visibleItems: allItems.slice(visibleItemsStartIndex - (1 - firstDisplayedItemsCount)),\n hiddenItems: allItems.slice(firstDisplayedItemsCount, visibleItemsStartIndex - (1 - firstDisplayedItemsCount)),\n });\n }\n }\n}\nBreadcrumbs.defaultProps = {\n popupPlacement: DEFAULT_POPUP_PLACEMENT,\n};\n","'use client';\nimport React from 'react';\nimport { useForkRef } from '../../hooks';\nimport { useTooltipVisible } from '../../hooks/private';\nimport { Popup } from '../Popup';\nimport { Text } from '../Text';\nimport { block } from '../utils/cn';\nimport './Tooltip.css';\nconst b = block('tooltip');\nconst DEFAULT_PLACEMENT = ['bottom', 'top'];\nexport const Tooltip = (props) => {\n const { children, content, disabled, placement = DEFAULT_PLACEMENT, qa, id, className, style, disablePortal, contentClassName, openDelay = 1000, closeDelay, } = props;\n const [anchorElement, setAnchorElement] = React.useState(null);\n const tooltipVisible = useTooltipVisible(anchorElement, {\n openDelay,\n closeDelay,\n preventTriggerOnFocus: true,\n });\n const renderPopup = () => {\n return (React.createElement(Popup, { id: id, role: \"tooltip\", className: b(null, className), style: style, open: tooltipVisible && !disabled, placement: placement, anchorRef: { current: anchorElement }, disablePortal: disablePortal, disableEscapeKeyDown: true, disableOutsideClick: true, disableLayer: true, qa: qa },\n React.createElement(\"div\", { className: b('content', contentClassName) },\n React.createElement(Text, { variant: \"body-short\", color: \"complementary\" }, content))));\n };\n const child = React.Children.only(children);\n const childRef = child.ref;\n const ref = useForkRef(setAnchorElement, childRef);\n return (React.createElement(React.Fragment, null,\n React.cloneElement(child, { ref }),\n anchorElement ? renderPopup() : null));\n};\n","import React from 'react';\nimport { KeyCode } from '../../../constants';\nimport { useBoolean } from '../useBoolean';\nexport const useTooltipVisible = (anchor, { openDelay = 250, closeDelay, preventTriggerOnFocus = false, }) => {\n const [tooltipVisible, showTooltip, hideTooltip] = useBoolean(false);\n const timeoutRef = React.useRef();\n const isFocusWithinRef = React.useRef(false);\n React.useEffect(() => {\n if (!anchor) {\n return undefined;\n }\n function handleMouseEnter() {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(showTooltip, openDelay);\n }\n function handleMouseLeave() {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(hideTooltip, closeDelay);\n }\n function handleFocusWithin(e) {\n if (!isFocusWithinRef.current && document.activeElement === e.target) {\n isFocusWithinRef.current = true;\n clearTimeout(timeoutRef.current);\n showTooltip();\n }\n }\n function handleBlurWithin(e) {\n if (isFocusWithinRef.current &&\n !e.currentTarget.contains(e.relatedTarget)) {\n isFocusWithinRef.current = false;\n clearTimeout(timeoutRef.current);\n hideTooltip();\n }\n }\n function handleKeyDown(e) {\n if (e.key === KeyCode.ESCAPE) {\n clearTimeout(timeoutRef.current);\n hideTooltip();\n }\n }\n anchor.addEventListener('mouseenter', handleMouseEnter);\n anchor.addEventListener('mouseleave', handleMouseLeave);\n anchor.addEventListener('keydown', handleKeyDown);\n if (!preventTriggerOnFocus) {\n anchor.addEventListener('focus', handleFocusWithin);\n anchor.addEventListener('blur', handleBlurWithin);\n }\n return () => {\n anchor.removeEventListener('mouseenter', handleMouseEnter);\n anchor.removeEventListener('mouseleave', handleMouseLeave);\n anchor.removeEventListener('focus', handleFocusWithin);\n anchor.removeEventListener('blur', handleBlurWithin);\n anchor.removeEventListener('keydown', handleKeyDown);\n };\n }, [anchor, showTooltip, hideTooltip, openDelay, closeDelay, preventTriggerOnFocus]);\n return tooltipVisible;\n};\n","import React from 'react';\nexport function useBoolean(initialState) {\n const [value, setValue] = React.useState(initialState);\n return [\n value,\n React.useCallback(() => setValue(true), []),\n React.useCallback(() => setValue(false), []),\n React.useCallback(() => setValue((val) => !val), []),\n ];\n}\n"],"names":["b","block","headingCN","CollapsibleSectionStateLess","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","toggle","onToggle","props","collapsed","_createClass","key","value","_this$props","this","name","children","size","overview","className","marginDirection","_jsx","ErrorBoundary","_jsxs","margin","clickable","onClick","Icon","awesome","Component","CollapsibleSection","_React$useState","React","_React$useState2","_slicedToArray","setCollapsed","onChange","_objectSpread","defaultProps","cn","PageCounter","_ref","pageIndex","pageCount","undefined","getNameTitle","column","title","shortTitle","t","capitalize_","nameContent","titleContent","ColumnHeader","align","order","onSort","multisortIndex","loading","_useColumnInfo","options","allowUnordered","withUndefined","allowedOrderTypes","columnData","find","_ref2","rumLogError","message","additional","subColumn","useColumnInfo","changeHandler","e","nextOrder","calculateNextOrderValue","nextSortOrderValue","currentOrder","multisort","ctrlKey","metaKey","sortable","Boolean","SortIcon","hidden","Text","variant","color","SubColumnSelector","Loader","visible","_ref3","DropdownMenu","items","map","x","text","action","renderSwitcher","_ref4","Button","view","data","barsDescendingSvg","makeItemsCopy","map_","item","DragHandle","sortableHandle","face","SortableItem","sortableElement","isSortable","isSelectable","isDisabled","itemRenderer","onCheckBoxChange","withClickableHandler","active","disabled","selected","checked","selectable","keyColumn","SortableList","sortableContainer","useStaticSize","_ref2$withClickableHa","type","mods","ReactList","index","ColumnSelector","isHeadless","showSelectedOnly","toggleItem","withActualItems","_toConsumableArray","findIndex","changedItem","selectAllItems","visibleMap","getVisibleItemsMap","each_","deselectAllItems","_ref5","invertItems","_ref6","visibleItems","_handleCheckBoxChange","event","currentTarget","getAttribute","_handleSortEnd","_ref7","oldIndex","newIndex","_ref8","getVisibleItems","fromIndex","toIndex","_items$splice","splice","removed","_handleDefaultSort","_ref9","sort","a","aCaption","caption","bCaption","localeCompare","_toggleShownItems","setState","prevState","_changeFilter","filter","state","Object","assign","get","every","some","func","_this2","TextInput","placeholder","onUpdate","hasClear","isFilterable","btnProps","renderSearchBox","filter_","buttonALLisDisabled","buttonNONEisDisabled","re","RegExp","escapeRegExp_","test","showDisabledItems","filterItemsByName","toSplit","filterItems","_partition_","partition_","_partition_2","keyItems","reduce_","acc","_this$props2","_this$getVisibleItems2","headless","empty","lockAxis","helperClass","helper","onSortEnd","useDragHandle","_this$props3","classNames","renderControls","renderList","itemsProps","PropTypes","isRequired","_ref10","_ref10$caption","renderText","asHTML","xmlns","viewBox","fill","fillRule","stroke","opacity","strokeWidth","d","cx","cy","rx","ry","strokeLinecap","strokeDasharray","ColumnSelectorModal","_React$Component","srcItems","itemsOrder","_getItemsOrder","_handleCONFIRMButtonClick","onConfirm","_handleCANCELButtonClick","_getOrderedItems","onCancel","onSourceChange","newItems","newItemsMap","unchanged","changed","forEach_","newItem","push","preparedItems","calculateSrcItems","onDestinationChange","prevProps","indexOf","description","NoContentImage","isVisible","entity","rest","_objectWithoutProperties","_excluded","_this$state","selectorProps","_getSelectorProps","sortableSelectorProps","_getSortableSelectorProps","selectedItemsCount","left","renderColumnSelector","hammer","format","Modal","borderless","confirmText","content","renderContent","contentClassName","prepareRoleListValue","roles","otherMembers","current","toAdd","toRemove","unrecognized","isUnrecognized","isRequested","isApproved","isDepriving","currentArr","prepareItemOfCurrent","otherArr","frozen","itemClassName","role","extraProps","roleListValueToSubjectList","manyListDataItemToSubjectList","manyListDataItem","extractChangedSubjects","added","user","group","DialogError","Block","makeErrorFields","errors","compact_","error","extras","FORM_ERROR","makeFormSubmitError","validationErrors","_defineProperty","importYTDFDialog","YTDFDialog","withLazyLoading","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","next","t0","sent","YTDialog","abrupt","stop","mounted","setMounted","_callee2","_context2","RoleListControl","EditableList","_callee3","_context3","TabFieldVertical","_callee4","_context4","ElementsTableFooter","css","itemHeight","templates","itemMods","selectedIndex","computeKey","cssHover","columnSet","columnItems","currentKey","ElementsTableRow","bFooter","ELEMENTS_TABLE","footer","renderRow","columns","_prepareColumnsData","prepareColumnsData","set","_WithStickyFooter","WithStickyFooter","bWrapper","sticky","prepareTableClassName","renderStickyFooter","displayName","getDisplayName","mapDispatchToProps","toggleColumnSortOrder","compose","connect","sortState","tables","_WithStickyHead","WithStickyHead","top","style","ElementsTableHeader","renderStickyHead","theme","padded","striped","HEADER_HEIGHT","Favourites","isActive","toggleActive","onItemClick","dropItems","path","switcher","renderButton","pin","popupProps","Hotkey","settings","keys","handler","scope","buttonProps","themeProps","toggleDisabled","clear","renderDropDownMenu","renderHotkey","itemType","Pagination","control","tooltip","hotkeySettings","hotkey","hotkeyScope","hotkeyHandler","first","previous","last","showInput","inputValue","qa","renderComponent","renderInput","SimplePagination","_props$value","NaN","_props$min","min","_props$max","max","_props$step","step","firstDiff","isNaN","lastDiff","handleToFirst","handleToPrev","newValue","handleToNext","handleToLast","TextInputWithDebounce","_props$debounce","debounce","_props$onUpdate","onBlur","onEnterKeyDown","onKeyDown","input","setInput","handleChangeExt","throttle_","handleChange","handleKeyDown","handleBlur","WarningIcon","hoverContent","Tooltip","datepickerDefaultProps","useAllUserNamesFiltered","dispatch","useDispatch","loadUsersIfNotLoaded","namesSorted","useSelector","getAllUserNamesSorted","getFiltered","from","sortedIndexBy_","substr","to","sortedLastIndexBy_","slice","allNames","useGroupsLoaded","loadGroupsIfNotLoaded","GroupsLoader","AccountsNoContent","hint","NoContent","warning","AccountStatisticTab","cluster","getCluster","account","getActiveAccount","accountSubtreeAllNames","getActiveAccountSubtreeNames","getTheme","AccountStatisticsComponent","UIFactory","getStatisticsComponentForAccount","activeAccount","fetchAccounts","loadUsers","AccountsAcl","AccountsMonitorTab","AccountMonitor","component","ACCOUNT_USAGE_COLUMN_TITLE","approximate_row_count","master_memory","MEDIUM_PREFIX","readableAccountUsageColumnName","withMediumPrefix","readable","startsWith","Readable","getAccountUsageSnapshots","accounts","usage","snapshots","snapshot_timestamps","getAccountUsageCurrentSnapshot","filters","currentSnapshot","getAccountUsageTreePath","treePath","getAccountUsageSortState","getAccountUsageViewType","viewType","getAccountUsagePathFilter","pathFilter","getAccountUsageOwnerFilter","ownerFilter","getAccountUsageDateRangeFilter","dateRange","getAccountUsageDateRangeTypeFilter","dateRangeType","getAccountsUsageDiffFromSnapshot","diffFromSnapshot","getAccountsUsageDiffToSnapshot","diffToSnapshot","getAccountUsageListRequestParams","list","requestParams","getAccountUsageListLoading","getAccountUsageListLoaded","loaded","getAccountUsageListError","getAccountUsageListItems","_state$accounts$usage","response","getAccountUsageListMediums","_state$accounts$usage3","mediums","getAccountUsageTreeRequestParams","tree","getAccountUsageTreeLoading","getAccountUsageTreeLoaded","getAccountUsageTreeError","getAccountUsageTreeItems","_state$accounts$usage5","getAccountUsageTreeMediums","_state$accounts$usage7","getAccountUsageTreeItemsBasePath","base_path","getAccountUsageListDiffRequestParams","listDiff","getAccountUsageListDiffLoading","getAccountUsageListDiffLoaded","getAccountUsageListDiffError","getAccountUsageListDiffItems","_state$accounts$usage9","getAccountUsageListDiffMediums","_state$accounts$usage11","getAccountUsageTreeDiffRequestParams","treeDiff","getAccountUsageTreeDiffLoading","getAccountUsageTreeDiffLoaded","getAccountUsageTreeDiffError","getAccountUsageTreeDiffItems","_state$accounts$usage13","getAccountUsageTreeDiffMediums","_state$accounts$usage15","isAccountsUsageDiffView","createSelector","endsWith","getAccountUsageTreeItemsBasePathSplitted","treeDiffPath","fragments","ypath","YPath","join","getAccountUsageFieldFiltersRequestParameter","res","field","Math","round","Date","getTime","comparison","getAccountUsagePageCount","_state$accounts$usage4","row_count","_state$accounts$usage8","_state$accounts$usage12","listRowCount","treeRowCount","listDiffRowCount","rowCount","ceil","PAGE_SIZE","getAccountUsagePageIndex","Number","getAccountUsageSortStateByColumn","getAccountUsageAvailableColumns","_state$accounts$usage2","fields","_state$accounts$usage6","_state$accounts$usage10","_state$accounts$usage14","listFields","treeFields","listDiffFields","treeDiffFields","defaultTreeColumns","defaultListColumns","defaultListFoldersColumns","firstNotEmpty","a1","a2","getAccountUsageVisibleColumns","getSettingsAccountUsageColumnsTree","getSettingsAccountUsageColumnsList","getSettingsAccountUsageColumnsListFolders","treeColumns","listColumns","listFoldersColumns","getAccountUsageSelectableColumns","ACCOUNT_USAGE_UNAVAILABLE_FIELDS","has","Set","getAccountUsageVisibleDataColumns","selectableColumns","userColumns","getFilterFromToTimestamps","older","timestamp","now","newer","fetchAccountUsageListDiff","getState","timestamps","params","getFilterParameters","ACCOUNTS_USAGE_LIST_DIFF_REQUEST","axios","request","method","url","accountUsageApiUrl","withCredentials","then","isEqual_","ACCOUNTS_USAGE_LIST_DIFF_SUCCESS","_error$response","ACCOUNTS_USAGE_LIST_DIFF_FAILED","fetchAccountUsageTreeDiff","row_filter","ACCOUNTS_USAGE_TREE_DIFF_REQUEST","ACCOUNTS_USAGE_TREE_DIFF_SUCCESS","_error$response2","ACCOUNTS_USAGE_TREE_DIFF_FAILED","handle","getAccountsUsageBasePath","sortStates","path_regexp","owner","field_filters","exclude_map_nodes","sort_order","desc","page","fetchAccountUsageList","ACCOUNTS_USAGE_LIST_REQUEST","ACCOUNTS_USAGE_LIST_SUCCESS","ACCOUNTS_USAGE_LIST_FAILED","fetchAccountUsageTree","ACCOUNTS_USAGE_TREE_REQUEST","ACCOUNTS_USAGE_TREE_SUCCESS","_error$response3","ACCOUNTS_USAGE_TREE_FAILED","fetchAccountUsage","setAccountUsageDataFilter","ACCOUNTS_USAGE_FILTERS_PARTIAL","isEmpty_","_getAccountUsageDateR","openAccountAttributesModal","openModal","promise","timestamp_rounding_policy","AccountUsageColumnsDialogMemo","AccountUsageColumnsDialog","AccountUsageColumnsButton","setVisible","toggleVisibility","handleClose","onClose","visibleColumns","availableColumns","setSettingsAccountUsageColumnsList","setSettingsAccountUsageColumnsListFolders","setSettingsAccountUsageColumnsTree","available","selectedSet","other","isMedium","_item$data","Secondary","PathPart","fragment","fragmentToYSON","__html","unipika","decode","dangerouslySetInnerHTML","_unused","PathFragment","lastFragmentOnly","i","_Fragment","useFetchSnapshots","updateFn","ACCOUNTS_USAGE_SNAPSHOTS_REQUEST","ACCOUNTS_USAGE_SNAPSHOTS_SUCCESS","ACCOUNTS_USAGE_SNAPSHOTS_FAILED","fetchAccountsUsageSnapshots","useUpdater","timeout","SnapshotFilterMemo","SnapshotFilter","PathFilterMemo","PathFilter","OwnerFilterMemo","OwnerFilter","DateRangeFilterMemo","DateRangeFilter","DateRangeTypeFilterMemo","DateRangeTypeFilter","PaginationFilterMemo","PaginationFilter","ViewTypeMemo","ViewType","UsageBreadcrumbsMemo","UsageBreadcrumbs","SnapshotDiffFilterMemo","SnapshotDiffFilter","AccountUsageToolbar","isDiffView","Toolbar","itemsToWrap","node","wrapperClassName","shrinkable","growable","UNDEFINED_SNAPSHOT","string2snapshot","v","snapshot2string","String","useSnapshotItems","reverse_","moment","FromSnapshot","Select","vals","width","ToSnapshot","handleSnapshotChange","SecondaryBold","_useAllUserNamesFilte","Suggest","_items","renderItem","SubjectCard","noLink","popupClassName","_useSelector","Datepicker","range","allowNullableValues","onError","setAccountUsageDataPageIndex","VIEW_TYPE_ITEMS","icon","DiffTitle","setSettingsAccountUsageViewType","pathArr","Breadcrumbs","firstDisplayedItemsCount","lastDisplayedItemsCount","renderRootContent","Link","window","location","pathname","routed","routedPreserveLocation","renderItemContent","AccountActionsField","onAttributeButtonClick","handleOpenAttributeModal","useCallback","navigationUrl","useMemo","makeRoutedURL","Page","NAVIGATION","Flex","gap","alignItems","AttributesButton","withTooltip","tooltipProps","placement","whiteSpace","getRenderSign","getDiffClass","showDiff","sign","DetailTableCell","additionalValue","formatType","totalValue","formatFn","Bytes","justifyContent","diff","tabIndex","CircleInfoIcon","TABLE_SETTINGS","displayIndices","stickyHead","DataTable","MOVING","stickyFooter","stickyTop","STICKY_TOOLBAR_BOTTOM","stickyBottom","syncHeadOnResize","TABLE_SETTINGS_DOUBLE_TOOLBAR","STICKY_DOUBLE_TOOLBAR_BOTTOM","ROW_CLASS_NAME","AccountUsageDetailsHeader","sortOrder","opts","prevSortState","updateSortStateArray","PageCounterMemo","PathHeader","UsageLoaderMemo","UsageLoader","useColumnsByPreset","handleAttributeButtonClick","accountData","columnsByName","Map","iconName","header","render","_item$row","row","acl_status","getIconNameForType","PathView","Warning","disk_space","medium","versionedName","additionalKey","NO_VALUE","DateTime","forEach","UPDATE_TIMEOUT","AccountUsageDetailsList","onlyOnce","ErrorBlock","DataTableYT","rowClassName","useThemeYT","AccountUsageDetailsListDiff","AccountUsageDetailsTree","AccountUsageDetailsTreeDiff","AccountUsageDetailsListMemo","AccountUsageDetailsListDiffMemo","AccountUsageDetailsTreeMemo","AccountUsageDetailsTreeDiffMemo","AccountUsageDetailsDiff","AccountUsageDetailsDiffMemo","AccountUsageDetails","lastViewType","getSettingsAccountUsageViewType","diffContent","AccountsUsageDetailsListLoaderMemo","AccountsUsageDetailsListLoader","AccountsUsageDetailsTreeLoaderMemo","AccountsUsageDetailsTreeLoader","AccountsUsageDetailsTreeDiffLoader","AccountsUsageDetailsListDiffLoader","count","AccountDetailedUsageTab","WithStickyToolbar","doubleHeight","toolbar","Accounts","_UIFactory$getMonitor","_makeTabProps","match","lastVisitedTab","allowUsageTab","showSettings","AccountsTab","tab","show","ACCOUNTS_ALLOWED_ROOT_TABS","usageTab","USAGE","statsTab","STATISTICS","getMonitoringForAccounts","monitoringComponent","urlTemplate","monitoringTitle","monTab","MONITOR","external","formatByParams","ytCluster","ytAccount","makeTabProps","lastTab","tabToRedirect","GENERAL","AccountsRumMeasure","AccountsUpdater","Tabs","ACCOUNTS_DEFAULT_TAB","UI_TAB_SIZE","Switch","Route","AccountsGeneralTab","ACL","AccountsAclTab","AccountsUsageTab","Redirect","getLastVisitedTabs","ACCOUNTS","isFinalStatus","getAccountsIsFinalLoadingStatus","useAppRumMeasureStart","RumMeasureTypes","allowStart","startDeps","useRumMeasureStop","allowStop","stopDeps","isRootAccount","AccountCreateDialog","onSubmit","form","createAccountFromInfo","closeCreateModal","loadEditedAccount","newAccountInfo","values","parentAccount","abcService","currentUserName","isAdmin","_newAccountInfo$respo","responsibles","headerProps","onAdd","pristineSubmittable","initialValues","ROOT_ACCOUNT_NAME","isAbcAllowed","required","visibilityCondition","when","allowRootAccount","isIdmAclAvailable","allowedTypes","connector","editor","getCurrentUserName","createModalVisible","isDeveloper","AccountCreate","infoValue","activeCreateValue","showConfirmMessage","showErrorMessage","openCreateModal","AccountsTopRowContent","clusterUiConfig","getClusterUiConfig","getAccountsMapByName","RowWithName","urlParams","AccountsFavourites","AccountsBreadcrumbs","renderTopRowExtraControlsForAccount","accountAttributes","$attributes","isActiveInFavourites","isActiveAcountInFavourites","favourites","getFavouriteAccounts","handleFavouriteItemClick","setActiveAccount","handleFavouriteToggle","accountsToggleFavourite","bcItems","getActiveAccountBreadcrumbs","handleItemClick","renderBcItem","isCurrent","BreadcrumbLink","some_","_v","calcRootPathname","useRumMeasureStart","subPage","pathEditorRequests","CancelHelper","preparePath","currentPath","create","toSubpath","stringify","loadSuggestions","customFilter","parentPath","ytApiV3Id","YTApiId","pathEditorLoadSuggestions","parameters","attributes","cancellation","saveCancelToken","getValue","nodes","initialPath","suggestions","child","prepared","childPath","dynamic","targetPathBroken","sortBy_","prepareSuggestions","filterByCurrentPath","toLowerCase","hasPartOfPath","isShowCurrentChild","getNextSelectedIndex","suggestion","getPrevSelectedIndex","getCompletedPath","icons","document","string_node","int64_node","uint64_node","double_node","boolean_node","map_node","scheduler_pool_tree_map","scheduler_pool","tablet_cell","journal","table","table_dynamic","replicated_table","chaos_replicated_table","replication_log_table","file","topmost_transaction_map","transaction_map","transaction","nested_transaction","link","getBoolean","rootstock","portal_entrance","cell_node","cell_node_map","sys_node","access_control_object_namespace_map","access_control_object_namespace","access_control_object","clipRule","BreadcrumbsButton","more","BreadcrumbsItem","isPrevCurrent","itemTitle","href","addComponentKeysets","en","BreadcrumbsMore","popupStyle","popupPlacement","staircase","i18n","BreadcrumbsSeparator","renderItemDivider","LastDisplayedItemsCount","FirstDisplayedItemsCount","prepareInitialState","calculated","rootItem","hiddenItems","allItems","getDerivedStateFromProps","constructor","super","handleResize","recalculate","resizeObserver","ResizeObserver","container","componentDidMount","_a","observe","componentDidUpdate","componentWillUnmount","disconnect","ref","renderRootItem","renderMoreItem","renderVisibleItems","availableWidth","offsetWidth","dividers","querySelectorAll","itemsWidths","elem","scrollWidth","GAP_WIDTH","dividersWidths","totalWidth","reduce","total","widths","isLastItem","isItemBeforeLast","Two","visibleItemsStartIndex","DEFAULT_PLACEMENT","id","disablePortal","openDelay","closeDelay","anchorElement","setAnchorElement","tooltipVisible","useTooltipVisible","preventTriggerOnFocus","only","childRef","useForkRef","Popup","open","anchorRef","disableEscapeKeyDown","disableOutsideClick","disableLayer","anchor","showTooltip","hideTooltip","initialState","setValue","val","useBoolean","timeoutRef","isFocusWithinRef","addEventListener","handleMouseEnter","handleMouseLeave","handleFocusWithin","handleBlurWithin","removeEventListener","clearTimeout","setTimeout","activeElement","target","contains","relatedTarget","ESCAPE"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"js/accounts.badfc837.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/CollapsibleSection/CollapsibleSection.tsx","webpack://@ytsaurus/ui/./src/ui/components/PageCounter/PageCounter.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnHeader/ColumnHeader.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnSelector/ColumnSelector.js","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/modal-no-content.svg","webpack://@ytsaurus/ui/./src/ui/components/ColumnSelectorModal/ColumnSelectorModal.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/controls/RoleListControl/utils.ts","webpack://@ytsaurus/ui/./src/ui/components/Dialog/DialogError.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/index.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withDelayedMount.tsx","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/ElementsTableFooter.js","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withStickyFooter.js","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withStickyHead.js","webpack://@ytsaurus/ui/./src/ui/components/Favourites/Favourites.tsx","webpack://@ytsaurus/ui/./src/ui/components/Pagination/Pagination.js","webpack://@ytsaurus/ui/./src/ui/components/Pagination/SimplePagination.tsx","webpack://@ytsaurus/ui/./src/ui/components/TextInputWithDebounce/TextInputWithDebounce.tsx","webpack://@ytsaurus/ui/./src/ui/components/WarningIcon/WarningIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/common/Datepicker/index.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/global.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/AccountsNoContent.js","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/statistic/AccountStatisticTab.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/acl/AccountsAclTab.js","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/monitor/AccountsMonitorTab.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/accounts/account-usage.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/accounts/account-usage-diff.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/accounts/account-usage.ts","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountUsageColumnsButton.tsx","webpack://@ytsaurus/ui/./src/ui/containers/PathFragment/PathFragment.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountUsageToolbar.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountActionsField.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/DetailTableCell.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountUsageDetails.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/detailed-usage/AccountUsageTab.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/Accounts/Accounts.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/general/Editor/AccountCreateDialog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/general/Editor/AccountCreate.js","webpack://@ytsaurus/ui/./src/ui/pages/accounts/Accounts/AccountsTopRowContent.tsx","webpack://@ytsaurus/ui/./src/ui/rum/rum-app-measures.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/path-editor.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/bars-descending-align-left.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/circle-info.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Breadcrumbs/BreadcrumbsButton.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Breadcrumbs/BreadcrumbsItem.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Breadcrumbs/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Breadcrumbs/BreadcrumbsMore.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Breadcrumbs/BreadcrumbsSeparator.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Breadcrumbs/Breadcrumbs.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Tooltip/Tooltip.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/private/useTooltipVisible/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/private/useBoolean/useBoolean.js"],"sourcesContent":["import React, {Component} from 'react';\nimport block from 'bem-cn-lite';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport './CollapsibleSection.scss';\nimport Icon from '../../components/Icon/Icon';\n\nconst b = block('collapsible-section');\nconst headingCN = block('elements-heading');\n\ntype PropsStateLess = CollapsibleSectionProps & {\n onToggle: Required<CollapsibleSectionProps>['onToggle'];\n};\n\nexport class CollapsibleSectionStateLess extends Component<PropsStateLess> {\n static defaultProps = {\n size: 'm',\n collapsed: false,\n marginDirection: 'top',\n };\n\n toggle = () => {\n const {onToggle} = this.props;\n\n onToggle(!this.props.collapsed);\n };\n\n render() {\n const {\n name,\n children,\n size,\n overview,\n className,\n collapsed,\n marginDirection,\n togglerRightPadding,\n } = this.props;\n\n return (\n <ErrorBoundary>\n <div className={b({margin: marginDirection}, className)}>\n <div className={headingCN({size, overview: 'yes'})}>\n <span\n className={headingCN(\n 'heading',\n {\n clickable: 'yes',\n },\n b('title'),\n )}\n onClick={this.toggle}\n >\n {name}\n <a>\n <Icon\n className={b('toggler', {'right-padding': togglerRightPadding})}\n awesome={collapsed ? 'angle-down' : 'angle-up'}\n />\n </a>\n </span>\n {overview}\n </div>\n\n {!collapsed && <ErrorBoundary>{children}</ErrorBoundary>}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nexport interface CollapsibleSectionProps {\n className?: string;\n name: React.ReactNode;\n collapsed?: boolean;\n onToggle?: (value: boolean) => void;\n\n size?: 'unset' | 'xs' | 's' | 'ss' | 'ns' | 'n' | 'm' | 'l';\n children?: React.ReactNode;\n overview?: React.ReactNode;\n\n marginDirection?: 'top' | 'bottom';\n\n togglerRightPadding?: 'small';\n}\n\nexport default function CollapsibleSection(props: CollapsibleSectionProps) {\n const {onToggle} = props;\n const [collapsed, setCollapsed] = React.useState(props.collapsed);\n\n const onChange = React.useCallback(\n (value: boolean) => {\n setCollapsed(value);\n if (onToggle) {\n onToggle(value);\n }\n },\n [setCollapsed, onToggle],\n );\n\n return <CollapsibleSectionStateLess {...props} onToggle={onChange} collapsed={collapsed} />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nconst block = cn('yt-page-counter');\n\nexport interface PageCounterProps {\n className?: string;\n pageIndex?: number;\n pageCount?: number;\n}\n\nfunction PageCounter({pageIndex, pageCount, className}: PageCounterProps) {\n if (pageIndex === undefined || pageCount === undefined) {\n return null;\n }\n\n return pageCount! > 1 ? (\n <span className={block(null, className)}>\n Page: {(pageIndex || 0) + 1} / {pageCount}\n </span>\n ) : null;\n}\n\nexport default React.memo(PageCounter);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport capitalize_ from 'lodash/capitalize';\n\nimport barsDescendingSvg from '@gravity-ui/icons/svgs/bars-descending-align-left.svg';\nimport {Button, DropdownMenu, Icon, Text} from '@gravity-ui/uikit';\n\nimport SortIcon from '../../components/SortIcon/SortIcon';\n\nimport {OrderType, calculateNextOrderValue, nextSortOrderValue} from '../../utils/sort-helpers';\nimport PageCounter, {PageCounterProps} from '../../components/PageCounter/PageCounter';\nimport Loader from '../../components/Loader/Loader';\nimport {rumLogError} from '../../rum/rum-counter';\n\nimport './ColumnHeader.scss';\n\nconst block = cn('column-header');\n\nexport type ColumnInfo<T> = {\n column: T;\n title?: string;\n shortTitle?: string;\n /**\n * Ignored when allowedOrderTypes is defined\n */\n allowUnordered?: boolean;\n /**\n * Ignored when allowedOrderTypes is defined\n */\n withUndefined?: boolean;\n allowedOrderTypes?: Array<OrderType>;\n};\n\nexport type HasSortColumn<T> =\n | (ColumnInfo<T> & {options?: undefined})\n | ({\n title: string;\n shortTitle?: string;\n column: T;\n options: Array<ColumnInfo<T>>;\n } & Partial<Record<keyof Omit<ColumnInfo<T>, 'column' | 'title' | 'shortTitle'>, undefined>>);\n\nexport type ColumnHeaderProps<T extends string = string> = PageCounterProps &\n HasSortColumn<T> & {\n className?: string;\n order?: OrderType;\n multisortIndex?: number;\n onSort?: (\n column: T,\n nextOrder: OrderType,\n options: {currentOrder?: OrderType; multisort?: boolean},\n ) => void;\n\n loading?: boolean;\n\n align?: 'center' | 'left' | 'right';\n };\n\ntype NameTitleContent = {\n nameContent: string;\n titleContent: string;\n};\n\nfunction getNameTitle<T extends string>({\n column,\n title,\n shortTitle,\n}: Pick<ColumnInfo<T>, 'column' | 'title' | 'shortTitle'>): NameTitleContent {\n const t = title ?? capitalize_(column);\n const nameContent = !shortTitle ? t : shortTitle;\n return {nameContent, titleContent: t};\n}\n\nfunction useColumnInfo<T extends string = string>(\n props: ColumnHeaderProps<T>,\n): ColumnInfo<T> & NameTitleContent & {subColumn?: NameTitleContent} {\n if (props.options === undefined) {\n const {column, allowUnordered, withUndefined, title, shortTitle, allowedOrderTypes} = props;\n return {\n column,\n allowUnordered,\n withUndefined,\n allowedOrderTypes,\n ...getNameTitle({column, title, shortTitle}),\n };\n }\n\n const {column: value, options, title, shortTitle} = props;\n const columnData = options.find(({column}) => value === column)!;\n if (!columnData) {\n rumLogError({\n message: 'Unexpected behavior: missing value in ColumnHeader.props.options',\n additional: props,\n });\n }\n return {\n subColumn: getNameTitle({...columnData}),\n ...columnData,\n ...getNameTitle({column: '', title, shortTitle}),\n };\n}\n\nexport default function ColumnHeader<T extends string = string>(props: ColumnHeaderProps<T>) {\n const {className, align, order, onSort, multisortIndex, loading, pageIndex, pageCount} = props;\n const {\n column,\n allowUnordered,\n withUndefined,\n nameContent,\n titleContent,\n allowedOrderTypes,\n subColumn,\n } = useColumnInfo(props);\n\n const changeHandler = React.useCallback(\n (e: React.MouseEvent) => {\n const nextOrder = allowedOrderTypes\n ? calculateNextOrderValue(order, allowedOrderTypes)\n : nextSortOrderValue(order, allowUnordered, withUndefined);\n onSort?.(column, nextOrder, {\n currentOrder: order,\n multisort: e.ctrlKey || e.metaKey,\n });\n },\n [column, order, onSort, allowUnordered, allowedOrderTypes, withUndefined],\n );\n\n const sortable = Boolean(onSort);\n\n return (\n <div className={block(null, className)}>\n <div\n className={block('label-icon', {sortable, align})}\n onClick={sortable ? changeHandler : undefined}\n >\n <span className={block('label')} title={titleContent}>\n {nameContent}\n </span>\n <span className={block('icon')}>\n <SortIcon hidden={!sortable} order={order} />\n </span>\n {multisortIndex !== undefined && (\n <span className={block('multisort')}>\n <sup>{multisortIndex}</sup>\n </span>\n )}\n {Boolean(order) && Boolean(subColumn) && (\n <Text\n className={block('label', {'sub-column': true})}\n variant=\"caption-2\"\n title={subColumn?.titleContent}\n color=\"dark-secondary\"\n >\n {subColumn?.nameContent}\n </Text>\n )}\n </div>\n <SubColumnSelector options={props.options} order={order} onSort={onSort} />\n {loading !== undefined && (\n <div className={block('loader')}>\n <Loader visible={loading} />\n </div>\n )}\n {Boolean(pageCount) && (\n <PageCounter\n className={block('page-counter')}\n pageIndex={pageIndex}\n pageCount={pageCount}\n />\n )}\n </div>\n );\n}\n\nfunction SubColumnSelector<T extends string>({\n order,\n options,\n onSort,\n}: Pick<ColumnHeaderProps<T>, 'onSort'> & {\n order?: ColumnHeaderProps<T>['order'];\n options?: Array<ColumnInfo<T>>;\n}) {\n return !options ? null : (\n <DropdownMenu\n items={options.map((x) => {\n const {titleContent} = getNameTitle(x);\n return {\n text: titleContent,\n action() {\n if (!onSort) {\n return;\n }\n const {column, allowUnordered, withUndefined, allowedOrderTypes} = x;\n const nextOrder = allowedOrderTypes\n ? calculateNextOrderValue(order, allowedOrderTypes)\n : nextSortOrderValue(order, allowUnordered, withUndefined);\n onSort(column, nextOrder, {\n currentOrder: order,\n });\n },\n };\n })}\n renderSwitcher={({onClick}) => (\n <Button onClick={onClick} view=\"flat\" size=\"xs\">\n <Icon size={12} data={barsDescendingSvg} />\n </Button>\n )}\n />\n );\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport {sortableContainer, sortableElement, sortableHandle} from 'react-sortable-hoc';\nimport ReactList from 'react-list';\n\nimport each_ from 'lodash/each';\nimport escapeRegExp_ from 'lodash/escapeRegExp';\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport partition_ from 'lodash/partition';\nimport reduce_ from 'lodash/reduce';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Icon from '../../components/Icon/Icon';\n\nimport {renderText} from '../../components/templates/utils';\n\nimport './ColumnSelector.scss';\nimport Button from '../Button/Button';\n\nconst b = cn('column-selector');\n\nexport function makeItemsCopy(items) {\n return map_(items, (item) => {\n return {...item};\n });\n}\n\nconst DragHandle = sortableHandle(() => (\n <div className={b('drag-handle')}>\n <Icon face=\"solid\" awesome=\"list\" />\n </div>\n));\n\nconst SortableItem = sortableElement(\n ({\n item,\n isSortable,\n isSelectable,\n isDisabled,\n itemRenderer,\n onCheckBoxChange,\n withClickableHandler,\n }) => {\n const active = !isDisabled && !item.disabled;\n const className = b('list-item', {\n selected: item.checked && active && 'yes',\n selectable: isSelectable && active && 'yes',\n disabled: !active && 'yes',\n });\n\n return (\n <div className={className}>\n {isSortable && item.checked && <DragHandle />}\n <div className={b('list-item-name')}>\n {item.keyColumn && <Icon awesome=\"key\" />}\n {itemRenderer(item)}\n </div>\n {active && withClickableHandler && (\n <span\n className={b('list-item-check')}\n onClick={onCheckBoxChange}\n data-item={item.name}\n >\n <Icon awesome=\"check\" />\n </span>\n )}\n {!active && <Icon className={b('list-item-lock')} awesome=\"lock\" />}\n </div>\n );\n },\n);\n\nconst SortableList = sortableContainer(\n ({\n items,\n isSortable,\n isDisabled,\n itemRenderer,\n onCheckBoxChange,\n isSelectable,\n useStaticSize,\n withClickableHandler = true,\n }) => {\n const renderer = (index, key) => {\n const item = items[index];\n return (\n <SortableItem\n key={key}\n index={index}\n item={item}\n disabled={!isSortable}\n isSortable={isSortable}\n isDisabled={isDisabled}\n isSelectable={isSelectable}\n itemRenderer={itemRenderer}\n onCheckBoxChange={onCheckBoxChange}\n withClickableHandler={withClickableHandler}\n />\n );\n };\n // Use 'simple' placement for draggable items because 'uniform' produces bugs when items are dragged outside the viewport\n const type = isSortable ? 'simple' : 'uniform';\n const mods = {'static-size': useStaticSize};\n\n return (\n <div className={b('list', mods)}>\n <ReactList itemRenderer={renderer} length={items.length} type={type} />\n </div>\n );\n },\n);\n\nexport default class ColumnSelector extends Component {\n static itemsProps = PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n keyColumn: PropTypes.bool,\n caption: PropTypes.string,\n disabled: PropTypes.bool,\n }),\n );\n\n static propTypes = {\n className: PropTypes.string,\n items: ColumnSelector.itemsProps.isRequired,\n showDisabledItems: PropTypes.bool,\n isSortable: PropTypes.bool,\n isSelectable: PropTypes.bool,\n isFilterable: PropTypes.bool,\n showSelectedOnly: PropTypes.bool,\n isHeadless: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n children: PropTypes.node,\n itemRenderer: PropTypes.func,\n };\n\n static defaultProps = {\n itemRenderer: ({name, caption = name}) => renderText(caption, {asHTML: false}),\n isSortable: false,\n isHeadless: false,\n isSelectable: true,\n isFilterable: true,\n showSelectedOnly: false,\n };\n\n constructor(props) {\n const {items, isHeadless, showSelectedOnly} = props;\n super(props);\n\n const state = {\n showSelectedOnly,\n filter: '',\n };\n if (isHeadless) {\n Object.assign(state, {items: makeItemsCopy(items)});\n }\n this.state = state;\n }\n\n get items() {\n return this.props.isHeadless ? this.state.items : this.props.items;\n }\n\n get buttonALLisDisabled() {\n return this.items.every((item) => item.checked);\n }\n\n get buttonNONEisDisabled() {\n return !this.items.some((item) => item.checked);\n }\n\n /*\n Takes items from the proper place (props or state), modifies them and writes them back at the same place.\n */\n withActualItems(func) {\n const {onChange} = this.props;\n // headless widget keeps its state to itself, but calls onChange as a way of notifying caller about changes\n if (this.props.isHeadless) {\n const {items} = func({items: this.state.items || []});\n this.setState({items}, () => {\n onChange({items: [...this.state.items]});\n });\n } else {\n // widget inside modal passes all changes to the modal component where they are put into state\n const {items} = func({items: this.props.items || []});\n onChange({items: [...items]});\n }\n }\n\n toggleItem = (name) => {\n this.withActualItems(({items}) => {\n items = [...items];\n const index = items.findIndex((item) => item.name === name);\n const changedItem = items[index];\n items[index] = {...changedItem, checked: !changedItem.checked};\n\n return {items};\n });\n };\n\n selectAllItems = () => {\n this.withActualItems(({items}) => {\n const visibleMap = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleMap[item.name]) {\n return;\n }\n if (!item.checked && !item.disabled) {\n items[index] = {...item, checked: true};\n }\n });\n\n return {items};\n });\n };\n\n deselectAllItems = () => {\n this.withActualItems(({items}) => {\n const visibleMap = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleMap[item.name]) {\n return;\n }\n if (item.checked && !item.disabled) {\n items[index] = {...item, checked: false};\n }\n });\n\n return {items};\n });\n };\n\n invertItems = () => {\n this.withActualItems(({items}) => {\n const visibleItems = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleItems[item.name]) {\n return;\n }\n if (!item.disabled) {\n items[index] = {...item, checked: !item.checked};\n }\n });\n\n return {items};\n });\n };\n\n _handleCheckBoxChange = (event) => {\n this.toggleItem(event.currentTarget.getAttribute('data-item'));\n };\n\n _handleSortEnd = ({oldIndex, newIndex}) => {\n if (oldIndex === newIndex) {\n return;\n }\n\n this.withActualItems(({items}) => {\n items = [...items];\n\n const {items: visibleItems} = this.getVisibleItems();\n const fromIndex = items.findIndex((item) => item.name === visibleItems[oldIndex].name);\n const toIndex = items.findIndex((item) => item.name === visibleItems[newIndex].name);\n\n const [removed] = items.splice(fromIndex, 1);\n items.splice(toIndex, 0, removed);\n\n return {items};\n });\n };\n\n _handleDefaultSort = () => {\n this.withActualItems(({items}) => {\n return {\n items: items.sort((a, b) => {\n const aCaption = a.caption || a.name;\n const bCaption = b.caption || b.name;\n\n return aCaption.localeCompare(bCaption);\n }),\n };\n });\n };\n\n _toggleShownItems = () => {\n this.setState((prevState) => ({\n showSelectedOnly: !prevState.showSelectedOnly,\n }));\n };\n\n _changeFilter = (filter) => {\n this.setState({filter});\n };\n\n renderSearchBox() {\n return (\n <TextInput\n placeholder=\"Search...\"\n onUpdate={this._changeFilter}\n value={this.state.filter}\n hasClear={true}\n />\n );\n }\n\n renderControls() {\n const {isFilterable, isSelectable, isSortable, isHeadless} = this.props;\n const btnProps = {\n size: 'm',\n className: b('controls-item'),\n };\n\n return (\n <div className={b('controls')}>\n {isFilterable && this.renderSearchBox()}\n {isHeadless && (\n <Button {...btnProps} onClick={this._toggleShownItems}>\n Selected \n <span className=\"elements-secondary-text\">\n {filter_(this.items, (item) => item.checked).length}\n </span>\n </Button>\n )}\n {isSelectable && (\n <Button\n {...btnProps}\n disabled={this.buttonALLisDisabled}\n onClick={this.selectAllItems}\n >\n Add all\n </Button>\n )}\n {isSelectable && (\n <Button {...btnProps} onClick={this.invertItems}>\n Invert list\n </Button>\n )}\n {!isSelectable && (\n <Button\n {...btnProps}\n disabled={this.buttonNONEisDisabled}\n onClick={this.deselectAllItems}\n >\n Remove all\n </Button>\n )}\n {isSortable && (\n <Button {...btnProps} onClick={this._handleDefaultSort}>\n Default sort\n </Button>\n )}\n </div>\n );\n }\n\n filterItemsByName(items) {\n const re = new RegExp(escapeRegExp_(this.state.filter), 'i');\n return filter_(items, (item) => re.test(item.name));\n }\n\n filterItems(items) {\n const {showDisabledItems} = this.props;\n items = showDisabledItems ? items : filter_(items, (item) => !item.disabled);\n\n const visibleItems = this.filterItemsByName(items);\n return this.state.showSelectedOnly\n ? filter_(visibleItems, (item) => item.checked)\n : visibleItems;\n }\n\n getVisibleItems() {\n const toSplit = this.filterItems(this.items);\n const [keyItems, items] = partition_(toSplit, (item) => item.keyColumn);\n return {items, keyItems};\n }\n\n getVisibleItemsMap() {\n return reduce_(\n this.filterItems(this.items),\n (acc, item) => {\n acc[item.name] = item;\n return acc;\n },\n {},\n );\n }\n\n renderList() {\n const {isSortable, isSelectable, itemRenderer, children, isHeadless} = this.props;\n\n const {items, keyItems} = this.getVisibleItems();\n\n const className = b(\n 'content',\n {\n headless: isHeadless ? undefined : 'no',\n empty: items.length ? undefined : 'yes',\n },\n 'pretty-scroll',\n );\n\n return (\n <div className={className}>\n {keyItems.length > 0 && (\n <React.Fragment>\n <SortableList\n lockAxis=\"y\"\n isDisabled={false}\n isSortable={false}\n isSelectable={isSelectable}\n items={keyItems}\n itemRenderer={itemRenderer}\n helperClass={b('list-item', {helper: 'yes'})}\n onCheckBoxChange={this._handleCheckBoxChange}\n />\n {items.length > 0 && <div className={b('separator')} />}\n </React.Fragment>\n )}\n {items.length > 0 && (\n <SortableList\n items={items}\n isSelectable={isSelectable}\n isSortable={isSortable}\n itemRenderer={itemRenderer}\n lockAxis=\"y\"\n helperClass={b('list-item', {helper: 'yes'})}\n onSortEnd={this._handleSortEnd}\n onCheckBoxChange={this._handleCheckBoxChange}\n useDragHandle\n />\n )}\n {!keyItems.length && !items.length && children}\n </div>\n );\n }\n\n render() {\n const {isHeadless, isSortable, className} = this.props;\n const classNames = b(\n {\n headless: isHeadless ? 'yes' : undefined,\n sortable: isSortable ? undefined : 'no',\n },\n className,\n );\n return (\n <div className={classNames}>\n {this.renderControls()}\n {this.renderList()}\n </div>\n );\n }\n}\n","const SvgModalNoContent = props => <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 194 194\" {...props}><g fill=\"none\" fillRule=\"evenodd\" stroke=\"#999\" opacity={0.22}><path strokeWidth={2} d=\"M97.116 188.443h1v1h-1zM96.424 185.293h1.1v1h-1.1zM95.374 182.143h2.34v1h-2.34zM94.324 178.993h4.2v1h-4.2zM93.273 175.842h6.679v1h-6.679zM91.173 172.692h9.779v1h-9.779zM89.597 169.542h13.499v1H89.597zM87.496 166.391h17.839v1H87.496zM84.871 163.241h22.798v1H84.871zM81.719 160.091h28.998v1H81.719zM78.043 156.94h35.817v1H78.043zM73.842 153.623h45.117v1H73.842z\" /><ellipse cx={96.77} cy={96.61} strokeWidth={8} rx={92.403} ry={92.61} /><ellipse cx={96.669} cy={96.371} strokeWidth={4} rx={37.057} ry={37.141} /><ellipse cx={97.269} cy={96.915} strokeWidth={8} rx={11.499} ry={11.532} /><path strokeLinecap=\"square\" strokeWidth={4} d=\"M34.504 34.653 66.12 66.34\" /><path strokeDasharray=\"8,8\" strokeWidth={4} d=\"M33.023 44.104V148.48M160.116 44.104V148.48\" /><path strokeLinecap=\"square\" strokeWidth={4} d=\"M159.603 34.653 127.986 66.34M34.504 159.798l31.617-31.685M159.603 159.798l-31.617-31.685\" /></g></svg>;\nexport default SvgModalNoContent;","import React from 'react';\nimport hammer from '../../common/hammer';\nimport block from 'bem-cn-lite';\n\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport Modal from '../Modal/Modal';\nimport ColumnSelector, {makeItemsCopy} from '../ColumnSelector/ColumnSelector';\nimport NoContentImage from '../../assets/img/svg/modal-no-content.svg';\n\nimport './ColumnSelectorModal.scss';\n\nconst b = block('column-selector-modal');\n\nexport type ColumnSelectorModalProps<DataT> = {\n items: Array<ColumnSelectorItem<DataT>>;\n srcItems: Array<ColumnSelectorItem<DataT>>;\n isVisible?: boolean;\n onChange: (items: Array<ColumnSelectorItem<DataT>>) => void;\n onConfirm: (items: Array<ColumnSelectorItem<DataT>>) => void;\n onCancel: () => void;\n\n itemRenderer: (item: ColumnSelectorItem<DataT>) => React.ReactNode;\n entity: string;\n};\n\nexport type ColumnSelectorItem<DataT> = {\n name: string;\n checked: boolean;\n data: DataT;\n disabled?: boolean;\n keyColumn?: boolean;\n};\n\ntype Props<T> = ColumnSelectorModalProps<T>;\n\ntype State<T> = Pick<Props<T>, 'items' | 'srcItems'> & {itemsOrder: Array<string>};\n\nexport default class ColumnSelectorModal<T = never> extends React.Component<Props<T>, State<T>> {\n static defaultProps: Partial<Props<unknown>> = {\n entity: 'columns',\n };\n\n state: State<T> = {\n srcItems: this.props.srcItems || this.props.items,\n items: makeItemsCopy(this.props.items),\n itemsOrder: this._getItemsOrder(this.props.items),\n };\n\n // in React 16.3 there is another way to do it: getDerivedStateFromProps;\n // revise this place once received data is managed by Redux\n componentDidUpdate(prevProps: Props<T>) {\n const {items, srcItems} = this.props;\n if (prevProps.items !== items || prevProps.srcItems !== srcItems) {\n // don't update itemsOrder\n this.setState({\n srcItems: srcItems || this.props.items,\n items: this._getOrderedItems(makeItemsCopy(items)),\n });\n }\n }\n\n _handleCONFIRMButtonClick = () => {\n const {items} = this.state;\n this.props.onConfirm(items);\n };\n\n _handleCANCELButtonClick = () => {\n const {items} = this.props;\n const order = this._getItemsOrder(items);\n // reset state to initial on cancel\n this.setState({\n items: this._getOrderedItems(makeItemsCopy(items)),\n itemsOrder: order,\n });\n this.props.onCancel();\n };\n\n _getItemsOrder(items: Props<T>['items']) {\n return map_(items, (item) => item.name);\n }\n\n _getOrderedItems(items: Props<T>['items'], order = this.state.itemsOrder) {\n return items.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name));\n }\n\n _getSelectorProps<P>(props: P, items: Props<T>['items']) {\n return {\n ...props,\n items,\n showDisabledItems: true,\n isHeadless: false,\n isFilterable: true,\n onChange: this.onSourceChange,\n };\n }\n\n _getSortableSelectorProps<P>(props: P, items: Props<T>['items']) {\n return {\n ...props,\n items,\n isSelectable: false,\n isSortable: true,\n showSelectedOnly: true,\n onChange: this.onDestinationChange,\n };\n }\n\n calculateSrcItems(newItemsMap: Record<string, ColumnSelectorItem<T>>) {\n return map_(this.state.srcItems, (item) => {\n const newItem = newItemsMap[item.name];\n\n if (newItem && newItem.checked !== item.checked) {\n return newItem;\n }\n\n return item;\n });\n }\n\n onSourceChange = ({items: newItems}: Pick<Props<T>, 'items'>) => {\n const {items} = this.state;\n const newItemsMap = reduce_(\n newItems,\n (acc, data) => {\n acc[data.name] = data;\n return acc;\n },\n {} as Record<string, ColumnSelectorItem<T>>,\n );\n\n const unchanged: Props<T>['items'] = [];\n const changed: Props<T>['items'] = [];\n forEach_(items, (item) => {\n const newItem = newItemsMap[item.name];\n if (newItem && newItem.checked !== item.checked) {\n const dst = newItem.keyColumn ? unchanged : changed;\n dst.push(newItem);\n } else {\n unchanged.push(item);\n }\n });\n\n const preparedItems = unchanged.concat(changed);\n // don't update itemsOrder\n this.setState({\n items: this._getOrderedItems(preparedItems),\n srcItems: this.calculateSrcItems(newItemsMap),\n });\n };\n\n onDestinationChange = ({items: newItems}: Pick<Props<T>, 'items'>) => {\n const newItemsMap = reduce_(\n newItems,\n (acc, data) => {\n acc[data.name] = data;\n return acc;\n },\n {} as Record<string, ColumnSelectorItem<T>>,\n );\n\n const order = this._getItemsOrder(newItems);\n\n this.setState({\n items: this._getOrderedItems(newItems, order),\n itemsOrder: order,\n srcItems: this.calculateSrcItems(newItemsMap),\n });\n };\n\n renderColumnSelector({\n props,\n title,\n description,\n className,\n }: {\n props: object;\n title: string;\n description: string;\n className?: string;\n }) {\n return (\n <ColumnSelector {...props} className={className}>\n <div className={b('no-content')}>\n <p>\n <strong>{title}</strong>\n </p>\n <p>{description}</p>\n <NoContentImage />\n </div>\n </ColumnSelector>\n );\n }\n\n renderContent() {\n const {isVisible, entity, ...rest} = this.props; // eslint-disable-line\n const {items, srcItems} = this.state;\n\n const headingCN = block('elements-heading')({size: 's'}, b('header'));\n\n const selectorProps = this._getSelectorProps(rest, srcItems);\n const sortableSelectorProps = this._getSortableSelectorProps(selectorProps, items);\n const selectedItemsCount = reduce_(\n sortableSelectorProps.items,\n (acc, item) => (item.disabled || !item.checked ? acc : ++acc),\n 0,\n );\n\n return (\n isVisible && (\n <div className={b()}>\n <div className={b('panel', {left: 'yes'})}>\n <div className={headingCN}>\n All \n <span className=\"elements-secondary-text\">{srcItems.length}</span>\n </div>\n\n {this.renderColumnSelector({\n props: selectorProps,\n title: `No available ${entity}`,\n description: `No ${entity} matching your filtering criteria`,\n })}\n </div>\n\n <div className={b('panel')}>\n <div className={headingCN}>\n Selected \n <span className=\"elements-secondary-text\">{selectedItemsCount}</span>\n </div>\n\n {this.renderColumnSelector({\n props: sortableSelectorProps,\n title: `No selected ${entity}`,\n description: `Add ${entity} you need from the All section.`,\n })}\n </div>\n </div>\n )\n );\n }\n\n render() {\n const {isVisible, entity} = this.props;\n const title = `${hammer.format['FirstUppercase'](entity)} setup`;\n\n return (\n <Modal\n size=\"l\"\n title={title}\n borderless={true}\n visible={isVisible}\n confirmText=\"Apply\"\n onConfirm={this._handleCONFIRMButtonClick}\n onCancel={this._handleCANCELButtonClick}\n content={this.renderContent()}\n contentClassName=\"column-selector-modal-content\"\n />\n );\n }\n}\n","import cn from 'bem-cn-lite';\n\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\n\nimport type {EditableManyListsItemType} from '../../../../components/Dialog';\nimport type {ResponsibleType, RoleConverted} from '../../../../utils/acl/acl-types';\nimport type {PreparedRole} from '../../../../utils/acl';\nimport {RoleListControlProps} from './RoleListControl';\n\nexport const block = cn('role-list-control');\n\nexport function prepareRoleListValue(roles: Array<PreparedRole>, otherMembers: Array<string> = []) {\n const current: typeof roles = [];\n const toAdd: typeof roles = [];\n const toRemove: typeof roles = [];\n const unrecognized: typeof roles = [];\n forEach_(roles, (item) => {\n const {isUnrecognized, isRequested, isApproved, isDepriving} = item;\n if (isUnrecognized) {\n unrecognized.push(item);\n } else if (isDepriving) {\n toRemove.push(item);\n } else if (isApproved || isRequested) {\n toAdd.push(item);\n } else {\n current.push(item);\n }\n });\n\n const currentArr = current.map((item) => prepareItemOfCurrent(item));\n const otherArr = otherMembers.map((item) => ({\n title: item,\n data: {},\n frozen: true,\n }));\n\n return {\n newItems: [],\n current: {title: 'Current', data: currentArr.concat(otherArr)},\n toAdd: {\n title: 'Will be added',\n itemClassName: block('item-to-add'),\n data: toAdd.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n toRemove: {\n title: 'Will be removed',\n itemClassName: block('item-to-remove'),\n data: toRemove.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n unrecognized: {\n title: 'Unrecognized',\n itemClassName: block('item-unrecognized'),\n data: unrecognized.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n };\n}\n\nfunction prepareItemOfCurrent(role: PreparedRole, extraProps: any = {}) {\n return {\n title: role.text || role.value,\n data: role,\n ...extraProps,\n };\n}\n\nexport function roleListValueToSubjectList(\n value: RoleListControlProps['value'],\n): Array<ResponsibleType> {\n const {current, newItems, toAdd} = value;\n return [\n ...newItems,\n ...manyListDataItemToSubjectList(current),\n ...manyListDataItemToSubjectList(toAdd),\n ];\n}\n\nfunction manyListDataItemToSubjectList(\n manyListDataItem: EditableManyListsItemType<RoleConverted>,\n): Array<ResponsibleType> {\n const {data} = manyListDataItem || {};\n return map_(\n filter_(data, ({removed}) => !removed),\n ({data}) => {\n const {type, value} = data || {};\n return {type: type!, value: value!};\n },\n );\n}\n\nexport function extractChangedSubjects(value: {\n current: EditableManyListsItemType<RoleConverted>;\n newItems: Array<ResponsibleType>;\n}) {\n const {current, newItems} = value;\n const added = newItems || [];\n const removed = ((current && current.data) || []).filter(({removed}) => removed);\n return {\n added: added.map(({type, value}) => {\n return type === 'users' ? {user: value} : {group: value};\n }),\n removed: removed.map(({data}) => {\n const {value, type} = data || {};\n return type === 'users' ? {user: value} : {group: value};\n }),\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport type {FORM_ERROR as FormErrorType} from './index';\n\nimport {FIX_MY_TYPE, YTError} from '../../types';\nimport Block from '../../components/Block/Block';\n\nimport compact_ from 'lodash/compact';\nimport map_ from 'lodash/map';\n\nconst block = cn('yt-dialog-error');\n\nexport function DialogError(props: FIX_MY_TYPE) {\n return <Block {...props} className={block()} />;\n}\n\nexport function makeErrorFields(errors: Array<YTError | Error | undefined>) {\n return compact_(\n map_(errors, (error, index) => {\n return error\n ? {\n name: `error_${index}`,\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n }\n : undefined;\n }),\n );\n}\n\nconst FORM_ERROR: typeof FormErrorType = 'FINAL_FORM/form-error';\n\nexport function makeFormSubmitError(error: YTError) {\n return {\n validationErrors: {\n [FORM_ERROR]: <DialogError error={error} />,\n },\n };\n}\n","import React from 'react';\nimport withLazyLoading from '../../hocs/withLazyLoading';\nimport {withDelayedMount} from '../../hocs/withDelayedMount';\n\nimport type {\n registerDialogControl as RegisterDialogControlFn,\n registerDialogTabControl as RegisterDialogTabControlFn,\n YTDialogType,\n} from './Dialog';\n\nexport type * from './Dialog';\nexport * from './DialogError';\nexport * from './controls/RoleListControl/utils';\n\nexport function importYTDFDialog() {\n return import(/* webpackChunkName: \"yt-df-dialog\" */ './Dialog');\n}\n\nexport const YTDFDialog = withDelayedMount(\n withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).YTDialog};\n }),\n '',\n ),\n) as YTDialogType;\n\nexport function useControlRegistration(\n fn: (params: {\n registerDialogControl: typeof RegisterDialogControlFn;\n registerDialogTabControl: typeof RegisterDialogTabControlFn;\n }) => void,\n) {\n importYTDFDialog().then(({registerDialogControl, registerDialogTabControl}) => {\n fn({registerDialogControl, registerDialogTabControl});\n });\n}\n\nexport type {RoleListControlProps} from './controls/RoleListControl/RoleListControl';\nexport const RoleListControl = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).RoleListControl};\n }),\n '',\n);\n\nexport const EditableList = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).EditableList};\n }),\n '',\n);\n\nexport const TabFieldVertical = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).TabFieldVertical};\n }),\n '',\n);\n","import React from 'react';\n\n/**\n * The hoc allows to delay mounting until `props.visible == true`.\n * The hoc might be useful to wrap components wrapped by React.lazy\n * @param Component\n * @returns\n */\nexport function withDelayedMount<P extends {visible?: boolean}>(Component: React.ComponentType<P>) {\n return function MountOnFirstVisible(props: P) {\n const [mounted, setMounted] = React.useState(false);\n React.useEffect(() => {\n if (!mounted && props.visible) {\n setMounted(true);\n }\n }, [props.visible, mounted]);\n return !mounted ? null : <Component {...props} />;\n };\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport ElementsTableRow from '../../components/ElementsTable/ElementsTableRow';\n\nimport {ELEMENTS_TABLE, TemplatesPropType, prepareColumnsData} from './utils';\n\nimport './ElementsTable.scss';\n\nexport default class ElementsTableFooter extends Component {\n static propTypes = {\n footer: PropTypes.object.isRequired,\n templates: TemplatesPropType.isRequired,\n cssHover: PropTypes.bool,\n };\n\n static defaultProps = {\n templates: {},\n cssHover: false,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {};\n }\n\n static getDerivedStateFromProps(props) {\n const {columns} = props;\n const {items, set} = prepareColumnsData(columns);\n\n return {\n columnItems: items,\n columnSet: set,\n };\n }\n\n renderRow(item, index, key = index) {\n const {css, itemHeight, templates, itemMods, selectedIndex, computeKey, cssHover} =\n this.props;\n const {columnSet, columnItems} = this.state;\n\n const selected = selectedIndex === index;\n const currentKey = typeof computeKey === 'function' ? computeKey(item) : key;\n\n return (\n <ElementsTableRow\n key={currentKey}\n columnSet={columnSet}\n columnItems={columnItems}\n item={item}\n itemHeight={itemHeight}\n css={css}\n templates={templates}\n selected={selected}\n index={index}\n itemMods={itemMods}\n cssHover={cssHover}\n />\n );\n }\n\n render() {\n const bFooter = block(ELEMENTS_TABLE)('footer');\n const {footer} = this.props;\n\n return <tfoot className={bFooter}>{this.renderRow(footer, 0)}</tfoot>;\n }\n}\n","import React from 'react';\nimport block from 'bem-cn-lite';\n\nimport ElementsTableFooter from '../../../components/ElementsTable/ElementsTableFooter';\n\nimport {getDisplayName} from '../../../utils';\nimport {prepareTableClassName} from '../../../components/ElementsTable/utils';\n\nimport '../ElementsTable.scss';\n\nexport default (Component) => {\n return class WithStickyFooter extends React.Component {\n static displayName = `WithStickyFooter(${getDisplayName(Component)})`;\n\n static defaultProps = {\n size: 'm',\n };\n\n renderStickyFooter() {\n const bWrapper = block('elements-table-wrapper')({\n sticky: 'bottom',\n });\n const {footer} = this.props;\n\n return (\n <div className={bWrapper}>\n <table className={prepareTableClassName(this.props)}>\n <ElementsTableFooter {...this.props} footer={footer} />\n </table>\n </div>\n );\n }\n\n render() {\n return (\n <React.Fragment>\n <Component {...this.props} />\n {this.props.footer && this.renderStickyFooter()}\n </React.Fragment>\n );\n }\n };\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\nimport {compose} from 'redux';\nimport block from 'bem-cn-lite';\n\nimport ElementsTableHeader from '../../../components/ElementsTable/ElementsTableHeader';\n\nimport {toggleColumnSortOrder} from '../../../store/actions/tables';\nimport {getDisplayName} from '../../../utils';\nimport {prepareTableClassName} from '../../../components/ElementsTable/utils';\nimport {HEADER_HEIGHT} from '../../../constants/index';\n\nimport '../ElementsTable.scss';\n\nconst withStickyHead = (Component) => {\n return class WithStickyHead extends React.Component {\n static displayName = `WithStickyHead(${getDisplayName(Component)})`;\n\n static propTypes = {\n top: PropTypes.number,\n };\n\n static defaultProps = {\n templates: {},\n size: 'm',\n theme: 'bordered',\n padded: false,\n striped: true,\n top: HEADER_HEIGHT,\n };\n\n renderStickyHead() {\n const {top} = this.props;\n const bWrapper = block('elements-table-wrapper')({sticky: 'top'});\n\n return (\n <div className={bWrapper} style={{top}}>\n <table className={prepareTableClassName(this.props)}>\n <ElementsTableHeader {...this.props} />\n </table>\n </div>\n );\n }\n\n render() {\n return (\n <React.Fragment>\n {this.renderStickyHead()}\n <Component {...this.props} />\n </React.Fragment>\n );\n }\n };\n};\n\nconst mapStateToProps = ({tables}) => {\n return {sortState: tables};\n};\n\nconst mapDispatchToProps = {\n toggleColumnSortOrder,\n};\n\nconst composedWithStickyHead = compose(\n connect(mapStateToProps, mapDispatchToProps),\n withStickyHead,\n);\n\nexport default composedWithStickyHead;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Button, ButtonProps, DropdownMenu} from '@gravity-ui/uikit';\n\nimport Icon from '../Icon/Icon';\nimport Hotkey from '../../components/Hotkey/Hotkey';\n\nimport './Favourites.scss';\n\nconst b = block('favourites');\n\ninterface Props {\n className?: string;\n isActive: boolean;\n items: Array<FavouritesItem>;\n onItemClick: (item: FavouritesItem) => void;\n toggleDisabled?: boolean;\n onToggle: () => void;\n theme?: 'clear';\n}\n\nexport interface FavouritesItem {\n path: string;\n}\n\ninterface State {\n isActive: boolean;\n}\n\nexport default class Favourites extends Component<Props, State> {\n static itemType = PropTypes.shape({\n path: PropTypes.string,\n });\n\n static propTypes = {\n isActive: PropTypes.bool.isRequired,\n items: PropTypes.arrayOf(Favourites.itemType),\n onItemClick: PropTypes.func,\n toggleDisabled: PropTypes.bool,\n onToggle: PropTypes.func,\n className: PropTypes.string,\n theme: PropTypes.string,\n };\n\n static getDerivedStateFromProps(props: Props, state: State) {\n if (props.isActive !== state.isActive) {\n return {isActive: props.isActive};\n }\n return null;\n }\n\n state = {\n isActive: this.props.isActive,\n };\n\n toggleActive = () => {\n const {onToggle} = this.props;\n\n this.setState((prevState) => ({isActive: !prevState.isActive}));\n onToggle();\n };\n\n onItemClick = (item: FavouritesItem) => {\n const {onItemClick} = this.props;\n onItemClick(item);\n };\n\n renderDropDownMenu() {\n const {items} = this.props;\n\n const dropItems = map_(items, (item) => {\n return {\n text: item.path,\n action: () => this.onItemClick(item),\n };\n });\n if (items.length === 0) {\n dropItems.push({\n action: () => {},\n text: 'No favourites',\n });\n }\n\n const switcher = this.renderButton({\n view: 'normal',\n size: 'm',\n pin: 'brick-round',\n title: 'View favourites',\n children: <Icon awesome=\"angle-down\" />,\n });\n\n return (\n <DropdownMenu\n popupProps={{\n className: b('popup', {empty: items.length === 0}),\n }}\n items={dropItems}\n switcher={switcher}\n />\n );\n }\n\n renderHotkey() {\n return <Hotkey settings={[{keys: 'f', handler: this.toggleActive, scope: 'all'}]} />;\n }\n\n renderButton(buttonProps: ButtonProps & {disabled?: boolean}) {\n const {theme} = this.props;\n const themeProps = !theme ? {} : {view: 'outlined' as const};\n return <Button {...buttonProps} {...themeProps} />;\n }\n\n render() {\n const {toggleDisabled, className, theme} = this.props;\n const {isActive} = this.state;\n\n return (\n <div className={b(null, className)}>\n <div className={b('star-btn', {clear: theme === 'clear'})}>\n {this.renderButton({\n view: 'outlined-info',\n selected: isActive,\n size: 'm',\n pin: theme === 'clear' ? 'round-brick' : 'round-clear',\n title: 'Add to favourites [F]',\n onClick: this.toggleActive,\n disabled: toggleDisabled,\n children: <Icon awesome={isActive ? 'star-alt' : 'star'} />,\n })}\n </div>\n {this.renderDropDownMenu()}\n {this.renderHotkey()}\n </div>\n );\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport {TextInput} from '@gravity-ui/uikit';\n\nimport Icon from '../Icon/Icon';\nimport Hotkey from '../../components/Hotkey/Hotkey';\n\nimport './Pagination.scss';\nimport Button from '../Button/Button';\n\nconst paginationControlComponent = PropTypes.shape({\n handler: PropTypes.func,\n target: PropTypes.func,\n disabled: PropTypes.bool,\n hotkey: PropTypes.string,\n hotkeyScope: PropTypes.string,\n hotkeyHandler: PropTypes.func,\n}).isRequired;\n\nconst supportedSizes = ['s', 'm', 'l'];\nconst block = cn('elements-pagination');\n\nexport default class Pagination extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n size: PropTypes.oneOf(supportedSizes),\n first: paginationControlComponent,\n previous: paginationControlComponent,\n next: paginationControlComponent,\n last: paginationControlComponent,\n tooltip: PropTypes.string,\n showInput: PropTypes.bool,\n inputValue: PropTypes.string,\n onChange: PropTypes.func,\n };\n static defaultProps = {\n size: 'm',\n showInput: false,\n };\n\n renderComponent(name, control) {\n const handler = control.handler;\n\n const disabled = typeof control.disabled === 'boolean' ? control.disabled : false;\n\n const {size, tooltip} = this.props;\n const hotkeySettings = [\n {\n keys: control.hotkey,\n scope: control.hotkeyScope,\n handler: control.hotkeyHandler,\n },\n ];\n\n return (\n <span title={tooltip}>\n <Button\n size={size}\n onClick={handler}\n disabled={disabled}\n className={block('control', {name})}\n title={\n {\n first: 'First page',\n previous: 'Previous page',\n next: 'Next page',\n last: 'Last page',\n }[name]\n }\n pin={\n {\n first: 'round-brick',\n previous: 'clear-brick',\n next: 'brick-clear',\n last: 'brick-round',\n }[name]\n }\n >\n <Icon\n awesome={\n {\n first: 'angle-double-left',\n previous: 'angle-left',\n next: 'angle-right',\n last: 'angle-double-right',\n }[name]\n }\n />\n </Button>\n {typeof control.hotkeyHandler !== 'undefined' && (\n <Hotkey settings={hotkeySettings} />\n )}\n </span>\n );\n }\n renderInput() {\n const {showInput, inputValue, onChange, size} = this.props;\n\n return showInput ? (\n <TextInput\n qa=\"yt-pagination_input\"\n size={size}\n type=\"text\"\n value={inputValue}\n onUpdate={onChange}\n pin={'clear-clear'}\n />\n ) : null;\n }\n render() {\n const {first, previous, next, last, className} = this.props;\n\n return (\n <div className={block(null, className)}>\n {this.renderComponent('first', first)}\n {this.renderComponent('previous', previous)}\n {this.renderInput()}\n {this.renderComponent('next', next)}\n {this.renderComponent('last', last)}\n </div>\n );\n }\n}\n","import React from 'react';\nimport Pagination from './Pagination';\n\ninterface Props {\n value?: number;\n min?: number;\n max?: number;\n onChange: (value: number) => void;\n disabled?: boolean;\n step?: number;\n className?: string;\n}\n\nfunction SimplePagination(props: Props) {\n const {value = NaN, min = NaN, max = NaN, onChange, disabled, step = 1, className} = props;\n\n const firstDiff = isNaN(value) || isNaN(min) ? 0 : value - min;\n const lastDiff = isNaN(value) || isNaN(max) ? 0 : max - value;\n\n const handleToFirst = React.useCallback(() => {\n onChange(min);\n }, [min, onChange]);\n\n const handleToPrev = React.useCallback(() => {\n const newValue = value - step;\n onChange(newValue < min ? min : newValue);\n }, [min, value, step, onChange]);\n\n const handleToNext = React.useCallback(() => {\n const newValue = value + step;\n onChange(newValue > max ? max : newValue);\n }, [max, value, step, onChange]);\n\n const handleToLast = React.useCallback(() => {\n onChange(max);\n }, [max, onChange]);\n\n return (\n <Pagination\n className={className}\n first={{\n handler: handleToFirst,\n disabled: firstDiff === 0 || disabled,\n }}\n previous={{\n handler: handleToPrev,\n disabled: firstDiff === 0 || disabled,\n }}\n next={{\n handler: handleToNext,\n disabled: lastDiff === 0 || disabled,\n }}\n last={{\n handler: handleToLast,\n disabled: lastDiff === 0 || disabled,\n }}\n />\n );\n}\n\nexport default React.memo(SimplePagination);\n","import React from 'react';\nimport throttle_ from 'lodash/throttle';\n\nimport {TextInput, TextInputProps} from '@gravity-ui/uikit';\n\nexport interface TextInputWithDebounceProps extends TextInputProps {\n debounce?: number;\n onBlur?: (e: React.FocusEvent) => void;\n onEnterKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nfunction TextInputWithDebounce(props: TextInputWithDebounceProps) {\n const {\n debounce = 400,\n onUpdate = () => {},\n onBlur,\n value,\n onEnterKeyDown,\n onKeyDown,\n ...rest\n } = props;\n\n const [input, setInput] = React.useState<string | undefined>();\n\n const handleChangeExt = React.useMemo(() => {\n return throttle_(onUpdate as any, debounce);\n }, [debounce, onUpdate]);\n\n const handleChange = React.useCallback(\n (text: string) => {\n setInput(text);\n handleChangeExt(text);\n },\n [handleChangeExt, setInput],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyDown) {\n onKeyDown(e);\n }\n if (e.key === 'Enter' && onEnterKeyDown) {\n onEnterKeyDown(e);\n }\n },\n [onEnterKeyDown, onKeyDown],\n );\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setInput(undefined);\n\n if (onBlur) {\n onBlur(e);\n }\n },\n [setInput, onBlur],\n );\n\n return (\n <TextInput\n onUpdate={handleChange}\n {...rest}\n value={input === undefined ? value : input}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n );\n}\n\nexport default React.memo(TextInputWithDebounce);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../Tooltip/Tooltip';\n\nimport './WarningIcon.scss';\n\nconst b = cn('yt-warning-icon');\n\ninterface Props {\n className?: string;\n hoverContent?: React.ReactNode;\n color?: 'warning' | 'danger';\n children?: React.ReactNode;\n}\n\nexport default function WarningIcon(props: Props) {\n const {className, hoverContent, children, color} = props;\n return (\n <span className={b(null, className)}>\n <Tooltip className={b('tooltip')} content={hoverContent}>\n <Icon className={b('icon', {color})} awesome=\"exclamation-triangle\" />\n {children && (\n <Text variant=\"inherit\" color={color}>\n {children}\n </Text>\n )}\n </Tooltip>\n </span>\n );\n}\n","import React, {FC} from 'react';\nimport {Datepicker, DatepickerProps, datepickerDefaultProps} from './Datepicker';\n\nexport * from './Datepicker';\n\nexport const DatePickerWrapper: FC<DatepickerProps> = (props) => <Datepicker {...props} />;\nDatePickerWrapper.defaultProps = datepickerDefaultProps;\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport sortedIndexBy_ from 'lodash/sortedIndexBy';\nimport sortedLastIndexBy_ from 'lodash/sortedLastIndexBy';\n\nimport {getAllUserNamesSorted} from '../store/selectors/global';\nimport {\n loadAccountsIfNotLoaded,\n loadBundlesIfNotLoaded,\n loadGroupsIfNotLoaded,\n loadUsersIfNotLoaded,\n} from '../store/actions/global';\n\nexport function useAllUserNamesFiltered() {\n const dispatch = useDispatch();\n React.useEffect(() => {\n dispatch(loadUsersIfNotLoaded());\n }, []);\n\n const namesSorted = useSelector(getAllUserNamesSorted);\n\n const getFiltered = React.useCallback(\n (text: string) => {\n const from = sortedIndexBy_(namesSorted, text, (item) => item.substr(0, text.length));\n const to = sortedLastIndexBy_(namesSorted, text, (item) => item.substr(0, text.length));\n const res = namesSorted.slice(from, to);\n return res;\n },\n [namesSorted],\n );\n\n return {getFiltered, allNames: namesSorted};\n}\n\nexport function useGroupsLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadGroupsIfNotLoaded());\n }, []);\n}\n\nexport function GroupsLoader({children}: {children?: React.ReactElement}) {\n useGroupsLoaded();\n return children ?? null;\n}\n\nexport function useAccountsLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadAccountsIfNotLoaded());\n }, []);\n}\n\nexport function AccountsLoader() {\n useAccountsLoaded();\n return null;\n}\n\nexport function useBundlesLoaded() {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadBundlesIfNotLoaded());\n }, []);\n}\n\nexport function BundlesLoader() {\n useBundlesLoaded();\n return null;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {NoContent} from '../../components/NoContent/NoContent';\n\nAccountsNoContent.propTypes = {\n hint: PropTypes.node.isRequired,\n};\n\nexport default function AccountsNoContent({hint}) {\n return <NoContent hint={hint} warning=\"You don't have any selected accounts\" />;\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport AccountsNoContent from '../../../../pages/accounts/AccountsNoContent';\nimport {getCluster, getTheme} from '../../../../store/selectors/global';\nimport {\n getActiveAccount,\n getActiveAccountSubtreeNames,\n} from '../../../../store/selectors/accounts/accounts';\nimport UIFactory from '../../../../UIFactory';\n\nfunction AccountStatisticTab() {\n const cluster = useSelector(getCluster);\n const account = useSelector(getActiveAccount);\n const accountSubtreeAllNames = useSelector(getActiveAccountSubtreeNames);\n const theme = useSelector(getTheme);\n\n if (!account) {\n return <AccountsNoContent hint=\"Choose an account to build a forecast\" />;\n }\n\n const AccountStatisticsComponent = UIFactory.getStatisticsComponentForAccount()!;\n\n return (\n <div className={'elements-section'}>\n <AccountStatisticsComponent {...{cluster, account, accountSubtreeAllNames, theme}} />\n </div>\n );\n}\n\nexport default React.memo(AccountStatisticTab);\n","import * as React from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport AccountsNoContent from '../../../../pages/accounts/AccountsNoContent';\n\nimport {getActiveAccount} from '../../../../store/selectors/accounts/accounts';\nimport {fetchAccounts} from '../../../../store/actions/accounts/accounts';\nimport {loadUsers} from '../../../../store/actions/accounts/editor';\nimport {AccountsAcl} from '../../../../containers/ACL';\n\nAccountsAclTab.propTypes = {\n activeAccount: PropTypes.string,\n fetchAccounts: PropTypes.func,\n};\n\nfunction AccountsAclTab(props) {\n const {activeAccount} = props;\n if (!activeAccount) {\n return <AccountsNoContent hint=\"Choose an account to display its ACL\" />;\n }\n\n return <AccountsAcl path={activeAccount} />;\n}\n\nconst mapAccountsAclTabStateToProps = (state) => {\n return {\n activeAccount: getActiveAccount(state),\n };\n};\n\nexport default connect(mapAccountsAclTabStateToProps, {\n fetchAccounts,\n loadUsers,\n})(AccountsAclTab);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport AccountsNoContent from '../../AccountsNoContent';\n\nimport {getActiveAccount} from '../../../../store/selectors/accounts/accounts';\nimport {getCluster} from '../../../../store/selectors/global';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\n\nfunction AccountsMonitorTab(props: {\n component: React.ComponentType<{cluster: string; account: string}>;\n}) {\n const {component: AccountMonitor} = props;\n const account = useSelector(getActiveAccount);\n const cluster = useSelector(getCluster);\n\n if (!account) {\n return <AccountsNoContent hint={'Please choose one to display charts'} />;\n }\n\n return (\n <ErrorBoundary>\n <AccountMonitor {...{account, cluster}} />\n </ErrorBoundary>\n );\n}\n\nexport default React.memo(AccountsMonitorTab);\n","import {RootState} from '../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport {PAGE_SIZE} from '../../reducers/accounts/usage/accounts-usage-filters';\nimport ypath from '../../../common/thor/ypath';\n\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {SortState} from '../../../types';\nimport {\n getSettingsAccountUsageColumnsList,\n getSettingsAccountUsageColumnsListFolders,\n getSettingsAccountUsageColumnsTree,\n} from '../settings-ts';\nimport format from '../../../common/hammer/format';\nimport {AccountUsageDataItem} from '../../reducers/accounts/usage/account-usage-types';\n\nconst ACCOUNT_USAGE_COLUMN_TITLE: Record<string, string> = {\n approximate_row_count: '~Row count',\n master_memory: 'Master mem',\n};\n\nconst MEDIUM_PREFIX = 'medium:';\n\nexport function readableAccountUsageColumnName(column: string, withMediumPrefix?: boolean) {\n const title = ACCOUNT_USAGE_COLUMN_TITLE[column];\n if (title) {\n return title;\n }\n\n const readable =\n !withMediumPrefix && column.startsWith(MEDIUM_PREFIX)\n ? column.substr(MEDIUM_PREFIX.length)\n : column;\n return format.Readable(readable);\n}\n\nexport const getAccountUsageSnapshots = (state: RootState) =>\n state.accounts.usage.snapshots.snapshot_timestamps;\n\nexport const getAccountUsageCurrentSnapshot = (state: RootState) =>\n state.accounts.usage.filters.currentSnapshot;\nexport const getAccountUsageTreePath = (state: RootState) => state.accounts.usage.filters.treePath;\nexport const getAccountUsageSortState = (state: RootState) =>\n state.accounts.usage.filters.sortState;\n\nexport const getAccountUsageViewType = (state: RootState) => state.accounts.usage.filters.viewType;\n\nexport const getAccountUsagePathFilter = (state: RootState) =>\n state.accounts.usage.filters.pathFilter;\nexport const getAccountUsageOwnerFilter = (state: RootState) =>\n state.accounts.usage.filters.ownerFilter;\nexport const getAccountUsageDateRangeFilter = (state: RootState) =>\n state.accounts.usage.filters.dateRange;\nexport const getAccountUsageDateRangeTypeFilter = (state: RootState) =>\n state.accounts.usage.filters.dateRangeType;\nexport const getAccountsUsageDiffFromSnapshot = (state: RootState) =>\n state.accounts.usage.filters.diffFromSnapshot;\nexport const getAccountsUsageDiffToSnapshot = (state: RootState) =>\n state.accounts.usage.filters.diffToSnapshot;\nconst getAccountUsagePageIndexRaw = (state: RootState) => state.accounts.usage.filters.pageIndex;\n\nexport const getAccountUsageListRequestParams = (state: RootState) =>\n state.accounts.usage.list.requestParams;\nexport const getAccountUsageListLoading = (state: RootState) => state.accounts.usage.list.loading;\nexport const getAccountUsageListLoaded = (state: RootState) => state.accounts.usage.list.loaded;\nexport const getAccountUsageListError = (state: RootState) => state.accounts.usage.list.error;\nexport const getAccountUsageListItems = (state: RootState) =>\n state.accounts.usage.list.response?.items || [];\nexport const getAccountUsageListFields = (state: RootState) =>\n state.accounts.usage.list.response?.fields || [];\nexport const getAccountUsageListMediums = (state: RootState) =>\n state.accounts.usage.list.response?.mediums || [];\nexport const getAccountUsageListRowCount = (state: RootState) =>\n state.accounts.usage.list.response?.row_count || 0;\n\nexport const getAccountUsageTreeRequestParams = (state: RootState) =>\n state.accounts.usage.tree.requestParams;\nexport const getAccountUsageTreeLoading = (state: RootState) => state.accounts.usage.tree.loading;\nexport const getAccountUsageTreeLoaded = (state: RootState) => state.accounts.usage.tree.loaded;\nexport const getAccountUsageTreeError = (state: RootState) => state.accounts.usage.tree.error;\nexport const getAccountUsageTreeItems = (state: RootState) =>\n state.accounts.usage.tree.response?.items || [];\nexport const getAccountUsageTreeFields = (state: RootState) =>\n state.accounts.usage.tree.response?.fields || [];\nexport const getAccountUsageTreeMediums = (state: RootState) =>\n state.accounts.usage.tree.response?.mediums || [];\nexport const getAccountUsageTreeRowCount = (state: RootState) =>\n state.accounts.usage.tree.response?.row_count || 0;\nexport const getAccountUsageTreeItemsBasePath = (state: RootState) =>\n state.accounts.usage.tree.base_path;\n\nexport const getAccountUsageListDiffRequestParams = (state: RootState) =>\n state.accounts.usage.listDiff.requestParams;\nexport const getAccountUsageListDiffLoading = (state: RootState) =>\n state.accounts.usage.listDiff.loading;\nexport const getAccountUsageListDiffLoaded = (state: RootState) =>\n state.accounts.usage.listDiff.loaded;\nexport const getAccountUsageListDiffError = (state: RootState) =>\n state.accounts.usage.listDiff.error;\nexport const getAccountUsageListDiffItems = (state: RootState) =>\n state.accounts.usage.listDiff.response?.items || [];\nexport const getAccountUsageListDiffFields = (state: RootState) =>\n state.accounts.usage.listDiff.response?.fields || [];\nexport const getAccountUsageListDiffMediums = (state: RootState) =>\n state.accounts.usage.listDiff.response?.mediums || [];\nexport const getAccountUsageListDiffRowCount = (state: RootState) =>\n state.accounts.usage.listDiff.response?.row_count || 0;\n\nexport const getAccountUsageTreeDiffRequestParams = (state: RootState) =>\n state.accounts.usage.treeDiff.requestParams;\nexport const getAccountUsageTreeDiffLoading = (state: RootState) =>\n state.accounts.usage.treeDiff.loading;\nexport const getAccountUsageTreeDiffLoaded = (state: RootState) =>\n state.accounts.usage.treeDiff.loaded;\nexport const getAccountUsageTreeDiffError = (state: RootState) =>\n state.accounts.usage.treeDiff.error;\nexport const getAccountUsageTreeDiffItems = (state: RootState) =>\n state.accounts.usage.treeDiff.response?.items || [];\nexport const getAccountUsageTreeDiffFields = (state: RootState) =>\n state.accounts.usage.treeDiff.response?.fields || [];\nexport const getAccountUsageTreeDiffMediums = (state: RootState) =>\n state.accounts.usage.treeDiff.response?.mediums || [];\nexport const getAccountUsageTreeDiffRowCount = (state: RootState) =>\n state.accounts.usage.treeDiff.response?.row_count || 0;\nexport const getAccountUsageTreeDiffItemsBasePath = (state: RootState) =>\n state.accounts.usage.treeDiff.base_path;\n\nexport const isAccountsUsageDiffView = createSelector([getAccountUsageViewType], (viewType) => {\n return viewType?.endsWith('-diff');\n});\n\nexport const getAccountUsageTreeItemsBasePathSplitted = createSelector(\n [\n getAccountUsageViewType,\n getAccountUsageTreeItemsBasePath,\n getAccountUsageTreeDiffItemsBasePath,\n ],\n (viewType, treePath, treeDiffPath) => {\n const path = viewType === 'tree-diff' ? treeDiffPath : treePath;\n if (!path) {\n return [];\n }\n\n const fragments: Array<{name: string}> = new ypath.YPath(path, 'absolute').fragments || [];\n\n return map_(fragments, (item, index) => {\n return {\n value: fragments\n .slice(0, index + 1)\n .map(({name}) => name)\n .join('/'),\n item: item.name,\n };\n });\n },\n);\n\nexport const getAccountUsageFieldFiltersRequestParameter = createSelector(\n [getAccountUsageDateRangeFilter, getAccountUsageDateRangeTypeFilter],\n ({from, to}, dateRangeType: 'creation_time' | 'modification_time') => {\n const res = [];\n\n if (from !== null) {\n res.push({\n field: dateRangeType,\n value: Math.round(new Date(from).getTime() / 1000),\n comparison: '>=' as const,\n });\n }\n\n if (to !== null) {\n res.push({\n field: dateRangeType,\n value: Math.round(new Date(to).getTime() / 1000),\n comparison: '<=' as const,\n });\n }\n\n return res;\n },\n);\n\nexport const getAccountUsagePageCount = createSelector(\n [\n getAccountUsageViewType,\n getAccountUsageListRowCount,\n getAccountUsageTreeRowCount,\n getAccountUsageListDiffRowCount,\n ],\n (viewType, listRowCount, treeRowCount, listDiffRowCount) => {\n let rowCount = listRowCount;\n if (viewType === 'tree') {\n rowCount = treeRowCount;\n } else if (viewType === 'list-diff' || viewType === 'list-plus-folders-diff') {\n rowCount = listDiffRowCount;\n }\n return rowCount > 0 ? Math.ceil(rowCount / PAGE_SIZE) : 0;\n },\n);\n\nexport const getAccountUsagePageIndex = createSelector(\n [getAccountUsagePageIndexRaw],\n (pageIndex) => {\n return Math.max(0, Number(pageIndex));\n },\n);\n\nexport const getAccountUsageSortStateByColumn = createSelector(\n [getAccountUsageSortState],\n (sortState) => {\n return reduce_(\n sortState,\n (acc, {column, order}, index) => {\n if (column && order) {\n acc[column] = {\n order,\n multisortIndex: sortState.length > 1 ? index + 1 : undefined,\n };\n }\n return acc;\n },\n {} as Record<string, {order: Required<SortState>['order']; multisortIndex?: number}>,\n );\n },\n);\n\nexport const getAccountUsageAvailableColumns = createSelector(\n [\n getAccountUsageViewType,\n getAccountUsageListFields,\n getAccountUsageTreeFields,\n getAccountUsageListDiffFields,\n getAccountUsageTreeDiffFields,\n ],\n (viewType, listFields, treeFields, listDiffFields, treeDiffFields) => {\n switch (viewType) {\n case 'list':\n case 'list-plus-folders':\n return listFields;\n case 'list-diff':\n case 'list-plus-folders-diff':\n return listDiffFields;\n case 'tree':\n return treeFields;\n case 'tree-diff':\n return treeDiffFields;\n }\n return [];\n },\n);\n\nconst defaultTreeColumns: Array<keyof AccountUsageDataItem> = [\n 'owner',\n 'disk_space',\n 'medium:default',\n 'medium:ssd_blobs',\n 'medium:nvme_blobs',\n 'chunk_count',\n 'node_count',\n 'modification_time',\n] as any;\nconst defaultListColumns: Array<keyof AccountUsageDataItem> = [\n 'owner',\n 'disk_space',\n 'medium:default',\n 'medium:ssd_blobs',\n 'medium:nvme_blobs',\n 'chunk_count',\n 'modification_time',\n] as any;\nconst defaultListFoldersColumns: Array<keyof AccountUsageDataItem> = [\n 'owner',\n 'disk_space',\n 'medium:default',\n 'medium:ssd_blobs',\n 'medium:nvme_blobs',\n 'chunk_count',\n 'node_count',\n 'modification_time',\n] as any;\n\nfunction firstNotEmpty<T = keyof AccountUsageDataItem>(a1: Array<T>, a2: Array<T>): Array<T> {\n if (a1?.length) {\n return a1;\n }\n\n return a2;\n}\n\nconst getAccountUsageVisibleColumns = createSelector(\n [\n getAccountUsageViewType,\n getSettingsAccountUsageColumnsTree,\n getSettingsAccountUsageColumnsList,\n getSettingsAccountUsageColumnsListFolders,\n ],\n (viewType, treeColumns, listColumns, listFoldersColumns) => {\n switch (viewType) {\n case 'list':\n case 'list-diff':\n return firstNotEmpty(listColumns, defaultListColumns);\n case 'list-plus-folders':\n case 'list-plus-folders-diff':\n return firstNotEmpty(listFoldersColumns, defaultListFoldersColumns);\n default:\n return firstNotEmpty(treeColumns, defaultTreeColumns);\n }\n },\n);\n\nexport const getAccountUsageSelectableColumns = createSelector(\n [getAccountUsageAvailableColumns],\n (columns) => {\n return filter_(columns, (item) => !ACCOUNT_USAGE_UNAVAILABLE_FIELDS.has(item));\n },\n);\n\nexport const ACCOUNT_USAGE_UNAVAILABLE_FIELDS = new Set([\n 'type',\n 'path',\n 'depth',\n 'account',\n 'medium:cache',\n 'direct_child_count',\n]);\n\nexport const getAccountUsageVisibleDataColumns = createSelector(\n [getAccountUsageSelectableColumns, getAccountUsageVisibleColumns],\n (selectableColumns, userColumns) => {\n const columns = new Set<string>(selectableColumns);\n\n return ['type', 'path'].concat(\n filter_(userColumns, (item) => {\n return columns.has(item);\n }),\n );\n },\n);\n","import isEqual_ from 'lodash/isEqual';\n\nimport axios from 'axios';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../store/reducers';\nimport {\n AccountUsageListDiffAction,\n AccountUsageListDiffDataParams,\n AccountsUsageDiffDataResponse,\n} from '../../../store/reducers/accounts/usage/accounts-usage-list-diff';\nimport {accountUsageApiUrl, getFilterParameters} from './account-usage';\nimport {\n ACCOUNTS_USAGE_LIST_DIFF_FAILED,\n ACCOUNTS_USAGE_LIST_DIFF_REQUEST,\n ACCOUNTS_USAGE_LIST_DIFF_SUCCESS,\n ACCOUNTS_USAGE_TREE_DIFF_FAILED,\n ACCOUNTS_USAGE_TREE_DIFF_REQUEST,\n ACCOUNTS_USAGE_TREE_DIFF_SUCCESS,\n} from '../../../constants/accounts/accounts';\nimport {\n getAccountUsageListDiffRequestParams,\n getAccountUsageTreeDiffRequestParams,\n getAccountUsageTreePath,\n getAccountsUsageDiffFromSnapshot,\n getAccountsUsageDiffToSnapshot,\n} from '../../../store/selectors/accounts/account-usage';\nimport {\n AccountUsageTreeDiffAction,\n AccountUsageTreeDiffData,\n} from '../../reducers/accounts/usage/accounts-usage-tree-diff';\nimport {AccountUsageData} from '../../reducers/accounts/usage/account-usage-types';\n\ntype UsageListThunkAction = ThunkAction<any, RootState, any, AccountUsageListDiffAction>;\n\nfunction getFilterFromToTimestamps(state: RootState) {\n const from = getAccountsUsageDiffFromSnapshot(state);\n const to = getAccountsUsageDiffToSnapshot(state);\n if ((!from && !to) || from === to) {\n return null;\n }\n\n return {\n older: {timestamp: from || Date.now() / 1000},\n newer: {timestamp: to || Date.now() / 1000},\n };\n}\n\nexport function fetchAccountUsageListDiff(): UsageListThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamps = getFilterFromToTimestamps(state);\n\n if (!timestamps) {\n return;\n }\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageListDiffDataParams = {\n ...params,\n timestamps,\n };\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_DIFF_REQUEST,\n data: {requestParams},\n });\n\n return axios\n .request<AccountsUsageDiffDataResponse>({\n method: 'POST',\n url: accountUsageApiUrl('get-resource-usage-diff'),\n data: requestParams,\n withCredentials: true,\n })\n .then((response) => {\n const params = getAccountUsageListDiffRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_DIFF_SUCCESS,\n data: {response: response.data},\n });\n })\n .catch((error: any) => {\n const params = getAccountUsageListDiffRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_DIFF_FAILED,\n data: {error: error?.response?.data || error},\n });\n });\n };\n}\n\ntype UsageTreeThunkAction = ThunkAction<any, RootState, any, AccountUsageTreeDiffAction>;\n\nexport function fetchAccountUsageTreeDiff(): UsageTreeThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamps = getFilterFromToTimestamps(state);\n\n if (!timestamps) {\n return;\n }\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageTreeDiffData['requestParams'] = {\n ...params,\n timestamps,\n row_filter: {\n ...params.row_filter,\n base_path: getAccountUsageTreePath(state),\n },\n };\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_DIFF_REQUEST,\n data: {requestParams},\n });\n\n return axios\n .request<AccountUsageData>({\n method: 'POST',\n url: accountUsageApiUrl('get-children-and-resource-usage-diff'),\n data: requestParams,\n withCredentials: true,\n })\n .then((response) => {\n const params = getAccountUsageTreeDiffRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_DIFF_SUCCESS,\n data: {\n response: response.data,\n base_path: requestParams.row_filter.base_path,\n },\n });\n })\n .catch((error: any) => {\n const params = getAccountUsageTreeDiffRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_DIFF_FAILED,\n data: {error: error?.response?.data || error},\n });\n });\n };\n}\n","import isEmpty_ from 'lodash/isEmpty';\nimport isEqual_ from 'lodash/isEqual';\nimport reduce_ from 'lodash/reduce';\n\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../store/reducers';\nimport {AccountsSnapshotsAction} from '../../reducers/accounts/usage/accounts-usage-snapshots';\nimport {\n ACCOUNTS_USAGE_FILTERS_PARTIAL,\n ACCOUNTS_USAGE_LIST_FAILED,\n ACCOUNTS_USAGE_LIST_REQUEST,\n ACCOUNTS_USAGE_LIST_SUCCESS,\n ACCOUNTS_USAGE_SNAPSHOTS_FAILED,\n ACCOUNTS_USAGE_SNAPSHOTS_REQUEST,\n ACCOUNTS_USAGE_SNAPSHOTS_SUCCESS,\n ACCOUNTS_USAGE_TREE_FAILED,\n ACCOUNTS_USAGE_TREE_REQUEST,\n ACCOUNTS_USAGE_TREE_SUCCESS,\n} from '../../../constants/accounts/accounts';\nimport axios from 'axios';\nimport {getCluster} from '../../selectors/global';\nimport {\n AccountUsageListAction,\n AccountUsageListDataParams,\n AccountsUsageDataResponse,\n} from '../../reducers/accounts/usage/accounts-usage-list';\nimport {\n getAccountUsageCurrentSnapshot,\n getAccountUsageDateRangeFilter,\n getAccountUsageFieldFiltersRequestParameter,\n getAccountUsageListRequestParams,\n getAccountUsageOwnerFilter,\n getAccountUsagePageIndex,\n getAccountUsagePathFilter,\n getAccountUsageSortState,\n getAccountUsageTreePath,\n getAccountUsageTreeRequestParams,\n getAccountUsageViewType,\n} from '../../selectors/accounts/account-usage';\nimport {getActiveAccount} from '../../../store/selectors/accounts/accounts-ts';\nimport {getSettingsAccountUsageViewType} from '../../selectors/settings-ts';\nimport {SortState} from '../../../types';\nimport {\n AccountUsageFiltersState,\n AccountUsageViewType,\n AccountsUsageFiltersAction,\n PAGE_SIZE,\n} from '../../reducers/accounts/usage/accounts-usage-filters';\nimport {\n AccountUsageTreeAction,\n AccountUsageTreeData,\n} from '../../reducers/accounts/usage/accounts-usage-tree';\nimport {\n setSettingsAccountUsageColumnsList,\n setSettingsAccountUsageColumnsListFolders,\n setSettingsAccountUsageColumnsTree,\n setSettingsAccountUsageViewType,\n} from '../settings/settings';\nimport {AccountUsageDataParams} from '../../reducers/accounts/usage/account-usage-types';\nimport {fetchAccountUsageListDiff, fetchAccountUsageTreeDiff} from './account-usage-diff';\nimport {getAccountsUsageBasePath} from '../../../config';\nimport {updateSortStateArray} from '../../../utils/sort-helpers';\nimport {Action} from 'redux';\nimport {openModal} from '../modals/attributes-modal';\n\ntype SnapshotsThunkAction = ThunkAction<any, RootState, any, AccountsSnapshotsAction>;\n\nexport function accountUsageApiUrl(handle: string) {\n return getAccountsUsageBasePath() + handle;\n}\n\nexport function syncAccountsUsageViewTypeWithSettings(): FiltersThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const viewType = getAccountUsageViewType(state);\n if (!viewType) {\n const lastViewType = getSettingsAccountUsageViewType(state);\n dispatch(setAccountUsageFilters({viewType: lastViewType}));\n } else {\n dispatch(setSettingsAccountUsageViewType(viewType));\n }\n };\n}\n\nexport function fetchAccountsUsageSnapshots(cluster: string): SnapshotsThunkAction {\n return (dispatch) => {\n dispatch({type: ACCOUNTS_USAGE_SNAPSHOTS_REQUEST});\n\n return axios\n .request<{\n snapshot_timestamps: Array<number>;\n }>({\n method: 'POST',\n url: accountUsageApiUrl('list-timestamps'),\n data: {cluster},\n withCredentials: true,\n })\n .then((data) => {\n dispatch({\n type: ACCOUNTS_USAGE_SNAPSHOTS_SUCCESS,\n data: {...data.data, cluster},\n });\n })\n .catch((error: any) => {\n dispatch({\n type: ACCOUNTS_USAGE_SNAPSHOTS_FAILED,\n data: {error: error?.response?.data || error, cluster},\n });\n });\n };\n}\ntype UsageListThunkAction = ThunkAction<any, RootState, any, AccountUsageListAction>;\n\nexport function getFilterParameters(state: RootState): AccountUsageDataParams {\n const account = getActiveAccount(state);\n const cluster = getCluster(state);\n const sortStates = getAccountUsageSortState(state);\n const path_regexp = getAccountUsagePathFilter(state);\n const owner = getAccountUsageOwnerFilter(state);\n\n const field_filters = getAccountUsageFieldFiltersRequestParameter(state);\n const viewType = getAccountUsageViewType(state);\n\n const row_filter: AccountUsageListDataParams['row_filter'] = Object.assign(\n {\n exclude_map_nodes: viewType === 'list' || viewType === 'list-diff',\n },\n owner ? {owner} : undefined,\n path_regexp ? {path_regexp} : undefined,\n field_filters?.length ? {field_filters} : undefined,\n );\n\n return {\n account,\n cluster,\n sort_order: reduce_(\n sortStates,\n (acc, {column, order}) => {\n if (column && order) {\n acc.push({field: column, desc: order === 'desc'});\n }\n return acc;\n },\n [] as Required<AccountUsageListDataParams>['sort_order'],\n ),\n row_filter,\n page: {\n index: getAccountUsagePageIndex(state),\n size: PAGE_SIZE,\n },\n };\n}\n\nexport function fetchAccountUsageList(): UsageListThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamp = getAccountUsageCurrentSnapshot(state);\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageListDataParams = {\n ...params,\n timestamp: timestamp || Date.now() / 1000,\n };\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_REQUEST,\n data: {requestParams},\n });\n\n return axios\n .request<AccountsUsageDataResponse>({\n method: 'POST',\n url: accountUsageApiUrl('get-resource-usage'),\n data: requestParams,\n withCredentials: true,\n })\n .then((response) => {\n const params = getAccountUsageListRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_SUCCESS,\n data: {response: response.data},\n });\n })\n .catch((error: any) => {\n const params = getAccountUsageListRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_LIST_FAILED,\n data: {error: error?.response?.data || error},\n });\n });\n };\n}\n\ntype UsageTreeThunkAction = ThunkAction<any, RootState, any, AccountUsageTreeAction>;\n\nexport function fetchAccountUsageTree(): UsageTreeThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamp = getAccountUsageCurrentSnapshot(state);\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageTreeData['requestParams'] = {\n ...params,\n timestamp: timestamp || Date.now() / 1000,\n row_filter: {\n ...params.row_filter,\n base_path: getAccountUsageTreePath(state),\n },\n };\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_REQUEST,\n data: {requestParams},\n });\n\n return axios\n .request<AccountsUsageDataResponse>({\n method: 'POST',\n url: accountUsageApiUrl('get-children-and-resource-usage'),\n data: requestParams,\n withCredentials: true,\n })\n .then((response) => {\n const params = getAccountUsageTreeRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_SUCCESS,\n data: {\n response: response.data,\n base_path: requestParams.row_filter.base_path,\n },\n });\n })\n .catch((error: any) => {\n const params = getAccountUsageTreeRequestParams(getState());\n if (!isEqual_(params, requestParams)) {\n return;\n }\n\n dispatch({\n type: ACCOUNTS_USAGE_TREE_FAILED,\n data: {error: error?.response?.data || error},\n });\n });\n };\n}\n\ntype FiltersThunkAction = ThunkAction<\n any,\n RootState,\n any,\n AccountUsageTreeAction | AccountUsageListAction | AccountsUsageFiltersAction\n>;\n\nexport function fetchAccountUsage(): FiltersThunkAction {\n return (dispatch, getState) => {\n const viewType = getAccountUsageViewType(getState());\n switch (viewType) {\n case 'tree':\n return dispatch(fetchAccountUsageTree());\n case 'list':\n case 'list-plus-folders':\n return dispatch(fetchAccountUsageList());\n case 'list-diff':\n case 'list-plus-folders-diff':\n return dispatch(fetchAccountUsageListDiff());\n case 'tree-diff':\n return dispatch(fetchAccountUsageTreeDiff());\n }\n };\n}\n\nexport function setAccountUsageSortState(item: SortState, multisort?: boolean): FiltersThunkAction {\n return (dispatch, getState) => {\n const prevSortState = getAccountUsageSortState(getState());\n const sortState = updateSortStateArray(prevSortState, item, {multisort});\n\n dispatch({\n type: ACCOUNTS_USAGE_FILTERS_PARTIAL,\n data: {sortState, pageIndex: 0},\n });\n dispatch(fetchAccountUsage());\n };\n}\n\nexport function setAccountUsageCurrentSnapshot(currentSnapshot: number): FiltersThunkAction {\n return (dispatch) => {\n dispatch({\n type: ACCOUNTS_USAGE_FILTERS_PARTIAL,\n data: {currentSnapshot},\n });\n };\n}\nexport function setAccountUsageDataFilter(\n data: Omit<Partial<AccountUsageFiltersState>, 'columnPreset' | 'viewType' | 'pageIndex'>,\n): FiltersThunkAction {\n return (dispatch, getState) => {\n dispatch({\n type: ACCOUNTS_USAGE_FILTERS_PARTIAL,\n data: {pageIndex: 0, ...data},\n });\n\n const {dateRangeType, ...rest} = data;\n if (isEmpty_(rest) && dateRangeType) {\n const {from, to} = getAccountUsageDateRangeFilter(getState());\n if (!from && !to) {\n return;\n }\n }\n dispatch(fetchAccountUsage());\n };\n}\n\nexport function setAccountUsageDataPageIndex(pageIndex: number): FiltersThunkAction {\n return (dispatch) => {\n dispatch({type: ACCOUNTS_USAGE_FILTERS_PARTIAL, data: {pageIndex}});\n dispatch(fetchAccountUsage());\n };\n}\n\nexport function setAccountUsageFilters(\n data: Pick<Partial<AccountUsageFiltersState>, 'visibleColumns' | 'viewType'>,\n): FiltersThunkAction {\n return (dispatch) => {\n dispatch({type: ACCOUNTS_USAGE_FILTERS_PARTIAL, data});\n };\n}\n\nexport function setAccountUsageViewType(viewType: AccountUsageViewType): FiltersThunkAction {\n return (dispatch) => {\n dispatch({\n type: ACCOUNTS_USAGE_FILTERS_PARTIAL,\n data: {pageIndex: 0, viewType},\n });\n dispatch(setSettingsAccountUsageViewType(viewType));\n };\n}\n\nexport function setAccountUsageColumns(columns: Array<string>): FiltersThunkAction {\n return (dispatch, getState) => {\n const viewType = getAccountUsageViewType(getState());\n switch (viewType) {\n case 'list':\n case 'list-diff':\n dispatch(setSettingsAccountUsageColumnsList(columns));\n break;\n case 'list-plus-folders':\n case 'list-plus-folders-diff':\n dispatch(setSettingsAccountUsageColumnsListFolders(columns));\n break;\n default:\n dispatch(setSettingsAccountUsageColumnsTree(columns));\n }\n };\n}\n\nexport const openAccountAttributesModal =\n ({\n cluster,\n account,\n path,\n }: {\n cluster: string;\n account: string;\n path: string;\n }): ThunkAction<void, RootState, null, Action> =>\n (dispatch) =>\n dispatch(\n openModal({\n title: path,\n promise: axios\n .request({\n method: 'POST',\n url: accountUsageApiUrl('get-versioned-resource-usage'),\n data: {\n cluster,\n account,\n path,\n timestamp_rounding_policy: 'closest',\n },\n withCredentials: true,\n })\n .then((data) => data.data),\n }),\n );\n","import React from 'react';\n\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\n\nimport Button from '../../../../components/Button/Button';\nimport {\n getAccountUsageSelectableColumns,\n getAccountUsageVisibleDataColumns,\n readableAccountUsageColumnName,\n} from '../../../../store/selectors/accounts/account-usage';\nimport {useDispatch, useSelector} from 'react-redux';\nimport ColumnSelectorModal from '../../../../components/ColumnSelectorModal/ColumnSelectorModal';\nimport {setAccountUsageColumns} from '../../../../store/actions/accounts/account-usage';\nimport {Secondary} from '../../../../components/Text/Text';\n\nconst AccountUsageColumnsDialogMemo = React.memo(AccountUsageColumnsDialog);\n\nexport default React.memo(AccountUsageColumnsButton);\n\nfunction AccountUsageColumnsButton() {\n const [visible, setVisible] = React.useState(false);\n const toggleVisibility = React.useCallback(() => {\n setVisible(!visible);\n }, [visible, setVisible]);\n\n const handleClose = React.useCallback(() => {\n setVisible(false);\n }, [setVisible]);\n\n return (\n <React.Fragment>\n <Button onClick={toggleVisibility}>Columns</Button>\n <AccountUsageColumnsDialogMemo visible={visible} onClose={handleClose} />\n </React.Fragment>\n );\n}\n\ninterface DialogProps {\n visible: boolean;\n onClose: () => void;\n}\n\nfunction AccountUsageColumnsDialog({visible, onClose}: DialogProps) {\n const dispatch = useDispatch();\n const visibleColumns = useSelector(getAccountUsageVisibleDataColumns);\n const availableColumns = useSelector(getAccountUsageSelectableColumns);\n\n const handleChange = React.useCallback((newValue: typeof value) => {\n const checked = filter_(newValue, 'checked');\n dispatch(setAccountUsageColumns(map_(checked, ({data: {caption}}) => caption)));\n onClose();\n }, []);\n\n const value = React.useMemo(() => {\n const available = new Set(availableColumns);\n const selected = visibleColumns.filter((item) => available.has(item as any));\n\n const selectedSet = new Set(selected);\n const other = availableColumns.filter((item) => !selectedSet.has(item));\n\n return map_(selected.concat(other), (item) => {\n return {\n name: readableAccountUsageColumnName(item, true),\n checked: selectedSet.has(item),\n data: {\n caption: item,\n isMedium: item.startsWith('medium:'),\n },\n };\n });\n }, [availableColumns, visibleColumns]);\n\n return !visible ? null : (\n <ColumnSelectorModal\n isVisible={true}\n onCancel={onClose}\n onConfirm={handleChange}\n items={value}\n itemRenderer={(item) => {\n const {\n name,\n data: {isMedium, caption},\n } = item;\n return !isMedium ? (\n name\n ) : (\n <span>\n <Secondary>Medium: </Secondary>\n {readableAccountUsageColumnName(caption)}\n </span>\n );\n }}\n />\n );\n}\n","import React from 'react';\n\nimport unipika from '../../common/thor/unipika';\nimport ypath from '../../common/thor/ypath';\n\nfunction PathPart({name}: {name?: string}) {\n if (!name) {\n return null;\n }\n\n if (name === '/') {\n return <span>/</span>;\n }\n\n const fragment = ypath.YPath.fragmentToYSON(name);\n try {\n const __html = unipika.decode(fragment);\n return <span dangerouslySetInnerHTML={{__html}} />;\n } catch {\n return <span>{fragment}</span>;\n }\n}\n\nexport const PathFragment = React.memo(PathPart);\n\nfunction PathView({path, lastFragmentOnly}: {path?: string; lastFragmentOnly?: boolean}) {\n const items = React.useMemo(() => {\n if (!path) {\n return [];\n }\n\n const {fragments} = new ypath.YPath(path, 'absolute');\n return !lastFragmentOnly ? fragments : fragments.slice(-1);\n }, [path, lastFragmentOnly]);\n\n const res: Array<React.ReactNode> = [];\n for (let i = 0; i < items.length; ++i) {\n const {name} = items[i];\n res.push(<PathFragment key={i} name={name} />);\n if (i < items.length - 1) {\n res.push(<span key={'slash_' + i}>/</span>);\n }\n }\n return <>{res}</>;\n}\n\nexport default PathView;\n","import React from 'react';\n\nimport map_ from 'lodash/map';\nimport reverse_ from 'lodash/reverse';\n\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Breadcrumbs} from '@gravity-ui/uikit';\n\nimport format from '../../../../common/hammer/format';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n fetchAccountUsage,\n fetchAccountsUsageSnapshots,\n setAccountUsageDataFilter,\n setAccountUsageDataPageIndex,\n setAccountUsageViewType,\n} from '../../../../store/actions/accounts/account-usage';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport Select from '../../../../components/Select/Select';\nimport {\n getAccountUsageCurrentSnapshot,\n getAccountUsageDateRangeFilter,\n getAccountUsageDateRangeTypeFilter,\n getAccountUsageOwnerFilter,\n getAccountUsagePageCount,\n getAccountUsagePageIndex,\n getAccountUsagePathFilter,\n getAccountUsageSnapshots,\n getAccountUsageTreeItemsBasePathSplitted,\n getAccountUsageViewType,\n getAccountsUsageDiffFromSnapshot,\n getAccountsUsageDiffToSnapshot,\n isAccountsUsageDiffView,\n} from '../../../../store/selectors/accounts/account-usage';\nimport TextInputWithDebounce from '../../../../components/TextInputWithDebounce/TextInputWithDebounce';\nimport {Secondary, SecondaryBold} from '../../../../components/Text/Text';\nimport SimplePagination from '../../../../components/Pagination/SimplePagination';\nimport Link from '../../../../components/Link/Link';\nimport Icon from '../../../../components/Icon/Icon';\nimport AccountUsageColumnsButton from './AccountUsageColumnsButton';\nimport {SubjectCard} from '../../../../components/SubjectLink/SubjectLink';\nimport Suggest, {SuggestItem} from '../../../../components/Suggest/Suggest';\nimport {Datepicker, DatepickerOutputDates} from '../../../../components/common/Datepicker';\nimport {PathFragment} from '../../../../containers/PathFragment/PathFragment';\nimport {useAllUserNamesFiltered} from '../../../../hooks/global';\nimport {useUpdater} from '../../../../hooks/use-updater';\n\nimport './AccountUsageToolbar.scss';\n\nconst block = cn('account-usage-toolbar');\n\nfunction useFetchSnapshots() {\n const dispatch = useDispatch();\n const cluster = useSelector(getCluster);\n\n const updateFn = React.useCallback(() => {\n dispatch(fetchAccountsUsageSnapshots(cluster));\n }, [dispatch, cluster]);\n\n useUpdater(updateFn, {timeout: 5 * 60000});\n}\n\nconst SnapshotFilterMemo = React.memo(SnapshotFilter);\nconst PathFilterMemo = React.memo(PathFilter);\nconst OwnerFilterMemo = React.memo(OwnerFilter);\nconst DateRangeFilterMemo = React.memo(DateRangeFilter);\nconst DateRangeTypeFilterMemo = React.memo(DateRangeTypeFilter);\nconst PaginationFilterMemo = React.memo(PaginationFilter);\nconst ViewTypeMemo = React.memo(ViewType);\nconst UsageBreadcrumbsMemo = React.memo(UsageBreadcrumbs);\nconst SnapshotDiffFilterMemo = React.memo(SnapshotDiffFilter);\n\nfunction AccountUsageToolbar() {\n const viewType = useSelector(getAccountUsageViewType);\n const isDiffView = useSelector(isAccountsUsageDiffView);\n\n return (\n <div>\n <Toolbar\n className={block()}\n itemsToWrap={[\n {\n name: 'page',\n node: <PaginationFilterMemo />,\n },\n {\n name: 'pathFilter',\n wrapperClassName: block('item'),\n node: <PathFilterMemo />,\n shrinkable: true,\n },\n {\n name: 'ownerFilter',\n wrapperClassName: block('item'),\n node: <OwnerFilterMemo />,\n shrinkable: true,\n },\n {\n name: 'dateRangeFilter',\n wrapperClassName: block('item'),\n node: <DateRangeFilterMemo />,\n },\n {\n name: 'columns',\n node: <AccountUsageColumnsButton />,\n },\n {\n name: 'viewType',\n node: <ViewTypeMemo />,\n },\n isDiffView\n ? {\n name: 'snapshots',\n wrapperClassName: block('item'),\n growable: true,\n node: <SnapshotDiffFilterMemo />,\n }\n : {\n name: 'snapshotsDiff',\n wrapperClassName: block('item'),\n growable: true,\n node: <SnapshotFilterMemo />,\n },\n ]}\n >\n {(viewType === 'tree' || viewType === 'tree-diff') && (\n <Toolbar\n itemsToWrap={[\n {\n node: <UsageBreadcrumbsMemo />,\n },\n ]}\n />\n )}\n </Toolbar>\n </div>\n );\n}\n\nconst UNDEFINED_SNAPSHOT = '_';\n\nfunction string2snapshot(v: string) {\n return v === UNDEFINED_SNAPSHOT ? undefined : Number(v);\n}\n\nfunction snapshot2string(v?: number) {\n return v === undefined ? UNDEFINED_SNAPSHOT : String(v);\n}\n\nfunction useSnapshotItems() {\n const snapshots = useSelector(getAccountUsageSnapshots);\n\n const items = React.useMemo(() => {\n const res = map_(reverse_(snapshots.slice()), (item) => {\n return {\n value: snapshot2string(item),\n text: moment(new Date(item * 1000)).format('YYYY-MM-DD HH:mm'),\n };\n });\n res.splice(0, 0, {value: UNDEFINED_SNAPSHOT, text: 'Latest'});\n return res;\n }, [snapshots]);\n\n return items;\n}\n\nfunction FromSnapshot() {\n const dispatch = useDispatch();\n const items = useSnapshotItems();\n const value = useSelector(getAccountsUsageDiffFromSnapshot);\n\n const handleChange = React.useCallback(\n (value: string) => {\n dispatch(\n setAccountUsageDataFilter({\n diffFromSnapshot: string2snapshot(value),\n }),\n );\n },\n [dispatch],\n );\n\n return (\n <Select\n placeholder={'Snapthot...'}\n items={items}\n value={[snapshot2string(value)]}\n onUpdate={(vals) => handleChange(vals[0])}\n width={150}\n />\n );\n}\n\nfunction ToSnapshot() {\n const dispatch = useDispatch();\n const items = useSnapshotItems();\n const value = useSelector(getAccountsUsageDiffToSnapshot);\n\n const handleChange = React.useCallback(\n (value: string) => {\n dispatch(\n setAccountUsageDataFilter({\n diffToSnapshot: string2snapshot(value),\n }),\n );\n },\n [dispatch],\n );\n\n return (\n <Select\n placeholder={'Snapthot...'}\n items={items}\n value={[snapshot2string(value)]}\n onUpdate={(vals) => handleChange(vals[0])}\n width={150}\n />\n );\n}\n\nfunction SnapshotDiffFilter() {\n useFetchSnapshots();\n\n return (\n <span className={block('snapshots')}>\n <span className={block('spacer')} />\n <span className={block('snapshot-label')}>From</span>\n <FromSnapshot />\n <span className={block('snapshot-label')}>To</span>\n <ToSnapshot />\n </span>\n );\n}\n\nfunction SnapshotFilter() {\n const dispatch = useDispatch();\n useFetchSnapshots();\n\n const currentSnapshot = useSelector(getAccountUsageCurrentSnapshot);\n const items = useSnapshotItems();\n\n const handleSnapshotChange = React.useCallback(\n (value: string) => {\n dispatch(\n setAccountUsageDataFilter({\n currentSnapshot: string2snapshot(value),\n }),\n );\n },\n [dispatch],\n );\n\n return (\n <span className={block('snapshots')}>\n <span className={block('spacer')} />\n <SecondaryBold>Snapshot </SecondaryBold>\n <Select\n placeholder={'Snapshot...'}\n value={[snapshot2string(currentSnapshot)]}\n items={items}\n onUpdate={(vals) => handleSnapshotChange(vals[0])}\n width={150}\n />\n </span>\n );\n}\n\nfunction PathFilter() {\n const dispatch = useDispatch();\n\n const filter = useSelector(getAccountUsagePathFilter);\n\n const handleChange = React.useCallback(\n (pathFilter: string) => {\n dispatch(setAccountUsageDataFilter({pathFilter}));\n },\n [dispatch],\n );\n\n return (\n <TextInputWithDebounce\n debounce={500}\n value={filter}\n placeholder={'Path regexp...'}\n onUpdate={handleChange}\n />\n );\n}\n\nfunction OwnerFilter() {\n const dispatch = useDispatch();\n\n const filter = useSelector(getAccountUsageOwnerFilter);\n\n const handleChange = React.useCallback(\n (item: SuggestItem) => {\n const ownerFilter = 'string' === typeof item ? item : item.value;\n dispatch(setAccountUsageDataFilter({ownerFilter}));\n },\n [dispatch],\n );\n\n const {getFiltered, allNames} = useAllUserNamesFiltered();\n\n return (\n <Suggest\n text={filter}\n items={allNames}\n filter={(_items, filter = '') => getFiltered(filter)}\n apply={handleChange}\n placeholder={'Owner...'}\n renderItem={(item) => (\n <span className={block('owner-item')}>\n <SubjectCard name={'string' === typeof item ? item : item.value} noLink />\n </span>\n )}\n popupClassName={block('owner-popup')}\n />\n );\n}\n\nfunction DateRangeFilter() {\n const dispatch = useDispatch();\n\n const {from, to} = useSelector(getAccountUsageDateRangeFilter);\n const type = useSelector(getAccountUsageDateRangeTypeFilter);\n\n const handleChange = React.useCallback(\n (dateRange: DatepickerOutputDates) => {\n dispatch(setAccountUsageDataFilter({dateRange}));\n },\n [dispatch],\n );\n\n return (\n <span className={block('date-range')}>\n <Datepicker\n from={from}\n to={to}\n min={0}\n max={Date.now() + 3600 * 24 * 1000}\n range={true}\n allowNullableValues={true}\n onUpdate={handleChange}\n className={block('date-range-control')}\n onError={() => {}}\n placeholder={format.Readable(type) + ' range...'}\n pin=\"round-brick\"\n />\n <DateRangeTypeFilterMemo />\n </span>\n );\n}\n\nfunction DateRangeTypeFilter() {\n const dispatch = useDispatch();\n\n const value = useSelector(getAccountUsageDateRangeTypeFilter);\n const handleChange = React.useCallback(\n (dateRangeType: any) => {\n dispatch(setAccountUsageDataFilter({dateRangeType}));\n },\n [dispatch],\n );\n\n return (\n <Select\n pin=\"clear-round\"\n value={[value]}\n onUpdate={(vals) => handleChange(vals[0])}\n items={[\n {value: 'creation_time', text: 'Creation'},\n {value: 'modification_time', text: 'Modification'},\n ]}\n width={135}\n />\n );\n}\n\nfunction PaginationFilter() {\n const dispatch = useDispatch();\n\n const value = useSelector(getAccountUsagePageIndex);\n const pageCount = useSelector(getAccountUsagePageCount);\n\n const handleChange = React.useCallback(\n (pageIndex: number) => {\n dispatch(setAccountUsageDataPageIndex(pageIndex));\n },\n [dispatch],\n );\n\n return (\n <SimplePagination\n value={value}\n min={0}\n max={Math.max(0, pageCount - 1)}\n onChange={handleChange}\n />\n );\n}\n\nconst VIEW_TYPE_ITEMS = [\n {\n value: 'tree' as const,\n text: 'Tree',\n icon: <Icon awesome={'folder-tree'} face={'solid'} />,\n },\n {\n value: 'list' as const,\n text: 'List',\n icon: <Icon awesome={'list'} />,\n },\n {\n value: 'list-plus-folders' as const,\n text: 'List + folders',\n icon: <Icon awesome={'folders'} />,\n },\n {\n value: 'tree-diff' as const,\n text: 'Diff: Tree',\n content: <DiffTitle title={'Tree'} />,\n icon: <Icon awesome={'folder-tree'} face={'solid'} />,\n },\n {\n value: 'list-diff' as const,\n text: 'Diff: List',\n content: <DiffTitle title={'List'} />,\n icon: <Icon awesome={'list'} />,\n },\n {\n value: 'list-plus-folders-diff' as const,\n text: 'Diff: List + folders',\n content: <DiffTitle title={'List + folders'} />,\n icon: <Icon awesome={'folders'} />,\n },\n];\n\nfunction DiffTitle({title}: {title: string}) {\n return (\n <React.Fragment>\n <Secondary>Diff: </Secondary>\n {title}\n </React.Fragment>\n );\n}\n\nfunction ViewType() {\n const dispatch = useDispatch();\n\n const value = useSelector(getAccountUsageViewType);\n const handleChange = React.useCallback(\n (value: string) => {\n dispatch(setAccountUsageViewType(value as any));\n },\n [dispatch],\n );\n\n return (\n <Select\n value={value ? [value] : []}\n items={VIEW_TYPE_ITEMS}\n onUpdate={(vals) => handleChange(vals[0])}\n width=\"max\"\n />\n );\n}\n\nexport function UsageBreadcrumbs() {\n const dispatch = useDispatch();\n const pathArr = useSelector(getAccountUsageTreeItemsBasePathSplitted);\n\n const items = React.useMemo(() => {\n return map_(pathArr, (item) => {\n return {\n text: item.item,\n value: item.value,\n action: () => {\n dispatch(fetchAccountUsage());\n },\n };\n });\n }, [pathArr, dispatch]);\n\n return (\n <Breadcrumbs\n items={items}\n firstDisplayedItemsCount={1}\n lastDisplayedItemsCount={1}\n renderRootContent={() => {\n return (\n <Link\n theme={'primary'}\n url={`${window.location.pathname}?path=/`}\n routed={true}\n routedPreserveLocation={true}\n >\n <Secondary>\n <Icon awesome={'folder-tree'} />\n </Secondary>\n </Link>\n );\n }}\n renderItemContent={(item) => {\n return (\n <Link\n theme={'primary'}\n url={`${window.location.pathname}?path=${(item as any).value}`}\n routed={true}\n routedPreserveLocation={true}\n >\n <PathFragment name={item.text} />\n </Link>\n );\n }}\n />\n );\n}\n\nexport default React.memo(AccountUsageToolbar);\n","import React, {FC, useCallback, useMemo} from 'react';\nimport Icon from '../../../../components/Icon/Icon';\nimport {Flex, Text} from '@gravity-ui/uikit';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport Link from '../../../../components/Link/Link';\nimport {makeRoutedURL} from '../../../../store/location';\nimport {Page} from '../../../../../shared/constants/settings';\nimport AttributesButton from '../../../../components/AttributesButton/AttributesButton';\n\nexport type AccountRequestData = {title: string; path: string; cluster: string; account: string};\n\ntype Props = {\n cluster: string;\n path: string;\n account: string;\n onAttributeButtonClick: (accountData: AccountRequestData) => void;\n};\n\nexport const AccountActionsField: FC<Props> = ({\n path,\n account,\n cluster,\n onAttributeButtonClick,\n}) => {\n const handleOpenAttributeModal = useCallback(() => {\n onAttributeButtonClick({path, account, cluster, title: path});\n }, [onAttributeButtonClick, path, account, cluster]);\n\n const navigationUrl = useMemo(() => {\n return makeRoutedURL(`/${cluster}/${Page.NAVIGATION}`, {path});\n }, [cluster, path]);\n\n if (!path) return undefined;\n\n return (\n <Flex gap={1} alignItems=\"center\">\n <AttributesButton\n view=\"flat\"\n withTooltip\n tooltipProps={{placement: 'bottom-end', content: 'Show attributes'}}\n onClick={handleOpenAttributeModal}\n size=\"xs\"\n />\n <Link theme={'secondary'} url={navigationUrl} routed routedPreserveLocation>\n <Tooltip\n content={<Text whiteSpace=\"nowrap\">Open original path in Navigation</Text>}\n placement={'left'}\n >\n <Icon awesome={'folder-tree'} />\n </Tooltip>\n </Link>\n </Flex>\n );\n};\n","import React, {FC} from 'react';\nimport {Flex, Icon, Tooltip} from '@gravity-ui/uikit';\nimport {AccountUsageViewType} from '../../../../store/reducers/accounts/usage/accounts-usage-filters';\nimport cn from 'bem-cn-lite';\nimport format from '../../../../common/hammer/format';\nimport CircleInfoIcon from '@gravity-ui/icons/svgs/circle-info.svg';\nimport './DetailTableCell.scss';\n\nconst block = cn('detail-table-cell');\n\nconst getRenderSign = (value: number) => (!value || value < 0 ? '' : '+');\nconst getDiffClass = (showDiff: boolean, sign: number) => {\n if (!showDiff || !sign) return undefined;\n return sign > 0 ? 'plus' : 'minus';\n};\n\ntype Props = {\n value: number | null;\n additionalValue: number | null;\n viewType?: AccountUsageViewType;\n formatType: 'bytes' | 'number';\n};\n\nexport const DetailTableCell: FC<Props> = ({value, additionalValue, viewType, formatType}) => {\n const totalValue = additionalValue ? Number(value) + additionalValue : Number(value);\n const showDiff = viewType?.endsWith('-diff');\n const sign = Math.sign(totalValue);\n\n const formatFn = formatType === 'bytes' ? format.Bytes : format.Number;\n\n return (\n <Flex justifyContent=\"center\" alignItems=\"center\" gap={1} className={block()}>\n <span className={block('value', {diff: getDiffClass(Boolean(showDiff), sign)})}>\n {showDiff && getRenderSign(sign)}\n {formatFn(totalValue)}\n </span>\n {Boolean(additionalValue) && (\n <Tooltip\n content={`${formatFn(value)} + ${formatFn(additionalValue)} (versioned)`}\n placement=\"top\"\n >\n <div tabIndex={0} className={block('alert-icon')}>\n <Icon data={CircleInfoIcon} size={14} />\n </div>\n </Tooltip>\n )}\n </Flex>\n );\n};\n","import React, {useCallback} from 'react';\n\nimport capitalize_ from 'lodash/capitalize';\nimport forEach_ from 'lodash/forEach';\n\nimport cn from 'bem-cn-lite';\n\nimport format from '../../../../common/hammer/format';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {\n fetchAccountUsageList,\n fetchAccountUsageTree,\n openAccountAttributesModal,\n setAccountUsageDataFilter,\n setAccountUsageSortState,\n syncAccountsUsageViewTypeWithSettings,\n} from '../../../../store/actions/accounts/account-usage';\nimport DataTableYT from '../../../../components/DataTableYT/DataTableYT';\nimport {\n getAccountUsageAvailableColumns,\n getAccountUsageCurrentSnapshot,\n getAccountUsageListDiffError,\n getAccountUsageListDiffItems,\n getAccountUsageListDiffLoaded,\n getAccountUsageListDiffLoading,\n getAccountUsageListDiffMediums,\n getAccountUsageListError,\n getAccountUsageListItems,\n getAccountUsageListLoaded,\n getAccountUsageListLoading,\n getAccountUsageListMediums,\n getAccountUsagePageCount,\n getAccountUsagePageIndex,\n getAccountUsageSortStateByColumn,\n getAccountUsageTreeDiffError,\n getAccountUsageTreeDiffItems,\n getAccountUsageTreeDiffLoaded,\n getAccountUsageTreeDiffLoading,\n getAccountUsageTreeDiffMediums,\n getAccountUsageTreeError,\n getAccountUsageTreeItems,\n getAccountUsageTreeItemsBasePath,\n getAccountUsageTreeLoaded,\n getAccountUsageTreeLoading,\n getAccountUsageTreeMediums,\n getAccountUsageViewType,\n getAccountUsageVisibleDataColumns,\n getAccountsUsageDiffFromSnapshot,\n getAccountsUsageDiffToSnapshot,\n isAccountsUsageDiffView,\n readableAccountUsageColumnName,\n} from '../../../../store/selectors/accounts/account-usage';\nimport DataTable, {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport ErrorBlock from '../../../../components/Error/Error';\nimport {\n STICKY_DOUBLE_TOOLBAR_BOTTOM,\n STICKY_TOOLBAR_BOTTOM,\n} from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport ColumnHeader from '../../../../components/ColumnHeader/ColumnHeader';\nimport Icon from '../../../../components/Icon/Icon';\nimport {getCluster} from '../../../../store/selectors/global';\nimport Loader from '../../../../components/Loader/Loader';\n\nimport {SubjectCard} from '../../../../components/SubjectLink/SubjectLink';\nimport {Secondary, Warning} from '../../../../components/Text/Text';\nimport PathView from '../../../../containers/PathFragment/PathFragment';\nimport {getIconNameForType} from '../../../../utils/navigation/path-editor';\nimport {OrderType} from '../../../../utils/sort-helpers';\nimport {NoContent} from '../../../../components/NoContent/NoContent';\nimport {\n AccountUsageDataItem,\n MediumKeyTemplate,\n VersionedKeyTemplate,\n} from '../../../../store/reducers/accounts/usage/account-usage-types';\nimport {\n fetchAccountUsageListDiff,\n fetchAccountUsageTreeDiff,\n} from '../../../../store/actions/accounts/account-usage-diff';\nimport {useUpdater} from '../../../../hooks/use-updater';\n\nimport './AccountUsageDetails.scss';\nimport {AccountActionsField, AccountRequestData} from './AccountActionsField';\nimport {DetailTableCell} from './DetailTableCell';\n\nconst TABLE_SETTINGS: Settings = {\n displayIndices: false,\n stickyHead: DataTable.MOVING,\n stickyFooter: DataTable.MOVING,\n stickyTop: STICKY_TOOLBAR_BOTTOM,\n stickyBottom: 0,\n syncHeadOnResize: true,\n};\n\nconst TABLE_SETTINGS_DOUBLE_TOOLBAR: Settings = {\n displayIndices: false,\n stickyHead: DataTable.MOVING,\n stickyFooter: DataTable.MOVING,\n stickyTop: STICKY_DOUBLE_TOOLBAR_BOTTOM,\n stickyBottom: 0,\n syncHeadOnResize: true,\n};\n\nconst block = cn('account-usage-details');\n\nconst ROW_CLASS_NAME = block('row');\n\nfunction AccountUsageDetailsHeader(props: {column: keyof AccountUsageDataItem}) {\n const dispatch = useDispatch();\n const sortOrder = useSelector(getAccountUsageSortStateByColumn);\n const {column} = props;\n\n const onSort = React.useCallback(\n (column: string, nextOrder: OrderType, opts: {multisort?: boolean}) => {\n dispatch(setAccountUsageSortState({column, order: nextOrder}, opts.multisort));\n },\n [dispatch],\n );\n\n const {order, multisortIndex} = sortOrder[column] || {};\n\n return (\n <ColumnHeader\n column={column}\n title={readableAccountUsageColumnName(column)}\n order={order}\n onSort={onSort}\n multisortIndex={multisortIndex}\n />\n );\n}\n\nconst PageCounterMemo = React.memo(PageCounter);\n\nfunction PathHeader() {\n return (\n <div className={block('path-header')}>\n <AccountUsageDetailsHeader column={'path'} />\n <div className={block('path-header-loader')}>\n <UsageLoaderMemo />\n </div>\n <div className={block('path-header-page')}>\n <PageCounterMemo />\n </div>\n </div>\n );\n}\n\nconst UsageLoaderMemo = React.memo(UsageLoader);\n\nfunction useColumnsByPreset(mediums: Array<string>) {\n const dispatch = useDispatch();\n\n const availableColumns = useSelector(getAccountUsageAvailableColumns);\n const visibleColumns = useSelector(getAccountUsageVisibleDataColumns);\n const cluster = useSelector(getCluster);\n const viewType = useSelector(getAccountUsageViewType);\n const treePath = useSelector(getAccountUsageTreeItemsBasePath);\n\n const handleAttributeButtonClick = useCallback(\n (accountData: AccountRequestData) => {\n dispatch(openAccountAttributesModal(accountData));\n },\n [dispatch],\n );\n\n const columnsByName = React.useMemo(() => {\n const res: Map<string, Column<AccountUsageDataItem>> = new Map();\n\n const iconName =\n viewType === 'tree' || viewType === 'tree-diff'\n ? ''\n : viewType === 'list' || viewType === 'list-diff'\n ? 'list'\n : 'folders';\n res.set('type', {\n name: 'type',\n header: iconName === '' ? null : <Icon awesome={iconName} />,\n sortable: false,\n render(item) {\n const {type, path, acl_status} = item.row;\n return acl_status === 'deny' ? (\n <Icon face=\"light\" awesome=\"eye-slash\" />\n ) : (\n <Icon awesome={getIconNameForType(path ? type : '')} />\n );\n },\n width: 50,\n });\n res.set('path', {\n name: 'path',\n header: <PathHeader />,\n sortable: false,\n render(item) {\n const {path} = item.row;\n if (!path) {\n return <Warning>Permission denied</Warning>;\n }\n\n return <PathView path={path} lastFragmentOnly={viewType === 'tree'} />;\n },\n onClick: ({row}) => {\n const {path} = row;\n if (\n !path ||\n (viewType !== 'tree-diff' && viewType !== 'tree') ||\n row.type !== 'map_node'\n ) {\n return;\n }\n dispatch(setAccountUsageDataFilter({treePath: row.path}));\n },\n className: block('path-cell', {view: viewType}),\n });\n\n res.set('disk_space', {\n name: 'disk_space',\n header: <AccountUsageDetailsHeader column={'disk_space'} />,\n sortable: false,\n render(item) {\n return (\n <DetailTableCell\n value={item.row.disk_space}\n additionalValue={item.row['versioned:disk_space']}\n viewType={viewType}\n formatType=\"bytes\"\n />\n );\n },\n align: 'right',\n width: 120,\n });\n res.set('master_memory', {\n name: 'Master mem',\n header: <AccountUsageDetailsHeader column={'master_memory'} />,\n sortable: false,\n render(item) {\n return (\n <DetailTableCell\n value={item.row.master_memory}\n additionalValue={item.row['versioned:master_memory']}\n viewType={viewType}\n formatType=\"bytes\"\n />\n );\n },\n align: 'right',\n width: 120,\n });\n res.set('owner', {\n name: 'Owner',\n header: <AccountUsageDetailsHeader column={'owner'} />,\n sortable: false,\n render(item) {\n return <SubjectCard name={item.row.owner} />;\n },\n width: 120,\n });\n\n forEach_(mediums, (medium) => {\n const name = `medium:${medium}` as MediumKeyTemplate;\n const versionedName = `versioned:medium:${name}` as VersionedKeyTemplate;\n\n res.set(name, {\n name,\n header: <AccountUsageDetailsHeader column={name} />,\n sortable: false,\n render(item) {\n const additionalValue =\n versionedName in item.row ? Number(item.row[versionedName]) : null;\n return (\n <DetailTableCell\n value={Number(item.row[name])}\n additionalValue={additionalValue}\n viewType={viewType}\n formatType=\"bytes\"\n />\n );\n },\n align: 'right',\n width: 120,\n });\n });\n\n forEach_(availableColumns, (field) => {\n if (res.has(field)) {\n return;\n }\n\n res.set(field, {\n name: field,\n header: <AccountUsageDetailsHeader column={field} />,\n sortable: false,\n render(item) {\n const {[field]: value} = item.row;\n const additionalKey = `versioned:${field}` as VersionedKeyTemplate;\n const additionalValue =\n additionalKey in item.row ? Number(item.row[additionalKey]) : null;\n\n if (typeof value === 'boolean') {\n return value === undefined ? format.NO_VALUE : capitalize_(String(value));\n }\n if (field.endsWith('_time')) {\n return value === null || value === undefined\n ? format.NO_VALUE\n : format.DateTime(value, {format: 'full'});\n }\n if (field.endsWith('_count')) {\n return (\n <DetailTableCell\n value={Number(value)}\n additionalValue={additionalValue}\n viewType={viewType}\n formatType=\"number\"\n />\n );\n }\n },\n align: 'right',\n width: 150,\n });\n });\n\n return res;\n }, [treePath, viewType, mediums, cluster, availableColumns, dispatch]);\n\n return React.useMemo(() => {\n const res: Array<Column<AccountUsageDataItem>> = [];\n visibleColumns.forEach((name) => {\n const item = columnsByName.get(name);\n if (item) {\n res.push(item);\n }\n });\n res.push({\n name: 'actions',\n header: '',\n sortable: false,\n render(item) {\n return (\n <AccountActionsField\n path={item.row.path}\n cluster={cluster}\n account={item.row.account}\n onAttributeButtonClick={handleAttributeButtonClick}\n />\n );\n },\n width: 50,\n });\n return res;\n }, [handleAttributeButtonClick, cluster, columnsByName, visibleColumns]);\n}\n\nconst UPDATE_TIMEOUT = 600000;\n\nfunction AccountUsageDetailsList() {\n const dispatch = useDispatch();\n const currentSnapshot = useSelector(getAccountUsageCurrentSnapshot);\n\n const updateFn = React.useCallback(() => {\n dispatch(fetchAccountUsageList());\n }, [dispatch]);\n\n useUpdater(updateFn, {timeout: UPDATE_TIMEOUT, onlyOnce: currentSnapshot !== undefined});\n\n const items = useSelector(getAccountUsageListItems);\n const loading = useSelector(getAccountUsageListLoading);\n const loaded = useSelector(getAccountUsageListLoaded);\n const error = useSelector(getAccountUsageListError);\n\n const mediums = useSelector(getAccountUsageListMediums);\n const columns = useColumnsByPreset(mediums);\n\n if (!loading && error) {\n return <ErrorBlock error={error} />;\n }\n\n return (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={items}\n settings={TABLE_SETTINGS}\n rowClassName={() => ROW_CLASS_NAME}\n useThemeYT\n />\n );\n}\n\nfunction AccountUsageDetailsListDiff() {\n const dispatch = useDispatch();\n React.useEffect(() => {\n dispatch(fetchAccountUsageListDiff());\n }, [dispatch]);\n\n const items = useSelector(getAccountUsageListDiffItems);\n const loading = useSelector(getAccountUsageListDiffLoading);\n const loaded = useSelector(getAccountUsageListDiffLoaded);\n const error = useSelector(getAccountUsageListDiffError);\n\n const mediums = useSelector(getAccountUsageListDiffMediums);\n const columns = useColumnsByPreset(mediums);\n\n if (!loading && error) {\n return <ErrorBlock error={error} />;\n }\n\n return (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={items}\n settings={TABLE_SETTINGS}\n rowClassName={() => ROW_CLASS_NAME}\n useThemeYT\n />\n );\n}\n\nfunction AccountUsageDetailsTree() {\n const dispatch = useDispatch();\n const currentSnapshot = useSelector(getAccountUsageCurrentSnapshot);\n const updateFn = React.useCallback(() => {\n dispatch(fetchAccountUsageTree());\n }, [dispatch]);\n\n useUpdater(updateFn, {timeout: UPDATE_TIMEOUT, onlyOnce: currentSnapshot !== undefined});\n\n const items = useSelector(getAccountUsageTreeItems);\n const loading = useSelector(getAccountUsageTreeLoading);\n const loaded = useSelector(getAccountUsageTreeLoaded);\n const error = useSelector(getAccountUsageTreeError);\n\n const mediums = useSelector(getAccountUsageTreeMediums);\n const columns = useColumnsByPreset(mediums);\n\n if (!loading && error) {\n return <ErrorBlock error={error} />;\n }\n\n return (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={items}\n settings={TABLE_SETTINGS_DOUBLE_TOOLBAR}\n rowClassName={() => ROW_CLASS_NAME}\n useThemeYT\n />\n );\n}\n\nfunction AccountUsageDetailsTreeDiff() {\n const dispatch = useDispatch();\n React.useEffect(() => {\n dispatch(fetchAccountUsageTreeDiff());\n }, [dispatch]);\n\n const items = useSelector(getAccountUsageTreeDiffItems);\n const loading = useSelector(getAccountUsageTreeDiffLoading);\n const loaded = useSelector(getAccountUsageTreeDiffLoaded);\n const error = useSelector(getAccountUsageTreeDiffError);\n\n const mediums = useSelector(getAccountUsageTreeDiffMediums);\n const columns = useColumnsByPreset(mediums);\n\n if (!loading && error) {\n return <ErrorBlock error={error} />;\n }\n\n return (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={items}\n settings={TABLE_SETTINGS_DOUBLE_TOOLBAR}\n rowClassName={() => ROW_CLASS_NAME}\n useThemeYT\n />\n );\n}\n\nconst AccountUsageDetailsListMemo = React.memo(AccountUsageDetailsList);\nconst AccountUsageDetailsListDiffMemo = React.memo(AccountUsageDetailsListDiff);\nconst AccountUsageDetailsTreeMemo = React.memo(AccountUsageDetailsTree);\nconst AccountUsageDetailsTreeDiffMemo = React.memo(AccountUsageDetailsTreeDiff);\n\nfunction AccountUsageDetailsDiff({children}: {children: React.ReactNode}) {\n const isDiffView = useSelector(isAccountsUsageDiffView);\n const from = useSelector(getAccountsUsageDiffFromSnapshot);\n const to = useSelector(getAccountsUsageDiffToSnapshot);\n\n if (!isDiffView) {\n return <>Unexpected view mode</>;\n }\n\n if ((!from && !to) || from === to) {\n return (\n <NoContent\n warning={\"You don't have any selected snapshot range\"}\n hint={\n <React.Fragment>\n Please select <Secondary>From</Secondary>, <Secondary>To</Secondary>{' '}\n snapshots\n </React.Fragment>\n }\n />\n );\n }\n\n return <>{children}</>;\n}\n\nconst AccountUsageDetailsDiffMemo = React.memo(AccountUsageDetailsDiff);\n\nfunction AccountUsageDetails() {\n const dispatch = useDispatch();\n const viewType = useSelector(getAccountUsageViewType);\n\n React.useEffect(() => {\n dispatch(syncAccountsUsageViewTypeWithSettings());\n }, [dispatch]);\n\n let diffContent = `${viewType} is not implemented` as React.ReactNode;\n\n switch (viewType) {\n case 'tree':\n return <AccountUsageDetailsTreeMemo />;\n case 'list-plus-folders':\n case 'list':\n return <AccountUsageDetailsListMemo key={viewType} />;\n case 'list-diff':\n case 'list-plus-folders-diff':\n diffContent = <AccountUsageDetailsListDiffMemo key={viewType} />;\n break;\n case 'tree-diff':\n diffContent = <AccountUsageDetailsTreeDiffMemo />;\n break;\n }\n\n return !viewType ? null : (\n <AccountUsageDetailsDiffMemo>{diffContent}</AccountUsageDetailsDiffMemo>\n );\n}\n\nconst AccountsUsageDetailsListLoaderMemo = React.memo(AccountsUsageDetailsListLoader);\nconst AccountsUsageDetailsTreeLoaderMemo = React.memo(AccountsUsageDetailsTreeLoader);\n\nfunction UsageLoader() {\n const viewType = useSelector(getAccountUsageViewType);\n\n switch (viewType) {\n case 'list':\n case 'list-plus-folders':\n return <AccountsUsageDetailsListLoaderMemo />;\n case 'tree':\n return <AccountsUsageDetailsTreeLoaderMemo />;\n case 'tree-diff':\n return <AccountsUsageDetailsTreeDiffLoader />;\n case 'list-diff':\n case 'list-plus-folders-diff':\n return <AccountsUsageDetailsListDiffLoader />;\n }\n return null;\n}\n\nfunction AccountsUsageDetailsListLoader() {\n const loading = useSelector(getAccountUsageListLoading);\n return <Loader visible={loading} />;\n}\n\nfunction AccountsUsageDetailsTreeLoader() {\n const loading = useSelector(getAccountUsageTreeLoading);\n return <Loader visible={loading} />;\n}\n\nfunction AccountsUsageDetailsListDiffLoader() {\n const loading = useSelector(getAccountUsageListDiffLoading);\n return <Loader visible={loading} />;\n}\n\nfunction AccountsUsageDetailsTreeDiffLoader() {\n const loading = useSelector(getAccountUsageTreeDiffLoading);\n return <Loader visible={loading} />;\n}\n\nfunction PageCounter() {\n const value = useSelector(getAccountUsagePageIndex);\n const count = useSelector(getAccountUsagePageCount);\n\n return count > 1 ? (\n <Secondary>\n Page: {Number(value) + 1} / {count}{' '}\n </Secondary>\n ) : null;\n}\n\nexport default React.memo(AccountUsageDetails);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport AccountUsageToolbar from './AccountUsageToolbar';\nimport AccountUsageDetails from './AccountUsageDetails';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {NoContent} from '../../../../components/NoContent/NoContent';\nimport {getActiveAccount} from '../../../../store/selectors/accounts/accounts-ts';\nimport {useSelector} from 'react-redux';\nimport {getAccountUsageViewType} from '../../../../store/selectors/accounts/account-usage';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\n\nconst block = cn('accounts');\n\nfunction AccountDetailedUsageTab() {\n const account = useSelector(getActiveAccount);\n const viewType = useSelector(getAccountUsageViewType);\n\n if (!account) {\n return (\n <NoContent\n warning={\"You don't have any selected accounts\\n\"}\n hint={'Please choose one to display charts'}\n />\n );\n }\n\n return (\n <ErrorBoundary>\n <WithStickyToolbar\n className={block('usage')}\n doubleHeight={viewType === 'tree' || viewType === 'tree-diff'}\n toolbar={<AccountUsageToolbar />}\n content={<AccountUsageDetails />}\n />\n </ErrorBoundary>\n );\n}\n\nexport default React.memo(AccountDetailedUsageTab);\n","import React from 'react';\nimport block from 'bem-cn-lite';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\n\nimport reduce_ from 'lodash/reduce';\n\nimport {Redirect, Route, Switch} from 'react-router';\n\nimport Tabs from '../../../components/Tabs/Tabs';\n\nimport {Page} from '../../../constants/index';\nimport {\n ACCOUNTS_ALLOWED_ROOT_TABS,\n ACCOUNTS_DEFAULT_TAB,\n AccountsTab,\n} from '../../../constants/accounts/accounts';\nimport {\n getAccountsIsFinalLoadingStatus,\n getActiveAccount,\n} from '../../../store/selectors/accounts/accounts-ts';\nimport {getLastVisitedTabs} from '../../../store/selectors/settings';\nimport {TabSettings, makeTabProps} from '../../../utils';\nimport {formatByParams} from '../../../utils/format';\n\nimport AccountsGeneralTab from '../tabs/general/AccountsGeneralTab';\nimport AccountStatisticTab from '../tabs/statistic/AccountStatisticTab';\nimport AccountsAclTab from '../tabs/acl/AccountsAclTab';\nimport AccountsMonitorTab from '../tabs/monitor/AccountsMonitorTab';\nimport AccountsUsageTab from '../tabs/detailed-usage/AccountUsageTab';\nimport {useAppRumMeasureStart} from '../../../rum/rum-app-measures';\nimport {useRumMeasureStop} from '../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\nimport {getCluster} from '../../../store/selectors/global';\nimport AccountsUpdater from './AccountsUpdater';\nimport {getAccountsUsageBasePath} from '../../../config';\nimport {RootState} from '../../../store/reducers';\n\nimport './Accounts.scss';\nimport UIFactory from '../../../UIFactory';\nimport {UI_TAB_SIZE} from '../../../constants/global';\n\nconst b = block('accounts');\n\ntype Props = ConnectedProps<typeof connector>;\n\nexport class Accounts extends React.Component<\n Props & {match: {url: string; path: string}; lastVisitedTab: string}\n> {\n static defaultProps = {\n lastVisitedTab: ACCOUNTS_DEFAULT_TAB,\n };\n\n render() {\n const {match, cluster, lastVisitedTab, activeAccount, allowUsageTab} = this.props;\n const showSettings = reduce_(\n AccountsTab,\n (acc, tab) => {\n acc[tab] = {\n show: Boolean(activeAccount) || Boolean(ACCOUNTS_ALLOWED_ROOT_TABS[tab]),\n };\n return acc;\n },\n {} as Record<string, TabSettings>,\n );\n const usageTab = showSettings[AccountsTab.USAGE];\n usageTab.show = usageTab.show && Boolean(allowUsageTab);\n\n const statsTab = showSettings[AccountsTab.STATISTICS];\n statsTab.show = statsTab.show && Boolean(UIFactory.getStatisticsComponentForAccount());\n\n const {\n component: monitoringComponent,\n urlTemplate,\n title: monitoringTitle,\n } = UIFactory.getMonitoringForAccounts() ?? {};\n const monTab = showSettings[AccountsTab.MONITOR];\n monTab.show = monTab.show && Boolean(monitoringComponent ?? urlTemplate);\n if (urlTemplate) {\n monTab.routed = false;\n monTab.external = true;\n monTab.url = formatByParams(urlTemplate, {\n ytCluster: cluster,\n ytAccount: activeAccount,\n });\n }\n\n const props = makeTabProps(match.url, AccountsTab, showSettings, undefined, {\n [AccountsTab.USAGE]: 'Detailed usage',\n [AccountsTab.MONITOR]: monitoringTitle ?? 'Monitoring',\n });\n\n const lastTab = lastVisitedTab in AccountsTab ? lastVisitedTab : undefined;\n const tabToRedirect = activeAccount && lastTab ? lastTab : AccountsTab.GENERAL;\n\n return (\n <div className=\"elements-page__content\">\n <AccountsRumMeasure />\n <AccountsUpdater />\n <section className={b(null, 'elements-main-section')}>\n <div className=\"elements-section\">\n <div className={b('heading')}>\n <Tabs\n {...props}\n active={ACCOUNTS_DEFAULT_TAB}\n className={b('tabs')}\n routed\n routedPreserveLocation\n size={UI_TAB_SIZE}\n />\n </div>\n </div>\n <div className={b('tab-viewer')}>\n <Switch>\n <Route\n path={`${match.path}/${AccountsTab.GENERAL}`}\n component={AccountsGeneralTab}\n />\n {statsTab.show && (\n <Route\n path={`${match.path}/${AccountsTab.STATISTICS}`}\n component={AccountStatisticTab}\n />\n )}\n {monTab.show && monitoringComponent && (\n <Route\n path={`${match.path}/${AccountsTab.MONITOR}`}\n render={() => (\n <AccountsMonitorTab component={monitoringComponent} />\n )}\n />\n )}\n <Route\n path={`${match.path}/${AccountsTab.ACL}`}\n component={AccountsAclTab}\n />\n {usageTab.show && (\n <Route\n path={`${match.path}/${AccountsTab.USAGE}`}\n component={AccountsUsageTab}\n />\n )}\n <Redirect from={match.url} to={`${match.url}/${tabToRedirect}`} />\n </Switch>\n </div>\n </section>\n </div>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const lastVisitedTabs = getLastVisitedTabs(state);\n\n return {\n lastVisitedTab: lastVisitedTabs[Page.ACCOUNTS],\n activeAccount: getActiveAccount(state),\n allowUsageTab: Boolean(getAccountsUsageBasePath()),\n cluster: getCluster(state),\n };\n};\n\nconst connector = connect(mapStateToProps);\nexport default connector(Accounts);\n\nfunction AccountsRumMeasure() {\n const isFinalStatus = useSelector(getAccountsIsFinalLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.ACCOUNTS,\n allowStart: ([isFinal]) => !isFinal,\n startDeps: [isFinalStatus],\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.ACCOUNTS,\n allowStop: ([isFinal]) => isFinal,\n stopDeps: [isFinalStatus],\n });\n\n return null;\n}\n","import cn from 'bem-cn-lite';\nimport React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport {DialogField, FormApi, YTDFDialog} from '../../../../../components/Dialog';\nimport {closeCreateModal} from '../../../../../store/actions/accounts/editor';\nimport {loadEditedAccount} from '../../../../../store/actions/accounts/accounts';\nimport {createAccountFromInfo} from '../../../../../utils/accounts/editor';\nimport {getCluster, getCurrentUserName, isDeveloper} from '../../../../../store/selectors/global';\nimport {getActiveAccount} from '../../../../../store/selectors/accounts/accounts';\nimport {ROOT_ACCOUNT_NAME} from '../../../../../constants/accounts/accounts';\n\nimport './AccountCreateDialog.scss';\nimport {RootState} from '../../../../../store/reducers';\nimport {isIdmAclAvailable} from '../../../../../config';\nimport {isAbcAllowed} from '../../../../../UIFactory';\n\nconst block = cn('account-create-dialog');\n\ninterface FormValues {\n abcService?: {slug: string; id: number};\n account: string;\n parentAccount: string;\n responsibles: Array<unknown>;\n createHome: boolean;\n}\n\nfunction isRootAccount(account: string) {\n return account === 'root';\n}\n\nclass AccountCreateDialog extends React.Component<ConnectedProps<typeof connector>> {\n render() {\n const {visible, newAccountInfo, activeAccount, currentUserName, isAdmin} = this.props;\n\n const {parentAccount, responsibles = []} = newAccountInfo;\n\n return (\n <YTDFDialog<FormValues>\n className={block()}\n visible={visible}\n onClose={this.onClose}\n headerProps={{title: 'Create account'}}\n onAdd={this.onSubmit}\n pristineSubmittable\n initialValues={{\n ...newAccountInfo,\n parentAccount:\n parentAccount || activeAccount || (isAdmin ? ROOT_ACCOUNT_NAME : undefined),\n responsibles: responsibles.length\n ? responsibles\n : [{value: currentUserName, type: 'users'}],\n }}\n fields={[\n ...((isAdmin && isAbcAllowed()\n ? [\n {\n name: 'abcService',\n type: 'abc-control',\n caption: 'Service in ABC',\n required: true,\n visibilityCondition: {\n when: 'parentAccount',\n isActive: isRootAccount,\n },\n extras: {\n placeholder: 'Enter ABC service name',\n },\n },\n ]\n : []) as Array<DialogField<FormValues>>),\n {\n name: 'account',\n type: 'text',\n caption: 'Account name',\n required: true,\n extras: {\n placeholder: 'Enter account name',\n className: block('name'),\n },\n },\n {\n name: 'parentAccount',\n type: 'accountsSuggest',\n caption: 'Parent account',\n required: true,\n extras: {\n placeholder: 'Enter parent account name',\n allowRootAccount: isAdmin,\n },\n },\n ...((isIdmAclAvailable()\n ? [\n {\n name: 'responsibles',\n type: 'acl-subjects',\n caption: 'Responsible users',\n required: true,\n extras: {\n placeholder: 'Enter name or login',\n allowedTypes: ['users'],\n },\n },\n ]\n : []) as Array<DialogField<FormValues>>),\n ...(isAdmin\n ? [\n {\n name: 'createHome',\n type: 'tumbler' as const,\n caption: 'Create home directory',\n },\n ]\n : []),\n ]}\n />\n );\n }\n\n onSubmit = (form: FormApi<FormValues>) => {\n const {createAccountFromInfo, closeCreateModal, loadEditedAccount, cluster} = this.props;\n const newAccountInfo = form.getState().values;\n if (!isRootAccount(newAccountInfo.parentAccount)) {\n newAccountInfo.abcService = undefined;\n }\n\n return createAccountFromInfo(cluster, newAccountInfo).then(() => {\n closeCreateModal();\n const {account} = newAccountInfo;\n loadEditedAccount(account);\n });\n };\n\n onClose = (form: FormApi<FormValues>) => {\n this.props.closeCreateModal(form.getState().values);\n };\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {\n accounts: {editor},\n } = state;\n return {\n currentUserName: getCurrentUserName(state),\n activeAccount: getActiveAccount(state),\n visible: editor.createModalVisible,\n newAccountInfo: editor.newAccountInfo as FormValues,\n cluster: getCluster(state),\n isAdmin: isDeveloper(state),\n };\n};\n\nconst mapDispatchToProps = {\n closeCreateModal,\n loadEditedAccount,\n createAccountFromInfo,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(AccountCreateDialog);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n\nimport {openCreateModal} from '../../../../../store/actions/accounts/editor';\n\nimport AccountCreateDialog from '../../../../../pages/accounts/tabs/general/Editor/AccountCreateDialog';\nimport Button from '../../../../../components/Button/Button';\n\nclass AccountCreate extends Component {\n static propTypes = {\n openCreateModal: PropTypes.func.isRequired,\n className: PropTypes.string,\n };\n\n state = {\n infoValue: '',\n activeCreateValue: '',\n showConfirmMessage: false,\n showErrorMessage: false,\n };\n\n render() {\n const {openCreateModal, className} = this.props;\n return (\n <span className={className}>\n <Button view=\"action\" title=\"Create account\" onClick={openCreateModal}>\n Create account\n </Button>\n <AccountCreateDialog />\n </span>\n );\n }\n}\n\nconst mapDispatchToProps = {\n openCreateModal,\n};\n\nexport default connect(null, mapDispatchToProps)(AccountCreate);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport some_ from 'lodash/some';\n\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\nimport Favourites, {FavouritesItem} from '../../../components/Favourites/Favourites';\nimport {\n getFavouriteAccounts,\n isActiveAcountInFavourites,\n} from '../../../store/selectors/favourites';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n getAccountsMapByName,\n getActiveAccount,\n} from '../../../store/selectors/accounts/accounts-ts';\nimport {setActiveAccount} from '../../../store/actions/accounts/accounts';\nimport {accountsToggleFavourite} from '../../../store/actions/favourites';\nimport {Breadcrumbs, BreadcrumbsItem} from '@gravity-ui/uikit';\nimport {getActiveAccountBreadcrumbs} from '../../../store/selectors/accounts/accounts';\n\nimport AccountCreate from '../tabs/general/Editor/AccountCreate';\nimport Link from '../../../components/Link/Link';\nimport {makeRoutedURL} from '../../../store/location';\nimport {Page} from '../../../constants';\n\nimport {getCluster, getClusterUiConfig} from '../../../store/selectors/global';\nimport {ACCOUNTS_ALLOWED_ROOT_TABS, AccountsTab} from '../../../constants/accounts/accounts';\n\nimport './AccountsTopRowContent.scss';\nimport UIFactory from '../../../UIFactory';\n\nconst block = cn('accounts-top-row-content');\n\nfunction AccountsTopRowContent() {\n const clusterUiConfig = useSelector(getClusterUiConfig);\n const account = useSelector(getActiveAccount);\n const accountsByName = useSelector(getAccountsMapByName) as any;\n\n const current = accountsByName[account];\n\n return (\n <RowWithName page={Page.ACCOUNTS} urlParams={{account: ''}}>\n <AccountsFavourites />\n <AccountsBreadcrumbs />\n <span className={block('actions')}>\n {UIFactory.renderTopRowExtraControlsForAccount({\n clusterUiConfig,\n accountAttributes: current?.$attributes,\n })}\n <AccountCreate className={block('create')} />\n </span>\n </RowWithName>\n );\n}\n\nfunction AccountsFavourites() {\n const isActiveInFavourites = useSelector(isActiveAcountInFavourites);\n const favourites = useSelector(getFavouriteAccounts);\n const dispatch = useDispatch();\n const activeAccount = useSelector(getActiveAccount);\n\n const handleFavouriteItemClick = React.useCallback(\n (item: FavouritesItem) => {\n dispatch(setActiveAccount(item.path));\n },\n [dispatch],\n );\n\n const handleFavouriteToggle = React.useCallback(() => {\n dispatch(accountsToggleFavourite(activeAccount));\n }, [dispatch, activeAccount]);\n\n return (\n <Favourites\n isActive={isActiveInFavourites}\n items={favourites}\n onItemClick={handleFavouriteItemClick}\n onToggle={handleFavouriteToggle}\n toggleDisabled={!activeAccount}\n theme={'clear'}\n />\n );\n}\n\ninterface BreadcrumbsItemType {\n text: string;\n url: string;\n title?: string;\n}\n\nfunction AccountsBreadcrumbs() {\n // @ts-ignore\n const bcItems = useSelector(getActiveAccountBreadcrumbs).slice(1);\n const dispatch = useDispatch();\n\n const handleItemClick = React.useCallback(\n (item: BreadcrumbsItemType) => {\n dispatch(setActiveAccount(item.text));\n },\n [dispatch, setActiveAccount],\n );\n\n const items = React.useMemo(() => {\n return [\n {\n text: '',\n action: () => handleItemClick({text: '', url: ''}),\n },\n ...bcItems.map((item) => {\n return {\n ...item,\n action: () => handleItemClick(item),\n };\n }),\n ];\n }, [bcItems, handleItemClick]);\n\n return (\n <Breadcrumbs\n className={block('breadcrumbs')}\n items={items}\n lastDisplayedItemsCount={2}\n firstDisplayedItemsCount={1}\n renderItemContent={renderBcItem}\n />\n );\n}\n\nfunction renderBcItem(item: BreadcrumbsItem, isCurrent: boolean) {\n return (\n <BreadcrumbLink account={item.text} title={item.text || '<Root>'} isCurrent={isCurrent} />\n );\n}\n\ninterface BreadcrumbLinkProps {\n account: string;\n title?: string;\n isCurrent: boolean;\n}\n\nfunction BreadcrumbLink({account, title, isCurrent}: BreadcrumbLinkProps) {\n const cluster = useSelector(getCluster);\n const pathname = account\n ? window.location.pathname\n : calcRootPathname(window.location.pathname, cluster);\n const url = makeRoutedURL(pathname, {account});\n\n return (\n <Link\n className={block('breadcrumbs-item', {current: isCurrent})}\n theme={'ghost'}\n url={url}\n routed\n >\n {title || account}\n </Link>\n );\n}\n\nfunction calcRootPathname(pathname: string, cluster: string) {\n const isAllowedRootTab = some_(ACCOUNTS_ALLOWED_ROOT_TABS, (_v, tab) => {\n return pathname.endsWith('/' + tab);\n });\n\n return isAllowedRootTab ? pathname : `/${cluster}/${Page.ACCOUNTS}/${AccountsTab.GENERAL}`;\n}\n\nexport default React.memo(AccountsTopRowContent);\n","import {RumMeasureStartProps, useRumMeasureStart} from './RumUiContext';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../store/selectors/global';\n\nexport function useAppRumMeasureStart<T extends Array<any>>(params: RumMeasureStartProps<T>) {\n const cluster = useSelector(getCluster);\n\n useRumMeasureStart({\n ...params,\n subPage: params.subPage || `ui.${cluster}`,\n });\n}\n","import filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\n\nimport unipika from '../../common/thor/unipika';\nimport ypath from '../../common/thor/ypath';\n\nimport CancelHelper from '../cancel-helper';\nimport {YTApiId, ytApiV3Id} from '../../rum/rum-wrap-api';\n\nexport const pathEditorRequests = new CancelHelper();\n\nfunction prepareSuggestions(initialPath, parentPath, children) {\n let suggestions = map_(children, (child) => {\n const prepared = {};\n\n prepared.parentPath = parentPath;\n prepared.childPath = '/' + unipika.decode(ypath.getValue(child));\n prepared.path = prepared.parentPath + prepared.childPath;\n prepared.type = ypath.getValue(child, '/@type');\n prepared.dynamic = ypath.getValue(child, '/@dynamic');\n prepared.targetPathBroken = ypath.getValue(child, '/@broken');\n\n return prepared;\n });\n\n suggestions = sortBy_(suggestions, 'childPath');\n\n return suggestions;\n}\n\nexport function preparePath(currentPath) {\n return ypath.YPath.create(currentPath, 'absolute').toSubpath(-2).stringify();\n}\n\nexport function loadSuggestions(path, customFilter) {\n const parentPath = preparePath(path);\n\n return ytApiV3Id\n .list(YTApiId.pathEditorLoadSuggestions, {\n parameters: {path: parentPath, attributes: ['type', 'dynamic']},\n cancellation: pathEditorRequests.saveCancelToken,\n })\n .then(ypath.getValue)\n .then((nodes) => prepareSuggestions(path, parentPath, nodes))\n .then((suggestions) => (customFilter ? customFilter(suggestions) : suggestions));\n}\n\nexport function filterByCurrentPath(currentPath, suggestions) {\n const path = currentPath.toLowerCase();\n\n return filter_(suggestions, (child) => {\n const hasPartOfPath = child.path.startsWith(path);\n const isShowCurrentChild = child.path !== path || child.type === 'map_node';\n\n return hasPartOfPath && isShowCurrentChild;\n });\n}\n\nexport function getNextSelectedIndex(suggestion, selectedIndex) {\n if (selectedIndex === -1 || selectedIndex === suggestion.length - 1) {\n return 0;\n }\n\n return selectedIndex + 1;\n}\n\nexport function getPrevSelectedIndex(suggestions, selectedIndex) {\n if (selectedIndex === -1 || selectedIndex === 0) {\n return suggestions.length - 1;\n }\n\n return selectedIndex - 1;\n}\n\nexport function getCompletedPath(suggestion) {\n return suggestion.type === 'map_node' ? suggestion.path + '/' : suggestion.path;\n}\n\nexport function getIconNameForType(type, targetPathBroken) {\n const icons = {\n document: 'file-alt',\n string_node: 'file-alt',\n int64_node: 'file-alt',\n uint64_node: 'file-alt',\n double_node: 'file-alt',\n boolean_node: 'file-alt',\n map_node: 'folder',\n scheduler_pool_tree_map: 'folder-tree',\n scheduler_pool: 'tasks',\n tablet_cell: 'th',\n journal: 'book',\n table: 'th',\n table_dynamic: 'dyn-th',\n replicated_table: 'th',\n chaos_replicated_table: 'chaos-replicated-table',\n replication_log_table: 'replication-log-table',\n file: 'file',\n topmost_transaction_map: 'folder',\n transaction_map: 'folder',\n transaction: 'code-branch',\n nested_transaction: 'code-branch',\n link: ypath.getBoolean(targetPathBroken) ? 'unlink' : 'link',\n rootstock: 'link',\n portal_entrance: 'link',\n cell_node: 'circle',\n cell_node_map: 'far circle',\n sys_node: 'cog',\n access_control_object_namespace_map: 'acl-namespace-map',\n access_control_object_namespace: 'acl-namespace',\n access_control_object: 'acl-object',\n };\n\n const icon = type ? icons[type] || 'not-suported' : 'eye-slash';\n\n return icon;\n}\n","const SvgBarsDescendingAlignLeft = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M1 3.25a.75.75 0 0 1 .75-.75h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 3.25M1 8a.75.75 0 0 1 .75-.75h8.5a.75.75 0 0 1 0 1.5h-8.5A.75.75 0 0 1 1 8m.75 4a.75.75 0 0 0 0 1.5h2.5a.75.75 0 0 0 0-1.5z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgBarsDescendingAlignLeft;","const SvgCircleInfo = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M8 13.5a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14m1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0m-.25 3a.75.75 0 0 0-1.5 0V11a.75.75 0 0 0 1.5 0z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgCircleInfo;","import React from 'react';\nimport { block } from '../utils/cn';\nconst b = block('breadcrumbs');\nexport function BreadcrumbsButton(props) {\n return React.createElement(\"button\", Object.assign({}, props, { type: \"button\", className: b('switcher', { more: true }) }));\n}\n","'use client';\nimport React from 'react';\nimport { Link } from '../Link';\nimport { block } from '../utils/cn';\nimport { BreadcrumbsButton } from './BreadcrumbsButton';\nconst b = block('breadcrumbs');\nfunction Item({ item, isCurrent, isPrevCurrent, renderItemContent, renderItem, }) {\n const children = renderItemContent\n ? renderItemContent(item, isCurrent, isPrevCurrent)\n : item.text;\n if (renderItem) {\n return renderItem({ item, children, isCurrent, isPrevCurrent });\n }\n const itemTitle = item.title || item.text;\n if (isPrevCurrent || !isCurrent) {\n if (item.href !== undefined) {\n return (React.createElement(Link, { key: item.text, view: \"secondary\", href: item.href, title: itemTitle, onClick: item.action, className: b('item', { 'prev-current': isPrevCurrent }) }, children));\n }\n return (React.createElement(BreadcrumbsButton, { key: item.text, title: itemTitle, onClick: item.action }, children));\n }\n return (React.createElement(\"div\", { title: itemTitle, className: b('item', { current: true }) }, children));\n}\nexport const BreadcrumbsItem = React.memo(Item);\nBreadcrumbsItem.displayName = 'Breadcrumbs.Item';\n","import { addComponentKeysets } from '../../utils/addComponentKeysets';\nimport en from './en.json';\nimport ru from './ru.json';\nconst COMPONENT = 'Breadcrumbs';\nexport default addComponentKeysets({ en, ru }, COMPONENT);\n","'use client';\nimport React from 'react';\nimport { DropdownMenu } from '../DropdownMenu';\nimport { block } from '../utils/cn';\nimport { BreadcrumbsButton } from './BreadcrumbsButton';\nimport i18n from './i18n';\nconst b = block('breadcrumbs');\nexport function BreadcrumbsMore({ popupStyle, popupPlacement, items }) {\n return (React.createElement(DropdownMenu, { items: items, popupProps: {\n className: b('popup', {\n staircase: popupStyle === 'staircase',\n }),\n placement: popupPlacement,\n }, renderSwitcher: ({ onClick }) => (React.createElement(BreadcrumbsButton, { title: i18n('label_more'), onClick: onClick }, \"...\")) }));\n}\nBreadcrumbsMore.displayName = 'Breadcrumbs.More';\n","import React from 'react';\nimport { block } from '../utils/cn';\nconst b = block('breadcrumbs');\nexport function BreadcrumbsSeparator({ renderItemDivider }) {\n return (React.createElement(\"div\", { \"aria-hidden\": true, className: b('divider') }, renderItemDivider ? renderItemDivider() : '/'));\n}\nBreadcrumbsSeparator.displayName = 'Breadcrumbs.Separator';\n","'use client';\nimport React from 'react';\nimport _throttle from 'lodash/throttle';\nimport { block } from '../utils/cn';\nimport { BreadcrumbsItem as Item } from './BreadcrumbsItem';\nimport { BreadcrumbsMore } from './BreadcrumbsMore';\nimport { BreadcrumbsSeparator } from './BreadcrumbsSeparator';\nimport './Breadcrumbs.css';\nconst RESIZE_THROTTLE = 200;\nconst MORE_ITEM_WIDTH = 34;\nconst DEFAULT_POPUP_PLACEMENT = ['bottom', 'top'];\nconst GAP_WIDTH = 4;\nconst b = block('breadcrumbs');\nexport var LastDisplayedItemsCount;\n(function (LastDisplayedItemsCount) {\n LastDisplayedItemsCount[LastDisplayedItemsCount[\"One\"] = 1] = \"One\";\n LastDisplayedItemsCount[LastDisplayedItemsCount[\"Two\"] = 2] = \"Two\";\n})(LastDisplayedItemsCount || (LastDisplayedItemsCount = {}));\nexport var FirstDisplayedItemsCount;\n(function (FirstDisplayedItemsCount) {\n FirstDisplayedItemsCount[FirstDisplayedItemsCount[\"Zero\"] = 0] = \"Zero\";\n FirstDisplayedItemsCount[FirstDisplayedItemsCount[\"One\"] = 1] = \"One\";\n})(FirstDisplayedItemsCount || (FirstDisplayedItemsCount = {}));\nexport class Breadcrumbs extends React.Component {\n static prepareInitialState(props) {\n const { firstDisplayedItemsCount } = props;\n return {\n calculated: false,\n rootItem: firstDisplayedItemsCount ? props.items[0] : undefined,\n visibleItems: props.items.slice(firstDisplayedItemsCount),\n hiddenItems: [],\n allItems: props.items,\n };\n }\n static getDerivedStateFromProps(props, state) {\n if (state.allItems !== props.items) {\n return Breadcrumbs.prepareInitialState(props);\n }\n return null;\n }\n constructor(props) {\n super(props);\n this.handleResize = () => {\n const state = Breadcrumbs.prepareInitialState(this.props);\n this.setState(state, this.recalculate);\n };\n this.handleResize = _throttle(this.handleResize, RESIZE_THROTTLE);\n if (typeof window !== 'undefined') {\n this.resizeObserver = new ResizeObserver(this.handleResize);\n }\n this.container = React.createRef();\n this.state = Breadcrumbs.prepareInitialState(props);\n }\n componentDidMount() {\n var _a;\n this.recalculate();\n (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(this.container.current);\n }\n componentDidUpdate(prevProps) {\n if (prevProps.items !== this.state.allItems) {\n this.recalculate();\n }\n }\n componentWillUnmount() {\n var _a;\n (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n }\n render() {\n const { className, qa } = this.props;\n const { calculated } = this.state;\n return (React.createElement(\"div\", { className: b({ calculated: calculated ? 'yes' : 'no' }, className), \"data-qa\": qa },\n React.createElement(\"div\", { className: b('inner'), ref: this.container },\n this.renderRootItem(),\n this.renderMoreItem(),\n this.renderVisibleItems())));\n }\n renderItem(item, isCurrent, isPrevCurrent, renderItemContent) {\n return (React.createElement(Item, { item: item, isCurrent: isCurrent, isPrevCurrent: isPrevCurrent, renderItemContent: renderItemContent || this.props.renderItemContent, renderItem: this.props.renderItem }));\n }\n renderItemDivider() {\n const { renderItemDivider } = this.props;\n return React.createElement(BreadcrumbsSeparator, { renderItemDivider: renderItemDivider });\n }\n renderRootItem() {\n const { renderRootContent } = this.props;\n const { rootItem, visibleItems } = this.state;\n const isCurrent = visibleItems.length === 0;\n if (!rootItem) {\n return null;\n }\n return this.renderItem(rootItem, isCurrent, false, renderRootContent);\n }\n renderVisibleItems() {\n const { visibleItems } = this.state;\n return visibleItems.map((item, index, items) => {\n const isCurrent = index === items.length - 1;\n const isPrevCurrent = index === items.length - 2;\n return (React.createElement(React.Fragment, { key: index },\n this.renderItemDivider(),\n this.renderItem(item, isCurrent, isPrevCurrent)));\n });\n }\n renderMoreItem() {\n const { hiddenItems } = this.state;\n if (hiddenItems.length === 0) {\n return null;\n }\n const { popupStyle, popupPlacement, renderItemDivider } = this.props;\n return (React.createElement(React.Fragment, null,\n React.createElement(BreadcrumbsSeparator, { renderItemDivider: renderItemDivider }),\n React.createElement(BreadcrumbsMore, { items: hiddenItems, popupPlacement: popupPlacement, popupStyle: popupStyle })));\n }\n recalculate() {\n var _a;\n const { items: allItems, lastDisplayedItemsCount, firstDisplayedItemsCount } = this.props;\n let availableWidth = ((_a = this.container.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) || 0;\n if (this.container.current && availableWidth > 0) {\n availableWidth += GAP_WIDTH;\n const dividers = Array.from(this.container.current.querySelectorAll(`.${b('divider')}`));\n const items = [\n ...Array.from(this.container.current.querySelectorAll(`.${b('switcher')}`)),\n ...Array.from(this.container.current.querySelectorAll(`.${b('item')}`)),\n ];\n const itemsWidths = items.map((elem, i) => elem.scrollWidth + (i === items.length - 1 ? GAP_WIDTH : GAP_WIDTH * 2));\n const dividersWidths = dividers.map((elem) => elem.offsetWidth);\n const buttonsWidth = itemsWidths.reduce((total, width, index, widths) => {\n const isLastItem = widths.length - 1 === index;\n const isItemBeforeLast = lastDisplayedItemsCount === LastDisplayedItemsCount.Two &&\n widths.length - 2 === index;\n if (isLastItem || isItemBeforeLast) {\n return total + Math.min(width, 200);\n }\n return total + width;\n }, 0);\n const dividersWidth = dividersWidths.reduce((total, width) => total + width, 0);\n let totalWidth = buttonsWidth + dividersWidth;\n let visibleItemsStartIndex = 1;\n while (totalWidth > availableWidth &&\n visibleItemsStartIndex < items.length - lastDisplayedItemsCount) {\n if (visibleItemsStartIndex === 1) {\n totalWidth += MORE_ITEM_WIDTH + dividersWidths[visibleItemsStartIndex];\n }\n totalWidth -=\n itemsWidths[visibleItemsStartIndex] + dividersWidths[visibleItemsStartIndex];\n visibleItemsStartIndex++;\n }\n this.setState({\n calculated: true,\n visibleItems: allItems.slice(visibleItemsStartIndex - (1 - firstDisplayedItemsCount)),\n hiddenItems: allItems.slice(firstDisplayedItemsCount, visibleItemsStartIndex - (1 - firstDisplayedItemsCount)),\n });\n }\n }\n}\nBreadcrumbs.defaultProps = {\n popupPlacement: DEFAULT_POPUP_PLACEMENT,\n};\n","'use client';\nimport React from 'react';\nimport { useForkRef } from '../../hooks';\nimport { useTooltipVisible } from '../../hooks/private';\nimport { Popup } from '../Popup';\nimport { Text } from '../Text';\nimport { block } from '../utils/cn';\nimport './Tooltip.css';\nconst b = block('tooltip');\nconst DEFAULT_PLACEMENT = ['bottom', 'top'];\nexport const Tooltip = (props) => {\n const { children, content, disabled, placement = DEFAULT_PLACEMENT, qa, id, className, style, disablePortal, contentClassName, openDelay = 1000, closeDelay, } = props;\n const [anchorElement, setAnchorElement] = React.useState(null);\n const tooltipVisible = useTooltipVisible(anchorElement, {\n openDelay,\n closeDelay,\n preventTriggerOnFocus: true,\n });\n const renderPopup = () => {\n return (React.createElement(Popup, { id: id, role: \"tooltip\", className: b(null, className), style: style, open: tooltipVisible && !disabled, placement: placement, anchorRef: { current: anchorElement }, disablePortal: disablePortal, disableEscapeKeyDown: true, disableOutsideClick: true, disableLayer: true, qa: qa },\n React.createElement(\"div\", { className: b('content', contentClassName) },\n React.createElement(Text, { variant: \"body-short\", color: \"complementary\" }, content))));\n };\n const child = React.Children.only(children);\n const childRef = child.ref;\n const ref = useForkRef(setAnchorElement, childRef);\n return (React.createElement(React.Fragment, null,\n React.cloneElement(child, { ref }),\n anchorElement ? renderPopup() : null));\n};\n","import React from 'react';\nimport { KeyCode } from '../../../constants';\nimport { useBoolean } from '../useBoolean';\nexport const useTooltipVisible = (anchor, { openDelay = 250, closeDelay, preventTriggerOnFocus = false, }) => {\n const [tooltipVisible, showTooltip, hideTooltip] = useBoolean(false);\n const timeoutRef = React.useRef();\n const isFocusWithinRef = React.useRef(false);\n React.useEffect(() => {\n if (!anchor) {\n return undefined;\n }\n function handleMouseEnter() {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(showTooltip, openDelay);\n }\n function handleMouseLeave() {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(hideTooltip, closeDelay);\n }\n function handleFocusWithin(e) {\n if (!isFocusWithinRef.current && document.activeElement === e.target) {\n isFocusWithinRef.current = true;\n clearTimeout(timeoutRef.current);\n showTooltip();\n }\n }\n function handleBlurWithin(e) {\n if (isFocusWithinRef.current &&\n !e.currentTarget.contains(e.relatedTarget)) {\n isFocusWithinRef.current = false;\n clearTimeout(timeoutRef.current);\n hideTooltip();\n }\n }\n function handleKeyDown(e) {\n if (e.key === KeyCode.ESCAPE) {\n clearTimeout(timeoutRef.current);\n hideTooltip();\n }\n }\n anchor.addEventListener('mouseenter', handleMouseEnter);\n anchor.addEventListener('mouseleave', handleMouseLeave);\n anchor.addEventListener('keydown', handleKeyDown);\n if (!preventTriggerOnFocus) {\n anchor.addEventListener('focus', handleFocusWithin);\n anchor.addEventListener('blur', handleBlurWithin);\n }\n return () => {\n anchor.removeEventListener('mouseenter', handleMouseEnter);\n anchor.removeEventListener('mouseleave', handleMouseLeave);\n anchor.removeEventListener('focus', handleFocusWithin);\n anchor.removeEventListener('blur', handleBlurWithin);\n anchor.removeEventListener('keydown', handleKeyDown);\n };\n }, [anchor, showTooltip, hideTooltip, openDelay, closeDelay, preventTriggerOnFocus]);\n return tooltipVisible;\n};\n","import React from 'react';\nexport function useBoolean(initialState) {\n const [value, setValue] = React.useState(initialState);\n return [\n value,\n React.useCallback(() => setValue(true), []),\n React.useCallback(() => setValue(false), []),\n React.useCallback(() => setValue((val) => !val), []),\n ];\n}\n"],"names":["b","block","headingCN","CollapsibleSectionStateLess","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","toggle","onToggle","props","collapsed","_createClass","key","value","_this$props","this","name","children","size","overview","className","marginDirection","togglerRightPadding","_jsx","ErrorBoundary","_jsxs","margin","clickable","onClick","Icon","awesome","Component","CollapsibleSection","_React$useState","React","_React$useState2","_slicedToArray","setCollapsed","onChange","_objectSpread","defaultProps","cn","PageCounter","_ref","pageIndex","pageCount","undefined","getNameTitle","column","title","shortTitle","t","capitalize_","nameContent","titleContent","ColumnHeader","align","order","onSort","multisortIndex","loading","_useColumnInfo","options","allowUnordered","withUndefined","allowedOrderTypes","columnData","find","_ref2","rumLogError","message","additional","subColumn","useColumnInfo","changeHandler","e","nextOrder","calculateNextOrderValue","nextSortOrderValue","currentOrder","multisort","ctrlKey","metaKey","sortable","Boolean","SortIcon","hidden","Text","variant","color","SubColumnSelector","Loader","visible","_ref3","DropdownMenu","items","map","x","text","action","renderSwitcher","_ref4","Button","view","data","barsDescendingSvg","makeItemsCopy","map_","item","DragHandle","sortableHandle","face","SortableItem","sortableElement","isSortable","isSelectable","isDisabled","itemRenderer","onCheckBoxChange","withClickableHandler","active","disabled","selected","checked","selectable","keyColumn","SortableList","sortableContainer","useStaticSize","_ref2$withClickableHa","type","mods","ReactList","index","ColumnSelector","isHeadless","showSelectedOnly","toggleItem","withActualItems","_toConsumableArray","findIndex","changedItem","selectAllItems","visibleMap","getVisibleItemsMap","each_","deselectAllItems","_ref5","invertItems","_ref6","visibleItems","_handleCheckBoxChange","event","currentTarget","getAttribute","_handleSortEnd","_ref7","oldIndex","newIndex","_ref8","getVisibleItems","fromIndex","toIndex","_items$splice","splice","removed","_handleDefaultSort","_ref9","sort","a","aCaption","caption","bCaption","localeCompare","_toggleShownItems","setState","prevState","_changeFilter","filter","state","Object","assign","get","every","some","func","_this2","TextInput","placeholder","onUpdate","hasClear","isFilterable","btnProps","renderSearchBox","filter_","buttonALLisDisabled","buttonNONEisDisabled","re","RegExp","escapeRegExp_","test","showDisabledItems","filterItemsByName","toSplit","filterItems","_partition_","partition_","_partition_2","keyItems","reduce_","acc","_this$props2","_this$getVisibleItems2","headless","empty","lockAxis","helperClass","helper","onSortEnd","useDragHandle","_this$props3","classNames","renderControls","renderList","itemsProps","PropTypes","isRequired","_ref10","_ref10$caption","renderText","asHTML","xmlns","viewBox","fill","fillRule","stroke","opacity","strokeWidth","d","cx","cy","rx","ry","strokeLinecap","strokeDasharray","ColumnSelectorModal","_React$Component","srcItems","itemsOrder","_getItemsOrder","_handleCONFIRMButtonClick","onConfirm","_handleCANCELButtonClick","_getOrderedItems","onCancel","onSourceChange","newItems","newItemsMap","unchanged","changed","forEach_","newItem","push","preparedItems","calculateSrcItems","onDestinationChange","prevProps","indexOf","description","NoContentImage","isVisible","entity","rest","_objectWithoutProperties","_excluded","_this$state","selectorProps","_getSelectorProps","sortableSelectorProps","_getSortableSelectorProps","selectedItemsCount","left","renderColumnSelector","hammer","format","Modal","borderless","confirmText","content","renderContent","contentClassName","prepareRoleListValue","roles","otherMembers","current","toAdd","toRemove","unrecognized","isUnrecognized","isRequested","isApproved","isDepriving","currentArr","prepareItemOfCurrent","otherArr","frozen","itemClassName","role","extraProps","roleListValueToSubjectList","manyListDataItemToSubjectList","manyListDataItem","extractChangedSubjects","added","user","group","DialogError","Block","makeErrorFields","errors","compact_","error","extras","FORM_ERROR","makeFormSubmitError","validationErrors","_defineProperty","importYTDFDialog","YTDFDialog","withLazyLoading","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","next","t0","sent","YTDialog","abrupt","stop","mounted","setMounted","_callee2","_context2","RoleListControl","EditableList","_callee3","_context3","TabFieldVertical","_callee4","_context4","ElementsTableFooter","css","itemHeight","templates","itemMods","selectedIndex","computeKey","cssHover","columnSet","columnItems","currentKey","ElementsTableRow","bFooter","ELEMENTS_TABLE","footer","renderRow","columns","_prepareColumnsData","prepareColumnsData","set","_WithStickyFooter","WithStickyFooter","bWrapper","sticky","prepareTableClassName","renderStickyFooter","displayName","getDisplayName","mapDispatchToProps","toggleColumnSortOrder","compose","connect","sortState","tables","_WithStickyHead","WithStickyHead","top","style","ElementsTableHeader","renderStickyHead","theme","padded","striped","HEADER_HEIGHT","Favourites","isActive","toggleActive","onItemClick","dropItems","path","switcher","renderButton","pin","popupProps","Hotkey","settings","keys","handler","scope","buttonProps","themeProps","toggleDisabled","clear","renderDropDownMenu","renderHotkey","itemType","Pagination","control","tooltip","hotkeySettings","hotkey","hotkeyScope","hotkeyHandler","first","previous","last","showInput","inputValue","qa","renderComponent","renderInput","SimplePagination","_props$value","NaN","_props$min","min","_props$max","max","_props$step","step","firstDiff","isNaN","lastDiff","handleToFirst","handleToPrev","newValue","handleToNext","handleToLast","TextInputWithDebounce","_props$debounce","debounce","_props$onUpdate","onBlur","onEnterKeyDown","onKeyDown","input","setInput","handleChangeExt","throttle_","handleChange","handleKeyDown","handleBlur","WarningIcon","hoverContent","Tooltip","datepickerDefaultProps","useAllUserNamesFiltered","dispatch","useDispatch","loadUsersIfNotLoaded","namesSorted","useSelector","getAllUserNamesSorted","getFiltered","from","sortedIndexBy_","substr","to","sortedLastIndexBy_","slice","allNames","useGroupsLoaded","loadGroupsIfNotLoaded","GroupsLoader","AccountsNoContent","hint","NoContent","warning","AccountStatisticTab","cluster","getCluster","account","getActiveAccount","accountSubtreeAllNames","getActiveAccountSubtreeNames","getTheme","AccountStatisticsComponent","UIFactory","getStatisticsComponentForAccount","activeAccount","fetchAccounts","loadUsers","AccountsAcl","AccountsMonitorTab","AccountMonitor","component","ACCOUNT_USAGE_COLUMN_TITLE","approximate_row_count","master_memory","MEDIUM_PREFIX","readableAccountUsageColumnName","withMediumPrefix","readable","startsWith","Readable","getAccountUsageSnapshots","accounts","usage","snapshots","snapshot_timestamps","getAccountUsageCurrentSnapshot","filters","currentSnapshot","getAccountUsageTreePath","treePath","getAccountUsageSortState","getAccountUsageViewType","viewType","getAccountUsagePathFilter","pathFilter","getAccountUsageOwnerFilter","ownerFilter","getAccountUsageDateRangeFilter","dateRange","getAccountUsageDateRangeTypeFilter","dateRangeType","getAccountsUsageDiffFromSnapshot","diffFromSnapshot","getAccountsUsageDiffToSnapshot","diffToSnapshot","getAccountUsageListRequestParams","list","requestParams","getAccountUsageListLoading","getAccountUsageListLoaded","loaded","getAccountUsageListError","getAccountUsageListItems","_state$accounts$usage","response","getAccountUsageListMediums","_state$accounts$usage3","mediums","getAccountUsageTreeRequestParams","tree","getAccountUsageTreeLoading","getAccountUsageTreeLoaded","getAccountUsageTreeError","getAccountUsageTreeItems","_state$accounts$usage5","getAccountUsageTreeMediums","_state$accounts$usage7","getAccountUsageTreeItemsBasePath","base_path","getAccountUsageListDiffRequestParams","listDiff","getAccountUsageListDiffLoading","getAccountUsageListDiffLoaded","getAccountUsageListDiffError","getAccountUsageListDiffItems","_state$accounts$usage9","getAccountUsageListDiffMediums","_state$accounts$usage11","getAccountUsageTreeDiffRequestParams","treeDiff","getAccountUsageTreeDiffLoading","getAccountUsageTreeDiffLoaded","getAccountUsageTreeDiffError","getAccountUsageTreeDiffItems","_state$accounts$usage13","getAccountUsageTreeDiffMediums","_state$accounts$usage15","isAccountsUsageDiffView","createSelector","endsWith","getAccountUsageTreeItemsBasePathSplitted","treeDiffPath","fragments","ypath","YPath","join","getAccountUsageFieldFiltersRequestParameter","res","field","Math","round","Date","getTime","comparison","getAccountUsagePageCount","_state$accounts$usage4","row_count","_state$accounts$usage8","_state$accounts$usage12","listRowCount","treeRowCount","listDiffRowCount","rowCount","ceil","PAGE_SIZE","getAccountUsagePageIndex","Number","getAccountUsageSortStateByColumn","getAccountUsageAvailableColumns","_state$accounts$usage2","fields","_state$accounts$usage6","_state$accounts$usage10","_state$accounts$usage14","listFields","treeFields","listDiffFields","treeDiffFields","defaultTreeColumns","defaultListColumns","defaultListFoldersColumns","firstNotEmpty","a1","a2","getAccountUsageVisibleColumns","getSettingsAccountUsageColumnsTree","getSettingsAccountUsageColumnsList","getSettingsAccountUsageColumnsListFolders","treeColumns","listColumns","listFoldersColumns","getAccountUsageSelectableColumns","ACCOUNT_USAGE_UNAVAILABLE_FIELDS","has","Set","getAccountUsageVisibleDataColumns","selectableColumns","userColumns","getFilterFromToTimestamps","older","timestamp","now","newer","fetchAccountUsageListDiff","getState","timestamps","params","getFilterParameters","ACCOUNTS_USAGE_LIST_DIFF_REQUEST","axios","request","method","url","accountUsageApiUrl","withCredentials","then","isEqual_","ACCOUNTS_USAGE_LIST_DIFF_SUCCESS","_error$response","ACCOUNTS_USAGE_LIST_DIFF_FAILED","fetchAccountUsageTreeDiff","row_filter","ACCOUNTS_USAGE_TREE_DIFF_REQUEST","ACCOUNTS_USAGE_TREE_DIFF_SUCCESS","_error$response2","ACCOUNTS_USAGE_TREE_DIFF_FAILED","handle","getAccountsUsageBasePath","sortStates","path_regexp","owner","field_filters","exclude_map_nodes","sort_order","desc","page","fetchAccountUsageList","ACCOUNTS_USAGE_LIST_REQUEST","ACCOUNTS_USAGE_LIST_SUCCESS","ACCOUNTS_USAGE_LIST_FAILED","fetchAccountUsageTree","ACCOUNTS_USAGE_TREE_REQUEST","ACCOUNTS_USAGE_TREE_SUCCESS","_error$response3","ACCOUNTS_USAGE_TREE_FAILED","fetchAccountUsage","setAccountUsageDataFilter","ACCOUNTS_USAGE_FILTERS_PARTIAL","isEmpty_","_getAccountUsageDateR","openAccountAttributesModal","openModal","promise","timestamp_rounding_policy","AccountUsageColumnsDialogMemo","AccountUsageColumnsDialog","AccountUsageColumnsButton","setVisible","toggleVisibility","handleClose","onClose","visibleColumns","availableColumns","setSettingsAccountUsageColumnsList","setSettingsAccountUsageColumnsListFolders","setSettingsAccountUsageColumnsTree","available","selectedSet","other","isMedium","_item$data","Secondary","PathPart","fragment","fragmentToYSON","__html","unipika","decode","dangerouslySetInnerHTML","_unused","PathFragment","lastFragmentOnly","i","_Fragment","useFetchSnapshots","updateFn","ACCOUNTS_USAGE_SNAPSHOTS_REQUEST","ACCOUNTS_USAGE_SNAPSHOTS_SUCCESS","ACCOUNTS_USAGE_SNAPSHOTS_FAILED","fetchAccountsUsageSnapshots","useUpdater","timeout","SnapshotFilterMemo","SnapshotFilter","PathFilterMemo","PathFilter","OwnerFilterMemo","OwnerFilter","DateRangeFilterMemo","DateRangeFilter","DateRangeTypeFilterMemo","DateRangeTypeFilter","PaginationFilterMemo","PaginationFilter","ViewTypeMemo","ViewType","UsageBreadcrumbsMemo","UsageBreadcrumbs","SnapshotDiffFilterMemo","SnapshotDiffFilter","AccountUsageToolbar","isDiffView","Toolbar","itemsToWrap","node","wrapperClassName","shrinkable","growable","UNDEFINED_SNAPSHOT","string2snapshot","v","snapshot2string","String","useSnapshotItems","reverse_","moment","FromSnapshot","Select","vals","width","ToSnapshot","handleSnapshotChange","SecondaryBold","_useAllUserNamesFilte","Suggest","_items","renderItem","SubjectCard","noLink","popupClassName","_useSelector","Datepicker","range","allowNullableValues","onError","setAccountUsageDataPageIndex","VIEW_TYPE_ITEMS","icon","DiffTitle","setSettingsAccountUsageViewType","pathArr","Breadcrumbs","firstDisplayedItemsCount","lastDisplayedItemsCount","renderRootContent","Link","window","location","pathname","routed","routedPreserveLocation","renderItemContent","AccountActionsField","onAttributeButtonClick","handleOpenAttributeModal","useCallback","navigationUrl","useMemo","makeRoutedURL","Page","NAVIGATION","Flex","gap","alignItems","AttributesButton","withTooltip","tooltipProps","placement","whiteSpace","getRenderSign","getDiffClass","showDiff","sign","DetailTableCell","additionalValue","formatType","totalValue","formatFn","Bytes","justifyContent","diff","tabIndex","CircleInfoIcon","TABLE_SETTINGS","displayIndices","stickyHead","DataTable","MOVING","stickyFooter","stickyTop","STICKY_TOOLBAR_BOTTOM","stickyBottom","syncHeadOnResize","TABLE_SETTINGS_DOUBLE_TOOLBAR","STICKY_DOUBLE_TOOLBAR_BOTTOM","ROW_CLASS_NAME","AccountUsageDetailsHeader","sortOrder","opts","prevSortState","updateSortStateArray","PageCounterMemo","PathHeader","UsageLoaderMemo","UsageLoader","useColumnsByPreset","handleAttributeButtonClick","accountData","columnsByName","Map","iconName","header","render","_item$row","row","acl_status","getIconNameForType","PathView","Warning","disk_space","medium","versionedName","additionalKey","NO_VALUE","DateTime","forEach","UPDATE_TIMEOUT","AccountUsageDetailsList","onlyOnce","ErrorBlock","DataTableYT","rowClassName","useThemeYT","AccountUsageDetailsListDiff","AccountUsageDetailsTree","AccountUsageDetailsTreeDiff","AccountUsageDetailsListMemo","AccountUsageDetailsListDiffMemo","AccountUsageDetailsTreeMemo","AccountUsageDetailsTreeDiffMemo","AccountUsageDetailsDiff","AccountUsageDetailsDiffMemo","AccountUsageDetails","lastViewType","getSettingsAccountUsageViewType","diffContent","AccountsUsageDetailsListLoaderMemo","AccountsUsageDetailsListLoader","AccountsUsageDetailsTreeLoaderMemo","AccountsUsageDetailsTreeLoader","AccountsUsageDetailsTreeDiffLoader","AccountsUsageDetailsListDiffLoader","count","AccountDetailedUsageTab","WithStickyToolbar","doubleHeight","toolbar","Accounts","_UIFactory$getMonitor","_makeTabProps","match","lastVisitedTab","allowUsageTab","showSettings","AccountsTab","tab","show","ACCOUNTS_ALLOWED_ROOT_TABS","usageTab","USAGE","statsTab","STATISTICS","getMonitoringForAccounts","monitoringComponent","urlTemplate","monitoringTitle","monTab","MONITOR","external","formatByParams","ytCluster","ytAccount","makeTabProps","lastTab","tabToRedirect","GENERAL","AccountsRumMeasure","AccountsUpdater","Tabs","ACCOUNTS_DEFAULT_TAB","UI_TAB_SIZE","Switch","Route","AccountsGeneralTab","ACL","AccountsAclTab","AccountsUsageTab","Redirect","getLastVisitedTabs","ACCOUNTS","isFinalStatus","getAccountsIsFinalLoadingStatus","useAppRumMeasureStart","RumMeasureTypes","allowStart","startDeps","useRumMeasureStop","allowStop","stopDeps","isRootAccount","AccountCreateDialog","onSubmit","form","createAccountFromInfo","closeCreateModal","loadEditedAccount","newAccountInfo","values","parentAccount","abcService","currentUserName","isAdmin","_newAccountInfo$respo","responsibles","headerProps","onAdd","pristineSubmittable","initialValues","ROOT_ACCOUNT_NAME","isAbcAllowed","required","visibilityCondition","when","allowRootAccount","isIdmAclAvailable","allowedTypes","connector","editor","getCurrentUserName","createModalVisible","isDeveloper","AccountCreate","infoValue","activeCreateValue","showConfirmMessage","showErrorMessage","openCreateModal","AccountsTopRowContent","clusterUiConfig","getClusterUiConfig","getAccountsMapByName","RowWithName","urlParams","AccountsFavourites","AccountsBreadcrumbs","renderTopRowExtraControlsForAccount","accountAttributes","$attributes","isActiveInFavourites","isActiveAcountInFavourites","favourites","getFavouriteAccounts","handleFavouriteItemClick","setActiveAccount","handleFavouriteToggle","accountsToggleFavourite","bcItems","getActiveAccountBreadcrumbs","handleItemClick","renderBcItem","isCurrent","BreadcrumbLink","some_","_v","calcRootPathname","useRumMeasureStart","subPage","pathEditorRequests","CancelHelper","preparePath","currentPath","create","toSubpath","stringify","loadSuggestions","customFilter","parentPath","ytApiV3Id","YTApiId","pathEditorLoadSuggestions","parameters","attributes","cancellation","saveCancelToken","getValue","nodes","initialPath","suggestions","child","prepared","childPath","dynamic","targetPathBroken","sortBy_","prepareSuggestions","filterByCurrentPath","toLowerCase","hasPartOfPath","isShowCurrentChild","getNextSelectedIndex","suggestion","getPrevSelectedIndex","getCompletedPath","icons","document","string_node","int64_node","uint64_node","double_node","boolean_node","map_node","scheduler_pool_tree_map","scheduler_pool","tablet_cell","journal","table","table_dynamic","replicated_table","chaos_replicated_table","replication_log_table","file","topmost_transaction_map","transaction_map","transaction","nested_transaction","link","getBoolean","rootstock","portal_entrance","cell_node","cell_node_map","sys_node","access_control_object_namespace_map","access_control_object_namespace","access_control_object","clipRule","BreadcrumbsButton","more","BreadcrumbsItem","isPrevCurrent","itemTitle","href","addComponentKeysets","en","BreadcrumbsMore","popupStyle","popupPlacement","staircase","i18n","BreadcrumbsSeparator","renderItemDivider","LastDisplayedItemsCount","FirstDisplayedItemsCount","prepareInitialState","calculated","rootItem","hiddenItems","allItems","getDerivedStateFromProps","constructor","super","handleResize","recalculate","resizeObserver","ResizeObserver","container","componentDidMount","_a","observe","componentDidUpdate","componentWillUnmount","disconnect","ref","renderRootItem","renderMoreItem","renderVisibleItems","availableWidth","offsetWidth","dividers","querySelectorAll","itemsWidths","elem","scrollWidth","GAP_WIDTH","dividersWidths","totalWidth","reduce","total","widths","isLastItem","isItemBeforeLast","Two","visibleItemsStartIndex","DEFAULT_PLACEMENT","id","disablePortal","openDelay","closeDelay","anchorElement","setAnchorElement","tooltipVisible","useTooltipVisible","preventTriggerOnFocus","only","childRef","useForkRef","Popup","open","anchorRef","disableEscapeKeyDown","disableOutsideClick","disableLayer","anchor","showTooltip","hideTooltip","initialState","setValue","val","useBoolean","timeoutRef","isFocusWithinRef","addEventListener","handleMouseEnter","handleMouseLeave","handleFocusWithin","handleBlurWithin","removeEventListener","clearTimeout","setTimeout","activeElement","target","contains","relatedTarget","ESCAPE"],"sourceRoot":""}
|