@ytsaurus/ui 1.103.0 → 1.103.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 +40 -40
- package/dist/public/build/css/default-subject-link.b01c2230.chunk.css +2 -0
- package/dist/public/build/css/default-subject-link.b01c2230.chunk.css.map +1 -0
- package/dist/public/build/css/{main.d1987746.css → main.23e8d0fd.css} +2 -2
- package/dist/public/build/css/main.23e8d0fd.css.map +1 -0
- package/dist/public/build/js/6157.6786c942.chunk.js +2 -0
- package/dist/public/build/js/6157.6786c942.chunk.js.map +1 -0
- package/dist/public/build/js/6983.a2b31b33.chunk.js +2 -0
- package/dist/public/build/js/6983.a2b31b33.chunk.js.map +1 -0
- package/dist/public/build/js/8165.9684f49e.chunk.js +2 -0
- package/dist/public/build/js/8165.9684f49e.chunk.js.map +1 -0
- package/dist/public/build/js/{accounts.aaa21eca.chunk.js → accounts.f328f823.chunk.js} +2 -2
- package/dist/public/build/js/accounts.f328f823.chunk.js.map +1 -0
- package/dist/public/build/js/acl.556f2525.chunk.js +2 -0
- package/dist/public/build/js/acl.556f2525.chunk.js.map +1 -0
- package/dist/public/build/js/{bundles.b851f32c.chunk.js → bundles.0ab2d6f4.chunk.js} +2 -2
- package/dist/public/build/js/{bundles.b851f32c.chunk.js.map → bundles.0ab2d6f4.chunk.js.map} +1 -1
- package/dist/public/build/js/cluster-page-wrapper.a5c05070.chunk.js +2 -0
- package/dist/public/build/js/{cluster-page-wrapper.45436df6.chunk.js.map → cluster-page-wrapper.a5c05070.chunk.js.map} +1 -1
- package/dist/public/build/js/dashboard.efdd63a2.chunk.js +3 -0
- package/dist/public/build/js/{dashboard.234b8062.chunk.js.map → dashboard.efdd63a2.chunk.js.map} +1 -1
- package/dist/public/build/js/main.a89bac74.js +3 -0
- package/dist/public/build/js/main.a89bac74.js.map +1 -0
- package/dist/public/build/js/{navigation-flow.a79a25f5.chunk.js → navigation-flow.1d83e216.chunk.js} +2 -2
- package/dist/public/build/js/{navigation-flow.a79a25f5.chunk.js.map → navigation-flow.1d83e216.chunk.js.map} +1 -1
- package/dist/public/build/js/{navigation.b91a7a0b.chunk.js → navigation.0aff5a3a.chunk.js} +2 -2
- package/dist/public/build/js/{navigation.b91a7a0b.chunk.js.map → navigation.0aff5a3a.chunk.js.map} +1 -1
- package/dist/public/build/js/{query-tracker.5a0d626f.chunk.js → query-tracker.b7334a6f.chunk.js} +2 -2
- package/dist/public/build/js/{query-tracker.5a0d626f.chunk.js.map → query-tracker.b7334a6f.chunk.js.map} +1 -1
- package/dist/public/build/js/{runtime.8a460b23.js → runtime.d583e98e.js} +2 -2
- package/dist/public/build/js/{runtime.8a460b23.js.map → runtime.d583e98e.js.map} +1 -1
- package/dist/public/build/js/users.aec1e380.chunk.js +2 -0
- package/dist/public/build/js/users.aec1e380.chunk.js.map +1 -0
- package/dist/public/build/js/yt-df-dialog.1d05b0a5.chunk.js +3 -0
- package/dist/public/build/js/yt-df-dialog.1d05b0a5.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +34 -34
- package/package.json +4 -3
- package/dist/public/build/css/default-subject-link.4dc8a973.chunk.css +0 -2
- package/dist/public/build/css/default-subject-link.4dc8a973.chunk.css.map +0 -1
- package/dist/public/build/css/main.d1987746.css.map +0 -1
- package/dist/public/build/js/2009.8121a60e.chunk.js +0 -2
- package/dist/public/build/js/2009.8121a60e.chunk.js.map +0 -1
- package/dist/public/build/js/6157.92170346.chunk.js +0 -2
- package/dist/public/build/js/6157.92170346.chunk.js.map +0 -1
- package/dist/public/build/js/6960.8b7e01c6.chunk.js +0 -2
- package/dist/public/build/js/6960.8b7e01c6.chunk.js.map +0 -1
- package/dist/public/build/js/accounts.aaa21eca.chunk.js.map +0 -1
- package/dist/public/build/js/acl.1ad3d494.chunk.js +0 -2
- package/dist/public/build/js/acl.1ad3d494.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-page-wrapper.45436df6.chunk.js +0 -2
- package/dist/public/build/js/dashboard.234b8062.chunk.js +0 -3
- package/dist/public/build/js/main.aa6a17d8.js +0 -3
- package/dist/public/build/js/main.aa6a17d8.js.map +0 -1
- package/dist/public/build/js/users.a0dc610f.chunk.js +0 -2
- package/dist/public/build/js/users.a0dc610f.chunk.js.map +0 -1
- package/dist/public/build/js/yt-df-dialog.acab4eb0.chunk.js +0 -3
- package/dist/public/build/js/yt-df-dialog.acab4eb0.chunk.js.map +0 -1
- /package/dist/public/build/js/{dashboard.234b8062.chunk.js.LICENSE.txt → dashboard.efdd63a2.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.aa6a17d8.js.LICENSE.txt → main.a89bac74.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{yt-df-dialog.acab4eb0.chunk.js.LICENSE.txt → yt-df-dialog.1d05b0a5.chunk.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"js/accounts.aaa21eca.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/bars-descending-align-left.svg","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/common/Datepicker/index.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/circle-info.svg","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/arrow-up-right-from-square.svg","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withStickyHead.js","webpack://@ytsaurus/ui/./src/ui/rum/rum-app-measures.ts","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/ElementsTableFooter.js","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withStickyFooter.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/lab/Breadcrumbs/utils.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/lab/Breadcrumbs/BreadcrumbItem.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/lab/Breadcrumbs/BreadcrumbsSeparator.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/lab/Breadcrumbs/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/lab/Breadcrumbs/Breadcrumbs.js","webpack://@ytsaurus/ui/./src/ui/components/Breadcrumbs/Breadcrumbs.tsx","webpack://@ytsaurus/ui/./src/ui/components/TextInputWithDebounce/TextInputWithDebounce.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/Pagination/Pagination.js","webpack://@ytsaurus/ui/./src/ui/hooks/global.tsx","webpack://@ytsaurus/ui/./src/ui/components/WarningIcon/WarningIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnSelector/ColumnSelector.js","webpack://@ytsaurus/ui/./src/ui/components/Favourites/Favourites.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Tooltip/Tooltip.js","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/./node_modules/@gravity-ui/uikit/build/esm/hooks/useResizeObserver/useResizeObserver.js","webpack://@ytsaurus/ui/./src/ui/components/CollapsibleSection/CollapsibleSection.tsx","webpack://@ytsaurus/ui/./src/ui/components/Pagination/SimplePagination.tsx"],"sourcesContent":["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 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 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","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;","const SvgArrowUpRightFromSquare = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M10 1.5A.75.75 0 0 0 10 3h1.94L6.97 7.97a.75.75 0 0 0 1.06 1.06L13 4.06V6a.75.75 0 0 0 1.5 0V2.25a.75.75 0 0 0-.75-.75zM7.5 3.25a.75.75 0 0 0-.75-.75H4.5a3 3 0 0 0-3 3v6a3 3 0 0 0 3 3h6a3 3 0 0 0 3-3V9.25a.75.75 0 0 0-1.5 0v2.25a1.5 1.5 0 0 1-1.5 1.5h-6A1.5 1.5 0 0 1 3 11.5v-6A1.5 1.5 0 0 1 4.5 4h2.25a.75.75 0 0 0 .75-.75\" clipRule=\"evenodd\" /></svg>;\nexport default SvgArrowUpRightFromSquare;","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 {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 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 { block } from '../../utils/cn';\nexport function shouldClientNavigate(link, modifiers) {\n // Use getAttribute here instead of link.target. Firefox will default link.target to \"_parent\" when inside an iframe.\n const target = link.getAttribute('target');\n return (link.href &&\n (!target || target === '_self') &&\n link.origin === location.origin &&\n !link.hasAttribute('download') &&\n !modifiers.metaKey && // open in new tab (mac)\n !modifiers.ctrlKey && // open in new tab (windows)\n !modifiers.altKey && // download\n !modifiers.shiftKey);\n}\nexport const b = block('breadcrumbs2');\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { filterDOMProps } from '../../utils/filterDOMProps';\nimport { b, shouldClientNavigate } from './utils';\nexport function BreadcrumbItem(props) {\n var _a;\n const Element = props.href ? 'a' : 'span';\n const domProps = filterDOMProps(props, { labelable: true });\n let title = props.title;\n if (!title && typeof props.children === 'string') {\n title = props.children;\n }\n const handleAction = (event) => {\n if (props.disabled) {\n event.preventDefault();\n return;\n }\n if (typeof props.onAction === 'function') {\n props.onAction();\n }\n const target = event.currentTarget;\n if (typeof props.navigate === 'function' && target instanceof HTMLAnchorElement) {\n if (props.href && !event.isDefaultPrevented() && shouldClientNavigate(target, event)) {\n event.preventDefault();\n props.navigate(props.href, props.routerOptions);\n }\n }\n };\n const isDisabled = props.disabled;\n let linkProps = {\n title,\n onClick: handleAction,\n 'aria-disabled': isDisabled ? true : undefined,\n };\n if (Element === 'a') {\n linkProps.href = props.href;\n linkProps.hrefLang = props.hrefLang;\n linkProps.target = props.target;\n linkProps.rel = props.target === '_blank' && !props.rel ? 'noopener noreferrer' : props.rel;\n linkProps.download = props.download;\n linkProps.ping = props.ping;\n linkProps.referrerPolicy = props.referrerPolicy;\n }\n else {\n linkProps.role = 'link';\n linkProps.tabIndex = isDisabled ? undefined : 0;\n linkProps.onKeyDown = (event) => {\n if (event.key === 'Enter') {\n handleAction(event);\n }\n };\n }\n if (props.current) {\n linkProps['aria-current'] = (_a = props['aria-current']) !== null && _a !== void 0 ? _a : 'page';\n }\n if (props.itemType === 'menu') {\n linkProps = {};\n }\n return (_jsx(Element, Object.assign({}, domProps, linkProps, { className: props.itemType === 'menu'\n ? b('menu')\n : b('link', {\n 'is-current': props.current,\n 'is-disabled': isDisabled && !props.current,\n }), children: props.children })));\n}\nBreadcrumbItem.displayName = 'Breadcrumbs.Item';\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { b } from './utils';\nexport function BreadcrumbsSeparator({ separator }) {\n return (_jsx(\"div\", { \"aria-hidden\": true, className: b('divider'), children: separator !== null && separator !== void 0 ? separator : '/' }));\n}\nBreadcrumbsSeparator.displayName = 'Breadcrumbs.Separator';\n","import { addComponentKeysets } from '../../../../i18n';\nimport en from './en.json';\nimport ru from './ru.json';\nconst COMPONENT = 'lab/Breadcrumbs';\nexport default addComponentKeysets({ en, ru }, COMPONENT);\n","'use client';\nimport { createElement as _createElement } from \"react\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { useForkRef, useResizeObserver } from '../../../hooks';\nimport { Button } from '../../Button';\nimport { DropdownMenu } from '../../DropdownMenu';\nimport { filterDOMProps } from '../../utils/filterDOMProps';\nimport { BreadcrumbItem } from './BreadcrumbItem';\nimport { BreadcrumbsSeparator } from './BreadcrumbsSeparator';\nimport i18n from './i18n';\nimport { b, shouldClientNavigate } from './utils';\nimport './Breadcrumbs.css';\nfunction Item(_props) {\n return null;\n}\nexport const Breadcrumbs = React.forwardRef(function Breadcrumbs(props, ref) {\n const listRef = React.useRef(null);\n const containerRef = useForkRef(ref, listRef);\n const items = [];\n React.Children.forEach(props.children, (child, index) => {\n if (React.isValidElement(child)) {\n if (child.key === undefined || child.key === null) {\n child = React.cloneElement(child, { key: index });\n }\n items.push(child);\n }\n });\n const [visibleItemsCount, setVisibleItemsCount] = React.useState(items.length);\n const [calculated, setCalculated] = React.useState(false);\n const recalculate = (visibleItems) => {\n const list = listRef.current;\n if (!list) {\n return;\n }\n const listItems = Array.from(list.children);\n if (listItems.length === 0) {\n return;\n }\n const containerWidth = list.offsetWidth;\n let newVisibleItemsCount = 0;\n let calculatedWidth = 0;\n let maxItems = props.maxItems || Infinity;\n let rootWidth = 0;\n if (props.showRoot) {\n const item = listItems.shift();\n if (item) {\n rootWidth = item.scrollWidth;\n calculatedWidth += rootWidth;\n }\n newVisibleItemsCount++;\n }\n const hasMenu = items.length > visibleItems;\n if (hasMenu) {\n const item = listItems.shift();\n if (item) {\n calculatedWidth += item.offsetWidth;\n }\n maxItems--;\n }\n if (props.showRoot && calculatedWidth >= containerWidth) {\n calculatedWidth -= rootWidth;\n newVisibleItemsCount--;\n }\n const lastItem = listItems.pop();\n if (lastItem) {\n calculatedWidth += Math.min(lastItem.offsetWidth, 200);\n if (calculatedWidth < containerWidth) {\n newVisibleItemsCount++;\n }\n }\n for (let i = listItems.length - 1; i >= 0; i--) {\n const item = listItems[i];\n calculatedWidth += item.offsetWidth;\n if (calculatedWidth >= containerWidth) {\n break;\n }\n newVisibleItemsCount++;\n }\n newVisibleItemsCount = Math.max(Math.min(maxItems, newVisibleItemsCount), 1);\n if (newVisibleItemsCount === visibleItemsCount) {\n setCalculated(true);\n }\n else {\n setVisibleItemsCount(newVisibleItemsCount);\n }\n };\n const handleResize = React.useCallback(() => {\n setCalculated(false);\n setVisibleItemsCount(items.length);\n }, [items.length]);\n useResizeObserver({\n ref: listRef,\n onResize: handleResize,\n });\n const lastChildren = React.useRef(null);\n React.useLayoutEffect(() => {\n if (calculated && props.children !== lastChildren.current) {\n lastChildren.current = props.children;\n setCalculated(false);\n setVisibleItemsCount(items.length);\n }\n }, [calculated, items.length, props.children]);\n React.useLayoutEffect(() => {\n if (!calculated) {\n recalculate(visibleItemsCount);\n }\n });\n const { navigate } = props;\n let contents = items;\n if (items.length > visibleItemsCount) {\n contents = [];\n const breadcrumbs = [...items];\n let endItems = visibleItemsCount;\n if (props.showRoot && visibleItemsCount > 1) {\n const rootItem = breadcrumbs.shift();\n if (rootItem) {\n contents.push(rootItem);\n }\n endItems--;\n }\n const hiddenItems = breadcrumbs.slice(0, -endItems);\n const menuItem = (_jsx(BreadcrumbItem, { itemType: \"menu\", children: _jsx(DropdownMenu, { items: hiddenItems.map((el, index) => {\n return Object.assign(Object.assign({}, el.props), { text: el.props.children, disabled: props.disabled, items: [], action: (event) => {\n var _a;\n if (typeof props.onAction === 'function') {\n props.onAction((_a = el.key) !== null && _a !== void 0 ? _a : index);\n }\n // TODO: move this logic to DropdownMenu\n const target = event.currentTarget;\n if (typeof navigate === 'function' &&\n target instanceof HTMLAnchorElement) {\n if (el.props.href && shouldClientNavigate(target, event)) {\n event.preventDefault();\n navigate(el.props.href, el.props.routerOptions);\n }\n }\n } });\n }), popupProps: {\n className: b('popup', {\n staircase: props.popupStyle === 'staircase',\n }),\n placement: props.popupPlacement,\n }, renderSwitcher: ({ onClick }) => (_jsx(Button, { title: i18n('label_more'), className: b('more-button'), onClick: onClick, size: \"s\", view: \"flat\", disabled: props.disabled, children: _jsx(Button.Icon, { children: \"...\" }) })) }) }));\n contents.push(menuItem);\n contents.push(...breadcrumbs.slice(-endItems));\n }\n const lastIndex = contents.length - 1;\n const breadcrumbItems = contents.map((child, index) => {\n var _a;\n const isCurrent = index === lastIndex;\n const key = (_a = child.key) !== null && _a !== void 0 ? _a : index;\n const handleAction = () => {\n if (typeof props.onAction === 'function') {\n props.onAction(key);\n }\n };\n return (_jsxs(\"li\", { className: b('item', { calculating: !calculated }), children: [_createElement(BreadcrumbItem, Object.assign({}, child.props, { key: key, current: isCurrent, disabled: props.disabled || child.props.disabled, onAction: handleAction, navigate: navigate }), child.props.children), isCurrent ? null : _jsx(BreadcrumbsSeparator, { separator: props.separator })] }, index));\n });\n return (_jsx(\"ol\", Object.assign({ ref: containerRef }, filterDOMProps(props, { labelable: true }), { \"data-qa\": props.qa, className: b(null, props.className), style: props.style, children: breadcrumbItems })));\n});\nBreadcrumbs.Item = Item;\nBreadcrumbs.displayName = 'Breadcrumbs';\nexport { Item as BreadcrumbsItem };\n","import React, {FC, PropsWithChildren} from 'react';\nimport {\n unstable_BreadcrumbsProps as BreadcrumbsProps,\n unstable_Breadcrumbs as UBreadcrumbs,\n} from '@gravity-ui/uikit/unstable';\nimport './Breadcrumbs.scss';\nimport cn from 'bem-cn-lite';\n\nconst b = cn('yt-u-breadcrumbs');\n\nexport const Breadcrumbs: FC<PropsWithChildren<BreadcrumbsProps>> = ({children, ...props}) => {\n return (\n <UBreadcrumbs {...props} className={b(null, props.className)}>\n {children}\n </UBreadcrumbs>\n );\n};\n","import React from 'react';\nimport debounce_ from 'lodash/debounce';\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 debounce_(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 React.useEffect(() => {\n return () => {\n handleChangeExt.cancel();\n };\n }, [handleChangeExt]);\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\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 {sortable && (\n <span className={block('icon')}>\n <SortIcon order={order} />\n </span>\n )}\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 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 {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 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, {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 ({item, isSortable, isSelectable, isDisabled, itemRenderer, onCheckBoxChange}) => {\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 let showAction = true;\n if (item.checked) {\n showAction = 'isDeletable' in item ? item.isDeletable : true;\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 && showAction && (\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 }) => {\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 />\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 && (item.isDeletable ?? true)) {\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","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","'use client';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as 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 { getElementRef } from '../utils/getElementRef';\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 (_jsx(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, children: _jsx(\"div\", { className: b('content', contentClassName), children: _jsx(Text, { variant: \"body-short\", color: \"complementary\", children: content }) }) }));\n };\n const child = React.Children.only(children);\n const childRef = getElementRef(child);\n const ref = useForkRef(setAnchorElement, childRef);\n return (_jsxs(React.Fragment, { children: [React.cloneElement(child, { ref }), anchorElement ? renderPopup() : 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 '../../../store/selectors/settings/settings-ts';\nimport format from '../../../common/hammer/format';\nimport {AccountUsageDataItem} from '../../../store/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 {getFilterParameters, normalizeTimestamp} 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';\nimport {getAccountsUsageBaseUrl} from '../../selectors/global';\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: normalizeTimestamp(from)},\n newer: {timestamp: normalizeTimestamp(to)},\n };\n}\n\nexport function fetchAccountUsageListDiff(): UsageListThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const timestamps = getFilterFromToTimestamps(state);\n const accountsUsageBaseUrl = getAccountsUsageBaseUrl(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: accountsUsageBaseUrl + '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 const accountsUsageBaseUrl = getAccountsUsageBaseUrl(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: accountsUsageBaseUrl + '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 {getAccountsUsageBaseUrl, 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 '../../../store/selectors/settings/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 {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 normalizeTimestamp(timestamp?: unknown): number {\n const seconds = Math.floor(Date.now() / 1000);\n if (!timestamp) return seconds;\n\n const parsed = Number(timestamp);\n return isNaN(parsed) ? seconds : parsed;\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, getState) => {\n const accountsUsageBaseUrl = getAccountsUsageBaseUrl(getState());\n dispatch({type: ACCOUNTS_USAGE_SNAPSHOTS_REQUEST});\n\n return axios\n .request<{\n snapshot_timestamps: Array<number>;\n }>({\n method: 'POST',\n url: accountsUsageBaseUrl + '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 const accountsUsageBaseUrl = getAccountsUsageBaseUrl(state);\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageListDataParams = {\n ...params,\n timestamp: normalizeTimestamp(timestamp),\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: accountsUsageBaseUrl + '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 const accountsUsageBaseUrl = getAccountsUsageBaseUrl(state);\n\n const params = getFilterParameters(state);\n const requestParams: AccountUsageTreeData['requestParams'] = {\n ...params,\n timestamp: normalizeTimestamp(timestamp),\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: accountsUsageBaseUrl + '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, getState) => {\n const accountsUsageBaseUrl = getAccountsUsageBaseUrl(getState());\n return dispatch(\n openModal({\n title: path,\n promise: axios\n .request({\n method: 'POST',\n url: accountsUsageBaseUrl + '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 };\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, {useCallback, useMemo} from 'react';\n\nimport map_ from 'lodash/map';\nimport reverse_ from 'lodash/reverse';\nimport {Breadcrumbs, BreadcrumbsItem} from '../../../../components/Breadcrumbs';\n\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\nimport {useHistory} from 'react-router';\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 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';\nimport {makeRoutedURL} from '../../../../store/window-store';\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 const history = useHistory();\n\n const items = useMemo(() => {\n return map_(pathArr, (item, index) => {\n const text = item.item;\n return (\n <BreadcrumbsItem\n key={text}\n href={makeRoutedURL(`${window.location.pathname}?path=${item.value}`)}\n >\n {index ? <PathFragment name={text} /> : <Icon awesome={'folder-tree'} />}\n </BreadcrumbsItem>\n );\n });\n }, [pathArr]);\n\n const handleBreadcrumbClick = useCallback(() => {\n setTimeout(() => {\n dispatch(fetchAccountUsage());\n }, 0);\n }, [dispatch]);\n\n return (\n <Breadcrumbs navigate={history.push} onAction={handleBreadcrumbClick} showRoot>\n {items}\n </Breadcrumbs>\n );\n}\n\nexport default React.memo(AccountUsageToolbar);\n","import React, {FC, useCallback} from 'react';\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 if (!path) return undefined;\n\n return (\n <AttributesButton\n view=\"flat\"\n withTooltip\n tooltipProps={{placement: 'bottom-end', content: 'Show attributes'}}\n onClick={handleOpenAttributeModal}\n size=\"xs\"\n />\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';\nimport ArrowUpRightFromSquareIcon from '@gravity-ui/icons/svgs/arrow-up-right-from-square.svg';\n\nimport {YTErrorBlock} 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 {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';\nimport {Page} from '../../../../constants/index';\nimport PathView from '../../../../containers/PathFragment/PathFragment';\nimport {Button, Flex, Icon as GravityIcon, Tooltip} from '@gravity-ui/uikit';\nimport {makeRoutedURL} from '../../../../store/window-store';\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 const url = makeRoutedURL(`/${cluster}/${Page.NAVIGATION}?path=${path}`);\n return (\n <Flex alignItems=\"center\" gap={1}>\n <span>\n <PathView path={path} lastFragmentOnly={viewType === 'tree'} />\n </span>\n <Tooltip content=\"Open original path in Navigation\">\n <Button\n className={block('link')}\n href={url}\n title={url}\n view=\"flat\"\n target=\"_blank\"\n size=\"xs\"\n >\n <GravityIcon data={ArrowUpRightFromSquareIcon} size=\"14\" />\n </Button>\n </Tooltip>\n </Flex>\n );\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 <YTErrorBlock 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 <YTErrorBlock 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 <YTErrorBlock 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 <YTErrorBlock 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';\nimport {useDisableMaxContentWidth} from '../../../../containers/MaxContentWidth';\n\nconst block = cn('accounts');\n\nfunction AccountDetailedUsageTab() {\n useDisableMaxContentWidth();\n\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 hideToolbarShadow\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 {getAccountsUsageBaseUrl, getCluster} from '../../../store/selectors/global';\nimport AccountsUpdater from './AccountsUpdater';\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(getAccountsUsageBaseUrl(state)),\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} from '../../../../../store/selectors/global';\nimport {isDeveloper} from '../../../../../store/selectors/global/is-developer';\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 {Breadcrumbs, BreadcrumbsItem} from '../../../components/Breadcrumbs';\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 {getActiveAccountBreadcrumbs} from '../../../store/selectors/accounts/accounts';\n\nimport AccountCreate from '../tabs/general/Editor/AccountCreate';\nimport {useHistory} from 'react-router';\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\nconst ROOT_PLACEHOLDER = '<Root>';\n\nfunction AccountsBreadcrumbs() {\n // @ts-ignore\n const bcItems = useSelector(getActiveAccountBreadcrumbs).slice(1);\n const dispatch = useDispatch();\n const history = useHistory();\n const cluster = useSelector(getCluster);\n\n const handleBreadcrumbsClick = (key: string | number) => {\n dispatch(setActiveAccount(key === ROOT_PLACEHOLDER ? '' : key));\n };\n\n const items = React.useMemo(() => {\n return [{text: ''}, ...bcItems].map((item) => {\n const account = item.text;\n const text = account || ROOT_PLACEHOLDER;\n const pathname = account\n ? window.location.pathname\n : calcRootPathname(window.location.pathname, cluster);\n\n return (\n <BreadcrumbsItem key={text} href={makeRoutedURL(pathname, {account})}>\n {text}\n </BreadcrumbsItem>\n );\n });\n }, [bcItems, cluster]);\n\n return (\n <Breadcrumbs\n navigate={history.push}\n className={block('breadcrumbs')}\n onAction={handleBreadcrumbsClick}\n showRoot\n >\n {items}\n </Breadcrumbs>\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 * as React from 'react';\nexport function useResizeObserver({ ref, onResize, box, }) {\n React.useEffect(() => {\n const element = ref === null || ref === void 0 ? void 0 : ref.current;\n if (!element) {\n return undefined;\n }\n if (typeof window.ResizeObserver === 'undefined') {\n window.addEventListener('resize', onResize, false);\n return () => {\n window.removeEventListener('resize', onResize, false);\n };\n }\n const observer = new ResizeObserver((entries) => {\n if (!entries.length) {\n return;\n }\n onResize();\n });\n observer.observe(element, { box });\n return () => {\n observer.disconnect();\n };\n }, [ref, onResize, box]);\n}\n","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 headingClassName,\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'}, headingClassName)}>\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 headingClassName?: 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 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"],"names":["props","_jsx","_objectSpread","xmlns","fill","viewBox","children","fillRule","d","clipRule","_jsxs","stroke","opacity","strokeWidth","cx","cy","rx","ry","strokeLinecap","strokeDasharray","b","block","ColumnSelectorModal","_React$Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","concat","state","srcItems","items","makeItemsCopy","itemsOrder","_getItemsOrder","_handleCONFIRMButtonClick","onConfirm","_handleCANCELButtonClick","order","setState","_getOrderedItems","onCancel","onSourceChange","_ref","newItems","newItemsMap","reduce_","acc","data","name","unchanged","changed","forEach_","item","newItem","checked","keyColumn","push","preparedItems","calculateSrcItems","onDestinationChange","_ref2","_inherits","_createClass","key","value","prevProps","_this$props","this","map_","undefined","sort","a","indexOf","showDisabledItems","isHeadless","isFilterable","onChange","isSelectable","isSortable","showSelectedOnly","_ref3","title","description","className","ColumnSelector","NoContentImage","_this$props2","isVisible","entity","rest","_objectWithoutProperties","_excluded","_this$state","headingCN","size","selectorProps","_getSelectorProps","sortableSelectorProps","_getSortableSelectorProps","selectedItemsCount","disabled","left","renderColumnSelector","_this$props3","hammer","format","Modal","borderless","visible","confirmText","content","renderContent","contentClassName","React","defaultProps","datepickerDefaultProps","mapDispatchToProps","toggleColumnSortOrder","compose","connect","sortState","tables","Component","_WithStickyHead","WithStickyHead","top","bWrapper","sticky","style","prepareTableClassName","ElementsTableHeader","renderStickyHead","displayName","getDisplayName","templates","theme","padded","striped","HEADER_HEIGHT","useAppRumMeasureStart","params","cluster","useSelector","getCluster","useRumMeasureStart","subPage","ElementsTableFooter","_Component","index","css","itemHeight","itemMods","selectedIndex","computeKey","cssHover","columnSet","columnItems","selected","currentKey","ElementsTableRow","bFooter","ELEMENTS_TABLE","footer","renderRow","columns","_prepareColumnsData","prepareColumnsData","set","_WithStickyFooter","WithStickyFooter","renderStickyFooter","shouldClientNavigate","link","modifiers","target","getAttribute","href","origin","location","hasAttribute","metaKey","ctrlKey","altKey","shiftKey","BreadcrumbItem","_a","Element","domProps","filterDOMProps","labelable","handleAction","event","preventDefault","onAction","currentTarget","navigate","HTMLAnchorElement","isDefaultPrevented","routerOptions","isDisabled","linkProps","onClick","hrefLang","rel","download","ping","referrerPolicy","role","tabIndex","onKeyDown","current","itemType","Object","assign","BreadcrumbsSeparator","separator","addComponentKeysets","en","Item","_props","ref","listRef","containerRef","useForkRef","forEach","child","visibleItemsCount","setVisibleItemsCount","calculated","setCalculated","handleResize","useResizeObserver","onResize","lastChildren","visibleItems","list","listItems","from","containerWidth","offsetWidth","newVisibleItemsCount","calculatedWidth","maxItems","Infinity","rootWidth","showRoot","shift","scrollWidth","lastItem","pop","Math","min","i","max","recalculate","contents","breadcrumbs","endItems","rootItem","hiddenItems","slice","menuItem","DropdownMenu","map","el","text","action","popupProps","staircase","popupStyle","placement","popupPlacement","renderSwitcher","Button","i18n","view","Icon","lastIndex","breadcrumbItems","isCurrent","calculating","qa","cn","Breadcrumbs","UBreadcrumbs","TextInputWithDebounce","_props$debounce","debounce","_props$onUpdate","onUpdate","onBlur","onEnterKeyDown","_React$useState","_React$useState2","_slicedToArray","input","setInput","handleChangeExt","debounce_","handleChange","handleKeyDown","e","handleBlur","cancel","TextInput","PageCounter","pageIndex","pageCount","getNameTitle","column","shortTitle","t","capitalize_","nameContent","titleContent","ColumnHeader","align","onSort","multisortIndex","loading","_useColumnInfo","options","allowUnordered","withUndefined","allowedOrderTypes","columnData","find","rumLogError","message","additional","subColumn","useColumnInfo","changeHandler","nextOrder","calculateNextOrderValue","nextSortOrderValue","currentOrder","multisort","sortable","Boolean","SortIcon","Text","variant","color","SubColumnSelector","Loader","x","_ref4","barsDescendingSvg","Pagination","control","handler","tooltip","hotkeySettings","keys","hotkey","scope","hotkeyScope","hotkeyHandler","first","previous","next","last","pin","awesome","Hotkey","settings","showInput","inputValue","type","renderComponent","renderInput","useAllUserNamesFiltered","dispatch","useDispatch","loadUsersIfNotLoaded","namesSorted","getAllUserNamesSorted","getFiltered","sortedIndexBy_","substr","to","sortedLastIndexBy_","allNames","useGroupsLoaded","loadGroupsIfNotLoaded","GroupsLoader","WarningIcon","hoverContent","Tooltip","DragHandle","sortableHandle","face","SortableItem","sortableElement","itemRenderer","onCheckBoxChange","active","selectable","showAction","isDeletable","SortableList","sortableContainer","useStaticSize","mods","ReactList","toggleItem","withActualItems","_toConsumableArray","findIndex","changedItem","selectAllItems","visibleMap","getVisibleItemsMap","each_","deselectAllItems","_ref5","_item$isDeletable","invertItems","_ref6","_handleCheckBoxChange","_handleSortEnd","_ref7","oldIndex","newIndex","_ref8","getVisibleItems","fromIndex","toIndex","_items$splice","splice","removed","_handleDefaultSort","_ref9","aCaption","caption","bCaption","localeCompare","_toggleShownItems","prevState","_changeFilter","filter","get","every","some","func","_this2","placeholder","hasClear","btnProps","renderSearchBox","filter_","buttonALLisDisabled","buttonNONEisDisabled","re","RegExp","escapeRegExp_","test","filterItemsByName","toSplit","filterItems","_partition_","partition_","_partition_2","keyItems","_this$getVisibleItems2","headless","empty","lockAxis","helperClass","helper","onSortEnd","useDragHandle","classNames","renderControls","renderList","itemsProps","PropTypes","isRequired","_ref0","_ref0$caption","renderText","asHTML","Favourites","isActive","toggleActive","onToggle","onItemClick","dropItems","path","switcher","renderButton","buttonProps","themeProps","toggleDisabled","clear","renderDropDownMenu","renderHotkey","DEFAULT_PLACEMENT","id","disablePortal","openDelay","closeDelay","anchorElement","setAnchorElement","tooltipVisible","useTooltipVisible","preventTriggerOnFocus","only","childRef","getElementRef","Popup","open","anchorRef","disableEscapeKeyDown","disableOutsideClick","disableLayer","AccountsNoContent","hint","NoContent","warning","AccountStatisticTab","account","getActiveAccount","accountSubtreeAllNames","getActiveAccountSubtreeNames","getTheme","AccountStatisticsComponent","UIFactory","getStatisticsComponentForAccount","activeAccount","fetchAccounts","loadUsers","AccountsAcl","AccountsMonitorTab","AccountMonitor","component","ErrorBoundary","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","requestParams","getAccountUsageListLoading","getAccountUsageListLoaded","loaded","getAccountUsageListError","error","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$usage1","getAccountUsageTreeDiffRequestParams","treeDiff","getAccountUsageTreeDiffLoading","getAccountUsageTreeDiffLoaded","getAccountUsageTreeDiffError","getAccountUsageTreeDiffItems","_state$accounts$usage11","getAccountUsageTreeDiffMediums","_state$accounts$usage13","isAccountsUsageDiffView","createSelector","endsWith","getAccountUsageTreeItemsBasePathSplitted","treeDiffPath","fragments","ypath","YPath","join","getAccountUsageFieldFiltersRequestParameter","res","field","round","Date","getTime","comparison","getAccountUsagePageCount","_state$accounts$usage4","row_count","_state$accounts$usage8","_state$accounts$usage10","listRowCount","treeRowCount","listDiffRowCount","rowCount","ceil","PAGE_SIZE","getAccountUsagePageIndex","Number","getAccountUsageSortStateByColumn","getAccountUsageAvailableColumns","_state$accounts$usage2","fields","_state$accounts$usage6","_state$accounts$usage0","_state$accounts$usage12","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","normalizeTimestamp","newer","fetchAccountUsageListDiff","getState","timestamps","accountsUsageBaseUrl","getAccountsUsageBaseUrl","getFilterParameters","ACCOUNTS_USAGE_LIST_DIFF_REQUEST","axios","request","method","url","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","seconds","floor","now","parsed","isNaN","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","newValue","setSettingsAccountUsageColumnsList","setSettingsAccountUsageColumnsListFolders","setSettingsAccountUsageColumnsTree","available","selectedSet","other","isMedium","_item$data","Secondary","PathPart","fragment","fragmentToYSON","__html","unipika","decode","dangerouslySetInnerHTML","_unused","PathFragment","lastFragmentOnly","_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","apply","renderItem","SubjectCard","noLink","popupClassName","_useSelector","Datepicker","range","allowNullableValues","onError","setAccountUsageDataPageIndex","SimplePagination","VIEW_TYPE_ITEMS","icon","DiffTitle","setSettingsAccountUsageViewType","pathArr","history","useHistory","useMemo","BreadcrumbsItem","makeRoutedURL","window","pathname","handleBreadcrumbClick","useCallback","setTimeout","AccountActionsField","onAttributeButtonClick","handleOpenAttributeModal","AttributesButton","withTooltip","tooltipProps","getRenderSign","getDiffClass","showDiff","sign","DetailTableCell","additionalValue","formatType","totalValue","formatFn","Bytes","Flex","justifyContent","alignItems","gap","diff","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","Warning","Page","NAVIGATION","PathView","GravityIcon","ArrowUpRightFromSquareIcon","disk_space","medium","versionedName","additionalKey","NO_VALUE","DateTime","UPDATE_TIMEOUT","AccountUsageDetailsList","onlyOnce","YTErrorBlock","DataTableYT","rowClassName","useThemeYT","AccountUsageDetailsListDiff","AccountUsageDetailsTree","AccountUsageDetailsTreeDiff","AccountUsageDetailsListMemo","AccountUsageDetailsListDiffMemo","AccountUsageDetailsTreeMemo","AccountUsageDetailsTreeDiffMemo","AccountUsageDetailsDiff","AccountUsageDetailsDiffMemo","AccountUsageDetails","lastViewType","getSettingsAccountUsageViewType","diffContent","AccountsUsageDetailsListLoaderMemo","AccountsUsageDetailsListLoader","AccountsUsageDetailsTreeLoaderMemo","AccountsUsageDetailsTreeLoader","AccountsUsageDetailsTreeDiffLoader","AccountsUsageDetailsListDiffLoader","count","AccountDetailedUsageTab","useDisableMaxContentWidth","WithStickyToolbar","hideToolbarShadow","doubleHeight","toolbar","Accounts","_UIFactory$getMonitor","match","lastVisitedTab","allowUsageTab","showSettings","AccountsTab","tab","show","ACCOUNTS_ALLOWED_ROOT_TABS","usageTab","USAGE","statsTab","STATISTICS","getMonitoringForAccounts","monitoringComponent","urlTemplate","monitoringTitle","monTab","MONITOR","routed","external","formatByParams","ytCluster","ytAccount","makeTabProps","_defineProperty","lastTab","tabToRedirect","GENERAL","AccountsRumMeasure","AccountsUpdater","Tabs","ACCOUNTS_DEFAULT_TAB","routedPreserveLocation","UI_TAB_SIZE","Switch","Route","AccountsGeneralTab","ACL","AccountsAclTab","AccountsUsageTab","Redirect","getLastVisitedTabs","ACCOUNTS","isFinalStatus","getAccountsIsFinalLoadingStatus","RumMeasureTypes","allowStart","startDeps","useRumMeasureStop","allowStop","stopDeps","isRootAccount","AccountCreateDialog","onSubmit","form","createAccountFromInfo","closeCreateModal","loadEditedAccount","newAccountInfo","values","parentAccount","abcService","currentUserName","isAdmin","_newAccountInfo$respo","responsibles","YTDFDialog","headerProps","onAdd","pristineSubmittable","initialValues","ROOT_ACCOUNT_NAME","isAbcAllowed","required","visibilityCondition","when","extras","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","ROOT_PLACEHOLDER","bcItems","getActiveAccountBreadcrumbs","some_","_v","calcRootPathname","box","element","ResizeObserver","addEventListener","removeEventListener","observer","entries","observe","disconnect","CollapsibleSectionStateLess","toggle","collapsed","overview","headingClassName","marginDirection","togglerRightPadding","margin","clickable","CollapsibleSection","setCollapsed","_props$value","NaN","_props$min","_props$max","_props$step","step","firstDiff","lastDiff","handleToFirst","handleToPrev","handleToNext","handleToLast"],"sourceRoot":""}
|