@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.
- package/dist/public/build/assets-manifest.json +37 -37
- package/dist/public/build/css/{main.89a1698b.css → main.eac511a5.css} +2 -2
- package/dist/public/build/css/main.eac511a5.css.map +1 -0
- package/dist/public/build/js/{1394.45bb669a.chunk.js → 1394.9f9c9f9a.chunk.js} +2 -2
- package/dist/public/build/js/{1394.45bb669a.chunk.js.map → 1394.9f9c9f9a.chunk.js.map} +1 -1
- package/dist/public/build/js/4804.2d9406dc.chunk.js +3 -0
- package/dist/public/build/js/4804.2d9406dc.chunk.js.map +1 -0
- package/dist/public/build/js/{accounts-monitoring-prometheus.262cacd8.chunk.js → accounts-monitoring-prometheus.38e8206a.chunk.js} +2 -2
- package/dist/public/build/js/accounts-monitoring-prometheus.38e8206a.chunk.js.map +1 -0
- package/dist/public/build/js/acl.00a69fe0.chunk.js +2 -0
- package/dist/public/build/js/acl.00a69fe0.chunk.js.map +1 -0
- package/dist/public/build/js/{bundle-monitoring-prometheus.d49a9a1a.chunk.js → bundle-monitoring-prometheus.dc8084bb.chunk.js} +2 -2
- package/dist/public/build/js/bundle-monitoring-prometheus.dc8084bb.chunk.js.map +1 -0
- package/dist/public/build/js/components.c4fc1d81.chunk.js +2 -0
- package/dist/public/build/js/components.c4fc1d81.chunk.js.map +1 -0
- package/dist/public/build/js/main.a04f2740.js +3 -0
- package/dist/public/build/js/{main.3e360b19.js.map → main.a04f2740.js.map} +1 -1
- package/dist/public/build/js/navigation.cd66d63f.chunk.js +2 -0
- package/dist/public/build/js/{navigation.8d91701a.chunk.js.map → navigation.cd66d63f.chunk.js.map} +1 -1
- package/dist/public/build/js/{prometheus-dashboard.3c9f3a99.chunk.js → prometheus-dashboard.d3814a09.chunk.js} +2 -2
- package/dist/public/build/js/prometheus-dashboard.d3814a09.chunk.js.map +1 -0
- package/dist/public/build/js/query-navigation.f7f5a1b5.chunk.js +2 -0
- package/dist/public/build/js/{query-navigation.f52623cc.chunk.js.map → query-navigation.f7f5a1b5.chunk.js.map} +1 -1
- package/dist/public/build/js/{runtime.2344fc6d.js → runtime.3af0a91e.js} +2 -2
- package/dist/public/build/js/{runtime.2344fc6d.js.map → runtime.3af0a91e.js.map} +1 -1
- package/dist/public/build/js/scheduling.4f518a8a.chunk.js +2 -0
- package/dist/public/build/js/scheduling.4f518a8a.chunk.js.map +1 -0
- package/dist/public/build/js/{system-monitoring-prometheus.b6ce8ed8.chunk.js → system-monitoring-prometheus.4004494c.chunk.js} +2 -2
- package/dist/public/build/js/system-monitoring-prometheus.4004494c.chunk.js.map +1 -0
- package/dist/public/build/js/{system.08fe4f55.chunk.js → system.2e84d486.chunk.js} +2 -2
- package/dist/public/build/js/{system.08fe4f55.chunk.js.map → system.2e84d486.chunk.js.map} +1 -1
- package/dist/public/build/js/yt-monaco-editor.4ad443b3.chunk.js +2 -0
- package/dist/public/build/js/{yt-monaco-editor.ba9a69f6.chunk.js.map → yt-monaco-editor.4ad443b3.chunk.js.map} +1 -1
- package/dist/public/build/manifest.json +32 -32
- package/package.json +2 -2
- package/dist/public/build/css/main.89a1698b.css.map +0 -1
- package/dist/public/build/js/4804.05d44971.chunk.js +0 -3
- package/dist/public/build/js/4804.05d44971.chunk.js.map +0 -1
- package/dist/public/build/js/accounts-monitoring-prometheus.262cacd8.chunk.js.map +0 -1
- package/dist/public/build/js/acl.91a762f3.chunk.js +0 -2
- package/dist/public/build/js/acl.91a762f3.chunk.js.map +0 -1
- package/dist/public/build/js/bundle-monitoring-prometheus.d49a9a1a.chunk.js.map +0 -1
- package/dist/public/build/js/components.aa32cd54.chunk.js +0 -2
- package/dist/public/build/js/components.aa32cd54.chunk.js.map +0 -1
- package/dist/public/build/js/main.3e360b19.js +0 -3
- package/dist/public/build/js/navigation.8d91701a.chunk.js +0 -2
- package/dist/public/build/js/prometheus-dashboard.3c9f3a99.chunk.js.map +0 -1
- package/dist/public/build/js/query-navigation.f52623cc.chunk.js +0 -2
- package/dist/public/build/js/scheduling.6f68a262.chunk.js +0 -2
- package/dist/public/build/js/scheduling.6f68a262.chunk.js.map +0 -1
- package/dist/public/build/js/system-monitoring-prometheus.b6ce8ed8.chunk.js.map +0 -1
- package/dist/public/build/js/yt-monaco-editor.ba9a69f6.chunk.js +0 -2
- /package/dist/public/build/js/{4804.05d44971.chunk.js.LICENSE.txt → 4804.2d9406dc.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.3e360b19.js.LICENSE.txt → main.a04f2740.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js/1394.45bb669a.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/StatusBlock/StatusBlock.tsx","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/ElementsTable.js","webpack://@ytsaurus/ui/./src/ui/components/StatusBulb/StatusBulb.tsx","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/ElementsTableRow.js","webpack://@ytsaurus/ui/./src/ui/store/actions/tables.ts","webpack://@ytsaurus/ui/./src/ui/components/templates/components/nodes/node.js","webpack://@ytsaurus/ui/./src/ui/components/templates/components.js","webpack://@ytsaurus/ui/./src/ui/pages/operations/OperationDetail/tabs/details/FilterOverview/FilterOverview.js","webpack://@ytsaurus/ui/./src/ui/components/templates/operations/specification.js","webpack://@ytsaurus/ui/./src/ui/components/templates/operations/events.js","webpack://@ytsaurus/ui/./src/ui/components/templates/operations/resources.js","webpack://@ytsaurus/ui/./src/ui/components/templates/system.js","webpack://@ytsaurus/ui/./src/ui/components/templates/cluster-menu.js","webpack://@ytsaurus/ui/./src/ui/components/templates/templates.js","webpack://@ytsaurus/ui/./src/ui/pages/operations/OperationIOLink/OperationIOLink.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/constants.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/ProgressInnerText.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/ProgressStackItem.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/utils.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/ProgressWithStack.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/ProgressWithValue.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/types.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/Progress.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withVisible.tsx","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/ElementsTableHeader.tsx","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/utils.js","webpack://@ytsaurus/ui/./src/ui/components/templates/components/nodes/nodes.tsx"],"sourcesContent":["import React from 'react';\nimport block from 'bem-cn-lite';\n\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\n\nimport './StatusBlock.scss';\n\nconst b = block('status-block');\n\nexport type StatusBlockTheme =\n | 'banned'\n | 'warning'\n | 'info'\n | 'success'\n | 'danger'\n | 'full'\n | 'alerts'\n | 'default'\n | 'decommissioned';\n\nfunction StatusBlock({text, theme = 'default'}: {text: string | number; theme?: StatusBlockTheme}) {\n return (\n <Tooltip\n className={b({theme: theme})}\n content={\n <React.Fragment>\n <ClipboardButton text={text} view=\"clear\" /> {text}\n </React.Fragment>\n }\n >\n {text}\n </Tooltip>\n );\n}\n\nexport default StatusBlock;\n","import React, {Component, createRef} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ReactList from 'react-list';\nimport block from 'bem-cn-lite';\n\nimport difference_ from 'lodash/difference';\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport omit_ from 'lodash/omit';\nimport range_ from 'lodash/range';\n\nimport ElementsTableRow from './ElementsTableRow';\nimport ElementsTableHeader, {sortStateType} from './ElementsTableHeader';\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport {toggleColumnSortOrder} from '../../store/actions/tables';\nimport action from '../../components/action/action';\nimport {\n ELEMENTS_TABLE,\n TemplatesPropType,\n getColumnEdgePosition,\n prepareCellClassName,\n prepareColumnsData,\n prepareTableClassName,\n} from './utils';\n\nimport './ElementsTable.scss';\n\n/**\n * @deprecated Please use DataTableYT\n */\nclass ElementsTable extends Component {\n static propTypes = {\n isLoading: PropTypes.bool,\n css: PropTypes.string,\n cssTableMods: PropTypes.string,\n templates: TemplatesPropType,\n size: PropTypes.string,\n theme: PropTypes.string,\n padded: PropTypes.bool,\n striped: PropTypes.bool,\n // ITEMS\n items: PropTypes.array,\n itemMods: PropTypes.func,\n computeKey: (props, propName, componentName) => {\n if (\n props['tree'] === true &&\n (props[propName] === undefined || typeof props[propName] !== 'function')\n ) {\n return new Error(\n `For tree-like tables, ${propName} prop of ${componentName} has to be a function`,\n );\n }\n },\n onItemClick: PropTypes.func,\n getItemLink: PropTypes.func,\n onItemHover: PropTypes.func,\n toggleColumnSortOrder: PropTypes.func,\n // TREE DATA\n tree: PropTypes.bool,\n treeState: PropTypes.oneOf(['collapsed', 'expanded', 'mixed']),\n treeStateExpanded: PropTypes.arrayOf(PropTypes.string),\n onItemToggleState: PropTypes.func,\n // old SORT\n sortInfo: PropTypes.func, // ko.param, old tables\n // new SORT\n tableId: PropTypes.string,\n emptyDataDescription: PropTypes.string,\n sortState: sortStateType,\n getEffectiveSortState: PropTypes.func,\n // callBack SORT\n onSort: PropTypes.func,\n // COLUMNS\n columns: PropTypes.shape({\n items: PropTypes.object.isRequired,\n sets: PropTypes.object.isRequired,\n mode: PropTypes.string.isRequired,\n }).isRequired,\n columnsMode: PropTypes.string,\n // VIRTUAL RENDERING\n virtual: PropTypes.bool,\n virtualType: PropTypes.oneOf(['simple', 'variable', 'uniform']),\n header: PropTypes.bool,\n body: function (props, propName, componentName) {\n if (!props[propName] && props['virtual']) {\n return new Error(\n `The ${propName} flag set to false is not allowed in conjunction with virtual flag set to true in ${componentName}.`,\n );\n }\n },\n itemHeight: PropTypes.number,\n // ROW SELECTION\n selectedIndex: PropTypes.number,\n cssHover: PropTypes.bool,\n onItemSelect: PropTypes.func,\n onMouseMove: PropTypes.func,\n\n rowClassName: PropTypes.func,\n colSpan: PropTypes.func,\n headerClassName: PropTypes.string,\n\n // ROW HIGHLIGHT\n highlightedItem: PropTypes.object,\n compareHighlitedBy: PropTypes.string,\n };\n\n static defaultProps = {\n items: [],\n body: true,\n header: true,\n templates: {},\n size: 'm',\n theme: 'bordered',\n padded: false,\n striped: true,\n tree: false,\n treeState: 'collapsed',\n treeStateExpanded: [],\n virtual: true,\n virtualType: 'uniform',\n cssHover: false,\n };\n\n static getEmptinessStates(keys) {\n const totalKeys = keys.length;\n let prevKey, prevKeyParts;\n\n return keys.reduce((states, key, index) => {\n // initially item is not empty\n states[key] = {empty: false};\n\n const keyParts = key.split('/');\n // if we haven't traversed deeper right after the previous item, then the previous item\n // doesn't have children, i.e. is empty\n if (prevKeyParts && prevKeyParts.length >= keyParts.length) {\n states[prevKey] = {empty: true};\n }\n // last item is always empty\n if (index === totalKeys - 1) {\n states[key] = {empty: true};\n }\n [prevKey, prevKeyParts] = [key, keyParts];\n return states;\n }, {});\n }\n\n // For tree start\n static collapsedAncestorExists(key, items, boundaryCondition) {\n // Due to tree-like table properties node's children always come after it in list;\n // we rely on this fact when calculating a child state - by querying its parents' states\n\n // Start by dropping the last component of item's address, which yield its parent address\n const parts = key.split('/').slice(0, -1);\n while (boundaryCondition(parts)) {\n const parentState = items[parts.join('/')];\n // if parent is collapsed, we're done, otherwise try the parent's parent and so on\n if (parentState && parentState.collapsed) {\n return true;\n }\n parts.pop();\n }\n return false;\n }\n\n static updateItemStates(props, state) {\n const {tree, treeState, computeKey} = props;\n const {treeState: prevTreeState} = state;\n let items = null;\n\n if (tree) {\n items = {...state.items};\n\n const oldKeys = Object.keys(items);\n const newKeys = props.items.map(computeKey);\n\n const toRemove = difference_(oldKeys, newKeys);\n let toAdd;\n\n // When new state is 'mixed', table was updated NOT due to clicking\n // 'Expand All'/'Collapse All' button\n if (treeState === 'mixed' || treeState === prevTreeState) {\n toAdd = difference_(newKeys, oldKeys);\n // Sort new keys so that the topmost in the tree come first - we rely on this fact in\n // collapsedAncestorExists() method. However toAdd got in the alternative branch doesn't\n // need to be sorted since props.items come already in the proper order\n toAdd.sort();\n } else {\n // when `treeState` setting changes, we have to recalculate everything from scratch\n toAdd = newKeys;\n }\n\n forEach_(ElementsTable.getEmptinessStates(newKeys), (state, key) => {\n items[key] = Object.assign({}, items[key], state);\n });\n\n items = omit_(items, toRemove);\n toAdd.forEach((key) => {\n // When tree is in mixed state, new subtrees start as collapsed\n const itemState = {collapsed: treeState !== 'expanded'};\n itemState.visible = !ElementsTable.collapsedAncestorExists(\n key,\n items,\n (parts) => parts.length > 1,\n );\n items[key] = Object.assign({}, items[key], itemState);\n });\n }\n return items;\n }\n\n static getDerivedStateFromProps(props, state) {\n const {columns, columnsMode, computeKey} = props;\n const {items: columnItems, set: columnSet} = prepareColumnsData(columns, columnsMode);\n const nextState = {columnItems, columnSet};\n let items = ElementsTable.updateItemStates(props, state);\n forEach_(props.treeStateExpanded, (key) => {\n if (items[key] && items[key].collapsed) {\n items[key].collapsed = false;\n const itemKeys = map_(props.items, computeKey);\n items = ElementsTable.updateVisibilityState(itemKeys, items, key);\n }\n });\n if (items) {\n nextState.items = items;\n }\n if (props.treeState !== state.treeState) {\n nextState.treeState = props.treeState;\n }\n\n return nextState;\n }\n\n static updateVisibilityState(itemKeys, itemsState, toggledItemKey) {\n const itemKeyParts = toggledItemKey.split('/');\n // We process a table section starting from the first child of a clicked date\n // till the first item which is not a descendant of a clicked item.\n // To determine if `nodeA` is a descendant of `nodeX`, keys are examined:\n // if `nodeA` has key = keyX/other/parts, when keyX is the `nodeX` key, then\n // descendancy is proved.\n let currentIndex = itemKeys.indexOf(toggledItemKey) + 1;\n let currentKey = itemKeys[currentIndex];\n\n // TODO: remove implicit knowledge about key structure\n while (currentIndex < itemKeys.length && currentKey.startsWith(toggledItemKey + '/')) {\n const itemState = itemsState[currentKey];\n const visible = !ElementsTable.collapsedAncestorExists(\n currentKey,\n itemsState,\n (parts) => parts.length >= itemKeyParts.length,\n );\n Object.assign(itemState, {visible});\n\n currentIndex += 1;\n currentKey = itemKeys[currentIndex];\n }\n\n return itemsState;\n }\n\n state = {\n items: {},\n };\n\n componentDidUpdate(prevProps) {\n const {highlightedItem, items, selectedIndex, onItemSelect, compareHighlitedBy} =\n this.props;\n const reactList = this.list?.current;\n\n if (prevProps.selectedIndex !== selectedIndex && onItemSelect && reactList) {\n const [firstIndex, lastIndex] = reactList.getVisibleRange();\n\n if (selectedIndex < firstIndex) {\n reactList.scrollAround(selectedIndex);\n window.scrollBy(0, -80);\n } else if (selectedIndex > lastIndex) {\n reactList.scrollAround(selectedIndex);\n window.scrollBy(0, 40);\n }\n }\n\n if (\n prevProps.highlightedItem?.[compareHighlitedBy] !==\n highlightedItem?.[compareHighlitedBy] &&\n reactList\n ) {\n const highlightedIndex = items?.findIndex(\n (items) =>\n highlightedItem?.[compareHighlitedBy] &&\n items?.[compareHighlitedBy] &&\n highlightedItem?.[compareHighlitedBy] === items?.[compareHighlitedBy],\n );\n reactList.scrollAround(highlightedIndex);\n this.waitForHighlightedElementAndScroll();\n }\n }\n\n waitForHighlightedElementAndScroll = () => {\n const scrollToHighlightedElement = () => {\n const highlightedElement = document.querySelector(\n '.elements-table__row_highlighted_yes',\n );\n if (highlightedElement) {\n highlightedElement.scrollIntoView({\n block: 'center',\n });\n return true;\n }\n return false;\n };\n\n const checkForElement = () => {\n if (scrollToHighlightedElement()) {\n return;\n }\n\n const observer = new MutationObserver(() => {\n if (scrollToHighlightedElement()) {\n observer.disconnect();\n }\n });\n\n const tableBody = document.querySelector('.elements-table__body');\n if (tableBody) {\n observer.observe(tableBody, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['class'],\n });\n\n setTimeout(() => {\n observer.disconnect();\n }, 2000);\n }\n };\n\n requestAnimationFrame(checkForElement);\n };\n\n prevMouseCoordinates = {};\n list = createRef();\n\n toggleItemState(toggledItemKey) {\n const {computeKey, tree} = this.props;\n\n if (tree) {\n let items = Object.assign({}, this.state.items);\n\n // Invert the `collapsed` state of an item which was clicked\n const item = Object.assign(items[toggledItemKey], {\n collapsed: !items[toggledItemKey].collapsed,\n });\n\n const itemKeys = this.props.items.map(computeKey);\n items = ElementsTable.updateVisibilityState(itemKeys, items, toggledItemKey);\n\n this.setState({items});\n\n const {onItemToggleState} = this.props;\n if (onItemToggleState) {\n onItemToggleState(toggledItemKey, item.collapsed);\n }\n }\n }\n\n isItemVisible = (item) => {\n const {computeKey} = this.props;\n return (this.state.items[computeKey(item)] || {}).visible;\n };\n // For tree end\n\n // For mouse hover start\n updateMouseCoordinates(evt) {\n this.prevMouseCoordinates.x = evt.clientX;\n this.prevMouseCoordinates.y = evt.clientY;\n }\n\n mouseCoordinatesChanged(evt) {\n const {x, y} = this.prevMouseCoordinates;\n const firstChange = x === 'undefined' && typeof y === 'undefined';\n\n if (firstChange) {\n this.updateMouseCoordinates(evt);\n\n return false;\n } else {\n return x !== evt.clientX || y !== evt.clientY;\n }\n }\n\n onItemHover = (evt) => {\n const {items, onItemHover} = this.props;\n\n if (this.mouseCoordinatesChanged(evt)) {\n this.updateMouseCoordinates(evt);\n\n if (onItemHover) {\n const index = evt.currentTarget.dataset.index;\n\n onItemHover(items[index], Number(index));\n }\n }\n };\n\n onItemSelect = () => {\n const {items, onItemSelect} = this.props;\n\n if (onItemSelect) {\n const index = this.props.selectedIndex;\n\n onItemSelect(items[index], Number(index));\n }\n };\n // For mouse hover end\n\n // For item click start\n linkOrButtonWasClicked(evt) {\n const isLinkOrButton = (node) => {\n return (\n node.nodeName === 'BUTTON' ||\n node.getAttribute('role') === 'button' ||\n node.nodeName === 'A'\n );\n };\n // one of nested <span>s inside <a> gets the mouse event first, check if its ancestor is a link\n let node = evt.target;\n while (node && node.nodeName !== 'TD') {\n if (isLinkOrButton(node)) {\n return true;\n }\n node = node.parentElement;\n }\n return false;\n }\n\n onItemClick = (evt) => {\n if (this.linkOrButtonWasClicked(evt)) {\n return;\n }\n\n const {items, onItemClick, getItemLink} = this.props;\n const index = Number(evt.currentTarget.dataset.index);\n const handleClick = action.makeEntryClickHandler(evt, onItemClick, getItemLink);\n handleClick(items[index], index, evt);\n };\n // For item click end\n\n // render methods start\n renderEmptyTableContent = (\n <div>\n <div className={block(ELEMENTS_TABLE)('empty-header')}>No items to show </div>\n {this.props.emptyDataDescription && (\n <div className={block(ELEMENTS_TABLE)('empty-content')}>\n {this.props.emptyDataDescription}\n </div>\n )}\n </div>\n );\n\n renderEmptyCell = (cell, columnName, index) => {\n const {css} = this.props;\n const {columnSet, columnItems} = this.state;\n const edgePosition = getColumnEdgePosition(columnSet, columnItems, index);\n const cellClassName = prepareCellClassName(columnItems, columnName, css, edgePosition);\n\n return (\n <td key={columnName} className={cellClassName}>\n <div className={block(ELEMENTS_TABLE)('no-data-placeholder')} />\n </td>\n );\n };\n\n renderSkeletonState = () => {\n const {itemHeight} = this.props;\n const tableClassName = prepareTableClassName(this.props);\n const bodyClassName = block(ELEMENTS_TABLE)('body');\n const rowClassName = block(ELEMENTS_TABLE)('row', {empty: true});\n const rowStyle = {height: itemHeight};\n\n return (\n <table className={tableClassName}>\n {this.props.header && <ElementsTableHeader {...this.props} />}\n <tbody className={bodyClassName}>\n {map_(range_(4), (index) => (\n <tr key={index} className={rowClassName} style={rowStyle}>\n {map_(this.state.columnItems, this.renderEmptyCell)}\n </tr>\n ))}\n </tbody>\n </table>\n );\n };\n\n renderRow(item, index, highlightedIndex, key = index) {\n const {\n css,\n itemHeight,\n templates,\n itemMods,\n selectedIndex,\n computeKey,\n cssHover,\n onMouseMove,\n rowClassName,\n colSpan,\n } = this.props;\n const {items: itemStates, columnItems, columnSet} = this.state;\n\n const highlighted = highlightedIndex === index;\n const selected = selectedIndex === index;\n\n const currentKey = typeof computeKey === 'function' ? computeKey(item) : key;\n\n return (\n <ElementsTableRow\n key={currentKey ?? `##elements_table_row_${key}`}\n onItemClick={this.onItemClick}\n onItemHover={this.onItemHover}\n onItemSelect={this.onItemSelect}\n columnSet={columnSet}\n columnItems={columnItems}\n toggleItemState={this.toggleItemState.bind(this, currentKey)}\n itemState={itemStates[currentKey]}\n item={item}\n itemHeight={itemHeight}\n css={css}\n templates={templates}\n selected={selected}\n highlighted={highlighted}\n index={index}\n itemMods={itemMods}\n onMouseMove={onMouseMove}\n cssHover={cssHover}\n rowClassName={rowClassName}\n colSpan={colSpan}\n />\n );\n }\n\n renderTableBody(items, ref) {\n const bodyClassName = block(ELEMENTS_TABLE)('body');\n\n // FIXME: In the case of virtual rendering, we need to consider the table header height among the virtual elements\n return (\n <tbody ref={ref} className={bodyClassName}>\n {items}\n </tbody>\n );\n }\n\n renderTableContent = (items, ref) => (\n <table className={prepareTableClassName(this.props)}>\n {this.props.header && <ElementsTableHeader {...this.props} />}\n {this.props.body && this.renderTableBody(items, ref)}\n </table>\n );\n\n renderDynamicTable(items) {\n const {virtualType, selectedIndex, itemHeight, highlightedItem, compareHighlitedBy} =\n this.props;\n\n const highlightedIndex = items?.findIndex(\n (items) =>\n highlightedItem?.[compareHighlitedBy] &&\n items?.[compareHighlitedBy] &&\n highlightedItem?.[compareHighlitedBy] === items?.[compareHighlitedBy],\n );\n\n const itemRenderer = (index, key) =>\n this.renderRow(items[index], index, highlightedIndex, key);\n\n return (\n <ReactList\n itemRenderer={itemRenderer}\n itemsRenderer={this.renderTableContent}\n scrollTo={selectedIndex}\n length={items.length}\n type={virtualType}\n ref={this.list}\n itemSizeEstimator={() => itemHeight}\n useStaticSize\n />\n );\n }\n\n renderSimpleTable(items) {\n const rows = map_(items, (item, index) => this.renderRow(item, index));\n\n return this.renderTableContent(rows);\n }\n\n renderTable() {\n const {items, virtual, tree, isLoading} = this.props;\n\n const visibleItems = tree ? filter_(items, this.isItemVisible) : items;\n\n if (isLoading) {\n return this.renderSkeletonState();\n } else if (items.length) {\n return virtual\n ? this.renderDynamicTable(visibleItems)\n : this.renderSimpleTable(visibleItems);\n } else {\n return this.props.body && this.renderEmptyTableContent;\n }\n }\n\n render() {\n const {virtual} = this.props;\n\n // FIXME: the elements-table-wrapper className was added to account for the <thead> height and get correct container size\n return (\n <ErrorBoundary>\n <div className={virtual ? 'elements-table-wrapper' : undefined}>\n {this.renderTable()}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = ({tables}) => {\n return {sortState: tables};\n};\n\nconst mapDispatchToProps = {\n toggleColumnSortOrder,\n};\n\n/** @type {React.ComponentType<React.ComponentProps<typeof ElementsTable>>}\n@typedef {React.ComponentProps<typeof ElementsTable>} ElementsTableProps\n@typedef {React.ComponentType<ElementsTableProps>} ElementsTableType\n@type {ElementsTableType}\n*/\nexport default connect(mapStateToProps, mapDispatchToProps)(ElementsTable);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport './StatusBulb.scss';\n\ninterface Props {\n theme: 'unknown' | 'enabled' | 'disabled';\n}\n\nclass StatusBulb extends Component<Props> {\n static propTypes = {\n theme: PropTypes.string,\n };\n\n render() {\n const className = block('status-bulb')({theme: this.props.theme});\n return <div className={className}></div>;\n }\n}\n\nexport default StatusBulb;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport {\n ELEMENTS_TABLE,\n TemplatesPropType,\n getColumnEdgePosition,\n getRenderer,\n prepareCellClassName,\n} from './utils';\n\nexport default class ElementsTableRow extends React.PureComponent {\n static propTypes = {\n css: PropTypes.string,\n templates: TemplatesPropType,\n item: PropTypes.object.isRequired,\n itemHeight: PropTypes.number,\n itemMods: PropTypes.func,\n index: PropTypes.number.isRequired,\n selected: PropTypes.bool.isRequired,\n columnSet: PropTypes.object.isRequired,\n columnItems: PropTypes.object.isRequired,\n onItemClick: PropTypes.func,\n onItemHover: PropTypes.func,\n toggleItemState: PropTypes.func,\n itemState: PropTypes.object,\n cssHover: PropTypes.bool.isRequired,\n onItemSelect: PropTypes.func,\n rowClassName: PropTypes.func,\n highlighted: PropTypes.bool,\n };\n\n componentDidUpdate() {\n const {selected, onItemSelect} = this.props;\n\n if (onItemSelect && selected) {\n onItemSelect();\n }\n }\n\n getItemMods(item, index) {\n const {itemMods, css} = this.props;\n\n return typeof itemMods === 'function' ? block(css)('table-row', itemMods(item, index)) : '';\n }\n\n getColumn(columnName) {\n return this.props.columnItems[columnName];\n }\n\n onMouseClick = (e) => {\n const {onItemClick} = this.props;\n if (typeof onItemClick === 'function') {\n onItemClick(e);\n }\n };\n\n renderCell(cell, columnName, rowIndex, colIndex) {\n const {\n css,\n templates: templatesCollection,\n columnSet,\n columnItems,\n toggleItemState,\n itemState,\n colSpan,\n } = this.props;\n const edgePosition = getColumnEdgePosition(columnSet, columnItems, colIndex);\n const cellClassName = prepareCellClassName(columnItems, columnName, css, edgePosition);\n const renderer = getRenderer(this, templatesCollection, columnName);\n\n const colSpanValue = !colSpan ? undefined : colSpan(cell, rowIndex, colIndex);\n return {\n colSpanValue,\n node: (\n <td key={columnName} className={cellClassName} colSpan={colSpanValue}>\n {renderer(cell, columnName, toggleItemState, itemState)}\n </td>\n ),\n };\n }\n\n render() {\n const {\n columnSet,\n item,\n itemHeight,\n index,\n selected,\n onItemHover,\n cssHover,\n onMouseMove,\n highlighted,\n rowClassName: classNameFn,\n } = this.props;\n\n const extraClassName = classNameFn ? classNameFn(item, index) : '';\n const rowClassName = block(ELEMENTS_TABLE)(\n 'row',\n {\n highlighted: highlighted ? 'yes' : undefined,\n selected: selected ? 'yes' : undefined,\n hover: cssHover ? 'yes' : undefined,\n },\n [this.getItemMods(item, index), extraClassName].filter(Boolean).join(' '),\n );\n\n const rowStyle = {height: itemHeight};\n\n const cells = [];\n for (let i = 0; i < columnSet.items.length; ) {\n const columnName = columnSet.items[i];\n const {node, colSpanValue} = this.renderCell(item, columnName, index, i);\n cells.push(node);\n i += colSpanValue > 0 ? colSpanValue : 1;\n }\n\n return (\n <tr\n className={rowClassName}\n onMouseMove={onMouseMove}\n onClick={this.onMouseClick}\n onMouseEnter={onItemHover}\n data-index={index}\n style={rowStyle}\n >\n {cells}\n </tr>\n );\n }\n}\n","import {TOGGLE_COLUMN_SORT_ORDER} from '../../constants/tables';\nimport {\n OrderType,\n calculateNextOrderValue,\n nextSortOrderValue,\n oldSortStateToOrderType,\n orderTypeToOldSortState,\n} from '../../utils/sort-helpers';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../reducers';\nimport {TablesSortOrderAction, TablesSortOrderState} from '../reducers/tables';\n\nexport type ToggleColumnSortOrderParams = {\n columnName: string;\n tableId: keyof RootState['tables'];\n /** The field is ignored when **allowedOrderTypes** is defined */\n withUndefined?: boolean;\n /** The field is ignored when **allowedOrderTypes** is defined */\n allowUnordered?: boolean;\n /** When defined **withUndefined** is ignored */\n allowedOrderTypes?: Array<OrderType>;\n};\n\ntype TablesThunkAction = ThunkAction<any, RootState, any, any>;\n\nexport function toggleColumnSortOrder({\n columnName,\n tableId,\n withUndefined,\n allowUnordered,\n allowedOrderTypes,\n}: ToggleColumnSortOrderParams): TablesThunkAction {\n return (dispatch, getState) => {\n const {tables} = getState();\n const sortInfo = tables[tableId];\n\n const orderType = sortInfo.field === columnName ? oldSortStateToOrderType(sortInfo) : '';\n\n let newOrderType;\n if (allowedOrderTypes?.length) {\n newOrderType = calculateNextOrderValue(orderType, allowedOrderTypes);\n } else {\n newOrderType = nextSortOrderValue(orderType, allowUnordered, withUndefined);\n }\n\n const newSortInfo = orderTypeToOldSortState(columnName, newOrderType);\n\n dispatch({\n type: TOGGLE_COLUMN_SORT_ORDER,\n data: {[tableId]: newSortInfo},\n });\n };\n}\n\ninterface ChangeColumnSortOrderParams<K extends keyof TablesSortOrderState> {\n tableId: K;\n columnName: TablesSortOrderState[K]['field'];\n asc?: boolean;\n}\n\nexport function changeColumnSortOrder<K extends keyof TablesSortOrderState>({\n tableId,\n columnName,\n asc,\n}: ChangeColumnSortOrderParams<K>): TablesSortOrderAction {\n return {\n type: TOGGLE_COLUMN_SORT_ORDER,\n data: {[tableId]: {field: columnName, asc}},\n };\n}\n","/* global YT */\nimport React from 'react';\nimport hammer from '../../../../common/hammer';\n\nimport Link from '../../../../components/Link/Link';\nimport StatusBlock from '../../../../components/StatusBlock/StatusBlock';\n\nimport {TABLET_SLOTS} from './nodes';\nimport templates from '../../../../components/templates/utils';\nimport {genTabletCellBundlesCellUrl} from '../../../../utils/tablet_cell_bundles';\n\ntemplates.add('components/nodes/node', {\n cell_id(item) {\n const url = genTabletCellBundlesCellUrl(item.cell_id, YT.cluster);\n\n return item.cell_id ? (\n <Link url={url} theme=\"ghost\" routed>\n {item.cell_id}\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n },\n peer_id(item) {\n return item.peer_id;\n },\n state(item) {\n const {text, theme} = TABLET_SLOTS[item.state];\n\n return item.state ? <StatusBlock theme={theme} text={text} /> : hammer.format.NO_VALUE;\n },\n});\n","import './components/nodes/nodes';\nimport './components/nodes/node';\n\nimport React from 'react';\nimport block from 'bem-cn-lite';\n\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport Link from '../../components/Link/Link';\nimport templates from '../../components/templates/utils.js';\n\nimport hammer from '../../common/hammer';\nimport {genTabletCellBundlesCellUrl} from '../../utils/tablet_cell_bundles';\n\nfunction renderUsage(used, limit, format) {\n const left = hammer.format[format](used);\n const right = hammer.format[format](limit);\n\n return (\n <span>\n {left} / {right}\n </span>\n );\n}\n\nconst b = block('elements-label');\n\nconst TABLET_SLOTS = {\n none: {\n theme: 'default',\n text: 'N',\n },\n stopped: {\n theme: 'default',\n text: 'S',\n },\n elections: {\n theme: 'warning',\n text: 'E',\n },\n follower_recovery: {\n theme: 'warning',\n text: 'FR',\n },\n leader_recovery: {\n theme: 'warning',\n text: 'LR',\n },\n following: {\n theme: 'primary',\n text: 'F',\n },\n leading: {\n theme: 'success',\n text: 'L',\n },\n};\n\nconst IO_WEIGHT_PREFIX = 'io_weight_';\n\ntemplates.add('components/nodes', {\n __default__(item, columnName) {\n if (typeof item.IOWeight === 'object' && columnName.indexOf(IO_WEIGHT_PREFIX) === 0) {\n const mediumName = columnName.slice(IO_WEIGHT_PREFIX.length);\n\n return hammer.format['Number'](item.IOWeight[mediumName]);\n }\n },\n\n host: templates.get('components').host,\n\n state: templates.get('components').state,\n\n rack(item) {\n return <span className=\"elements-monospace\">{hammer.format['Address'](item.rack)}</span>;\n },\n\n user_tags(item) {\n if (item.userTags) {\n return item.userTags.map((tag) => (\n <span key={tag} className={b({theme: 'default'})}>\n {tag}\n </span>\n ));\n }\n\n return null;\n },\n\n banned: templates.get('components').banned,\n\n decommissioned(item) {\n return item.decommissioned ? <span className={b({theme: 'default'})}>D</span> : '—';\n },\n\n full(item) {\n return item.full ? <span className={b({theme: 'danger'})}>F</span> : '—';\n },\n\n alerts(item) {\n const alertsCount = item.alerts && item.alerts.length;\n\n return alertsCount ? <span className={b({theme: 'danger'})}>{alertsCount}</span> : '—';\n },\n\n space(item) {\n return <Progress value={item.spaceProgress} text={item.spaceText} theme=\"success\" />;\n },\n\n space_limit(item) {\n return hammer.format['Bytes'](item.spaceUsed + item.spaceAvailable);\n },\n\n locations(item) {\n return item.locations\n ? renderUsage(item.enabledLocations.length, item.locations.length, 'Number')\n : null;\n },\n\n sessions(item) {\n return hammer.format['Number'](item.sessions);\n },\n\n chunks(item) {\n return hammer.format['Number'](item.chunks);\n },\n\n io_weight(item) {\n return hammer.format['Number'](item.IOWeight);\n },\n\n cpu(item) {\n return <Progress value={item.cpuProgress} text={item.cpuText} theme=\"success\" />;\n },\n\n memory(item) {\n const {onMemoryProgressMouseEnter, onMemoryProgressMouseLeave} = this.props.templates.data;\n let onMouseEnterHandler;\n\n if (typeof onMemoryProgressMouseEnter === 'function') {\n onMouseEnterHandler = (event) =>\n onMemoryProgressMouseEnter(item, event.currentTarget, event);\n }\n\n return (\n <div onMouseEnter={onMouseEnterHandler} onMouseLeave={onMemoryProgressMouseLeave}>\n <Progress\n value={item.memoryProgress}\n text={item.memoryText}\n stack={item.memoryData}\n />\n </div>\n );\n },\n\n memory_total(item) {\n return <Progress value={item.memoryProgress} text={item.memoryTotalText} theme=\"success\" />;\n },\n\n network(item) {\n return <Progress value={item.networkProgress} text={item.networkText} theme=\"success\" />;\n },\n\n repair_slots(item) {\n return renderUsage(item.repairSlots.usage, item.repairSlots.limits, 'Number');\n },\n\n removal_slots(item) {\n return renderUsage(item.removalSlots.usage, item.removalSlots.limits, 'Number');\n },\n\n replication_slots(item) {\n return renderUsage(item.replicationSlots.usage, item.replicationSlots.limits, 'Number');\n },\n\n seal_slots(item) {\n return renderUsage(item.sealSlots.usage, item.sealSlots.limits, 'Number');\n },\n\n user_slots(item) {\n return renderUsage(item.userSlots.usage, item.userSlots.limits, 'Number');\n },\n\n tablet_slots(item) {\n if (item.tabletSlots) {\n return map_(keys_(item.tabletSlots.byState), (state) => {\n const tabletSlots = item.tabletSlots.byState[state];\n const {text, theme} = TABLET_SLOTS[state];\n\n return (\n <span key={state} className={b({theme})}>\n {text}: {tabletSlots.length}\n </span>\n );\n });\n }\n\n return null;\n },\n\n tablet_memory_static(item) {\n return renderUsage(item.tabletStaticMemory.used, item.tabletStaticMemory.limit, 'Bytes');\n },\n\n tablet_memory_dynamic(item) {\n return renderUsage(item.tabletDynamicMemory.used, item.tabletDynamicMemory.limit, 'Bytes');\n },\n});\n\ntemplates.add('components/proxies', {\n host: templates.get('components').host,\n\n state: templates.get('components').state,\n\n role(item) {\n const roleThemes = {\n control: 'default',\n data: 'default',\n };\n const labelClassName = b({\n theme: roleThemes[item.role] ? roleThemes[item.role] : 'warning',\n });\n\n return <span className={labelClassName}>{hammer.format['Address'](item.role)}</span>;\n },\n\n banned: templates.get('components').banned,\n\n load_average(item) {\n return <span>{hammer.format['Number'](item.loadAverage, {digits: 2})}</span>;\n },\n\n network_load(item) {\n return <span>{hammer.format['Number'](item.networkLoad, {digits: 2})}</span>;\n },\n\n updated_at(item) {\n return <span>{hammer.format['DateTime'](item.updatedAt, {format: 'short'})}</span>;\n },\n});\n\ntemplates.add('components/tablet-slots', {\n cell_id(tabletSlot) {\n if (typeof tabletSlot.cell_id === 'undefined') {\n return hammer.format.NO_VALUE;\n }\n\n const tabletCellHref = genTabletCellBundlesCellUrl(tabletSlot.cell_id);\n\n return (\n <Link title={tabletSlot.cell_id} url={tabletCellHref}>\n {tabletSlot.cell_id}\n </Link>\n );\n },\n\n peer_id(tabletSlot) {\n if (typeof tabletSlot.peer_id === 'undefined') {\n return hammer.format.NO_VALUE;\n }\n\n return tabletSlot.peer_id;\n },\n\n state(tabletSlot) {\n const {text, theme} = TABLET_SLOTS[tabletSlot.state];\n\n return (\n <span className={b({theme})} title={tabletSlot.state}>\n {text}\n </span>\n );\n },\n});\n","import React from 'react';\nimport unipika from '../../../../../../common/thor/unipika';\nimport {connect} from 'react-redux';\nimport {compose} from 'redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport {Button} from '@gravity-ui/uikit';\nimport Modal from '../../../../../../components/Modal/Modal';\nimport Yson from '../../../../../../components/Yson/Yson';\n\nimport withVisible from '../../../../../../hocs/withVisible';\n\nconst block = cn('specification');\n\nFilterOverview.propTypes = {\n // from parent-components\n type: PropTypes.string.isRequired,\n filters: PropTypes.object.isRequired,\n typedFilters: PropTypes.object.isRequired,\n // from connect\n settings: Yson.settingsProps.isRequired,\n // from hoc\n visible: PropTypes.bool.isRequired,\n handleShow: PropTypes.func.isRequired,\n handleClose: PropTypes.func.isRequired,\n};\n\nfunction FilterOverview({type, filters, typedFilters, visible, handleShow, handleClose, settings}) {\n const modalContent = <Yson value={typedFilters} settings={settings} />;\n\n return (\n <li>\n <span className={block('filter-overview')}>\n <span className={block('filter-name')}>{hammer.format['ReadableField'](type)}</span>\n\n <span className={block('filter-count')}>{filters[type].length}</span>\n </span>\n\n <Button view=\"flat-secondary\" size=\"m\" onClick={handleShow}>\n View\n </Button>\n\n <Modal\n onOutsideClick={handleClose}\n onCancel={handleClose}\n content={modalContent}\n visible={visible}\n title=\"Filters\"\n footer={false}\n />\n </li>\n );\n}\n\nconst mapStateToProps = () => {\n const settings = unipika.prepareSettings();\n\n return {settings};\n};\n\nexport default compose(withVisible, connect(mapStateToProps))(FilterOverview);\n","/* global YT */\nimport React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport FilterOverview from '../../../pages/operations/OperationDetail/tabs/details/FilterOverview/FilterOverview';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport Label from '../../../components/Label/Label';\nimport Link from '../../../components/Link/Link';\nimport Icon from '../../../components/Icon/Icon';\n\nimport {TemplateLivePreivew} from '../../../components/MetaTable/templates/OperationTemplate';\nimport templates from '../../../components/templates/utils';\nimport {Page} from '../../../constants/index';\n\nimport hammer from '../../../common/hammer';\nimport {paramsToQuery} from '../../../utils';\nimport OperationIOLink from '../../../pages/operations/OperationIOLink/OperationIOLink';\n\nconst block = cn('specification');\nconst ellipsis = cn('elements-ellipsis');\n\ntemplates.add('operations/detail/specification/io', {\n name(item) {\n const {path, originalPath, transaction, remote, url: itemUrl} = item;\n\n const query = paramsToQuery({path, t: transaction});\n const url = remote ? itemUrl : `/${YT.cluster}/${Page.NAVIGATION}?${query}`;\n\n return item.isFolder ? (\n <div className={block('io-folder', ellipsis())}>\n <Icon awesome=\"folder-open\" />\n \n <OperationIOLink {...item} className={block('io-folder-path')} />\n </div>\n ) : (\n <div className={block('io-name', ellipsis())}>\n <ClipboardButton text={path} view=\"flat-secondary\" size=\"s\" title=\"Copy path\" />\n \n <OperationIOLink {...item} />\n \n {originalPath && (\n <Link title={path} url={url}>\n <Icon awesome=\"folders\" />\n </Link>\n )}\n </div>\n );\n },\n filters(item) {\n if (item.isFolder) {\n return;\n }\n\n const filters = item.filters;\n const typedFilters = item.typedFilters;\n\n return filters ? (\n <ul className={cn('elements-list')({type: 'unstyled'})}>\n {filters?.columns && (\n <FilterOverview type=\"columns\" filters={filters} typedFilters={typedFilters} />\n )}\n {filters?.ranges && (\n <FilterOverview type=\"ranges\" filters={filters} typedFilters={typedFilters} />\n )}\n </ul>\n ) : (\n hammer.format.NO_VALUE\n );\n },\n live_preview(item) {\n if (item.isFolder) {\n return;\n }\n\n return item.livePreview.supported ? (\n <TemplateLivePreivew {...item.livePreview} cluster={YT.cluster} />\n ) : (\n hammer.format.NO_VALUE\n );\n },\n tags(item) {\n if (item.isFolder) {\n return;\n }\n\n return item.primary || item.teleport || item.append || item.foreign ? (\n <div className={block('tags')}>\n {item.primary && <Label text=\"primary\" theme=\"info\" />}\n {item.teleport && <Label text=\"teleport\" theme=\"warning\" />}\n {item.append && <Label text=\"append\" theme=\"warning\" />}\n {item.foreign && <Label text=\"foreign\" theme=\"info\" />}\n </div>\n ) : (\n hammer.format.NO_VALUE\n );\n },\n});\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Progress} from '@gravity-ui/uikit';\nimport {Event} from '../../../utils/operations/tabs/details/events/events';\n\nimport hammer from '../../../common/hammer';\nimport templates, {\n printColumnAsReadableField,\n printColumnAsTime,\n printColumnAsTimeDurationWithMs,\n} from '../../../components/templates/utils';\n\nconst block = cn('operation-detail');\n\ntemplates.add('operations/detail/events', {\n start_time: printColumnAsTime,\n finish_time: printColumnAsTime,\n duration(item, columnName) {\n return Event.isNotFinalState(item)\n ? printColumnAsTimeDurationWithMs.call(this, item, columnName)\n : hammer.format.NO_VALUE;\n },\n progress(item, columnName) {\n if (Event.isNotFinalState(item) && item.state !== 'total') {\n const progress = item.progress.duration;\n const column = this.getColumn(columnName);\n const {theme, value} = column.get(item);\n\n return (\n <div className={block('events-progress', {theme})}>\n <span\n className={block('events-progress-percentage', 'elements-secondary-text')}\n >\n {hammer.format['Percent'](progress)}\n </span>\n\n <Progress value={value} size={'xs'} />\n </div>\n );\n }\n },\n state: printColumnAsReadableField,\n});\n","import templates from '../../../components/templates/utils';\nimport hammer from '../../../common/hammer';\n\ntemplates.add('operations/detail/resources/intermediate', {\n account(item, column) {\n return hammer.format['ValueOrDefault'](item[column]);\n },\n chunk_count(item, column) {\n return hammer.format['Number'](item[column]);\n },\n node_count(item, column) {\n return hammer.format['Number'](item[column]);\n },\n disk_space(item, column) {\n return hammer.format['Bytes'](item[column]);\n },\n});\n","import React from 'react';\nimport block from 'bem-cn-lite';\n\nimport Label from '../../components/Label/Label';\nimport Icon from '../../components/Icon/Icon';\n\nimport templates from './utils.js';\nimport hammer from '../../common/hammer';\n\nconst b = block('system');\n\ntemplates.add('system/chunk-cells', {\n __default__(item, columnName) {\n const column = this.getColumn(columnName);\n const value = column?.get?.(item);\n const theme = column?.label?.(value) || 'default';\n const text = hammer.format['Number'](value);\n\n return <Label theme={theme} text={text} />;\n },\n cell_tag(item, columnName) {\n const column = this.getColumn(columnName);\n const cellTag = column?.get?.(item);\n\n const cellTagClassNames = b('master-quorum-cell');\n const cellTagIconClassNames = b('master-quorum-cell-icon');\n\n return (\n <div className={cellTagClassNames} title={`Cell tag: ${cellTag}`}>\n <Icon className={cellTagIconClassNames} face=\"solid\" awesome=\"tag\" />\n \n <span>{hammer.format['Hex'](cellTag)}</span>\n </div>\n );\n },\n});\n","import React from 'react';\n\nimport StatusBulb from '../../components/StatusBulb/StatusBulb';\nimport hammer from '../../common/hammer';\nimport templates from './utils.js';\nimport Link from '../../components/Link/Link';\nimport {getClusterAppearance} from '../../appearance';\n\ntemplates.add('cluster-menu', {\n image(item) {\n const {theme} = item;\n const itemStyle = {\n backgroundImage: 'url(' + getClusterAppearance(item.id).icon + ')',\n };\n const clusterTheme = theme ? `cluster-color_theme_${theme}` : 'cluster-color';\n return (\n <div\n className={`cluster-menu__table-item-image ${clusterTheme}`}\n style={itemStyle}\n ></div>\n );\n },\n environment(item) {\n return (\n <span className=\"elements-heading elements-heading_theme_system\">\n {hammer.format['ValueOrDefault'](item.environment)}\n </span>\n );\n },\n name(item) {\n return (\n <Link theme=\"primary\" url={'/' + item.id + '/'}>\n {item.name}\n </Link>\n );\n },\n access(item) {\n const theme = {\n none: 'disabled',\n granted: 'enabled',\n }[item.access];\n\n return <StatusBulb theme={theme} />;\n },\n status(item) {\n const theme = {\n available: 'enabled',\n unavailable: 'disabled',\n }[item.status];\n\n return <StatusBulb theme={theme} />;\n },\n version(item) {\n return hammer.format['ValueOrDefault'](item.version);\n },\n});\n","import templates from './utils.js';\nimport './components';\nimport './operations';\nimport './system';\nimport './cluster-menu';\n\nexport default templates;\n","import React from 'react';\n\nimport Link, {LinkProps} from '../../../components/Link/Link';\n\nimport {Page} from '../../../constants/index';\n\nimport {paramsToQuery} from '../../../utils';\n\nconst YT = (window as any).YT;\n\nexport interface OperationIOLinkProps {\n name: string;\n cluster?: string;\n path: string;\n originalPath: string;\n transaction?: string;\n remote: boolean;\n url: string;\n isFolder: boolean;\n className?: string;\n theme: LinkProps['theme'];\n}\n\nexport default function OperationIOLink(props: OperationIOLinkProps) {\n const {\n name,\n cluster,\n path,\n originalPath,\n transaction,\n remote,\n url: itemUrl,\n isFolder,\n className,\n theme,\n } = props;\n\n const pathCluster = cluster ?? YT.cluster;\n\n const query = paramsToQuery({path, t: transaction});\n const url = remote ? itemUrl : `/${pathCluster}/${Page.NAVIGATION}?${query}`;\n const originalQuery = paramsToQuery({path: originalPath});\n const originalUrl = `/${pathCluster}/${Page.NAVIGATION}?${originalQuery}`;\n\n return isFolder ? (\n <Link theme={theme} className={className} url={url} title={path}>\n {cluster ? `${cluster}:` : undefined}\n {path}\n </Link>\n ) : (\n <Link\n theme={theme}\n className={className}\n url={originalPath ? originalUrl : url}\n title={originalPath || path || name}\n >\n {cluster ? `${cluster}:` : undefined}\n {originalPath || path || name}\n </Link>\n );\n}\n","import {block} from '../utils/cn';\n\nexport const progressBlock = block('progress');\n","import type * as React from 'react';\n\nimport {progressBlock} from './constants';\n\nexport interface ProgressInnerTextProps {\n text?: React.ReactNode;\n offset?: number;\n}\n\nexport function ProgressInnerText(props: ProgressInnerTextProps) {\n const {text, offset = 0} = props;\n\n if (!text) {\n return null;\n }\n\n return (\n <div\n className={progressBlock('text-inner')}\n style={{transform: `translateX(calc(var(--g-flow-direction) * ${-offset}%))`}}\n >\n {text}\n </div>\n );\n}\n","import type {CnMods} from '../utils/cn';\n\nimport {progressBlock} from './constants';\nimport type {Stack} from './types';\n\nexport interface ProgressStackItemProps {\n item: Stack;\n}\n\nexport function ProgressStackItem({item}: ProgressStackItemProps) {\n const {value, color, className, theme, title, content, loading} = item;\n const modifiers: CnMods = {\n loading,\n };\n\n if (typeof color === 'undefined') {\n modifiers.theme = theme || 'default';\n }\n\n if (Number.isFinite(value)) {\n return (\n <div\n className={progressBlock('item', modifiers, className)}\n style={{width: `${value}%`, backgroundColor: color}}\n title={title}\n >\n {content}\n </div>\n );\n }\n\n return null;\n}\n","import type {ProgressTheme, ProgressWithValueProps, Stack} from './types';\n\nexport function getOffset(value: number): number {\n return value < 100 ? value - 100 : 0;\n}\n\nexport function getValueFromStack(stack: Stack[]): number {\n return stack.reduce((sum, {value}) => sum + value, 0);\n}\n\nexport function getTheme(props: ProgressWithValueProps): ProgressTheme {\n const {theme, colorStops, colorStopsValue, value} = props;\n\n if (colorStops) {\n const matchingColorStopItem = colorStops.find((item, index) => {\n const currentValue = typeof colorStopsValue === 'number' ? colorStopsValue : value;\n const minValue = index > 1 ? colorStops[index - 1].stop : 0;\n const maxValue = index < colorStops.length - 1 ? item.stop : 100;\n\n return currentValue >= minValue && currentValue <= maxValue;\n });\n\n return matchingColorStopItem ? matchingColorStopItem.theme : (theme as ProgressTheme);\n }\n\n return theme as ProgressTheme;\n}\n","import {ProgressInnerText} from './ProgressInnerText';\nimport {ProgressStackItem} from './ProgressStackItem';\nimport {progressBlock} from './constants';\nimport type {ProgressWithStackProps} from './types';\nimport {getOffset, getValueFromStack} from './utils';\n\nexport function ProgressWithStack(props: ProgressWithStackProps) {\n const {stack, stackClassName, value, text} = props;\n const offset = getOffset(value || getValueFromStack(stack));\n\n return (\n <div\n className={progressBlock('stack', stackClassName)}\n style={{transform: `translateX(calc(var(--g-flow-direction) * ${offset}%))`}}\n >\n <div className={progressBlock('item')} style={{width: `${-offset}%`}} />\n {stack.map((item, index) => (\n <ProgressStackItem key={index} item={item} />\n ))}\n <ProgressInnerText offset={offset} text={text} />\n </div>\n );\n}\n","import {ProgressInnerText} from './ProgressInnerText';\nimport {progressBlock} from './constants';\nimport type {ProgressWithValueProps} from './types';\nimport {getOffset, getTheme} from './utils';\n\nexport function ProgressWithValue(props: ProgressWithValueProps) {\n const {value, loading, text} = props;\n const offset = getOffset(value);\n\n if (!Number.isFinite(value)) {\n return null;\n }\n\n return (\n <div\n className={progressBlock('item', {theme: getTheme(props), loading})}\n style={{transform: `translateX(calc(var(--g-flow-direction) * ${offset}%))`}}\n >\n <ProgressInnerText offset={offset} text={text} />\n </div>\n );\n}\n","import type * as React from 'react';\n\nimport type {QAProps} from '../types';\n\nexport type ProgressTheme = 'default' | 'success' | 'warning' | 'danger' | 'info' | 'misc';\nexport type ProgressSize = 'xs' | 's' | 'm';\nexport type ProgressValue = number;\n\nexport interface Stack {\n value: ProgressValue;\n color?: string;\n title?: string;\n theme?: ProgressTheme;\n loading?: boolean;\n className?: string;\n content?: React.ReactNode;\n}\n\nexport interface ProgressColorStops {\n theme: ProgressTheme;\n stop: number;\n}\n\ninterface ProgressGeneralProps extends QAProps {\n /** ClassName of element */\n className?: string;\n}\n\nexport interface ProgressDefaultProps {\n /** Text inside progress bar */\n text: React.ReactNode;\n /** Theme */\n theme: ProgressTheme;\n /** Size. Text of progress bar is displayed in `m` size only. */\n size: ProgressSize;\n /** Loading. Аdds loading animation */\n loading?: boolean;\n}\n\nexport interface ProgressWithValueProps\n extends ProgressGeneralProps,\n Partial<ProgressDefaultProps> {\n /** Current progress value. Available range is from 0 to 100. If `stack` property is passed `value` is not required and behaves as maxValue. */\n value: ProgressValue;\n /** ProgressTheme breakpoints. [Details](#colorstops) */\n colorStops?: ProgressColorStops[];\n /** Alternative value of `colorStops`. Available range is from 0 to 100. */\n colorStopsValue?: ProgressValue;\n}\n\nexport interface ProgressWithStackProps\n extends ProgressGeneralProps,\n Partial<ProgressDefaultProps> {\n /** Configuration of composite progress bar. Not required if a `value` property is passed. [Details](#stack) */\n stack: Stack[];\n value?: ProgressValue;\n /** ClassName of stack element */\n stackClassName?: string;\n}\n\nexport type ProgressProps = ProgressWithStackProps | ProgressWithValueProps;\n\nexport function isProgressWithStack(props: ProgressProps): props is ProgressWithStackProps {\n return (props as ProgressWithStackProps).stack !== undefined;\n}\n","import * as React from 'react';\n\nimport {ProgressWithStack} from './ProgressWithStack';\nimport {ProgressWithValue} from './ProgressWithValue';\nimport {progressBlock} from './constants';\nimport type {ProgressProps} from './types';\nimport {isProgressWithStack} from './types';\n\nimport './Progress.scss';\n\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n function Progress(props, ref) {\n const {text = '', theme = 'default', size = 'm', loading = false, className, qa} = props;\n const resolvedProps: ProgressProps = {...props, text, theme, size, loading};\n\n return (\n <div ref={ref} className={progressBlock({size}, className)} data-qa={qa}>\n <div className={progressBlock('text')}>{text}</div>\n {isProgressWithStack(resolvedProps) ? (\n <ProgressWithStack {...resolvedProps} />\n ) : (\n <ProgressWithValue {...resolvedProps} />\n )}\n </div>\n );\n },\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {getDisplayName} from '../utils';\n\nexport interface WithVisibleProps {\n visible?: boolean;\n handleShow: () => void;\n handleClose: () => void;\n toggleVisible: () => void;\n}\n\nexport interface State {\n visible?: boolean;\n}\n\nexport default function withVisible<P extends WithVisibleProps>(Component: React.ComponentType<P>) {\n const ResComponent = class WithVisible extends React.Component<P, State> {\n static propTypes = {\n visible: PropTypes.bool,\n };\n\n static defaultProps = {\n visible: false,\n };\n\n static displayName = `WithVisible(${getDisplayName(Component)})`;\n\n state = {visible: this.props.visible};\n\n handleShow = () => this.setState({visible: true});\n handleClose = () => this.setState({visible: false});\n toggleVisible = () => this.setState((prevState) => ({visible: !prevState.visible}));\n\n render() {\n const {visible} = this.state;\n\n return (\n <Component\n {...this.props}\n visible={visible}\n handleShow={this.handleShow}\n handleClose={this.handleClose}\n toggleVisible={this.toggleVisible}\n />\n );\n }\n };\n return ResComponent as any as React.ComponentClass<P, State>;\n}\n","import React, {CSSProperties, Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport {\n ELEMENTS_TABLE,\n TemplatesPropType,\n getColumnCaption,\n getColumnEdgePosition,\n prepareCellClassName,\n prepareColumnsData,\n prepareGroupCellClassName,\n} from './utils';\nimport {OldSortState} from '../../types';\nimport {OrderType, oldSortStateToOrderType} from '../../utils/sort-helpers';\nimport SortIcon from '../../components/SortIcon/SortIcon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {ToggleColumnSortOrderParams} from '../../store/actions/tables';\nimport {RootState} from '../../store/reducers';\n\nconst b = block(ELEMENTS_TABLE);\n\nexport const sortStateType = PropTypes.shape({\n field: PropTypes.string,\n asc: PropTypes.bool,\n});\n\nexport interface ElementsTableHeaderProps {\n css?: string;\n templates?: unknown;\n size: string;\n theme: string;\n padded: boolean;\n striped: boolean;\n\n items: Array<unknown>;\n //computeKey: () => void;\n onItemClick?: () => void;\n onItemHover?: () => void;\n\n toggleColumnSortOrder: (params: ToggleColumnSortOrderParams) => void;\n\n //sortInfo?: () => OldSortState;\n tableId: keyof RootState['tables'];\n sortState?: Record<string, OldSortState>;\n getEffectiveSortState?: (v: OldSortState) => OldSortState;\n onSort?: (columnName?: string) => void;\n\n columns: ColumnsItem;\n\n itemHeight?: number;\n selectedIndex?: number;\n headerClassName?: string;\n}\n\ninterface ColumnsItem {\n items: Array<{\n sort?: boolean;\n sortWithUndefined?: boolean;\n }>;\n sets: unknown;\n mode: string;\n}\n\ninterface State {\n columnItems: Record<string, ColumnGroupInfo | ColumnInfo>;\n columnSet: {\n items: Array<string>;\n hasGroups?: boolean;\n };\n}\n\ninterface ColumnGroupInfo {\n groupName: string;\n groupFirstItem?: boolean;\n headerStyle?: CSSProperties;\n groupCount?: number;\n groupId?: string;\n\n tooltipProps?: undefined;\n sort?: undefined;\n renderHeader?: undefined;\n sortWithUndefined?: undefined;\n allowedOrderTypes?: undefined;\n\n caption?: React.ReactNode;\n captionTail?: React.ReactNode; // rendered after sort-order icon\n}\n\nexport interface ColumnInfo {\n align?: 'left' | 'right' | 'center';\n\n tooltipProps?: {\n className?: string;\n };\n sort?: boolean;\n sortWithUndefined?: boolean;\n allowedOrderTypes?: Array<OrderType>;\n\n renderHeader?: (column: ColumnInfo) => React.ReactNode;\n\n groupName?: undefined;\n\n title?: string;\n\n caption?: React.ReactNode;\n captionTail?: React.ReactNode; // rendered after sort-order icon\n}\n\ninterface CellProps {\n style?: CSSProperties;\n colSpan?: number;\n rowSpan?: number;\n className?: string;\n key?: string;\n}\n\nexport default class ElementsTableHeader extends Component<ElementsTableHeaderProps, State> {\n static propTypes = {\n css: PropTypes.string,\n templates: TemplatesPropType.isRequired,\n size: PropTypes.string.isRequired,\n theme: PropTypes.string.isRequired,\n padded: PropTypes.bool.isRequired,\n striped: PropTypes.bool.isRequired,\n // ITEMS\n items: PropTypes.array.isRequired,\n computeKey: PropTypes.func,\n onItemClick: PropTypes.func,\n onItemHover: PropTypes.func,\n // old SORT\n sortInfo: PropTypes.func, // ko.param, old tables\n // new SORT\n tableId: PropTypes.string,\n sortState: sortStateType,\n getEffectiveSortState: PropTypes.func,\n // COLUMNS\n columns: PropTypes.shape({\n items: PropTypes.object.isRequired,\n sets: PropTypes.object.isRequired,\n mode: PropTypes.string.isRequired,\n }).isRequired,\n // VIRTUAL RENDERING\n itemHeight: PropTypes.number,\n // ROW SELECTION\n selectedIndex: PropTypes.number,\n headerClassName: PropTypes.string,\n };\n\n constructor(props: ElementsTableHeaderProps) {\n super(props);\n\n this.state = {\n columnItems: {},\n columnSet: {\n items: [],\n },\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n static getDerivedStateFromProps(props: ElementsTableHeaderProps) {\n const {columns} = props;\n const {items, set} = prepareColumnsData(columns);\n\n return {\n columnItems: items,\n columnSet: set,\n };\n }\n\n isColumnSortable(columnName: string) {\n const {columnItems} = this.state;\n const sortable = columnItems[columnName].sort;\n\n return typeof sortable === 'function' || (typeof sortable === 'boolean' && sortable);\n }\n\n renderCellCaptionTail(columnName: string) {\n const {columnItems} = this.state;\n const column = columnItems[columnName];\n\n return column?.captionTail || null;\n }\n\n renderCellCaption(columnName: string) {\n const {columnItems} = this.state;\n const column = columnItems[columnName];\n const withTooltip = Boolean(column?.tooltipProps);\n const content = getColumnCaption(column, columnName);\n const {className: tooltipClassName, ...restTooltipProps} = column?.tooltipProps || {};\n\n if (column?.renderHeader) {\n return column.renderHeader(column);\n }\n\n return withTooltip ? (\n <Tooltip {...restTooltipProps} className={b('column-name', tooltipClassName)}>\n {content}\n </Tooltip>\n ) : (\n <div\n className={b('column-name')}\n title={typeof content === 'string' ? content : undefined}\n >\n {content}\n </div>\n );\n }\n\n renderSortableHeaderCaption(columnName: string) {\n const className = block('g-link')({view: 'primary'});\n const {sortState, onSort, getEffectiveSortState} = this.props;\n\n const {sortWithUndefined, allowedOrderTypes} = this.state.columnItems[columnName];\n\n let sortInfo: OldSortState | undefined;\n let sortQuery, toggleOrder;\n if (sortState) {\n const {tableId, toggleColumnSortOrder} = this.props;\n const ss = sortState[tableId!];\n sortInfo = getEffectiveSortState ? getEffectiveSortState(ss) : ss;\n toggleOrder = () => {\n toggleColumnSortOrder({\n tableId,\n columnName,\n withUndefined: sortWithUndefined,\n allowedOrderTypes,\n });\n if (typeof onSort === 'function') {\n onSort(columnName);\n }\n };\n }\n\n const orderType = oldSortStateToOrderType(\n sortInfo?.field === columnName ? sortInfo : undefined,\n );\n\n return (\n <a className={className} href={sortQuery} onClick={toggleOrder}>\n {this.renderCellCaption(columnName)}\n <SortIcon className={b('cell-sort')} order={orderType} />\n {this.renderCellCaptionTail(columnName)}\n </a>\n );\n }\n\n renderHeaderCell(columnName: string, edgePosition: 'start' | 'end') {\n const {columnItems} = this.state;\n const cellClassName = prepareCellClassName(\n columnItems,\n columnName,\n this.props.css,\n edgePosition,\n );\n\n return (\n <th className={cellClassName} key={columnName}>\n {this.isColumnSortable(columnName) ? (\n this.renderSortableHeaderCaption(columnName)\n ) : (\n <React.Fragment>\n {this.renderCellCaption(columnName)}\n {this.renderCellCaptionTail(columnName)}\n </React.Fragment>\n )}\n </th>\n );\n }\n\n renderHeaderGroupCell(\n columnName: string,\n groupRowPlacement: 'top' | 'bottom',\n edgePosition: 'start' | 'end',\n ): React.ReactNode {\n const {columnItems} = this.state;\n const {css} = this.props;\n const column = columnItems[columnName];\n const cellClassName = prepareCellClassName(columnItems, columnName, css, edgePosition);\n const cellProps: CellProps = {\n key: columnName,\n className: cellClassName,\n };\n let caption = this.isColumnSortable(columnName)\n ? this.renderSortableHeaderCaption(columnName)\n : this.renderCellCaption(columnName);\n\n if (groupRowPlacement === 'top') {\n if (column.groupName) {\n if (column.groupFirstItem) {\n caption = this.renderCellCaption(column.groupName);\n cellProps.style = column.headerStyle;\n cellProps.colSpan = column.groupCount;\n cellProps.className = prepareGroupCellClassName(\n column.groupId,\n css,\n edgePosition,\n );\n } else {\n return null;\n }\n } else {\n cellProps.rowSpan = 2;\n }\n }\n\n if (groupRowPlacement === 'bottom' && !column.groupName) {\n return null;\n }\n\n return <th {...cellProps}>{caption}</th>;\n }\n\n renderHeaderGroupRow(placement: 'top' | 'bottom') {\n const {columnSet, columnItems} = this.state;\n\n return (\n <tr className={b('row')}>\n {columnSet.items.map((columnName, index) =>\n this.renderHeaderGroupCell(\n columnName,\n placement,\n getColumnEdgePosition(columnSet, columnItems, index, placement)!,\n ),\n )}\n </tr>\n );\n }\n\n renderHeaderRow() {\n const {columnSet, columnItems} = this.state;\n\n return (\n <tr className={b('row')}>\n {columnSet.items.map((columnName, index) =>\n this.renderHeaderCell(\n columnName,\n getColumnEdgePosition(columnSet, columnItems, index)!,\n ),\n )}\n </tr>\n );\n }\n\n render() {\n const {columnSet} = this.state;\n const hasGroups = columnSet.hasGroups;\n const headerClassName = b('head', this.props.headerClassName);\n\n return hasGroups ? (\n <thead className={headerClassName}>\n {this.renderHeaderGroupRow('top')}\n {this.renderHeaderGroupRow('bottom')}\n </thead>\n ) : (\n <thead className={headerClassName}>{this.renderHeaderRow()}</thead>\n );\n }\n}\n","import React from 'react';\nimport block from 'bem-cn-lite';\nimport PropTypes from 'prop-types';\nimport hammer from '../../common/hammer';\nimport templates from '../templates/templates';\n\nexport const ELEMENTS_TABLE = 'elements-table';\n\nexport const TemplatesPropType = PropTypes.oneOfType([\n PropTypes.shape({\n key: PropTypes.string,\n data: PropTypes.object,\n }),\n PropTypes.objectOf(PropTypes.func),\n]);\n\nexport function getRenderer(context, templatesCollection, columnName) {\n const {key} = templatesCollection;\n let renderer;\n\n if (key) {\n renderer = templates.get(key)[columnName] || templates.get(key).__default__;\n renderer = renderer?.bind(context);\n } else {\n // new way of passing templates\n renderer = templatesCollection[columnName] || templatesCollection.__default__;\n }\n return renderer || templates.__default__;\n}\n\nexport function getColumnCaption(column, columnName) {\n const caption =\n column && typeof column.caption !== 'undefined'\n ? column.caption\n : hammer.format['ReadableField'](columnName);\n\n return column && column.title ? <span title={column.title}>{caption}</span> : caption;\n}\n\nexport function getColumnEdgePosition(columnSet, columnItems, columnIndex, groupRowPlacement) {\n const columnName = columnSet.items[columnIndex];\n const column = columnItems[columnName];\n const isFirstColumn = columnIndex === 0;\n const isLastColumn = columnIndex === columnSet.items.length - 1;\n const isGroupFirstItem =\n groupRowPlacement === 'top' && column.groupName && column.groupFirstItem;\n const isLastGroupColumn =\n isGroupFirstItem && column.groupCount + columnIndex === columnSet.items.length;\n\n if (isFirstColumn) {\n return 'start';\n } else if (isLastColumn || isLastGroupColumn) {\n return 'end';\n }\n}\n\nexport function prepareColumnsData({items, sets, mode}, userMode) {\n const currentColumnSet = sets[userMode || mode];\n const preparedColumnItems = {};\n const preparedColumnSet = {\n items: [],\n };\n\n currentColumnSet.items.forEach((columnName) => {\n const columnItem = items[columnName];\n\n if (!columnItem) {\n return;\n }\n\n if (columnItem.group) {\n const groupName = getColumnCaption(columnItem, columnName);\n\n preparedColumnSet.hasGroups = true;\n columnItem.set.forEach((groupColumnName, groupColumnIndex) => {\n const groupColumnKey = columnName + '_' + groupColumnName;\n const groupColumnItem = {\n ...columnItem.items[groupColumnName],\n groupName,\n };\n\n if (groupColumnIndex === 0) {\n groupColumnItem.groupFirstItem = true;\n groupColumnItem.headerStyle = columnItem.groupHeaderStyle;\n groupColumnItem.groupCount = columnItem.set.length;\n groupColumnItem.groupId = columnName;\n }\n\n groupColumnItem.caption = getColumnCaption(groupColumnItem, groupColumnName);\n preparedColumnItems[groupColumnKey] = groupColumnItem;\n preparedColumnSet.items.push(groupColumnKey);\n });\n } else {\n preparedColumnItems[columnName] = columnItem;\n preparedColumnSet.items.push(columnName);\n }\n });\n\n return {\n items: preparedColumnItems,\n set: preparedColumnSet,\n };\n}\n\nexport function prepareCellClassName(columnItems, columnName, baseClassName, edgePosition) {\n const column = columnItems[columnName];\n const columnClassName = column?.className;\n const mix =\n column && baseClassName\n ? block(baseClassName)(\n 'table-item',\n {\n type: hammer.format['CssTemplateField'](columnName),\n },\n columnClassName,\n )\n : columnClassName;\n\n return block(ELEMENTS_TABLE)(\n 'cell',\n {\n align: column && column.align,\n edge: edgePosition,\n },\n mix,\n );\n}\n\nexport function prepareGroupCellClassName(groupId, baseClassName, edgePosition) {\n const mix = baseClassName\n ? block(baseClassName)('table-group-item', {\n type: hammer.format['CssTemplateField'](groupId),\n })\n : undefined;\n\n return block(ELEMENTS_TABLE)(\n 'cell',\n {\n align: 'center',\n edge: edgePosition,\n },\n mix,\n );\n}\n\nexport function prepareTableClassName({\n css,\n size,\n theme,\n striped,\n padded,\n onItemClick,\n getItemLink,\n selectedIndex,\n cssTableMods,\n}) {\n return block(ELEMENTS_TABLE)(\n {\n size,\n theme,\n striped: striped ? 'yes' : undefined,\n 'padded-edge': padded ? 'yes' : undefined,\n interactive:\n (onItemClick || getItemLink) && typeof selectedIndex === 'undefined' ? 'yes' : '',\n },\n css ? block(css)('table', cssTableMods) : undefined,\n );\n}\n","import React from 'react';\n\nimport Label from '../../../../components/Label/Label';\n\nexport function renderLabel(flag: boolean): React.ReactNode {\n return (\n <Label\n text={flag ? 'Disabled' : 'Enabled'}\n theme={flag ? 'danger' : 'success'}\n type=\"text\"\n />\n );\n}\n\nexport const TABLET_SLOTS = {\n none: {\n theme: 'default',\n text: 'N',\n },\n stopped: {\n theme: 'default',\n text: 'S',\n },\n elections: {\n theme: 'warning',\n text: 'E',\n },\n follower_recovery: {\n theme: 'warning',\n text: 'FR',\n },\n leader_recovery: {\n theme: 'warning',\n text: 'LR',\n },\n following: {\n theme: 'info',\n text: 'F',\n },\n leading: {\n theme: 'success',\n text: 'L',\n },\n} as const;\n"],"names":["b","block","_ref","text","_ref$theme","theme","_jsx","Tooltip","className","content","_jsxs","React","children","ClipboardButton","view","ElementsTable","_Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","concat","state","items","waitForHighlightedElementAndScroll","scrollToHighlightedElement","highlightedElement","document","querySelector","scrollIntoView","requestAnimationFrame","observer","MutationObserver","disconnect","tableBody","observe","childList","subtree","attributes","attributeFilter","setTimeout","prevMouseCoordinates","list","createRef","isItemVisible","item","computeKey","props","visible","onItemHover","evt","_this$props","mouseCoordinatesChanged","updateMouseCoordinates","index","currentTarget","dataset","Number","onItemSelect","_this$props2","selectedIndex","onItemClick","linkOrButtonWasClicked","_this$props3","getItemLink","action","makeEntryClickHandler","handleClick","renderEmptyTableContent","ELEMENTS_TABLE","emptyDataDescription","renderEmptyCell","cell","columnName","css","_this$state","columnSet","columnItems","edgePosition","getColumnEdgePosition","cellClassName","prepareCellClassName","renderSkeletonState","itemHeight","tableClassName","prepareTableClassName","bodyClassName","rowClassName","empty","rowStyle","height","header","ElementsTableHeader","_objectSpread","map_","range_","style","renderTableContent","ref","body","renderTableBody","_inherits","_createClass","key","value","prevProps","_this$list","_prevProps$highlighte","_this$props4","this","highlightedItem","compareHighlitedBy","reactList","current","_reactList$getVisible","getVisibleRange","_reactList$getVisible2","_slicedToArray","firstIndex","lastIndex","scrollAround","window","scrollBy","highlightedIndex","findIndex","toggledItemKey","_this$props5","tree","Object","assign","collapsed","itemKeys","map","updateVisibilityState","setState","onItemToggleState","x","clientX","y","clientY","_this$prevMouseCoordi","isLinkOrButton","node","nodeName","getAttribute","target","parentElement","undefined","_this$props6","templates","itemMods","cssHover","onMouseMove","colSpan","_this$state2","itemStates","highlighted","selected","currentKey","ElementsTableRow","toggleItemState","bind","itemState","_this2","_this$props7","virtualType","ReactList","itemRenderer","renderRow","itemsRenderer","scrollTo","type","itemSizeEstimator","useStaticSize","_this3","rows","_this$props8","virtual","isLoading","visibleItems","filter_","renderDynamicTable","renderSimpleTable","ErrorBoundary","renderTable","keys","prevKey","prevKeyParts","totalKeys","reduce","states","keyParts","split","boundaryCondition","parts","slice","parentState","join","pop","treeState","prevTreeState","toAdd","oldKeys","newKeys","toRemove","difference_","sort","forEach_","getEmptinessStates","omit_","forEach","collapsedAncestorExists","columns","columnsMode","_prepareColumnsData","prepareColumnsData","nextState","set","updateItemStates","treeStateExpanded","itemsState","itemKeyParts","currentIndex","indexOf","startsWith","Component","defaultProps","size","padded","striped","mapDispatchToProps","toggleColumnSortOrder","connect","sortState","tables","StatusBulb","_React$PureComponent","onMouseClick","e","rowIndex","colIndex","templatesCollection","renderer","getRenderer","colSpanValue","classNameFn","extraClassName","hover","getItemMods","filter","Boolean","cells","i","_this$renderCell","renderCell","push","onClick","onMouseEnter","tableId","withUndefined","allowUnordered","allowedOrderTypes","dispatch","getState","newOrderType","sortInfo","orderType","field","oldSortStateToOrderType","calculateNextOrderValue","nextSortOrderValue","newSortInfo","orderTypeToOldSortState","TOGGLE_COLUMN_SORT_ORDER","data","_defineProperty","changeColumnSortOrder","_ref2","asc","add","cell_id","url","genTabletCellBundlesCellUrl","YT","cluster","Link","routed","hammer","format","NO_VALUE","peer_id","_TABLET_SLOTS$item$st","TABLET_SLOTS","StatusBlock","renderUsage","used","limit","left","right","none","stopped","elections","follower_recovery","leader_recovery","following","leading","__default__","_typeof","IOWeight","mediumName","IO_WEIGHT_PREFIX","host","get","rack","user_tags","userTags","tag","banned","decommissioned","full","alerts","alertsCount","space","Progress","spaceProgress","spaceText","space_limit","spaceUsed","spaceAvailable","locations","enabledLocations","sessions","chunks","io_weight","cpu","cpuProgress","cpuText","memory","onMouseEnterHandler","_this$props$templates","onMemoryProgressMouseEnter","onMemoryProgressMouseLeave","event","onMouseLeave","memoryProgress","memoryText","stack","memoryData","memory_total","memoryTotalText","network","networkProgress","networkText","repair_slots","repairSlots","usage","limits","removal_slots","removalSlots","replication_slots","replicationSlots","seal_slots","sealSlots","user_slots","userSlots","tablet_slots","tabletSlots","keys_","byState","_TABLET_SLOTS$state","tablet_memory_static","tabletStaticMemory","tablet_memory_dynamic","tabletDynamicMemory","role","roleThemes","control","labelClassName","load_average","loadAverage","digits","network_load","networkLoad","updated_at","updatedAt","tabletSlot","tabletCellHref","title","_TABLET_SLOTS$tabletS","cn","compose","withVisible","settings","unipika","prepareSettings","filters","typedFilters","handleShow","handleClose","modalContent","Yson","Button","Modal","onOutsideClick","onCancel","footer","ellipsis","name","path","originalPath","transaction","remote","itemUrl","query","paramsToQuery","t","Page","NAVIGATION","isFolder","Icon","awesome","OperationIOLink","FilterOverview","ranges","live_preview","livePreview","supported","TemplateLivePreivew","tags","primary","teleport","append","foreign","Label","start_time","printColumnAsTime","finish_time","duration","Event","isNotFinalState","printColumnAsTimeDurationWithMs","call","progress","_column$get","getColumn","printColumnAsReadableField","account","column","chunk_count","node_count","disk_space","_column$label","label","cell_tag","_column$get2","cellTag","cellTagClassNames","cellTagIconClassNames","face","image","itemStyle","backgroundImage","getClusterAppearance","id","icon","clusterTheme","environment","access","granted","status","available","unavailable","version","pathCluster","originalQuery","originalUrl","progressBlock","ProgressInnerText","offset","transform","ProgressStackItem","color","loading","modifiers","isFinite","width","backgroundColor","getOffset","getTheme","colorStops","colorStopsValue","matchingColorStopItem","find","currentValue","minValue","stop","maxValue","ProgressWithStack","stackClassName","sum","getValueFromStack","ProgressWithValue","isProgressWithStack","qa","resolvedProps","_WithVisible","ResComponent","_React$Component","WithVisible","toggleVisible","prevState","displayName","getDisplayName","PropTypes","sortable","captionTail","withTooltip","tooltipProps","getColumnCaption","tooltipClassName","restTooltipProps","_objectWithoutProperties","_excluded","renderHeader","_sortInfo","toggleOrder","onSort","getEffectiveSortState","_this$state$columnIte","sortWithUndefined","ss","href","sortQuery","renderCellCaption","SortIcon","order","renderCellCaptionTail","isColumnSortable","renderSortableHeaderCaption","groupRowPlacement","cellProps","caption","groupName","groupFirstItem","headerStyle","groupCount","prepareGroupCellClassName","groupId","rowSpan","placement","renderHeaderGroupCell","renderHeaderCell","hasGroups","headerClassName","renderHeaderGroupRow","renderHeaderRow","context","_renderer","columnIndex","isFirstColumn","isLastColumn","isLastGroupColumn","userMode","sets","mode","currentColumnSet","preparedColumnItems","preparedColumnSet","columnItem","group","groupColumnName","groupColumnIndex","groupColumnKey","groupColumnItem","groupHeaderStyle","baseClassName","columnClassName","mix","align","edge","cssTableMods","interactive","renderLabel","flag"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"js/1394.9f9c9f9a.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/StatusBlock/StatusBlock.tsx","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/ElementsTable.js","webpack://@ytsaurus/ui/./src/ui/components/StatusBulb/StatusBulb.tsx","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/ElementsTableRow.js","webpack://@ytsaurus/ui/./src/ui/store/actions/tables.ts","webpack://@ytsaurus/ui/./src/ui/components/templates/components/nodes/node.js","webpack://@ytsaurus/ui/./src/ui/components/templates/components.js","webpack://@ytsaurus/ui/./src/ui/pages/operations/OperationDetail/tabs/details/FilterOverview/FilterOverview.js","webpack://@ytsaurus/ui/./src/ui/components/templates/operations/specification.js","webpack://@ytsaurus/ui/./src/ui/components/templates/operations/events.js","webpack://@ytsaurus/ui/./src/ui/components/templates/operations/resources.js","webpack://@ytsaurus/ui/./src/ui/components/templates/system.js","webpack://@ytsaurus/ui/./src/ui/components/templates/cluster-menu.js","webpack://@ytsaurus/ui/./src/ui/components/templates/templates.js","webpack://@ytsaurus/ui/./src/ui/pages/operations/OperationIOLink/OperationIOLink.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/constants.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/ProgressInnerText.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/ProgressStackItem.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/utils.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/ProgressWithStack.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/ProgressWithValue.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/types.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/src/components/Progress/Progress.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withVisible.tsx","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/ElementsTableHeader.tsx","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/utils.js","webpack://@ytsaurus/ui/./src/ui/components/templates/components/nodes/nodes.tsx"],"sourcesContent":["import React from 'react';\nimport block from 'bem-cn-lite';\n\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\n\nimport './StatusBlock.scss';\n\nconst b = block('status-block');\n\nexport type StatusBlockTheme =\n | 'banned'\n | 'warning'\n | 'info'\n | 'success'\n | 'danger'\n | 'full'\n | 'alerts'\n | 'default'\n | 'decommissioned';\n\nfunction StatusBlock({text, theme = 'default'}: {text: string | number; theme?: StatusBlockTheme}) {\n return (\n <Tooltip\n className={b({theme: theme})}\n content={\n <React.Fragment>\n <ClipboardButton text={text} view=\"clear\" /> {text}\n </React.Fragment>\n }\n >\n {text}\n </Tooltip>\n );\n}\n\nexport default StatusBlock;\n","import React, {Component, createRef} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ReactList from 'react-list';\nimport block from 'bem-cn-lite';\n\nimport difference_ from 'lodash/difference';\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport omit_ from 'lodash/omit';\nimport range_ from 'lodash/range';\n\nimport ElementsTableRow from './ElementsTableRow';\nimport ElementsTableHeader, {sortStateType} from './ElementsTableHeader';\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport {toggleColumnSortOrder} from '../../store/actions/tables';\nimport action from '../../components/action/action';\nimport {\n ELEMENTS_TABLE,\n TemplatesPropType,\n getColumnEdgePosition,\n prepareCellClassName,\n prepareColumnsData,\n prepareTableClassName,\n} from './utils';\n\nimport './ElementsTable.scss';\n\n/**\n * @deprecated Please use DataTableYT\n */\nclass ElementsTable extends Component {\n static propTypes = {\n isLoading: PropTypes.bool,\n css: PropTypes.string,\n cssTableMods: PropTypes.string,\n templates: TemplatesPropType,\n size: PropTypes.string,\n theme: PropTypes.string,\n padded: PropTypes.bool,\n striped: PropTypes.bool,\n // ITEMS\n items: PropTypes.array,\n itemMods: PropTypes.func,\n computeKey: (props, propName, componentName) => {\n if (\n props['tree'] === true &&\n (props[propName] === undefined || typeof props[propName] !== 'function')\n ) {\n return new Error(\n `For tree-like tables, ${propName} prop of ${componentName} has to be a function`,\n );\n }\n },\n onItemClick: PropTypes.func,\n getItemLink: PropTypes.func,\n onItemHover: PropTypes.func,\n toggleColumnSortOrder: PropTypes.func,\n // TREE DATA\n tree: PropTypes.bool,\n treeState: PropTypes.oneOf(['collapsed', 'expanded', 'mixed']),\n treeStateExpanded: PropTypes.arrayOf(PropTypes.string),\n onItemToggleState: PropTypes.func,\n // old SORT\n sortInfo: PropTypes.func, // ko.param, old tables\n // new SORT\n tableId: PropTypes.string,\n emptyDataDescription: PropTypes.string,\n sortState: sortStateType,\n getEffectiveSortState: PropTypes.func,\n // callBack SORT\n onSort: PropTypes.func,\n // COLUMNS\n columns: PropTypes.shape({\n items: PropTypes.object.isRequired,\n sets: PropTypes.object.isRequired,\n mode: PropTypes.string.isRequired,\n }).isRequired,\n columnsMode: PropTypes.string,\n // VIRTUAL RENDERING\n virtual: PropTypes.bool,\n virtualType: PropTypes.oneOf(['simple', 'variable', 'uniform']),\n header: PropTypes.bool,\n body: function (props, propName, componentName) {\n if (!props[propName] && props['virtual']) {\n return new Error(\n `The ${propName} flag set to false is not allowed in conjunction with virtual flag set to true in ${componentName}.`,\n );\n }\n },\n itemHeight: PropTypes.number,\n // ROW SELECTION\n selectedIndex: PropTypes.number,\n cssHover: PropTypes.bool,\n onItemSelect: PropTypes.func,\n onMouseMove: PropTypes.func,\n\n rowClassName: PropTypes.func,\n colSpan: PropTypes.func,\n headerClassName: PropTypes.string,\n\n // ROW HIGHLIGHT\n highlightedItem: PropTypes.object,\n compareHighlitedBy: PropTypes.string,\n };\n\n static defaultProps = {\n items: [],\n body: true,\n header: true,\n templates: {},\n size: 'm',\n theme: 'bordered',\n padded: false,\n striped: true,\n tree: false,\n treeState: 'collapsed',\n treeStateExpanded: [],\n virtual: true,\n virtualType: 'uniform',\n cssHover: false,\n };\n\n static getEmptinessStates(keys) {\n const totalKeys = keys.length;\n let prevKey, prevKeyParts;\n\n return keys.reduce((states, key, index) => {\n // initially item is not empty\n states[key] = {empty: false};\n\n const keyParts = key.split('/');\n // if we haven't traversed deeper right after the previous item, then the previous item\n // doesn't have children, i.e. is empty\n if (prevKeyParts && prevKeyParts.length >= keyParts.length) {\n states[prevKey] = {empty: true};\n }\n // last item is always empty\n if (index === totalKeys - 1) {\n states[key] = {empty: true};\n }\n [prevKey, prevKeyParts] = [key, keyParts];\n return states;\n }, {});\n }\n\n // For tree start\n static collapsedAncestorExists(key, items, boundaryCondition) {\n // Due to tree-like table properties node's children always come after it in list;\n // we rely on this fact when calculating a child state - by querying its parents' states\n\n // Start by dropping the last component of item's address, which yield its parent address\n const parts = key.split('/').slice(0, -1);\n while (boundaryCondition(parts)) {\n const parentState = items[parts.join('/')];\n // if parent is collapsed, we're done, otherwise try the parent's parent and so on\n if (parentState && parentState.collapsed) {\n return true;\n }\n parts.pop();\n }\n return false;\n }\n\n static updateItemStates(props, state) {\n const {tree, treeState, computeKey} = props;\n const {treeState: prevTreeState} = state;\n let items = null;\n\n if (tree) {\n items = {...state.items};\n\n const oldKeys = Object.keys(items);\n const newKeys = props.items.map(computeKey);\n\n const toRemove = difference_(oldKeys, newKeys);\n let toAdd;\n\n // When new state is 'mixed', table was updated NOT due to clicking\n // 'Expand All'/'Collapse All' button\n if (treeState === 'mixed' || treeState === prevTreeState) {\n toAdd = difference_(newKeys, oldKeys);\n // Sort new keys so that the topmost in the tree come first - we rely on this fact in\n // collapsedAncestorExists() method. However toAdd got in the alternative branch doesn't\n // need to be sorted since props.items come already in the proper order\n toAdd.sort();\n } else {\n // when `treeState` setting changes, we have to recalculate everything from scratch\n toAdd = newKeys;\n }\n\n forEach_(ElementsTable.getEmptinessStates(newKeys), (state, key) => {\n items[key] = Object.assign({}, items[key], state);\n });\n\n items = omit_(items, toRemove);\n toAdd.forEach((key) => {\n // When tree is in mixed state, new subtrees start as collapsed\n const itemState = {collapsed: treeState !== 'expanded'};\n itemState.visible = !ElementsTable.collapsedAncestorExists(\n key,\n items,\n (parts) => parts.length > 1,\n );\n items[key] = Object.assign({}, items[key], itemState);\n });\n }\n return items;\n }\n\n static getDerivedStateFromProps(props, state) {\n const {columns, columnsMode, computeKey} = props;\n const {items: columnItems, set: columnSet} = prepareColumnsData(columns, columnsMode);\n const nextState = {columnItems, columnSet};\n let items = ElementsTable.updateItemStates(props, state);\n forEach_(props.treeStateExpanded, (key) => {\n if (items[key] && items[key].collapsed) {\n items[key].collapsed = false;\n const itemKeys = map_(props.items, computeKey);\n items = ElementsTable.updateVisibilityState(itemKeys, items, key);\n }\n });\n if (items) {\n nextState.items = items;\n }\n if (props.treeState !== state.treeState) {\n nextState.treeState = props.treeState;\n }\n\n return nextState;\n }\n\n static updateVisibilityState(itemKeys, itemsState, toggledItemKey) {\n const itemKeyParts = toggledItemKey.split('/');\n // We process a table section starting from the first child of a clicked date\n // till the first item which is not a descendant of a clicked item.\n // To determine if `nodeA` is a descendant of `nodeX`, keys are examined:\n // if `nodeA` has key = keyX/other/parts, when keyX is the `nodeX` key, then\n // descendancy is proved.\n let currentIndex = itemKeys.indexOf(toggledItemKey) + 1;\n let currentKey = itemKeys[currentIndex];\n\n // TODO: remove implicit knowledge about key structure\n while (currentIndex < itemKeys.length && currentKey.startsWith(toggledItemKey + '/')) {\n const itemState = itemsState[currentKey];\n const visible = !ElementsTable.collapsedAncestorExists(\n currentKey,\n itemsState,\n (parts) => parts.length >= itemKeyParts.length,\n );\n Object.assign(itemState, {visible});\n\n currentIndex += 1;\n currentKey = itemKeys[currentIndex];\n }\n\n return itemsState;\n }\n\n state = {\n items: {},\n };\n\n componentDidUpdate(prevProps) {\n const {highlightedItem, items, selectedIndex, onItemSelect, compareHighlitedBy} =\n this.props;\n const reactList = this.list?.current;\n\n if (prevProps.selectedIndex !== selectedIndex && onItemSelect && reactList) {\n const [firstIndex, lastIndex] = reactList.getVisibleRange();\n\n if (selectedIndex < firstIndex) {\n reactList.scrollAround(selectedIndex);\n window.scrollBy(0, -80);\n } else if (selectedIndex > lastIndex) {\n reactList.scrollAround(selectedIndex);\n window.scrollBy(0, 40);\n }\n }\n\n if (\n prevProps.highlightedItem?.[compareHighlitedBy] !==\n highlightedItem?.[compareHighlitedBy] &&\n reactList\n ) {\n const highlightedIndex = items?.findIndex(\n (items) =>\n highlightedItem?.[compareHighlitedBy] &&\n items?.[compareHighlitedBy] &&\n highlightedItem?.[compareHighlitedBy] === items?.[compareHighlitedBy],\n );\n reactList.scrollAround(highlightedIndex);\n this.waitForHighlightedElementAndScroll();\n }\n }\n\n waitForHighlightedElementAndScroll = () => {\n const scrollToHighlightedElement = () => {\n const highlightedElement = document.querySelector(\n '.elements-table__row_highlighted_yes',\n );\n if (highlightedElement) {\n highlightedElement.scrollIntoView({\n block: 'center',\n });\n return true;\n }\n return false;\n };\n\n const checkForElement = () => {\n if (scrollToHighlightedElement()) {\n return;\n }\n\n const observer = new MutationObserver(() => {\n if (scrollToHighlightedElement()) {\n observer.disconnect();\n }\n });\n\n const tableBody = document.querySelector('.elements-table__body');\n if (tableBody) {\n observer.observe(tableBody, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['class'],\n });\n\n setTimeout(() => {\n observer.disconnect();\n }, 2000);\n }\n };\n\n requestAnimationFrame(checkForElement);\n };\n\n prevMouseCoordinates = {};\n list = createRef();\n\n toggleItemState(toggledItemKey) {\n const {computeKey, tree} = this.props;\n\n if (tree) {\n let items = Object.assign({}, this.state.items);\n\n // Invert the `collapsed` state of an item which was clicked\n const item = Object.assign(items[toggledItemKey], {\n collapsed: !items[toggledItemKey].collapsed,\n });\n\n const itemKeys = this.props.items.map(computeKey);\n items = ElementsTable.updateVisibilityState(itemKeys, items, toggledItemKey);\n\n this.setState({items});\n\n const {onItemToggleState} = this.props;\n if (onItemToggleState) {\n onItemToggleState(toggledItemKey, item.collapsed);\n }\n }\n }\n\n isItemVisible = (item) => {\n const {computeKey} = this.props;\n return (this.state.items[computeKey(item)] || {}).visible;\n };\n // For tree end\n\n // For mouse hover start\n updateMouseCoordinates(evt) {\n this.prevMouseCoordinates.x = evt.clientX;\n this.prevMouseCoordinates.y = evt.clientY;\n }\n\n mouseCoordinatesChanged(evt) {\n const {x, y} = this.prevMouseCoordinates;\n const firstChange = x === 'undefined' && typeof y === 'undefined';\n\n if (firstChange) {\n this.updateMouseCoordinates(evt);\n\n return false;\n } else {\n return x !== evt.clientX || y !== evt.clientY;\n }\n }\n\n onItemHover = (evt) => {\n const {items, onItemHover} = this.props;\n\n if (this.mouseCoordinatesChanged(evt)) {\n this.updateMouseCoordinates(evt);\n\n if (onItemHover) {\n const index = evt.currentTarget.dataset.index;\n\n onItemHover(items[index], Number(index));\n }\n }\n };\n\n onItemSelect = () => {\n const {items, onItemSelect} = this.props;\n\n if (onItemSelect) {\n const index = this.props.selectedIndex;\n\n onItemSelect(items[index], Number(index));\n }\n };\n // For mouse hover end\n\n // For item click start\n linkOrButtonWasClicked(evt) {\n const isLinkOrButton = (node) => {\n return (\n node.nodeName === 'BUTTON' ||\n node.getAttribute('role') === 'button' ||\n node.nodeName === 'A'\n );\n };\n // one of nested <span>s inside <a> gets the mouse event first, check if its ancestor is a link\n let node = evt.target;\n while (node && node.nodeName !== 'TD') {\n if (isLinkOrButton(node)) {\n return true;\n }\n node = node.parentElement;\n }\n return false;\n }\n\n onItemClick = (evt) => {\n if (this.linkOrButtonWasClicked(evt)) {\n return;\n }\n\n const {items, onItemClick, getItemLink} = this.props;\n const index = Number(evt.currentTarget.dataset.index);\n const handleClick = action.makeEntryClickHandler(evt, onItemClick, getItemLink);\n handleClick(items[index], index, evt);\n };\n // For item click end\n\n // render methods start\n renderEmptyTableContent = (\n <div>\n <div className={block(ELEMENTS_TABLE)('empty-header')}>No items to show </div>\n {this.props.emptyDataDescription && (\n <div className={block(ELEMENTS_TABLE)('empty-content')}>\n {this.props.emptyDataDescription}\n </div>\n )}\n </div>\n );\n\n renderEmptyCell = (cell, columnName, index) => {\n const {css} = this.props;\n const {columnSet, columnItems} = this.state;\n const edgePosition = getColumnEdgePosition(columnSet, columnItems, index);\n const cellClassName = prepareCellClassName(columnItems, columnName, css, edgePosition);\n\n return (\n <td key={columnName} className={cellClassName}>\n <div className={block(ELEMENTS_TABLE)('no-data-placeholder')} />\n </td>\n );\n };\n\n renderSkeletonState = () => {\n const {itemHeight} = this.props;\n const tableClassName = prepareTableClassName(this.props);\n const bodyClassName = block(ELEMENTS_TABLE)('body');\n const rowClassName = block(ELEMENTS_TABLE)('row', {empty: true});\n const rowStyle = {height: itemHeight};\n\n return (\n <table className={tableClassName}>\n {this.props.header && <ElementsTableHeader {...this.props} />}\n <tbody className={bodyClassName}>\n {map_(range_(4), (index) => (\n <tr key={index} className={rowClassName} style={rowStyle}>\n {map_(this.state.columnItems, this.renderEmptyCell)}\n </tr>\n ))}\n </tbody>\n </table>\n );\n };\n\n renderRow(item, index, highlightedIndex, key = index) {\n const {\n css,\n itemHeight,\n templates,\n itemMods,\n selectedIndex,\n computeKey,\n cssHover,\n onMouseMove,\n rowClassName,\n colSpan,\n } = this.props;\n const {items: itemStates, columnItems, columnSet} = this.state;\n\n const highlighted = highlightedIndex === index;\n const selected = selectedIndex === index;\n\n const currentKey = typeof computeKey === 'function' ? computeKey(item) : key;\n\n return (\n <ElementsTableRow\n key={currentKey ?? `##elements_table_row_${key}`}\n onItemClick={this.onItemClick}\n onItemHover={this.onItemHover}\n onItemSelect={this.onItemSelect}\n columnSet={columnSet}\n columnItems={columnItems}\n toggleItemState={this.toggleItemState.bind(this, currentKey)}\n itemState={itemStates[currentKey]}\n item={item}\n itemHeight={itemHeight}\n css={css}\n templates={templates}\n selected={selected}\n highlighted={highlighted}\n index={index}\n itemMods={itemMods}\n onMouseMove={onMouseMove}\n cssHover={cssHover}\n rowClassName={rowClassName}\n colSpan={colSpan}\n />\n );\n }\n\n renderTableBody(items, ref) {\n const bodyClassName = block(ELEMENTS_TABLE)('body');\n\n // FIXME: In the case of virtual rendering, we need to consider the table header height among the virtual elements\n return (\n <tbody ref={ref} className={bodyClassName}>\n {items}\n </tbody>\n );\n }\n\n renderTableContent = (items, ref) => (\n <table className={prepareTableClassName(this.props)}>\n {this.props.header && <ElementsTableHeader {...this.props} />}\n {this.props.body && this.renderTableBody(items, ref)}\n </table>\n );\n\n renderDynamicTable(items) {\n const {virtualType, selectedIndex, itemHeight, highlightedItem, compareHighlitedBy} =\n this.props;\n\n const highlightedIndex = items?.findIndex(\n (items) =>\n highlightedItem?.[compareHighlitedBy] &&\n items?.[compareHighlitedBy] &&\n highlightedItem?.[compareHighlitedBy] === items?.[compareHighlitedBy],\n );\n\n const itemRenderer = (index, key) =>\n this.renderRow(items[index], index, highlightedIndex, key);\n\n return (\n <ReactList\n itemRenderer={itemRenderer}\n itemsRenderer={this.renderTableContent}\n scrollTo={selectedIndex}\n length={items.length}\n type={virtualType}\n ref={this.list}\n itemSizeEstimator={() => itemHeight}\n useStaticSize\n />\n );\n }\n\n renderSimpleTable(items) {\n const rows = map_(items, (item, index) => this.renderRow(item, index));\n\n return this.renderTableContent(rows);\n }\n\n renderTable() {\n const {items, virtual, tree, isLoading} = this.props;\n\n const visibleItems = tree ? filter_(items, this.isItemVisible) : items;\n\n if (isLoading) {\n return this.renderSkeletonState();\n } else if (items.length) {\n return virtual\n ? this.renderDynamicTable(visibleItems)\n : this.renderSimpleTable(visibleItems);\n } else {\n return this.props.body && this.renderEmptyTableContent;\n }\n }\n\n render() {\n const {virtual} = this.props;\n\n // FIXME: the elements-table-wrapper className was added to account for the <thead> height and get correct container size\n return (\n <ErrorBoundary>\n <div className={virtual ? 'elements-table-wrapper' : undefined}>\n {this.renderTable()}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = ({tables}) => {\n return {sortState: tables};\n};\n\nconst mapDispatchToProps = {\n toggleColumnSortOrder,\n};\n\n/** @type {React.ComponentType<React.ComponentProps<typeof ElementsTable>>}\n@typedef {React.ComponentProps<typeof ElementsTable>} ElementsTableProps\n@typedef {React.ComponentType<ElementsTableProps>} ElementsTableType\n@type {ElementsTableType}\n*/\nexport default connect(mapStateToProps, mapDispatchToProps)(ElementsTable);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport './StatusBulb.scss';\n\ninterface Props {\n theme: 'unknown' | 'enabled' | 'disabled';\n}\n\nclass StatusBulb extends Component<Props> {\n static propTypes = {\n theme: PropTypes.string,\n };\n\n render() {\n const className = block('status-bulb')({theme: this.props.theme});\n return <div className={className}></div>;\n }\n}\n\nexport default StatusBulb;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport {\n ELEMENTS_TABLE,\n TemplatesPropType,\n getColumnEdgePosition,\n getRenderer,\n prepareCellClassName,\n} from './utils';\n\nexport default class ElementsTableRow extends React.PureComponent {\n static propTypes = {\n css: PropTypes.string,\n templates: TemplatesPropType,\n item: PropTypes.object.isRequired,\n itemHeight: PropTypes.number,\n itemMods: PropTypes.func,\n index: PropTypes.number.isRequired,\n selected: PropTypes.bool.isRequired,\n columnSet: PropTypes.object.isRequired,\n columnItems: PropTypes.object.isRequired,\n onItemClick: PropTypes.func,\n onItemHover: PropTypes.func,\n toggleItemState: PropTypes.func,\n itemState: PropTypes.object,\n cssHover: PropTypes.bool.isRequired,\n onItemSelect: PropTypes.func,\n rowClassName: PropTypes.func,\n highlighted: PropTypes.bool,\n };\n\n componentDidUpdate() {\n const {selected, onItemSelect} = this.props;\n\n if (onItemSelect && selected) {\n onItemSelect();\n }\n }\n\n getItemMods(item, index) {\n const {itemMods, css} = this.props;\n\n return typeof itemMods === 'function' ? block(css)('table-row', itemMods(item, index)) : '';\n }\n\n getColumn(columnName) {\n return this.props.columnItems[columnName];\n }\n\n onMouseClick = (e) => {\n const {onItemClick} = this.props;\n if (typeof onItemClick === 'function') {\n onItemClick(e);\n }\n };\n\n renderCell(cell, columnName, rowIndex, colIndex) {\n const {\n css,\n templates: templatesCollection,\n columnSet,\n columnItems,\n toggleItemState,\n itemState,\n colSpan,\n } = this.props;\n const edgePosition = getColumnEdgePosition(columnSet, columnItems, colIndex);\n const cellClassName = prepareCellClassName(columnItems, columnName, css, edgePosition);\n const renderer = getRenderer(this, templatesCollection, columnName);\n\n const colSpanValue = !colSpan ? undefined : colSpan(cell, rowIndex, colIndex);\n return {\n colSpanValue,\n node: (\n <td key={columnName} className={cellClassName} colSpan={colSpanValue}>\n {renderer(cell, columnName, toggleItemState, itemState)}\n </td>\n ),\n };\n }\n\n render() {\n const {\n columnSet,\n item,\n itemHeight,\n index,\n selected,\n onItemHover,\n cssHover,\n onMouseMove,\n highlighted,\n rowClassName: classNameFn,\n } = this.props;\n\n const extraClassName = classNameFn ? classNameFn(item, index) : '';\n const rowClassName = block(ELEMENTS_TABLE)(\n 'row',\n {\n highlighted: highlighted ? 'yes' : undefined,\n selected: selected ? 'yes' : undefined,\n hover: cssHover ? 'yes' : undefined,\n },\n [this.getItemMods(item, index), extraClassName].filter(Boolean).join(' '),\n );\n\n const rowStyle = {height: itemHeight};\n\n const cells = [];\n for (let i = 0; i < columnSet.items.length; ) {\n const columnName = columnSet.items[i];\n const {node, colSpanValue} = this.renderCell(item, columnName, index, i);\n cells.push(node);\n i += colSpanValue > 0 ? colSpanValue : 1;\n }\n\n return (\n <tr\n className={rowClassName}\n onMouseMove={onMouseMove}\n onClick={this.onMouseClick}\n onMouseEnter={onItemHover}\n data-index={index}\n style={rowStyle}\n >\n {cells}\n </tr>\n );\n }\n}\n","import {TOGGLE_COLUMN_SORT_ORDER} from '../../constants/tables';\nimport {\n OrderType,\n calculateNextOrderValue,\n nextSortOrderValue,\n oldSortStateToOrderType,\n orderTypeToOldSortState,\n} from '../../utils/sort-helpers';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../reducers';\nimport {TablesSortOrderAction, TablesSortOrderState} from '../reducers/tables';\n\nexport type ToggleColumnSortOrderParams = {\n columnName: string;\n tableId: keyof RootState['tables'];\n /** The field is ignored when **allowedOrderTypes** is defined */\n withUndefined?: boolean;\n /** The field is ignored when **allowedOrderTypes** is defined */\n allowUnordered?: boolean;\n /** When defined **withUndefined** is ignored */\n allowedOrderTypes?: Array<OrderType>;\n};\n\ntype TablesThunkAction = ThunkAction<any, RootState, any, any>;\n\nexport function toggleColumnSortOrder({\n columnName,\n tableId,\n withUndefined,\n allowUnordered,\n allowedOrderTypes,\n}: ToggleColumnSortOrderParams): TablesThunkAction {\n return (dispatch, getState) => {\n const {tables} = getState();\n const sortInfo = tables[tableId];\n\n const orderType = sortInfo.field === columnName ? oldSortStateToOrderType(sortInfo) : '';\n\n let newOrderType;\n if (allowedOrderTypes?.length) {\n newOrderType = calculateNextOrderValue(orderType, allowedOrderTypes);\n } else {\n newOrderType = nextSortOrderValue(orderType, allowUnordered, withUndefined);\n }\n\n const newSortInfo = orderTypeToOldSortState(columnName, newOrderType);\n\n dispatch({\n type: TOGGLE_COLUMN_SORT_ORDER,\n data: {[tableId]: newSortInfo},\n });\n };\n}\n\ninterface ChangeColumnSortOrderParams<K extends keyof TablesSortOrderState> {\n tableId: K;\n columnName: TablesSortOrderState[K]['field'];\n asc?: boolean;\n}\n\nexport function changeColumnSortOrder<K extends keyof TablesSortOrderState>({\n tableId,\n columnName,\n asc,\n}: ChangeColumnSortOrderParams<K>): TablesSortOrderAction {\n return {\n type: TOGGLE_COLUMN_SORT_ORDER,\n data: {[tableId]: {field: columnName, asc}},\n };\n}\n","/* global YT */\nimport React from 'react';\nimport hammer from '../../../../common/hammer';\n\nimport Link from '../../../../components/Link/Link';\nimport StatusBlock from '../../../../components/StatusBlock/StatusBlock';\n\nimport {TABLET_SLOTS} from './nodes';\nimport templates from '../../../../components/templates/utils';\nimport {genTabletCellBundlesCellUrl} from '../../../../utils/tablet_cell_bundles';\n\ntemplates.add('components/nodes/node', {\n cell_id(item) {\n const url = genTabletCellBundlesCellUrl(item.cell_id, YT.cluster);\n\n return item.cell_id ? (\n <Link url={url} theme=\"ghost\" routed>\n {item.cell_id}\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n },\n peer_id(item) {\n return item.peer_id;\n },\n state(item) {\n const {text, theme} = TABLET_SLOTS[item.state];\n\n return item.state ? <StatusBlock theme={theme} text={text} /> : hammer.format.NO_VALUE;\n },\n});\n","import './components/nodes/nodes';\nimport './components/nodes/node';\n\nimport React from 'react';\nimport block from 'bem-cn-lite';\n\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport Link from '../../components/Link/Link';\nimport templates from '../../components/templates/utils.js';\n\nimport hammer from '../../common/hammer';\nimport {genTabletCellBundlesCellUrl} from '../../utils/tablet_cell_bundles';\n\nfunction renderUsage(used, limit, format) {\n const left = hammer.format[format](used);\n const right = hammer.format[format](limit);\n\n return (\n <span>\n {left} / {right}\n </span>\n );\n}\n\nconst b = block('elements-label');\n\nconst TABLET_SLOTS = {\n none: {\n theme: 'default',\n text: 'N',\n },\n stopped: {\n theme: 'default',\n text: 'S',\n },\n elections: {\n theme: 'warning',\n text: 'E',\n },\n follower_recovery: {\n theme: 'warning',\n text: 'FR',\n },\n leader_recovery: {\n theme: 'warning',\n text: 'LR',\n },\n following: {\n theme: 'primary',\n text: 'F',\n },\n leading: {\n theme: 'success',\n text: 'L',\n },\n};\n\nconst IO_WEIGHT_PREFIX = 'io_weight_';\n\ntemplates.add('components/nodes', {\n __default__(item, columnName) {\n if (typeof item.IOWeight === 'object' && columnName.indexOf(IO_WEIGHT_PREFIX) === 0) {\n const mediumName = columnName.slice(IO_WEIGHT_PREFIX.length);\n\n return hammer.format['Number'](item.IOWeight[mediumName]);\n }\n },\n\n host: templates.get('components').host,\n\n state: templates.get('components').state,\n\n rack(item) {\n return <span className=\"elements-monospace\">{hammer.format['Address'](item.rack)}</span>;\n },\n\n user_tags(item) {\n if (item.userTags) {\n return item.userTags.map((tag) => (\n <span key={tag} className={b({theme: 'default'})}>\n {tag}\n </span>\n ));\n }\n\n return null;\n },\n\n banned: templates.get('components').banned,\n\n decommissioned(item) {\n return item.decommissioned ? <span className={b({theme: 'default'})}>D</span> : '—';\n },\n\n full(item) {\n return item.full ? <span className={b({theme: 'danger'})}>F</span> : '—';\n },\n\n alerts(item) {\n const alertsCount = item.alerts && item.alerts.length;\n\n return alertsCount ? <span className={b({theme: 'danger'})}>{alertsCount}</span> : '—';\n },\n\n space(item) {\n return <Progress value={item.spaceProgress} text={item.spaceText} theme=\"success\" />;\n },\n\n space_limit(item) {\n return hammer.format['Bytes'](item.spaceUsed + item.spaceAvailable);\n },\n\n locations(item) {\n return item.locations\n ? renderUsage(item.enabledLocations.length, item.locations.length, 'Number')\n : null;\n },\n\n sessions(item) {\n return hammer.format['Number'](item.sessions);\n },\n\n chunks(item) {\n return hammer.format['Number'](item.chunks);\n },\n\n io_weight(item) {\n return hammer.format['Number'](item.IOWeight);\n },\n\n cpu(item) {\n return <Progress value={item.cpuProgress} text={item.cpuText} theme=\"success\" />;\n },\n\n memory(item) {\n const {onMemoryProgressMouseEnter, onMemoryProgressMouseLeave} = this.props.templates.data;\n let onMouseEnterHandler;\n\n if (typeof onMemoryProgressMouseEnter === 'function') {\n onMouseEnterHandler = (event) =>\n onMemoryProgressMouseEnter(item, event.currentTarget, event);\n }\n\n return (\n <div onMouseEnter={onMouseEnterHandler} onMouseLeave={onMemoryProgressMouseLeave}>\n <Progress\n value={item.memoryProgress}\n text={item.memoryText}\n stack={item.memoryData}\n />\n </div>\n );\n },\n\n memory_total(item) {\n return <Progress value={item.memoryProgress} text={item.memoryTotalText} theme=\"success\" />;\n },\n\n network(item) {\n return <Progress value={item.networkProgress} text={item.networkText} theme=\"success\" />;\n },\n\n repair_slots(item) {\n return renderUsage(item.repairSlots.usage, item.repairSlots.limits, 'Number');\n },\n\n removal_slots(item) {\n return renderUsage(item.removalSlots.usage, item.removalSlots.limits, 'Number');\n },\n\n replication_slots(item) {\n return renderUsage(item.replicationSlots.usage, item.replicationSlots.limits, 'Number');\n },\n\n seal_slots(item) {\n return renderUsage(item.sealSlots.usage, item.sealSlots.limits, 'Number');\n },\n\n user_slots(item) {\n return renderUsage(item.userSlots.usage, item.userSlots.limits, 'Number');\n },\n\n tablet_slots(item) {\n if (item.tabletSlots) {\n return map_(keys_(item.tabletSlots.byState), (state) => {\n const tabletSlots = item.tabletSlots.byState[state];\n const {text, theme} = TABLET_SLOTS[state];\n\n return (\n <span key={state} className={b({theme})}>\n {text}: {tabletSlots.length}\n </span>\n );\n });\n }\n\n return null;\n },\n\n tablet_memory_static(item) {\n return renderUsage(item.tabletStaticMemory.used, item.tabletStaticMemory.limit, 'Bytes');\n },\n\n tablet_memory_dynamic(item) {\n return renderUsage(item.tabletDynamicMemory.used, item.tabletDynamicMemory.limit, 'Bytes');\n },\n});\n\ntemplates.add('components/proxies', {\n host: templates.get('components').host,\n\n state: templates.get('components').state,\n\n role(item) {\n const roleThemes = {\n control: 'default',\n data: 'default',\n };\n const labelClassName = b({\n theme: roleThemes[item.role] ? roleThemes[item.role] : 'warning',\n });\n\n return <span className={labelClassName}>{hammer.format['Address'](item.role)}</span>;\n },\n\n banned: templates.get('components').banned,\n\n load_average(item) {\n return <span>{hammer.format['Number'](item.loadAverage, {digits: 2})}</span>;\n },\n\n network_load(item) {\n return <span>{hammer.format['Number'](item.networkLoad, {digits: 2})}</span>;\n },\n\n updated_at(item) {\n return <span>{hammer.format['DateTime'](item.updatedAt, {format: 'short'})}</span>;\n },\n});\n\ntemplates.add('components/tablet-slots', {\n cell_id(tabletSlot) {\n if (typeof tabletSlot.cell_id === 'undefined') {\n return hammer.format.NO_VALUE;\n }\n\n const tabletCellHref = genTabletCellBundlesCellUrl(tabletSlot.cell_id);\n\n return (\n <Link title={tabletSlot.cell_id} url={tabletCellHref}>\n {tabletSlot.cell_id}\n </Link>\n );\n },\n\n peer_id(tabletSlot) {\n if (typeof tabletSlot.peer_id === 'undefined') {\n return hammer.format.NO_VALUE;\n }\n\n return tabletSlot.peer_id;\n },\n\n state(tabletSlot) {\n const {text, theme} = TABLET_SLOTS[tabletSlot.state];\n\n return (\n <span className={b({theme})} title={tabletSlot.state}>\n {text}\n </span>\n );\n },\n});\n","import React from 'react';\nimport unipika from '../../../../../../common/thor/unipika';\nimport {connect} from 'react-redux';\nimport {compose} from 'redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport {Button} from '@gravity-ui/uikit';\nimport Modal from '../../../../../../components/Modal/Modal';\nimport Yson from '../../../../../../components/Yson/Yson';\n\nimport withVisible from '../../../../../../hocs/withVisible';\n\nconst block = cn('specification');\n\nFilterOverview.propTypes = {\n // from parent-components\n type: PropTypes.string.isRequired,\n filters: PropTypes.object.isRequired,\n typedFilters: PropTypes.object.isRequired,\n // from connect\n settings: Yson.settingsProps.isRequired,\n // from hoc\n visible: PropTypes.bool.isRequired,\n handleShow: PropTypes.func.isRequired,\n handleClose: PropTypes.func.isRequired,\n};\n\nfunction FilterOverview({type, filters, typedFilters, visible, handleShow, handleClose, settings}) {\n const modalContent = <Yson value={typedFilters} settings={settings} />;\n\n return (\n <li>\n <span className={block('filter-overview')}>\n <span className={block('filter-name')}>{hammer.format['ReadableField'](type)}</span>\n\n <span className={block('filter-count')}>{filters[type].length}</span>\n </span>\n\n <Button view=\"flat-secondary\" size=\"m\" onClick={handleShow}>\n View\n </Button>\n\n <Modal\n onOutsideClick={handleClose}\n onCancel={handleClose}\n content={modalContent}\n visible={visible}\n title=\"Filters\"\n footer={false}\n />\n </li>\n );\n}\n\nconst mapStateToProps = () => {\n const settings = unipika.prepareSettings();\n\n return {settings};\n};\n\nexport default compose(withVisible, connect(mapStateToProps))(FilterOverview);\n","/* global YT */\nimport React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport FilterOverview from '../../../pages/operations/OperationDetail/tabs/details/FilterOverview/FilterOverview';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport Label from '../../../components/Label/Label';\nimport Link from '../../../components/Link/Link';\nimport Icon from '../../../components/Icon/Icon';\n\nimport {TemplateLivePreivew} from '../../../components/MetaTable/templates/OperationTemplate';\nimport templates from '../../../components/templates/utils';\nimport {Page} from '../../../constants/index';\n\nimport hammer from '../../../common/hammer';\nimport {paramsToQuery} from '../../../utils';\nimport OperationIOLink from '../../../pages/operations/OperationIOLink/OperationIOLink';\n\nconst block = cn('specification');\nconst ellipsis = cn('elements-ellipsis');\n\ntemplates.add('operations/detail/specification/io', {\n name(item) {\n const {path, originalPath, transaction, remote, url: itemUrl} = item;\n\n const query = paramsToQuery({path, t: transaction});\n const url = remote ? itemUrl : `/${YT.cluster}/${Page.NAVIGATION}?${query}`;\n\n return item.isFolder ? (\n <div className={block('io-folder', ellipsis())}>\n <Icon awesome=\"folder-open\" />\n \n <OperationIOLink {...item} className={block('io-folder-path')} />\n </div>\n ) : (\n <div className={block('io-name', ellipsis())}>\n <ClipboardButton text={path} view=\"flat-secondary\" size=\"s\" title=\"Copy path\" />\n \n <OperationIOLink {...item} />\n \n {originalPath && (\n <Link title={path} url={url}>\n <Icon awesome=\"folders\" />\n </Link>\n )}\n </div>\n );\n },\n filters(item) {\n if (item.isFolder) {\n return;\n }\n\n const filters = item.filters;\n const typedFilters = item.typedFilters;\n\n return filters ? (\n <ul className={cn('elements-list')({type: 'unstyled'})}>\n {filters?.columns && (\n <FilterOverview type=\"columns\" filters={filters} typedFilters={typedFilters} />\n )}\n {filters?.ranges && (\n <FilterOverview type=\"ranges\" filters={filters} typedFilters={typedFilters} />\n )}\n </ul>\n ) : (\n hammer.format.NO_VALUE\n );\n },\n live_preview(item) {\n if (item.isFolder) {\n return;\n }\n\n return item.livePreview.supported ? (\n <TemplateLivePreivew {...item.livePreview} cluster={YT.cluster} />\n ) : (\n hammer.format.NO_VALUE\n );\n },\n tags(item) {\n if (item.isFolder) {\n return;\n }\n\n return item.primary || item.teleport || item.append || item.foreign ? (\n <div className={block('tags')}>\n {item.primary && <Label text=\"primary\" theme=\"info\" />}\n {item.teleport && <Label text=\"teleport\" theme=\"warning\" />}\n {item.append && <Label text=\"append\" theme=\"warning\" />}\n {item.foreign && <Label text=\"foreign\" theme=\"info\" />}\n </div>\n ) : (\n hammer.format.NO_VALUE\n );\n },\n});\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Progress} from '@gravity-ui/uikit';\nimport {Event} from '../../../utils/operations/tabs/details/events/events';\n\nimport hammer from '../../../common/hammer';\nimport templates, {\n printColumnAsReadableField,\n printColumnAsTime,\n printColumnAsTimeDurationWithMs,\n} from '../../../components/templates/utils';\n\nconst block = cn('operation-detail');\n\ntemplates.add('operations/detail/events', {\n start_time: printColumnAsTime,\n finish_time: printColumnAsTime,\n duration(item, columnName) {\n return Event.isNotFinalState(item)\n ? printColumnAsTimeDurationWithMs.call(this, item, columnName)\n : hammer.format.NO_VALUE;\n },\n progress(item, columnName) {\n if (Event.isNotFinalState(item) && item.state !== 'total') {\n const progress = item.progress.duration;\n const column = this.getColumn(columnName);\n const {theme, value} = column.get(item);\n\n return (\n <div className={block('events-progress', {theme})}>\n <span\n className={block('events-progress-percentage', 'elements-secondary-text')}\n >\n {hammer.format['Percent'](progress)}\n </span>\n\n <Progress value={value} size={'xs'} />\n </div>\n );\n }\n },\n state: printColumnAsReadableField,\n});\n","import templates from '../../../components/templates/utils';\nimport hammer from '../../../common/hammer';\n\ntemplates.add('operations/detail/resources/intermediate', {\n account(item, column) {\n return hammer.format['ValueOrDefault'](item[column]);\n },\n chunk_count(item, column) {\n return hammer.format['Number'](item[column]);\n },\n node_count(item, column) {\n return hammer.format['Number'](item[column]);\n },\n disk_space(item, column) {\n return hammer.format['Bytes'](item[column]);\n },\n});\n","import React from 'react';\nimport block from 'bem-cn-lite';\n\nimport Label from '../../components/Label/Label';\nimport Icon from '../../components/Icon/Icon';\n\nimport templates from './utils.js';\nimport hammer from '../../common/hammer';\n\nconst b = block('system');\n\ntemplates.add('system/chunk-cells', {\n __default__(item, columnName) {\n const column = this.getColumn(columnName);\n const value = column?.get?.(item);\n const theme = column?.label?.(value) || 'default';\n const text = hammer.format['Number'](value);\n\n return <Label theme={theme} text={text} />;\n },\n cell_tag(item, columnName) {\n const column = this.getColumn(columnName);\n const cellTag = column?.get?.(item);\n\n const cellTagClassNames = b('master-quorum-cell');\n const cellTagIconClassNames = b('master-quorum-cell-icon');\n\n return (\n <div className={cellTagClassNames} title={`Cell tag: ${cellTag}`}>\n <Icon className={cellTagIconClassNames} face=\"solid\" awesome=\"tag\" />\n \n <span>{hammer.format['Hex'](cellTag)}</span>\n </div>\n );\n },\n});\n","import React from 'react';\n\nimport StatusBulb from '../../components/StatusBulb/StatusBulb';\nimport hammer from '../../common/hammer';\nimport templates from './utils.js';\nimport Link from '../../components/Link/Link';\nimport {getClusterAppearance} from '../../appearance';\n\ntemplates.add('cluster-menu', {\n image(item) {\n const {theme} = item;\n const itemStyle = {\n backgroundImage: 'url(' + getClusterAppearance(item.id).icon + ')',\n };\n const clusterTheme = theme ? `cluster-color_theme_${theme}` : 'cluster-color';\n return (\n <div\n className={`cluster-menu__table-item-image ${clusterTheme}`}\n style={itemStyle}\n ></div>\n );\n },\n environment(item) {\n return (\n <span className=\"elements-heading elements-heading_theme_system\">\n {hammer.format['ValueOrDefault'](item.environment)}\n </span>\n );\n },\n name(item) {\n return (\n <Link theme=\"primary\" url={'/' + item.id + '/'}>\n {item.name}\n </Link>\n );\n },\n access(item) {\n const theme = {\n none: 'disabled',\n granted: 'enabled',\n }[item.access];\n\n return <StatusBulb theme={theme} />;\n },\n status(item) {\n const theme = {\n available: 'enabled',\n unavailable: 'disabled',\n }[item.status];\n\n return <StatusBulb theme={theme} />;\n },\n version(item) {\n return hammer.format['ValueOrDefault'](item.version);\n },\n});\n","import templates from './utils.js';\nimport './components';\nimport './operations';\nimport './system';\nimport './cluster-menu';\n\nexport default templates;\n","import React from 'react';\n\nimport Link, {LinkProps} from '../../../components/Link/Link';\n\nimport {Page} from '../../../constants/index';\n\nimport {paramsToQuery} from '../../../utils';\n\nconst YT = (window as any).YT;\n\nexport interface OperationIOLinkProps {\n name: string;\n cluster?: string;\n path: string;\n originalPath: string;\n transaction?: string;\n remote: boolean;\n url: string;\n isFolder: boolean;\n className?: string;\n theme: LinkProps['theme'];\n}\n\nexport default function OperationIOLink(props: OperationIOLinkProps) {\n const {\n name,\n cluster,\n path,\n originalPath,\n transaction,\n remote,\n url: itemUrl,\n isFolder,\n className,\n theme,\n } = props;\n\n const pathCluster = cluster ?? YT.cluster;\n\n const query = paramsToQuery({path, t: transaction});\n const url = remote ? itemUrl : `/${pathCluster}/${Page.NAVIGATION}?${query}`;\n const originalQuery = paramsToQuery({path: originalPath});\n const originalUrl = `/${pathCluster}/${Page.NAVIGATION}?${originalQuery}`;\n\n return isFolder ? (\n <Link theme={theme} className={className} url={url} title={path}>\n {cluster ? `${cluster}:` : undefined}\n {path}\n </Link>\n ) : (\n <Link\n theme={theme}\n className={className}\n url={originalPath ? originalUrl : url}\n title={originalPath || path || name}\n >\n {cluster ? `${cluster}:` : undefined}\n {originalPath || path || name}\n </Link>\n );\n}\n","import {block} from '../utils/cn';\n\nexport const progressBlock = block('progress');\n","import type * as React from 'react';\n\nimport {progressBlock} from './constants';\n\nexport interface ProgressInnerTextProps {\n text?: React.ReactNode;\n offset?: number;\n}\n\nexport function ProgressInnerText(props: ProgressInnerTextProps) {\n const {text, offset = 0} = props;\n\n if (!text) {\n return null;\n }\n\n return (\n <div\n className={progressBlock('text-inner')}\n style={{transform: `translateX(calc(var(--g-flow-direction) * ${-offset}%))`}}\n >\n {text}\n </div>\n );\n}\n","import type {CnMods} from '../utils/cn';\n\nimport {progressBlock} from './constants';\nimport type {Stack} from './types';\n\nexport interface ProgressStackItemProps {\n item: Stack;\n}\n\nexport function ProgressStackItem({item}: ProgressStackItemProps) {\n const {value, color, className, theme, title, content, loading} = item;\n const modifiers: CnMods = {\n loading,\n };\n\n if (typeof color === 'undefined') {\n modifiers.theme = theme || 'default';\n }\n\n if (Number.isFinite(value)) {\n return (\n <div\n className={progressBlock('item', modifiers, className)}\n style={{width: `${value}%`, backgroundColor: color}}\n title={title}\n >\n {content}\n </div>\n );\n }\n\n return null;\n}\n","import type {ProgressTheme, ProgressWithValueProps, Stack} from './types';\n\nexport function getOffset(value: number): number {\n return value < 100 ? value - 100 : 0;\n}\n\nexport function getValueFromStack(stack: Stack[]): number {\n return stack.reduce((sum, {value}) => sum + value, 0);\n}\n\nexport function getTheme(props: ProgressWithValueProps): ProgressTheme {\n const {theme, colorStops, colorStopsValue, value} = props;\n\n if (colorStops) {\n const matchingColorStopItem = colorStops.find((item, index) => {\n const currentValue = typeof colorStopsValue === 'number' ? colorStopsValue : value;\n const minValue = index > 1 ? colorStops[index - 1].stop : 0;\n const maxValue = index < colorStops.length - 1 ? item.stop : 100;\n\n return currentValue >= minValue && currentValue <= maxValue;\n });\n\n return matchingColorStopItem ? matchingColorStopItem.theme : (theme as ProgressTheme);\n }\n\n return theme as ProgressTheme;\n}\n","import {ProgressInnerText} from './ProgressInnerText';\nimport {ProgressStackItem} from './ProgressStackItem';\nimport {progressBlock} from './constants';\nimport type {ProgressWithStackProps} from './types';\nimport {getOffset, getValueFromStack} from './utils';\n\nexport function ProgressWithStack(props: ProgressWithStackProps) {\n const {stack, stackClassName, value, text} = props;\n const offset = getOffset(value || getValueFromStack(stack));\n\n return (\n <div\n className={progressBlock('stack', stackClassName)}\n style={{transform: `translateX(calc(var(--g-flow-direction) * ${offset}%))`}}\n >\n <div className={progressBlock('item')} style={{width: `${-offset}%`}} />\n {stack.map((item, index) => (\n <ProgressStackItem key={index} item={item} />\n ))}\n <ProgressInnerText offset={offset} text={text} />\n </div>\n );\n}\n","import {ProgressInnerText} from './ProgressInnerText';\nimport {progressBlock} from './constants';\nimport type {ProgressWithValueProps} from './types';\nimport {getOffset, getTheme} from './utils';\n\nexport function ProgressWithValue(props: ProgressWithValueProps) {\n const {value, loading, text} = props;\n const offset = getOffset(value);\n\n if (!Number.isFinite(value)) {\n return null;\n }\n\n return (\n <div\n className={progressBlock('item', {theme: getTheme(props), loading})}\n style={{transform: `translateX(calc(var(--g-flow-direction) * ${offset}%))`}}\n >\n <ProgressInnerText offset={offset} text={text} />\n </div>\n );\n}\n","import type * as React from 'react';\n\nimport type {QAProps} from '../types';\n\nexport type ProgressTheme = 'default' | 'success' | 'warning' | 'danger' | 'info' | 'misc';\nexport type ProgressSize = 'xs' | 's' | 'm';\nexport type ProgressValue = number;\n\nexport interface Stack {\n value: ProgressValue;\n color?: string;\n title?: string;\n theme?: ProgressTheme;\n loading?: boolean;\n className?: string;\n content?: React.ReactNode;\n}\n\nexport interface ProgressColorStops {\n theme: ProgressTheme;\n stop: number;\n}\n\ninterface ProgressGeneralProps extends QAProps {\n /** ClassName of element */\n className?: string;\n}\n\nexport interface ProgressDefaultProps {\n /** Text inside progress bar */\n text: React.ReactNode;\n /** Theme */\n theme: ProgressTheme;\n /** Size. Text of progress bar is displayed in `m` size only. */\n size: ProgressSize;\n /** Loading. Аdds loading animation */\n loading?: boolean;\n}\n\nexport interface ProgressWithValueProps\n extends ProgressGeneralProps,\n Partial<ProgressDefaultProps> {\n /** Current progress value. Available range is from 0 to 100. If `stack` property is passed `value` is not required and behaves as maxValue. */\n value: ProgressValue;\n /** ProgressTheme breakpoints. [Details](#colorstops) */\n colorStops?: ProgressColorStops[];\n /** Alternative value of `colorStops`. Available range is from 0 to 100. */\n colorStopsValue?: ProgressValue;\n}\n\nexport interface ProgressWithStackProps\n extends ProgressGeneralProps,\n Partial<ProgressDefaultProps> {\n /** Configuration of composite progress bar. Not required if a `value` property is passed. [Details](#stack) */\n stack: Stack[];\n value?: ProgressValue;\n /** ClassName of stack element */\n stackClassName?: string;\n}\n\nexport type ProgressProps = ProgressWithStackProps | ProgressWithValueProps;\n\nexport function isProgressWithStack(props: ProgressProps): props is ProgressWithStackProps {\n return (props as ProgressWithStackProps).stack !== undefined;\n}\n","import * as React from 'react';\n\nimport {ProgressWithStack} from './ProgressWithStack';\nimport {ProgressWithValue} from './ProgressWithValue';\nimport {progressBlock} from './constants';\nimport type {ProgressProps} from './types';\nimport {isProgressWithStack} from './types';\n\nimport './Progress.scss';\n\nexport const Progress = React.forwardRef<HTMLDivElement, ProgressProps>(\n function Progress(props, ref) {\n const {text = '', theme = 'default', size = 'm', loading = false, className, qa} = props;\n const resolvedProps: ProgressProps = {...props, text, theme, size, loading};\n\n return (\n <div ref={ref} className={progressBlock({size}, className)} data-qa={qa}>\n <div className={progressBlock('text')}>{text}</div>\n {isProgressWithStack(resolvedProps) ? (\n <ProgressWithStack {...resolvedProps} />\n ) : (\n <ProgressWithValue {...resolvedProps} />\n )}\n </div>\n );\n },\n);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport {getDisplayName} from '../utils';\n\nexport interface WithVisibleProps {\n visible?: boolean;\n handleShow: () => void;\n handleClose: () => void;\n toggleVisible: () => void;\n}\n\nexport interface State {\n visible?: boolean;\n}\n\nexport default function withVisible<P extends WithVisibleProps>(Component: React.ComponentType<P>) {\n const ResComponent = class WithVisible extends React.Component<P, State> {\n static propTypes = {\n visible: PropTypes.bool,\n };\n\n static defaultProps = {\n visible: false,\n };\n\n static displayName = `WithVisible(${getDisplayName(Component)})`;\n\n state = {visible: this.props.visible};\n\n handleShow = () => this.setState({visible: true});\n handleClose = () => this.setState({visible: false});\n toggleVisible = () => this.setState((prevState) => ({visible: !prevState.visible}));\n\n render() {\n const {visible} = this.state;\n\n return (\n <Component\n {...this.props}\n visible={visible}\n handleShow={this.handleShow}\n handleClose={this.handleClose}\n toggleVisible={this.toggleVisible}\n />\n );\n }\n };\n return ResComponent as any as React.ComponentClass<P, State>;\n}\n","import React, {CSSProperties, Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport {\n ELEMENTS_TABLE,\n TemplatesPropType,\n getColumnCaption,\n getColumnEdgePosition,\n prepareCellClassName,\n prepareColumnsData,\n prepareGroupCellClassName,\n} from './utils';\nimport {OldSortState} from '../../types';\nimport {OrderType, oldSortStateToOrderType} from '../../utils/sort-helpers';\nimport SortIcon from '../../components/SortIcon/SortIcon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {ToggleColumnSortOrderParams} from '../../store/actions/tables';\nimport {RootState} from '../../store/reducers';\n\nconst b = block(ELEMENTS_TABLE);\n\nexport const sortStateType = PropTypes.shape({\n field: PropTypes.string,\n asc: PropTypes.bool,\n});\n\nexport interface ElementsTableHeaderProps {\n css?: string;\n templates?: unknown;\n size: string;\n theme: string;\n padded: boolean;\n striped: boolean;\n\n items: Array<unknown>;\n //computeKey: () => void;\n onItemClick?: () => void;\n onItemHover?: () => void;\n\n toggleColumnSortOrder: (params: ToggleColumnSortOrderParams) => void;\n\n //sortInfo?: () => OldSortState;\n tableId: keyof RootState['tables'];\n sortState?: Record<string, OldSortState>;\n getEffectiveSortState?: (v: OldSortState) => OldSortState;\n onSort?: (columnName?: string) => void;\n\n columns: ColumnsItem;\n\n itemHeight?: number;\n selectedIndex?: number;\n headerClassName?: string;\n}\n\ninterface ColumnsItem {\n items: Array<{\n sort?: boolean;\n sortWithUndefined?: boolean;\n }>;\n sets: unknown;\n mode: string;\n}\n\ninterface State {\n columnItems: Record<string, ColumnGroupInfo | ColumnInfo>;\n columnSet: {\n items: Array<string>;\n hasGroups?: boolean;\n };\n}\n\ninterface ColumnGroupInfo {\n groupName: string;\n groupFirstItem?: boolean;\n headerStyle?: CSSProperties;\n groupCount?: number;\n groupId?: string;\n\n tooltipProps?: undefined;\n sort?: undefined;\n renderHeader?: undefined;\n sortWithUndefined?: undefined;\n allowedOrderTypes?: undefined;\n\n caption?: React.ReactNode;\n captionTail?: React.ReactNode; // rendered after sort-order icon\n}\n\nexport interface ColumnInfo {\n align?: 'left' | 'right' | 'center';\n\n tooltipProps?: {\n className?: string;\n };\n sort?: boolean;\n sortWithUndefined?: boolean;\n allowedOrderTypes?: Array<OrderType>;\n\n renderHeader?: (column: ColumnInfo) => React.ReactNode;\n\n groupName?: undefined;\n\n title?: string;\n\n caption?: React.ReactNode;\n captionTail?: React.ReactNode; // rendered after sort-order icon\n}\n\ninterface CellProps {\n style?: CSSProperties;\n colSpan?: number;\n rowSpan?: number;\n className?: string;\n key?: string;\n}\n\nexport default class ElementsTableHeader extends Component<ElementsTableHeaderProps, State> {\n static propTypes = {\n css: PropTypes.string,\n templates: TemplatesPropType.isRequired,\n size: PropTypes.string.isRequired,\n theme: PropTypes.string.isRequired,\n padded: PropTypes.bool.isRequired,\n striped: PropTypes.bool.isRequired,\n // ITEMS\n items: PropTypes.array.isRequired,\n computeKey: PropTypes.func,\n onItemClick: PropTypes.func,\n onItemHover: PropTypes.func,\n // old SORT\n sortInfo: PropTypes.func, // ko.param, old tables\n // new SORT\n tableId: PropTypes.string,\n sortState: sortStateType,\n getEffectiveSortState: PropTypes.func,\n // COLUMNS\n columns: PropTypes.shape({\n items: PropTypes.object.isRequired,\n sets: PropTypes.object.isRequired,\n mode: PropTypes.string.isRequired,\n }).isRequired,\n // VIRTUAL RENDERING\n itemHeight: PropTypes.number,\n // ROW SELECTION\n selectedIndex: PropTypes.number,\n headerClassName: PropTypes.string,\n };\n\n constructor(props: ElementsTableHeaderProps) {\n super(props);\n\n this.state = {\n columnItems: {},\n columnSet: {\n items: [],\n },\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n static getDerivedStateFromProps(props: ElementsTableHeaderProps) {\n const {columns} = props;\n const {items, set} = prepareColumnsData(columns);\n\n return {\n columnItems: items,\n columnSet: set,\n };\n }\n\n isColumnSortable(columnName: string) {\n const {columnItems} = this.state;\n const sortable = columnItems[columnName].sort;\n\n return typeof sortable === 'function' || (typeof sortable === 'boolean' && sortable);\n }\n\n renderCellCaptionTail(columnName: string) {\n const {columnItems} = this.state;\n const column = columnItems[columnName];\n\n return column?.captionTail || null;\n }\n\n renderCellCaption(columnName: string) {\n const {columnItems} = this.state;\n const column = columnItems[columnName];\n const withTooltip = Boolean(column?.tooltipProps);\n const content = getColumnCaption(column, columnName);\n const {className: tooltipClassName, ...restTooltipProps} = column?.tooltipProps || {};\n\n if (column?.renderHeader) {\n return column.renderHeader(column);\n }\n\n return withTooltip ? (\n <Tooltip {...restTooltipProps} className={b('column-name', tooltipClassName)}>\n {content}\n </Tooltip>\n ) : (\n <div\n className={b('column-name')}\n title={typeof content === 'string' ? content : undefined}\n >\n {content}\n </div>\n );\n }\n\n renderSortableHeaderCaption(columnName: string) {\n const className = block('g-link')({view: 'primary'});\n const {sortState, onSort, getEffectiveSortState} = this.props;\n\n const {sortWithUndefined, allowedOrderTypes} = this.state.columnItems[columnName];\n\n let sortInfo: OldSortState | undefined;\n let sortQuery, toggleOrder;\n if (sortState) {\n const {tableId, toggleColumnSortOrder} = this.props;\n const ss = sortState[tableId!];\n sortInfo = getEffectiveSortState ? getEffectiveSortState(ss) : ss;\n toggleOrder = () => {\n toggleColumnSortOrder({\n tableId,\n columnName,\n withUndefined: sortWithUndefined,\n allowedOrderTypes,\n });\n if (typeof onSort === 'function') {\n onSort(columnName);\n }\n };\n }\n\n const orderType = oldSortStateToOrderType(\n sortInfo?.field === columnName ? sortInfo : undefined,\n );\n\n return (\n <a className={className} href={sortQuery} onClick={toggleOrder}>\n {this.renderCellCaption(columnName)}\n <SortIcon className={b('cell-sort')} order={orderType} />\n {this.renderCellCaptionTail(columnName)}\n </a>\n );\n }\n\n renderHeaderCell(columnName: string, edgePosition: 'start' | 'end') {\n const {columnItems} = this.state;\n const cellClassName = prepareCellClassName(\n columnItems,\n columnName,\n this.props.css,\n edgePosition,\n );\n\n return (\n <th className={cellClassName} key={columnName}>\n {this.isColumnSortable(columnName) ? (\n this.renderSortableHeaderCaption(columnName)\n ) : (\n <React.Fragment>\n {this.renderCellCaption(columnName)}\n {this.renderCellCaptionTail(columnName)}\n </React.Fragment>\n )}\n </th>\n );\n }\n\n renderHeaderGroupCell(\n columnName: string,\n groupRowPlacement: 'top' | 'bottom',\n edgePosition: 'start' | 'end',\n ): React.ReactNode {\n const {columnItems} = this.state;\n const {css} = this.props;\n const column = columnItems[columnName];\n const cellClassName = prepareCellClassName(columnItems, columnName, css, edgePosition);\n const cellProps: CellProps = {\n key: columnName,\n className: cellClassName,\n };\n let caption = this.isColumnSortable(columnName)\n ? this.renderSortableHeaderCaption(columnName)\n : this.renderCellCaption(columnName);\n\n if (groupRowPlacement === 'top') {\n if (column.groupName) {\n if (column.groupFirstItem) {\n caption = this.renderCellCaption(column.groupName);\n cellProps.style = column.headerStyle;\n cellProps.colSpan = column.groupCount;\n cellProps.className = prepareGroupCellClassName(\n column.groupId,\n css,\n edgePosition,\n );\n } else {\n return null;\n }\n } else {\n cellProps.rowSpan = 2;\n }\n }\n\n if (groupRowPlacement === 'bottom' && !column.groupName) {\n return null;\n }\n\n return <th {...cellProps}>{caption}</th>;\n }\n\n renderHeaderGroupRow(placement: 'top' | 'bottom') {\n const {columnSet, columnItems} = this.state;\n\n return (\n <tr className={b('row')}>\n {columnSet.items.map((columnName, index) =>\n this.renderHeaderGroupCell(\n columnName,\n placement,\n getColumnEdgePosition(columnSet, columnItems, index, placement)!,\n ),\n )}\n </tr>\n );\n }\n\n renderHeaderRow() {\n const {columnSet, columnItems} = this.state;\n\n return (\n <tr className={b('row')}>\n {columnSet.items.map((columnName, index) =>\n this.renderHeaderCell(\n columnName,\n getColumnEdgePosition(columnSet, columnItems, index)!,\n ),\n )}\n </tr>\n );\n }\n\n render() {\n const {columnSet} = this.state;\n const hasGroups = columnSet.hasGroups;\n const headerClassName = b('head', this.props.headerClassName);\n\n return hasGroups ? (\n <thead className={headerClassName}>\n {this.renderHeaderGroupRow('top')}\n {this.renderHeaderGroupRow('bottom')}\n </thead>\n ) : (\n <thead className={headerClassName}>{this.renderHeaderRow()}</thead>\n );\n }\n}\n","import React from 'react';\nimport block from 'bem-cn-lite';\nimport PropTypes from 'prop-types';\nimport hammer from '../../common/hammer';\nimport templates from '../templates/templates';\n\nexport const ELEMENTS_TABLE = 'elements-table';\n\nexport const TemplatesPropType = PropTypes.oneOfType([\n PropTypes.shape({\n key: PropTypes.string,\n data: PropTypes.object,\n }),\n PropTypes.objectOf(PropTypes.func),\n]);\n\nexport function getRenderer(context, templatesCollection, columnName) {\n const {key} = templatesCollection;\n let renderer;\n\n if (key) {\n renderer = templates.get(key)[columnName] || templates.get(key).__default__;\n renderer = renderer?.bind(context);\n } else {\n // new way of passing templates\n renderer = templatesCollection[columnName] || templatesCollection.__default__;\n }\n return renderer || templates.__default__;\n}\n\nexport function getColumnCaption(column, columnName) {\n const caption =\n column && typeof column.caption !== 'undefined'\n ? column.caption\n : hammer.format['ReadableField'](columnName);\n\n return column && column.title ? <span title={column.title}>{caption}</span> : caption;\n}\n\nexport function getColumnEdgePosition(columnSet, columnItems, columnIndex, groupRowPlacement) {\n const columnName = columnSet.items[columnIndex];\n const column = columnItems[columnName];\n const isFirstColumn = columnIndex === 0;\n const isLastColumn = columnIndex === columnSet.items.length - 1;\n const isGroupFirstItem =\n groupRowPlacement === 'top' && column.groupName && column.groupFirstItem;\n const isLastGroupColumn =\n isGroupFirstItem && column.groupCount + columnIndex === columnSet.items.length;\n\n if (isFirstColumn) {\n return 'start';\n } else if (isLastColumn || isLastGroupColumn) {\n return 'end';\n }\n}\n\nexport function prepareColumnsData({items, sets, mode}, userMode) {\n const currentColumnSet = sets[userMode || mode];\n const preparedColumnItems = {};\n const preparedColumnSet = {\n items: [],\n };\n\n currentColumnSet.items.forEach((columnName) => {\n const columnItem = items[columnName];\n\n if (!columnItem) {\n return;\n }\n\n if (columnItem.group) {\n const groupName = getColumnCaption(columnItem, columnName);\n\n preparedColumnSet.hasGroups = true;\n columnItem.set.forEach((groupColumnName, groupColumnIndex) => {\n const groupColumnKey = columnName + '_' + groupColumnName;\n const groupColumnItem = {\n ...columnItem.items[groupColumnName],\n groupName,\n };\n\n if (groupColumnIndex === 0) {\n groupColumnItem.groupFirstItem = true;\n groupColumnItem.headerStyle = columnItem.groupHeaderStyle;\n groupColumnItem.groupCount = columnItem.set.length;\n groupColumnItem.groupId = columnName;\n }\n\n groupColumnItem.caption = getColumnCaption(groupColumnItem, groupColumnName);\n preparedColumnItems[groupColumnKey] = groupColumnItem;\n preparedColumnSet.items.push(groupColumnKey);\n });\n } else {\n preparedColumnItems[columnName] = columnItem;\n preparedColumnSet.items.push(columnName);\n }\n });\n\n return {\n items: preparedColumnItems,\n set: preparedColumnSet,\n };\n}\n\nexport function prepareCellClassName(columnItems, columnName, baseClassName, edgePosition) {\n const column = columnItems[columnName];\n const columnClassName = column?.className;\n const mix =\n column && baseClassName\n ? block(baseClassName)(\n 'table-item',\n {\n type: hammer.format['CssTemplateField'](columnName),\n },\n columnClassName,\n )\n : columnClassName;\n\n return block(ELEMENTS_TABLE)(\n 'cell',\n {\n align: column && column.align,\n edge: edgePosition,\n },\n mix,\n );\n}\n\nexport function prepareGroupCellClassName(groupId, baseClassName, edgePosition) {\n const mix = baseClassName\n ? block(baseClassName)('table-group-item', {\n type: hammer.format['CssTemplateField'](groupId),\n })\n : undefined;\n\n return block(ELEMENTS_TABLE)(\n 'cell',\n {\n align: 'center',\n edge: edgePosition,\n },\n mix,\n );\n}\n\nexport function prepareTableClassName({\n css,\n size,\n theme,\n striped,\n padded,\n onItemClick,\n getItemLink,\n selectedIndex,\n cssTableMods,\n}) {\n return block(ELEMENTS_TABLE)(\n {\n size,\n theme,\n striped: striped ? 'yes' : undefined,\n 'padded-edge': padded ? 'yes' : undefined,\n interactive:\n (onItemClick || getItemLink) && typeof selectedIndex === 'undefined' ? 'yes' : '',\n },\n css ? block(css)('table', cssTableMods) : undefined,\n );\n}\n","import React from 'react';\n\nimport Label from '../../../../components/Label/Label';\n\nexport function renderLabel(flag: boolean): React.ReactNode {\n return (\n <Label\n text={flag ? 'Disabled' : 'Enabled'}\n theme={flag ? 'danger' : 'success'}\n type=\"text\"\n />\n );\n}\n\nexport const TABLET_SLOTS = {\n none: {\n theme: 'default',\n text: 'N',\n },\n stopped: {\n theme: 'default',\n text: 'S',\n },\n elections: {\n theme: 'warning',\n text: 'E',\n },\n follower_recovery: {\n theme: 'warning',\n text: 'FR',\n },\n leader_recovery: {\n theme: 'warning',\n text: 'LR',\n },\n following: {\n theme: 'info',\n text: 'F',\n },\n leading: {\n theme: 'success',\n text: 'L',\n },\n} as const;\n"],"names":["b","block","_ref","text","_ref$theme","theme","_jsx","Tooltip","className","content","_jsxs","React","children","ClipboardButton","view","ElementsTable","_Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","concat","state","items","waitForHighlightedElementAndScroll","scrollToHighlightedElement","highlightedElement","document","querySelector","scrollIntoView","requestAnimationFrame","observer","MutationObserver","disconnect","tableBody","observe","childList","subtree","attributes","attributeFilter","setTimeout","prevMouseCoordinates","list","createRef","isItemVisible","item","computeKey","props","visible","onItemHover","evt","_this$props","mouseCoordinatesChanged","updateMouseCoordinates","index","currentTarget","dataset","Number","onItemSelect","_this$props2","selectedIndex","onItemClick","linkOrButtonWasClicked","_this$props3","getItemLink","action","makeEntryClickHandler","handleClick","renderEmptyTableContent","ELEMENTS_TABLE","emptyDataDescription","renderEmptyCell","cell","columnName","css","_this$state","columnSet","columnItems","edgePosition","getColumnEdgePosition","cellClassName","prepareCellClassName","renderSkeletonState","itemHeight","tableClassName","prepareTableClassName","bodyClassName","rowClassName","empty","rowStyle","height","header","ElementsTableHeader","_objectSpread","map_","range_","style","renderTableContent","ref","body","renderTableBody","_inherits","_createClass","key","value","prevProps","_this$list","_prevProps$highlighte","_this$props4","this","highlightedItem","compareHighlitedBy","reactList","current","_reactList$getVisible","getVisibleRange","_reactList$getVisible2","_slicedToArray","firstIndex","lastIndex","scrollAround","window","scrollBy","highlightedIndex","findIndex","toggledItemKey","_this$props5","tree","Object","assign","collapsed","itemKeys","map","updateVisibilityState","setState","onItemToggleState","x","clientX","y","clientY","_this$prevMouseCoordi","isLinkOrButton","node","nodeName","getAttribute","target","parentElement","undefined","_this$props6","templates","itemMods","cssHover","onMouseMove","colSpan","_this$state2","itemStates","highlighted","selected","currentKey","ElementsTableRow","toggleItemState","bind","itemState","_this2","_this$props7","virtualType","ReactList","itemRenderer","renderRow","itemsRenderer","scrollTo","type","itemSizeEstimator","useStaticSize","_this3","rows","_this$props8","virtual","isLoading","visibleItems","filter_","renderDynamicTable","renderSimpleTable","ErrorBoundary","renderTable","keys","prevKey","prevKeyParts","totalKeys","reduce","states","keyParts","split","boundaryCondition","parts","slice","parentState","join","pop","treeState","prevTreeState","toAdd","oldKeys","newKeys","toRemove","difference_","sort","forEach_","getEmptinessStates","omit_","forEach","collapsedAncestorExists","columns","columnsMode","_prepareColumnsData","prepareColumnsData","nextState","set","updateItemStates","treeStateExpanded","itemsState","itemKeyParts","currentIndex","indexOf","startsWith","Component","defaultProps","size","padded","striped","mapDispatchToProps","toggleColumnSortOrder","connect","sortState","tables","StatusBulb","_React$PureComponent","onMouseClick","e","rowIndex","colIndex","templatesCollection","renderer","getRenderer","colSpanValue","classNameFn","extraClassName","hover","getItemMods","filter","Boolean","cells","i","_this$renderCell","renderCell","push","onClick","onMouseEnter","tableId","withUndefined","allowUnordered","allowedOrderTypes","dispatch","getState","newOrderType","sortInfo","orderType","field","oldSortStateToOrderType","calculateNextOrderValue","nextSortOrderValue","newSortInfo","orderTypeToOldSortState","TOGGLE_COLUMN_SORT_ORDER","data","_defineProperty","changeColumnSortOrder","_ref2","asc","add","cell_id","url","genTabletCellBundlesCellUrl","YT","cluster","Link","routed","hammer","format","NO_VALUE","peer_id","_TABLET_SLOTS$item$st","TABLET_SLOTS","StatusBlock","renderUsage","used","limit","left","right","none","stopped","elections","follower_recovery","leader_recovery","following","leading","__default__","_typeof","IOWeight","mediumName","IO_WEIGHT_PREFIX","host","get","rack","user_tags","userTags","tag","banned","decommissioned","full","alerts","alertsCount","space","Progress","spaceProgress","spaceText","space_limit","spaceUsed","spaceAvailable","locations","enabledLocations","sessions","chunks","io_weight","cpu","cpuProgress","cpuText","memory","onMouseEnterHandler","_this$props$templates","onMemoryProgressMouseEnter","onMemoryProgressMouseLeave","event","onMouseLeave","memoryProgress","memoryText","stack","memoryData","memory_total","memoryTotalText","network","networkProgress","networkText","repair_slots","repairSlots","usage","limits","removal_slots","removalSlots","replication_slots","replicationSlots","seal_slots","sealSlots","user_slots","userSlots","tablet_slots","tabletSlots","keys_","byState","_TABLET_SLOTS$state","tablet_memory_static","tabletStaticMemory","tablet_memory_dynamic","tabletDynamicMemory","role","roleThemes","control","labelClassName","load_average","loadAverage","digits","network_load","networkLoad","updated_at","updatedAt","tabletSlot","tabletCellHref","title","_TABLET_SLOTS$tabletS","cn","compose","withVisible","settings","unipika","prepareSettings","filters","typedFilters","handleShow","handleClose","modalContent","Yson","Button","Modal","onOutsideClick","onCancel","footer","ellipsis","name","path","originalPath","transaction","remote","itemUrl","query","paramsToQuery","t","Page","NAVIGATION","isFolder","Icon","awesome","OperationIOLink","FilterOverview","ranges","live_preview","livePreview","supported","TemplateLivePreivew","tags","primary","teleport","append","foreign","Label","start_time","printColumnAsTime","finish_time","duration","Event","isNotFinalState","printColumnAsTimeDurationWithMs","call","progress","_column$get","getColumn","printColumnAsReadableField","account","column","chunk_count","node_count","disk_space","_column$label","label","cell_tag","_column$get2","cellTag","cellTagClassNames","cellTagIconClassNames","face","image","itemStyle","backgroundImage","getClusterAppearance","id","icon","clusterTheme","environment","access","granted","status","available","unavailable","version","pathCluster","originalQuery","originalUrl","progressBlock","ProgressInnerText","offset","transform","ProgressStackItem","color","loading","modifiers","isFinite","width","backgroundColor","getOffset","getTheme","colorStops","colorStopsValue","matchingColorStopItem","find","currentValue","minValue","stop","maxValue","ProgressWithStack","stackClassName","sum","getValueFromStack","ProgressWithValue","isProgressWithStack","qa","resolvedProps","_WithVisible","ResComponent","_React$Component","WithVisible","toggleVisible","prevState","displayName","getDisplayName","PropTypes","sortable","captionTail","withTooltip","tooltipProps","getColumnCaption","tooltipClassName","restTooltipProps","_objectWithoutProperties","_excluded","renderHeader","_sortInfo","toggleOrder","onSort","getEffectiveSortState","_this$state$columnIte","sortWithUndefined","ss","href","sortQuery","renderCellCaption","SortIcon","order","renderCellCaptionTail","isColumnSortable","renderSortableHeaderCaption","groupRowPlacement","cellProps","caption","groupName","groupFirstItem","headerStyle","groupCount","prepareGroupCellClassName","groupId","rowSpan","placement","renderHeaderGroupCell","renderHeaderCell","hasGroups","headerClassName","renderHeaderGroupRow","renderHeaderRow","context","_renderer","columnIndex","isFirstColumn","isLastColumn","isLastGroupColumn","userMode","sets","mode","currentColumnSet","preparedColumnItems","preparedColumnSet","columnItem","group","groupColumnName","groupColumnIndex","groupColumnKey","groupColumnItem","groupHeaderStyle","baseClassName","columnClassName","mix","align","edge","cssTableMods","interactive","renderLabel","flag"],"sourceRoot":""}
|