@ytsaurus/ui 3.6.0 → 3.6.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.
Files changed (54) hide show
  1. package/dist/public/build/assets-manifest.json +37 -37
  2. package/dist/public/build/css/{main.89a1698b.css → main.eac511a5.css} +2 -2
  3. package/dist/public/build/css/main.eac511a5.css.map +1 -0
  4. package/dist/public/build/js/{1394.45bb669a.chunk.js → 1394.9f9c9f9a.chunk.js} +2 -2
  5. package/dist/public/build/js/{1394.45bb669a.chunk.js.map → 1394.9f9c9f9a.chunk.js.map} +1 -1
  6. package/dist/public/build/js/4804.2d9406dc.chunk.js +3 -0
  7. package/dist/public/build/js/4804.2d9406dc.chunk.js.map +1 -0
  8. package/dist/public/build/js/{accounts-monitoring-prometheus.262cacd8.chunk.js → accounts-monitoring-prometheus.38e8206a.chunk.js} +2 -2
  9. package/dist/public/build/js/accounts-monitoring-prometheus.38e8206a.chunk.js.map +1 -0
  10. package/dist/public/build/js/acl.00a69fe0.chunk.js +2 -0
  11. package/dist/public/build/js/acl.00a69fe0.chunk.js.map +1 -0
  12. package/dist/public/build/js/{bundle-monitoring-prometheus.d49a9a1a.chunk.js → bundle-monitoring-prometheus.dc8084bb.chunk.js} +2 -2
  13. package/dist/public/build/js/bundle-monitoring-prometheus.dc8084bb.chunk.js.map +1 -0
  14. package/dist/public/build/js/components.c4fc1d81.chunk.js +2 -0
  15. package/dist/public/build/js/components.c4fc1d81.chunk.js.map +1 -0
  16. package/dist/public/build/js/main.a04f2740.js +3 -0
  17. package/dist/public/build/js/{main.3e360b19.js.map → main.a04f2740.js.map} +1 -1
  18. package/dist/public/build/js/navigation.cd66d63f.chunk.js +2 -0
  19. package/dist/public/build/js/{navigation.8d91701a.chunk.js.map → navigation.cd66d63f.chunk.js.map} +1 -1
  20. package/dist/public/build/js/{prometheus-dashboard.3c9f3a99.chunk.js → prometheus-dashboard.d3814a09.chunk.js} +2 -2
  21. package/dist/public/build/js/prometheus-dashboard.d3814a09.chunk.js.map +1 -0
  22. package/dist/public/build/js/query-navigation.f7f5a1b5.chunk.js +2 -0
  23. package/dist/public/build/js/{query-navigation.f52623cc.chunk.js.map → query-navigation.f7f5a1b5.chunk.js.map} +1 -1
  24. package/dist/public/build/js/{runtime.2344fc6d.js → runtime.3af0a91e.js} +2 -2
  25. package/dist/public/build/js/{runtime.2344fc6d.js.map → runtime.3af0a91e.js.map} +1 -1
  26. package/dist/public/build/js/scheduling.4f518a8a.chunk.js +2 -0
  27. package/dist/public/build/js/scheduling.4f518a8a.chunk.js.map +1 -0
  28. package/dist/public/build/js/{system-monitoring-prometheus.b6ce8ed8.chunk.js → system-monitoring-prometheus.4004494c.chunk.js} +2 -2
  29. package/dist/public/build/js/system-monitoring-prometheus.4004494c.chunk.js.map +1 -0
  30. package/dist/public/build/js/{system.08fe4f55.chunk.js → system.2e84d486.chunk.js} +2 -2
  31. package/dist/public/build/js/{system.08fe4f55.chunk.js.map → system.2e84d486.chunk.js.map} +1 -1
  32. package/dist/public/build/js/yt-monaco-editor.4ad443b3.chunk.js +2 -0
  33. package/dist/public/build/js/{yt-monaco-editor.ba9a69f6.chunk.js.map → yt-monaco-editor.4ad443b3.chunk.js.map} +1 -1
  34. package/dist/public/build/manifest.json +32 -32
  35. package/package.json +2 -2
  36. package/dist/public/build/css/main.89a1698b.css.map +0 -1
  37. package/dist/public/build/js/4804.05d44971.chunk.js +0 -3
  38. package/dist/public/build/js/4804.05d44971.chunk.js.map +0 -1
  39. package/dist/public/build/js/accounts-monitoring-prometheus.262cacd8.chunk.js.map +0 -1
  40. package/dist/public/build/js/acl.91a762f3.chunk.js +0 -2
  41. package/dist/public/build/js/acl.91a762f3.chunk.js.map +0 -1
  42. package/dist/public/build/js/bundle-monitoring-prometheus.d49a9a1a.chunk.js.map +0 -1
  43. package/dist/public/build/js/components.aa32cd54.chunk.js +0 -2
  44. package/dist/public/build/js/components.aa32cd54.chunk.js.map +0 -1
  45. package/dist/public/build/js/main.3e360b19.js +0 -3
  46. package/dist/public/build/js/navigation.8d91701a.chunk.js +0 -2
  47. package/dist/public/build/js/prometheus-dashboard.3c9f3a99.chunk.js.map +0 -1
  48. package/dist/public/build/js/query-navigation.f52623cc.chunk.js +0 -2
  49. package/dist/public/build/js/scheduling.6f68a262.chunk.js +0 -2
  50. package/dist/public/build/js/scheduling.6f68a262.chunk.js.map +0 -1
  51. package/dist/public/build/js/system-monitoring-prometheus.b6ce8ed8.chunk.js.map +0 -1
  52. package/dist/public/build/js/yt-monaco-editor.ba9a69f6.chunk.js +0 -2
  53. /package/dist/public/build/js/{4804.05d44971.chunk.js.LICENSE.txt → 4804.2d9406dc.chunk.js.LICENSE.txt} +0 -0
  54. /package/dist/public/build/js/{main.3e360b19.js.LICENSE.txt → main.a04f2740.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/components.c4fc1d81.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/VisibleValues/VisibleValues.tsx","webpack://@ytsaurus/ui/./src/ui/utils/parse/parse-bytes.ts","webpack://@ytsaurus/ui/./src/ui/utils/app-url/index.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/Placeholder.tsx","webpack://@ytsaurus/ui/./src/ui/components/TextInputWithDebounce/TextInputWithDebounce.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withSplit.tsx","webpack://@ytsaurus/ui/./src/ui/components/LoadDataHandler/LoadDataHandler.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/use-side-panel.tsx","webpack://@ytsaurus/ui/./src/ui/icons/Chevron.tsx","webpack://@ytsaurus/ui/./src/ui/components/Select/Select.tsx","webpack://@ytsaurus/ui/./src/ui/components/formatters/FormattedLink.js","webpack://@ytsaurus/ui/./src/ui/components/formatters/FormattedTextOrLink.js","webpack://@ytsaurus/ui/./src/ui/components/formatters/FormattedId/FormattedId.js","webpack://@ytsaurus/ui/./src/ui/components/formatters/index.js","webpack://@ytsaurus/ui/./src/ui/pages/components/TableInfo/TableInfo.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/components/versions/versions_v2.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Versions/VersionCell.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Versions/tables_v2.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/versions/versions_v2.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/versions/versions_v2-ts.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Versions/VersionSummary.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Versions/VersionsV2.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Proxies/ProxyActions/ProxyActions.tsx","webpack://@ytsaurus/ui/./src/ui/components/MaintenanceRequests/MaintenanceRequests.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Proxies/ProxyCard/ProxyCard.tsx","webpack://@ytsaurus/ui/./src/ui/utils/components/proxies/table.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/proxies/proxies.js","webpack://@ytsaurus/ui/./src/ui/pages/components/NodeMaintenanceModal/NodeMaintenanceModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Proxies/Proxies.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/filters-presets.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/FilterPresets/FiltersPresets.js","webpack://@ytsaurus/ui/./src/ui/components/FilterWithRegExp/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/components/FilterWithRegExp/FilterWithRegExp.tsx","webpack://@ytsaurus/ui/./src/ui/components/TagSelector/TagSelector.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/SetupModal/TagsFilter/TagsFilter.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/SetupModal/SetupModal.js","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node/node.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/node-card.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node/node.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeCpuAndMemory/NodeCpuAndMemory.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeResources/NodeResources.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeStorage/NodeStorage.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeTabletSlots/NodeTabletSlots.tsx","webpack://@ytsaurus/ui/./src/ui/utils/components/nodes/node-meta-items.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/NodeCard/NodeCard.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/Nodes/Nodes.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/components/shards.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Shards/Name.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Shards/NodeCount.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Shards/Shards.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeGeneralTab/NodeGeneralTab.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node/memory.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeBundlesTotal/NodeBundlesTotal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeMemoryDetailsTable/NodeMemoryDetailsTable.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node/memory.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeBundles/NodeBundles.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeTables/NodeTables.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeMemoryUsage/NodeMemoryUsageToolbar.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeMemoryUsage/NodeMemoryUsage.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeMeta/NodeMeta.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeAlerts/NodeAlerts.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeLocations/NodeLocations.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeTabletSlotsTab/NodeTabletSlotsTab.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node/unrecognized-options.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node/unrecognized-options.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeUnrecognizedOptions/NodeUnrecognizedOptions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodePage.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/Components/Components.js","webpack://@ytsaurus/ui/./src/ui/pages/components/Components/ComponentsTopRowContent.tsx","webpack://@ytsaurus/ui/./src/ui/utils/app-url/navigation.ts","webpack://@ytsaurus/ui/./src/ui/utils/app-url/utils.ts","webpack://@ytsaurus/ui/./src/ui/utils/components/tablet-cells/index.js","webpack://@ytsaurus/ui/./src/ui/components/ColumnSelector/i18n/index.ts","webpack://@ytsaurus/ui/./src/ui/components/ColumnSelector/ColumnSelector.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/ArrowToggle/ArrowToggle.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dropdown/Dropdown.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/i18n/index.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/utils.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/BreadcrumbsDropdownMenu.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/lab/ListItemView/ListItemView.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/BreadcrumbsItem.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/BreadcrumbsSeparator.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'bem-cn-lite';\nimport min_ from 'lodash/min';\nimport max_ from 'lodash/max';\n\nimport './VisibleValues.scss';\n\nconst block = cn('yt-visible-values');\n\nexport type VisbileValuesProps = {\n className?: string;\n value: Array<string>;\n maxVisibleValues?: number;\n maxTextLength?: number;\n renderItem?: (item: VisbileValuesProps['value'][number], index: number) => React.ReactNode;\n\n width?: 'max';\n counter?: 'all-values' | 'missing-values' | 'none';\n};\n\nexport function VisibleValues({\n className,\n value,\n maxVisibleValues,\n maxTextLength,\n renderItem = (value) => value,\n counter,\n}: VisbileValuesProps) {\n const visibleItems = React.useMemo(() => {\n const maxCounts = [maxVisibleValues];\n if (maxTextLength !== undefined) {\n let i = 1;\n let sum = value[0].length;\n for (; i < value?.length; ++i) {\n const newSum = sum + value[i].length;\n if (newSum < maxTextLength) {\n sum = newSum;\n } else {\n break;\n }\n }\n maxCounts.push(i);\n }\n const visibleCount = min_(maxCounts);\n return value.slice(0, max_([1, visibleCount]));\n }, [value, maxTextLength, maxVisibleValues]);\n\n const hasMissing = value.length > visibleItems.length;\n const hideSpacer = counter === 'missing-values';\n return (\n <div className={block(null, className)}>\n <span className={block('values')}>\n {visibleItems.map((option, index) => {\n return (\n <span key={index} className={block('values-item')}>\n {index !== 0 && <>,&nbsp;</>}\n {renderItem(option, index)}\n </span>\n );\n })}\n </span>\n {!hideSpacer && (\n <span className={block('spacer', {missing: hasMissing})}>\n {hasMissing && ', ...'}\n </span>\n )}\n <SelectedCount count={value.length} visibleCount={visibleItems.length} mode={counter} />\n </div>\n );\n}\n\nfunction SelectedCount({\n count = 0,\n visibleCount = 0,\n mode,\n}: {\n count?: number;\n visibleCount?: number;\n mode: VisbileValuesProps['counter'];\n}) {\n if (mode === 'none') {\n return null;\n }\n\n if (visibleCount === count && mode === 'missing-values') {\n return null;\n }\n\n const value = mode === 'missing-values' ? count - visibleCount : count;\n\n return value! >= 2 ? (\n <div className={block('counter')}>\n <span className={block('counter-value')}>\n {mode === 'missing-values' ? '+' : null}\n {value}\n </span>\n </div>\n ) : null;\n}\n","import findIndex_ from 'lodash/findIndex';\n\nexport function parseBytes(input: string): number {\n const names = ['B', 'K', 'M', 'G', 'T', 'P', 'E'];\n const formatRegex = new RegExp('^((\\\\d*[.])?\\\\d+)( *[' + names.join('') + '])(iB)?(/s)?$', 'i');\n\n if (formatRegex.test(input)) {\n const match = input.match(formatRegex)!;\n const value = match[1];\n const dimension = match[3].trim();\n const dimensionIndex = findIndex_(\n names,\n (name) => name.toUpperCase() === dimension.toUpperCase(),\n );\n\n return Math.floor(Number(value) * Math.pow(2, 10 * dimensionIndex));\n } else {\n return Math.floor(Number(input));\n }\n}\n","import {Page} from '../../../shared/constants/settings';\nimport {YT} from '../../config/yt-config';\nimport {Tab as ComponentsTab} from '../../constants/components/main';\nimport {FlowTab, FlowTabType} from '../../store/reducers/flow/filters';\n\nexport * from './navigation';\n\nexport function makeComponentsNodesUrl({host, cluster}: {host?: string; cluster?: string} = {}) {\n return host\n ? `/${cluster || YT.cluster}/${Page.COMPONENTS}/${ComponentsTab.NODES}/${host}`\n : `/${cluster || YT.cluster}/${Page.COMPONENTS}/${ComponentsTab.NODES}`;\n}\n\nexport function makeProxyUrl(cluster: string, address: string) {\n return `/${cluster}/${Page.COMPONENTS}/${ComponentsTab.RPC_PROXIES}?host=${address}`;\n}\n\nexport function makeSchedulingUrl({\n pool,\n poolTree,\n cluster,\n tab,\n}: {\n pool: string;\n poolTree: string;\n cluster?: string;\n tab?: 'attributes';\n}) {\n const path = [cluster || YT.cluster, Page.SCHEDULING, tab].filter(Boolean).join('/');\n return `/${path}?pool=${pool}&poolTree=${poolTree}`;\n}\n\nexport function makeAccountsUrl(account: string, cluster?: string) {\n return `/${cluster || YT.cluster}/${Page.ACCOUNTS}?account=${account}`;\n}\n\nexport function makeBundleUrl({bundle, cluster}: {bundle: string; cluster?: string}) {\n return `/${cluster || YT.cluster}/${Page.TABLET_CELL_BUNDLES}/instances?activeBundle=${bundle}`;\n}\n\nexport function makeFlowLink({\n path,\n cluster,\n tab = FlowTab.GRAPH,\n computation,\n partition,\n partitionIdFilter,\n worker,\n}: {\n path: string;\n cluster?: string;\n tab?: FlowTabType;\n computation?: string;\n partition?: string;\n partitionIdFilter?: string;\n worker?: string;\n}) {\n let pathname = `/${cluster || YT.cluster}/${Page.FLOWS}/${tab}`;\n\n const params = new URLSearchParams({path});\n\n if (tab === FlowTab.COMPUTATIONS && computation) {\n pathname += `/${encodeURIComponent(computation)}`;\n if (partition) {\n pathname += `/partition/${encodeURIComponent(partition)}`;\n } else {\n pathname += '/details';\n if (partitionIdFilter) {\n params.append('partition', partitionIdFilter);\n }\n }\n }\n\n if (tab === FlowTab.WORKERS) {\n if (worker) {\n pathname += `/${encodeURIComponent(worker)}/details`;\n }\n }\n\n return `${pathname}?${params}`;\n}\n","import React from 'react';\nimport block from 'bem-cn-lite';\nimport {useRouteMatch} from 'react-router';\n\nimport hammer from '../../common/hammer';\n\nconst b = block('elements-message');\n\ninterface MatchParams {\n tab: string;\n}\n\nexport default function Placeholder() {\n const match = useRouteMatch<MatchParams>();\n const {tab} = match.params;\n\n return (\n <div className={b({theme: 'warning'})}>\n <p className={b('paragraph')}>\n {tab\n ? `Viewer for tab \"${hammer.format['ReadableField'](tab)}\" is not implemented.`\n : 'Viewer for this tab is not implemented.'}\n </p>\n </div>\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 ReactDOM from 'react-dom';\n\nimport {getDisplayName} from '../utils';\nimport {SPLIT_PANE_ID} from '../constants/index';\n\nexport default function withSplit<P>(Component: React.ComponentType<P>): React.ComponentType<P> {\n return class WithSplit extends React.Component<P> {\n static displayName = `WithSplit(${getDisplayName(Component)})`;\n\n render() {\n return ReactDOM.createPortal(\n <Component {...this.props} />,\n document.getElementById(SPLIT_PANE_ID)!,\n );\n }\n };\n}\n","import React, {Component} from 'react';\n\nimport {YTErrorBlock} from '../../components/Error/Error';\nimport hammer from '../../common/hammer';\n\nimport {showErrorPopup} from '../../utils/utils';\nimport {YTError} from '../../types';\nimport {toaster} from '../../utils/toaster';\n\ninterface LoadDataHandlerProps {\n alwaysShowError?: boolean;\n loaded?: boolean;\n error?: boolean;\n errorData?: YTError;\n children: React.ReactNode;\n}\n\nexport default class LoadDataHandler extends Component<LoadDataHandlerProps> {\n componentDidUpdate() {\n const {error, loaded, errorData} = this.props;\n\n if (error && loaded) {\n toaster.add({\n theme: 'danger',\n name: 'network',\n autoHiding: 500000,\n title: 'Oops! something went wrong.',\n content: errorData ? (errorData as YTError).message : hammer.format.NO_VALUE,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(errorData as YTError),\n },\n ],\n });\n }\n }\n\n render() {\n const {alwaysShowError = false, error, errorData, loaded, children} = this.props;\n\n const initialLoading = !loaded;\n\n if (error && (alwaysShowError || initialLoading)) {\n return <YTErrorBlock error={errorData} />;\n }\n\n return children;\n }\n}\n","import React from 'react';\nimport {useDispatch} from '../store/redux-hooks';\n\nimport withSplit from '../hocs/withSplit';\nimport {mergeScreen, splitScreen} from '../store/actions/global';\n\ntype SidePanelContentProps = {\n onClose: () => void;\n renderContent(props: {visible: boolean; onClose: () => void}): React.ReactNode;\n};\n\nexport const SidePanelPortal = withSplit(SideContent);\n\nexport function useSidePanel(\n name: string,\n {renderContent}: Pick<SidePanelContentProps, 'renderContent'>,\n) {\n const [widgetOpened, setWidgetOpened] = React.useState(false);\n const dispatch = useDispatch();\n\n const openWidget = React.useCallback(() => {\n dispatch(splitScreen(name));\n setWidgetOpened(true);\n }, [setWidgetOpened, dispatch, name]);\n\n const onClose = React.useCallback(() => {\n setWidgetOpened(false);\n dispatch(mergeScreen());\n }, [setWidgetOpened, dispatch]);\n\n return {\n closeWidget: onClose,\n openWidget,\n widgetOpened,\n widgetContent: widgetOpened ? (\n <SidePanelPortal>{renderContent({onClose, visible: widgetOpened})}</SidePanelPortal>\n ) : null,\n };\n}\n\nfunction SideContent({children}: {children: React.ReactNode}) {\n return children;\n}\n","import React from 'react';\n\nexport function Chevron(props: React.SVGProps<SVGSVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n height=\"16\"\n fill=\"currentColor\"\n aria-hidden\n {...props}\n >\n <path d=\"M3.50172 5.44253C3.19384 5.16544 2.71962 5.19039 2.44253 5.49828C2.16544 5.80616 2.19039 6.28038 2.49828 6.55747L3.50172 5.44253ZM8 10.5L7.49828 11.0575C7.7835 11.3142 8.2165 11.3142 8.50172 11.0575L8 10.5ZM13.5017 6.55747C13.8096 6.28038 13.8346 5.80616 13.5575 5.49828C13.2804 5.19039 12.8062 5.16544 12.4983 5.44253L13.5017 6.55747ZM2.49828 6.55747L7.49828 11.0575L8.50172 9.94253L3.50172 5.44253L2.49828 6.55747ZM8.50172 11.0575L13.5017 6.55747L12.4983 5.44253L7.49828 9.94253L8.50172 11.0575Z\" />\n </svg>\n );\n}\n","import React from 'react';\nimport filter_ from 'lodash/filter';\nimport cn from 'bem-cn-lite';\n\nimport {\n Button,\n Select,\n SelectOption,\n SelectProps,\n SelectRenderControlProps,\n Text,\n TextInput,\n} from '@gravity-ui/uikit';\n\nimport {Chevron} from '../../icons/Chevron';\nimport hammer from '../../common/hammer';\n\nimport {VisibleValues} from '../../components/VisibleValues/VisibleValues';\n\nimport './Select.scss';\n\nconst block = cn('yt-select');\n\nexport interface YTSelectProps<T extends string = string>\n extends Omit<SelectProps, 'options' | 'filter' | 'onChange' | 'onUpdate' | 'value'> {\n className?: string;\n value?: Array<T>;\n items: Array<Item<T>>;\n maxVisibleValues?: number;\n maxVisibleValuesTextLength?: number;\n hideClear?: boolean;\n hideFilter?: boolean;\n onChange?: (v: Required<YTSelectProps>['value']) => void;\n onUpdate?: (v: Array<T>) => void;\n\n renderItem?: (item: Item, useNoValue?: boolean) => React.ReactNode;\n}\n\nexport interface Item<T extends string = string> {\n value: T;\n text?: React.ReactNode;\n count?: number;\n icon?: React.ReactNode;\n}\n\nconst emptyValue: Array<string> = [];\n\nexport default function SelectFacade<T extends string = string>(props: YTSelectProps<T>) {\n const {items, onUpdate, onChange, value, ...rest} = props;\n const {options, hashByValue} = React.useMemo(() => {\n return prepareItems(items);\n }, [items]);\n\n const handleChange = React.useCallback(\n (newValue: Required<YTSelectProps<T>>['value']) => {\n onChange?.(newValue);\n onUpdate?.(newValue);\n },\n [onChange, onUpdate],\n );\n\n const filteredValue = React.useMemo(() => {\n const res = filter_(value, Boolean);\n return res.length ? res : emptyValue;\n }, [value]);\n\n return (\n <CustomSelect\n onUpdate={handleChange as any}\n {...rest}\n {...{value: filteredValue, options, hashByValue}}\n />\n );\n}\n\nSelectFacade.isEmpty = (value: YTSelectProps['value']) => {\n return !value?.length || (value.length === 1 && !value[0]);\n};\n\nSelectFacade.getDefaultValue = () => {\n return undefined;\n};\n\ninterface SelectSingleProps<T extends string>\n extends Omit<YTSelectProps<T>, 'value' | 'onUpdate' | 'onChange'> {\n value?: string;\n onChange?: (v?: string) => void;\n}\n\nexport function SelectSingle<T extends string = string>(props: SelectSingleProps<T>) {\n const {onChange, value, ...rest} = props;\n const handleChange = React.useCallback(\n (vals?: Array<string>) => {\n onChange?.(vals?.[0]);\n },\n [onChange],\n );\n return (\n <SelectFacade\n value={value !== undefined ? [value] : undefined}\n onChange={handleChange}\n {...rest}\n />\n );\n}\n\nSelectSingle.isEmpty = (value: SelectSingleProps<string>['value']) => {\n return !value;\n};\n\nSelectSingle.getDefaultValue = () => {\n return undefined;\n};\n\nfunction prepareItems(items: YTSelectProps['items']) {\n const hashByValue: Map<string, SelectOption> = new Map();\n const options = items.map((item) => {\n const {value} = item;\n const res = {\n value,\n data: item,\n };\n hashByValue.set(value, res);\n return res;\n });\n return {options, hashByValue};\n}\n\nfunction renderItemContent(item: Item, useNoValue = false) {\n const {value, text, icon} = item;\n const content = text || (value ? hammer.format['ReadableField'](value) : undefined);\n const empty = !content;\n return (\n <>\n {icon && <span className={block('item-icon')}>{icon}</span>}\n {empty ? (\n <Text className={block('empty')} color={'secondary'}>\n {useNoValue ? hammer.format.NO_VALUE : 'Empty string'}\n </Text>\n ) : (\n content\n )}\n </>\n );\n}\n\nclass CustomSelect extends React.Component<\n SelectProps &\n Pick<ValueControlProps, 'hashByValue' | 'maxVisibleValues'> &\n Pick<\n YTSelectProps,\n 'hideClear' | 'hideFilter' | 'renderItem' | 'maxVisibleValuesTextLength'\n >\n> {\n static defaultProps = {\n width: 'max',\n };\n\n render() {\n const {className, hideFilter, ...props} = this.props;\n return (\n <Select\n className={block(null, className)}\n disablePortal={false}\n {...props}\n options={props.options}\n filterable={!hideFilter}\n renderOption={this.renderOption}\n renderControl={this.renderControl}\n renderFilter={this.renderFilter}\n />\n );\n }\n\n renderControl: SelectProps['renderControl'] = ({ref, ...props}) => {\n const {\n value,\n className,\n label,\n pin,\n placeholder,\n disabled,\n width,\n hashByValue,\n maxVisibleValues,\n maxVisibleValuesTextLength,\n } = this.props;\n return (\n <ValueControl\n controlRef={ref}\n renderItem={this.renderItem}\n {...props}\n {...{\n className,\n value,\n placeholder,\n hashByValue,\n label,\n width,\n pin,\n disabled,\n maxVisibleValues,\n maxVisibleValuesTextLength,\n }}\n />\n );\n };\n\n renderItem = (item: Item, useNoValue?: boolean) => {\n const {renderItem} = this.props;\n return renderItem ? renderItem(item, useNoValue) : renderItemContent(item, useNoValue);\n };\n\n renderOption = (option: SelectOption) => {\n const {data: item} = option;\n const {count} = item as Item;\n\n const content = this.renderItem(item);\n\n const meta = typeof count === 'number' ? String(count) : undefined;\n\n const text = <Text className={block('item-text')}>{content}</Text>;\n\n if (meta) {\n return (\n <>\n {text}\n <Text ellipsis className={block('item-count')} color=\"secondary\">\n {' '}\n {count}\n </Text>\n </>\n );\n }\n\n return text;\n };\n\n renderFilter: SelectProps['renderFilter'] = ({ref, onChange, ...props}) => {\n const {hideClear, value} = this.props;\n const filter = <TextInput controlRef={ref} onUpdate={onChange} {...props} />;\n if (hideClear || !value?.length) {\n return filter;\n }\n\n return (\n <div className={block('filter')}>\n {filter}\n <span className={block('filter-btn')}>\n <Button view=\"flat-secondary\" onClick={() => this.props.onUpdate?.([])}>\n Clear\n </Button>\n </span>\n </div>\n );\n };\n}\n\ntype Extra = Parameters<Required<SelectProps>['renderControl']>[0];\n\ninterface ValueControlProps extends Omit<Extra, 'ref' | 'triggerProps'> {\n controlRef: React.Ref<HTMLElement>;\n hashByValue: Map<string, SelectOption>;\n maxVisibleValues?: YTSelectProps['maxVisibleValues'];\n placeholder?: SelectProps['placeholder'];\n className?: string;\n triggerProps?: SelectRenderControlProps['triggerProps'];\n}\n\nfunction ValueControl({\n className,\n value,\n label,\n hashByValue,\n controlRef,\n width,\n pin,\n disabled,\n maxVisibleValues,\n maxVisibleValuesTextLength,\n placeholder,\n renderItem,\n triggerProps,\n}: ValueControlProps &\n Pick<SelectProps, 'value' | 'pin' | 'label' | 'width' | 'disabled'> &\n Pick<Required<YTSelectProps>, 'renderItem'> &\n Pick<YTSelectProps, 'maxVisibleValuesTextLength'>) {\n const {w, style} =\n typeof width !== 'number' ? {w: width, style: undefined} : {style: {width}, w: undefined};\n\n return (\n <Button\n className={block(null, className)}\n ref={controlRef as any}\n view=\"outlined\"\n onClick={triggerProps?.onClick}\n width={w}\n style={style}\n {...{pin, disabled}}\n >\n <span className={block('control-value')}>\n {label && <Text className={block('control-label')}>{label}</Text>}\n {!value?.length ? (\n <Text color=\"hint\" variant=\"inherit\">\n {placeholder ?? hammer.format.NO_VALUE}\n </Text>\n ) : (\n <VisibleValues\n value={value}\n maxVisibleValues={maxVisibleValues}\n maxTextLength={maxVisibleValuesTextLength}\n renderItem={(item: string) => {\n const option = hashByValue.get(item);\n if (option) {\n return renderItem(option.data, true);\n }\n return <Text color=\"secondary\">{renderItem({value: item}, true)}</Text>;\n }}\n />\n )}\n </span>\n <Chevron className={block('chevron')} />\n </Button>\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {withRouter} from 'react-router';\n\nimport {computeStateQuery} from '../../utils/index';\nimport Link from '../../components/Link/Link';\nimport FormattedText from './FormattedText';\n\nfunction FormattedLink(props) {\n const {state, theme = 'ghost', className, text, match, onClick, ...rest} = props;\n const url = computeStateQuery({cluster: match.params.cluster, ...state});\n return (\n <Link routed url={url} theme={theme} onClick={onClick} className={className}>\n {React.isValidElement(text) ? text : <FormattedText text={text} {...rest} />}\n </Link>\n );\n}\nFormattedLink.propTypes = {\n state: PropTypes.shape({\n page: PropTypes.string.isRequired,\n cluster: PropTypes.string,\n tab: PropTypes.string,\n }).isRequired,\n text: PropTypes.oneOfType([PropTypes.node, PropTypes.string]).isRequired,\n className: PropTypes.string,\n theme: PropTypes.string,\n onClick: PropTypes.func,\n // from react-router\n match: PropTypes.shape({\n params: PropTypes.shape({\n cluster: PropTypes.string,\n }),\n }),\n};\nexport default withRouter(FormattedLink);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport FormattedText from './FormattedText';\nimport FormattedLink from './FormattedLink';\n\nexport default function FormattedTextOrLink({asLink = false, ...props}) {\n return asLink ? <FormattedLink {...props} /> : <FormattedText {...props} />;\n}\nFormattedTextOrLink.propTypes = {\n asLink: PropTypes.bool,\n};\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\n\nimport './FormattedId.scss';\n\nconst block = cn('table-formatters-id');\n\nFormattedId.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n};\n\nexport default function FormattedId({id}) {\n const [hovered, setHovered] = useState(false);\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n return (\n <div\n className={block({hovered: hovered ? 'yes' : 'no'})}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <span className=\"elements-ellipsis\">{id}</span>\n {hovered && (\n <div className={block('clipboard-button-wrapper')}>\n <ClipboardButton view=\"flat-secondary\" size=\"m\" text={id} />\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport {Progress} from '@gravity-ui/uikit';\n\nimport hammer from '../../common/hammer';\n\n// TODO: here are defiend reworked components from /templates/utils, drop original functions once we switch to\n// new components everywhere\nexport {default as FormattedText} from './FormattedText';\nexport {default as FormattedLink} from './FormattedLink';\nexport {default as FormattedTextOrLink} from './FormattedTextOrLink';\nexport {default as FormattedId} from './FormattedId/FormattedId';\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsFloatNumber(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['Number'](column.get(item), {\n digits: 2,\n digitsOnlyForFloat: true,\n });\n}\n\nexport function printColumnAsProgress(item, columnName) {\n const column = this.props.columns[columnName];\n return <Progress {...column.get(item)} />;\n}\n\nexport function printColumnAsTimeDuration(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['TimeDuration'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.props.columns[columnName];\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport './TableInfo.scss';\n\nconst block = cn('table-info');\n\ntype TableInfoProps = {\n showingItems: number;\n totalItems: number;\n};\n\nexport default function TableInfo({showingItems, totalItems}: TableInfoProps) {\n return (\n <div className={block('info')}>\n <p className={block('showing')}>\n <span className={block('info-text')}>Showing</span>\n <span className={block('info-count')}>{showingItems}</span>\n </p>\n\n <p className={block('total')}>\n <span className={block('info-text')}>Total</span>\n <span className={block('info-count')}>{totalItems}</span>\n </p>\n </div>\n );\n}\n\nTableInfo.propTypes = {\n showingItems: PropTypes.number.isRequired,\n totalItems: PropTypes.number.isRequired,\n};\n","import axios from 'axios';\n\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {\n CHANGE_VERSION_SUMMARY_PARTIAL,\n DISCOVER_VERSIONS,\n} from '../../../../constants/components/versions/versions_v2';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../../store/reducers';\nimport {\n SummaryItem,\n VersionHostInfo,\n VersionSummaryItem,\n VersionsAction,\n} from '../../../../store/reducers/components/versions/versions_v2';\nimport {SortState} from '../../../../types';\n\nexport interface DiscoverVersionsData {\n details: Array<VersionHostInfo>;\n summary: Record<'total' | 'error' | string, VersionSummary>;\n}\n\ntype VersionSummary = Record<string, SummaryItem>;\n\ntype NodesThunkAction<T = void> = ThunkAction<Promise<T>, RootState, unknown, any>;\n\nexport function getVersions(): NodesThunkAction<DiscoverVersionsData> {\n return (dispatch, getState) => {\n dispatch({type: DISCOVER_VERSIONS.REQUEST});\n\n const cluster = getCluster(getState());\n\n return axios\n .get<DiscoverVersionsData>(`/api/yt-proxy/${cluster}/internal-discover_versions`)\n .then(({data}) => {\n const summary = prepareSummary(data.summary);\n const details = prepareDetails(data.details);\n\n dispatch({\n type: DISCOVER_VERSIONS.SUCCESS,\n data: {summary, details},\n });\n return data;\n })\n .catch((error) => {\n dispatch({\n type: DISCOVER_VERSIONS.FAILURE,\n data: {error},\n });\n return Promise.reject(error);\n });\n };\n}\n\nexport function changeHostFilter(hostFilter: string): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {hostFilter},\n };\n}\n\nexport function changeVersionFilter(versionFilter: string): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {versionFilter},\n };\n}\n\nexport function changeTypeFilter(typeFilter: string): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {typeFilter},\n };\n}\n\nexport function changeStateFilter(stateFilter: string): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {stateFilter},\n };\n}\n\nexport function changeBannedFilter(bannedFilter: 'all' | boolean): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {bannedFilter: bannedFilter || false},\n };\n}\n\nfunction prepareGroup(group: VersionSummary, version: string) {\n const res = reduce_(\n group,\n (acc, value, type) => {\n const {total, banned, offline} = value;\n\n const k = type;\n acc[k] = total;\n acc.banned += banned;\n acc.offline += offline;\n acc.online += total - offline;\n\n return acc;\n },\n {banned: 0, offline: 0, online: 0, version} as VersionSummaryItem,\n );\n\n return {\n ...res,\n banned: res.banned || undefined,\n offline: res.offline || undefined,\n online: res.online || undefined,\n };\n}\n\nfunction prepareSummary({total, error, ...versions}: DiscoverVersionsData['summary']) {\n const preparedTotal = prepareGroup(total, 'total');\n const preparedError = error && prepareGroup(error, 'error');\n const preparedVersions = map_(versions, prepareGroup);\n\n return [...preparedVersions, preparedError, preparedTotal];\n}\n\nfunction prepareDetails(details: DiscoverVersionsData['details']) {\n return map_(details, (item) => {\n const calculatedState = item.offline ? 'offline' : 'online';\n item.state = item.state ? item.state : calculatedState;\n if (item.error) {\n item.state = 'error';\n }\n\n item.banned = Boolean(item.banned);\n return item;\n });\n}\n\nexport function changeVersionStateTypeFilters(data: {\n version?: string;\n state?: string;\n type?: string;\n banned?: boolean;\n}) {\n const {version, state, type, banned} = data;\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {\n stateFilter: state || 'all',\n versionFilter: version || 'all',\n typeFilter: type || 'all',\n bannedFilter: banned === undefined ? 'all' : banned,\n },\n };\n}\n\nexport function setVersionsSummarySortState(summarySortState: SortState) {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {summarySortState},\n };\n}\n\nexport function changeCheckedHideOffline(checkedHideOffline: boolean) {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {checkedHideOffline},\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport indexOf_ from 'lodash/indexOf';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\n\nimport './VersionCell.scss';\nimport {useDispatch} from '../../../../store/redux-hooks';\nimport {changeVersionStateTypeFilters} from '../../../../store/actions/components/versions/versions_v2';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport {uiSettings} from '../../../../config/ui-settings';\n\nconst block = cn('version-cell');\n\nconst {reHashFromNodeVersion} = uiSettings;\n\nfunction shortHash(version: string) {\n const tildaIndex = indexOf_(version, '~');\n if (-1 === tildaIndex) {\n return version;\n }\n\n return version.substr(0, tildaIndex + 1) + version.substr(tildaIndex + 1, 16);\n}\n\ninterface Props {\n version: string;\n onClick: (version: string) => void;\n}\n\nfunction VersionCell(props: Props) {\n const {version, onClick} = props;\n const visibleVersion = shortHash(version);\n\n const handleClick = React.useCallback(() => {\n onClick(version);\n }, [onClick, version]);\n\n const versionContent =\n visibleVersion?.length === version?.length ? (\n version\n ) : (\n <Tooltip content={version}>\n <span className={block('tooltip')}>{visibleVersion + '\\u2026'} </span>\n </Tooltip>\n );\n\n const hashPart = React.useMemo(() => {\n if (!version || !reHashFromNodeVersion) {\n return undefined;\n }\n\n try {\n const res = new RegExp(reHashFromNodeVersion).exec(version);\n return res?.groups?.hash;\n } catch (e) {\n return undefined;\n }\n }, [version]);\n\n return (\n <React.Fragment>\n <ClickableText className={block('text')} color={'primary'} onClick={handleClick}>\n {versionContent}\n </ClickableText>\n <ClipboardButton\n text={version}\n shiftText={hashPart}\n view=\"flat-secondary\"\n size=\"s\"\n hoverContent={\n <div>\n Copy version\n {Boolean(hashPart) && (\n <div>\n <Text color=\"secondary\">Hold SHIFT-key to copy hash</Text>\n </div>\n )}\n </div>\n }\n />\n </React.Fragment>\n );\n}\n\nexport function VersionCellWithAction(props: Omit<Props, 'onClick'>) {\n const {version} = props;\n const dispatch = useDispatch();\n\n const onClick = React.useCallback(() => {\n dispatch(changeVersionStateTypeFilters({version}));\n }, [version]);\n\n return <VersionCell version={version} onClick={onClick} />;\n}\n","import {COMPONENTS_VERSIONS_DETAILED_TABLE_ID} from '../../../../constants/components/versions/versions_v2';\nimport {\n changeHostFilter,\n changeTypeFilter,\n changeVersionFilter,\n} from '../../../../store/actions/components/versions/versions_v2';\nimport {getWindowStore} from '../../../../store/window-store';\nimport {showErrorPopup} from '../../../../utils/utils';\n\nexport const tableProps = {\n css: 'components-versions',\n theme: 'light',\n striped: false,\n cssHover: true,\n templates: {\n key: 'components/versions',\n data: {\n showError: showErrorPopup,\n handleItemClick(item, column) {\n switch (column) {\n case 'address':\n getWindowStore().dispatch(changeHostFilter(item));\n break;\n case 'version':\n getWindowStore().dispatch(changeVersionFilter([item]));\n break;\n case 'type':\n getWindowStore().dispatch(changeTypeFilter([item]));\n break;\n }\n },\n },\n },\n columns: {\n items: {\n address: {\n get(item) {\n return item.address.match(/[^/]+(?=:)/g)[0];\n },\n align: 'left',\n sort: true,\n caption: 'Host',\n },\n version: {\n get(item) {\n return item.version;\n },\n align: 'left',\n sort: true,\n caption: 'Version',\n },\n state: {\n get(item) {\n return item.state;\n },\n align: 'left',\n sort: true,\n caption: 'State',\n },\n banned: {\n get(item) {\n return item.banned;\n },\n align: 'center',\n sort: true,\n caption: 'B',\n tooltipProps: {placement: 'bottom', content: 'Banned'},\n },\n type: {\n get(item) {\n return item.type;\n },\n align: 'left',\n sort: true,\n caption: 'Type',\n },\n error: {\n get(item) {\n return item.error;\n },\n align: 'center',\n sort: true,\n caption: 'Error',\n },\n start_time: {\n get(item) {\n return item.start_time;\n },\n align: 'right',\n sort: true,\n caption: 'Start time',\n },\n },\n sets: {\n detailed: {\n items: ['address', 'version', 'state', 'banned', 'type', 'error', 'start_time'],\n },\n },\n },\n};\n\nexport const detailsTableProps = {\n ...tableProps,\n tableId: COMPONENTS_VERSIONS_DETAILED_TABLE_ID,\n columns: {\n ...tableProps.columns,\n mode: 'detailed',\n },\n};\n","import filter_ from 'lodash/filter';\nimport isEmpty_ from 'lodash/isEmpty';\nimport reduce_ from 'lodash/reduce';\nimport sumBy_ from 'lodash/sumBy';\n\nimport hammer from '../../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {detailsTableProps} from '../../../../pages/components/tabs/Versions/tables_v2';\n\nimport {COMPONENTS_VERSIONS_DETAILED_TABLE_ID} from '../../../../constants/components/versions/versions_v2';\nimport {RootState} from '../../../../store/reducers';\nimport {VersionHostInfo} from '../../../../store/reducers/components/versions/versions_v2';\n\nconst aggregateItems = (proxies: Array<VersionHostInfo>, key: keyof VersionHostInfo) => {\n const items = reduce_(\n proxies,\n (acc, item) => {\n const value = item[key];\n if (!acc.has(value)) {\n acc.set(value, 1);\n } else {\n const count = acc.get(value);\n acc.set(value, count + 1);\n }\n return acc;\n },\n new Map(),\n );\n\n return [...items.entries()].map(([item, count]) => {\n return {\n text: hammer.format['ReadableField'](String(item)),\n value: item,\n count,\n };\n });\n};\n\nfunction getSelectItems(\n allItems: ReturnType<typeof aggregateItems>,\n visibleItems: ReturnType<typeof aggregateItems>,\n hostFilter: string,\n otherFilters: Partial<ReturnType<typeof getFilters>>,\n) {\n const isAllSelected = isEmpty_(otherFilters);\n\n let items = allItems;\n\n if (hostFilter !== '' || !isAllSelected) {\n items = visibleItems;\n }\n\n const allItemsSection = {\n text: 'All',\n value: 'all',\n count: sumBy_(items, (item) => item.count),\n };\n\n return [allItemsSection, ...items];\n}\n\nconst getDetails = (state: RootState) => state.components.versionsV2.details;\n\nconst getHostFilter = (state: RootState) => state.components.versionsV2.hostFilter;\nconst getVersionFilter = (state: RootState) => state.components.versionsV2.versionFilter;\nconst getTypeFilter = (state: RootState) => state.components.versionsV2.typeFilter;\nconst getStateFilter = (state: RootState) => state.components.versionsV2.stateFilter;\nconst getBannedFilter = (state: RootState) => state.components.versionsV2.bannedFilter;\n\nconst getDetailsSortState = (state: RootState) =>\n state.tables[COMPONENTS_VERSIONS_DETAILED_TABLE_ID];\n\nconst getFilteredByHost = createSelector([getDetails, getHostFilter], (details, hostFilter) => {\n if (!hostFilter) {\n return details;\n }\n return filter_(details, ({address}) => address?.toLowerCase().includes(hostFilter));\n});\n\nconst getFilters = createSelector(\n [getVersionFilter, getTypeFilter, getStateFilter, getBannedFilter],\n (version, type, state, banned) => {\n return reduce_(\n {\n version,\n type,\n state,\n banned,\n },\n (acc, value, k) => {\n if (value !== 'all') {\n const key = k as keyof typeof acc;\n acc[key] = value as any;\n }\n return acc;\n },\n {} as Partial<{\n version: typeof version;\n type: typeof version;\n state: typeof state;\n banned: typeof banned;\n }>,\n );\n },\n);\n\nconst getFiltersSkipVersion = createSelector([getFilters], (filters) => {\n const {version: _x, ...rest} = filters;\n return rest;\n});\n\nconst getFiltersSkipType = createSelector([getFilters], (filters) => {\n const {type: _x, ...rest} = filters;\n return rest;\n});\n\nconst getFiltersSkipState = createSelector([getFilters], (filters) => {\n const {state: _x, ...rest} = filters;\n return rest;\n});\n\nconst getFiltersSkipBanned = createSelector([getFilters], (filters) => {\n const {banned: _x, ...rest} = filters;\n return rest;\n});\n\nconst getFilteredDetails = createSelector([getFilteredByHost, getFilters], (data, filters) => {\n return filter_(data, filters) as Array<VersionHostInfo>;\n});\n\nexport const getVisibleDetails = createSelector(\n [getFilteredDetails, getDetailsSortState],\n (details, sortState): typeof details =>\n hammer.utils.sort(details, sortState, detailsTableProps.columns.items),\n);\n\nconst getAllVersions = createSelector([getDetails], (versions) =>\n aggregateItems(versions, 'version'),\n);\nconst getAllTypes = createSelector([getDetails], (versions) => aggregateItems(versions, 'type'));\nconst getAllStates = createSelector([getDetails], (versions) => aggregateItems(versions, 'state'));\n\nconst getAllBanned = createSelector([getDetails], (version) => aggregateItems(version, 'banned'));\n\nconst getVisibleVersions = createSelector(\n [getFilteredByHost, getFiltersSkipVersion],\n (data, filters) => {\n const items = filter_(data, filters) as Array<VersionHostInfo>;\n return aggregateItems(items, 'version');\n },\n);\nconst getVisibleTypes = createSelector([getFilteredByHost, getFiltersSkipType], (data, filters) => {\n const items = filter_(data, filters) as Array<VersionHostInfo>;\n return aggregateItems(items, 'type');\n});\nconst getVisibleStates = createSelector(\n [getFilteredByHost, getFiltersSkipState],\n (data, filters) => {\n const items = filter_(data, filters) as Array<VersionHostInfo>;\n return aggregateItems(items, 'state');\n },\n);\n\nconst getVisibleBanned = createSelector(\n [getFilteredByHost, getFiltersSkipBanned],\n (data, filters) => {\n const items = filter_(data, filters) as Array<VersionHostInfo>;\n return aggregateItems(items, 'banned');\n },\n);\n\nexport const getVersionSelectItems = createSelector(\n [getAllVersions, getVisibleVersions, getHostFilter, getFiltersSkipVersion],\n getSelectItems,\n);\nexport const getTypeSelectItems = createSelector(\n [getAllTypes, getVisibleTypes, getHostFilter, getFiltersSkipType],\n getSelectItems,\n);\nexport const getStatesSelectItems = createSelector(\n [getAllStates, getVisibleStates, getHostFilter, getFiltersSkipState],\n getSelectItems,\n);\n\nexport const getBannedSelectItems = createSelector(\n [getAllBanned, getVisibleBanned, getHostFilter, getFiltersSkipBanned],\n getSelectItems,\n);\n","import {createSelector} from 'reselect';\nimport {RootState} from '../../../../store/reducers';\nimport {FIX_MY_TYPE, SortState} from '../../../../types';\nimport {sortArrayBySortState} from '../../../../utils/sort-helpers';\nimport {\n VersionSummaryItem,\n VersionSummaryRow,\n} from '../../../../store/reducers/components/versions/versions_v2';\n\nexport const getSummarySortState = (\n state: RootState,\n): undefined | SortState<keyof VersionSummaryItem> =>\n (state.components.versionsV2 as FIX_MY_TYPE).summarySortState;\n\nconst getSummary = (state: RootState): Array<VersionSummaryItem> =>\n state.components.versionsV2.summary;\n\nexport const getHideOfflineValue = (state: RootState): boolean =>\n state.components.versionsV2.checkedHideOffline;\n\nfunction getTotalElementOfSummary(summary: ReturnType<typeof getSummary>) {\n return summary[summary.length - 1];\n}\n\nexport const getVisibleSummaryItems = createSelector(\n [getSummary, getHideOfflineValue],\n (summary = [], checkedHideOffline) => {\n let items = summary;\n if (checkedHideOffline) {\n items = items.filter((item) => item && item.online !== undefined);\n }\n return items;\n },\n);\n\nexport const getVersions = createSelector([getVisibleSummaryItems], (summary = []) => {\n const versions = [];\n for (const item of summary) {\n if (item) {\n versions.push({\n type: item.version,\n name: item.version,\n });\n }\n }\n return versions;\n});\n\nexport const getVersionsSummaryData = createSelector(\n [getSummary, getSummarySortState, getHideOfflineValue],\n (summary = [], sortState, checkedHideOffline) => {\n const error = summary[summary.length - 2];\n const total = getTotalElementOfSummary(summary);\n let items = summary.slice(0, summary.length - 2);\n\n if (checkedHideOffline) {\n items = items.filter((item) => item.online !== undefined);\n }\n\n items = sortArrayBySortState(items, sortState);\n\n if (error) {\n items.splice(0, 0, error);\n }\n if (total) {\n items.push(total);\n }\n\n const components = new Set<string>();\n for (const item of items) {\n for (const key in item) {\n if (key) components.add(key);\n }\n }\n\n const res: VersionSummaryRow[] = [];\n // iterating over every type of components\n for (const component of Array.from(components)) {\n if (component === 'version') continue;\n // initializing table row object to avoid type errors\n const row: VersionSummaryRow = {type: component, total: 0};\n // iterating over array of objects with attribute 'version'\n for (const item of items) {\n // apply version of component to the some type in resulting object\n // type item['version']: item[component] -> amount of components\n // example: res = {banned: {'2.12.123.1': 3, ...}}\n row[item['version']] = item[component];\n }\n // attribute 'type' will be the name of the row\n row['type'] = component;\n res.push(row);\n }\n\n return res;\n },\n);\n","import React, {CSSProperties} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Button, Checkbox, Flex, Select} from '@gravity-ui/uikit';\n\nimport {RootState} from '../../../../store/reducers';\nimport DataTableYT from '../../../../components/DataTableYT/DataTableYT';\nimport * as DT100 from '@gravity-ui/react-data-table';\nimport DataTable from '@gravity-ui/react-data-table';\nimport {\n getHideOfflineValue,\n getSummarySortState,\n getVersions,\n getVersionsSummaryData,\n} from '../../../../store/selectors/components/versions/versions_v2-ts';\n\nimport hammer from '../../../../common/hammer';\n\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\nimport ColumnHeader from '../../../../components/ColumnHeader/ColumnHeader';\nimport {\n changeCheckedHideOffline,\n changeVersionStateTypeFilters,\n setVersionsSummarySortState,\n} from '../../../../store/actions/components/versions/versions_v2';\nimport {VersionSummaryRow} from '../../../../store/reducers/components/versions/versions_v2';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {formatByParams} from '../../../../../shared/utils/format';\nimport UIFactory from '../../../../UIFactory';\n\nimport './VersionSummary.scss';\n\nconst block = cn('versions-summary');\n\ntype Props = ConnectedProps<typeof connector>;\n\ntype State = Readonly<{\n showAll: boolean;\n currentVersions: string[];\n sortOrder?: DT100.SortOrder | DT100.SortOrder[];\n}>;\n\ntype RenderData = {row: VersionSummaryRow; index: number};\n\nconst SETTINGS: DT100.Settings = {\n displayIndices: false,\n};\n\nconst DEFAULT_VERSIONS = ['error', 'total'];\nconst BASE_COMPONENTS = ['online', 'offline', 'banned'];\n\nfunction isSpecialRow(version: string) {\n return DEFAULT_VERSIONS.includes(version);\n}\n\nclass VersionsSummary extends React.Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n showAll: true,\n currentVersions: [],\n };\n }\n\n componentDidUpdate(prevProps: Props, prevState: State) {\n const {currentVersions, showAll} = this.state;\n const {visibleColumns, checkedHideOffline} = this.props;\n\n const visibleColumnsNames = visibleColumns.map((col) => col.name);\n const onlineVersions = prevState.currentVersions.filter((version) =>\n visibleColumnsNames.includes(version),\n );\n\n if (!currentVersions.length && visibleColumns.length && showAll) {\n this.setState((state) => ({...state, currentVersions: visibleColumnsNames}));\n }\n\n const hideOfflineUpdated = prevProps.checkedHideOffline !== checkedHideOffline;\n if (hideOfflineUpdated && checkedHideOffline) {\n this.setState((state) => ({...state, currentVersions: onlineVersions}));\n }\n // if user unchecked checkbox while all columns was selected\n if (hideOfflineUpdated && !checkedHideOffline && showAll) {\n this.setState((state) => ({...state, currentVersions: visibleColumnsNames}));\n }\n }\n\n renderType = (data: RenderData) => {\n const type = data.row.type;\n const content = hammer.format['Readable'](type);\n\n return <span className={block('value')}>{content}</span>;\n };\n\n renderNumber = (key: string, rowData: RenderData) => {\n const {row} = rowData;\n const value = row[key];\n const content = !value ? hammer.format.NO_VALUE : hammer.format['Number'](value);\n const onClick = !value\n ? undefined\n : () => {\n this.onClick(key, rowData);\n };\n return (\n <span\n className={block('value', {clickable: Boolean(onClick)})}\n onClick={onClick}\n title={onClick ? 'Click to set corresponding filter values' : undefined}\n data-qa=\"component-amount\"\n >\n {content}\n </span>\n );\n };\n\n makeColumnInfo({type, name}: {type: string; name: string}) {\n return {\n name: name,\n title: name,\n sortable: false,\n render: this.renderNumber.bind(this, type),\n align: 'right' as const,\n header: this.renderHeader(type, name),\n };\n }\n\n renderHeader(key: string, name: string) {\n const {sortState} = this.props;\n const {column, order} = sortState || {};\n\n return (\n <ColumnHeader<string>\n column={name}\n title={name}\n shortTitle={name.split('-')[0]}\n onSort={this.handleOnSort}\n order={key === column ? order : ''}\n sortIconSize={14}\n />\n );\n }\n\n renderSelectFilter = () => {\n return (\n <Flex direction=\"row\">\n <Button view=\"flat\" className={block('filter-button')} onClick={this.handleShowAll}>\n Show all\n </Button>\n <Button view=\"flat\" className={block('filter-button')} onClick={this.handleReset}>\n Reset\n </Button>\n </Flex>\n );\n };\n\n handleOnSort = (column: string, order: string) => {\n const {setVersionsSummarySortState} = this.props;\n const {currentVersions, sortOrder} = this.state;\n // unordered case\n if (sortOrder && !Array.isArray(sortOrder) && sortOrder.order === DataTable.DESCENDING) {\n this.setState((state) => ({...state, sortOrder: [], currentVersions: currentVersions}));\n setVersionsSummarySortState({});\n } else if (order === 'asc') {\n this.setState((state) => ({\n ...state,\n sortOrder: {columnId: column, order: DataTable.ASCENDING},\n }));\n setVersionsSummarySortState({column, order});\n } else if (order === 'desc') {\n this.setState((state) => ({\n ...state,\n sortOrder: {columnId: column, order: DataTable.DESCENDING},\n }));\n setVersionsSummarySortState({column, order});\n }\n };\n\n handleShowAll = () => {\n const {visibleColumns} = this.props;\n const visibleColumnsNames = visibleColumns.map((col) => col.name);\n this.setState((state) => ({...state, showAll: true, currentVersions: visibleColumnsNames}));\n };\n\n handleReset = () => {\n this.setState((state) => ({...state, showAll: false, currentVersions: DEFAULT_VERSIONS}));\n };\n\n handleHideOffline = (value: boolean) => {\n const {changeCheckedHideOffline} = this.props;\n changeCheckedHideOffline(value);\n };\n\n handleSelectUpdate = (value: string[]) => {\n // move default versions to the end\n const prepareValue = (value: string[]) => {\n return value\n .filter((item) => !DEFAULT_VERSIONS.includes(item))\n .concat(DEFAULT_VERSIONS);\n };\n this.setState((state) => ({\n ...state,\n showAll: false,\n currentVersions: prepareValue(value),\n }));\n };\n\n prepareSelectOptions = () => {\n const {visibleColumns} = this.props;\n const res = [];\n if (visibleColumns) {\n for (const column of visibleColumns) {\n if (DEFAULT_VERSIONS.includes(column.type)) continue;\n res.push({value: column.type, content: column.type});\n }\n }\n return res;\n };\n\n /*\n * If the user has not applied any sorting\n * for the first column -> sort the types\n * and append the base components to the end.\n */\n prepareItems = (data: VersionSummaryRow[]) => {\n const {sortOrder} = this.state;\n if (!sortOrder) {\n let newData: VersionSummaryRow[] = [];\n if (!sortOrder && data && data.length) {\n newData = [...data]\n .filter((item) => !BASE_COMPONENTS.includes(item.type))\n .sort((item1, item2) => item1.type.localeCompare(item2.type));\n\n BASE_COMPONENTS.forEach((type) => {\n const item = data.find((item) => item.type === type);\n if (item) newData.push(item);\n });\n }\n return newData;\n }\n // default components order from backennd -> banned, offline, online, ...\n // we need -> ..., online, offline, banned\n return data.reverse();\n };\n\n render() {\n const {currentVersions, sortOrder} = this.state;\n const {items, loading, loaded, cluster, checkedHideOffline} = this.props;\n const monitoringLink = UIFactory.getVersionMonitoringLink(cluster);\n\n const columns = [\n {\n name: 'type',\n render: this.renderType,\n sortable: false,\n header: this.renderHeader('type', 'Components'),\n customStyle: () =>\n ({\n position: 'sticky',\n left: 0,\n backgroundColor: 'var(--g-color-base-background)',\n zIndex: 1,\n boxShadow: 'inset -1px 0 var(--dark-divider)',\n width: 'fit-content',\n }) as CSSProperties,\n },\n ...currentVersions.map((column) => this.makeColumnInfo({type: column, name: column})),\n ];\n\n return (\n <div className={block()}>\n <div className={block('header-actions')}>\n <Checkbox\n title={'Hide offline'}\n content={'Hide offline'}\n defaultChecked={checkedHideOffline}\n onUpdate={this.handleHideOffline}\n />\n <Select\n className={block('versions-select')}\n options={this.prepareSelectOptions()}\n onUpdate={this.handleSelectUpdate}\n filterable\n // filter out default versions to prevent them from appearing in Select\n value={currentVersions.filter(\n (version) => !DEFAULT_VERSIONS.includes(version),\n )}\n renderFilter={this.renderSelectFilter}\n placeholder=\"Versions\"\n multiple\n />\n {monitoringLink && (\n <Link\n url={formatByParams(monitoringLink.urlTemplate, {ytCluster: cluster})}\n target=\"_blank\"\n className={block('monitoring-link')}\n >\n {monitoringLink.title || 'Monitoring'}{' '}\n <Icon awesome=\"external-link\" size={14} />\n </Link>\n )}\n </div>\n <DataTableYT\n className={block('table')}\n loaded={loaded}\n loading={loading}\n data={this.prepareItems(items)}\n columns={columns}\n theme={'versions'}\n settings={SETTINGS}\n sortOrder={sortOrder}\n />\n </div>\n );\n }\n\n onClick = (key: string, data: RenderData) => {\n const {changeVersionStateTypeFilters} = this.props;\n const {row} = data;\n const isSpecial = isSpecialRow(key);\n const version = !isSpecial ? key : undefined;\n const type: string | undefined = row.type;\n\n const state = key === 'error' ? 'error' : undefined;\n\n if (type === 'online' || type === 'offline') {\n changeVersionStateTypeFilters({version, state: state || type});\n } else if (type === 'banned') {\n changeVersionStateTypeFilters({version, banned: true});\n } else {\n changeVersionStateTypeFilters({version, type, state});\n }\n };\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {loading, loaded} = state.components.versionsV2;\n const cluster = getCluster(state);\n\n const sortState = getSummarySortState(state);\n\n const visibleColumns = getVersions(state);\n const items = getVersionsSummaryData(state);\n\n return {\n loading: loading as boolean,\n loaded: loaded as boolean,\n cluster,\n items,\n sortState,\n checkedHideOffline: getHideOfflineValue(state),\n visibleColumns,\n };\n};\n\nconst mapDispatchToProps = {\n changeVersionStateTypeFilters,\n setVersionsSummarySortState,\n changeCheckedHideOffline,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(VersionsSummary);\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport {useDispatch} from '../../../../store/redux-hooks';\n\nimport cn from 'bem-cn-lite';\n\nimport CollapsibleSection from '../../../../components/CollapsibleSection/CollapsibleSection';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport TableInfo from '../../../../pages/components/TableInfo/TableInfo';\nimport Filter from '../../../../components/Filter/Filter';\nimport Select from '../../../../components/Select/Select';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\n\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport format from '../../../../common/hammer/format';\n\nimport {VersionCellWithAction} from '../../../../pages/components/tabs/Versions/VersionCell';\n\nimport {\n getBannedSelectItems,\n getStatesSelectItems,\n getTypeSelectItems,\n getVersionSelectItems,\n getVisibleDetails,\n} from '../../../../store/selectors/components/versions/versions_v2';\nimport {\n changeBannedFilter,\n changeHostFilter,\n changeStateFilter,\n changeTypeFilter,\n changeVersionFilter,\n getVersions,\n} from '../../../../store/actions/components/versions/versions_v2';\nimport {DEBOUNCE_TIME} from '../../../../constants/components/versions/versions_v2';\nimport {useUpdater} from '../../../../hooks/use-updater';\nimport VersionsSummary from './VersionSummary';\nimport {RootState} from '../../../../store/reducers';\n\nimport templates, {ColumnAsTime, printColumnAsError} from '../../../../components/templates/utils';\nimport {VersionHostInfo} from '../../../../store/reducers/components/versions/versions_v2';\nimport {ClickableId, NodeColumnBanned, NodeColumnState} from '../NodeColumns';\nimport {Host} from '../../../../containers/Host/Host';\n\nimport {detailsTableProps} from './tables_v2';\n\nimport './Versions.scss';\nimport {UI_COLLAPSIBLE_SIZE} from '../../../../constants/global';\n\nconst b = cn('components-versions');\n\nfunction VersionsV2Updater() {\n const dispatch = useDispatch();\n\n const updateFn = React.useCallback(() => {\n dispatch(getVersions());\n }, [dispatch]);\n\n useUpdater(updateFn);\n\n return null;\n}\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\nclass VersionsV2 extends React.Component<ReduxProps> {\n renderFilters() {\n const {\n hostFilter,\n changeHostFilter,\n versionFilter,\n versionSelectItems,\n changeVersionFilter,\n typeFilter,\n typeSelectItems,\n changeTypeFilter,\n stateFilter,\n stateSelectItems,\n changeStateFilter,\n bannedFilter,\n } = this.props;\n\n return (\n <div className={b('filters')}>\n <div className={b('filter', {address: true})}>\n <Filter\n hasClear\n autofocus={false}\n size=\"m\"\n type=\"text\"\n key={hostFilter}\n value={hostFilter}\n debounce={DEBOUNCE_TIME}\n onChange={changeHostFilter}\n placeholder=\"Filter host...\"\n />\n </div>\n\n <div className={b('filter', {version: true})}>\n <Select\n value={[versionFilter]}\n items={versionSelectItems}\n onUpdate={(vals) => changeVersionFilter(vals[0])}\n label=\"Version:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={b('filter', {type: true})}>\n <Select\n value={[typeFilter]}\n items={typeSelectItems}\n onUpdate={(vals) => changeTypeFilter(vals[0])}\n label=\"Type:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={b('filter', {state: true})}>\n <Select\n value={[stateFilter]}\n items={stateSelectItems}\n onUpdate={(vals) => changeStateFilter(vals[0])}\n label=\"State:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={b('filter', {banned: true})}>\n <Select\n value={[String(bannedFilter)]}\n items={this.getBannedItems()}\n onUpdate={(vals) => this.onBannedChange(vals[0])}\n label=\"Banned:\"\n width=\"max\"\n hideFilter\n />\n </div>\n </div>\n );\n }\n\n getBannedItems() {\n const {bannedSelectItems} = this.props;\n return bannedSelectItems.map(({value, ...rest}) => {\n return {\n value: String(value),\n ...rest,\n };\n });\n }\n\n onBannedChange = (value: string) => {\n const {changeBannedFilter} = this.props;\n const v =\n {\n false: false,\n true: true,\n all: 'all' as const,\n }[value] ?? 'all';\n changeBannedFilter(v);\n };\n\n renderToolbar() {\n const {showingItems, totalItems} = this.props;\n\n return (\n <Toolbar\n itemsToWrap={[\n {node: this.renderFilters(), growable: true},\n {node: <TableInfo showingItems={showingItems} totalItems={totalItems} />},\n ]}\n />\n );\n }\n\n getDetailsTemplates() {\n const {changeVersionFilter, changeHostFilter, changeTypeFilter} = this.props;\n\n const res: Record<string, (item: VersionHostInfo) => React.ReactNode> = {\n start_time: (item) => <ColumnAsTime value={item.start_time} />,\n type: (item) => (\n <ClickableId\n text={item.type}\n onClick={() => changeTypeFilter(item.type)}\n format={format.ReadableField}\n />\n ),\n error: (item) => printColumnAsError(item.error),\n address: (item) => {\n return (\n <Host\n address={item.address}\n onClick={() => changeHostFilter(item.address)}\n useText\n />\n );\n },\n state: (item) => <NodeColumnState state={item.state} />,\n banned: (item) => <NodeColumnBanned banned={item.banned} />,\n decommissioned: templates.get('components').decommissioned,\n full: templates.get('components').full,\n alerts: templates.get('components').alerts,\n version(item) {\n const version = item.version;\n const versionIsError = version === 'error';\n const versionIsTotal = version === 'total';\n const handleClick = () => changeVersionFilter(version);\n\n if (versionIsError || versionIsTotal) {\n return (\n <ClickableText\n color=\"primary\"\n onClick={handleClick}\n className={cn('elements-table')(\n `cell_type`,\n {version: version === 'error' ? 'error' : undefined},\n 'elements-monospace elements-ellipsis',\n )}\n >\n {versionIsError && <Icon awesome=\"exclamation-triangle\" />}\n {format.FirstUppercase(version)}\n </ClickableText>\n );\n } else {\n return <VersionCellWithAction version={version} />;\n }\n },\n };\n return res;\n }\n\n render() {\n const {details, loading, loaded} = this.props;\n const initialLoading = loading && !loaded;\n\n const {error, ...rest} = this.props;\n\n return (\n <ErrorBoundary>\n <VersionsV2Updater />\n <LoadDataHandler {...rest} error={Boolean(error)} errorData={error}>\n <div className={b()}>\n <CollapsibleSection\n name=\"Summary\"\n className={b('summary')}\n collapsed={false}\n size={UI_COLLAPSIBLE_SIZE}\n onToggle={() => {\n setTimeout(() => window.dispatchEvent(new Event('resize')), 300);\n }}\n >\n <VersionsSummary />\n </CollapsibleSection>\n\n <CollapsibleSection\n name=\"Details\"\n className={b('details')}\n collapsed={false}\n size={UI_COLLAPSIBLE_SIZE}\n >\n <WithStickyToolbar\n topMargin=\"none\"\n toolbar={this.renderToolbar()}\n content={\n <ElementsTable\n {...detailsTableProps}\n isLoading={initialLoading}\n items={details}\n templates={this.getDetailsTemplates()}\n />\n }\n />\n </CollapsibleSection>\n </div>\n </LoadDataHandler>\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {\n loading,\n loaded,\n error,\n hostFilter,\n versionFilter,\n typeFilter,\n stateFilter,\n bannedFilter,\n details: allDetails,\n } = state.components.versionsV2;\n\n const details = getVisibleDetails(state);\n const versionSelectItems = getVersionSelectItems(state);\n const typeSelectItems = getTypeSelectItems(state);\n const stateSelectItems = getStatesSelectItems(state);\n const bannedSelectItems = getBannedSelectItems(state);\n\n const showingItems = details.length;\n const totalItems = allDetails.length;\n\n return {\n loading,\n loaded,\n error,\n details,\n showingItems,\n totalItems,\n hostFilter,\n versionFilter,\n typeFilter,\n stateFilter,\n bannedFilter,\n versionSelectItems,\n typeSelectItems,\n stateSelectItems,\n bannedSelectItems,\n };\n};\n\nconst mapDispatchToProps = {\n changeHostFilter,\n changeVersionFilter,\n changeTypeFilter,\n changeStateFilter,\n changeBannedFilter,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(VersionsV2);\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport ClickableAttributesButton from '../../../../../components/AttributesButton/ClickableAttributesButton';\nimport Button from '../../../../../components/Button/Button';\nimport Icon from '../../../../../components/Icon/Icon';\n\nimport {PROXY_TYPE} from '../../../../../constants/components/proxies/proxies';\nimport {showNodeMaintenance} from '../../../../../store/actions/components/node-maintenance-modal';\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\ntype Props = {\n type: 'http_proxy' | 'rpc_proxy';\n proxy: {host: string; banned: boolean};\n};\n\nclass ProxyActions extends React.Component<ReduxProps & Props> {\n get tooltipProps() {\n const {proxy} = this.props;\n\n return {\n placement: 'bottom',\n content: proxy.banned ? 'Unban proxy' : 'Ban proxy',\n };\n }\n\n get basePath() {\n const {type} = this.props;\n\n return type === PROXY_TYPE.HTTP ? '//sys/http_proxies' : '//sys/rpc_proxies';\n }\n\n handleEditClick = () => {\n const {proxy, type} = this.props;\n this.props.showNodeMaintenance({\n address: proxy.host,\n component: type === PROXY_TYPE.HTTP ? 'http_proxy' : 'rpc_proxy',\n });\n };\n\n render() {\n const {proxy} = this.props;\n\n return (\n <React.Fragment>\n <ClickableAttributesButton\n title={proxy.host}\n path={`${this.basePath}/${proxy.host}`}\n withTooltip\n />\n <Button onClick={this.handleEditClick} view=\"flat-secondary\" size=\"m\" withTooltip>\n <Icon face=\"regular\" awesome=\"pencil\" />\n </Button>\n </React.Fragment>\n );\n }\n}\n\nconst mapDispatchToProps = {\n showNodeMaintenance,\n};\n\nconst connector = connect(null, mapDispatchToProps);\n\nexport default connector(ProxyActions);\n","import React from 'react';\n\nimport format from '../../common/hammer/format';\nimport {MaintenanceRequestInfo} from '../../store/actions/components/node-maintenance-modal';\nimport {SubjectCard} from '../../components/SubjectLink/SubjectLink';\nimport {Bold, WarningLight} from '../../components/Text/Text';\nimport Label from '../../components/Label/Label';\n\nexport type MaintenanceRequestsProps = {\n requests?: Record<string, MaintenanceRequestInfo>;\n};\n\nfunction MaintenanceRequestsImpl({requests = {}}: MaintenanceRequestsProps) {\n return Object.keys(requests).map((key) => {\n const {type, user, comment} = requests[key];\n return (\n <div key={key}>\n <Bold>\n <Label theme=\"danger\" type=\"text\" text={format.ReadableField(type)} />\n </Bold>\n {' by '}\n <Bold>\n <SubjectCard type=\"user\" name={user} />\n {': '}\n <WarningLight>{comment}</WarningLight>\n </Bold>\n </div>\n );\n });\n}\n\nexport const MaintenanceRequests = React.memo(MaintenanceRequestsImpl);\n","import React, {Component} from 'react';\nimport {useSelector} from '../../../../../store/redux-hooks';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport isEmpty_ from 'lodash/isEmpty';\n\nimport {ClusterConfig} from '../../../../../../shared/yt-types';\n\nimport hammer from '../../../../../common/hammer';\n\nimport {SPLIT_TYPE} from '../../../../../constants/components/proxies/proxies';\n\nimport {MaintenanceRequests} from '../../../../../components/MaintenanceRequests/MaintenanceRequests';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport Button from '../../../../../components/Button/Button';\nimport Label from '../../../../../components/Label/Label';\nimport Icon from '../../../../../components/Icon/Icon';\n\nimport {getCluster, getCurrentClusterConfig} from '../../../../../store/selectors/global';\nimport {MaintenanceRequestInfo} from '../../../../../store/actions/components/node-maintenance-modal';\nimport {useSidePanel} from '../../../../../hooks/use-side-panel';\n\nimport './ProxyCard.scss';\nimport UIFactory from '../../../../../UIFactory';\nimport {NodeColumnRole, NodeColumnState} from '../../NodeColumns';\n\ntype ProxyProps = {\n banMessage: string;\n effectiveState: string;\n role: 'data' | 'default' | 'control';\n state: string;\n host: string;\n name: string;\n physicalHost: string;\n banned: boolean;\n version: string;\n maintenanceRequests: Record<string, MaintenanceRequestInfo>;\n\n updatedAt?: string;\n loadAverage?: number;\n networkLoad?: number;\n};\n\ntype ProxyCardProps = {\n proxy: ProxyProps;\n handleClose: () => void;\n isYpCluster: boolean;\n cluster: string;\n clusterConfig: ClusterConfig;\n};\n\nconst block = cn('proxy-card');\n\nexport class ProxyCard extends Component<ProxyCardProps> {\n static proxyProps = PropTypes.shape({\n banMessage: PropTypes.string.isRequired,\n effectiveState: PropTypes.string.isRequired,\n role: PropTypes.string.isRequired,\n state: PropTypes.string.isRequired,\n host: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n physicalHost: PropTypes.string,\n banned: PropTypes.bool.isRequired,\n\n updatedAt: PropTypes.string,\n loadAverage: PropTypes.number,\n networkLoad: PropTypes.number,\n });\n\n static propTypes = {\n // from parent\n proxy: ProxyCard.proxyProps.isRequired,\n handleClose: PropTypes.func.isRequired,\n\n isYpCluster: PropTypes.bool.isRequired,\n };\n\n componentWillUnmount() {\n this.props.handleClose();\n }\n\n renderTop() {\n const {clusterConfig} = this.props;\n const {host, physicalHost} = this.props.proxy;\n return UIFactory.renderComponentsNodeCardTop({host, physicalHost, clusterConfig});\n }\n\n renderContent() {\n const {\n state,\n banned,\n banMessage,\n role,\n loadAverage,\n networkLoad,\n version,\n updatedAt,\n maintenanceRequests,\n } = this.props.proxy;\n\n return (\n <MetaTable\n items={[\n {\n key: 'state',\n value: <NodeColumnState state={state} />,\n },\n {\n key: 'role',\n value: <NodeColumnRole role={role} />,\n },\n {\n key: 'Banned',\n value: (\n <Label\n text={banMessage || 'True'}\n theme={banMessage ? 'warning' : 'danger'}\n type=\"text\"\n />\n ),\n visible: Boolean(banned),\n },\n {\n key: 'Maintenance',\n value: <MaintenanceRequests requests={maintenanceRequests} />,\n visible: !isEmpty_(maintenanceRequests),\n },\n {\n key: 'version',\n value: version,\n },\n {\n key: 'load average',\n value: loadAverage,\n visible: Boolean(loadAverage),\n },\n {\n key: 'network load',\n value: networkLoad,\n visible: Boolean(networkLoad),\n },\n {\n key: 'updated at',\n value: hammer.format['DateTime'](updatedAt),\n visible: Boolean(updatedAt),\n },\n ]}\n />\n );\n }\n\n render() {\n const {proxy, handleClose} = this.props;\n\n return (\n proxy && (\n <div className={block()}>\n <div className={block('header')}>\n <h3 className={block('proxy')}>{proxy.host}</h3>\n\n <Button view=\"flat-secondary\" size=\"m\" onClick={handleClose}>\n <Icon awesome=\"times\" face={'light'} />\n </Button>\n </div>\n\n {this.renderTop()}\n {this.renderContent()}\n </div>\n )\n );\n }\n}\n\nexport default function ProxyCardConnected(\n props: Omit<ProxyCardProps, 'handleClose' | 'cluster' | 'clusterConfig'>,\n) {\n const cluster = useSelector(getCluster);\n const clusterConfig = useSelector(getCurrentClusterConfig);\n\n const {openWidget, closeWidget, widgetContent} = useSidePanel(SPLIT_TYPE, {\n renderContent: ({onClose}) => (\n <ProxyCard {...props} {...{cluster, clusterConfig}} handleClose={onClose} />\n ),\n });\n\n React.useEffect(() => {\n openWidget();\n return () => closeWidget();\n }, [openWidget, closeWidget]);\n\n return widgetContent;\n}\n","export const proxiesTableColumnItems = {\n host: {\n get(proxy) {\n return proxy.host;\n },\n sort: true,\n align: 'left',\n },\n state: {\n get(proxy) {\n return proxy.state;\n },\n sort: true,\n align: 'center',\n },\n role: {\n get(proxy) {\n return proxy.role;\n },\n sort: true,\n align: 'left',\n },\n version: {\n get(proxy) {\n return proxy.version;\n },\n sort: true,\n align: 'left',\n },\n banned: {\n get(proxy) {\n return Boolean(proxy.banned);\n },\n sort: true,\n caption: 'B',\n align: 'center',\n tooltipProps: {placement: 'bottom', content: 'Banned'},\n },\n load_average: {\n get(proxy) {\n return proxy.loadAverage;\n },\n sort: true,\n align: 'right',\n },\n updated_at: {\n get(proxy) {\n return proxy.updatedAt;\n },\n sort: true,\n align: 'right',\n },\n network_load: {\n get(proxy) {\n return proxy.networkLoad;\n },\n sort: true,\n align: 'right',\n },\n actions: {\n get(proxy) {\n return proxy.host;\n },\n sort: false,\n caption: '',\n align: 'right',\n },\n};\n","import compact_ from 'lodash/compact';\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport sumBy_ from 'lodash/sumBy';\n\nimport hammer from '../../../../common/hammer';\nimport {concatByAnd} from '../../../../common/hammer/predicate';\nimport {createSelector} from 'reselect';\nimport {proxiesTableColumnItems} from '../../../../utils/components/proxies/table';\nimport {COMPONENTS_PROXIES_TABLE_ID} from '../../../../constants/components/proxies/proxies';\n\nconst aggregateItems = (proxies, key) => {\n const items = hammer.aggregation.countValues(proxies, key);\n\n return map_(items, (count, item) => ({\n text: hammer.format['FirstUppercase'](item),\n value: item,\n count,\n }));\n};\n\nconst getSelectItems = (allItems, visibleItems, hostFilter, selectFilter) => {\n let items = allItems;\n\n if (hostFilter !== '' || selectFilter !== 'all') {\n items = visibleItems;\n }\n\n const allItemsSection = {\n text: 'All',\n value: 'all',\n count: sumBy_(items, (item) => item.count),\n };\n\n return [allItemsSection, ...items];\n};\n\nconst getProxies = (state) => state.components.proxies.proxies.proxies;\nconst getHostFilter = (state) => state.components.proxies.proxies.hostFilter;\nconst getStateFilter = (state) => state.components.proxies.proxies.stateFilter;\nconst getRoleFilter = (state) => state.components.proxies.proxies.roleFilter;\nconst getBannedFilter = (state) => state.components.proxies.proxies.bannedFilter;\nconst getSortState = (state) => state.tables[COMPONENTS_PROXIES_TABLE_ID];\n\nconst getFiltersObject = createSelector(\n [getHostFilter, getStateFilter, getRoleFilter, getBannedFilter],\n (hostFilter, stateFilter, roleFilter, bannedFilter) => {\n return {hostFilter, stateFilter, roleFilter, bannedFilter};\n },\n);\n\nconst getFilteredProxies = createSelector(\n [getProxies, getFiltersObject],\n (proxies, filtersObject) => {\n return filterProxies(proxies, filtersObject);\n },\n);\n\nfunction filterProxies(proxies, {hostFilter, stateFilter, roleFilter, bannedFilter}) {\n const bannedFilterAsBool = bannedFilter === 'true';\n const predicates = compact_([\n hostFilter ? ({host}) => host?.toLowerCase().includes(hostFilter) : undefined,\n stateFilter && stateFilter !== 'all' ? ({state}) => state === stateFilter : undefined,\n roleFilter && roleFilter !== 'all' ? ({role}) => role === roleFilter : undefined,\n bannedFilter !== 'all' ? ({banned}) => banned === bannedFilterAsBool : undefined,\n ]);\n return predicates.length ? filter_(proxies, concatByAnd(...predicates)) : proxies;\n}\n\nconst getAllRoles = createSelector([getProxies], (proxy) => aggregateItems(proxy, 'role'));\n\nconst getVisibleRoles = createSelector(\n [getProxies, getFiltersObject],\n function (\n proxies,\n {\n // eslint-disable-next-line no-unused-vars\n roleFilter,\n ...rest\n },\n ) {\n const filtered = filterProxies(proxies, rest);\n return aggregateItems(filtered, 'role');\n },\n);\n\nconst getAllStates = createSelector([getProxies], (proxy) => aggregateItems(proxy, 'state'));\n\nconst getVisibleStates = createSelector([getProxies], (proxy) => aggregateItems(proxy, 'state'));\n\nexport const getVisibleProxies = createSelector(\n [getFilteredProxies, getSortState],\n (proxies, sortState) => hammer.utils.sort(proxies, sortState, proxiesTableColumnItems),\n);\n\nexport const getRoles = createSelector(\n [getAllRoles, getVisibleRoles, getHostFilter, getStateFilter],\n getSelectItems,\n);\n\nexport const getStates = createSelector(\n [getAllStates, getVisibleStates, getHostFilter, getRoleFilter],\n getSelectItems,\n);\n","import React from 'react';\nimport {useDispatch, useSelector} from '../../../store/redux-hooks';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport format from '../../../common/hammer/format';\n\nimport {AddMaintenanceParams} from '../../../../shared/yt-types';\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport type {\n NodeMaintenanceState,\n NodeResourceLimits,\n} from '../../../store/reducers/components/node-maintenance-modal';\nimport {\n getNodeMaintenanceModalInitialValues,\n getNodeMaintenanceModalState,\n} from '../../../store/selectors/components/node-maintenance-modal';\nimport {\n applyMaintenance,\n closeNodeMaintenanceModal,\n} from '../../../store/actions/components/node-maintenance-modal';\nimport {YTError} from '../../../../@types/types';\nimport {Host} from '../../../containers/Host/Host';\n\nimport './NodeMaintenanceModal.scss';\n\nconst block = cn('node-maintenance-modal');\n\ntype FormValues = NodeMaintenanceState['maintenance'] & {\n limits: Partial<{[K in keyof NodeResourceLimits]: {value?: number}}>;\n role: {role?: string};\n};\n\nexport function NodeMaintenanceModal() {\n const dispatch = useDispatch();\n const [error, setError] = React.useState<YTError | undefined>();\n\n const initialValues = useSelector(getNodeMaintenanceModalInitialValues);\n const {address, component, resourceLimits} = useSelector(getNodeMaintenanceModalState);\n\n const allowedMaintenanceTypes: Array<AddMaintenanceParams['type']> =\n component === 'cluster_node'\n ? [\n 'ban',\n 'disable_scheduler_jobs',\n 'disable_write_sessions',\n 'disable_tablet_cells',\n 'decommission',\n ]\n : ['ban'];\n\n const allowLimitsTab = component === 'cluster_node';\n const allowChangeRole = component !== 'cluster_node';\n\n return address ? (\n <YTDFDialog<FormValues>\n visible\n headerProps={{\n title: (\n <>\n <Host useText prefix={<>Edit &nbsp;</>} address={address} />\n </>\n ),\n }}\n initialValues={initialValues}\n onClose={() => dispatch(closeNodeMaintenanceModal())}\n onAdd={async (form) => {\n const {\n values: {limits, role: roleTab, ...rest},\n } = form.getState();\n\n const diff = reduce_(\n rest,\n (acc, item, t) => {\n const type = t as keyof typeof rest;\n const {state, comment} = initialValues?.[type] ?? {};\n if (\n Boolean(state) !== Boolean(item?.state) ||\n (item?.comment && comment !== item?.comment)\n ) {\n acc[type] = item;\n }\n return acc;\n },\n {} as Partial<FormValues>,\n );\n\n const limitsDiff = reduce_(\n limits,\n (acc, item, k) => {\n const key = k as keyof typeof limits;\n if (initialValues.limits[key]?.value !== item?.value) {\n acc[key] = item?.value;\n }\n return acc;\n },\n {} as Partial<NodeResourceLimits>,\n );\n\n const role = initialValues.role.role !== roleTab.role ? roleTab.role : undefined;\n\n try {\n dispatch(applyMaintenance(address, component, diff, limitsDiff, role));\n } catch (e: any) {\n setError(e);\n }\n }}\n fields={[\n ...map_(allowedMaintenanceTypes, (name) => {\n const title = name.split('disable_')[1];\n return {\n name,\n type: 'tab' as const,\n title: format.ReadableField(title ?? name),\n fields: [...makeMaintenanceFields(name), ...makeErrorFields([error])],\n };\n }),\n ...(!allowLimitsTab\n ? []\n : [\n {\n name: 'limits',\n type: 'tab' as const,\n title: 'Limits',\n fields: [\n makeResourceLimitField('cpu', resourceLimits),\n makeResourceLimitField('gpu', resourceLimits),\n makeResourceLimitField('network', resourceLimits),\n makeResourceLimitField('replication_slots', resourceLimits),\n makeResourceLimitField('replication_data_size', resourceLimits),\n makeResourceLimitField('removal_slots', resourceLimits),\n makeResourceLimitField('repair_slots', resourceLimits),\n makeResourceLimitField('repair_data_size', resourceLimits),\n makeResourceLimitField('seal_slots', resourceLimits),\n makeResourceLimitField('system_memory', resourceLimits),\n makeResourceLimitField('user_memory', resourceLimits),\n ...makeErrorFields([error]),\n ],\n },\n ]),\n ...(!allowChangeRole\n ? []\n : [\n {\n name: 'role',\n type: 'tab' as const,\n title: 'Role',\n fields: [\n {\n name: 'role',\n type: 'text' as const,\n caption: 'Role',\n },\n ],\n },\n ]),\n ]}\n />\n ) : null;\n}\n\nfunction makeMaintenanceFields(type: AddMaintenanceParams['type'], allowOthers = true) {\n return [\n {\n name: 'state',\n type: 'radio' as const,\n caption: 'State',\n extras: makeRadioExtras(type),\n },\n {\n name: 'comment',\n type: 'textarea' as const,\n caption: 'Comment',\n extras: (values: FormValues) => {\n return values[type]?.state ? {} : {disabled: true};\n },\n },\n ...(allowOthers\n ? [\n {\n name: 'otherComments',\n type: 'textarea' as const,\n caption: 'Other users comments',\n extras: {\n disabled: true,\n },\n },\n ]\n : []),\n ];\n}\n\nfunction makeRadioExtras(type: AddMaintenanceParams['type']) {\n const labels: Partial<Record<typeof type, [string, string]>> = {\n ban: ['Enabled', 'Banned'],\n decommission: ['Enabled', 'Decommissioned'],\n };\n const [activeLabel = 'Enabled', maintenanceLabel = 'Disabled'] = labels[type] ?? [];\n return {\n options: [\n {value: '', label: activeLabel},\n {value: 'maintenance', label: maintenanceLabel},\n ],\n };\n}\n\nfunction makeResourceLimitField(\n name: keyof NodeResourceLimits,\n defaults?: Partial<Record<typeof name, number>>,\n) {\n const OPTIONS: Partial<Record<typeof name, {format?: 'Bytes'; caption?: string}>> = {\n cpu: {caption: 'CPU'},\n gpu: {caption: 'GPU'},\n user_memory: {\n format: 'Bytes',\n },\n system_memory: {\n format: 'Bytes',\n },\n repair_data_size: {\n format: 'Bytes',\n },\n replication_data_size: {\n format: 'Bytes',\n },\n };\n\n const options = OPTIONS[name] ?? {};\n\n return {\n type: 'number' as const,\n name,\n caption: options?.caption || format.ReadableField(name),\n extras: {\n format: options?.format ?? ('Number' as const),\n showDefaultValue: true,\n defaultValue: defaults?.[name],\n defaultValueClassName: block('limit-default'),\n bottomLineVisibility: 'focused' as const,\n },\n };\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport {useDispatch} from '../../../../store/redux-hooks';\n\nimport hammer from '../../../../common/hammer';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ProxyActions from '../../../../pages/components/tabs/Proxies/ProxyActions/ProxyActions';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport TableInfo from '../../../../pages/components/TableInfo/TableInfo';\nimport Filter from '../../../../components/Filter/Filter';\nimport Select from '../../../../components/Select/Select';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport ProxyCard from './ProxyCard/ProxyCard';\n\nimport {\n changeBannedFilter,\n changeHostFilter,\n changeRoleFilter,\n changeStateFilter,\n getProxies,\n resetProxyState,\n} from '../../../../store/actions/components/proxies/proxies';\nimport {\n getRoles,\n getStates,\n getVisibleProxies,\n} from '../../../../store/selectors/components/proxies/proxies';\nimport {mergeScreen, splitScreen as splitScreenAction} from '../../../../store/actions/global';\nimport {proxiesTableColumnItems} from '../../../../utils/components/proxies/table';\nimport {showNodeMaintenance} from '../../../../store/actions/components/node-maintenance-modal';\nimport {useUpdater} from '../../../../hooks/use-updater';\nimport {isPaneSplit} from '../../../../utils';\nimport {\n COMPONENTS_PROXIES_TABLE_ID,\n PROXY_TYPE,\n SPLIT_TYPE,\n} from '../../../../constants/components/proxies/proxies';\nimport {NodeColumnBanned, NodeColumnRole, NodeColumnState, NodeColumnText} from '../NodeColumns';\nimport {NodeMaintenanceModal} from '../../NodeMaintenanceModal/NodeMaintenanceModal';\n\nimport './Proxies.scss';\n\nconst block = cn('components-proxies');\n\nfunction ProxiesUpdater({type}) {\n const dispatch = useDispatch();\n\n const {updateFn, destructFn} = React.useMemo(() => {\n return {\n updateFn: () => dispatch(getProxies(type)),\n destructFn: () => dispatch(resetProxyState()),\n };\n }, [dispatch, type]);\n\n useUpdater(updateFn, {destructFn});\n\n return null;\n}\n\nexport class Proxies extends Component {\n static selectProps = PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n );\n\n static propTypes = {\n // from parent\n type: PropTypes.oneOf([PROXY_TYPE.HTTP, PROXY_TYPE.RPC, PROXY_TYPE.CYPRESS]).isRequired,\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n totalItems: PropTypes.number.isRequired,\n showingItems: PropTypes.number.isRequired,\n initialLoading: PropTypes.bool.isRequired,\n hostFilter: PropTypes.string.isRequired,\n stateFilter: PropTypes.string.isRequired,\n roleFilter: PropTypes.string.isRequired,\n states: Proxies.selectProps.isRequired,\n roles: Proxies.selectProps.isRequired,\n proxies: PropTypes.arrayOf(PropTypes.object).isRequired,\n splitScreen: PropTypes.shape({\n isSplit: PropTypes.bool.isRequired,\n paneClassNames: PropTypes.array.isRequired,\n type: PropTypes.string.isRequired,\n }).isRequired,\n\n changeHostFilter: PropTypes.func.isRequired,\n changeStateFilter: PropTypes.func.isRequired,\n changeRoleFilter: PropTypes.func.isRequired,\n\n splitScreenAction: PropTypes.func.isRequired,\n mergeScreen: PropTypes.func.isRequired,\n };\n\n state = {\n activeProxy: null,\n };\n\n static renderHost(item, columnName) {\n return (\n <div\n className=\"elements-column_type_id elements-column_with-hover-button\"\n title={item.host}\n >\n <span className=\"elements-monospace elements-ellipsis\">\n {hammer.format['Address'](item.host)}\n </span>\n &nbsp;\n <ClipboardButton\n text={item.host}\n view=\"flat-secondary\"\n size=\"s\"\n title={'Copy ' + columnName}\n />\n </div>\n );\n }\n\n static renderState(item) {\n return <NodeColumnState state={item.state} />;\n }\n\n static renderBanned(item) {\n return <NodeColumnBanned banned={item.banned} />;\n }\n\n static renderRole(item) {\n return <NodeColumnRole role={item.role} />;\n }\n\n static renderVersion(item) {\n return <NodeColumnText text={item.version} />;\n }\n\n static renderLoadAverage(item) {\n return <span>{hammer.format['Number'](item.loadAverage, {digits: 2})}</span>;\n }\n\n static renderNetworkLoad(item) {\n return <span>{item.networkLoad?.toPrecision(3) || hammer.format.NO_VALUE}</span>;\n }\n\n static renderUpdatedAt(item) {\n return <span>{hammer.format['DateTime'](item.updatedAt, {format: 'short'})}</span>;\n }\n\n get tableColumnsSets() {\n return {\n [PROXY_TYPE.HTTP]: {\n items: [\n 'host',\n 'state',\n 'banned',\n 'role',\n 'version',\n 'load_average',\n 'network_load',\n 'updated_at',\n 'actions',\n ],\n },\n [PROXY_TYPE.RPC]: {\n items: ['host', 'state', 'banned', 'role', 'version', 'actions'],\n },\n [PROXY_TYPE.CYPRESS]: {\n items: ['host', 'state', 'version'],\n },\n };\n }\n\n get tableProps() {\n const {type, initialLoading} = this.props;\n\n return {\n size: 's',\n css: block(),\n theme: 'light',\n striped: false,\n cssHover: true,\n isLoading: initialLoading,\n onItemClick: this.handleItemClick,\n tableId: COMPONENTS_PROXIES_TABLE_ID,\n columns: {\n items: proxiesTableColumnItems,\n sets: this.tableColumnsSets,\n mode: type,\n },\n templates: {\n host: Proxies.renderHost,\n state: Proxies.renderState,\n banned: Proxies.renderBanned,\n role: Proxies.renderRole,\n load_average: Proxies.renderLoadAverage,\n network_load: Proxies.renderNetworkLoad,\n updated_at: Proxies.renderUpdatedAt,\n actions: this.renderActions,\n version: Proxies.renderVersion,\n },\n computeKey(proxy) {\n return proxy.host;\n },\n };\n }\n\n handleItemClick = (proxy, index) => {\n const {proxies, splitScreenAction} = this.props;\n const paneClassNames = [block('proxy-pane'), block('info-pane')];\n const activeProxy = proxies[index];\n\n this.setState({activeProxy});\n splitScreenAction(SPLIT_TYPE, paneClassNames);\n };\n\n renderActions = (item) => {\n const {type} = this.props;\n\n return <ProxyActions type={type} proxy={item} />;\n };\n\n renderFilters() {\n const {\n initialLoading,\n hostFilter,\n changeHostFilter,\n stateFilter,\n changeStateFilter,\n states,\n roleFilter,\n changeRoleFilter,\n bannedFilter,\n changeBannedFilter,\n roles,\n type,\n } = this.props;\n\n return (\n <div className={block('filters')}>\n <div className={block('filter', {host: true})}>\n <Filter\n hasClear\n size=\"m\"\n debounce={500}\n value={hostFilter}\n disabled={initialLoading}\n onChange={changeHostFilter}\n placeholder=\"Filter hosts...\"\n />\n </div>\n\n <div className={block('filter', {state: true})}>\n <Select\n items={states}\n value={[stateFilter]}\n disabled={initialLoading}\n onUpdate={(vals) => changeStateFilter(vals[0])}\n label=\"State:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n {type !== PROXY_TYPE.CYPRESS && (\n <div className={block('filter', {role: true})}>\n <Select\n items={roles}\n value={[roleFilter]}\n disabled={initialLoading}\n onUpdate={(vals) => changeRoleFilter(vals[0])}\n label=\"Role:\"\n width=\"max\"\n />\n </div>\n )}\n\n {type !== PROXY_TYPE.CYPRESS && (\n <div className={block('filter')}>\n <Select\n label=\"Banned:\"\n items={[\n {value: 'all', title: 'All'},\n {value: 'true', title: 'True'},\n {value: 'false', title: 'False'},\n ]}\n value={[String(bannedFilter ?? 'all')]}\n disabled={initialLoading}\n onUpdate={([value]) => {\n changeBannedFilter(value);\n }}\n width=\"max\"\n hideFilter\n />\n </div>\n )}\n </div>\n );\n }\n\n renderToolbar() {\n const {totalItems, showingItems} = this.props;\n\n return (\n <Toolbar\n itemsToWrap={[\n {\n node: this.renderFilters(),\n growable: true,\n },\n {\n node: <TableInfo showingItems={showingItems} totalItems={totalItems} />,\n },\n ]}\n />\n );\n }\n\n renderContent() {\n const {proxies, mergeScreen, splitScreen} = this.props;\n const {activeProxy} = this.state;\n\n return (\n <div className={block('content')}>\n <ElementsTable items={proxies} {...this.tableProps} />\n\n {isPaneSplit(splitScreen, SPLIT_TYPE) && (\n <ProxyCard proxy={activeProxy} handleClose={mergeScreen} />\n )}\n </div>\n );\n }\n\n render() {\n return (\n <ErrorBoundary>\n <ProxiesUpdater type={this.props.type} />\n <LoadDataHandler {...this.props}>\n <div className={block()}>\n <WithStickyToolbar\n topMargin=\"none\"\n toolbar={this.renderToolbar()}\n content={this.renderContent()}\n />\n <NodeMaintenanceModal />\n </div>\n </LoadDataHandler>\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {components, global} = state;\n const {\n loading,\n loaded,\n error,\n errorData,\n proxies,\n hostFilter,\n stateFilter,\n bannedFilter,\n roleFilter,\n } = components.proxies.proxies;\n const {splitScreen} = global;\n\n const visibleProxies = getVisibleProxies(state);\n const states = getStates(state);\n const roles = getRoles(state);\n const initialLoading = loading && !loaded;\n\n return {\n loading,\n loaded,\n error,\n errorData,\n\n showingItems: visibleProxies.length,\n totalItems: proxies.length,\n proxies: visibleProxies,\n splitScreen,\n states,\n roles,\n stateFilter,\n hostFilter,\n roleFilter,\n bannedFilter,\n initialLoading,\n };\n};\n\nconst mapDispatchToProps = {\n changeBannedFilter,\n changeHostFilter,\n changeStateFilter,\n changeRoleFilter,\n splitScreenAction,\n mergeScreen,\n\n showNodeMaintenance,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Proxies);\n","import {initialFiltersState} from '../../../../store/reducers/components/nodes/setup/setup';\nimport {createSelector} from 'reselect';\nimport transform_ from 'lodash/transform';\nimport {getTemplates} from '../../../../store/selectors/settings';\n\nconst getDefaultPreset = () => ({\n name: 'All',\n data: initialFiltersState,\n isDefault: true,\n});\n\nconst getSavedPresets = createSelector(getTemplates, (presets = {}) =>\n transform_(presets, (res, data, name) => res.push({name, data, isDefault: false}), []),\n);\n\nexport const getPresets = createSelector(\n [getDefaultPreset, getSavedPresets],\n (defaultPreset, savedPresets) => [defaultPreset, ...savedPresets],\n);\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport Icon from '../../../../../components/Icon/Icon';\n\nimport {getPresets} from '../../../../../store/selectors/components/nodes/filters-presets';\nimport {applyPreset, removePreset} from '../../../../../store/actions/components/nodes/nodes';\n\nimport './FiltersPresets.scss';\n\nconst block = cn('nodes-filters-preset');\n\nclass FiltersPresets extends Component {\n static propTypes = {\n // from connect\n presets: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n data: PropTypes.object.isRequired,\n isDefault: PropTypes.bool.isRequired,\n }).isRequired,\n ).isRequired,\n\n applyPreset: PropTypes.func.isRequired,\n removePreset: PropTypes.func.isRequired,\n\n // from parent\n onChange: PropTypes.func,\n };\n\n handlePresetClick = (preset) => {\n const {applyPreset, onChange} = this.props;\n\n applyPreset(preset.data);\n if (typeof onChange === 'function') {\n onChange(preset);\n }\n };\n\n handleRemoveClick = (evt, name) => {\n const {removePreset} = this.props;\n\n evt.stopPropagation();\n removePreset(name);\n };\n\n renderPreset(preset) {\n const {name, isDefault} = preset;\n\n return (\n <div\n onClick={() => this.handlePresetClick(preset)}\n className={block('preset')}\n key={name}\n >\n {name}\n\n {!isDefault && (\n <span\n onClick={(evt) => this.handleRemoveClick(evt, name)}\n className={block('close')}\n >\n <Icon face=\"solid\" awesome=\"times\" />\n </span>\n )}\n </div>\n );\n }\n\n render() {\n const {presets} = this.props;\n\n return (\n <div className={block()}>{map_(presets, (preset) => this.renderPreset(preset))}</div>\n );\n }\n}\n\nconst mapStateToProps = (state) => ({presets: getPresets(state)});\n\nexport default connect(mapStateToProps, {applyPreset, removePreset})(FiltersPresets);\n","import {addI18Keysets} from '../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:filter-with-reg-exp', {en, ru});\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport Button from '../Button/Button';\n\nimport TextInputWithDebounce, {\n TextInputWithDebounceProps,\n} from '../TextInputWithDebounce/TextInputWithDebounce';\nimport i18n from './i18n';\n\nimport './FilterWithRegExp.scss';\nconst block = cn('filter-with-regexp');\n\ntype Props = Omit<TextInputWithDebounceProps, 'onChange' | 'value'> & {\n className?: string;\n value: FilterWithRegExpValue;\n onChange: (value: Props['value']) => void;\n placeholderRegexp?: string;\n\n hideError?: boolean;\n};\n\nexport interface FilterWithRegExpValue {\n filter: string;\n useRegexp?: boolean;\n regexpError?: string;\n}\n\ninterface State {\n error?: Error;\n prevFilter?: string;\n}\n\nexport class FilterWithRegExp extends React.PureComponent<Props, State> {\n static getDerivedStateFromProps(props: Props, state: State) {\n if (state.prevFilter === props.value.filter) {\n return null;\n }\n\n try {\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _re = new RegExp(props.value.filter);\n return {prevFilter: props.value.filter, error: undefined};\n } catch (error) {\n return {\n prevFilter: props.value.filter,\n error,\n };\n }\n }\n\n input: HTMLInputElement | null = null;\n state: State = {};\n\n onChange(filter: string, useRegexp?: boolean) {\n const {onChange} = this.props;\n let regexpError;\n if (useRegexp) {\n try {\n // eslint-disable-next-line no-new\n new RegExp(filter);\n } catch (e) {\n regexpError = (e as Error).message;\n }\n }\n onChange({filter, useRegexp, regexpError});\n }\n\n toggleRegexpMode = () => {\n const {\n value: {useRegexp, filter},\n } = this.props;\n this.onChange(filter, !useRegexp);\n this.input?.focus();\n };\n\n onFilterChange = (filter: string) => {\n const {\n value: {useRegexp},\n } = this.props;\n this.onChange(filter, useRegexp);\n };\n\n render() {\n const {\n className,\n size,\n placeholder = i18n('placeholder'),\n placeholderRegexp = i18n('placeholder_regexp'),\n value,\n pin,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange,\n ...rest\n } = this.props;\n const {useRegexp, filter} = value;\n const {error} = this.state;\n\n return (\n <div className={block(null, className)}>\n <div className={block('controls')}>\n <TextInputWithDebounce\n {...rest}\n controlRef={(input) => {\n this.input = input as HTMLInputElement;\n }}\n placeholder={useRegexp ? placeholderRegexp || placeholder : placeholder}\n pin={pin}\n size={size}\n value={filter}\n onUpdate={this.onFilterChange}\n className={block('filter')}\n debounce={400}\n />\n <Button\n view={useRegexp ? 'action' : undefined}\n size={size}\n pin={'clear-brick'}\n onClick={() => this.toggleRegexpMode()}\n >\n .*\n </Button>\n </div>\n {useRegexp && error && <span className={block('error')}>{error?.message}</span>}\n </div>\n );\n }\n}\n","import React from 'react';\nimport map_ from 'lodash/map';\n\nimport cn from 'bem-cn-lite';\n\nimport Select from '../../components/Select/Select';\nconst block = cn('tag-selector');\n\nexport interface TagSelectorValue {\n concatBy: 'AND' | 'OR';\n items: Array<string>;\n}\n\ntype SelectProps = React.ComponentProps<typeof Select>;\n\nexport interface TagSelectorProps {\n className?: string;\n\n value?: Array<string>;\n onChange: (v: TagSelectorProps['value']) => void;\n\n items?: Array<string>;\n\n placeholder?: string;\n pin?: SelectProps['pin'];\n}\n\nfunction TagSelector(props: TagSelectorProps) {\n const {className, onChange, items, placeholder, value, ...rest} = props;\n\n const options = React.useMemo(() => {\n return map_(items, (value) => ({value, text: value}));\n }, [items]);\n\n return (\n <div className={block(null, className)}>\n <Select\n {...rest}\n value={value || []}\n multiple\n onUpdate={onChange}\n items={options}\n placeholder={placeholder}\n width=\"max\"\n maxVisibleValues={3}\n />\n </div>\n );\n}\n\nexport default React.memo(TagSelector);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport reduce_ from 'lodash/reduce';\n\nimport {\n FilterWithRegExp,\n FilterWithRegExpValue,\n} from '../../../../../../components/FilterWithRegExp';\nimport TagSelector from '../../../../../../components/TagSelector/TagSelector';\n\nimport './TagsFilter.scss';\nimport Button from '../../../../../../components/Button/Button';\nimport {DropdownMenu} from '@gravity-ui/uikit';\nimport Icon, {IconName} from '../../../../../../components/Icon/Icon';\n\nconst block = cn('tags-filter');\n\nconst TAG_FILTER_MODES = ['filter', 'union', 'intersection'] as const;\n\ntype TagFilterMode = (typeof TAG_FILTER_MODES)[number];\n\ninterface TagsFilterValue extends FilterWithRegExpValue {\n mode?: TagFilterMode;\n selected?: Array<string>;\n}\n\ninterface Props {\n className?: string;\n\n size?: 's' | 'm' | 'l' | 'xl';\n\n value: TagsFilterValue;\n onChange: (v: Props['value']) => void;\n\n items?: Array<string>;\n\n allowedModes?: Array<TagsFilterValue['mode']>;\n\n selectPlaceholder?: string;\n}\n\nconst defaultValue: Required<Props['value']> = {\n mode: 'filter',\n filter: '',\n useRegexp: false,\n selected: [],\n regexpError: '',\n};\n\nconst ICONS: Record<Required<TagsFilterValue>['mode'], IconName> = {\n filter: 'filter',\n union: 'union',\n intersection: 'intersection',\n};\n\nfunction TagsFilter(props: Props) {\n const {\n value,\n onChange,\n className,\n size = 'm',\n items,\n selectPlaceholder,\n allowedModes = TAG_FILTER_MODES,\n } = props;\n const {\n mode = defaultValue.mode,\n filter = defaultValue.filter,\n selected = defaultValue.selected,\n useRegexp,\n } = value;\n\n const handleChange = React.useCallback(\n (v: Props['value']) => {\n const value = reduce_(\n v,\n (acc, value, key) => {\n if (value !== undefined) {\n acc[key] = value;\n }\n return acc;\n },\n {} as any,\n );\n onChange(value);\n },\n [onChange],\n );\n\n const handleFilterChange = React.useCallback(\n (diff: FilterWithRegExpValue) => {\n handleChange({...value, ...diff});\n },\n [handleChange, value],\n );\n\n const handleSelectChange = React.useCallback(\n (selected?: Array<string>) => {\n handleChange({...value, selected});\n },\n [handleChange, value],\n );\n\n const selectedItems = React.useMemo(() => {\n return selected;\n }, [selected]);\n\n const control =\n mode === 'filter' ? (\n <FilterWithRegExp\n className={block('control')}\n pin={'round-brick'}\n size={size}\n value={{filter, useRegexp}}\n onChange={handleFilterChange}\n />\n ) : (\n <TagSelector\n className={block('control')}\n value={selectedItems}\n onChange={handleSelectChange}\n items={items}\n placeholder={selectPlaceholder}\n pin=\"round-brick\"\n />\n );\n\n const modes = allowedModes.map((m) => {\n const itemMode = m!;\n return {\n iconStart: <Icon awesome={ICONS[itemMode]} />,\n text: itemMode[0].toUpperCase() + itemMode.substring(1),\n action: () => handleChange({...value, mode: itemMode}),\n };\n });\n\n return (\n <div className={block(null, className)}>\n {control}\n <DropdownMenu\n items={modes}\n renderSwitcher={(props) => (\n <Button {...props} size={size} width={'auto'} pin={'clear-round'}>\n <Icon awesome={ICONS[mode]} />\n </Button>\n )}\n />\n </div>\n );\n}\n\nexport default React.memo(TagsFilter);\n","import React, {Component, Fragment} from 'react';\nimport {Checkbox} from '@gravity-ui/uikit';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport mapValues_ from 'lodash/mapValues';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\nimport RadioButton from '../../../../../components/RadioButton/RadioButton';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport Hotkey from '../../../../../components/Hotkey/Hotkey';\nimport Filter from '../../../../../components/Filter/Filter';\nimport Modal from '../../../../../components/Modal/Modal';\nimport Select from '../../../../../components/Select/Select';\n\nimport {initialState} from '../../../../../store/reducers/components/nodes/setup/setup';\nimport {\n applyPreset,\n getComponentsNodesFilterOptions,\n savePreset,\n} from '../../../../../store/actions/components/nodes/nodes';\nimport {FLAG_STATE, MEDIUM_COLS_PREFIX} from '../../../../../constants/components/nodes/nodes';\nimport {updateListWithAll} from '../../../../../utils';\nimport {parseBytes} from '../../../../../utils/parse/parse-bytes';\n\nimport {getMediumListNoCache} from '../../../../../store/selectors/thor';\nimport TagsFilter from './TagsFilter/TagsFilter';\nimport {\n getComponentNodesFiltersSetup,\n getComponentNodesRacks,\n getComponentNodesTags,\n} from '../../../../../store/selectors/components/nodes/nodes';\nimport {\n COMPONENTS_AVAILABLE_STATES,\n getComponentNodesFilterSetupStateValue,\n} from '../../../../../store/selectors/components/nodes/nodes/data';\n\nimport './SetupModal.scss';\n\nconst block = cn('nodes-setup-modal');\n\nconst groupFilterProps = PropTypes.shape({\n from: PropTypes.shape({\n value: PropTypes.number,\n valid: PropTypes.bool.isRequired,\n }).isRequired,\n to: PropTypes.shape({\n value: PropTypes.number,\n valid: PropTypes.bool.isRequired,\n }).isRequired,\n});\n\nexport class SetupModal extends Component {\n static radioProps = PropTypes.oneOf([FLAG_STATE.ENABLED, FLAG_STATE.DISABLED, FLAG_STATE.ALL]);\n\n static propTypes = {\n // from parent\n visible: PropTypes.bool,\n handleClose: PropTypes.func.isRequired,\n\n // from connect\n setup: PropTypes.shape({\n default: PropTypes.shape({\n physicalHost: PropTypes.string.isRequired,\n tag: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n state: PropTypes.arrayOf(PropTypes.string),\n schedulerJobs: SetupModal.radioProps.isRequired,\n writeSessions: SetupModal.radioProps.isRequired,\n tabletCells: SetupModal.radioProps.isRequired,\n rack: PropTypes.oneOfType([\n PropTypes.string.isRequired,\n PropTypes.object.isRequired,\n ]).isRequired,\n banned: SetupModal.radioProps.isRequired,\n decommissioned: SetupModal.radioProps.isRequired,\n full: SetupModal.radioProps.isRequired,\n alerts: SetupModal.radioProps.isRequired,\n }).isRequired,\n storage: SetupModal.createPropTypes('storage'),\n cpu: SetupModal.createPropTypes('cpu'),\n resources: SetupModal.createPropTypes('resources'),\n tablets: SetupModal.createPropTypes('tablets'),\n }),\n\n applyPreset: PropTypes.func.isRequired,\n savePreset: PropTypes.func.isRequired,\n };\n\n static createPropTypes(group) {\n const inner = mapValues_(initialState[group], () => groupFilterProps.isRequired);\n\n return PropTypes.shape(inner).isRequired;\n }\n\n static getCurrentValue(state, props, section, group) {\n if (!state[section] || !state[section][group]) {\n return props[section][group];\n }\n return null;\n }\n\n static getDerivedStateFromProps(props, state) {\n const {mediumList, setup} = props;\n const {storage} = state;\n const newStorage = reduce_(\n mediumList,\n (acc, medium) => {\n const key = MEDIUM_COLS_PREFIX + medium;\n acc[key] = storage[key] || setup.storage[key];\n return acc;\n },\n {},\n );\n return {storage: {...storage, ...newStorage}};\n }\n\n state = {};\n\n constructor(props) {\n super(props);\n this.state = {\n ...this.props.setup,\n saveAsTemplate: false,\n templateName: '',\n };\n\n this.state.default.state = this.props.stateValue;\n }\n\n get hotkeySettings() {\n return [{keys: 'enter', handler: this.handleApplySetup, scope: 'all'}];\n }\n\n get states() {\n return map_(this.props.nodeStates, (state) => {\n return {\n title: hammer.format.Readable(state),\n value: state,\n };\n });\n }\n\n get radioItems() {\n const {ENABLED, DISABLED, ALL} = FLAG_STATE;\n\n return [\n {text: hammer.format['FirstUppercase'](ALL), value: ALL},\n {text: hammer.format['FirstUppercase'](ENABLED), value: ENABLED},\n {\n text: hammer.format['FirstUppercase'](DISABLED),\n value: DISABLED,\n },\n ];\n }\n\n prepareFiltersCallback(section, group) {\n return [\n (value) => this.handleValueFilterChange(section, group, 'from', value),\n (value) => this.handleValueFilterChange(section, group, 'to', value),\n ];\n }\n\n handleApplySetup = () => {\n const {applyPreset, handleClose, savePreset} = this.props;\n const {saveAsTemplate, templateName, ...setup} = this.state;\n\n if (saveAsTemplate && templateName.length > 0) {\n savePreset(templateName, setup);\n }\n\n applyPreset(this.state);\n this.setState({saveAsTemplate: false}, handleClose);\n };\n\n handleSelectChange = (newValue) => {\n const {state} = this.state.default;\n\n const values = updateListWithAll({value: state, newValue}, 'all');\n\n this.setState({\n default: {\n ...this.state.default,\n state: values,\n },\n });\n };\n\n handleRadioChange(section, key, value) {\n this.setState({\n [section]: {\n ...this.state[section],\n [key]: value,\n },\n });\n }\n\n handleValueFilterChange = (section, group, key, value) => {\n const parsedValue = value === '' ? null : parseBytes(value);\n const isValid = !isNaN(parsedValue);\n\n this.setState({\n [section]: {\n ...this.state[section],\n [group]: {\n ...this.state[section][group],\n [key]: {\n value: isValid ? parsedValue : this.state[section][group][key].value,\n valid: isValid,\n },\n },\n },\n });\n };\n\n handleTextFilterChange = (section, key, value) => {\n this.setState({\n [section]: {\n ...this.state[section],\n [key]: value,\n },\n });\n };\n\n handleTemplateCheckboxChange = ({target}) => this.setState({saveAsTemplate: target.checked});\n\n handleTemplateNameChange = (templateName) => this.setState({templateName});\n\n renderValueFilter({placeholder, onChange, value, invalid, format = 'Bytes'}) {\n const formatter =\n format === 'Number' ? (value) => Number(value).toString() : hammer.format[format];\n const preparedValue = value === '' || value === null ? '' : formatter(value);\n\n return (\n <Filter\n size=\"m\"\n debounce={500}\n invalid={invalid}\n autofocus={false}\n onChange={onChange}\n value={preparedValue}\n placeholder={placeholder}\n />\n );\n }\n\n renderTextFilter({placeholder, onChange, value, disabled = false, invalid = false}) {\n return (\n <Filter\n size=\"m\"\n debounce={500}\n value={value}\n invalid={invalid}\n autofocus={false}\n disabled={disabled}\n onChange={onChange}\n placeholder={placeholder}\n />\n );\n }\n\n renderTagsFilter({items, onChange, value, disabled = false, modes, invalid = false}) {\n return (\n <TagsFilter\n value={value}\n invalid={invalid}\n autofocus={false}\n disabled={disabled}\n onChange={onChange}\n items={items}\n allowedModes={modes}\n selectPlaceholder={'Select tags...'}\n />\n );\n }\n\n renderFiltersGroup(section, group, format = 'Bytes') {\n const [firstCallback, secondCallback] = this.prepareFiltersCallback(section, group);\n\n const filter = this.state[section][group];\n\n const {valid: fromFilterValid, value: fromFilterValue} = filter.from;\n const {valid: toFilterValid, value: toFilterValue} = filter.to;\n\n return (\n <div className={block('filters-group')}>\n {this.renderValueFilter({\n placeholder: 'From X...',\n onChange: firstCallback,\n value: fromFilterValue,\n invalid: !fromFilterValid,\n format,\n })}\n\n {this.renderValueFilter({\n placeholder: 'To Y...',\n onChange: secondCallback,\n value: toFilterValue,\n invalid: !toFilterValid,\n format,\n })}\n </div>\n );\n }\n\n renderStatesSelect() {\n const {state} = this.state.default;\n return (\n <div className={block('select')}>\n <Select\n value={state}\n items={this.states}\n filterable\n onUpdate={this.handleSelectChange}\n placeholder={'Select states...'}\n width=\"max\"\n maxVisibleValues={5}\n hideFilter\n multiple\n />\n </div>\n );\n }\n\n renderRadioGroup(section, name) {\n const value = this.state[section][name];\n\n return (\n <RadioButton\n size=\"m\"\n name={name}\n value={value}\n items={this.radioItems}\n onChange={(ev) => this.handleRadioChange(section, name, ev.target.value)}\n />\n );\n }\n\n renderCheckBox(text, checked, onChange) {\n return (\n <Checkbox\n size=\"l\"\n key={text}\n content={text}\n checked={checked}\n onChange={onChange}\n className={block('checkbox')}\n />\n );\n }\n\n renderDefaultFilters() {\n const section = 'default';\n const {nodeTags, nodeRacks} = this.props;\n\n return (\n <MetaTable\n items={[\n {\n key: 'physical host',\n value: this.renderTextFilter({\n value: this.state[section]['physicalHost'],\n placeholder: 'Enter physical host address...',\n onChange: (value) =>\n this.handleTextFilterChange(section, 'physicalHost', value),\n }),\n },\n {\n key: 'tags',\n value: this.renderTagsFilter({\n items: nodeTags,\n value: this.state[section]['tag'],\n onChange: (value) => this.handleTextFilterChange(section, 'tag', value),\n }),\n },\n {\n key: 'states',\n value: this.renderStatesSelect(),\n },\n {\n key: 'racks',\n value: this.renderTagsFilter({\n items: nodeRacks,\n value: this.state[section]['rack'],\n modes: ['filter', 'union'],\n onChange: (value) =>\n this.handleTextFilterChange(section, 'rack', value),\n }),\n },\n {\n key: 'banned',\n value: this.renderRadioGroup(section, 'banned'),\n },\n {\n key: 'decommissioned',\n value: this.renderRadioGroup(section, 'decommissioned'),\n },\n {\n key: 'full',\n value: this.renderRadioGroup(section, 'full'),\n },\n {\n key: 'alerts',\n value: this.renderRadioGroup(section, 'alertCount'),\n },\n {\n key: 'scheduler jobs',\n value: this.renderRadioGroup(section, 'schedulerJobs'),\n },\n {\n key: 'write sessions',\n value: this.renderRadioGroup(section, 'writeSessions'),\n },\n {\n key: 'tablet cells',\n value: this.renderRadioGroup(section, 'tabletCells'),\n },\n ]}\n />\n );\n }\n\n renderStorageFilters() {\n const {mediumList} = this.props;\n const section = 'storage';\n\n return (\n <Fragment>\n <MetaTable\n items={[\n {\n key: 'sessions',\n value: this.renderFiltersGroup(section, 'sessions', 'Number'),\n },\n {\n key: 'chunks',\n value: this.renderFiltersGroup(section, 'chunks', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Space</h4>\n\n <MetaTable\n items={[\n {\n key: 'used',\n value: this.renderFiltersGroup(section, 'spaceUsed'),\n },\n {\n key: 'total',\n value: this.renderFiltersGroup(section, 'spaceTotal'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>IO weight</h4>\n\n <MetaTable\n items={map_(mediumList, (medium) => ({\n key: hammer.format['Readable'](medium),\n value: this.renderFiltersGroup(\n section,\n MEDIUM_COLS_PREFIX + medium,\n 'Number',\n ),\n }))}\n />\n </Fragment>\n );\n }\n\n renderCpuFilters() {\n const section = 'cpu';\n\n return (\n <Fragment>\n <MetaTable\n items={[\n {\n key: 'blob session',\n value: this.renderFiltersGroup(section, 'blobSession'),\n },\n {\n key: 'block cache',\n value: this.renderFiltersGroup(section, 'blockCache'),\n },\n {\n key: 'chunk block meta',\n value: this.renderFiltersGroup(section, 'chunkBlockMeta'),\n },\n {\n key: 'chunk meta',\n value: this.renderFiltersGroup(section, 'chunkMeta'),\n },\n {\n key: 'footprint',\n value: this.renderFiltersGroup(section, 'footprint'),\n },\n {\n key: 'query',\n value: this.renderFiltersGroup(section, 'query'),\n },\n {\n key: 'system jobs',\n value: this.renderFiltersGroup(section, 'systemJobs'),\n },\n {\n key: 'versioned chunk meta',\n value: this.renderFiltersGroup(section, 'versionedChunkMeta'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Tablet dynamic</h4>\n\n <MetaTable\n items={[\n {\n key: 'used',\n value: this.renderFiltersGroup(section, 'tabletDynamicUsed'),\n },\n {\n key: 'total',\n value: this.renderFiltersGroup(section, 'tabletDynamicTotal'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Tablet static</h4>\n\n <MetaTable\n items={[\n {\n key: 'used',\n value: this.renderFiltersGroup(section, 'tabletStaticUsed'),\n },\n {\n key: 'total',\n value: this.renderFiltersGroup(section, 'tabletStaticTotal'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>User jobs</h4>\n\n <MetaTable\n items={[\n {\n key: 'used',\n value: this.renderFiltersGroup(section, 'userJobsUsed'),\n },\n {\n key: 'total',\n value: this.renderFiltersGroup(section, 'userJobsTotal'),\n },\n ]}\n />\n </Fragment>\n );\n }\n\n renderResourcesFilters() {\n const section = 'resources';\n\n return (\n <Fragment>\n <h4 className={block('heading')}>User slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'user slots used',\n value: this.renderFiltersGroup(section, 'userSlotsUsed', 'Number'),\n },\n {\n key: 'user slots total',\n value: this.renderFiltersGroup(section, 'userSlotsTotal', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Seal slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'seal slots used',\n value: this.renderFiltersGroup(section, 'sealSlotsUsed', 'Number'),\n },\n {\n key: 'seal slots total',\n value: this.renderFiltersGroup(section, 'sealSlotsTotal', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Repair slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'repair slots used',\n value: this.renderFiltersGroup(section, 'repairSlotsUsed', 'Number'),\n },\n {\n key: 'repair slots total',\n value: this.renderFiltersGroup(section, 'repairSlotsTotal', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Removal slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'removal slots used',\n value: this.renderFiltersGroup(section, 'removalSlotsUsed', 'Number'),\n },\n {\n key: 'removal slots total',\n value: this.renderFiltersGroup(section, 'removalSlotsUsed', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Replication slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'replication slots used',\n value: this.renderFiltersGroup(\n section,\n 'replicationSlotsUsed',\n 'Number',\n ),\n },\n {\n key: 'replication slots total',\n value: this.renderFiltersGroup(\n section,\n 'replicationSlotsTotal',\n 'Number',\n ),\n },\n ]}\n />\n </Fragment>\n );\n }\n\n renderTabletsFilters() {\n const section = 'tablets';\n\n return (\n <Fragment>\n <h4 className={block('heading')}>Tablet slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'all states',\n value: this.renderFiltersGroup(section, 'all', 'Number'),\n },\n {\n key: 'none',\n value: this.renderFiltersGroup(section, 'none', 'Number'),\n },\n {\n key: 'leading',\n value: this.renderFiltersGroup(section, 'leading', 'Number'),\n },\n {\n key: 'following',\n value: this.renderFiltersGroup(section, 'following', 'Number'),\n },\n {\n key: 'Follower Recovery',\n value: this.renderFiltersGroup(section, 'followerRecovery', 'Number'),\n },\n {\n key: 'Leader Recovery',\n value: this.renderFiltersGroup(section, 'leaderRecovery', 'Number'),\n },\n {\n key: 'stopped',\n value: this.renderFiltersGroup(section, 'stopped', 'Number'),\n },\n {\n key: 'elections',\n value: this.renderFiltersGroup(section, 'elections', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Tablet memory</h4>\n\n <MetaTable\n items={[\n {\n key: 'static used',\n value: this.renderFiltersGroup(section, 'staticUsed'),\n },\n {\n key: 'static total',\n value: this.renderFiltersGroup(section, 'staticTotal'),\n },\n {\n key: 'dynamic used',\n value: this.renderFiltersGroup(section, 'dynamicUsed'),\n },\n {\n key: 'dynamic total',\n value: this.renderFiltersGroup(section, 'dynamicTotal'),\n },\n ]}\n />\n </Fragment>\n );\n }\n\n renderContent() {\n const {saveAsTemplate, templateName} = this.state;\n\n return (\n <div className={block()}>\n <CollapsibleSection size=\"s\" name=\"Default\" className={block('default')}>\n {this.renderDefaultFilters()}\n </CollapsibleSection>\n\n <CollapsibleSection size=\"s\" name=\"Storage\">\n {this.renderStorageFilters()}\n </CollapsibleSection>\n\n <CollapsibleSection size=\"s\" name=\"CPU and memory\">\n {this.renderCpuFilters()}\n </CollapsibleSection>\n\n <CollapsibleSection size=\"s\" name=\"Resources\">\n {this.renderResourcesFilters()}\n </CollapsibleSection>\n\n <CollapsibleSection size=\"s\" name=\"Tablets\">\n {this.renderTabletsFilters()}\n </CollapsibleSection>\n\n <div className={block('template')}>\n <MetaTable\n items={[\n {\n key: 'save',\n value: this.renderCheckBox(\n 'Save as template',\n saveAsTemplate,\n this.handleTemplateCheckboxChange,\n ),\n },\n {\n key: 'template name',\n value: this.renderTextFilter({\n placeholder: 'Enter template name...',\n onChange: this.handleTemplateNameChange,\n value: templateName,\n disabled: !saveAsTemplate,\n invalid: saveAsTemplate && templateName.length < 1,\n }),\n },\n ]}\n />\n </div>\n\n <Hotkey settings={this.hotkeySettings} />\n </div>\n );\n }\n\n render() {\n const {visible, handleClose} = this.props;\n\n return (\n <Modal\n size=\"m\"\n title=\"Setup\"\n visible={visible}\n onCancel={handleClose}\n content={this.renderContent()}\n onConfirm={this.handleApplySetup}\n />\n );\n }\n\n componentDidMount() {\n const {visible, loadOptions} = this.props;\n\n if (visible) {\n loadOptions();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {visible, loadOptions} = this.props;\n\n if (!prevProps.visible && visible) {\n loadOptions();\n }\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n setup: getComponentNodesFiltersSetup(state),\n mediumList: getMediumListNoCache(state),\n nodeTags: getComponentNodesTags(state),\n nodeRacks: getComponentNodesRacks(state),\n nodeStates: COMPONENTS_AVAILABLE_STATES,\n stateValue: getComponentNodesFilterSetupStateValue(state),\n };\n};\n\nexport default connect(mapStateToProps, {\n applyPreset,\n savePreset,\n loadOptions: getComponentsNodesFilterOptions,\n})(SetupModal);\n","import type {ThunkAction} from 'redux-thunk';\n\n// import ypath from '../../../../common/thor/ypath';\nimport {\n NODE_LOAD_FAILURE,\n NODE_LOAD_REQUEST,\n NODE_LOAD_SUCCESS,\n} from '../../../../constants/components/nodes/node';\nimport {Node} from '../../../../store/reducers/components/nodes/nodes/node';\nimport type {RootState} from '../../../../store/reducers';\nimport type {NodeLoadAction} from '../../../../store/reducers/components/node/node';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {prepareAttributes} from '../../../../utils/cypress-attributes';\n\ntype NodeLoadThunkAction = ThunkAction<any, RootState, any, NodeLoadAction>;\n\nexport function loadNodeAttributes(host: string): NodeLoadThunkAction {\n return (dispatch) => {\n dispatch({type: NODE_LOAD_REQUEST});\n return ytApiV3Id\n .get<Node>(YTApiId.nodeAttributes, {\n path: `//sys/cluster_nodes/${host}`,\n attributes: prepareAttributes(Node.ATTRIBUTES),\n })\n .then((node) => {\n dispatch({\n type: NODE_LOAD_SUCCESS,\n data: {host, node},\n });\n })\n .catch((error: Error) => {\n dispatch({\n type: NODE_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import {createSelector} from 'reselect';\n\nimport {COMPONENTS_NODES_NODE_TABLE_ID} from '../../../../constants/components/nodes/nodes';\nimport type {RootState} from '../../../../store/reducers';\nimport type {Node} from '../../../../store/reducers/components/nodes/nodes/node';\nimport {nodeTableProps} from '../../../../utils/components/nodes/node';\nimport hammer from '../../../../common/hammer';\n\nconst getSortState = (state: RootState) => state.tables[COMPONENTS_NODES_NODE_TABLE_ID];\nconst getTabletSlots = (_state: RootState, props: {node: Pick<Node, 'tabletSlots'>}) =>\n props.node.tabletSlots;\n\nexport const getSortedItems = createSelector(\n [getSortState, getTabletSlots],\n (sortState, tabletSlots) =>\n tabletSlots\n ? hammer.utils.sort(tabletSlots.raw, sortState, nodeTableProps.columns.items)\n : [],\n);\n","import type {RootState} from '../../../../store/reducers/index';\n\nexport const nodeSelector = (state: RootState) => state.components.node.node;\n\nexport const nodeHostSelector = (state: RootState) => nodeSelector(state).node?.host;\n\nexport const getNodeAlertCount = (state: RootState) => state.components.node.node.node?.alertCount;\n\nexport const getNodeAlerts = (state: RootState) => state.components.node.node.node?.alerts;\n","import React from 'react';\n\nimport {Progress} from '@gravity-ui/uikit';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\n\nimport type {Node} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport MemoryProgress from '../../nodes/MemoryProgress/MemoryProgress';\n\ninterface NodeCpuAndMemoryProps {\n cpuProgress: Node['cpuProgress'];\n cpuText: Node['cpuText'];\n memoryData?: Node['memoryData'];\n memoryProgress: Node['memoryProgress'];\n memoryText: Node['memoryText'];\n networkProgress: Node['networkProgress'];\n networkText: Node['networkText'];\n gpu?: Node['gpu'];\n}\n\nexport const hasCpuAndMemoryMeta = (node: NodeCpuAndMemoryProps) =>\n node.cpuProgress || node.memoryProgress || node.networkProgress;\n\nfunction NodeCpuAndMemory({node}: {node: NodeCpuAndMemoryProps}): ReturnType<React.VFC> {\n const {memoryData, memoryText, cpuProgress, cpuText, networkProgress, networkText, gpu} = node;\n return (\n <MetaTable\n items={[\n {\n key: 'cpu',\n value: <Progress value={cpuProgress || 0} text={cpuText} theme=\"success\" />,\n },\n {\n key: 'memory',\n value: <MemoryProgress memoryData={memoryData} memoryText={memoryText} />,\n },\n {\n key: 'gpu',\n value: (\n <Progress\n value={gpu?.progress || 0}\n text={gpu?.progressText}\n theme=\"success\"\n />\n ),\n visible: gpu !== undefined,\n },\n {\n key: 'network',\n value: (\n <Progress value={networkProgress || 0} text={networkText} theme=\"success\" />\n ),\n },\n ]}\n />\n );\n}\n\nexport default React.memo(NodeCpuAndMemory);\n","import React from 'react';\n\nimport {Progress} from '@gravity-ui/uikit';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\n\nimport type {Node} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport {calcProgressProps} from '../../../../../utils/utils';\n\ninterface NodeResourcesProps {\n removalSlots: Node['removalSlots'];\n repairSlots: Node['repairSlots'];\n replicationSlots: Node['replicationSlots'];\n sealSlots: Node['sealSlots'];\n userSlots: Node['userSlots'];\n}\n\nexport const hasResourcesMeta = (node: NodeResourcesProps) =>\n [\n node.userSlots.usage,\n node.sealSlots.usage,\n node.repairSlots.usage,\n node.removalSlots.usage,\n node.replicationSlots.usage,\n ].some((item) => typeof item !== 'undefined');\n\nfunction NodeResources(node: NodeResourcesProps): ReturnType<React.VFC> {\n return (\n <MetaTable\n items={[\n {\n key: 'user slots',\n value: (\n <Progress\n {...calcProgressProps(node.userSlots.usage, node.userSlots.limits)}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'seal slots',\n value: (\n <Progress\n {...calcProgressProps(node.sealSlots.usage, node.sealSlots.limits)}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'repair slots',\n value: (\n <Progress\n {...calcProgressProps(node.repairSlots.usage, node.repairSlots.limits)}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'removal slots',\n value: (\n <Progress\n {...calcProgressProps(\n node.removalSlots.usage,\n node.removalSlots.limits,\n )}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'replication slots',\n value: (\n <Progress\n {...calcProgressProps(\n node.replicationSlots.usage,\n node.replicationSlots.limits,\n )}\n theme=\"success\"\n />\n ),\n },\n ]}\n />\n );\n}\n\nexport default React.memo(NodeResources);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport transform_ from 'lodash/transform';\n\nimport {Progress} from '@gravity-ui/uikit';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\n\nimport type {Node} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport hammer from '../../../../../common/hammer';\n\nimport './NodeStorage.scss';\n\nconst block = cn('node-storage');\n\ninterface NodeStorageProps {\n chunks: Node['chunks'];\n IOWeight: Node['IOWeight'];\n sessions: Node['sessions'];\n spaceProgress: Node['spaceProgress'];\n spaceText: Node['spaceText'];\n}\n\nexport const hasStorageMeta = (node: NodeStorageProps) =>\n node.spaceProgress || node.sessions || node.chunks || Object.keys(node.IOWeight).length > 0;\n\nfunction NodeStorage(node: NodeStorageProps): ReturnType<React.VFC> {\n const ioItems = transform_(\n node.IOWeight,\n (res, value, key) => res.push({key, value}),\n [] as Array<{key: string; value: number}>,\n );\n\n return (\n <>\n <MetaTable\n className={block('meta')}\n items={[\n {\n key: 'space',\n value: (\n <Progress\n value={node.spaceProgress || 0}\n text={node.spaceText}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'sessions',\n value: hammer.format['Number'](node.sessions),\n },\n {\n key: 'chunks',\n value: hammer.format['Number'](node.chunks),\n },\n ]}\n />\n\n {ioItems.length > 0 && <h4 className={block('heading')}>IO weight</h4>}\n\n <MetaTable items={ioItems} />\n </>\n );\n}\n\nexport default React.memo(NodeStorage);\n","import React from 'react';\n\nimport type {Column} from '@gravity-ui/react-data-table';\n\nimport type {YTConfig} from '../../../../../../shared/yt-types';\nimport hammer from '../../../../../common/hammer';\nimport {TABLET_SLOTS} from '../../../../../components/templates/components/nodes/nodes';\nimport DataTableYT from '../../../../../components/DataTableYT/DataTableYT';\nimport Link from '../../../../../components/Link/Link';\nimport StatusBlock from '../../../../../components/StatusBlock/StatusBlock';\nimport {genTabletCellBundlesCellUrl} from '../../../../../utils/tablet_cell_bundles';\n\nconst YT = (window as any).YT as YTConfig;\n\ntype TabletSlot = any;\n\ninterface TabletSlotsProps {\n tabletSlots: TabletSlot[];\n}\n\nconst columns: Array<Column<TabletSlot>> = [\n {\n name: 'Cell ID',\n render({row}) {\n const url = genTabletCellBundlesCellUrl(row.cell_id, YT.cluster);\n\n return row.cell_id ? (\n <Link url={url} theme=\"ghost\" routed>\n {row.cell_id}\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n },\n },\n {\n name: 'Peer ID',\n render({row}) {\n return row.peer_id;\n },\n },\n {\n name: 'State',\n render({row}) {\n const {text, theme} = TABLET_SLOTS[row.state as keyof typeof TABLET_SLOTS];\n\n return row.state ? <StatusBlock theme={theme} text={text} /> : hammer.format.NO_VALUE;\n },\n },\n];\n\nfunction NodeTabletSlots({tabletSlots}: TabletSlotsProps): ReturnType<React.VFC> {\n return (\n <DataTableYT\n columns={columns}\n data={tabletSlots}\n startIndex={1}\n useThemeYT\n settings={{sortable: false}}\n />\n );\n}\n\nexport default React.memo(NodeTabletSlots);\n","import React from 'react';\nimport isEmpty_ from 'lodash/isEmpty';\n\nimport hammer from '../../../common/hammer';\nimport Label from '../../../components/Label/Label';\nimport {MaintenanceRequests} from '../../../components/MaintenanceRequests/MaintenanceRequests';\nimport {MetaTableItem} from '../../../components/MetaTable/MetaTable';\nimport {renderLabel} from '../../../components/templates/components/nodes/nodes';\nimport type {Node} from '../../../store/reducers/components/nodes/nodes/node';\n\nfunction getStateTheme(state: Node['state']) {\n switch (state) {\n case 'online':\n return 'success';\n case 'offline':\n return 'danger';\n default:\n return 'default';\n }\n}\n\nexport function getNodeMetaItems({\n alertCount,\n banned,\n banMessage,\n dataCenter,\n decommissioned,\n decommissionedMessage,\n disableJobs,\n disableWriteSession,\n disableTabletCells,\n full,\n jobProxyBuildVersion,\n lastSeenTime,\n maintenanceRequests,\n state,\n rack,\n version,\n}: Pick<\n Node,\n | 'alertCount'\n | 'banned'\n | 'banMessage'\n | 'dataCenter'\n | 'decommissioned'\n | 'decommissionedMessage'\n | 'disableJobs'\n | 'disableWriteSession'\n | 'disableTabletCells'\n | 'full'\n | 'jobProxyBuildVersion'\n | 'lastSeenTime'\n | 'maintenanceRequests'\n | 'state'\n | 'rack'\n | 'version'\n>): Array<MetaTableItem> {\n const stateText = hammer.format['FirstUppercase'](state);\n const stateTheme = getStateTheme(state);\n\n return [\n {\n key: 'state',\n value: <Label theme={stateTheme} type=\"text\" text={stateText} />,\n },\n {\n key: 'rack',\n value: hammer.format['Address'](rack),\n visible: Boolean(rack),\n },\n {\n key: 'banned',\n value: (\n <Label\n text={banMessage || 'True'}\n theme={!banMessage ? 'danger' : 'warning'}\n type=\"text\"\n />\n ),\n visible: Boolean(banned),\n },\n {\n key: 'maintenance',\n value: <MaintenanceRequests requests={maintenanceRequests} />,\n visible: !isEmpty_(maintenanceRequests),\n },\n {\n key: 'decommissioned',\n value: (\n <Label\n text={decommissionedMessage ? decommissionedMessage : 'Decommissioned'}\n theme=\"default\"\n type=\"text\"\n />\n ),\n visible: Boolean(decommissioned),\n },\n {\n key: 'full',\n value: <Label text=\"Full\" theme=\"danger\" type=\"text\" />,\n visible: Boolean(full),\n },\n {\n key: 'alerts',\n value: <Label text={alertCount} theme=\"danger\" type=\"text\" />,\n visible: alertCount! > 0,\n },\n {\n key: 'scheduler_jobs',\n value: renderLabel(disableJobs),\n },\n {\n key: 'write_sessions',\n value: renderLabel(disableWriteSession),\n },\n {\n key: 'tablet_cells',\n value: renderLabel(disableTabletCells),\n },\n {\n key: 'data_center',\n value: dataCenter?.toUpperCase(),\n visible: Boolean(dataCenter),\n },\n {\n key: 'last_seen',\n value: hammer.format['DateTime'](lastSeenTime, {\n format: 'full',\n }),\n },\n {\n key: 'version',\n value: version,\n visible: Boolean(version),\n },\n {\n key: 'job_proxy_build_version',\n value: jobProxyBuildVersion,\n visible: Boolean(jobProxyBuildVersion),\n },\n ];\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport {useDispatch} from '../../../../../store/redux-hooks';\nimport PropTypes from 'prop-types';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport Icon from '../../../../../components/Icon/Icon';\nimport Link from '../../../../../components/Link/Link';\nimport Label from '../../../../../components/Label/Label';\nimport {YTAlertBlock} from '../../../../../components/Alert/Alert';\nimport Button from '../../../../../components/Button/Button';\nimport {YTErrorBlock} from '../../../../../components/Error/Error';\nimport MetaTable, {Template} from '../../../../../components/MetaTable/MetaTable';\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\n\nimport {loadNodeAttributes} from '../../../../../store/actions/components/node/node';\nimport {getSortedItems} from '../../../../../store/selectors/components/nodes/node-card';\n\nimport {nodeSelector} from '../../../../../store/selectors/components/node/node';\nimport {getCluster, getCurrentClusterConfig} from '../../../../../store/selectors/global';\nimport hammer from '../../../../../common/hammer';\nimport NodeCpuAndMemory, {\n hasCpuAndMemoryMeta,\n} from '../../../../../pages/components/tabs/node/NodeCpuAndMemory/NodeCpuAndMemory';\nimport NodeResources, {\n hasResourcesMeta,\n} from '../../../../../pages/components/tabs/node/NodeResources/NodeResources';\nimport NodeStorage, {\n hasStorageMeta,\n} from '../../../../../pages/components/tabs/node/NodeStorage/NodeStorage';\nimport NodeTabletSlots from '../../../../../pages/components/tabs/node/NodeTabletSlots/NodeTabletSlots';\nimport {useUpdater} from '../../../../../hooks/use-updater';\n\nimport withSplit from '../../../../../hocs/withSplit';\nimport UIFactory from '../../../../../UIFactory';\nimport ClipboardButton from '../../../../../components/ClipboardButton/ClipboardButton';\nimport {makeComponentsNodesUrl} from '../../../../../utils/app-url';\nimport {getNodeMetaItems} from '../../../../../utils/components/nodes/node-meta-items';\n\nimport './NodeCard.scss';\n\nconst block = cn('node-card');\n\nexport const nodeProps = PropTypes.shape({\n locations: PropTypes.arrayOf(\n PropTypes.shape({\n low_watermark_space: PropTypes.number.isRequired,\n available_space: PropTypes.number.isRequired,\n session_count: PropTypes.number.isRequired,\n chunk_count: PropTypes.number.isRequired,\n used_space: PropTypes.number.isRequired,\n throttling_writes: PropTypes.bool.isRequired,\n throttling_reads: PropTypes.bool.isRequired,\n enabled: PropTypes.bool.isRequired,\n sick: PropTypes.bool.isRequired,\n full: PropTypes.bool.isRequired,\n medium_name: PropTypes.string.isRequired,\n location_uuid: PropTypes.string.isRequired,\n }),\n ),\n tabletSlots: PropTypes.shape({\n byState: PropTypes.object.isRequired,\n raw: PropTypes.array.isRequired,\n }),\n host: PropTypes.string.isRequired,\n alerts: PropTypes.arrayOf(PropTypes.object),\n banned: PropTypes.bool.isRequired,\n disableJobs: PropTypes.bool.isRequired,\n disableTabletCells: PropTypes.bool.isRequired,\n disableWriteSession: PropTypes.bool.isRequired,\n});\n\nfunction NodeCardUpdater({host}) {\n const dispatch = useDispatch();\n\n const updateFn = React.useCallback(() => {\n dispatch(loadNodeAttributes(host));\n }, [dispatch, host]);\n\n useUpdater(updateFn, {timeout: 15 * 1000, onlyOnce: !host});\n return null;\n}\n\nclass NodeCard extends Component {\n static propTypes = {\n // from parent\n handleClose: PropTypes.func.isRequired,\n handleKeyDown: PropTypes.func,\n // from connect\n node: nodeProps,\n tabletSlots: PropTypes.array,\n loadNodeAttributes: PropTypes.func.isRequired,\n };\n\n componentWillUnmount() {\n this.props.handleClose();\n }\n\n renderTop() {\n const {clusterConfig} = this.props;\n const {physicalHost, host} = this.props.node;\n return UIFactory.renderComponentsNodeCardTop({host, physicalHost, clusterConfig});\n }\n\n renderLocation(location, index) {\n return (\n <div className={block('location')} key={index}>\n <MetaTable\n items={[\n {\n key: 'uuid',\n value: (\n <span>\n {location.location_uuid}\n &nbsp;\n <ClipboardButton\n view=\"flat-secondary\"\n text={location.location_uuid}\n size=\"s\"\n />\n </span>\n ),\n },\n {key: 'location number', value: index + 1},\n {key: 'enabled', value: location.enabled.toString()},\n {key: 'full', value: location.full.toString()},\n {key: 'medium name', value: location.medium_name},\n {key: 'sessions', value: location.session_count},\n {\n key: 'chunks',\n value: hammer.format['Number'](location.chunk_count),\n },\n {\n key: 'used space',\n value: (\n <Progress\n value={location.locationProgress}\n text={location.locationText}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'available space',\n value: (\n <Template.FormattedValue\n value={location.available_space}\n format=\"Bytes\"\n />\n ),\n },\n {\n key: 'watermark space',\n value: (\n <Template.FormattedValue\n value={location.low_watermark_space}\n format=\"Bytes\"\n />\n ),\n },\n ]}\n />\n </div>\n );\n }\n\n renderLocations() {\n const {locations} = this.props.node;\n\n return (\n locations && (\n <CollapsibleSection\n size=\"s\"\n name=\"Locations\"\n className={block('locations')}\n collapsed\n >\n {map_(locations, (location, index) => this.renderLocation(location, index))}\n </CollapsibleSection>\n )\n );\n }\n\n renderAlerts() {\n const {alerts} = this.props.node;\n\n return (\n alerts?.length > 0 && (\n <CollapsibleSection size=\"s\" name=\"Alerts\" className={block('alerts')} collapsed>\n {map_(alerts, (alert) => (\n <YTAlertBlock key={alert.message} error={alert} />\n ))}\n </CollapsibleSection>\n )\n );\n }\n\n renderTabletSlots() {\n const {tabletSlots} = this.props;\n\n return (\n tabletSlots.length > 0 && (\n <CollapsibleSection size=\"s\" name=\"Tablet slots\" collapsed={false}>\n <NodeTabletSlots tabletSlots={tabletSlots} />\n </CollapsibleSection>\n )\n );\n }\n\n renderDefault() {\n const {systemTags, userTags} = this.props.node;\n\n return (\n <CollapsibleSection size=\"s\" name=\"Default\" className={block('default')}>\n <MetaTable\n items={[\n {\n key: 'system_tags',\n value: map_(systemTags, (tag) => <Label key={tag} text={tag} />),\n visible: systemTags?.length > 0,\n },\n {\n key: 'user_tags',\n value: map_(userTags, (tag) => <Label key={tag} text={tag} />),\n visible: userTags?.length > 0,\n },\n ...getNodeMetaItems(this.props.node),\n ]}\n />\n </CollapsibleSection>\n );\n }\n\n renderStorage() {\n const {node} = this.props;\n const hasMeta = hasStorageMeta(node);\n\n return (\n hasMeta && (\n <CollapsibleSection size=\"s\" name=\"Storage\" className={block('storage')} collapsed>\n <NodeStorage {...node} />\n </CollapsibleSection>\n )\n );\n }\n\n renderCpuAndMemory() {\n const {node} = this.props;\n const hasMeta = hasCpuAndMemoryMeta(node);\n\n return (\n hasMeta && (\n <CollapsibleSection\n size=\"s\"\n name=\"CPU and memory\"\n className={block('cpu')}\n collapsed\n >\n <NodeCpuAndMemory {...{node}} />\n </CollapsibleSection>\n )\n );\n }\n\n renderResources() {\n const {node} = this.props;\n const hasMeta = hasResourcesMeta(node);\n\n return (\n hasMeta && (\n <CollapsibleSection\n size=\"s\"\n name=\"Resources\"\n className={block('resources')}\n collapsed\n >\n <NodeResources {...node} />\n </CollapsibleSection>\n )\n );\n }\n\n renderCard() {\n const {cluster, handleClose, handleKeyDown, errorData, node} = this.props;\n\n return (\n <div className={block()} onKeyDown={handleKeyDown} tabIndex={-1}>\n <div className={block('header')}>\n <Link\n routed\n url={makeComponentsNodesUrl({cluster, host: node?.host})}\n className={block('node')}\n >\n {node?.host}\n </Link>\n\n <Button view=\"flat-secondary\" size=\"m\" onClick={handleClose}>\n <Icon awesome=\"times\" face={'light'} />\n </Button>\n </div>\n\n {errorData && <YTErrorBlock error={errorData} />}\n\n {Boolean(node) && (\n <React.Fragment>\n {this.renderTop()}\n {this.renderDefault()}\n {this.renderAlerts()}\n {this.renderLocations()}\n {this.renderTabletSlots()}\n {this.renderCpuAndMemory()}\n {this.renderStorage()}\n {this.renderResources()}\n </React.Fragment>\n )}\n </div>\n );\n }\n\n render() {\n return (\n <React.Fragment>\n <NodeCardUpdater host={this.props.host} />\n {this.renderCard()}\n </React.Fragment>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {node, loaded, error, errorData} = nodeSelector(state);\n const cluster = getCluster(state);\n\n return {\n cluster,\n error,\n errorData,\n loaded,\n node,\n tabletSlots: node && getSortedItems(state, {node}),\n clusterConfig: getCurrentClusterConfig(state),\n };\n};\n\nconst mapDispatchToProps = {\n loadNodeAttributes,\n};\n\nexport default compose(connect(mapStateToProps, mapDispatchToProps), withSplit)(NodeCard);\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport {useDispatch, useSelector} from '../../../../../store/redux-hooks';\nimport hammer from '../../../../../common/hammer';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\nimport memoize_ from 'lodash/memoize';\nimport filter_ from 'lodash/filter';\nimport reduce_ from 'lodash/reduce';\nimport map_ from 'lodash/map';\nimport includes_ from 'lodash/includes';\n\nimport ColumnSelector from '../../../../../components/ColumnSelector/ColumnSelector';\nimport ElementsTable from '../../../../../components/ElementsTable/ElementsTable';\nimport Radiobutton from '../../../../../components/RadioButton/RadioButton';\nimport TableInfo from '../../../../../pages/components/TableInfo/TableInfo';\nimport Dropdown from '../../../../../components/Dropdown/Dropdown';\nimport Button from '../../../../../components/Button/Button';\nimport Filter from '../../../../../components/Filter/Filter';\nimport Icon from '../../../../../components/Icon/Icon';\nimport Loader from '../../../../../components/Loader/Loader';\n\nimport LoadDataHandler from '../../../../../components/LoadDataHandler/LoadDataHandler';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport WithStickyToolbar from '../../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {Toolbar} from '../../../../../components/WithStickyToolbar/Toolbar/Toolbar';\n\nimport FiltersPresets from '../FilterPresets/FiltersPresets';\nimport SetupModal from '../SetupModal/SetupModal';\nimport NodeCard from '../NodeCard/NodeCard';\n\nimport {ComponentsNodeTypeSelector} from '../../../../../pages/system/Nodes/NodeTypeSelector';\n\nimport {\n getComponentNodesFiltersCount,\n getComponentNodesTableProps,\n getComponentsNodesNodeTypes,\n getRequiredAttributes,\n getVisibleNodes,\n} from '../../../../../store/selectors/components/nodes/nodes';\nimport {getSelectedColumns} from '../../../../../store/selectors/settings';\nimport {getSettingsEnableSideBar} from '../../../../../store/selectors/settings/settings-ts';\nimport {defaultColumns} from '../../../../../pages/components/tabs/nodes/tables';\nimport withVisible, {WithVisibleProps} from '../../../../../hocs/withVisible';\nimport {useUpdaterWithMemoizedParams} from '../../../../../hooks/use-updater';\nimport {isPaneSplit} from '../../../../../utils';\nimport {\n changeContentMode,\n changeHostFilter,\n getNodes,\n handleColumnsChange,\n} from '../../../../../store/actions/components/nodes/nodes';\nimport type {NodesState} from '../../../../../store/reducers/components/nodes/nodes/nodes';\n\nimport {mergeScreen, splitScreen as splitScreenAction} from '../../../../../store/actions/global';\nimport {KeyCode} from '../../../../../constants/index';\nimport {\n CONTENT_MODE,\n CONTENT_MODE_ITEMS,\n SPLIT_TYPE,\n} from '../../../../../constants/components/nodes/nodes';\nimport {RootState} from '../../../../../store/reducers';\n\nimport {NodeMaintenanceModal} from '../../../NodeMaintenanceModal/NodeMaintenanceModal';\n\nimport './Nodes.scss';\n\nconst block = cn('components-nodes');\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\ntype State = {\n preset: string;\n activeNodeHost?: string;\n selectedColumns: ReduxProps['selectedColumns'];\n nodes: Array<unknown>;\n};\n\nfunction NodesUpdater() {\n const dispatch = useDispatch();\n\n const attributes = useSelector(getRequiredAttributes);\n const nodeTypes = useSelector(getComponentsNodesNodeTypes);\n\n const updateFn = React.useCallback(\n (...args: Parameters<typeof getNodes>) => {\n dispatch(getNodes(...args));\n },\n [dispatch],\n );\n\n useUpdaterWithMemoizedParams(updateFn, undefined, {attributes, nodeTypes});\n\n return null;\n}\n\nclass Nodes extends React.Component<ReduxProps & WithVisibleProps, State> {\n state: State = {\n preset: '',\n activeNodeHost: undefined,\n selectedColumns: this.props.selectedColumns,\n nodes: [],\n };\n\n get allColumns() {\n const {nodesTableProps} = this.props;\n const {selectedColumns} = this.state;\n\n const columns = reduce_(\n nodesTableProps.columns.items,\n (acc, colInfo = {}, key) => {\n const hidden = 'hidden' in colInfo && colInfo.hidden;\n if (!hidden && key !== 'actions') {\n acc.push(key);\n }\n return acc;\n },\n [] as Array<string>,\n );\n\n return map_(columns, (column) => ({\n name: column,\n checked: includes_(selectedColumns, column),\n caption: hammer.format['ReadableField'](column),\n }));\n }\n\n get selectedIndex() {\n const {nodes, splitScreen} = this.props;\n const {activeNodeHost} = this.state;\n\n const hasSplit = isPaneSplit(splitScreen, SPLIT_TYPE);\n\n return hasSplit ? this.getSelectedIndex(activeNodeHost, nodes) : -1;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n getSelectedIndex = memoize_(\n (activeNodeHost: State['activeNodeHost'], nodes: ReduxProps['nodes'] = []) =>\n nodes.findIndex((node) => activeNodeHost === node.host),\n );\n\n handlePresetChange = ({name}: {name: string}) => this.setState({preset: name});\n\n handleItemClick = (_node: ReduxProps['nodes'][number], index: number) => {\n const {nodes, sideBarEnabled, splitScreenAction} = this.props;\n\n if (sideBarEnabled) {\n const paneClassNames = [block('node-pane'), block('info-pane')];\n\n this.setState({activeNodeHost: nodes[index].host, nodes});\n splitScreenAction(SPLIT_TYPE, paneClassNames);\n }\n };\n\n handleColumnsChange = ({items}: {items: Nodes['allColumns']}) => {\n const {handleColumnsChange} = this.props;\n\n const selectedItems = filter_(items, (column) => column.checked);\n const selectedColumns = [...map_(selectedItems, (column) => column.name), 'actions'];\n\n this.setState({selectedColumns});\n handleColumnsChange(selectedColumns);\n };\n\n handleKeyDown = (evt: React.KeyboardEvent<HTMLInputElement>) => {\n const key = evt.keyCode;\n\n switch (key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.selectNextSuggestion();\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.selectPrevSuggestion();\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.props.mergeScreen();\n break;\n }\n }\n };\n\n handleSetupModalClose = async () => {\n const {handleClose} = this.props;\n\n await handleClose();\n };\n\n handleContentModeChange = async (value: string) => {\n const {changeContentMode} = this.props;\n\n await changeContentMode(value as NodesState['contentMode']);\n };\n\n selectNextSuggestion() {\n const {nodes} = this.props;\n const index = this.selectedIndex;\n\n if (index >= 0 && index < nodes.length - 1) {\n this.setState({activeNodeHost: nodes[index + 1].host});\n }\n }\n\n selectPrevSuggestion() {\n const {nodes} = this.props;\n const index = this.selectedIndex;\n\n if (index > 0) {\n this.setState({activeNodeHost: nodes[index - 1].host});\n }\n }\n\n renderFilters() {\n const {\n changeHostFilter,\n hostFilter,\n contentMode,\n toggleVisible,\n totalItems,\n showingItems,\n filterCount,\n } = this.props;\n const isFiltered = totalItems !== showingItems;\n\n return (\n <div className={block('filters')}>\n <Filter\n className={block('filters-item')}\n hasClear\n value={hostFilter}\n onChange={changeHostFilter}\n placeholder=\"Filter hosts...\"\n pin={'round-round'}\n />\n\n <Button\n className={block('filters-item')}\n size=\"m\"\n onClick={toggleVisible}\n selected={isFiltered}\n >\n <Icon awesome=\"filter\" size={13} /> Filter {filterCount}\n </Button>\n\n <Dropdown\n className={block('filters-item')}\n trigger=\"click\"\n directions={['bottom']}\n button={\n <Button disabled={contentMode !== CONTENT_MODE.CUSTOM} pin={'round-round'}>\n <Icon awesome=\"table\" face=\"light\" size={13} />\n Columns\n </Button>\n }\n template={\n <ColumnSelector\n items={this.allColumns}\n onChange={this.handleColumnsChange}\n className={block('custom-column-selector')}\n />\n }\n />\n\n <ComponentsNodeTypeSelector className={block('filters-item')} />\n </div>\n );\n }\n\n renderToolbar() {\n const {contentMode, loading, showingItems, totalItems} = this.props;\n\n return (\n <React.Fragment>\n <Toolbar\n itemsToWrap={[\n {node: this.renderFilters(), growable: true},\n {node: <Loader visible={loading} />},\n {node: <TableInfo showingItems={showingItems} totalItems={totalItems} />},\n ]}\n />\n <Toolbar\n className={block('toolbar-2')}\n itemsToWrap={[\n {\n node: (\n <div className={block('table-presets')}>\n <Radiobutton\n size=\"m\"\n value={contentMode}\n items={CONTENT_MODE_ITEMS}\n name=\"components-nodes-content-mode\"\n onUpdate={this.handleContentModeChange}\n />\n </div>\n ),\n },\n ]}\n />\n </React.Fragment>\n );\n }\n\n renderContent() {\n const {contentMode, nodes, splitScreen, initialLoading, mergeScreen, nodesTableProps} =\n this.props;\n const {activeNodeHost, selectedColumns} = this.state;\n\n const hasSplit = isPaneSplit(splitScreen, SPLIT_TYPE);\n\n const columns = {\n ...nodesTableProps.columns,\n sets: {\n ...nodesTableProps.columns.sets,\n custom: {items: selectedColumns},\n },\n mode: contentMode,\n };\n\n return (\n <div className={block('content', {split: hasSplit})}>\n <FiltersPresets onChange={this.handlePresetChange} />\n\n <ElementsTable\n {...nodesTableProps}\n onItemClick={this.handleItemClick}\n isLoading={initialLoading}\n columns={columns}\n items={nodes}\n css={block()}\n templates={nodesTableProps.templates}\n selectedIndex={this.selectedIndex}\n />\n\n {hasSplit && (\n <NodeCard\n host={activeNodeHost}\n handleClose={mergeScreen}\n handleKeyDown={this.handleKeyDown}\n />\n )}\n </div>\n );\n }\n\n render() {\n const {visible} = this.props;\n const {preset} = this.state;\n\n return (\n <ErrorBoundary>\n <NodesUpdater />\n <LoadDataHandler {...this.props}>\n <div className={block()} onKeyDown={this.handleKeyDown} tabIndex={-1}>\n <WithStickyToolbar\n bottomMargin=\"regular\"\n doubleHeight\n toolbar={this.renderToolbar()}\n content={this.renderContent()}\n />\n\n <SetupModal\n key={preset}\n visible={visible}\n handleClose={this.handleSetupModalClose}\n />\n\n <NodeMaintenanceModal />\n </div>\n </LoadDataHandler>\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {splitScreen} = state.global;\n const {contentMode, nodes, loading, loaded, error, errorData, hostFilter} =\n state.components.nodes.nodes;\n\n const visibleNodes = getVisibleNodes(state);\n const selectedColumns = getSelectedColumns(state) || defaultColumns;\n const initialLoading = loading && !loaded;\n\n const nodesTableProps = getComponentNodesTableProps(state);\n\n const sideBarEnabled = getSettingsEnableSideBar(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n\n nodes: visibleNodes,\n totalItems: nodes.length,\n showingItems: visibleNodes.length,\n selectedColumns,\n hostFilter,\n contentMode,\n splitScreen,\n initialLoading,\n nodesTableProps,\n sideBarEnabled,\n nodeTypes: getComponentsNodesNodeTypes(state),\n filterCount: getComponentNodesFiltersCount(state),\n };\n};\n\nconst mapDispatchToProps = {\n changeContentMode,\n splitScreenAction,\n changeHostFilter,\n mergeScreen,\n handleColumnsChange,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default compose(connector, withVisible)(Nodes);\n","// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport CancelHelper from '../../../utils/cancel-helper';\nimport {\n CLOSE_SHARD_NAME_EDITOR,\n GET_SHARDS,\n OPEN_SHARD_NAME_EDITOR,\n SET_SHARD_NAME,\n} from '../../../constants/components/shards';\nimport {YTApiId, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport type {AppDispatch} from '../../store.main';\n\nconst requests = new CancelHelper();\n\nexport function getShards() {\n return (dispatch: AppDispatch) => {\n dispatch({type: GET_SHARDS.REQUEST});\n\n requests.removeAllRequests();\n return ytApiV3Id\n .list(YTApiId.componentsShards, {\n parameters: {\n path: '//sys/cypress_shards',\n attributes: ['id', 'name', 'total_account_statistics'],\n },\n cancellation: requests.saveCancelToken,\n })\n .then((shards) => {\n dispatch({\n type: GET_SHARDS.SUCCESS,\n data: {shards},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_SHARDS.CANCELLED});\n } else {\n dispatch({\n type: GET_SHARDS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function setShardName(id: string, name: string) {\n return (dispatch: AppDispatch) => {\n dispatch({type: SET_SHARD_NAME.REQUEST});\n\n return yt.v3\n .set({path: `//sys/cypress_shards/${id}/@name`}, name)\n .then(() => {\n dispatch({type: SET_SHARD_NAME.SUCCESS});\n dispatch(getShards());\n dispatch(closeNameEditor());\n })\n .catch((error: unknown) => {\n dispatch({\n type: SET_SHARD_NAME.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function openNameEditor(id: string) {\n return {\n type: OPEN_SHARD_NAME_EDITOR,\n data: {id},\n };\n}\n\nexport function closeNameEditor() {\n return {\n type: CLOSE_SHARD_NAME_EDITOR,\n } as const;\n}\n\nexport function abortAllRequests() {\n return (dispatch: AppDispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_SHARDS.CANCELLED});\n };\n}\n","import React, {Fragment, useState} from 'react';\nimport {ResolveThunks, connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Button from '../../../../components/Button/Button';\nimport Modal from '../../../../components/Modal/Modal';\nimport {YTErrorBlock} from '../../../../components/Error/Error';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport {\n closeNameEditor,\n openNameEditor,\n setShardName,\n} from '../../../../store/actions/components/shards';\nimport type {RootState} from '../../../../store/reducers';\n\nName.propTypes = {\n // from parent\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n className: PropTypes.string.isRequired,\n\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n visible: PropTypes.bool.isRequired,\n editId: PropTypes.string.isRequired,\n\n setShardName: PropTypes.func.isRequired,\n openNameEditor: PropTypes.func.isRequired,\n closeNameEditor: PropTypes.func.isRequired,\n};\n\ntype OwnProps = {\n id: string;\n name: string;\n className: string;\n};\n\ntype StateProps = ReturnType<typeof mapStateToProps>;\n\ntype DispatchProps = ResolveThunks<typeof mapDispatchToProps>;\n\ntype NameProps = OwnProps & StateProps & DispatchProps;\n\nfunction Name({\n name: initialName,\n id,\n editId,\n className,\n visible,\n openNameEditor,\n closeNameEditor,\n setShardName,\n loading,\n error,\n errorData,\n}: NameProps) {\n const [name, changeName] = useState(initialName);\n const handleConfirm = () => setShardName(id, name);\n const handleOpen = () => openNameEditor(id);\n const isConfirmDisabled = () => name === initialName;\n\n return (\n <div className={className}>\n {initialName}\n <Button size=\"m\" view=\"flat-secondary\" onClick={handleOpen} title=\"Edit name\">\n <Icon awesome=\"pencil\" />\n </Button>\n\n {visible && id === editId && (\n <Modal\n isConfirmDisabled={isConfirmDisabled}\n onConfirm={handleConfirm}\n onCancel={closeNameEditor}\n loading={loading}\n visible={visible}\n title=\"Edit name\"\n content={\n <Fragment>\n <TextInput\n size=\"m\"\n value={name}\n onUpdate={changeName}\n placeholder=\"Enter name...\"\n />\n {error && <YTErrorBlock error={errorData} />}\n </Fragment>\n }\n />\n )}\n </div>\n );\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {nameId, nameVisible, nameLoading, nameLoaded, nameError, nameErrorData} =\n state.components.shards;\n\n return {\n loading: nameLoading,\n loaded: nameLoaded,\n error: nameError,\n errorData: nameErrorData,\n visible: nameVisible,\n editId: nameId,\n };\n};\n\nconst mapDispatchToProps = {\n setShardName,\n openNameEditor,\n closeNameEditor,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Name);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../common/hammer';\nimport {ResolveThunks, connect} from 'react-redux';\n\nimport Button from '../../../../components/Button/Button';\n\nimport {openAttributesModal} from '../../../../store/actions/modals/attributes-modal';\n\nNodeCount.propTypes = {\n // from parent\n count: PropTypes.number.isRequired,\n className: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n\n // from connect\n openAttributesModal: PropTypes.func.isRequired,\n};\n\ntype OwnProps = {\n count: number;\n className: string;\n id: string;\n name: string;\n};\n\ntype DispatchProps = ResolveThunks<typeof mapDispatchToProps>;\n\ntype NodeCountProps = OwnProps & DispatchProps;\n\nfunction NodeCount({id, name, count, className, openAttributesModal}: NodeCountProps) {\n const handleClick = () =>\n openAttributesModal({\n title: name,\n path: `//sys/cypress_shards/${id}`,\n attribute: 'account_statistics',\n });\n\n return (\n <div className={className}>\n {hammer.format['Number'](count)}\n <Button\n size=\"m\"\n view=\"flat-secondary\"\n onClick={handleClick}\n title=\"view account statistics\"\n >\n View\n </Button>\n </div>\n );\n}\n\nconst mapDispatchToProps = {openAttributesModal};\n\nexport default connect(null, mapDispatchToProps)(NodeCount);\n","import React, {useEffect} from 'react';\nimport {ResolveThunks, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport {FormattedId} from '../../../../components/formatters';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport {Loader} from '@gravity-ui/uikit';\n\nimport Name from './Name';\nimport NodeCount from './NodeCount';\n\nimport {abortAllRequests, getShards} from '../../../../store/actions/components/shards';\nimport type {Shard} from '../../../../store/reducers/components/shards';\n\nimport './Shards.scss';\nimport {getCluster} from '../../../../store/selectors/global';\nimport type {RootState} from '../../../../store/reducers';\n\nconst block = cn('components-shards');\n\nconst tableSettings = {\n columns: {\n items: {\n id: {\n align: 'left',\n },\n name: {\n align: 'left',\n },\n account_statistics: {\n align: 'left',\n },\n node_count: {\n align: 'left',\n caption: 'Node count',\n },\n },\n sets: {\n default: {\n items: ['id', 'name', 'node_count'],\n },\n },\n mode: 'default',\n },\n theme: 'light',\n striped: false,\n cssHover: true,\n css: block('table'),\n computeKey(item: Shard) {\n return item.id;\n },\n};\n\ntype OwnProps = {\n id: string;\n name: string;\n className: string;\n};\n\ntype StateProps = ReturnType<typeof mapStateToProps>;\n\ntype DispatchProps = ResolveThunks<typeof mapDispatchToProps>;\n\ntype ShardsProps = OwnProps & StateProps & DispatchProps;\n\nfunction Shards(props: ShardsProps) {\n const {cluster, getShards, abortAllRequests} = props;\n useEffect(() => {\n getShards();\n return abortAllRequests;\n }, [cluster]);\n\n const idTemplate = (item: Shard) => <FormattedId id={item.id} />;\n const nameTemplate = (item: Shard) => (\n <Name className={block('name')} name={item.name} id={item.id} />\n );\n const nodeCountTemplate = (item: Shard) => (\n <NodeCount\n count={item['total_account_statistics']['node_count']}\n className={block('node-count')}\n name={item.name}\n id={item.id}\n />\n );\n\n const templates = {\n id: idTemplate,\n name: nameTemplate,\n node_count: nodeCountTemplate,\n };\n\n const {loading, loaded, error, errorData, shards} = props;\n const initialLoading = loading && !loaded;\n\n return (\n <ErrorBoundary>\n <LoadDataHandler loaded={loading} error={error} errorData={errorData}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? (\n <Loader />\n ) : (\n <ElementsTable\n {...tableSettings}\n templates={templates}\n items={shards}\n css={block()}\n />\n )}\n </div>\n </LoadDataHandler>\n </ErrorBoundary>\n );\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {loading, loaded, error, errorData, shards} = state.components.shards;\n\n return {\n loading,\n loaded,\n error,\n errorData,\n shards,\n cluster: getCluster(state),\n };\n};\n\nconst mapDispatchToProps = {\n getShards,\n abortAllRequests,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Shards);\n","import {useSelector} from '../../../../../store/redux-hooks';\nimport React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\nimport NodeCpuAndMemory, {\n hasCpuAndMemoryMeta,\n} from '../../../../../pages/components/tabs/node/NodeCpuAndMemory/NodeCpuAndMemory';\nimport NodeResources, {\n hasResourcesMeta,\n} from '../../../../../pages/components/tabs/node/NodeResources/NodeResources';\nimport NodeStorage, {\n hasStorageMeta,\n} from '../../../../../pages/components/tabs/node/NodeStorage/NodeStorage';\nimport {nodeSelector} from '../../../../../store/selectors/components/node/node';\n\nimport './NodeGeneralTab.scss';\nimport {YTAlertBlock} from '../../../../../components/Alert/Alert';\n\nconst block = cn('node-general');\n\nfunction NodeGeneralTab(): ReturnType<React.VFC> {\n const {node} = useSelector(nodeSelector);\n\n if (!node) {\n return null;\n }\n\n if (node.state === 'offline') {\n return <YTAlertBlock message=\"Node is offline\" />;\n }\n\n return (\n <>\n {hasCpuAndMemoryMeta(node) && (\n <CollapsibleSection\n size=\"s\"\n name=\"Compute Resources\"\n className={block('cpu')}\n collapsed={false}\n >\n <NodeCpuAndMemory {...{node}} />\n </CollapsibleSection>\n )}\n {hasStorageMeta(node) && (\n <CollapsibleSection\n size=\"s\"\n name=\"Storage\"\n className={block('storage')}\n collapsed={false}\n >\n <NodeStorage {...node} />\n </CollapsibleSection>\n )}\n {hasResourcesMeta(node) && (\n <CollapsibleSection\n size=\"s\"\n name=\"Slot Resources\"\n className={block('resources')}\n collapsed={false}\n >\n <NodeResources {...node} />\n </CollapsibleSection>\n )}\n </>\n );\n}\n\nexport default React.memo(NodeGeneralTab);\n","import forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport max_ from 'lodash/max';\nimport sum_ from 'lodash/sum';\nimport toArray_ from 'lodash/toArray';\n\nimport type {RootState} from '../../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport {NodeMemoryUsagePreload} from '../../../../types/components/node';\nimport {\n TreeNode,\n filterTree,\n flattenTree,\n prepareTree,\n sortTree,\n} from '../../../../common/hammer/tree-list';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {SortState} from '../../../../types';\nimport {orderTypeToOldSortState} from '../../../../utils/sort-helpers';\n\nexport const nodeMemorySelector = (state: RootState) => state.components.node.memory;\n\nexport const getNodeMemoryLoaded = (state: RootState) => state.components.node.memory.loaded;\n\nexport const getNodeMemoryLoading = (state: RootState) => state.components.node.memory.loading;\n\nexport const getNodeMemoryError = (state: RootState) => state.components.node.memory.error;\n\nexport const getNodeMemoryViewMode = (state: RootState) => state.components.node.memory.viewMode;\n\nexport const getNodeMemoryFilter = (state: RootState) => state.components.node.memory.filter;\n\nexport const getNodeMemoryStateHost = (state: RootState) => state.components.node.memory.host;\n\nexport const getNodeMemorySortOrder = (state: RootState) => state.components.node.memory.sortOrder;\n\nexport const getNodeMemoryCollapsedBundles = (state: RootState) =>\n state.components.node.memory.collapsedBundles;\n\nconst getNodeMemoryUsageTotal = (state: RootState) => state.components.node.memory.memory?.total;\n\nconst getNodeMemoryUsageBundles = (state: RootState) =>\n state.components.node.memory.memory?.bundles;\n\nconst getNodeMemoryUsageTables = (state: RootState) => state.components.node.memory.memory?.tables;\n\nexport const getNodeMemoryUsageTablesSortOrder = (state: RootState) =>\n state.components.node.memory.tablesSortOrder;\n\nexport const getNodeMemoryUsageTotalStorePreload = createSelector(\n [getNodeMemoryUsageTotal],\n calculateStorePreload,\n);\n\nexport const getNodeMemoryUsageTotalTableStatic = (state: RootState) =>\n state.components.node.memory.memory?.total.tablet_static;\n\nexport const getNodeMemoryUsageTotalRowCache = (state: RootState) =>\n state.components.node.memory.memory?.total.row_cache;\n\nfunction calculateStorePreload(total?: NodeMemoryUsagePreload) {\n const {\n preload_store_count: allCount = NaN,\n preload_pending_store_count: pending = NaN,\n preload_failed_store_count: failed = NaN,\n } = total || {};\n\n return {\n allCount,\n pending,\n failed,\n completed: allCount - pending - failed,\n };\n}\n\nexport const getNodeMemoryUsageTotalTabletDynamic = createSelector(\n [getNodeMemoryUsageTotal],\n (total) => {\n const {active, passive, backing, usage, limit, ...others} = total?.tablet_dynamic || {};\n\n return {\n usage,\n limit,\n active,\n backing,\n passive,\n other: !usage ? 0 : usage - sum_([active, passive, backing, ...toArray_(others)]),\n };\n },\n);\n\nexport interface NodeMemoryInfo {\n name: string;\n parent: string;\n storePreload: ReturnType<typeof calculateStorePreload>;\n rowCache: number;\n rowCacheLimit: number;\n tabletStatic: number;\n tabletStaticLimit: number;\n tabletDynamic: Record<string, number>;\n tabletDynamicSum: number;\n isBundle?: boolean;\n isCollapsed?: boolean;\n url: string;\n}\n\nconst getNodeMemoryUsageBundlesByName = createSelector(\n [getNodeMemoryUsageBundles, getCluster],\n (bundles, cluster) => {\n const itemsByName: Record<string, NodeMemoryInfo> = {};\n\n let maxTabletStatic = 0;\n let maxRowCache = 0;\n\n forEach_(bundles, ({total}, bundleName) => {\n const {usage, limit: _ignore, ...rest} = total.tablet_dynamic;\n const tmp = (itemsByName[bundleName] = {\n name: bundleName,\n parent: '<Root>',\n storePreload: calculateStorePreload(total),\n rowCache: total.row_cache.usage,\n rowCacheLimit: 0,\n tabletStatic: total.tablet_static.usage,\n tabletStaticLimit: 0,\n tabletDynamic: total.tablet_dynamic,\n tabletDynamicSum: usage ?? sum_(toArray_(rest)),\n isBundle: true,\n url: `/${cluster}/tablet_cell_bundles/tablet_cells?activeBundle=${bundleName}`,\n });\n\n maxTabletStatic = max_([maxTabletStatic, tmp.tabletStatic])!;\n maxRowCache = max_([maxRowCache, tmp.rowCache])!;\n });\n\n forEach_(itemsByName, (item) => {\n item.tabletStaticLimit = maxTabletStatic;\n item.rowCacheLimit = maxRowCache;\n });\n\n return itemsByName;\n },\n);\n\nconst getNodeMemoryUsageBundlesTreeRoot = createSelector(\n [getNodeMemoryUsageBundles, getNodeMemoryUsageBundlesByName, getCluster],\n (bundles, bundlesInfo, cluster) => {\n const itemsByName: Record<string, NodeMemoryInfo> = {...bundlesInfo};\n\n forEach_(bundles, ({cells}, bundleName) => {\n const bundle = itemsByName[bundleName] || {};\n forEach_(cells, (item, cellName) => {\n itemsByName[cellName] = {\n name: cellName,\n parent: bundleName,\n storePreload: calculateStorePreload(item),\n rowCache: item.row_cache.usage,\n rowCacheLimit: bundle.rowCache,\n tabletStatic: item.tablet_static.usage,\n tabletStaticLimit: bundle.tabletStatic,\n tabletDynamic: {\n ...item.tablet_dynamic,\n limit: bundle.tabletDynamicSum,\n },\n tabletDynamicSum: sum_(toArray_(item.tablet_dynamic)),\n url: `/${cluster}/tablet_cell_bundles/tablet_cells?id=${cellName}&activeBundle=${bundleName}`,\n };\n });\n });\n\n const root = prepareTree(itemsByName, (item) => item.parent)['<Root>'];\n return root;\n },\n);\n\nexport const getNodeMemoryUsageBundlesTreeRootFiltered = createSelector(\n [getNodeMemoryUsageBundlesTreeRoot, getNodeMemoryCollapsedBundles, getNodeMemoryFilter],\n (root, collapsedBundles, filter) => {\n const collapsed = new Set(collapsedBundles);\n let res: typeof root = {...root};\n if (filter) {\n res = filterTree(\n res,\n (item) => {\n return item.name.indexOf(filter) !== -1;\n },\n false,\n );\n } else {\n res.children = map_(res.children, (item) => {\n if (!collapsed.has(item.name)) {\n return item;\n } else {\n return {\n ...item,\n children: [],\n attributes: {\n ...item.attributes,\n isCollapsed: true,\n },\n };\n }\n });\n }\n return res;\n },\n);\n\nexport const getNodeMemoryUsageBundlesItems = createSelector(\n [getNodeMemoryUsageBundlesTreeRootFiltered, getNodeMemorySortOrder],\n (root, [sortOrder]) => {\n if (!root) {\n return [];\n }\n sortTreeInPlace(root, sortOrder);\n return flattenTree(root);\n },\n);\n\nfunction sortTreeInPlace(root: TreeNode<NodeMemoryInfo, NodeMemoryInfo>, sortOrder?: SortState) {\n const {column, order} = sortOrder || {};\n if (column && order) {\n sortTree(root, orderTypeToOldSortState(column, order), {\n name: {\n sort(item) {\n return item.attributes.name;\n },\n sortWithUndefined: true,\n },\n rowCache: {\n sort(item) {\n return item.attributes.rowCache;\n },\n sortWithUndefined: true,\n },\n tabletStatic: {\n sort(item) {\n return item.attributes.tabletStatic;\n },\n sortWithUndefined: true,\n },\n tabletDynamic: {\n sort(item) {\n return item.attributes.tabletDynamicSum;\n },\n sortWithUndefined: true,\n },\n storePreload: {\n sort(item) {\n return item.attributes.storePreload.allCount;\n },\n sortWithUndefined: true,\n },\n });\n }\n}\n\nconst allowBundlesForTables = createSelector([getNodeMemoryUsageTables], (tables) => {\n const [first] = toArray_(tables);\n return first?.tablet_cell_bundle !== undefined;\n});\n\nconst getNodeMemoryUsageTablesAndBundlesByName = createSelector(\n [allowBundlesForTables, getNodeMemoryUsageTables, getCluster, getNodeMemoryUsageBundlesByName],\n (allowBundles, tables, cluster, bundles) => {\n let maxRowCache = 0;\n let maxStatic = 0;\n let maxDynamic = 0;\n\n const tablesByName: Record<string, NodeMemoryInfo> = allowBundles ? {...bundles} : {};\n\n forEach_(tables, (item, name) => {\n const parent = allowBundles ? item.tablet_cell_bundle : '<Root>';\n const bundle = bundles[parent] || {};\n const tmp = (tablesByName[name] = {\n name: name,\n parent,\n\n storePreload: calculateStorePreload(item),\n rowCache: item.row_cache.usage,\n rowCacheLimit: bundle.rowCache,\n tabletStatic: item.tablet_static.usage,\n tabletStaticLimit: bundle.tabletStatic,\n tabletDynamic: {\n ...item.tablet_dynamic,\n limit: bundle.tabletDynamicSum,\n },\n tabletDynamicSum: sum_(toArray_(item.tablet_dynamic)),\n url: `/${cluster}/navigation?path=${encodeURIComponent(name)}`,\n });\n if (!allowBundles) {\n maxDynamic = max_([maxDynamic, tmp.tabletDynamicSum])!;\n maxRowCache = max_([maxRowCache, tmp.rowCache])!;\n maxStatic = max_([maxStatic, tmp.tabletStatic])!;\n }\n });\n\n if (!allowBundles) {\n forEach_(tablesByName, (item) => {\n if (item.isBundle) {\n return;\n }\n\n item.tabletDynamic.limit = maxDynamic;\n item.tabletStaticLimit = maxStatic;\n item.rowCacheLimit = maxRowCache;\n });\n }\n\n return tablesByName;\n },\n);\n\nexport const getNodeMemoryUsageTablesTree = createSelector(\n [getNodeMemoryUsageTablesAndBundlesByName],\n (tablesAndBundles) => {\n const tree = prepareTree(tablesAndBundles, (item) => item.parent);\n\n return tree['<Root>'];\n },\n);\n\nexport const getNodeMemoryUsageTablesFiltered = createSelector(\n [getNodeMemoryUsageTablesTree, getNodeMemoryCollapsedBundles, getNodeMemoryFilter],\n (root, collapsedBundles, filter) => {\n const collapsed = new Set(collapsedBundles);\n let res: typeof root;\n if (filter) {\n res = filterTree(root, (item: TreeNode<NodeMemoryInfo, NodeMemoryInfo>) => {\n return item.name.indexOf(filter) !== -1;\n });\n } else {\n res = {\n ...root,\n children: map_(root?.children, (item) => {\n if (!collapsed.has(item.name)) {\n return item;\n }\n const res: typeof item = {\n ...item,\n attributes: {\n ...item.attributes,\n isCollapsed: true,\n },\n children: [],\n };\n return res;\n }),\n };\n }\n\n return res;\n },\n);\n\nexport const getNodeMemoryUsageTablesItemsSorted = createSelector(\n [getNodeMemoryUsageTablesFiltered, getNodeMemoryUsageTablesSortOrder],\n (root, [sortOrder]) => {\n if (sortOrder && root) {\n sortTreeInPlace(root, sortOrder);\n }\n\n const items = !root ? [] : flattenTree(root);\n\n return items;\n },\n);\n","import React from 'react';\nimport {useSelector} from '../../../../../store/redux-hooks';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport format from '../../../../../common/hammer/format';\n\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\n\nimport {\n getNodeMemoryUsageTotalRowCache,\n getNodeMemoryUsageTotalStorePreload,\n getNodeMemoryUsageTotalTableStatic,\n getNodeMemoryUsageTotalTabletDynamic,\n} from '../../../../../store/selectors/components/node/memory';\nimport {\n STACKED_PROGRESS_BAR_COLORS,\n getProgressBarColorByIndex,\n} from '../../../../../constants/colors';\n\nimport './NodeBundlesTotal.scss';\n\nconst block = cn('node-bundles-total');\n\nconst progressClass = block('progress');\n\nfunction NodeBundlesTotal() {\n const tabletDynamic = useSelector(getNodeMemoryUsageTotalTabletDynamic) || {};\n const tabletStatic = useSelector(getNodeMemoryUsageTotalTableStatic) || {};\n const rowCache = useSelector(getNodeMemoryUsageTotalRowCache) || {};\n const storePreload = useSelector(getNodeMemoryUsageTotalStorePreload);\n\n return (\n <div className={block(null, 'elements-section')}>\n <div className={'elements-heading elements-heading_size_xs'}>Total</div>\n <MetaTable\n items={[\n {\n key: 'Tablet dynamic',\n value: (\n <TabletDynamicTotal data={tabletDynamic} className={progressClass} />\n ),\n className: block('meta-value'),\n },\n {\n key: 'Tablet static',\n value: <UsageLimitProgress {...tabletStatic} className={progressClass} />,\n },\n {\n key: 'Row cache',\n value: <UsageLimitProgress {...rowCache} className={progressClass} />,\n },\n {\n key: 'Store preload',\n value: <StorePreload data={storePreload} className={progressClass} />,\n },\n ]}\n />\n </div>\n );\n}\n\nconst COLORS: Partial<Record<keyof TabletDynamicTotalProps['data'], string>> = {\n active: STACKED_PROGRESS_BAR_COLORS[4],\n backing: STACKED_PROGRESS_BAR_COLORS[7],\n other: STACKED_PROGRESS_BAR_COLORS[2],\n passive: STACKED_PROGRESS_BAR_COLORS[0],\n};\n\ninterface TabletDynamicTotalProps {\n className?: string;\n data: {\n usage?: number;\n limit?: number;\n active?: number;\n backing?: number;\n passive?: number;\n other?: number;\n };\n hideLimit?: boolean;\n limitTooltipTitle?: React.ReactNode;\n}\n\nexport function TabletDynamicTotal(props: TabletDynamicTotalProps) {\n const {\n className,\n data: {usage, limit, ...rest},\n hideLimit,\n limitTooltipTitle,\n } = props;\n\n const {stack, text, content} = React.useMemo(() => {\n let usageSum = 0;\n const stack = map_(rest, (value, key) => {\n usageSum += value || 0;\n const v = (100 * value!) / limit!;\n return {\n value: isNaN(v) ? 0 : v,\n key: key as keyof typeof props.data,\n color: '',\n };\n });\n\n return {\n stack,\n text: hideLimit\n ? format.Bytes(usage ?? usageSum)\n : `${format.Bytes(usage ?? usageSum)} / ${format.Bytes(limit)}`,\n content: (\n <div className={block('progress-tooltip')}>\n {map_(stack, (item, index) => {\n const {key} = item;\n item.color = COLORS[key] ?? getProgressBarColorByIndex(index, 8);\n\n return (\n <React.Fragment key={key}>\n <div\n style={{\n backgroundColor: item.color,\n borderRadius: '50%',\n width: '1em',\n height: '1em',\n }}\n />\n <div>{key}</div>\n <div>{format.Bytes(props.data[key])}</div>\n </React.Fragment>\n );\n })}\n {limitTooltipTitle && (\n <React.Fragment>\n <div />\n <div>{limitTooltipTitle}</div>\n <div>{format.Bytes(props.data.limit)}</div>\n </React.Fragment>\n )}\n </div>\n ),\n };\n }, [props.data]);\n\n return (\n <Tooltip content={content} className={className}>\n <Progress stack={stack} text={text} />\n </Tooltip>\n );\n}\n\nexport function UsageLimitProgress(props: {\n className?: string;\n usage?: number;\n limit?: number;\n hideLimit?: boolean;\n}) {\n const {className, usage, limit, hideLimit} = props;\n const text = hideLimit\n ? format.Bytes(usage)\n : `${format.Bytes(usage)} / ${format.Bytes(limit)}`;\n return (\n <div className={className}>\n <Progress value={((usage || 0) / (limit || 0)) * 100} text={text} theme={'info'} />\n </div>\n );\n}\n\nexport function StorePreload(props: {\n className?: string;\n data: {\n allCount: number;\n pending: number;\n failed: number;\n completed: number;\n };\n}) {\n const {\n className,\n data: {allCount, pending, failed, completed},\n } = props;\n const {stack, text, content} = React.useMemo(() => {\n const stack = [\n {\n value: (completed / allCount) * 100,\n theme: 'success' as const,\n key: 'completed' as const,\n },\n {\n value: (pending / allCount) * 100,\n theme: 'default' as const,\n key: 'pending' as const,\n },\n {\n value: (failed / allCount) * 100,\n theme: 'danger' as const,\n key: 'failed' as const,\n },\n ].filter(({value}) => value > 0);\n return {\n stack,\n text: [completed, allCount].join(' / '),\n content: (\n <div className={block('progress-tooltip')}>\n {map_([...stack, {key: 'allCount' as const, theme: 'info'}], ({key, theme}) => {\n return (\n <React.Fragment key={key}>\n <div\n className={block('color-circle', {\n theme,\n })}\n />\n <div className={block('progress-tooltip-title')}>\n {key === 'allCount' ? 'Total' : key}\n </div>\n <div>{format.Number(props.data[key])}</div>\n </React.Fragment>\n );\n })}\n </div>\n ),\n };\n }, [props.data]);\n\n if (!allCount || isNaN(allCount)) {\n return format.NO_VALUE;\n }\n\n return (\n <Tooltip className={className} content={content} placement={['top', 'bottom']}>\n <Progress stack={stack} text={text} />\n </Tooltip>\n );\n}\n\nexport default React.memo(NodeBundlesTotal);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport reduce_ from 'lodash/reduce';\n\nimport {Column} from '@gravity-ui/react-data-table';\n\nimport {FlatItem} from '../../../../../common/hammer/tree-list';\nimport Link from '../../../../../components/Link/Link';\nimport Icon from '../../../../../components/Icon/Icon';\nimport Button from '../../../../../components/Button/Button';\nimport ColumnHeader from '../../../../../components/ColumnHeader/ColumnHeader';\nimport DataTableYT, {\n DATA_TABLE_YT_SETTINGS,\n} from '../../../../../components/DataTableYT/DataTableYT';\nimport {NodeMemoryInfo} from '../../../../../store/selectors/components/node/memory';\n\nimport {\n StorePreload,\n TabletDynamicTotal,\n UsageLimitProgress,\n} from '../NodeBundlesTotal/NodeBundlesTotal';\nimport {OrderType} from '../../../../../utils/sort-helpers';\nimport {SortState} from '../../../../../types';\nimport {SecondaryBold} from '../../../../../components/Text/Text';\n\nimport './NodeMemoryDetailsTable.scss';\n\nconst block = cn('node-memory-details-table');\n\nconst progressClassName = block('progress');\n\ninterface Props {\n items: Array<FlatItem<NodeMemoryInfo, NodeMemoryInfo>>;\n loading?: boolean;\n loaded?: boolean;\n toggleExpand: (v: Props['items'][0]) => void;\n onSort: (sortOrder: Array<SortState>) => void;\n nameColumnTitle: string;\n sortState: Array<SortState>;\n}\n\nfunction NodeMemoryDetailsTable(props: Props) {\n const {items, loading, loaded, toggleExpand, onSort, nameColumnTitle, sortState} = props;\n\n const toggleSort = React.useCallback((column: string, nextOrder: OrderType) => {\n onSort([{column, order: nextOrder}]);\n }, []);\n\n const sortStateByName = React.useMemo(() => {\n return reduce_(\n sortState,\n (acc, item) => {\n const {column, order} = item;\n if (!column || !order) {\n return acc;\n }\n acc[column] = order;\n return acc;\n },\n {} as Record<string, OrderType>,\n );\n }, [sortState]);\n\n const columns = React.useMemo(() => {\n function headerProps(name: string, title: string) {\n return {\n name,\n header: (\n <ColumnHeader\n onSort={toggleSort}\n column={name}\n title={title}\n order={sortStateByName[name]}\n allowedOrderTypes={['desc', 'asc']}\n />\n ),\n };\n }\n const res: Array<Column<(typeof items)[0]>> = [\n {\n ...headerProps('name', nameColumnTitle),\n render: ({row: item}) => {\n const {\n name,\n level,\n attributes: {isBundle, isCollapsed, url},\n } = item;\n return (\n <React.Fragment>\n {isBundle && (\n <Button view={'flat-secondary'}>\n <Icon awesome={isCollapsed ? 'angle-right' : 'angle-down'} />\n </Button>\n )}\n <Link\n className={block('name', {\n level: String(level),\n })}\n theme={'primary'}\n url={url}\n routed\n >\n {name}\n </Link>\n </React.Fragment>\n );\n },\n },\n\n {\n ...headerProps('tabletDynamic', 'Tablet dynamic'),\n render: ({\n row: {\n attributes: {tabletDynamic, isBundle, parent},\n },\n }) => {\n return (\n <TabletDynamicTotal\n data={tabletDynamic}\n className={progressClassName}\n hideLimit={!isBundle}\n limitTooltipTitle={\n isBundle ? (\n ''\n ) : (\n <>\n Total <SecondaryBold>{parent}</SecondaryBold> usage\n </>\n )\n }\n />\n );\n },\n align: 'center',\n width: 220,\n },\n {\n ...headerProps('tabletStatic', 'Tablet static'),\n render: ({\n row: {\n attributes: {tabletStatic, tabletStaticLimit},\n },\n }) => {\n return (\n <UsageLimitProgress\n className={progressClassName}\n usage={tabletStatic}\n limit={tabletStaticLimit}\n hideLimit={true}\n />\n );\n },\n align: 'center',\n width: 220,\n },\n {\n ...headerProps('rowCache', 'Row cache'),\n render: ({\n row: {\n attributes: {rowCache, rowCacheLimit},\n },\n }) => {\n return (\n <UsageLimitProgress\n className={progressClassName}\n usage={rowCache}\n limit={rowCacheLimit}\n hideLimit={true}\n />\n );\n },\n align: 'center',\n width: 220,\n },\n {\n ...headerProps('storePreload', 'Store preload'),\n render: ({\n row: {\n attributes: {storePreload},\n },\n }) => {\n return <StorePreload data={storePreload} className={progressClassName} />;\n },\n align: 'center',\n width: 220,\n },\n ];\n return res;\n }, [nameColumnTitle, toggleSort, sortStateByName]);\n\n return (\n <DataTableYT\n loaded={loaded}\n loading={loading}\n data={items}\n columns={columns}\n useThemeYT\n settings={DATA_TABLE_YT_SETTINGS}\n rowClassName={({attributes: {isBundle}}) => {\n return block('row', {\n bundle: isBundle,\n });\n }}\n onRowClick={(row) => toggleExpand(row)}\n />\n );\n}\n\nexport default React.memo(NodeMemoryDetailsTable);\n","import type {ThunkAction} from 'redux-thunk';\n\nimport {\n NODE_MEMORY_LOAD_FAILURE,\n NODE_MEMORY_LOAD_REQUEST,\n NODE_MEMORY_LOAD_SUCCESS,\n NODE_MEMORY_PARTIAL,\n} from '../../../../constants/components/nodes/memory';\nimport type {RootState} from '../../../../store/reducers';\nimport type {NodeMemoryLoadAction} from '../../../../store/reducers/components/node/memory';\nimport type {MemoryUsage} from '../../../../types/components/node';\nimport {\n getNodeMemoryCollapsedBundles,\n getNodeMemoryStateHost,\n} from '../../../../store/selectors/components/node/memory';\nimport {SortState} from '../../../../types';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\n\ntype NodeMemoryThunkAction = ThunkAction<any, RootState, any, NodeMemoryLoadAction>;\n\nexport function loadNodeMemoryUsage(host: string): NodeMemoryThunkAction {\n return (dispatch, getState) => {\n dispatch({type: NODE_MEMORY_LOAD_REQUEST, data: {host}});\n\n return ytApiV3Id\n .get(YTApiId.nodeMemoryUsage, {\n path: `//sys/cluster_nodes/${host}/orchid/tablet_slot_manager/memory_usage_statistics`,\n })\n .then((memory: MemoryUsage) => {\n const stateHost = getNodeMemoryStateHost(getState());\n if (stateHost !== host) {\n return;\n }\n\n dispatch({\n type: NODE_MEMORY_LOAD_SUCCESS,\n data: {memory},\n });\n })\n .catch((error: Error) => {\n const stateHost = getNodeMemoryStateHost(getState());\n if (stateHost !== host) {\n return;\n }\n\n dispatch({\n type: NODE_MEMORY_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n\nexport function setNodeBundlesSort(sortOrder: Array<SortState>): NodeMemoryThunkAction {\n return (dispatch) => {\n dispatch({\n type: NODE_MEMORY_PARTIAL,\n data: {sortOrder},\n });\n };\n}\n\nexport function toggleNodeMemoryBundleExpanded(name: string): NodeMemoryThunkAction {\n return (dispatch, getState) => {\n const collapsedBundles = [...getNodeMemoryCollapsedBundles(getState())];\n const index = collapsedBundles.indexOf(name);\n if (index === -1) {\n collapsedBundles.push(name);\n } else {\n collapsedBundles.splice(index, 1);\n }\n dispatch({\n type: NODE_MEMORY_PARTIAL,\n data: {collapsedBundles},\n });\n };\n}\n\nexport function setNodeMemoryTablesSort(tablesSortOrder: Array<SortState>): NodeMemoryThunkAction {\n return (dispatch) => {\n dispatch({\n type: NODE_MEMORY_PARTIAL,\n data: {tablesSortOrder},\n });\n };\n}\n\nexport function setNodeMemoryFilters(data: {\n viewMode?: 'cells' | 'tables';\n filter?: string;\n}): NodeMemoryLoadAction {\n return {\n type: NODE_MEMORY_PARTIAL,\n data,\n };\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from '../../../../../store/redux-hooks';\n\nimport NodeMemoryDetailsTable from '../NodeMemoryDetailsTable/NodeMemoryDetailsTable';\n\nimport {\n setNodeBundlesSort,\n toggleNodeMemoryBundleExpanded,\n} from '../../../../../store/actions/components/node/memory';\nimport {\n getNodeMemoryLoaded,\n getNodeMemoryLoading,\n getNodeMemorySortOrder,\n getNodeMemoryUsageBundlesItems,\n} from '../../../../../store/selectors/components/node/memory';\nimport {SortState} from '../../../../../types';\n\nfunction NodeBundles() {\n const dispatch = useDispatch();\n const loading = useSelector(getNodeMemoryLoading);\n const loaded = useSelector(getNodeMemoryLoaded);\n const items = useSelector(getNodeMemoryUsageBundlesItems);\n const sortOrder = useSelector(getNodeMemorySortOrder);\n\n const toggleExpandState = React.useCallback((item: (typeof items)[0]) => {\n dispatch(toggleNodeMemoryBundleExpanded(item.name));\n }, []);\n\n const handleSort = React.useCallback((order: SortState[]) => {\n dispatch(setNodeBundlesSort(order));\n }, []);\n\n return (\n <NodeMemoryDetailsTable\n loaded={loaded}\n loading={loading}\n items={items}\n onSort={handleSort}\n toggleExpand={toggleExpandState}\n nameColumnTitle={'Bundle / Cell'}\n sortState={sortOrder}\n />\n );\n}\n\nexport default React.memo(NodeBundles);\n","import React from 'react';\nimport {useDispatch, useSelector} from '../../../../../store/redux-hooks';\n\nimport {\n getNodeMemoryLoaded,\n getNodeMemoryLoading,\n getNodeMemoryUsageTablesItemsSorted,\n getNodeMemoryUsageTablesSortOrder,\n} from '../../../../../store/selectors/components/node/memory';\nimport NodeMemoryDetailsTable from '../NodeMemoryDetailsTable/NodeMemoryDetailsTable';\nimport {\n setNodeMemoryTablesSort,\n toggleNodeMemoryBundleExpanded,\n} from '../../../../../store/actions/components/node/memory';\nimport {SortState} from '../../../../../types';\n\nfunction NodeTables() {\n const dispatch = useDispatch();\n const loading = useSelector(getNodeMemoryLoading);\n const loaded = useSelector(getNodeMemoryLoaded);\n const items = useSelector(getNodeMemoryUsageTablesItemsSorted);\n const sortOrder = useSelector(getNodeMemoryUsageTablesSortOrder);\n\n const handleSort = React.useCallback((sortOrder: Array<SortState>) => {\n dispatch(setNodeMemoryTablesSort(sortOrder));\n }, []);\n\n const toggleExpandState = React.useCallback((item: (typeof items)[0]) => {\n dispatch(toggleNodeMemoryBundleExpanded(item.name));\n }, []);\n\n return (\n <NodeMemoryDetailsTable\n items={items}\n loaded={loaded}\n loading={loading}\n toggleExpand={toggleExpandState}\n onSort={handleSort}\n nameColumnTitle={'Bundles / Table'}\n sortState={sortOrder}\n />\n );\n}\n\nexport default React.memo(NodeTables);\n","import React from 'react';\nimport {useDispatch, useSelector} from '../../../../../store/redux-hooks';\nimport cn from 'bem-cn-lite';\n\nimport CustomRadioButton from '../../../../../components/RadioButton/RadioButton';\nimport {\n getNodeMemoryFilter,\n getNodeMemoryViewMode,\n} from '../../../../../store/selectors/components/node/memory';\nimport {setNodeMemoryFilters} from '../../../../../store/actions/components/node/memory';\nimport Filter from '../../../../../components/Filter/Filter';\n\nimport './NodeMemoryUsageToolbar.scss';\n\nconst block = cn('node-memory-usage-toolbar');\n\nfunction NodeMemoryUsageToolbar() {\n const dispatch = useDispatch();\n const viewMode = useSelector(getNodeMemoryViewMode);\n const filter = useSelector(getNodeMemoryFilter);\n\n const handleViewMode = React.useCallback((value: string) => {\n dispatch(\n setNodeMemoryFilters({\n viewMode: value as typeof viewMode,\n }),\n );\n }, []);\n\n const handleFilter = React.useCallback((filter: string) => {\n dispatch(setNodeMemoryFilters({filter}));\n }, []);\n\n return (\n <div className={block(null, 'elements-section')}>\n <div className={block('filter')}>\n <Filter\n value={filter}\n onChange={handleFilter}\n placeholder={\n viewMode === 'cells'\n ? 'Filter by Bundle, Cell id...'\n : 'Filter by Bundle, Path...'\n }\n />\n </div>\n <CustomRadioButton\n size=\"m\"\n value={viewMode}\n onUpdate={handleViewMode}\n name=\"navigation-tablets-mode\"\n items={[\n {\n value: 'tables',\n text: 'Tables',\n },\n {\n value: 'cells',\n text: 'Bundles and cells',\n },\n ]}\n />\n </div>\n );\n}\n\nexport default React.memo(NodeMemoryUsageToolbar);\n","import cn from 'bem-cn-lite';\nimport React from 'react';\nimport {useDispatch, useSelector} from '../../../../../store/redux-hooks';\nimport type {RouteComponentProps} from 'react-router';\n\nimport NodeBundles from '../../../../../pages/components/tabs/node/NodeBundles/NodeBundles';\nimport NodeTables from '../../../../../pages/components/tabs/node/NodeTables/NodeTables';\nimport {loadNodeMemoryUsage} from '../../../../../store/actions/components/node/memory';\nimport {\n getNodeMemoryError,\n getNodeMemoryViewMode,\n} from '../../../../../store/selectors/components/node/memory';\nimport {useUpdater} from '../../../../../hooks/use-updater';\nimport {YTErrorBlock} from '../../../../../components/Error/Error';\nimport NodeBundlesTotal from '../NodeBundlesTotal/NodeBundlesTotal';\nimport NodeMemoryUsageToolbar from './NodeMemoryUsageToolbar';\n\nconst block = cn('node-memory-usage');\n\ninterface RouteParams {\n host: string;\n}\n\ninterface Props extends RouteComponentProps<RouteParams> {}\n\nfunction NodeMemoryUsage({match}: Props): ReturnType<React.VFC> {\n const dispatch = useDispatch();\n\n const error = useSelector(getNodeMemoryError);\n\n const host = decodeURIComponent(match.params.host);\n\n const updateFn = React.useCallback(() => {\n dispatch(loadNodeMemoryUsage(host));\n }, [dispatch, host]);\n\n useUpdater(updateFn, {timeout: 15 * 1000});\n\n const viewMode = useSelector(getNodeMemoryViewMode);\n\n return (\n <div className={block()}>\n <React.Fragment>\n {error && <YTErrorBlock error={error} />}\n <NodeBundlesTotal />\n <NodeMemoryUsageToolbar />\n {viewMode === 'cells' ? <NodeBundles /> : <NodeTables />}\n </React.Fragment>\n </div>\n );\n}\n\nexport default React.memo(NodeMemoryUsage);\n","import React from 'react';\nimport {useSelector} from '../../../../../store/redux-hooks';\nimport cn from 'bem-cn-lite';\n\nimport compact_ from 'lodash/compact';\nimport map_ from 'lodash/map';\n\nimport Label from '../../../../../components/Label/Label';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport type {Node} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport {getCurrentClusterConfig} from '../../../../../store/selectors/global';\nimport UIFactory from '../../../../../UIFactory';\nimport {getNodeMetaItems} from '../../../../../utils/components/nodes/node-meta-items';\n\nimport './NodeMeta.scss';\n\nconst block = cn('node-meta');\n\ninterface Props {\n state: Node['state'];\n tags: Node['tags'];\n userTags: Node['userTags'];\n rack: Node['rack'];\n banned: Node['banned'];\n banMessage?: Node['banMessage'];\n decommissioned: Node['decommissioned'];\n decommissionedMessage?: Node['decommissionedMessage'];\n full: Node['full'];\n alertCount?: Node['alertCount'];\n dataCenter: Node['dataCenter'];\n lastSeenTime: Node['lastSeenTime'];\n disableJobs: Node['disableJobs'];\n disableTabletCells: Node['disableTabletCells'];\n disableWriteSession: Node['disableWriteSession'];\n physicalHost: Node['physicalHost'];\n host: Node['host'];\n maintenanceRequests?: Node['maintenanceRequests'];\n version?: Node['version'];\n jobProxyBuildVersion?: Node['jobProxyBuildVersion'];\n}\n\nfunction NodeMeta({\n state,\n tags,\n userTags,\n rack,\n banned,\n banMessage = '',\n decommissioned,\n decommissionedMessage,\n full,\n alertCount,\n dataCenter,\n lastSeenTime,\n disableJobs,\n disableTabletCells,\n disableWriteSession,\n jobProxyBuildVersion,\n physicalHost,\n host,\n maintenanceRequests,\n version,\n}: Props): ReturnType<React.VFC> {\n const clusterConfig = useSelector(getCurrentClusterConfig);\n\n const metaTableItems = React.useMemo(() => {\n return getNodeMetaItems({\n alertCount,\n banMessage,\n banned,\n dataCenter,\n decommissioned,\n decommissionedMessage,\n disableJobs,\n disableTabletCells,\n disableWriteSession,\n full,\n jobProxyBuildVersion,\n lastSeenTime,\n rack,\n state,\n maintenanceRequests,\n version,\n });\n }, [\n alertCount,\n banMessage,\n banned,\n dataCenter,\n decommissioned,\n decommissionedMessage,\n disableJobs,\n disableTabletCells,\n disableWriteSession,\n full,\n jobProxyBuildVersion,\n lastSeenTime,\n rack,\n state,\n maintenanceRequests,\n version,\n ]);\n\n const tagsItems = React.useMemo(\n () => [\n {\n key: 'tags',\n value: <Tags items={tags} />,\n visible: Boolean(tags?.length),\n },\n {\n key: 'user_tags',\n value: <Tags items={userTags} />,\n visible: Boolean(userTags?.length),\n },\n ],\n [tags, userTags],\n );\n\n const urlItems = React.useMemo(() => {\n return UIFactory.getExtraMetaTableItemsForComponentsNode({\n host,\n physicalHost,\n clusterConfig,\n });\n }, [host, physicalHost, clusterConfig]);\n\n return (\n <div className={block()}>\n <MetaTable\n className={block('column', {type: 'meta'})}\n items={compact_([metaTableItems, tagsItems, urlItems])}\n />\n </div>\n );\n}\n\nfunction Tags({items}: {items?: Array<string>}) {\n return (\n <div className={block('tags')}>\n {map_(items, (tag) => (\n <Label key={tag} text={tag} />\n ))}\n </div>\n );\n}\n\nexport default React.memo(NodeMeta);\n","import React from 'react';\n\nimport map_ from 'lodash/map';\n\nimport cn from 'bem-cn-lite';\n\nimport {getNodeAlerts} from '../../../../../store/selectors/components/node/node';\nimport {useSelector} from '../../../../../store/redux-hooks';\nimport {YTAlertBlock} from '../../../../../components/Alert/Alert';\n\nimport './NodeAlerts.scss';\n\nconst block = cn('yt-node-alerts');\n\nfunction NodeAlerts() {\n const alerts = useSelector(getNodeAlerts);\n return (\n <div>\n {map_(alerts, (item, index) => (\n <YTAlertBlock className={block('item')} error={item} key={index} />\n ))}\n </div>\n );\n}\n\nexport default React.memo(NodeAlerts);\n","import React from 'react';\nimport {useSelector} from '../../../../../store/redux-hooks';\n\nimport type {Column} from '@gravity-ui/react-data-table';\nimport {Progress} from '@gravity-ui/uikit';\n\nimport format from '../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../components/DataTableYT/DataTableYT';\nimport {nodeSelector} from '../../../../../store/selectors/components/node/node';\nimport Label from '../../../../../components/Label/Label';\nimport ClipboardButton from '../../../../../components/ClipboardButton/ClipboardButton';\n\ninterface LocationInfo {\n enabled?: boolean;\n full?: boolean;\n location_uuid?: string;\n medium_name?: string;\n session_count?: number;\n chunk_count?: number;\n\n locationText?: string;\n locationProgress?: number;\n\n available_space?: number;\n low_watermark_space?: number;\n}\n\nconst columns: Array<Column<LocationInfo>> = [\n {\n name: 'Enabled',\n render({row}) {\n return (\n <Label theme={row.enabled ? 'success' : 'danger'}>\n {row.enabled ? 'Enabled' : 'Disabled'}\n </Label>\n );\n },\n },\n {\n name: 'Uuid',\n render({row}) {\n return (\n <span>\n {row.location_uuid}\n &nbsp;\n <ClipboardButton view=\"flat-secondary\" text={row.location_uuid} size=\"s\" />\n </span>\n );\n },\n align: 'left',\n },\n {\n name: 'Full',\n render({row}) {\n return Boolean(row.full).toString();\n },\n align: 'center',\n },\n {\n name: 'Medium name',\n render({row}) {\n return row.medium_name;\n },\n },\n {\n name: 'Sessions',\n render({row}) {\n return format.Number(row.session_count);\n },\n align: 'right',\n },\n {\n name: 'Chunks',\n render({row}) {\n return format.Number(row.chunk_count);\n },\n align: 'right',\n },\n {\n name: 'Used space',\n render({row}) {\n return !row.locationProgress ? (\n format.NO_VALUE\n ) : (\n <Progress value={row.locationProgress} text={row.locationText} theme=\"success\" />\n );\n },\n },\n {\n name: 'Available space',\n render({row}) {\n return format.Bytes(row.available_space);\n },\n align: 'right',\n width: 200,\n },\n {\n name: 'Watermark space',\n render({row}) {\n return format.Bytes(row.low_watermark_space);\n },\n align: 'right',\n width: 200,\n },\n];\n\nfunction NodeLocations(): ReturnType<React.VFC> {\n const {node} = useSelector(nodeSelector);\n\n if (!(node && node.locations.length > 0)) {\n return null;\n }\n\n return (\n <DataTableYT\n columns={columns}\n data={node.locations}\n startIndex={1}\n useThemeYT\n settings={{\n sortable: false,\n }}\n />\n );\n}\n\nexport default React.memo(NodeLocations);\n","import {useSelector} from '../../../../../store/redux-hooks';\nimport React from 'react';\n\nimport NodeTabletSlots from '../../../../../pages/components/tabs/node/NodeTabletSlots/NodeTabletSlots';\nimport type {RootState} from '../../../../../store/reducers';\nimport {getSortedItems} from '../../../../../store/selectors/components/nodes/node-card';\nimport {nodeSelector} from '../../../../../store/selectors/components/node/node';\n\nfunction NodeTabletSlotsTab(): ReturnType<React.VFC> {\n const {node} = useSelector(nodeSelector);\n const tabletSlots = useSelector((state: RootState) => node && getSortedItems(state, {node}));\n\n if (!(node && tabletSlots.length > 0)) {\n return null;\n }\n\n return <NodeTabletSlots tabletSlots={tabletSlots} />;\n}\n\nexport default React.memo(NodeTabletSlotsTab);\n","import {ThunkAction} from 'redux-thunk';\n\nimport {RootState} from '../../../reducers';\nimport {NodeUnrecognizedOptionsAction} from '../../../reducers/components/node/unrecognized-options';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {NODE_UNRECOGNIEZED_OPTIONS} from '../../../../constants/components/nodes/node';\nimport CancelHelper, {isCancelled} from '../../../../utils/cancel-helper';\n\nconst cancelHeler = new CancelHelper();\n\nexport function loadNodeUnrecognizedOptions(\n host: string,\n): ThunkAction<any, RootState, unknown, NodeUnrecognizedOptionsAction> {\n return (dispatch) => {\n dispatch({type: NODE_UNRECOGNIEZED_OPTIONS.REQUEST, data: {host}});\n\n return ytApiV3Id\n .get(YTApiId.nodeUnrecognizedOptions, {\n parameters: {\n path: `//sys/cluster_nodes/${host}/orchid/dynamic_config_manager/unrecognized_options`,\n },\n cancellation: cancelHeler.removeAllAndSave,\n })\n .then((data) => {\n dispatch({type: NODE_UNRECOGNIEZED_OPTIONS.SUCCESS, data: {data}});\n })\n .catch((error: any) => {\n if (!isCancelled(error)) {\n dispatch({type: NODE_UNRECOGNIEZED_OPTIONS.FAILURE, data: {error}});\n }\n });\n };\n}\n","import {RootState} from '../../../reducers';\n\nexport const getNodeUnrecognizedOptionsData = (state: RootState) =>\n state.components.node.unrecognizedOptions.data;\nexport const getNodeUnrecognizedOptionsError = (state: RootState) =>\n state.components.node.unrecognizedOptions.error;\n","import React from 'react';\nimport {useDispatch, useSelector} from '../../../../../store/redux-hooks';\nimport cn from 'bem-cn-lite';\n\nimport './NodeUnrecognizedOptions.scss';\n\nconst block = cn('node-unrecognized-options');\n\nimport {loadNodeUnrecognizedOptions} from '../../../../../store/actions/components/node/unrecognized-options';\nimport {\n getNodeUnrecognizedOptionsData,\n getNodeUnrecognizedOptionsError,\n} from '../../../../../store/selectors/components/node/unrecognized-options';\nimport {YTErrorBlock} from '../../../../../components/Error/Error';\nimport Yson from '../../../../../components/Yson/Yson';\nimport {getNodeUnrecognizedOptionsYsonSettings} from '../../../../../store/selectors/thor/unipika';\nimport {YsonDownloadButton} from '../../../../../components/DownloadAttributesButton';\n\nexport function NodeUnrecognizedOptions({host}: {host: string}) {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadNodeUnrecognizedOptions(host));\n }, [host, dispatch]);\n\n const data = useSelector(getNodeUnrecognizedOptionsData);\n const error = useSelector(getNodeUnrecognizedOptionsError);\n\n const unipikaSettings = useSelector(getNodeUnrecognizedOptionsYsonSettings);\n\n return error ? (\n <YTErrorBlock error={error} />\n ) : (\n <Yson\n className={block('yson')}\n value={data}\n settings={unipikaSettings}\n folding\n virtualized\n extraTools={\n <YsonDownloadButton\n value={data}\n settings={unipikaSettings}\n name={`unrecognized_options_${host}`}\n />\n }\n />\n );\n}\n","import {useDispatch, useSelector} from '../../../../store/redux-hooks';\nimport {Redirect, Route, RouteComponentProps, Switch} from 'react-router';\nimport React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport Tabs from '../../../../components/Tabs/Tabs';\nimport Loader from '../../../../components/Loader/Loader';\nimport NodeGeneralTab from '../../../../pages/components/tabs/node/NodeGeneralTab/NodeGeneralTab';\nimport NodeMemoryUsage from '../../../../pages/components/tabs/node/NodeMemoryUsage/NodeMemoryUsage';\nimport {NodeTab} from '../../../../constants/components/nodes/node';\nimport {loadNodeAttributes} from '../../../../store/actions/components/node/node';\nimport {useUpdater} from '../../../../hooks/use-updater';\nimport {makeTabProps} from '../../../../utils';\nimport type {RootState} from '../../../../store/reducers';\nimport {getNodeAlertCount, nodeSelector} from '../../../../store/selectors/components/node/node';\nimport {getSortedItems} from '../../../../store/selectors/components/nodes/node-card';\nimport NodeMeta from './NodeMeta/NodeMeta';\n\nimport './NodePage.scss';\nimport NodeAlerts from './NodeAlerts/NodeAlerts';\nimport NodeLocations from './NodeLocations/NodeLocations';\nimport NodeTabletSlotsTab from './NodeTabletSlotsTab/NodeTabletSlotsTab';\nimport {NodeUnrecognizedOptions} from './NodeUnrecognizedOptions/NodeUnrecognizedOptions';\n\nconst block = cn('node-page');\n\ninterface RouteParams {\n host: string;\n}\n\nexport interface NodeDetailsProps extends RouteComponentProps<RouteParams> {}\n\nfunction NodePage({match}: NodeDetailsProps): ReturnType<React.VFC> {\n const dispatch = useDispatch();\n\n const {node, loading, loaded, error, errorData} = useSelector(nodeSelector);\n\n const host = decodeURIComponent(match.params.host);\n const alertCount = useSelector(getNodeAlertCount);\n\n const updateFn = React.useCallback(() => {\n dispatch(loadNodeAttributes(host));\n }, [dispatch, host]);\n\n useUpdater(updateFn, {timeout: 15 * 1000});\n\n const initialLoading = loading && (!loaded || host !== node?.host);\n\n const tabletSlots = useSelector((state: RootState) => node && getSortedItems(state, {node}));\n\n const matchUrl = match.url;\n const tabProps = React.useMemo(\n () =>\n makeTabProps(\n matchUrl,\n NodeTab,\n {\n [NodeTab.MEMORY_USAGE]: {show: Boolean(node && tabletSlots.length > 0)},\n [NodeTab.LOCATIONS]: {show: Boolean(node?.locations?.length)},\n [NodeTab.TABLET_SLOTS]: {show: Boolean(node && tabletSlots.length > 0)},\n [NodeTab.ALERTS]: {show: Boolean(alertCount), counter: alertCount},\n },\n null,\n {\n [NodeTab.GENERAL]: 'General',\n [NodeTab.MEMORY_USAGE]: 'Memory usage',\n },\n ),\n [node, matchUrl, alertCount, tabletSlots],\n );\n\n return (\n <div className={block()}>\n <div className={block('content', {loading: initialLoading})}>\n <LoadDataHandler loaded={loaded} error={error} errorData={errorData}>\n <div className={block()}>\n <div className={block('host', 'elements-heading elements-heading_size_l')}>\n {host}\n <ClipboardButton text={host} size=\"l\" view=\"flat-secondary\" />\n {<Loader visible={initialLoading} />}\n </div>\n {!initialLoading && (\n <React.Fragment>\n <div className={block('meta')}>\n {node && <NodeMeta {...node} />}\n </div>\n\n <div className={block('heading', 'elements-section')}>\n <Tabs {...tabProps} routed />\n </div>\n\n <Switch>\n <Route\n path={`${match.path}/${NodeTab.GENERAL}`}\n component={NodeGeneralTab}\n />\n <Route\n path={`${match.path}/${NodeTab.MEMORY_USAGE}`}\n component={NodeMemoryUsage}\n />\n <Route\n path={`${match.path}/${NodeTab.LOCATIONS}`}\n component={NodeLocations}\n />\n <Route\n path={`${match.path}/${NodeTab.TABLET_SLOTS}`}\n component={NodeTabletSlotsTab}\n />\n <Route\n path={`${match.path}/${NodeTab.ALERTS}`}\n render={() => <NodeAlerts />}\n />\n <Route\n path={`${match.path}/${NodeTab.UNRECOGNIZED_OPTIONS}`}\n render={() => (\n <NodeUnrecognizedOptions host={match.params.host} />\n )}\n />\n <Redirect\n from={match.url}\n to={`${match.url}/${NodeTab.GENERAL}`}\n />\n </Switch>\n </React.Fragment>\n )}\n </div>\n </LoadDataHandler>\n </div>\n </div>\n );\n}\n\nexport default React.memo(NodePage);\n","import React from 'react';\nimport block from 'bem-cn-lite';\nimport {connect} from 'react-redux';\nimport {useSelector} from '../../../store/redux-hooks';\nimport {Redirect, Route, Switch, matchPath} from 'react-router';\n\nimport VersionsV2 from '../tabs/Versions/VersionsV2';\nimport Proxies from '../tabs/Proxies/Proxies';\nimport Nodes from '../tabs/nodes/Nodes/Nodes';\nimport Shards from '../tabs/Shards/Shards';\nimport NodePage from '../tabs/node/NodePage';\n\nimport Placeholder from '../Placeholder';\nimport Tabs from '../../../components/Tabs/Tabs';\n\nimport {PROXY_TYPE} from '../../../constants/components/proxies/proxies';\nimport {DEFAULT_TAB, Tab} from '../../../constants/components/main';\nimport {getLastVisitedTabs} from '../../../store/selectors/settings';\nimport {makeTabProps} from '../../../utils';\nimport {Page} from '../../../constants/index';\n\nimport {getCluster} from '../../../store/selectors/global';\nimport {tabletActiveBundleLink} from '../../../utils/components/tablet-cells';\n\nimport './Component.scss';\nimport {UI_TAB_SIZE} from '../../../constants/global';\n\nconst b = block(Page.COMPONENTS);\n\nexport function Components({match, lastVisitedTab = DEFAULT_TAB, tabSize, location}) {\n const props = makeTabProps(match.url, Tab);\n\n const nodePageMatch = matchPath(location.pathname, {\n path: `${match.path}/${Tab.NODES}/:host`,\n });\n\n return (\n <div className=\"elements-page__content\">\n <section className={b(null, 'elements-main-section')}>\n {!nodePageMatch && (\n <div className={b('heading')}>\n <Tabs\n {...props}\n active={DEFAULT_TAB}\n className={b('tabs')}\n routed\n size={tabSize}\n />\n </div>\n )}\n\n <div className={b('tab-viewer')}>\n <Switch>\n <Route path={`${match.path}/${Tab.NODES}/:host`} component={NodePage} />\n <Route path={`${match.path}/${Tab.NODES}`} component={Nodes} />\n <Route path={`${match.path}/${Tab.VERSIONS}`} component={VersionsV2} />\n <Route\n path={`${match.path}/${Tab.HTTP_PROXIES}`}\n render={() => <Proxies key={PROXY_TYPE.HTTP} type={PROXY_TYPE.HTTP} />}\n />\n <Route\n path={`${match.path}/${Tab.CYPRESS_PROXIES}`}\n render={() => (\n <Proxies key={PROXY_TYPE.CYPRESS} type={PROXY_TYPE.CYPRESS} />\n )}\n />\n <Route\n path={`${match.path}/${Tab.RPC_PROXIES}`}\n render={() => <Proxies key={PROXY_TYPE.RPC} type={PROXY_TYPE.RPC} />}\n />\n <Route path={`${match.path}/${Tab.SHARDS}`} component={Shards} />\n <Route\n path={`${match.path}/${Tab.TABLET_CELLS}`}\n component={RedirectToTabletCells}\n />\n <Route path={`${match.path}/:tab`} component={Placeholder} />\n <Redirect from={match.url} to={`${match.url}/${lastVisitedTab}`} />\n </Switch>\n </div>\n </section>\n </div>\n );\n}\n\nfunction RedirectToTabletCells() {\n const cluster = useSelector(getCluster);\n return <Redirect to={tabletActiveBundleLink(cluster, '')} />;\n}\n\nconst mapStateToProps = (state) => {\n const lastVisitedTabs = getLastVisitedTabs(state);\n return {\n lastVisitedTab: lastVisitedTabs[Page.COMPONENTS],\n tabSize: UI_TAB_SIZE,\n };\n};\n\nexport default connect(mapStateToProps)(Components);\n","import React from 'react';\nimport {useSelector} from '../../../store/redux-hooks';\nimport {Route, RouteComponentProps, Switch, useHistory} from 'react-router';\nimport cn from 'bem-cn-lite';\nimport {Breadcrumbs} from '@gravity-ui/uikit';\nimport {Tab as ComponentsTab} from '../../../constants/components/main';\nimport {Page} from '../../../constants/index';\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\nimport {nodeHostSelector} from '../../../store/selectors/components/node/node';\nimport {getCluster} from '../../../store/selectors/global';\n\nimport './ComponentsTopRowContent.scss';\n\nconst block = cn('components-top-row-content');\n\nfunction ComponentsTopRowContent({match}: RouteComponentProps) {\n return (\n <Switch>\n <Route\n path={`${match.path}/${ComponentsTab.NODES}/:host`}\n component={ComponentsNodeTopRowContent}\n />\n <Route path={''} render={() => <RowWithName page={Page.COMPONENTS} />} />\n </Switch>\n );\n}\n\nfunction ComponentsNodeTopRowContent() {\n return (\n <RowWithName page={Page.COMPONENTS}>\n <ComponentsBreadcrumbs />\n </RowWithName>\n );\n}\n\nfunction ComponentsBreadcrumbs() {\n const cluster = useSelector(getCluster);\n const nodeHost = useSelector(nodeHostSelector);\n const history = useHistory();\n const items = React.useMemo(() => {\n const nodesPageUrl = `/${cluster}/${Page.COMPONENTS}/${ComponentsTab.NODES}`;\n const result = [\n <Breadcrumbs.Item\n href={nodesPageUrl}\n onClick={(e) => {\n e.preventDefault();\n history.push(nodesPageUrl);\n }}\n key=\"<Root>\"\n >\n {'<Root>'}\n </Breadcrumbs.Item>,\n ];\n if (nodeHost) {\n const nodePageUrl = `/${cluster}/${Page.COMPONENTS}/${ComponentsTab.NODES}/${nodeHost}`;\n result.push(\n <Breadcrumbs.Item\n key={nodeHost}\n href={nodePageUrl}\n onClick={(e) => {\n e.preventDefault();\n history.push(nodePageUrl);\n }}\n >\n {nodeHost}\n </Breadcrumbs.Item>,\n );\n }\n return result;\n }, [cluster, nodeHost, history]);\n\n return (\n <Breadcrumbs showRoot className={block('breadcrumbs')}>\n {items}\n </Breadcrumbs>\n );\n}\n\nexport default React.memo(ComponentsTopRowContent);\n","import {Page} from '../../../shared/constants/settings';\nimport {YT} from '../../config/yt-config';\nimport type {Tab as NavigationTab} from '../../constants/navigation';\nimport {ValueOf} from '../../types';\n\nimport {TabletErrorsByPathState} from '../../store/reducers/navigation/tabs/tablet-errors/tablet-errors-by-path';\nimport {getNavigationParams} from '../../store/reducers/navigation/url-mapping';\nimport {makeURLSearchParams} from './utils';\n\nexport function makeNavigationLink(params: {\n path: string;\n cluster?: string;\n navmode?: ValueOf<typeof NavigationTab>;\n teMode?: 'request_errors';\n teTime?: TabletErrorsByPathState['timeRangeFilter'];\n teMethods?: Array<string>;\n}) {\n const {cluster, ...rest} = params;\n const res = `/${cluster || YT.cluster}/${Page.NAVIGATION}`;\n const search = makeURLSearchParams(rest, getNavigationParams()).toString();\n return search ? `${res}?${search}` : res;\n}\n","import {LocationParameters} from '../../store/location';\n\nexport function makeURLSearchParams<T extends object>(params: T, info: LocationParameters) {\n const res = new URLSearchParams();\n Object.keys(params).reduce((acc, k) => {\n const value = params[k as keyof T];\n if (k in info) {\n if (info[k].options?.serialize) {\n const tmp = info[k].options?.serialize?.(value);\n if (tmp !== undefined) {\n res.append(k, tmp + '');\n }\n } else {\n res.append(k, value + '');\n }\n }\n return acc;\n }, res);\n return res;\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../../common/hammer';\n\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {Page} from '../../../constants';\nimport {TabletsTab} from '../../../constants/tablets';\nimport {nanToUndefined} from '../../utils';\n\nexport function prepareTabletCells(tabletCells) {\n return map_(tabletCells, (tabletCell) => {\n const uncompressed = ypath.getValue(\n tabletCell,\n '/@total_statistics/uncompressed_data_size',\n );\n const compressed = ypath.getValue(tabletCell, '/@total_statistics/compressed_data_size');\n const tablets = ypath.getValue(tabletCell, '/@total_statistics/tablet_count');\n const memory = ypath.getValue(tabletCell, '/@total_statistics/memory_size');\n const health = ypath.getValue(tabletCell, '/@status/health');\n\n const bundle = ypath.getValue(tabletCell, '/@tablet_cell_bundle');\n const peers = ypath.getValue(tabletCell, '/@peers');\n const id = ypath.getValue(tabletCell, '/@id');\n\n const peerCount = peers ? peers.length : 0;\n\n let peer;\n let peerAddress;\n let state;\n\n if (peerCount) {\n peer = find_(peers, (peer) => peer.state === 'leading') || peers[0];\n peerAddress = peer.address;\n state = peer.state;\n }\n\n return {\n id,\n health,\n state,\n bundle,\n tablets,\n memory,\n uncompressed,\n compressed,\n peers,\n peer,\n peerAddress,\n };\n });\n}\n\nexport function aggregateTotal(data) {\n const initialTotal = {\n bundle: 'total',\n tablets: 0,\n nodes: [],\n memory: 0,\n uncompressed: 0,\n compressed: 0,\n tabletCells: 0,\n isTotal: true,\n };\n\n const total = hammer.aggregation.prepare(data, [\n {name: 'tablets', type: 'sum'},\n {name: 'nodes', type: 'concat-array'},\n {name: 'memory', type: 'sum'},\n {name: 'uncompressed', type: 'sum'},\n {name: 'compressed', type: 'sum'},\n {name: 'tabletCells', type: 'sum'},\n ]);\n\n return data.length ? total[0] : initialTotal;\n}\n\nfunction collectBundlesAttrs(dst, attrs) {\n const resource_limits = ypath.getValue(attrs, '/resource_limits');\n const resource_usage = ypath.getValue(attrs, '/resource_usage');\n\n const tc_usage = ypath.getValue(resource_usage, '/tablet_count');\n const tc_limit = ypath.getValue(resource_limits, '/tablet_count');\n\n const tsm_usage = ypath.getValue(resource_usage, '/tablet_static_memory');\n const tsm_limit = ypath.getValue(resource_limits, '/tablet_static_memory');\n\n return {\n ...dst,\n bundle_controller_target_config: ypath.getValue(attrs, '/bundle_controller_target_config'),\n enable_bundle_controller: ypath.getValue(attrs, '/enable_bundle_controller') || false,\n changelog_account: ypath.getValue(attrs, '/options/changelog_account'),\n snapshot_account: ypath.getValue(attrs, '/options/snapshot_account'),\n node_tag_filter: ypath.getValue(attrs, '/node_tag_filter'),\n health: ypath.getValue(attrs, '/health'),\n zone: ypath.getValue(attrs, '/zone'),\n resource_limits,\n resource_usage,\n\n tablet_count: tc_usage,\n tablet_count_limit: tc_limit,\n tablet_count_free: tc_limit - tc_usage,\n tablet_count_percentage: nanToUndefined((100 * tc_usage) / tc_limit),\n\n tablet_static_memory: tsm_usage,\n tablet_static_memory_limit: tsm_limit,\n tablet_static_memory_free: tsm_limit - tsm_usage,\n tablet_static_memory_percentage: nanToUndefined((100 * tsm_usage) / tsm_limit),\n };\n}\n\nexport function prepareBundles(tabletCells, bundles) {\n let aggregation = hammer.aggregation.prepare(\n tabletCells,\n [\n {name: 'tablets', type: 'sum'},\n {name: 'memory', type: 'sum'},\n {name: 'uncompressed', type: 'sum'},\n {name: 'compressed', type: 'sum'},\n {name: 'tabletCells', type: 'count'},\n ],\n 'bundle',\n );\n\n aggregation.splice(0, 1);\n\n aggregation = reduce_(\n aggregation,\n (res, bundle) => {\n const $attributes = bundles[bundle.bundle].$attributes;\n const bundleNodes = ypath.getValue($attributes, '/nodes');\n res[bundle.bundle] = {\n $attributes,\n ...collectBundlesAttrs({}, $attributes),\n ...bundle,\n nodes: bundleNodes,\n };\n return res;\n },\n {},\n );\n\n const bundleList = reduce_(\n bundles,\n (res, value, key) => {\n if (aggregation[key]) {\n res.push(aggregation[key]);\n } else {\n res.push({\n $attributes: value.$attributes,\n ...collectBundlesAttrs({}, value.$attributes),\n bundle: key,\n nodes: value.$attributes.nodes,\n tabletCells: 0,\n });\n }\n return res;\n },\n [],\n );\n\n const nodeTags = reduce_(\n bundleList,\n (res, bundle) => {\n const tag = bundle?.node_tag_filter;\n if (tag) {\n res[tag] = res[tag] ? res[tag] + 1 : 1;\n }\n return res;\n },\n {},\n );\n\n return bundleList.map((bundle) => ({\n ...bundle,\n unique_node_tag: bundle?.node_tag_filter ? nodeTags[bundle.node_tag_filter] === 1 : true,\n }));\n}\n\nexport function tabletCellNavigationLink(cluster, cellId) {\n return `/${cluster}/navigation?path=//sys/tablet_cells/${cellId}`;\n}\n\nexport function tabletActiveBundleLink(cluster, bundle, enable_bundle_controller) {\n const tabletTab = enable_bundle_controller ? TabletsTab.INSTANCES : TabletsTab.TABLET_CELLS;\n return `/${cluster}/${Page.TABLET_CELL_BUNDLES}/${tabletTab}?activeBundle=${bundle}`;\n}\n\nexport function tabletActiveChaosBundleLink(cluster, bundle) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}/${TabletsTab.CHAOS_CELLS}?activeBundle=${bundle}`;\n}\n\nexport function tabletCellBundleRootLink(cluster) {\n return `/${cluster}/${Page.TABLET_CELL_BUNDLES}`;\n}\n\nexport function tabletChaosBundleRootLink(cluster) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}`;\n}\n\nexport function tabletCellBundlesLink(cluster) {\n return `/${cluster}/${Page.TABLET_CELL_BUNDLES}`;\n}\n\nexport function tabletAttributesPath(id) {\n return `//sys/tablet_cells/${id}`;\n}\n\nexport function chaosCellNavigationLink(cluster, cellId) {\n return `/${cluster}/navigation?path=//sys/chaos_cells/${cellId}`;\n}\n\nexport function chaosActiveBundleLink(cluster, bundle) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}/${TabletsTab.CHAOS_CELLS}?activeBundle=${bundle}`;\n}\n\nexport function chaosCellBundlesLink(cluster) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}`;\n}\n\nexport function chaosAttributesPath(id) {\n return `//sys/chaos_cells/${id}`;\n}\n","import {addI18Keysets} from '../../../i18n/index';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nexport default addI18Keysets('yt:Columnselector', {en, ru});\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';\nimport Button from '../Button/Button';\n\nimport i18n from './i18n';\n\nimport './ColumnSelector.scss';\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={i18n('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 &nbsp;\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 {ChevronDown} from '@gravity-ui/icons';\n\nimport {Icon} from '../Icon';\nimport type {QAProps} from '../types';\nimport {block} from '../utils/cn';\n\nimport './ArrowToggle.scss';\n\nexport interface ArrowToggleProps extends QAProps {\n size?: number;\n direction?: 'top' | 'left' | 'bottom' | 'right';\n className?: string;\n}\n\nconst b = block('arrow-toggle');\n\nexport function ArrowToggle({size = 16, direction = 'bottom', className, qa}: ArrowToggleProps) {\n return (\n <span\n style={{width: size, height: size}}\n className={b({direction}, className)}\n data-qa={qa}\n >\n <Icon data={ChevronDown} size={size} />\n </span>\n );\n}\n","import {Popup} from '@gravity-ui/uikit';\nimport cn from 'bem-cn-lite';\nimport PropTypes from 'prop-types';\nimport React, {Component} from 'react';\nimport templates from '../templates/templates';\nimport './Dropdown.scss';\n\nconst block = cn('yt-dropdown');\n\nclass Dropdown extends Component {\n static propTypes = {\n button: PropTypes.oneOfType([PropTypes.element, PropTypes.object]).isRequired,\n className: PropTypes.string,\n popup: PropTypes.object,\n directions: PropTypes.array,\n trigger: PropTypes.oneOf(['click', 'hover']).isRequired,\n template: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.shape({\n key: PropTypes.string.isRequired,\n data: PropTypes.object,\n }),\n ]).isRequired,\n zIndexGroupLevel: PropTypes.number,\n };\n\n static defaultProps = {\n zIndexGroupLevel: 1,\n directions: ['bottom-end', 'top-end'],\n };\n\n state = {\n popupVisible: false,\n };\n\n anchor = React.createRef();\n\n toggle = () =>\n this.setState((prevState) => ({\n popupVisible: !prevState.popupVisible,\n }));\n\n open = () => this.setState({popupVisible: true});\n\n close = () => this.setState({popupVisible: false});\n\n renderButton() {\n const {button, trigger} = this.props;\n\n const actionProps = {\n onClick: trigger === 'click' ? this.toggle : undefined,\n onMouseEnter: trigger === 'hover' ? this.open : undefined,\n onMouseLeave: trigger === 'hover' ? this.close : undefined,\n };\n\n return React.cloneElement(button, actionProps);\n }\n\n renderTemplate() {\n const {template} = this.props;\n const {key, data} = this.props.template;\n const renderer = templates.get(key).__default__;\n\n return React.isValidElement(template)\n ? React.cloneElement(template)\n : renderer.call(this, data);\n }\n\n renderPopup() {\n const {popup, directions} = this.props;\n\n return (\n <Popup\n placement={directions?.[0] || 'bottom'}\n onOpenChange={(open) => {\n if (!open) {\n this.close();\n }\n }}\n open={true}\n anchorElement={this.anchor.current}\n {...popup}\n >\n <div className={block('popup-content')}>{this.renderTemplate()}</div>\n </Popup>\n );\n }\n\n render() {\n const {className} = this.props;\n\n return (\n <span className={block(null, className)} ref={this.anchor}>\n {this.renderButton()}\n {this.state.popupVisible && this.renderPopup()}\n </span>\n );\n }\n}\n\nexport default Dropdown;\n","import {addComponentKeysets} from '../../../i18n';\n\nimport en from './en.json';\nimport ru from './ru.json';\n\nconst COMPONENT = 'lab/Breadcrumbs';\n\nexport default addComponentKeysets({en, ru}, COMPONENT);\n","import {block} from '../utils/cn';\n\nexport const b = block('breadcrumbs');\n","'use client';\n\nimport * as React from 'react';\n\nimport {\n useClick,\n useDismiss,\n useFloatingRootContext,\n useInteractions,\n useListNavigation,\n useRole,\n} from '@floating-ui/react';\nimport type {UseInteractionsReturn} from '@floating-ui/react';\n\nimport {Button} from '../Button';\nimport {Popup} from '../Popup';\nimport type {PopupPlacement} from '../Popup';\n\nimport i18n from './i18n';\nimport {b} from './utils';\n\ninterface DropdownMenuProps {\n children: React.ReactNode;\n disabled?: boolean;\n popupPlacement?: PopupPlacement;\n popupStyle?: 'staircase';\n}\n\ninterface MenuContext {\n isMenu: boolean;\n activeIndex: null | number;\n getItemProps: UseInteractionsReturn['getItemProps'];\n listItemsRef: {current: Array<HTMLElement | null>};\n popupStyle: undefined | 'staircase';\n}\n\nconst menuContext = React.createContext<MenuContext>({\n isMenu: false,\n activeIndex: null as null | number,\n getItemProps: (props = {}) => props,\n listItemsRef: {current: []},\n popupStyle: undefined,\n});\n\nexport function BreadcrumbsDropdownMenu({\n children,\n disabled,\n popupPlacement,\n popupStyle,\n}: DropdownMenuProps) {\n const [reference, setReference] = React.useState<HTMLButtonElement | null>(null);\n const [floating, setFloating] = React.useState<HTMLDivElement | null>(null);\n const [activeIndex, setActiveIndex] = React.useState<number | null>(null);\n const [open, setOpen] = React.useState(false);\n\n const context = useFloatingRootContext({\n open,\n onOpenChange: setOpen,\n elements: {reference, floating},\n });\n\n const listItemsRef = React.useRef<Array<HTMLElement | null>>([]);\n\n const listNavigation = useListNavigation(context, {\n enabled: !disabled,\n listRef: listItemsRef,\n activeIndex,\n onNavigate: setActiveIndex,\n loop: true,\n });\n\n const dismiss = useDismiss(context, {enabled: !disabled});\n const click = useClick(context, {enabled: !disabled});\n const role = useRole(context, {role: 'menu'});\n\n const interactions = [click, dismiss, listNavigation, role];\n const {getReferenceProps, getItemProps} = useInteractions(interactions);\n\n const {t} = i18n.useTranslation();\n\n return (\n <div className={b('menu')}>\n <Button\n ref={setReference}\n {...getReferenceProps()}\n title={t('label_more')}\n aria-label={t('label_more')}\n size=\"s\"\n view=\"flat\"\n disabled={disabled}\n >\n <Button.Icon>...</Button.Icon>\n </Button>\n <Popup\n floatingContext={context}\n floatingRef={setFloating}\n floatingInteractions={interactions}\n placement={popupPlacement}\n className={b('menu-popup')}\n >\n <menuContext.Provider\n value={{isMenu: true, getItemProps, listItemsRef, activeIndex, popupStyle}}\n >\n {children}\n </menuContext.Provider>\n </Popup>\n </div>\n );\n}\n\nexport function useMenuContext() {\n return React.useContext(menuContext);\n}\n","import * as React from 'react';\n\nimport {Check} from '@gravity-ui/icons';\nimport {focusable} from 'tabbable';\n\nimport {useForkRef} from '../../../hooks';\nimport {ArrowToggle} from '../../ArrowToggle';\nimport {Button} from '../../Button';\nimport {Icon} from '../../Icon';\nimport type {DOMProps} from '../../types';\nimport {block} from '../../utils/cn';\nimport {filterDOMProps} from '../../utils/filterDOMProps';\n\nimport './ListItemView.scss';\n\nconst b = block('lab-list-item-view');\n\nexport interface ListItemViewProps<T extends React.ElementType = 'div'> extends DOMProps {\n id?: string;\n children: React.ReactNode;\n size?: 's' | 'm' | 'l' | 'xl';\n selected?: boolean;\n active?: boolean;\n hovered?: boolean;\n onClick?: (e: React.MouseEvent) => void;\n disabled?: boolean;\n selectionStyle?: 'check' | 'highlight' | 'none';\n collapsible?: boolean;\n collapsed?: boolean;\n onCollapseChange?: (collapsed: boolean) => void;\n draggable?: boolean;\n nestedLevel?: number;\n startContent?: React.ReactNode;\n description?: React.ReactNode;\n endContent?: React.ReactNode;\n isContainer?: boolean;\n component?: T;\n componentProps?: React.ComponentProps<T>;\n}\n\nexport const ListItemView = React.forwardRef(ListItemViewComponent) as <\n T extends React.ElementType = 'div',\n>(\n props: ListItemViewProps<T> & Omit<React.ComponentPropsWithRef<T>, keyof ListItemViewProps<T>>,\n) => React.ReactElement;\n\nexport function ListItemViewComponent(\n props: ListItemViewProps & Omit<React.ComponentPropsWithoutRef<'div'>, keyof ListItemViewProps>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const {\n size,\n active,\n selected,\n hovered,\n disabled,\n onClick,\n selectionStyle,\n className,\n style,\n collapsed,\n onCollapseChange,\n children,\n isContainer = false,\n component: Component = 'div',\n componentProps,\n collapsible: _collapsible,\n description,\n draggable: _draggable,\n startContent: _startContent,\n endContent: _endContent,\n nestedLevel: _nestedLevel,\n } = props;\n const containerRef = React.useRef(null);\n const componentRef = useForkRef(containerRef, ref);\n return (\n <Component\n ref={componentRef}\n {...componentProps}\n {...filterDOMProps(props)}\n className={b(\n {\n size,\n selected: selected && selectionStyle === 'highlight',\n disabled,\n active,\n hovered: typeof hovered === 'boolean' && (hovered ? 'yes' : 'no'),\n 'is-container': isContainer,\n 'has-description': Boolean(description),\n },\n componentProps?.className ?? className,\n )}\n style={componentProps?.style ?? style}\n onClick={(e) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n const target = e.target;\n if (\n target instanceof Element &&\n containerRef.current &&\n focusable(containerRef.current).some((el) => el.contains(target))\n ) {\n return;\n }\n\n if (\n typeof onClick === 'function' ||\n typeof componentProps?.onClick === 'function'\n ) {\n onClick?.(e);\n componentProps?.onClick?.(e);\n } else if (typeof onCollapseChange === 'function') {\n onCollapseChange(!collapsed);\n }\n }}\n >\n {isContainer ? (\n children\n ) : (\n <ListItemViewContent {...props}>{children}</ListItemViewContent>\n )}\n </Component>\n );\n}\n\nfunction ListItemViewContent({\n selected,\n disabled,\n selectionStyle,\n draggable,\n nestedLevel,\n collapsible,\n collapsed,\n onCollapseChange,\n startContent,\n children,\n description,\n endContent,\n}: ListItemViewProps) {\n return (\n <React.Fragment>\n {draggable ? <Slot name=\"drag-handle\" /> : null}\n {nestedLevel ? <Slot name=\"spacer\" style={{'--_--nested-level': nestedLevel}} /> : null}\n {collapsible ? (\n <Slot name=\"collapsed-toggle\">\n <Button\n className={b('collapsible')}\n view=\"flat\"\n tabIndex={-1}\n disabled={disabled}\n onClick={() => {\n onCollapseChange?.(!collapsed);\n }}\n aria-hidden=\"true\"\n >\n <Button.Icon>\n <ArrowToggle\n className={b('arrow', {direction: collapsed ? 'bottom' : 'top'})}\n />\n </Button.Icon>\n </Button>\n </Slot>\n ) : null}\n {selectionStyle === 'check' && (\n <Slot name=\"checked\">\n <div className={b('checked')}>\n {selected ? <Icon data={Check} className={b('icon')} /> : null}\n </div>\n </Slot>\n )}\n {startContent ? <Slot name=\"start-content\">{startContent}</Slot> : null}\n <Slot name=\"content\">{children}</Slot>\n {description ? <Slot name=\"description\">{description}</Slot> : null}\n {endContent ? <Slot name=\"end-content\">{endContent}</Slot> : null}\n </React.Fragment>\n );\n}\n\nfunction Slot({\n name,\n children,\n className,\n style,\n}: {\n name:\n | 'drag-handle'\n | 'spacer'\n | 'collapsed-toggle'\n | 'checked'\n | 'start-content'\n | 'content'\n | 'description'\n | 'end-content'\n | 'container';\n children?: React.ReactNode;\n} & DOMProps) {\n return (\n <div className={b('slot', {name}, className)} style={style}>\n {children}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\n\nimport {KeyCode} from '../../constants';\nimport {ListItemView} from '../lab/ListItemView/ListItemView';\nimport {filterDOMProps} from '../utils/filterDOMProps';\n\nimport {useMenuContext} from './BreadcrumbsDropdownMenu';\nimport {b} from './utils';\n\nexport interface BreadcrumbsItemInnerProps {\n __disabled?: boolean;\n __onAction?: () => void;\n __current?: boolean;\n __index?: number;\n}\n\nexport interface BreadcrumbsItemProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n disabled?: boolean;\n children?: React.ReactNode;\n}\n\nfunction BreadcrumbsItem(props: BreadcrumbsItemProps, ref: React.ForwardedRef<HTMLAnchorElement>) {\n const domProps = filterDOMProps(props, {labelable: true});\n\n const {\n href,\n hrefLang,\n target,\n rel,\n download,\n ping,\n referrerPolicy,\n children,\n __disabled: disabled,\n __current: current,\n __onAction: onAction,\n __index: index,\n ...restProps\n } = props as BreadcrumbsItemProps & BreadcrumbsItemInnerProps;\n\n const handleAction = (event: React.MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n if (typeof restProps.onClick === 'function') {\n restProps.onClick(event);\n }\n\n if (typeof onAction === 'function') {\n onAction();\n }\n };\n\n const linkProps: React.AnchorHTMLAttributes<HTMLAnchorElement> = {\n onClick: handleAction,\n 'aria-disabled': disabled ? true : undefined,\n };\n\n if (href) {\n linkProps.href = href;\n linkProps.hrefLang = hrefLang;\n linkProps.target = target;\n linkProps.rel = target === '_blank' && !rel ? 'noopener noreferrer' : rel;\n linkProps.download = download;\n linkProps.ping = ping;\n linkProps.referrerPolicy = referrerPolicy;\n linkProps.tabIndex = disabled ? -1 : undefined;\n } else {\n linkProps.role = 'link';\n linkProps.tabIndex = disabled ? undefined : 0;\n linkProps.onKeyDown = (event) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n\n if (typeof restProps.onKeyDown === 'function') {\n restProps.onKeyDown(event);\n }\n\n if (event.key === KeyCode.ENTER) {\n if (typeof onAction === 'function') {\n onAction();\n }\n }\n };\n }\n\n if (current) {\n linkProps['aria-current'] = props['aria-current'] ?? 'page';\n }\n\n const Element = href ? 'a' : 'span';\n\n const {isMenu, getItemProps, listItemsRef, activeIndex, popupStyle} = useMenuContext();\n if (isMenu) {\n const active = !disabled && activeIndex === index;\n return (\n <ListItemView\n ref={(node: HTMLElement | null) => {\n listItemsRef.current[index ?? 0] = node;\n }}\n nestedLevel={popupStyle === 'staircase' ? index : undefined}\n active={active}\n size=\"m\"\n className={b('menu-link', props.className)}\n component={Element}\n componentProps={getItemProps({\n ...restProps,\n ...domProps,\n ...linkProps,\n role: 'menuitem',\n tabIndex: active ? 0 : -1,\n })}\n disabled={disabled}\n >\n {children}\n </ListItemView>\n );\n }\n\n return (\n <Element\n {...restProps}\n {...domProps}\n {...linkProps}\n ref={ref}\n className={b(\n 'link',\n {\n 'is-current': current,\n 'is-disabled': disabled && !current,\n },\n props.className,\n )}\n >\n {children}\n </Element>\n );\n}\n\nBreadcrumbsItem.displayName = 'Breadcrumbs.Item';\n\nconst _BreadcrumbsItem = React.forwardRef(BreadcrumbsItem);\nexport {_BreadcrumbsItem as BreadcrumbsItem};\n","import type {BreadcrumbsProps} from './Breadcrumbs';\nimport {b} from './utils';\n\ntype Props = Pick<BreadcrumbsProps, 'separator'>;\n\nexport function BreadcrumbsSeparator({separator}: Props) {\n return (\n <div aria-hidden={true} className={b('divider')}>\n {separator ?? '/'}\n </div>\n );\n}\n\nBreadcrumbsSeparator.displayName = 'Breadcrumbs.Separator';\n","'use client';\n\nimport * as React from 'react';\n\nimport {useForkRef, useResizeObserver} from '../../hooks';\nimport type {PopupPlacement} from '../Popup';\nimport type {AriaLabelingProps, DOMProps, Key, QAProps} from '../types';\nimport {filterDOMProps} from '../utils/filterDOMProps';\n\nimport {BreadcrumbsDropdownMenu} from './BreadcrumbsDropdownMenu';\nimport {BreadcrumbsItem} from './BreadcrumbsItem';\nimport type {BreadcrumbsItemInnerProps} from './BreadcrumbsItem';\nimport {BreadcrumbsSeparator} from './BreadcrumbsSeparator';\nimport {b} from './utils';\n\nimport './Breadcrumbs.scss';\n\nexport interface BreadcrumbsProps extends DOMProps, AriaLabelingProps, QAProps {\n id?: string;\n showRoot?: boolean;\n separator?: React.ReactNode;\n maxItems?: number;\n popupStyle?: 'staircase';\n popupPlacement?: PopupPlacement;\n itemComponent?: React.ElementType;\n children: React.ReactNode;\n disabled?: boolean;\n onAction?: (key: Key) => void;\n endContent?: React.ReactNode;\n}\n\nexport const Breadcrumbs = React.forwardRef(function Breadcrumbs(\n props: BreadcrumbsProps,\n ref: React.Ref<HTMLOListElement>,\n) {\n const listRef = React.useRef<HTMLOListElement>(null);\n const containerRef = useForkRef(ref, listRef);\n const endContentRef = React.useRef<HTMLLIElement>(null);\n\n const items: React.ReactElement<any>[] = [];\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\n const [visibleItemsCount, setVisibleItemsCount] = React.useState(items.length);\n const [calculated, setCalculated] = React.useState(false);\n const recalculate = (visibleItems: number) => {\n const list = listRef.current;\n if (!list) {\n return;\n }\n const listItems = Array.from(list.children) as HTMLElement[];\n const endElement = endContentRef.current;\n if (endElement) {\n listItems.pop();\n }\n if (listItems.length === 0) {\n setCalculated(true);\n return;\n }\n const containerWidth = list.offsetWidth - (endElement?.offsetWidth ?? 0);\n let newVisibleItemsCount = 0;\n let calculatedWidth = 0;\n let maxItems = props.maxItems || Infinity;\n\n let rootWidth = 0;\n if (props.showRoot) {\n const item = listItems.shift();\n if (item) {\n rootWidth = item.offsetWidth;\n calculatedWidth += rootWidth;\n }\n newVisibleItemsCount++;\n }\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\n if (props.showRoot && calculatedWidth >= containerWidth) {\n calculatedWidth -= rootWidth;\n newVisibleItemsCount--;\n }\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\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\n newVisibleItemsCount = Math.max(Math.min(maxItems, newVisibleItemsCount), 1);\n if (newVisibleItemsCount === visibleItemsCount) {\n setCalculated(true);\n } else {\n setVisibleItemsCount(newVisibleItemsCount);\n }\n };\n\n const handleResize = React.useCallback(() => {\n setVisibleItemsCount(items.length);\n setCalculated(false);\n }, [items.length]);\n useResizeObserver({\n ref: listRef,\n onResize: handleResize,\n });\n useResizeObserver({\n ref: props.endContent ? endContentRef : undefined,\n onResize: handleResize,\n });\n\n const lastChildren = React.useRef<typeof props.children | null>(null);\n React.useLayoutEffect(() => {\n if (calculated && props.children !== lastChildren.current) {\n lastChildren.current = props.children;\n setVisibleItemsCount(items.length);\n setCalculated(false);\n }\n }, [calculated, items.length, props.children]);\n\n React.useLayoutEffect(() => {\n if (!calculated) {\n recalculate(visibleItemsCount);\n }\n });\n\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 = (\n <BreadcrumbsDropdownMenu\n disabled={props.disabled}\n popupPlacement={props.popupPlacement}\n popupStyle={props.popupStyle}\n data-breadcrumbs-menu-item={true}\n >\n {hiddenItems.map((child, index) => {\n const Component = props.itemComponent ?? BreadcrumbsItem;\n const key = child.key ?? index;\n const handleAction = () => {\n if (typeof props.onAction === 'function') {\n props.onAction(key);\n }\n };\n const innerProps: BreadcrumbsItemInnerProps = {\n __index: index,\n __disabled: props.disabled || child.props.disabled,\n __onAction: handleAction,\n };\n return (\n <Component {...child.props} key={key} {...innerProps}>\n {child.props.children}\n </Component>\n );\n })}\n </BreadcrumbsDropdownMenu>\n );\n\n contents.push(menuItem);\n contents.push(...breadcrumbs.slice(-endItems));\n }\n\n const lastIndex = contents.length - 1;\n const breadcrumbsItems = contents.map((child, index) => {\n const isCurrent = index === lastIndex;\n const key = child.key ?? index;\n\n const {'data-breadcrumbs-menu-item': isMenu, ...childProps} = child.props;\n let item: React.ReactNode;\n if (isMenu) {\n item = child;\n } else {\n const Component = props.itemComponent ?? BreadcrumbsItem;\n const handleAction = () => {\n if (typeof props.onAction === 'function') {\n props.onAction(key);\n }\n };\n const innerProps: BreadcrumbsItemInnerProps = {\n __current: isCurrent,\n __disabled: props.disabled || childProps.disabled,\n __onAction: handleAction,\n };\n item = (\n <Component {...childProps} key={key} {...innerProps}>\n {childProps.children}\n </Component>\n );\n }\n return (\n <li\n key={isMenu ? 'menu' : `item-${key}`}\n className={b('item', {calculating: isCurrent && !calculated, current: isCurrent})}\n >\n {item}\n {isCurrent ? null : <BreadcrumbsSeparator separator={props.separator} />}\n </li>\n );\n });\n if (props.endContent) {\n breadcrumbsItems.push(\n <li key=\"end-content\" ref={endContentRef} className={b('item')}>\n {props.endContent}\n </li>,\n );\n }\n return (\n <ol\n ref={containerRef}\n {...filterDOMProps(props, {labelable: true})}\n data-qa={props.qa}\n className={b(null, props.className)}\n style={props.style}\n >\n {breadcrumbsItems}\n </ol>\n );\n}) as unknown as BreadcrumbsComponent;\n\ntype BreadcrumbsComponent = React.FunctionComponent<\n BreadcrumbsProps & {ref?: React.Ref<HTMLElement>}\n> & {\n Item: typeof BreadcrumbsItem;\n};\n\nBreadcrumbs.Item = BreadcrumbsItem;\nBreadcrumbs.displayName = 'Breadcrumbs';\n"],"names":["block","cn","VisibleValues","_ref","className","value","maxVisibleValues","maxTextLength","_ref$renderItem","renderItem","counter","visibleItems","React","maxCounts","undefined","i","sum","length","newSum","push","visibleCount","min_","slice","max_","hasMissing","hideSpacer","_jsxs","children","_jsx","map","option","index","_Fragment","missing","SelectedCount","count","mode","_ref2","_ref2$count","_ref2$visibleCount","parseBytes","input","names","formatRegex","RegExp","join","test","match","dimension","trim","dimensionIndex","findIndex_","name","toUpperCase","Math","floor","Number","pow","makeComponentsNodesUrl","arguments","host","cluster","concat","YT","Page","COMPONENTS","ComponentsTab","NODES","makeProxyUrl","address","RPC_PROXIES","makeSchedulingUrl","pool","poolTree","tab","path","SCHEDULING","filter","Boolean","makeAccountsUrl","account","ACCOUNTS","makeFlowLink","_ref4","_ref4$tab","FlowTab","GRAPH","computation","partition","partitionIdFilter","worker","pathname","FLOWS","params","URLSearchParams","COMPUTATIONS","encodeURIComponent","append","WORKERS","b","Placeholder","useRouteMatch","theme","hammer","format","TextInputWithDebounce","props","_props$debounce","debounce","_props$onUpdate","onUpdate","onBlur","onEnterKeyDown","onKeyDown","rest","_objectWithoutProperties","_excluded","_React$useState","_React$useState2","_slicedToArray","setInput","handleChangeExt","debounce_","handleChange","text","handleKeyDown","e","key","handleBlur","cancel","TextInput","_objectSpread","withSplit","Component","_WithSplit","_React$Component","WithSplit","_classCallCheck","_callSuper","_inherits","_createClass","ReactDOM","this","document","getElementById","SPLIT_PANE_ID","displayName","getDisplayName","LoadDataHandler","_Component","_this$props","error","loaded","errorData","toaster","add","autoHiding","title","content","message","NO_VALUE","actions","label","onClick","showErrorPopup","_this$props2","_this$props2$alwaysSh","alwaysShowError","YTErrorBlock","SidePanelPortal","useSidePanel","renderContent","widgetOpened","setWidgetOpened","dispatch","useDispatch","openWidget","splitScreen","onClose","mergeScreen","closeWidget","widgetContent","visible","Chevron","xmlns","viewBox","width","height","fill","d","emptyValue","SelectFacade","items","onChange","_React$useMemo","hashByValue","Map","options","item","res","data","set","prepareItems","newValue","filteredValue","filter_","CustomSelect","SelectSingle","_excluded2","vals","isEmpty","getDefaultValue","_this","_len","args","Array","_key","renderControl","ref","_excluded3","pin","placeholder","disabled","maxVisibleValuesTextLength","ValueControl","controlRef","useNoValue","icon","empty","Text","color","renderItemContent","renderOption","meta","String","ellipsis","renderFilter","_ref3","_excluded4","hideClear","Button","view","_this$props$onUpdate","_this$props3","call","_this$props4","hideFilter","_excluded5","Select","disablePortal","filterable","triggerProps","_ref5","w","style","get","variant","defaultProps","withRouter","state","_props$theme","url","computeStateQuery","Link","routed","FormattedText","FormattedTextOrLink","_ref$asLink","asLink","FormattedLink","FormattedId","id","_useState","useState","_useState2","hovered","setHovered","onMouseEnter","onMouseLeave","ClipboardButton","size","printColumnAsBytes","columnName","column","columns","printColumnAsNumber","TableInfo","showingItems","totalItems","changeHostFilter","hostFilter","type","CHANGE_VERSION_SUMMARY_PARTIAL","changeVersionFilter","versionFilter","changeTypeFilter","typeFilter","prepareGroup","group","version","reduce_","acc","total","banned","offline","online","changeVersionStateTypeFilters","stateFilter","bannedFilter","reHashFromNodeVersion","uiSettings","VersionCell","visibleVersion","tildaIndex","indexOf_","substr","shortHash","handleClick","versionContent","Tooltip","hashPart","_res$groups","exec","groups","hash","ClickableText","shiftText","hoverContent","VersionCellWithAction","tableProps","css","striped","cssHover","templates","showError","handleItemClick","getWindowStore","align","sort","caption","tooltipProps","placement","start_time","sets","detailed","detailsTableProps","tableId","COMPONENTS_VERSIONS_DETAILED_TABLE_ID","aggregateItems","proxies","has","_toConsumableArray","entries","getSelectItems","allItems","otherFilters","isAllSelected","isEmpty_","sumBy_","getDetails","components","versionsV2","details","getHostFilter","getFilteredByHost","createSelector","toLowerCase","includes","getFilters","k","getFiltersSkipVersion","filters","getFiltersSkipType","getFiltersSkipState","getFiltersSkipBanned","getFilteredDetails","getVisibleDetails","tables","sortState","utils","getAllVersions","versions","getAllTypes","getAllStates","getAllBanned","getVisibleVersions","getVisibleTypes","getVisibleStates","getVisibleBanned","getVersionSelectItems","getTypeSelectItems","getStatesSelectItems","getBannedSelectItems","getSummarySortState","summarySortState","getSummary","summary","getHideOfflineValue","checkedHideOffline","getVisibleSummaryItems","getVersions","_step","_iterator","_createForOfIteratorHelper","s","n","done","err","f","getVersionsSummaryData","getTotalElementOfSummary","sortArrayBySortState","splice","_step2","Set","_iterator2","_i","_Array$from","from","component","_step3","row","_iterator3","SETTINGS","displayIndices","DEFAULT_VERSIONS","BASE_COMPONENTS","VersionsSummary","renderType","renderNumber","rowData","clickable","renderSelectFilter","Flex","direction","handleShowAll","handleReset","handleOnSort","order","setVersionsSummarySortState","_this$state","currentVersions","sortOrder","isArray","DataTable","DESCENDING","setState","columnId","ASCENDING","visibleColumnsNames","visibleColumns","col","showAll","handleHideOffline","changeCheckedHideOffline","handleSelectUpdate","prepareValue","prepareSelectOptions","newData","item1","item2","localeCompare","forEach","find","reverse","isSpecial","isSpecialRow","prevProps","prevState","_this$state2","onlineVersions","hideOfflineUpdated","sortable","render","bind","header","renderHeader","ColumnHeader","shortTitle","split","onSort","sortIconSize","_this2","_this$state3","loading","monitoringLink","UIFactory","getVersionMonitoringLink","customStyle","position","left","backgroundColor","zIndex","boxShadow","makeColumnInfo","Checkbox","defaultChecked","multiple","formatByParams","urlTemplate","ytCluster","target","Icon","awesome","DataTableYT","settings","mapDispatchToProps","connect","_state$components$ver","getCluster","VersionsV2Updater","updateFn","getState","DISCOVER_VERSIONS","REQUEST","axios","then","preparedTotal","preparedError","preparedVersions","map_","calculatedState","prepareDetails","SUCCESS","FAILURE","Promise","reject","useUpdater","VersionsV2","onBannedChange","_false$true$all$value","changeBannedFilter","false","true","all","versionSelectItems","typeSelectItems","stateSelectItems","changeStateFilter","Filter","hasClear","autofocus","DEBOUNCE_TIME","getBannedItems","bannedSelectItems","Toolbar","itemsToWrap","node","renderFilters","growable","ColumnAsTime","ClickableId","ReadableField","printColumnAsError","Host","useText","NodeColumnState","NodeColumnBanned","decommissioned","full","alerts","versionIsError","FirstUppercase","initialLoading","_this$props5","ErrorBoundary","CollapsibleSection","collapsed","UI_COLLAPSIBLE_SIZE","onToggle","setTimeout","window","dispatchEvent","Event","WithStickyToolbar","topMargin","toolbar","renderToolbar","ElementsTable","isLoading","getDetailsTemplates","allDetails","ProxyActions","handleEditClick","proxy","showNodeMaintenance","PROXY_TYPE","HTTP","ClickableAttributesButton","basePath","withTooltip","face","MaintenanceRequestsImpl","_ref$requests","requests","Object","keys","_requests$key","user","comment","Bold","Label","SubjectCard","WarningLight","MaintenanceRequests","ProxyCard","handleClose","clusterConfig","_this$props$proxy","physicalHost","renderComponentsNodeCardTop","_this$props$proxy2","banMessage","role","loadAverage","networkLoad","updatedAt","maintenanceRequests","MetaTable","NodeColumnRole","renderTop","ProxyCardConnected","useSelector","getCurrentClusterConfig","_useSidePanel","SPLIT_TYPE","proxyProps","PropTypes","isRequired","effectiveState","proxiesTableColumnItems","load_average","updated_at","network_load","aggregation","countValues","selectFilter","getProxies","getStateFilter","getRoleFilter","roleFilter","getFiltersObject","getFilteredProxies","filtersObject","filterProxies","bannedFilterAsBool","predicates","compact_","concatByAnd","apply","getAllRoles","getVisibleRoles","_ref6","filtered","getVisibleProxies","COMPONENTS_PROXIES_TABLE_ID","getRoles","getStates","NodeMaintenanceModal","setError","initialValues","getNodeMaintenanceModalInitialValues","_useSelector","getNodeMaintenanceModalState","resourceLimits","allowedMaintenanceTypes","allowLimitsTab","allowChangeRole","YTDFDialog","headerProps","prefix","closeNodeMaintenanceModal","onAdd","_asyncToGenerator","_regeneratorRuntime","mark","_callee","form","_form$getState","_form$getState$values","limits","roleTab","diff","limitsDiff","wrap","_context","prev","next","values","t","_initialValues$type","_initialValues$limits","applyMaintenance","stop","_x","fields","makeMaintenanceFields","makeErrorFields","makeResourceLimitField","allowOthers","extras","makeRadioExtras","_values$type","_labels$type","ban","decommission","_ref4$","activeLabel","_ref4$2","defaults","_OPTIONS$name","_options$format","cpu","gpu","user_memory","system_memory","repair_data_size","replication_data_size","showDefaultValue","defaultValue","defaultValueClassName","bottomLineVisibility","ProxiesUpdater","destructFn","resetProxyState","Proxies","activeProxy","splitScreenAction","paneClassNames","renderActions","_defineProperty","RPC","CYPRESS","onItemClick","tableColumnsSets","renderHost","renderState","renderBanned","renderRole","renderLoadAverage","renderNetworkLoad","renderUpdatedAt","renderVersion","computeKey","states","changeRoleFilter","roles","isPaneSplit","NodeColumnText","digits","_item$networkLoad","toPrecision","selectProps","global","_components$proxies$p","visibleProxies","getSavedPresets","getTemplates","presets","transform_","isDefault","getPresets","initialFiltersState","defaultPreset","savedPresets","FiltersPresets","handlePresetClick","preset","applyPreset","handleRemoveClick","evt","removePreset","stopPropagation","_this3","renderPreset","addI18Keysets","en","ru","FilterWithRegExp","_React$PureComponent","toggleRegexpMode","_this$input","_this$props$value","useRegexp","focus","onFilterChange","regexpError","_this$props$placehold","i18n","_this$props$placehold2","placeholderRegexp","prevFilter","TagSelector","TAG_FILTER_MODES","selected","ICONS","union","intersection","TagsFilter","_props$size","selectPlaceholder","_props$allowedModes","allowedModes","_value$mode","_value$filter","_value$selected","v","handleFilterChange","handleSelectChange","selectedItems","control","modes","m","itemMode","iconStart","substring","action","DropdownMenu","renderSwitcher","groupFilterProps","valid","to","SetupModal","handleApplySetup","savePreset","saveAsTemplate","templateName","setup","updateListWithAll","default","handleValueFilterChange","section","parsedValue","isValid","isNaN","handleTextFilterChange","handleTemplateCheckboxChange","checked","handleTemplateNameChange","stateValue","handler","scope","nodeStates","Readable","ENABLED","FLAG_STATE","DISABLED","ALL","invalid","_ref2$format","formatter","toString","preparedValue","_ref3$disabled","_ref3$invalid","_ref4$disabled","_ref4$invalid","_this$prepareFiltersC","prepareFiltersCallback","_this$prepareFiltersC2","firstCallback","secondCallback","_filter$from","fromFilterValid","fromFilterValue","_filter$to","toFilterValid","toFilterValue","renderValueFilter","RadioButton","radioItems","ev","handleRadioChange","_this4","nodeTags","nodeRacks","renderTextFilter","renderTagsFilter","renderStatesSelect","renderRadioGroup","_this5","mediumList","Fragment","renderFiltersGroup","medium","MEDIUM_COLS_PREFIX","renderDefaultFilters","renderStorageFilters","renderCpuFilters","renderResourcesFilters","renderTabletsFilters","renderCheckBox","Hotkey","hotkeySettings","Modal","onCancel","onConfirm","loadOptions","inner","mapValues_","initialState","storage","newStorage","radioProps","getComponentNodesFiltersSetup","getMediumListNoCache","getComponentNodesTags","getComponentNodesRacks","COMPONENTS_AVAILABLE_STATES","getComponentNodesFilterSetupStateValue","getComponentsNodesFilterOptions","loadNodeAttributes","NODE_LOAD_REQUEST","ytApiV3Id","YTApiId","nodeAttributes","attributes","prepareAttributes","Node","ATTRIBUTES","NODE_LOAD_SUCCESS","NODE_LOAD_FAILURE","getSortedItems","COMPONENTS_NODES_NODE_TABLE_ID","_state","tabletSlots","raw","nodeTableProps","nodeSelector","nodeHostSelector","_nodeSelector$node","getNodeAlertCount","_state$components$nod","alertCount","getNodeAlerts","_state$components$nod2","hasCpuAndMemoryMeta","cpuProgress","memoryProgress","networkProgress","NodeCpuAndMemory","memoryData","memoryText","cpuText","networkText","Progress","MemoryProgress","progress","progressText","hasResourcesMeta","userSlots","usage","sealSlots","repairSlots","removalSlots","replicationSlots","some","NodeResources","calcProgressProps","hasStorageMeta","spaceProgress","sessions","chunks","IOWeight","NodeStorage","ioItems","spaceText","genTabletCellBundlesCellUrl","cell_id","peer_id","_TABLET_SLOTS","TABLET_SLOTS","StatusBlock","NodeTabletSlots","startIndex","useThemeYT","getNodeMetaItems","dataCenter","decommissionedMessage","disableJobs","disableWriteSession","disableTabletCells","jobProxyBuildVersion","lastSeenTime","rack","stateText","stateTheme","getStateTheme","renderLabel","NodeCardUpdater","timeout","onlyOnce","locations","low_watermark_space","available_space","session_count","chunk_count","used_space","throttling_writes","throttling_reads","enabled","sick","medium_name","location_uuid","byState","NodeCard","_this$props$node","location","locationProgress","locationText","Template","FormattedValue","renderLocation","alert","YTAlertBlock","_this$props$node2","systemTags","userTags","tag","tabIndex","renderDefault","renderAlerts","renderLocations","renderTabletSlots","renderCpuAndMemory","renderStorage","renderResources","renderCard","compose","_nodeSelector","NodesUpdater","getRequiredAttributes","nodeTypes","getComponentsNodesNodeTypes","getNodes","useUpdaterWithMemoizedParams","Nodes","activeNodeHost","selectedColumns","nodes","getSelectedIndex","memoize_","findIndex","handlePresetChange","_node","sideBarEnabled","handleColumnsChange","keyCode","KeyCode","ARROW_DOWN","preventDefault","selectNextSuggestion","ARROW_UP","selectPrevSuggestion","ESCAPE","handleSetupModalClose","handleContentModeChange","_callee2","changeContentMode","_context2","nodesTableProps","colInfo","hidden","includes_","selectedIndex","contentMode","toggleVisible","filterCount","isFiltered","Dropdown","trigger","directions","button","CONTENT_MODE","CUSTOM","template","ColumnSelector","allColumns","ComponentsNodeTypeSelector","Loader","Radiobutton","CONTENT_MODE_ITEMS","hasSplit","custom","bottomMargin","doubleHeight","connector","visibleNodes","getVisibleNodes","getSelectedColumns","defaultColumns","getComponentNodesTableProps","getSettingsEnableSideBar","getComponentNodesFiltersCount","withVisible","CancelHelper","getShards","GET_SHARDS","removeAllRequests","list","componentsShards","parameters","cancellation","saveCancelToken","shards","code","yt","CANCELLED","closeNameEditor","CLOSE_SHARD_NAME_EDITOR","setShardName","SET_SHARD_NAME","openNameEditor","OPEN_SHARD_NAME_EDITOR","_state$components$sha","nameId","nameVisible","nameLoading","nameLoaded","nameError","nameErrorData","editId","initialName","changeName","isConfirmDisabled","openAttributesModal","attribute","tableSettings","account_statistics","node_count","abortAllRequests","useEffect","Name","NodeCount","NodeGeneralTab","getNodeMemoryLoaded","memory","getNodeMemoryLoading","getNodeMemoryError","getNodeMemoryViewMode","viewMode","getNodeMemoryFilter","getNodeMemoryStateHost","getNodeMemorySortOrder","getNodeMemoryCollapsedBundles","collapsedBundles","getNodeMemoryUsageTotal","getNodeMemoryUsageBundles","bundles","getNodeMemoryUsageTables","_state$components$nod3","getNodeMemoryUsageTablesSortOrder","tablesSortOrder","getNodeMemoryUsageTotalStorePreload","calculateStorePreload","getNodeMemoryUsageTotalTableStatic","_state$components$nod4","tablet_static","getNodeMemoryUsageTotalRowCache","_state$components$nod5","row_cache","_ref$preload_store_co","preload_store_count","allCount","NaN","_ref$preload_pending_","preload_pending_store_count","pending","_ref$preload_failed_s","preload_failed_store_count","failed","completed","getNodeMemoryUsageTotalTabletDynamic","tablet_dynamic","active","passive","backing","limit","others","other","sum_","toArray_","getNodeMemoryUsageBundlesByName","itemsByName","maxTabletStatic","maxRowCache","forEach_","bundleName","_total$tablet_dynamic","tmp","parent","storePreload","rowCache","rowCacheLimit","tabletStatic","tabletStaticLimit","tabletDynamic","tabletDynamicSum","isBundle","getNodeMemoryUsageBundlesTreeRoot","bundlesInfo","cells","bundle","cellName","prepareTree","getNodeMemoryUsageBundlesTreeRootFiltered","root","filterTree","indexOf","isCollapsed","getNodeMemoryUsageBundlesItems","sortTreeInPlace","flattenTree","_ref7","sortTree","orderTypeToOldSortState","sortWithUndefined","allowBundlesForTables","_toArray_","first","tablet_cell_bundle","getNodeMemoryUsageTablesAndBundlesByName","allowBundles","maxStatic","maxDynamic","tablesByName","getNodeMemoryUsageTablesTree","tablesAndBundles","getNodeMemoryUsageTablesFiltered","getNodeMemoryUsageTablesItemsSorted","_ref8","progressClass","NodeBundlesTotal","TabletDynamicTotal","UsageLimitProgress","StorePreload","COLORS","STACKED_PROGRESS_BAR_COLORS","_props$data","hideLimit","limitTooltipTitle","usageSum","stack","Bytes","_COLORS$key","getProgressBarColorByIndex","borderRadius","_props$data2","_React$useMemo2","progressClassName","NodeMemoryDetailsTable","toggleExpand","nameColumnTitle","toggleSort","nextOrder","sortStateByName","allowedOrderTypes","level","_item$attributes","_ref2$row$attributes","SecondaryBold","_ref3$row$attributes","_ref4$row$attributes","DATA_TABLE_YT_SETTINGS","rowClassName","onRowClick","toggleNodeMemoryBundleExpanded","NODE_MEMORY_PARTIAL","setNodeMemoryFilters","NodeBundles","toggleExpandState","handleSort","setNodeBundlesSort","NodeTables","NodeMemoryUsageToolbar","handleViewMode","handleFilter","CustomRadioButton","NodeMemoryUsage","decodeURIComponent","NODE_MEMORY_LOAD_REQUEST","nodeMemoryUsage","NODE_MEMORY_LOAD_SUCCESS","NODE_MEMORY_LOAD_FAILURE","loadNodeMemoryUsage","NodeMeta","tags","_ref$banMessage","metaTableItems","tagsItems","Tags","urlItems","getExtraMetaTableItemsForComponentsNode","NodeAlerts","_ref9","NodeLocations","NodeTabletSlotsTab","cancelHeler","getNodeUnrecognizedOptionsData","unrecognizedOptions","getNodeUnrecognizedOptionsError","NodeUnrecognizedOptions","NODE_UNRECOGNIEZED_OPTIONS","nodeUnrecognizedOptions","removeAllAndSave","isCancelled","loadNodeUnrecognizedOptions","unipikaSettings","getNodeUnrecognizedOptionsYsonSettings","Yson","folding","virtualized","extraTools","YsonDownloadButton","NodePage","matchUrl","tabProps","_node$locations","makeTabProps","NodeTab","MEMORY_USAGE","show","LOCATIONS","ALERTS","GENERAL","Tabs","Switch","Route","UNRECOGNIZED_OPTIONS","Redirect","RedirectToTabletCells","tabletActiveBundleLink","lastVisitedTab","getLastVisitedTabs","tabSize","UI_TAB_SIZE","_ref$lastVisitedTab","DEFAULT_TAB","Tab","nodePageMatch","matchPath","VERSIONS","HTTP_PROXIES","CYPRESS_PROXIES","SHARDS","Shards","TABLET_CELLS","ComponentsTopRowContent","ComponentsNodeTopRowContent","RowWithName","page","ComponentsBreadcrumbs","nodeHost","history","useHistory","nodesPageUrl","result","Breadcrumbs","Item","href","nodePageUrl","showRoot","makeNavigationLink","NAVIGATION","search","info","reduce","_info$k$options","serialize","_info$k$options2","_info$k$options2$seri","makeURLSearchParams","getNavigationParams","prepareTabletCells","tabletCells","tabletCell","peer","peerAddress","uncompressed","ypath","compressed","tablets","health","peers","find_","aggregateTotal","prepare","isTotal","collectBundlesAttrs","dst","attrs","resource_limits","resource_usage","tc_usage","tc_limit","tsm_usage","tsm_limit","bundle_controller_target_config","enable_bundle_controller","changelog_account","snapshot_account","node_tag_filter","zone","tablet_count","tablet_count_limit","tablet_count_free","tablet_count_percentage","nanToUndefined","tablet_static_memory","tablet_static_memory_limit","tablet_static_memory_free","tablet_static_memory_percentage","prepareBundles","$attributes","bundleNodes","bundleList","unique_node_tag","tabletCellNavigationLink","cellId","tabletTab","TabletsTab","INSTANCES","TABLET_CELL_BUNDLES","tabletActiveChaosBundleLink","CHAOS_CELL_BUNDLES","CHAOS_CELLS","tabletCellBundleRootLink","tabletChaosBundleRootLink","tabletAttributesPath","chaosCellNavigationLink","chaosActiveBundleLink","chaosAttributesPath","makeItemsCopy","DragHandle","sortableHandle","SortableItem","sortableElement","isSortable","isSelectable","isDisabled","itemRenderer","onCheckBoxChange","selectable","showAction","isDeletable","keyColumn","SortableList","sortableContainer","useStaticSize","mods","ReactList","isHeadless","showSelectedOnly","toggleItem","withActualItems","changedItem","selectAllItems","visibleMap","getVisibleItemsMap","each_","deselectAllItems","_item$isDeletable","invertItems","_handleCheckBoxChange","event","currentTarget","getAttribute","_handleSortEnd","oldIndex","newIndex","getVisibleItems","fromIndex","toIndex","_items$splice","removed","_handleDefaultSort","a","aCaption","bCaption","_toggleShownItems","_changeFilter","assign","every","func","isFilterable","btnProps","renderSearchBox","buttonALLisDisabled","buttonNONEisDisabled","re","escapeRegExp_","showDisabledItems","filterItemsByName","toSplit","filterItems","_partition_","partition_","_partition_2","keyItems","_this$getVisibleItems2","headless","lockAxis","helperClass","helper","onSortEnd","useDragHandle","classNames","renderControls","renderList","itemsProps","_ref0","_ref0$caption","renderText","asHTML","ArrowToggle","qa","I","ChevronDown","popupVisible","anchor","toggle","open","close","actionProps","_this$props$template","renderer","__default__","popup","Popup","onOpenChange","anchorElement","current","renderTemplate","renderButton","renderPopup","zIndexGroupLevel","addComponentKeysets","menuContext","isMenu","activeIndex","getItemProps","listItemsRef","popupStyle","BreadcrumbsDropdownMenu","popupPlacement","reference","setReference","floating","setFloating","setActiveIndex","setOpen","context","elements","listNavigation","listRef","onNavigate","loop","dismiss","interactions","getReferenceProps","useTranslation","floatingContext","floatingRef","floatingInteractions","Provider","ListItemView","selectionStyle","onCollapseChange","isContainer","componentProps","collapsible","_collapsible","description","draggable","_draggable","startContent","_startContent","endContent","_endContent","nestedLevel","_nestedLevel","containerRef","componentRef","useForkRef","filterDOMProps","Element","el","contains","ListItemViewContent","Slot","Check","BreadcrumbsItem","domProps","labelable","hrefLang","rel","download","ping","referrerPolicy","__disabled","__current","__onAction","onAction","__index","restProps","linkProps","ENTER","_BreadcrumbsItem","BreadcrumbsSeparator","separator","endContentRef","child","visibleItemsCount","setVisibleItemsCount","calculated","setCalculated","handleResize","useResizeObserver","onResize","lastChildren","listItems","endElement","pop","containerWidth","offsetWidth","newVisibleItemsCount","calculatedWidth","maxItems","Infinity","rootWidth","shift","lastItem","min","max","recalculate","contents","breadcrumbs","endItems","rootItem","hiddenItems","menuItem","itemComponent","innerProps","lastIndex","breadcrumbsItems","isCurrent","childProps","handleAction","calculating"],"sourceRoot":""}